@vibe/core 3.88.6 → 3.89.0-alpha-01945.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Avatar/Avatar.d.ts +2 -0
- package/dist/components/Chips/Chips.d.ts +22 -1
- package/dist/components/Chips/Chips.types.d.ts +2 -0
- package/dist/components/Chips/index.d.ts +1 -0
- package/dist/components/SegmentedControl/SegmentedControl.d.ts +4 -0
- package/dist/components/SegmentedControl/SegmentedControl.types.d.ts +48 -0
- package/dist/components/SegmentedControl/index.d.ts +2 -0
- package/dist/components/TextField/TextField.d.ts +4 -0
- package/dist/components/Toast/Toast.d.ts +4 -0
- package/dist/components/button/dist/Button/Button.js +1 -1
- package/dist/components/button/dist/Button/Button.js.map +1 -1
- package/dist/components/button/dist/Button/Button.module.scss.js +1 -1
- package/dist/components/dialog/dist/DialogContentContainer/DialogContentContainer.module.scss.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/metadata.json +247 -9
- package/dist/mocked_classnames/components/Avatar/Avatar.d.ts +2 -0
- package/dist/mocked_classnames/components/Chips/Chips.d.ts +22 -1
- package/dist/mocked_classnames/components/Chips/Chips.types.d.ts +2 -0
- package/dist/mocked_classnames/components/Chips/index.d.ts +1 -0
- package/dist/mocked_classnames/components/SegmentedControl/SegmentedControl.d.ts +4 -0
- package/dist/mocked_classnames/components/SegmentedControl/SegmentedControl.types.d.ts +48 -0
- package/dist/mocked_classnames/components/SegmentedControl/index.d.ts +2 -0
- package/dist/mocked_classnames/components/TextField/TextField.d.ts +4 -0
- package/dist/mocked_classnames/components/Toast/Toast.d.ts +4 -0
- package/dist/mocked_classnames/components/index.d.ts +1 -0
- package/dist/mocked_classnames/src/components/Accordion/Accordion/Accordion.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AlertBanner/AlertBanner.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AlertBanner/AlertBannerLink/AlertBannerLink.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AlertBanner/AlertBannerText/AlertBannerText.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AttentionBox/AttentionBox.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AttentionBox/AttentionBoxLink/AttentionBoxLink.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Avatar/Avatar.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Avatar/AvatarBadge.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Avatar/AvatarContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AvatarGroup/AvatarGroup.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AvatarGroup/AvatarGroupCounter.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AvatarGroup/AvatarGroupCounterTooltipContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/AvatarGroup/AvatarGroupCounterTooltipContentVirtualizedList.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Badge/Badge.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Badge/Indicator/Indicator.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/BaseItem/BaseItem.js +1 -1
- package/dist/mocked_classnames/src/components/BaseItem/BaseItem.js.map +1 -1
- package/dist/mocked_classnames/src/components/BaseItem/BaseItem.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/BaseList/BaseList.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbItem/BreadcrumbContent/BreadcrumbContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbItem/BreadcrumbItem.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbMenu/BreadcrumbsMenu.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbsBar.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ButtonGroup/ButtonGroup.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Checkbox/Checkbox.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Chips/Chips.js +1 -1
- package/dist/mocked_classnames/src/components/Chips/Chips.js.map +1 -1
- package/dist/mocked_classnames/src/components/Chips/Chips.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ColorPicker/ColorPicker.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerContent/ColorPickerClearButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerContent/ColorPickerColorsGrid.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerItemComponent/ColorPickerItemComponent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Combobox/Combobox.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Combobox/ComboboxHelpers/ComboboxHelpers.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Combobox/components/ComboboxCategory/ComboboxCategory.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Combobox/components/ComboboxItems/ComboboxItems.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Combobox/components/ComboboxOption/ComboboxOption.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Combobox/components/StickyCategoryHeader/StickyCategoryHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Counter/Counter.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/DatePicker/DateNavigationItem/DateNavigationItem.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/DatePicker/DatePicker.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/DatePicker/DatePickerHeader/DatePickerHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/DatePicker/YearPicker/YearPicker.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/DatePicker/external_datepicker.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Divider/Divider.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Dropdown/Dropdown.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Dropdown/components/ChildrenContent/ChildrenContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Dropdown/components/MultiValueContainer/MultiValueContainer.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Dropdown/components/menu/menu.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Dropdown/components/option/option.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Dropdown/components/singleValue/singleValue.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/EditableHeading/EditableHeading.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/EditableText/EditableText.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/EditableTypography/EditableTypography.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/EmptyState/EmptyState.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ExpandCollapse/ExpandCollapse.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/FieldLabel/FieldLabel.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/FormattedNumber/FormattedNumber.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/HiddenText/HiddenText.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Info/components/InfoDialogContent/InfoDialogContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Info/components/InfoLink/InfoLink.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/InfoText/InfoText.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Label/Label.js +1 -1
- package/dist/mocked_classnames/src/components/Label/Label.js.map +1 -1
- package/dist/mocked_classnames/src/components/Label/Label.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Label/LabelCelebrationAnimation.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/LegacyModal/LegacyModal.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/LegacyModal/LegacyModalContent/LegacyModalContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/LegacyModal/LegacyModalFooter/LegacyModalFooter.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/LegacyModal/LegacyModalHeader/LegacyModalHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Link/Link.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/List/List.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/List/VirtualizedListItems/VirtualizedListItems.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ListItem/ListItem.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ListItemAvatar/ListItemAvatar.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ListItemIcon/ListItemIcon.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ListTitle/ListTitle.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/Menu/Menu.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuDivider/MenuDivider.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/MenuItem.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/MenuItem.js.map +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/MenuItem.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/components/BaseMenuItem/BaseMenuItem.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.js.map +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.js.map +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuItemButton/MenuItemButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Menu/MenuTitle/MenuTitle.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/MenuButton/MenuButton.js +1 -1
- package/dist/mocked_classnames/src/components/MenuButton/MenuButton.js.map +1 -1
- package/dist/mocked_classnames/src/components/MenuButton/MenuButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/Modal/Modal.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/ModalHeader/ModalHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/ModalMedia/ModalMedia.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/ModalTopActions/ModalTopActions.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/footers/ModalFooter/ModalFooter.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/footers/ModalFooterWizard/ModalFooterWizard.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/layouts/ModalBasicLayout/ModalBasicLayout.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/layouts/ModalFooterShadow.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/layouts/ModalLayoutScrollableContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/layouts/ModalMediaLayout/ModalMediaLayout.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Modal/layouts/ModalSideBySideLayout/ModalSideBySideLayout.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/MultiStepIndicator/MultiStepIndicator.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/MultiStepIndicator/components/StepIndicator/StepIndicator.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/NumberField/NumberField.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/NumberField/components/NumberFieldSpinButton/NumberFieldSpinButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ProgressBars/LinearProgressBar/Bar/Bar.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ProgressBars/LinearProgressBar/LinearProgressBar.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/ProgressBars/PercentageLabel/PercentageLabel.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/RadioButton/RadioButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Search/Search.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/SegmentedControl/SegmentedControl.js +2 -0
- package/dist/mocked_classnames/src/components/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/mocked_classnames/src/components/SegmentedControl/SegmentedControl.module.scss.js +2 -0
- package/dist/mocked_classnames/src/components/SegmentedControl/SegmentedControl.module.scss.js.map +1 -0
- package/dist/mocked_classnames/src/components/Skeleton/Skeleton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/SlideTransition/SlideTransition.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/SelectionIndicator.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/Slider.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/SliderBase/SliderBase.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/SliderBase/SliderFilledTrack.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/SliderBase/SliderRail.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/SliderBase/SliderThumb.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/SliderBase/SliderTrack.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Slider/SliderInfix.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/SplitButton/SplitButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Steps/Steps.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Steps/StepsCommand.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Steps/StepsDot.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Steps/StepsGalleryHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Steps/StepsHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Steps/StepsNumbersHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Switch/Switch.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/Table/Table.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableBody/TableBody.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableCell/TableCell.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableCellSkeleton/TableCellSkeleton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableContainer/TableContainer.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableHeader/TableHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableHeaderCell/TableHeaderCell.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableRow/TableRow.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableRowMenu/TableRowMenu.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Table/TableVirtualizedBody/TableVirtualizedBody.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tabs/Tab/Tab.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tabs/TabList/TabList.js +1 -1
- package/dist/mocked_classnames/src/components/Tabs/TabList/TabList.js.map +1 -1
- package/dist/mocked_classnames/src/components/Tabs/TabList/TabList.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tabs/TabPanel/TabPanel.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tabs/TabPanels/TabPanels.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/TextArea/TextArea.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/TextField/TextField.js +1 -1
- package/dist/mocked_classnames/src/components/TextField/TextField.js.map +1 -1
- package/dist/mocked_classnames/src/components/TextField/TextField.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/TextWithHighlight/TextWithHighlight.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tipseen/Tipseen.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tipseen/TipseenBasicContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tipseen/TipseenContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tipseen/TipseenImage.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tipseen/TipseenMedia/TipseenMedia.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tipseen/TipseenTitle.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Tipseen/TipseenWizard.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Toast/Toast.js +1 -1
- package/dist/mocked_classnames/src/components/Toast/Toast.js.map +1 -1
- package/dist/mocked_classnames/src/components/Toast/Toast.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Toast/ToastButton/ToastButton.js +1 -1
- package/dist/mocked_classnames/src/components/Toast/ToastButton/ToastButton.js.map +1 -1
- package/dist/mocked_classnames/src/components/Toast/ToastHelpers.js +1 -1
- package/dist/mocked_classnames/src/components/Toast/ToastHelpers.js.map +1 -1
- package/dist/mocked_classnames/src/components/Toast/ToastLink/ToastLink.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Toggle/MockToggle.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Toggle/Toggle.js +1 -1
- package/dist/mocked_classnames/src/components/Toggle/Toggle.js.map +1 -1
- package/dist/mocked_classnames/src/components/Toggle/Toggle.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/Toggle/ToggleText.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/TransitionView/TransitionView.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/VirtualizedGrid/VirtualizedGrid.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/VirtualizedList/VirtualizedList.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/AttentionBox/AttentionBox.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxCloseButton/AttentionBoxCloseButton.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxLeadingIcon/AttentionBoxLeadingIcon.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxLink/AttentionBoxLink.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/AttentionBox/layouts/AttentionBoxCompact/AttentionBoxCompact.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/AttentionBox/layouts/AttentionBoxDefault/AttentionBoxDefault.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/DatePicker/DatePicker.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/DatePicker/DatePickerHeader.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dialog/Dialog.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dialog/components/DialogContent/DialogContent.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dropdown/components/DropdownBase/DropdownBase.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dropdown/components/DropdownBaseList/DropdownBaseList.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dropdown/components/DropdownBoxMode/DropdownBoxMode.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dropdown/components/Menu/Menu.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dropdown/components/MultiSelectedValues/MultiSelectedValues.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/Dropdown/components/Trigger/Trigger.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/List/List.module.scss.js +1 -1
- package/dist/mocked_classnames/src/components/next/List/ListTitle/ListTitle.module.scss.js +1 -1
- package/dist/mocked_classnames/src/index.js +1 -1
- package/dist/mocked_classnames/src/tests/constants.js +1 -1
- package/dist/mocked_classnames/src/tests/constants.js.map +1 -1
- package/dist/mocked_classnames/src/types/Colors.js +1 -1
- package/dist/mocked_classnames/src/types/Colors.js.map +1 -1
- package/dist/mocked_classnames/src/utils/colors-vars-map.js +1 -1
- package/dist/mocked_classnames/src/utils/colors-vars-map.js.map +1 -1
- package/dist/mocked_classnames/style/dist/index.min.css.js +1 -1
- package/dist/mocked_classnames/tests/constants.d.ts +2 -0
- package/dist/mocked_classnames/types/Colors.d.ts +19 -1
- package/dist/mocked_classnames/utils/colors-vars-map.d.ts +3 -0
- package/dist/src/components/Accordion/Accordion/Accordion.module.scss.js +1 -1
- package/dist/src/components/AlertBanner/AlertBanner.module.scss.js +1 -1
- package/dist/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.module.scss.js +1 -1
- package/dist/src/components/AlertBanner/AlertBannerLink/AlertBannerLink.module.scss.js +1 -1
- package/dist/src/components/AlertBanner/AlertBannerText/AlertBannerText.module.scss.js +1 -1
- package/dist/src/components/AttentionBox/AttentionBox.module.scss.js +1 -1
- package/dist/src/components/AttentionBox/AttentionBoxLink/AttentionBoxLink.module.scss.js +1 -1
- package/dist/src/components/Avatar/Avatar.module.scss.js +1 -1
- package/dist/src/components/Avatar/AvatarBadge.module.scss.js +1 -1
- package/dist/src/components/Avatar/AvatarContent.module.scss.js +1 -1
- package/dist/src/components/AvatarGroup/AvatarGroup.module.scss.js +1 -1
- package/dist/src/components/AvatarGroup/AvatarGroupCounter.module.scss.js +1 -1
- package/dist/src/components/AvatarGroup/AvatarGroupCounterTooltipContent.module.scss.js +1 -1
- package/dist/src/components/AvatarGroup/AvatarGroupCounterTooltipContentVirtualizedList.module.scss.js +1 -1
- package/dist/src/components/Badge/Badge.module.scss.js +1 -1
- package/dist/src/components/Badge/Indicator/Indicator.module.scss.js +1 -1
- package/dist/src/components/BaseItem/BaseItem.js +1 -1
- package/dist/src/components/BaseItem/BaseItem.js.map +1 -1
- package/dist/src/components/BaseItem/BaseItem.module.scss.js +1 -1
- package/dist/src/components/BaseList/BaseList.module.scss.js +1 -1
- package/dist/src/components/BreadcrumbsBar/BreadcrumbItem/BreadcrumbContent/BreadcrumbContent.module.scss.js +1 -1
- package/dist/src/components/BreadcrumbsBar/BreadcrumbItem/BreadcrumbItem.module.scss.js +1 -1
- package/dist/src/components/BreadcrumbsBar/BreadcrumbMenu/BreadcrumbsMenu.module.scss.js +1 -1
- package/dist/src/components/BreadcrumbsBar/BreadcrumbsBar.module.scss.js +1 -1
- package/dist/src/components/ButtonGroup/ButtonGroup.module.scss.js +1 -1
- package/dist/src/components/Checkbox/Checkbox.module.scss.js +1 -1
- package/dist/src/components/Chips/Chips.js +1 -1
- package/dist/src/components/Chips/Chips.js.map +1 -1
- package/dist/src/components/Chips/Chips.module.scss.js +1 -1
- package/dist/src/components/ColorPicker/ColorPicker.module.scss.js +1 -1
- package/dist/src/components/ColorPicker/components/ColorPickerContent/ColorPickerClearButton.module.scss.js +1 -1
- package/dist/src/components/ColorPicker/components/ColorPickerContent/ColorPickerColorsGrid.module.scss.js +1 -1
- package/dist/src/components/ColorPicker/components/ColorPickerItemComponent/ColorPickerItemComponent.module.scss.js +1 -1
- package/dist/src/components/Combobox/Combobox.module.scss.js +1 -1
- package/dist/src/components/Combobox/ComboboxHelpers/ComboboxHelpers.module.scss.js +1 -1
- package/dist/src/components/Combobox/components/ComboboxCategory/ComboboxCategory.module.scss.js +1 -1
- package/dist/src/components/Combobox/components/ComboboxItems/ComboboxItems.module.scss.js +1 -1
- package/dist/src/components/Combobox/components/ComboboxOption/ComboboxOption.module.scss.js +1 -1
- package/dist/src/components/Combobox/components/StickyCategoryHeader/StickyCategoryHeader.module.scss.js +1 -1
- package/dist/src/components/Counter/Counter.module.scss.js +1 -1
- package/dist/src/components/DatePicker/DateNavigationItem/DateNavigationItem.module.scss.js +1 -1
- package/dist/src/components/DatePicker/DatePicker.module.scss.js +1 -1
- package/dist/src/components/DatePicker/DatePickerHeader/DatePickerHeader.module.scss.js +1 -1
- package/dist/src/components/DatePicker/YearPicker/YearPicker.module.scss.js +1 -1
- package/dist/src/components/DatePicker/external_datepicker.scss.js +1 -1
- package/dist/src/components/Divider/Divider.module.scss.js +1 -1
- package/dist/src/components/Dropdown/Dropdown.module.scss.js +1 -1
- package/dist/src/components/Dropdown/components/ChildrenContent/ChildrenContent.module.scss.js +1 -1
- package/dist/src/components/Dropdown/components/MultiValueContainer/MultiValueContainer.module.scss.js +1 -1
- package/dist/src/components/Dropdown/components/menu/menu.module.scss.js +1 -1
- package/dist/src/components/Dropdown/components/option/option.module.scss.js +1 -1
- package/dist/src/components/Dropdown/components/singleValue/singleValue.module.scss.js +1 -1
- package/dist/src/components/EditableHeading/EditableHeading.module.scss.js +1 -1
- package/dist/src/components/EditableText/EditableText.module.scss.js +1 -1
- package/dist/src/components/EditableTypography/EditableTypography.module.scss.js +1 -1
- package/dist/src/components/EmptyState/EmptyState.module.scss.js +1 -1
- package/dist/src/components/ExpandCollapse/ExpandCollapse.module.scss.js +1 -1
- package/dist/src/components/FieldLabel/FieldLabel.module.scss.js +1 -1
- package/dist/src/components/FormattedNumber/FormattedNumber.module.scss.js +1 -1
- package/dist/src/components/HiddenText/HiddenText.module.scss.js +1 -1
- package/dist/src/components/Info/components/InfoDialogContent/InfoDialogContent.module.scss.js +1 -1
- package/dist/src/components/Info/components/InfoLink/InfoLink.module.scss.js +1 -1
- package/dist/src/components/InfoText/InfoText.module.scss.js +1 -1
- package/dist/src/components/Label/Label.js +1 -1
- package/dist/src/components/Label/Label.js.map +1 -1
- package/dist/src/components/Label/Label.module.scss.js +1 -1
- package/dist/src/components/Label/LabelCelebrationAnimation.module.scss.js +1 -1
- package/dist/src/components/LegacyModal/LegacyModal.module.scss.js +1 -1
- package/dist/src/components/LegacyModal/LegacyModalContent/LegacyModalContent.module.scss.js +1 -1
- package/dist/src/components/LegacyModal/LegacyModalFooter/LegacyModalFooter.module.scss.js +1 -1
- package/dist/src/components/LegacyModal/LegacyModalHeader/LegacyModalHeader.module.scss.js +1 -1
- package/dist/src/components/Link/Link.module.scss.js +1 -1
- package/dist/src/components/List/List.module.scss.js +1 -1
- package/dist/src/components/List/VirtualizedListItems/VirtualizedListItems.module.scss.js +1 -1
- package/dist/src/components/ListItem/ListItem.module.scss.js +1 -1
- package/dist/src/components/ListItemAvatar/ListItemAvatar.module.scss.js +1 -1
- package/dist/src/components/ListItemIcon/ListItemIcon.module.scss.js +1 -1
- package/dist/src/components/ListTitle/ListTitle.module.scss.js +1 -1
- package/dist/src/components/Menu/Menu/Menu.module.scss.js +1 -1
- package/dist/src/components/Menu/MenuDivider/MenuDivider.module.scss.js +1 -1
- package/dist/src/components/Menu/MenuItem/MenuItem.js +1 -1
- package/dist/src/components/Menu/MenuItem/MenuItem.js.map +1 -1
- package/dist/src/components/Menu/MenuItem/MenuItem.module.scss.js +1 -1
- package/dist/src/components/Menu/MenuItem/components/BaseMenuItem/BaseMenuItem.module.scss.js +1 -1
- package/dist/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.js +1 -1
- package/dist/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.js.map +1 -1
- package/dist/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.module.scss.js +1 -1
- package/dist/src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.js +1 -1
- package/dist/src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.js.map +1 -1
- package/dist/src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.module.scss.js +1 -1
- package/dist/src/components/Menu/MenuItemButton/MenuItemButton.module.scss.js +1 -1
- package/dist/src/components/Menu/MenuTitle/MenuTitle.module.scss.js +1 -1
- package/dist/src/components/MenuButton/MenuButton.js +1 -1
- package/dist/src/components/MenuButton/MenuButton.js.map +1 -1
- package/dist/src/components/MenuButton/MenuButton.module.scss.js +1 -1
- package/dist/src/components/Modal/Modal/Modal.module.scss.js +1 -1
- package/dist/src/components/Modal/ModalHeader/ModalHeader.module.scss.js +1 -1
- package/dist/src/components/Modal/ModalMedia/ModalMedia.module.scss.js +1 -1
- package/dist/src/components/Modal/ModalTopActions/ModalTopActions.module.scss.js +1 -1
- package/dist/src/components/Modal/footers/ModalFooter/ModalFooter.module.scss.js +1 -1
- package/dist/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.module.scss.js +1 -1
- package/dist/src/components/Modal/footers/ModalFooterWizard/ModalFooterWizard.module.scss.js +1 -1
- package/dist/src/components/Modal/layouts/ModalBasicLayout/ModalBasicLayout.module.scss.js +1 -1
- package/dist/src/components/Modal/layouts/ModalFooterShadow.module.scss.js +1 -1
- package/dist/src/components/Modal/layouts/ModalLayoutScrollableContent.module.scss.js +1 -1
- package/dist/src/components/Modal/layouts/ModalMediaLayout/ModalMediaLayout.module.scss.js +1 -1
- package/dist/src/components/Modal/layouts/ModalSideBySideLayout/ModalSideBySideLayout.module.scss.js +1 -1
- package/dist/src/components/MultiStepIndicator/MultiStepIndicator.module.scss.js +1 -1
- package/dist/src/components/MultiStepIndicator/components/StepIndicator/StepIndicator.module.scss.js +1 -1
- package/dist/src/components/NumberField/NumberField.module.scss.js +1 -1
- package/dist/src/components/NumberField/components/NumberFieldSpinButton/NumberFieldSpinButton.module.scss.js +1 -1
- package/dist/src/components/ProgressBars/LinearProgressBar/Bar/Bar.module.scss.js +1 -1
- package/dist/src/components/ProgressBars/LinearProgressBar/LinearProgressBar.module.scss.js +1 -1
- package/dist/src/components/ProgressBars/PercentageLabel/PercentageLabel.module.scss.js +1 -1
- package/dist/src/components/RadioButton/RadioButton.module.scss.js +1 -1
- package/dist/src/components/Search/Search.module.scss.js +1 -1
- package/dist/src/components/SegmentedControl/SegmentedControl.js +2 -0
- package/dist/src/components/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/src/components/SegmentedControl/SegmentedControl.module.scss.js +2 -0
- package/dist/src/components/SegmentedControl/SegmentedControl.module.scss.js.map +1 -0
- package/dist/src/components/Skeleton/Skeleton.module.scss.js +1 -1
- package/dist/src/components/SlideTransition/SlideTransition.module.scss.js +1 -1
- package/dist/src/components/Slider/SelectionIndicator.module.scss.js +1 -1
- package/dist/src/components/Slider/Slider.module.scss.js +1 -1
- package/dist/src/components/Slider/SliderBase/SliderBase.module.scss.js +1 -1
- package/dist/src/components/Slider/SliderBase/SliderFilledTrack.module.scss.js +1 -1
- package/dist/src/components/Slider/SliderBase/SliderRail.module.scss.js +1 -1
- package/dist/src/components/Slider/SliderBase/SliderThumb.module.scss.js +1 -1
- package/dist/src/components/Slider/SliderBase/SliderTrack.module.scss.js +1 -1
- package/dist/src/components/Slider/SliderInfix.module.scss.js +1 -1
- package/dist/src/components/SplitButton/SplitButton.module.scss.js +1 -1
- package/dist/src/components/Steps/Steps.module.scss.js +1 -1
- package/dist/src/components/Steps/StepsCommand.module.scss.js +1 -1
- package/dist/src/components/Steps/StepsDot.module.scss.js +1 -1
- package/dist/src/components/Steps/StepsGalleryHeader.module.scss.js +1 -1
- package/dist/src/components/Steps/StepsHeader.module.scss.js +1 -1
- package/dist/src/components/Steps/StepsNumbersHeader.module.scss.js +1 -1
- package/dist/src/components/Switch/Switch.module.scss.js +1 -1
- package/dist/src/components/Table/Table/Table.module.scss.js +1 -1
- package/dist/src/components/Table/TableBody/TableBody.module.scss.js +1 -1
- package/dist/src/components/Table/TableCell/TableCell.module.scss.js +1 -1
- package/dist/src/components/Table/TableCellSkeleton/TableCellSkeleton.module.scss.js +1 -1
- package/dist/src/components/Table/TableContainer/TableContainer.module.scss.js +1 -1
- package/dist/src/components/Table/TableHeader/TableHeader.module.scss.js +1 -1
- package/dist/src/components/Table/TableHeaderCell/TableHeaderCell.module.scss.js +1 -1
- package/dist/src/components/Table/TableRow/TableRow.module.scss.js +1 -1
- package/dist/src/components/Table/TableRowMenu/TableRowMenu.module.scss.js +1 -1
- package/dist/src/components/Table/TableVirtualizedBody/TableVirtualizedBody.module.scss.js +1 -1
- package/dist/src/components/Tabs/Tab/Tab.module.scss.js +1 -1
- package/dist/src/components/Tabs/TabList/TabList.js +1 -1
- package/dist/src/components/Tabs/TabList/TabList.js.map +1 -1
- package/dist/src/components/Tabs/TabList/TabList.module.scss.js +1 -1
- package/dist/src/components/Tabs/TabPanel/TabPanel.module.scss.js +1 -1
- package/dist/src/components/Tabs/TabPanels/TabPanels.module.scss.js +1 -1
- package/dist/src/components/TextArea/TextArea.module.scss.js +1 -1
- package/dist/src/components/TextField/TextField.js +1 -1
- package/dist/src/components/TextField/TextField.js.map +1 -1
- package/dist/src/components/TextField/TextField.module.scss.js +1 -1
- package/dist/src/components/TextWithHighlight/TextWithHighlight.module.scss.js +1 -1
- package/dist/src/components/Tipseen/Tipseen.module.scss.js +1 -1
- package/dist/src/components/Tipseen/TipseenBasicContent.module.scss.js +1 -1
- package/dist/src/components/Tipseen/TipseenContent.module.scss.js +1 -1
- package/dist/src/components/Tipseen/TipseenImage.module.scss.js +1 -1
- package/dist/src/components/Tipseen/TipseenMedia/TipseenMedia.module.scss.js +1 -1
- package/dist/src/components/Tipseen/TipseenTitle.module.scss.js +1 -1
- package/dist/src/components/Tipseen/TipseenWizard.module.scss.js +1 -1
- package/dist/src/components/Toast/Toast.js +1 -1
- package/dist/src/components/Toast/Toast.js.map +1 -1
- package/dist/src/components/Toast/Toast.module.scss.js +1 -1
- package/dist/src/components/Toast/ToastButton/ToastButton.js +1 -1
- package/dist/src/components/Toast/ToastButton/ToastButton.js.map +1 -1
- package/dist/src/components/Toast/ToastHelpers.js +1 -1
- package/dist/src/components/Toast/ToastHelpers.js.map +1 -1
- package/dist/src/components/Toast/ToastLink/ToastLink.module.scss.js +1 -1
- package/dist/src/components/Toggle/MockToggle.module.scss.js +1 -1
- package/dist/src/components/Toggle/Toggle.js +1 -1
- package/dist/src/components/Toggle/Toggle.js.map +1 -1
- package/dist/src/components/Toggle/Toggle.module.scss.js +1 -1
- package/dist/src/components/Toggle/ToggleText.module.scss.js +1 -1
- package/dist/src/components/TransitionView/TransitionView.module.scss.js +1 -1
- package/dist/src/components/VirtualizedGrid/VirtualizedGrid.module.scss.js +1 -1
- package/dist/src/components/VirtualizedList/VirtualizedList.module.scss.js +1 -1
- package/dist/src/components/next/AttentionBox/AttentionBox.module.scss.js +1 -1
- package/dist/src/components/next/AttentionBox/components/AttentionBoxCloseButton/AttentionBoxCloseButton.module.scss.js +1 -1
- package/dist/src/components/next/AttentionBox/components/AttentionBoxLeadingIcon/AttentionBoxLeadingIcon.module.scss.js +1 -1
- package/dist/src/components/next/AttentionBox/components/AttentionBoxLink/AttentionBoxLink.module.scss.js +1 -1
- package/dist/src/components/next/AttentionBox/layouts/AttentionBoxCompact/AttentionBoxCompact.module.scss.js +1 -1
- package/dist/src/components/next/AttentionBox/layouts/AttentionBoxDefault/AttentionBoxDefault.module.scss.js +1 -1
- package/dist/src/components/next/DatePicker/DatePicker.module.scss.js +1 -1
- package/dist/src/components/next/DatePicker/DatePickerHeader.module.scss.js +1 -1
- package/dist/src/components/next/Dialog/Dialog.module.scss.js +1 -1
- package/dist/src/components/next/Dialog/components/DialogContent/DialogContent.module.scss.js +1 -1
- package/dist/src/components/next/Dropdown/components/DropdownBase/DropdownBase.module.scss.js +1 -1
- package/dist/src/components/next/Dropdown/components/DropdownBaseList/DropdownBaseList.module.scss.js +1 -1
- package/dist/src/components/next/Dropdown/components/DropdownBoxMode/DropdownBoxMode.module.scss.js +1 -1
- package/dist/src/components/next/Dropdown/components/Menu/Menu.module.scss.js +1 -1
- package/dist/src/components/next/Dropdown/components/MultiSelectedValues/MultiSelectedValues.module.scss.js +1 -1
- package/dist/src/components/next/Dropdown/components/Trigger/Trigger.module.scss.js +1 -1
- package/dist/src/components/next/List/List.module.scss.js +1 -1
- package/dist/src/components/next/List/ListTitle/ListTitle.module.scss.js +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/tests/constants.js +1 -1
- package/dist/src/tests/constants.js.map +1 -1
- package/dist/src/types/Colors.js +1 -1
- package/dist/src/types/Colors.js.map +1 -1
- package/dist/src/utils/colors-vars-map.js +1 -1
- package/dist/src/utils/colors-vars-map.js.map +1 -1
- package/dist/style/dist/index.min.css.js +1 -1
- package/dist/tests/constants.d.ts +2 -0
- package/dist/tokens/tokens.css +1 -1
- package/dist/types/Colors.d.ts +19 -1
- package/dist/utils/colors-vars-map.d.ts +3 -0
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabList.js","sources":["../../../../../../src/components/Tabs/TabList/TabList.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport { camelCase } from \"es-toolkit\";\nimport React, {\n type FC,\n forwardRef,\n type ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport useGridKeyboardNavigation from \"../../../hooks/useGridKeyboardNavigation/useGridKeyboardNavigation\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport usePrevious from \"../../../hooks/usePrevious\";\nimport type VibeComponentProps from \"../../../types/VibeComponentProps\";\nimport { NOOP } from \"../../../utils/function-utils\";\nimport { type TabProps } from \"../Tab/Tab\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport styles from \"./TabList.module.scss\";\n\nexport interface TabListProps extends VibeComponentProps {\n /**\n * Callback fired when the active tab changes.\n */\n onTabChange?: (tabId: number) => void;\n /**\n * The index of the currently active tab.\n */\n activeTabId?: number;\n /**\n * The type of tab style.\n */\n tabType?: string;\n /**\n * The size of the tab list.\n */\n size?: string;\n /**\n * If true, Sets an E2E underline under the whole tabs component.\n */\n stretchedUnderline?: boolean;\n /**\n * Array of corresponding TabPanel ids for aria-controls relationship.\n */\n tabPanelIds?: string[];\n /**\n * The child elements representing tabs.\n */\n children?: ReactElement<TabProps>[];\n}\nconst TabList: FC<TabListProps> = forwardRef(\n (\n {\n className,\n id,\n onTabChange = NOOP,\n activeTabId = 0,\n tabType = \"Compact\",\n size,\n stretchedUnderline = false,\n tabPanelIds = [],\n children,\n \"data-testid\": dataTestId\n },\n ref\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n const tabRefs = useRef<Record<number, HTMLElement | null>>({});\n\n const [activeTabState, setActiveTabState] = useState<number>(activeTabId);\n\n const prevActiveTabIdProp = usePrevious(activeTabId);\n const prevActiveTabState = usePrevious(activeTabState);\n\n useEffect(() => {\n // Update active tab if changed from props\n\n if (activeTabId !== prevActiveTabIdProp && activeTabId !== activeTabState) {\n setActiveTabState(activeTabId);\n }\n }, [activeTabId, prevActiveTabIdProp, activeTabState, setActiveTabState]);\n\n // Focus management: when activeTabState changes, focus the active tab\n useEffect(() => {\n if (\n prevActiveTabState !== undefined &&\n prevActiveTabState !== activeTabState &&\n tabRefs.current[activeTabState]\n ) {\n tabRefs.current[activeTabState]?.focus();\n }\n }, [activeTabState, prevActiveTabState]);\n\n const disabledTabIds = useMemo(() => {\n const disabledIds = new Set<number>();\n React.Children.forEach(children, (child, index) => {\n if (child.props.disabled) {\n disabledIds.add(index);\n }\n });\n return disabledIds;\n }, [children]);\n const onTabSelect = useCallback(\n (tabId: number) => {\n if (disabledTabIds.has(tabId)) return;\n setActiveTabState(tabId);\n onTabChange && onTabChange(tabId);\n },\n [onTabChange, disabledTabIds]\n );\n const onTabClick = useCallback(\n (value: HTMLElement | void, tabId: number) => {\n const tabCallbackFunc = children[tabId].props?.onClick;\n if (disabledTabIds.has(tabId)) return;\n if (tabCallbackFunc) tabCallbackFunc(tabId);\n onTabSelect(tabId);\n },\n [children, disabledTabIds, onTabSelect]\n );\n const getItemByIndex = useCallback((index: number): ReactElement<TabProps> => children[index], [children]);\n const disabledIndexes = useMemo(() => Array.from(disabledTabIds), [disabledTabIds]);\n const ulRef = useRef();\n const { activeIndex: focusIndex, onSelectionAction } = useGridKeyboardNavigation({\n ref: ulRef,\n numberOfItemsInLine: children?.length,\n itemsCount: children?.length,\n getItemByIndex,\n onItemClicked: onTabClick,\n disabledIndexes,\n circularNavigation: true\n });\n\n // Focus management: when focusIndex changes during keyboard navigation, focus the focused tab\n const prevFocusIndex = usePrevious(focusIndex);\n useEffect(() => {\n if (focusIndex !== undefined && focusIndex >= 0 && prevFocusIndex !== focusIndex && tabRefs.current[focusIndex]) {\n tabRefs.current[focusIndex]?.focus();\n }\n }, [focusIndex, prevFocusIndex]);\n\n const tabsToRender = useMemo(() => {\n const childrenToRender = React.Children.map(children, (child, index) => {\n const isActive = activeTabState === index;\n\n const shouldBeFocusable = focusIndex !== undefined && focusIndex >= 0 ? focusIndex === index : isActive;\n\n return React.cloneElement(child, {\n value: index,\n active: isActive,\n focus: focusIndex === index,\n onClick: onSelectionAction,\n stretchedUnderline,\n className: cx(styles.tabListTabWrapper, child.props.className),\n tabInnerClassName: cx(styles.tabListTabInner, child.props.tabInnerClassName),\n tabIndex: shouldBeFocusable ? 0 : -1,\n ariaControls: tabPanelIds[index],\n ref: (element: HTMLElement | null) => {\n tabRefs.current[index] = element;\n }\n } as Partial<TabProps> & { ref: React.Ref<HTMLElement>; tabInnerLabelId?: string; ariaControls?: string });\n });\n return childrenToRender;\n }, [children, activeTabState, focusIndex, onSelectionAction, stretchedUnderline, tabPanelIds, id]);\n\n return (\n <div\n ref={mergedRef}\n className={cx(styles.tabsWrapper, className, [getStyle(styles, camelCase(tabType))], {\n [styles.stretchedUnderline]: stretchedUnderline\n })}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TAB_LIST, id)}\n >\n <ul ref={ulRef} className={cx(styles.tabsList, [getStyle(styles, size)])} role=\"tablist\">\n {tabsToRender}\n </ul>\n </div>\n );\n }\n);\nObject.assign(TabList, {\n isTabList: true\n});\n\nexport default TabList;\n"],"names":["TabList","forwardRef","_ref","ref","className","id","_ref$onTabChange","onTabChange","NOOP","_ref$activeTabId","activeTabId","_ref$tabType","tabType","size","_ref$stretchedUnderli","stretchedUnderline","_ref$tabPanelIds","tabPanelIds","children","dataTestId","componentRef","useRef","mergedRef","useMergeRef","tabRefs","_useState","useState","_useState2","_slicedToArray","activeTabState","setActiveTabState","prevActiveTabIdProp","usePrevious","prevActiveTabState","useEffect","undefined","current","_a","focus","disabledTabIds","useMemo","disabledIds","Set","React","Children","forEach","child","index","props","disabled","add","onTabSelect","useCallback","tabId","has","onTabClick","value","tabCallbackFunc","onClick","getItemByIndex","disabledIndexes","Array","from","ulRef","_useGridKeyboardNavig","useGridKeyboardNavigation","numberOfItemsInLine","length","itemsCount","onItemClicked","circularNavigation","focusIndex","activeIndex","onSelectionAction","prevFocusIndex","tabsToRender","map","isActive","shouldBeFocusable","cloneElement","active","cx","styles","tabListTabWrapper","tabInnerClassName","tabListTabInner","tabIndex","ariaControls","element","createElement","tabsWrapper","getStyle","camelCase","_defineProperty","getTestId","ComponentDefaultTestId","TAB_LIST","tabsList","role","Object","assign","isTabList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TabList.js","sources":["../../../../../../src/components/Tabs/TabList/TabList.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport { camelCase } from \"es-toolkit\";\nimport React, {\n type FC,\n forwardRef,\n type ReactElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport useGridKeyboardNavigation from \"../../../hooks/useGridKeyboardNavigation/useGridKeyboardNavigation\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport usePrevious from \"../../../hooks/usePrevious\";\nimport type VibeComponentProps from \"../../../types/VibeComponentProps\";\nimport { NOOP } from \"../../../utils/function-utils\";\nimport { type TabProps } from \"../Tab/Tab\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport styles from \"./TabList.module.scss\";\n\nconst SELECTED_INDICATOR_INSET_PX = 4;\n\nexport interface TabListProps extends VibeComponentProps {\n /**\n * Callback fired when the active tab changes.\n */\n onTabChange?: (tabId: number) => void;\n /**\n * The index of the currently active tab.\n */\n activeTabId?: number;\n /**\n * The type of tab style.\n */\n tabType?: string;\n /**\n * The size of the tab list.\n */\n size?: string;\n /**\n * If true, Sets an E2E underline under the whole tabs component.\n */\n stretchedUnderline?: boolean;\n /**\n * Array of corresponding TabPanel ids for aria-controls relationship.\n */\n tabPanelIds?: string[];\n /**\n * The child elements representing tabs.\n */\n children?: ReactElement<TabProps>[];\n}\nconst TabList: FC<TabListProps> = forwardRef(\n (\n {\n className,\n id,\n onTabChange = NOOP,\n activeTabId = 0,\n tabType = \"Compact\",\n size,\n stretchedUnderline = false,\n tabPanelIds = [],\n children,\n \"data-testid\": dataTestId\n },\n ref\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n const tabRefs = useRef<Record<number, HTMLElement | null>>({});\n const ulRef = useRef<HTMLUListElement>(null);\n const indicatorRef = useRef<HTMLSpanElement>(null);\n const indicatorReadyRef = useRef(false);\n const lastGeometryRef = useRef<{ left: number; width: number } | null>(null);\n\n const [activeTabState, setActiveTabState] = useState<number>(activeTabId);\n const [indicatorVisible, setIndicatorVisible] = useState(false);\n\n const prevActiveTabIdProp = usePrevious(activeTabId);\n const prevActiveTabState = usePrevious(activeTabState);\n\n useEffect(() => {\n // Update active tab if changed from props\n\n if (activeTabId !== prevActiveTabIdProp && activeTabId !== activeTabState) {\n setActiveTabState(activeTabId);\n }\n }, [activeTabId, prevActiveTabIdProp, activeTabState, setActiveTabState]);\n\n // Focus management: when activeTabState changes, focus the active tab\n useEffect(() => {\n if (\n prevActiveTabState !== undefined &&\n prevActiveTabState !== activeTabState &&\n tabRefs.current[activeTabState]\n ) {\n tabRefs.current[activeTabState]?.focus();\n }\n }, [activeTabState, prevActiveTabState]);\n\n const disabledTabIds = useMemo(() => {\n const disabledIds = new Set<number>();\n React.Children.forEach(children, (child, index) => {\n if (child.props.disabled) {\n disabledIds.add(index);\n }\n });\n return disabledIds;\n }, [children]);\n const onTabSelect = useCallback(\n (tabId: number) => {\n if (disabledTabIds.has(tabId)) return;\n setActiveTabState(tabId);\n onTabChange && onTabChange(tabId);\n },\n [onTabChange, disabledTabIds]\n );\n const onTabClick = useCallback(\n (value: HTMLElement | void, tabId: number) => {\n const tabCallbackFunc = children[tabId].props?.onClick;\n if (disabledTabIds.has(tabId)) return;\n if (tabCallbackFunc) tabCallbackFunc(tabId);\n onTabSelect(tabId);\n },\n [children, disabledTabIds, onTabSelect]\n );\n const getItemByIndex = useCallback((index: number): ReactElement<TabProps> => children[index], [children]);\n const disabledIndexes = useMemo(() => Array.from(disabledTabIds), [disabledTabIds]);\n const { activeIndex: focusIndex, onSelectionAction } = useGridKeyboardNavigation({\n ref: ulRef,\n numberOfItemsInLine: children?.length,\n itemsCount: children?.length,\n getItemByIndex,\n onItemClicked: onTabClick,\n disabledIndexes,\n circularNavigation: true\n });\n\n // Focus management: when focusIndex changes during keyboard navigation, focus the focused tab\n const prevFocusIndex = usePrevious(focusIndex);\n useEffect(() => {\n if (focusIndex !== undefined && focusIndex >= 0 && prevFocusIndex !== focusIndex && tabRefs.current[focusIndex]) {\n tabRefs.current[focusIndex]?.focus();\n }\n }, [focusIndex, prevFocusIndex]);\n\n const updateSelectedIndicator = useCallback(\n (animate: boolean) => {\n const wrapper = componentRef.current as HTMLElement | null;\n const indicator = indicatorRef.current;\n const tab = tabRefs.current[activeTabState];\n if (!wrapper || !indicator || !tab) return;\n\n const wrapperRect = wrapper.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n const toLeft = tabRect.left - wrapperRect.left + wrapper.scrollLeft + SELECTED_INDICATOR_INSET_PX;\n const toWidth = Math.max(0, tabRect.width - SELECTED_INDICATOR_INSET_PX * 2);\n\n // A non-animated update that lands on the geometry we already applied would only\n // cancel an in-flight glide. ResizeObserver.observe() always fires one such callback,\n // so bail out unless the target actually moved.\n const lastGeometry = lastGeometryRef.current;\n if (!animate && lastGeometry && lastGeometry.left === toLeft && lastGeometry.width === toWidth) {\n setIndicatorVisible(true);\n return;\n }\n lastGeometryRef.current = { left: toLeft, width: toWidth };\n\n const prefersReducedMotion =\n typeof window !== \"undefined\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n const shouldAnimate = animate && indicatorReadyRef.current && !prefersReducedMotion;\n\n if (!shouldAnimate) {\n const previousTransition = indicator.style.transition;\n indicator.style.transition = \"none\";\n indicator.style.left = `${toLeft}px`;\n indicator.style.width = `${toWidth}px`;\n void indicator.offsetWidth;\n indicator.style.transition = previousTransition;\n } else {\n indicator.style.left = `${toLeft}px`;\n indicator.style.width = `${toWidth}px`;\n }\n\n indicatorReadyRef.current = true;\n setIndicatorVisible(true);\n },\n [activeTabState]\n );\n\n // Lets the ResizeObserver stay subscribed across tab changes.\n const updateSelectedIndicatorRef = useRef(updateSelectedIndicator);\n updateSelectedIndicatorRef.current = updateSelectedIndicator;\n\n useLayoutEffect(() => {\n updateSelectedIndicator(true);\n }, [activeTabState, children, size, tabType, updateSelectedIndicator]);\n\n useEffect(() => {\n const wrapper = componentRef.current as HTMLElement | null;\n if (!wrapper || typeof ResizeObserver === \"undefined\") return;\n\n const resizeObserver = new ResizeObserver(() => {\n updateSelectedIndicatorRef.current(false);\n });\n resizeObserver.observe(wrapper);\n Object.values(tabRefs.current).forEach(tab => {\n if (tab) resizeObserver.observe(tab);\n });\n\n return () => resizeObserver.disconnect();\n }, [children]);\n\n const tabsToRender = useMemo(() => {\n const childrenToRender = React.Children.map(children, (child, index) => {\n const isActive = activeTabState === index;\n\n const shouldBeFocusable = focusIndex !== undefined && focusIndex >= 0 ? focusIndex === index : isActive;\n\n return React.cloneElement(child, {\n value: index,\n active: isActive,\n focus: focusIndex === index,\n onClick: onSelectionAction,\n stretchedUnderline,\n className: cx(styles.tabListTabWrapper, child.props.className),\n tabInnerClassName: cx(styles.tabListTabInner, child.props.tabInnerClassName),\n tabIndex: shouldBeFocusable ? 0 : -1,\n ariaControls: tabPanelIds[index],\n ref: (element: HTMLElement | null) => {\n tabRefs.current[index] = element;\n }\n } as Partial<TabProps> & { ref: React.Ref<HTMLElement>; tabInnerLabelId?: string; ariaControls?: string });\n });\n return childrenToRender;\n }, [children, activeTabState, focusIndex, onSelectionAction, stretchedUnderline, tabPanelIds, id]);\n\n return (\n <div\n ref={mergedRef}\n className={cx(styles.tabsWrapper, className, [getStyle(styles, camelCase(tabType))], {\n [styles.stretchedUnderline]: stretchedUnderline\n })}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TAB_LIST, id)}\n >\n <ul ref={ulRef} className={cx(styles.tabsList, [getStyle(styles, size)])} role=\"tablist\">\n {tabsToRender}\n </ul>\n <span\n ref={indicatorRef}\n className={cx(styles.selectedIndicator, { [styles.visible]: indicatorVisible })}\n aria-hidden\n />\n </div>\n );\n }\n);\nObject.assign(TabList, {\n isTabList: true\n});\n\nexport default TabList;\n"],"names":["TabList","forwardRef","_ref","ref","className","id","_ref$onTabChange","onTabChange","NOOP","_ref$activeTabId","activeTabId","_ref$tabType","tabType","size","_ref$stretchedUnderli","stretchedUnderline","_ref$tabPanelIds","tabPanelIds","children","dataTestId","componentRef","useRef","mergedRef","useMergeRef","tabRefs","ulRef","indicatorRef","indicatorReadyRef","lastGeometryRef","_useState","useState","_useState2","_slicedToArray","activeTabState","setActiveTabState","_useState3","_useState4","indicatorVisible","setIndicatorVisible","prevActiveTabIdProp","usePrevious","prevActiveTabState","useEffect","undefined","current","_a","focus","disabledTabIds","useMemo","disabledIds","Set","React","Children","forEach","child","index","props","disabled","add","onTabSelect","useCallback","tabId","has","onTabClick","value","tabCallbackFunc","onClick","getItemByIndex","disabledIndexes","Array","from","_useGridKeyboardNavig","useGridKeyboardNavigation","numberOfItemsInLine","length","itemsCount","onItemClicked","circularNavigation","focusIndex","activeIndex","onSelectionAction","prevFocusIndex","updateSelectedIndicator","animate","wrapper","indicator","tab","wrapperRect","getBoundingClientRect","tabRect","toLeft","left","scrollLeft","toWidth","Math","max","width","SELECTED_INDICATOR_INSET_PX","lastGeometry","prefersReducedMotion","window","matchMedia","matches","style","concat","previousTransition","transition","updateSelectedIndicatorRef","useLayoutEffect","ResizeObserver","resizeObserver","observe","Object","values","disconnect","tabsToRender","map","isActive","shouldBeFocusable","cloneElement","active","cx","styles","tabListTabWrapper","tabInnerClassName","tabListTabInner","tabIndex","ariaControls","element","createElement","tabsWrapper","getStyle","camelCase","_defineProperty","getTestId","ComponentDefaultTestId","TAB_LIST","tabsList","role","selectedIndicator","visible","assign","isTabList"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={tabsWrapper:"tabsWrapper",tabsList:"tabsList",sm:"sm",lg:"lg",stretched:"stretched",tabListTabWrapper:"tabListTabWrapper",tabListTabInner:"tabListTabInner",disabled:"disabled",stretchedUnderline:"stretchedUnderline"};!function(e){const
|
|
1
|
+
var e={tabsWrapper:"tabsWrapper",tabsList:"tabsList",selectedIndicator:"selectedIndicator",visible:"visible",sm:"sm",lg:"lg",stretched:"stretched",tabListTabWrapper:"tabListTabWrapper",tabListTabInner:"tabListTabInner",disabled:"disabled",stretchedUnderline:"stretchedUnderline"};!function(e){const n="s_id-1f1ea82925d8_3_88_6";if("undefined"!=typeof document){const t=document.head||document.getElementsByTagName("head")[0];if(t.querySelector("#"+n))return;const a=document.createElement("style");a.id=n,t.firstChild?t.insertBefore(a,t.firstChild):t.appendChild(a),a.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[n]=e)}('@charset "UTF-8";\n/* stylelint-disable */\n/* stylelint-enable */\n/* Tokens — remove once design system Sense motion tokens are live */\n/* Pattern: slide-transition · Tokens: position · ease-transition · duration-long-250 */\n.tabsWrapper {\n position: relative;\n --duration-long-250: 250ms;\n --duration-short-70: 70ms;\n --ease-transition: cubic-bezier(0.4, 0, 0.2, 1);\n --ease-linear: linear;\n}\n.tabsWrapper .tabsList {\n display: flex;\n flex-direction: row;\n list-style-type: none;\n font-size: 0;\n position: relative;\n /* Medium: 32px button + 2px gap + 2px selected underline */\n height: 36px;\n outline: none;\n padding: 0;\n}\n.tabsWrapper .selectedIndicator {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 0;\n height: 2px;\n background-color: var(--primary-color);\n border-radius: 1px;\n opacity: 0;\n z-index: 2;\n pointer-events: none;\n transition: left var(--duration-long-250) var(--ease-transition), width var(--duration-long-250) var(--ease-transition), opacity var(--duration-short-70) var(--ease-linear);\n}\n.tabsWrapper .selectedIndicator.visible {\n opacity: 1;\n}\n@media (prefers-reduced-motion: reduce) {\n .tabsWrapper .selectedIndicator {\n transition: opacity var(--duration-short-70) var(--ease-linear);\n }\n}\n.tabsWrapper .tabsList.sm {\n /* Small: 28px button + 2px gap + 2px underline */\n height: 32px;\n}\n.tabsWrapper .tabsList.lg {\n /* Large: 36px button + 2px gap + 2px underline */\n height: 40px;\n}\n.tabsWrapper.stretched .tabsList {\n width: 100%;\n}\n.tabsWrapper.stretched .tabsList .tabListTabWrapper {\n width: 100%;\n}\n.tabsWrapper.stretched .tabsList .tabListTabWrapper .tabListTabInner {\n width: 100%;\n}\n.tabsWrapper.disabled {\n opacity: 0;\n height: 0;\n padding-bottom: 5px;\n pointer-events: none;\n}\n.tabsWrapper.stretchedUnderline {\n border-bottom: none;\n}');export{e as default};
|
|
2
2
|
//# sourceMappingURL=TabList.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={tabPanelWrapper:"tabPanelWrapper"};!function(e){const t="s_id-
|
|
1
|
+
var e={tabPanelWrapper:"tabPanelWrapper"};!function(e){const t="s_id-82244d4a2f7b_3_88_6";if("undefined"!=typeof document){const a=document.head||document.getElementsByTagName("head")[0];if(a.querySelector("#"+t))return;const n=document.createElement("style");n.id=t,a.firstChild?a.insertBefore(n,a.firstChild):a.appendChild(n),n.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}(".tabPanelWrapper {\n color: var(--primary-text-color);\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TabPanel.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var n={tabPanelsWrapper:"tabPanelsWrapper",tabPanel:"tabPanel",animationDirectionRtl:"animationDirectionRtl",animationDirectionLtr:"animationDirectionLtr",active:"active",panelSlideIn:"panelSlideIn"};!function(n){const e="s_id-
|
|
1
|
+
var n={tabPanelsWrapper:"tabPanelsWrapper",tabPanel:"tabPanel",animationDirectionRtl:"animationDirectionRtl",animationDirectionLtr:"animationDirectionLtr",active:"active",panelSlideIn:"panelSlideIn"};!function(n){const e="s_id-078bacbdb1e4_3_88_6";if("undefined"!=typeof document){const a=document.head||document.getElementsByTagName("head")[0];if(a.querySelector("#"+e))return;const t=document.createElement("style");t.id=e,a.firstChild?a.insertBefore(t,a.firstChild):a.appendChild(t),t.appendChild(document.createTextNode(n))}else globalThis.injectedStyles&&(globalThis.injectedStyles[e]=n)}("/* stylelint-disable */\n/* stylelint-enable */\n.tabPanelsWrapper .tabPanel {\n display: none;\n}\n.tabPanelsWrapper .tabPanel.animationDirectionRtl {\n transform: translateX(8px);\n}\n.tabPanelsWrapper .tabPanel.animationDirectionLtr {\n transform: translateX(-8px);\n}\n.tabPanelsWrapper .tabPanel.active {\n display: block;\n animation: panelSlideIn var(--motion-productive-long) forwards var(--motion-timing-enter);\n}\n@keyframes panelSlideIn {\n 100% {\n transform: translateX(0%);\n }\n}");export{n as default};
|
|
2
2
|
//# sourceMappingURL=TabPanels.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={textAreaWrapper:"textAreaWrapper",label:"label",required:"required",subTextContainer:"subTextContainer",helpText:"helpText",limitText:"limitText",textArea:"textArea",small:"small",large:"large",resize:"resize",success:"success",error:"error",disabled:"disabled",readOnly:"readOnly"};!function(e){const r="s_id-
|
|
1
|
+
var e={textAreaWrapper:"textAreaWrapper",label:"label",required:"required",subTextContainer:"subTextContainer",helpText:"helpText",limitText:"limitText",textArea:"textArea",small:"small",large:"large",resize:"resize",success:"success",error:"error",disabled:"disabled",readOnly:"readOnly"};!function(e){const r="s_id-c3fc7910bb37_3_88_6";if("undefined"!=typeof document){const t=document.head||document.getElementsByTagName("head")[0];if(t.querySelector("#"+r))return;const a=document.createElement("style");a.id=r,t.firstChild?t.insertBefore(a,t.firstChild):t.appendChild(a),a.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[r]=e)}('/* stylelint-disable */\n/* stylelint-enable */\n/* stylelint-disable */\n/* stylelint-enable */\n.textAreaWrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: var(--spacing-xs);\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n font: var(--font-text2-normal);\n}\n.textAreaWrapper .label {\n display: inline-flex;\n gap: var(--spacing-xs);\n color: var(--primary-text-color);\n}\n.textAreaWrapper .label.required::after {\n content: "*";\n color: var(--color-error);\n}\n.textAreaWrapper .subTextContainer {\n color: var(--secondary-text-color);\n}\n.textAreaWrapper .subTextContainer .helpText {\n display: flex;\n}\n.textAreaWrapper .subTextContainer .limitText {\n margin-left: auto;\n}\n.textAreaWrapper .textArea {\n resize: vertical;\n border: 1px solid var(--ui-border-color);\n border-radius: var(--border-radius-small);\n padding: var(--spacing-small) var(--spacing-medium);\n outline: none;\n background-color: var(--secondary-background-color);\n color: var(--primary-text-color);\n}\n.textAreaWrapper .textArea:hover {\n border-color: var(--primary-text-color);\n}\n.textAreaWrapper .textArea:active, .textAreaWrapper .textArea:focus, .textAreaWrapper .textArea:focus-within {\n border-color: var(--primary-color);\n}\n.textAreaWrapper .textArea.small {\n font: var(--font-text2-normal);\n}\n.textAreaWrapper .textArea.large {\n font: var(--font-text1-normal);\n}\n.textAreaWrapper .textArea:not(.resize) {\n resize: none;\n}\n.textAreaWrapper.success .textArea {\n border-color: var(--color-success);\n}\n.textAreaWrapper.success .helpText {\n color: var(--color-success);\n}\n.textAreaWrapper.error .textArea {\n border-color: var(--color-error);\n}\n.textAreaWrapper.error .helpText,\n.textAreaWrapper.error .limitText {\n color: var(--color-error);\n}\n.textAreaWrapper.disabled .textArea,\n.textAreaWrapper.disabled .textArea:hover {\n color: var(--disabled-text-color);\n background-color: var(--disabled-background-color);\n border-color: transparent;\n resize: none;\n}\n.textAreaWrapper.disabled .helpText {\n color: var(--disabled-text-color);\n}\n.textAreaWrapper.readOnly .textArea,\n.textAreaWrapper.readOnly .textArea:hover {\n background-color: var(--allgrey-background-color);\n border-color: transparent;\n resize: none;\n}');export{e as default};
|
|
2
2
|
//# sourceMappingURL=TextArea.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{slicedToArray as e,defineProperty as
|
|
1
|
+
import{slicedToArray as e,defineProperty as o}from"../../../_virtual/_rollupPluginBabelHelpers.js";import t from"classnames";import a,{forwardRef as n,useState as i,useRef as r,useCallback as l,useMemo as s,useEffect as c}from"react";import d from"../../hooks/useDebounceEvent/index.js";import{Icon as m}from"@vibe/icon/mockedClassNames";import{Loader as u}from"@vibe/loader/mockedClassNames";import{Text as p}from"@vibe/typography/mockedClassNames";import v from"../FieldLabel/FieldLabel.js";import{TextFieldFeedbackState as f,TextFieldTextType as C,FEEDBACK_CLASSES as b,SIZE_MAPPER as x,TextFieldAriaLabel as y}from"./TextFieldConstants.js";import{BASE_SIZES as E}from"../../constants/sizes.js";import N from"../../hooks/useMergeRef.js";import{Clickable as h}from"@vibe/clickable/mockedClassNames";import{getTestId as g}from"../../tests/testIds.js";import{NOOP as T}from"../../utils/function-utils.js";import{ComponentDefaultTestId as I,ComponentVibeId as k}from"../../tests/constants.js";import{withStaticProps as F}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import j from"./TextField.module.scss.js";import{Tooltip as L}from"@vibe/tooltip/mockedClassNames";import D from"../HiddenText/HiddenText.js";var w={primary:"",secondary:""},H=F(n((function(n,f){var C=n.className,E=void 0===C?"":C,F=n.placeholder,H=void 0===F?"":F,A=n.autoComplete,S=void 0===A?"off":A,W=n.value,_=n.onChange,q=void 0===_?T:_,R=n.onBlur,z=void 0===R?T:R,B=n.onFocus,O=void 0===B?T:B,P=n.onKeyDown,K=void 0===P?T:P,M=n.onWheel,V=void 0===M?T:M,X=n.debounceRate,U=void 0===X?0:X,Y=n.autoFocus,G=void 0!==Y&&Y,J=n.disabled,Q=void 0!==J&&J,Z=n.readonly,$=void 0!==Z&&Z,ee=n.setRef,oe=void 0===ee?T:ee,te=n.iconName,ae=n.iconPosition,ne=void 0===ae?"right":ae,ie=n.secondaryIconName,re=n.id,le=void 0===re?"input":re,se=n.title,ce=void 0===se?"":se,de=n.size,me=void 0===de?"small":de,ue=n.validation,pe=void 0===ue?null:ue,ve=n.wrapperClassName,fe=void 0===ve?"":ve,Ce=n.onIconClick,be=void 0===Ce?T:Ce,xe=n.clearOnIconClick,ye=void 0!==xe&&xe,Ee=n.labelIconName,Ne=n.showCharCount,he=void 0!==Ne&&Ne,ge=n.inputAriaLabel,Te=n.searchResultsContainerId,Ie=void 0===Te?"":Te,ke=n.activeDescendant,Fe=void 0===ke?"":ke,je=n.iconsNames,Le=void 0===je?w:je,De=n.type,we=void 0===De?"text":De,He=n.maxLength,Ae=void 0===He?null:He,Se=n.allowExceedingMaxLength,We=void 0!==Se&&Se,_e=n.trim,qe=void 0!==_e&&_e,Re=n.role,ze=void 0===Re?"":Re,Be=n.required,Oe=void 0!==Be&&Be,Pe=n.requiredErrorText,Ke=void 0===Pe?"":Pe,Me=n.loading,Ve=void 0!==Me&&Me,Xe=n["data-testid"],Ue=n.secondaryDataTestId,Ye=n.tabIndex,Ge=n.underline,Je=void 0!==Ge&&Ge,Qe=n.name,Ze=n.controlled,$e=void 0!==Ze&&Ze,eo=n.iconTooltipContent,oo=n.secondaryTooltipContent,to=n.dir,ao=i(!1),no=e(ao,2),io=no[0],ro=no[1],lo=r(null),so=N(f,lo,oe),co=l((function(e){Oe&&!e.target.value&&ro(!0),z(e)}),[z,Oe]),mo=l((function(e,o){io&&e&&ro(!1),q(e,o||{target:lo.current})}),[q,io]),uo=d({delay:U,onChange:mo,initialStateValue:W,trim:qe}),po=uo.inputValue,vo=uo.onEventChanged,fo=uo.clearValue,Co=s((function(){return $e?W:po}),[$e,W,po]),bo=l((function(e){$e?mo(e.target.value,e):vo(e)}),[$e,mo,vo]),xo=s((function(){return ie&&Co?ie:te}),[te,ie,Co]),yo=l((function(){Q||(ye&&(lo.current&&lo.current.focus(),lo.current.value="",$e?mo(""):fo()),be(xo))}),[Q,ye,be,xo,$e,mo,fo]),Eo=s((function(){return"number"==typeof Ae&&Co&&Co.length>Ae?b.error:pe&&pe.status||io?b[io?"error":pe.status]:""}),[Ae,pe,io,Co]),No=te||ie,ho=he||pe&&pe.text||io&&Ke,go=ie===xo,To=te===xo,Io=(be!==T||Le.primary||eo)&&Co&&te.length&&To,ko=(ie||oo)&&go&&!!Co,Fo=We?"".concat(le,"-allow-exceeding-max-length-text"):void 0;c((function(){if((null==lo?void 0:lo.current)&&G){var e=requestAnimationFrame((function(){return lo.current.focus()}));return function(){return cancelAnimationFrame(e)}}}),[lo,G]);var jo=be!==T||ye,Lo=Le.primary||eo,Do=Le.secondary||oo;return a.createElement("div",{className:t(j.textField,fe,o(o({},j.disabled,Q),j.onlyUnderline,Je)),role:ze,"aria-busy":Ve},a.createElement("div",{className:t(j.labelWrapper)},a.createElement(v,{labelText:ce,icon:Ee,labelFor:le,required:Oe}),a.createElement("div",{className:t(j.inputWrapper,x[me],Eo,o({},j.inputWrapperIconLeft,"left"===ne&&!!te))},a.createElement("input",{className:t(E,j.input,o(o({},j.inputHasIcon,!!No),j.readOnly,$)),placeholder:H,autoComplete:S,value:Co,onChange:bo,disabled:Q,readOnly:$,ref:so,type:we,id:le,"data-testid":Xe||g(I.TEXT_FIELD,le),"data-vibe":k.TEXT_FIELD,name:Qe,onBlur:co,onFocus:O,onKeyDown:K,onWheel:V,maxLength:"number"!=typeof Ae||We?void 0:Ae,role:Ie&&"combobox","aria-label":ge||H,"aria-invalid":pe&&"error"===pe.status||io,"aria-owns":Ie,"aria-activedescendant":Fe,"aria-required":Oe,"aria-describedby":Fo,required:Oe,tabIndex:Ye,dir:to}),Ve&&a.createElement("div",{className:t(j.loaderContainer,o({},j.loaderContainerHasIcon,No))},a.createElement("div",{className:t(j.loader)},a.createElement(u,{className:t(j.loaderSvg)}))),te&&a.createElement(L,{content:To?eo:void 0,referenceWrapperClassName:j.tooltipContainer},a.createElement(h,{className:t(j.iconContainer,o(o(o(o({},j.iconContainerHasIcon,No),j.iconContainerActive,To),j.iconContainerClickable,jo),j.iconContainerLeft,"left"===ne)),onClick:yo,tabIndex:Io?"0":"-1",ariaLabel:Lo},a.createElement(m,{icon:te,className:t(j.icon),iconType:"font",iconSize:"small"===me?"16px":"18px"}))),ie&&a.createElement(L,{content:go?oo:void 0,addKeyboardHideShowTriggersByDefault:!0,referenceWrapperClassName:j.tooltipContainer},a.createElement(h,{className:t(j.iconContainer,o(o(o({},j.iconContainerHasIcon,No),j.iconContainerActive,go),j.iconContainerClickable,jo)),onClick:yo,tabIndex:ko?"0":"-1","data-testid":Ue||g(I.TEXT_FIELD_SECONDARY_BUTTON,le),ariaLabel:Do},a.createElement(m,{icon:ie,className:t(j.icon),iconType:"font",iconSize:"small"===me?"16px":"18px"})))),ho&&a.createElement(p,{type:"text2",color:"secondary",className:t(j.subTextContainer)},(pe&&pe.text||io&&Ke)&&a.createElement("span",{className:t(j.subTextContainerStatus)},io?Ke:pe.text),he&&a.createElement("span",{className:t(j.counter),"aria-label":y.CHAR},Co&&Co.length||0,"number"==typeof Ae&&"/".concat(Ae),a.createElement(D,{id:Fo,text:"Maximum of ".concat(Ae," characters")})))))})),{sizes:E,feedbacks:f,types:C});export{H as default};
|
|
2
2
|
//# sourceMappingURL=TextField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","sources":["../../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, {\n ChangeEvent,\n type ChangeEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport useDebounceEvent from \"../../hooks/useDebounceEvent\";\nimport { Icon } from \"@vibe/icon\";\nimport { Loader } from \"@vibe/loader\";\nimport { Text } from \"@vibe/typography\";\nimport FieldLabel from \"../FieldLabel/FieldLabel\";\nimport {\n FEEDBACK_CLASSES,\n SIZE_MAPPER,\n TextFieldAriaLabel,\n TextFieldFeedbackState as TextFieldFeedbackStateEnum,\n TextFieldTextType as TextFieldTextTypeEnum\n} from \"./TextFieldConstants\";\nimport { type TextFieldType, type TextFieldSize } from \"./TextField.types\";\nimport { BASE_SIZES } from \"../../constants/sizes\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { Clickable } from \"@vibe/clickable\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../tests/constants\";\nimport { type VibeComponentProps, withStaticProps } from \"../../types\";\nimport styles from \"./TextField.module.scss\";\nimport { Tooltip } from \"@vibe/tooltip\";\nimport { HiddenText } from \"../HiddenText\";\n\nconst EMPTY_OBJECT = { primary: \"\", secondary: \"\" };\n\nexport interface TextFieldProps extends VibeComponentProps {\n /**\n * The placeholder text displayed when the input is empty.\n */\n placeholder?: string;\n /**\n * Configures the browser's autocomplete behavior.\n */\n autoComplete?: string;\n /**\n * The current value of the text field.\n */\n value?: string;\n /**\n * Callback fired when the text field value changes.\n */\n onChange?: (\n value: string,\n event: React.ChangeEvent<HTMLInputElement> | Pick<React.ChangeEvent<HTMLInputElement>, \"target\">\n ) => void;\n /**\n * Callback fired when the text field loses focus.\n */\n onBlur?: (event: React.FocusEvent) => void;\n /**\n * Callback fired when the text field gains focus.\n */\n onFocus?: (event: React.FocusEvent) => void;\n /**\n * Callback fired when a key is pressed inside the text field.\n */\n onKeyDown?: (event: React.KeyboardEvent) => void;\n /**\n * Callback fired when the mouse wheel is used inside the text field.\n */\n onWheel?: (event: React.WheelEvent) => void;\n /**\n * The debounce rate for input value changes.\n */\n debounceRate?: number;\n /**\n * If true, the input is automatically focused on mount.\n */\n autoFocus?: boolean;\n /**\n * If true, disables the text field.\n */\n disabled?: boolean;\n /**\n * If true, makes the text field read-only.\n */\n readonly?: boolean;\n /**\n * A function to set a reference to the input element.\n */\n setRef?: (node: HTMLElement) => void;\n /**\n * The primary icon displayed inside the text field.\n */\n iconName?: string | React.FunctionComponent | null;\n /**\n * The secondary icon displayed inside the text field.\n */\n secondaryIconName?: string | React.FunctionComponent | null;\n /**\n * The label displayed above the text field.\n */\n title?: string;\n /**\n * The size of the text field.\n */\n size?: TextFieldSize;\n /**\n * Validation state for the text field.\n */\n validation?: { status?: \"error\" | \"success\"; text?: string | React.ReactNode };\n /**\n * Class name applied to the text field wrapper.\n */\n wrapperClassName?: string;\n /**\n * Callback fired when the icon inside the text field is clicked.\n */\n onIconClick?: (icon: string | React.FunctionComponent | null) => void;\n /**\n * If true, clears the input when the icon is clicked.\n */\n clearOnIconClick?: boolean;\n /**\n * The icon displayed inside the label.\n */\n labelIconName?: string | React.FunctionComponent | null;\n /**\n * If true, displays the character count.\n */\n showCharCount?: boolean;\n /**\n * The ARIA label for the input field.\n */\n inputAriaLabel?: string;\n /**\n * The ID of the container where search results are displayed.\n */\n searchResultsContainerId?: string;\n /**\n * The ID of the currently active search result.\n */\n activeDescendant?: string;\n /**\n * Icon labels for accessibility.\n */\n iconsNames?: {\n primary: string;\n secondary: string;\n };\n /**\n * The type of the text field.\n */\n type?: TextFieldType;\n /**\n * The maximum number of characters allowed.\n */\n maxLength?: number;\n /**\n * If true, allows the user to exceed the character limit set by `maxLength`.\n */\n allowExceedingMaxLength?: boolean;\n /**\n * If true, trims whitespace from the input value.\n */\n trim?: boolean;\n /**\n * The ARIA role of the text field.\n */\n role?: string;\n /**\n * If true, marks the input as required.\n */\n required?: boolean;\n /**\n * The error message displayed when a required field is left empty.\n */\n requiredErrorText?: string;\n /**\n * If true, displays a loading indicator inside the text field.\n */\n loading?: boolean;\n /**\n * Test ID for the secondary icon.\n */\n secondaryDataTestId?: string;\n /**\n * The tab order of the input field.\n */\n tabIndex?: number;\n /**\n * The name attribute for the input field.\n */\n name?: string;\n /**\n * If true, renders only an underline style for the text field.\n */\n underline?: boolean;\n /**\n * If true, the component is controlled by an external state.\n */\n controlled?: boolean;\n /**\n * Tooltip content for the primary icon.\n */\n iconTooltipContent?: string;\n /**\n * Tooltip content for the secondary icon.\n */\n secondaryTooltipContent?: string;\n /**\n * The text direction of the input.\n */\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n}\n\nconst TextField = forwardRef(\n (\n {\n className = \"\",\n placeholder = \"\",\n autoComplete = \"off\",\n value,\n onChange = NOOP,\n onBlur = NOOP,\n onFocus = NOOP,\n onKeyDown = NOOP,\n onWheel = NOOP,\n debounceRate = 0,\n autoFocus = false,\n disabled = false,\n readonly = false,\n setRef = NOOP,\n iconName,\n secondaryIconName,\n id = \"input\",\n title = \"\",\n size = \"small\",\n validation = null,\n wrapperClassName = \"\",\n onIconClick = NOOP,\n clearOnIconClick = false,\n labelIconName,\n showCharCount = false,\n inputAriaLabel,\n searchResultsContainerId = \"\",\n activeDescendant = \"\",\n iconsNames = EMPTY_OBJECT,\n type = \"text\",\n maxLength = null,\n allowExceedingMaxLength = false,\n trim = false,\n role = \"\",\n required = false,\n requiredErrorText = \"\",\n loading = false,\n \"data-testid\": dataTestId,\n secondaryDataTestId,\n tabIndex,\n underline = false,\n name,\n controlled = false,\n iconTooltipContent,\n secondaryTooltipContent,\n dir\n }: TextFieldProps,\n ref: React.ForwardedRef<unknown>\n ) => {\n const [isRequiredAndEmpty, setIsRequiredAndEmpty] = useState(false);\n\n const inputRef = useRef(null);\n const mergedRef = useMergeRef(ref, inputRef, setRef);\n\n const onBlurCallback = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (required && !e.target.value) {\n setIsRequiredAndEmpty(true);\n }\n onBlur(e);\n },\n [onBlur, required]\n );\n\n const onChangeCallback = useCallback(\n (value: string, e?: React.ChangeEvent<HTMLInputElement>) => {\n if (isRequiredAndEmpty && value) {\n setIsRequiredAndEmpty(false);\n }\n const event = e || { target: inputRef.current };\n onChange(value, event);\n },\n [onChange, isRequiredAndEmpty]\n );\n\n const {\n inputValue: uncontrolledInput,\n onEventChanged,\n clearValue\n } = useDebounceEvent({\n delay: debounceRate,\n onChange: onChangeCallback,\n initialStateValue: value,\n trim\n });\n\n const inputValue = useMemo(() => {\n return controlled ? value : uncontrolledInput;\n }, [controlled, value, uncontrolledInput]);\n\n const handleChange = useCallback<ChangeEventHandler<HTMLInputElement>>(\n event => {\n controlled ? onChangeCallback(event.target.value, event) : onEventChanged(event);\n },\n [controlled, onChangeCallback, onEventChanged]\n );\n\n const currentStateIconName = useMemo(() => {\n if (secondaryIconName) {\n return inputValue ? secondaryIconName : iconName;\n }\n return iconName;\n }, [iconName, secondaryIconName, inputValue]);\n\n const onIconClickCallback = useCallback(() => {\n if (disabled) {\n return;\n }\n\n if (clearOnIconClick) {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n // Do it cause otherwise the value is not cleared in target object\n inputRef.current.value = \"\";\n controlled ? onChangeCallback(\"\") : clearValue();\n }\n onIconClick(currentStateIconName);\n }, [disabled, clearOnIconClick, onIconClick, currentStateIconName, controlled, onChangeCallback, clearValue]);\n\n const validationClass = useMemo(() => {\n if (typeof maxLength === \"number\" && inputValue && inputValue.length > maxLength) {\n return FEEDBACK_CLASSES.error;\n }\n\n if ((!validation || !validation.status) && !isRequiredAndEmpty) {\n return \"\";\n }\n const status = isRequiredAndEmpty ? \"error\" : validation.status;\n return FEEDBACK_CLASSES[status];\n }, [maxLength, validation, isRequiredAndEmpty, inputValue]);\n\n const hasIcon = iconName || secondaryIconName;\n const shouldShowExtraText =\n showCharCount || (validation && validation.text) || (isRequiredAndEmpty && requiredErrorText);\n const isSecondary = secondaryIconName === currentStateIconName;\n const isPrimary = iconName === currentStateIconName;\n const shouldFocusOnPrimaryIcon =\n (onIconClick !== NOOP || iconsNames.primary || iconTooltipContent) && inputValue && iconName.length && isPrimary;\n const shouldFocusOnSecondaryIcon = (secondaryIconName || secondaryTooltipContent) && isSecondary && !!inputValue;\n const allowExceedingMaxLengthTextId = allowExceedingMaxLength ? `${id}-allow-exceeding-max-length-text` : undefined;\n\n useEffect(() => {\n if (!inputRef?.current || !autoFocus) {\n return;\n }\n\n const animationFrame = requestAnimationFrame(() => inputRef.current.focus());\n return () => cancelAnimationFrame(animationFrame);\n }, [inputRef, autoFocus]);\n\n const isIconContainerClickable = onIconClick !== NOOP || clearOnIconClick;\n\n const primaryIconLabel = iconsNames.primary || iconTooltipContent;\n const secondaryIconLabel = iconsNames.secondary || secondaryTooltipContent;\n\n return (\n <div\n className={cx(styles.textField, wrapperClassName, {\n [styles.disabled]: disabled,\n [styles.onlyUnderline]: underline\n })}\n role={role}\n aria-busy={loading}\n >\n <div className={cx(styles.labelWrapper)}>\n <FieldLabel labelText={title} icon={labelIconName} labelFor={id} required={required} />\n <div className={cx(styles.inputWrapper, SIZE_MAPPER[size], validationClass)}>\n {/*Programatical input (tabIndex={-1}) is working fine with aria-activedescendant attribute despite the rule*/}\n {/*eslint-disable-next-line jsx-a11y/aria-activedescendant-has-tabindex*/}\n <input\n className={cx(className, styles.input, {\n [styles.inputHasIcon]: !!hasIcon,\n [styles.readOnly]: readonly\n })}\n placeholder={placeholder}\n autoComplete={autoComplete}\n value={inputValue}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readonly}\n ref={mergedRef}\n type={type}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TEXT_FIELD, id)}\n data-vibe={ComponentVibeId.TEXT_FIELD}\n name={name}\n onBlur={onBlurCallback}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onWheel={onWheel}\n maxLength={typeof maxLength === \"number\" && !allowExceedingMaxLength ? maxLength : undefined}\n role={searchResultsContainerId && \"combobox\"} // For voice reader\n aria-label={inputAriaLabel || placeholder}\n aria-invalid={(validation && validation.status === \"error\") || isRequiredAndEmpty}\n aria-owns={searchResultsContainerId}\n aria-activedescendant={activeDescendant}\n aria-required={required}\n aria-describedby={allowExceedingMaxLengthTextId}\n required={required}\n tabIndex={tabIndex}\n dir={dir}\n />\n {loading && (\n <div\n className={cx(styles.loaderContainer, {\n [styles.loaderContainerHasIcon]: hasIcon\n })}\n >\n <div className={cx(styles.loader)}>\n <Loader className={cx(styles.loaderSvg)} />\n </div>\n </div>\n )}\n {iconName && (\n <Tooltip\n content={isPrimary ? iconTooltipContent : undefined}\n referenceWrapperClassName={styles.tooltipContainer}\n >\n <Clickable\n className={cx(styles.iconContainer, {\n [styles.iconContainerHasIcon]: hasIcon,\n [styles.iconContainerActive]: isPrimary,\n [styles.iconContainerClickable]: isIconContainerClickable\n })}\n onClick={onIconClickCallback}\n tabIndex={shouldFocusOnPrimaryIcon ? \"0\" : \"-1\"}\n ariaLabel={primaryIconLabel}\n >\n <Icon\n icon={iconName}\n className={cx(styles.icon)}\n iconType=\"font\"\n iconSize={size === \"small\" ? \"16px\" : \"18px\"}\n />\n </Clickable>\n </Tooltip>\n )}\n {secondaryIconName && (\n <Tooltip\n content={isSecondary ? secondaryTooltipContent : undefined}\n addKeyboardHideShowTriggersByDefault\n referenceWrapperClassName={styles.tooltipContainer}\n >\n <Clickable\n className={cx(styles.iconContainer, {\n [styles.iconContainerHasIcon]: hasIcon,\n [styles.iconContainerActive]: isSecondary,\n [styles.iconContainerClickable]: isIconContainerClickable\n })}\n onClick={onIconClickCallback}\n tabIndex={shouldFocusOnSecondaryIcon ? \"0\" : \"-1\"}\n data-testid={secondaryDataTestId || getTestId(ComponentDefaultTestId.TEXT_FIELD_SECONDARY_BUTTON, id)}\n ariaLabel={secondaryIconLabel}\n >\n <Icon\n icon={secondaryIconName}\n className={cx(styles.icon)}\n iconType=\"font\"\n iconSize={size === \"small\" ? \"16px\" : \"18px\"}\n />\n </Clickable>\n </Tooltip>\n )}\n </div>\n {shouldShowExtraText && (\n <Text type=\"text2\" color=\"secondary\" className={cx(styles.subTextContainer)}>\n {((validation && validation.text) || (isRequiredAndEmpty && requiredErrorText)) && (\n <span className={cx(styles.subTextContainerStatus)}>\n {isRequiredAndEmpty ? requiredErrorText : validation.text}\n </span>\n )}\n {showCharCount && (\n <span className={cx(styles.counter)} aria-label={TextFieldAriaLabel.CHAR}>\n {(inputValue && inputValue.length) || 0}\n {typeof maxLength === \"number\" && `/${maxLength}`}\n <HiddenText id={allowExceedingMaxLengthTextId} text={`Maximum of ${maxLength} characters`} />\n </span>\n )}\n </Text>\n )}\n </div>\n </div>\n );\n }\n);\n\ninterface TextFieldStaticProps {\n sizes: typeof BASE_SIZES;\n types: typeof TextFieldTextTypeEnum;\n feedbacks: typeof TextFieldFeedbackStateEnum;\n}\n\nexport default withStaticProps<TextFieldProps, TextFieldStaticProps, unknown>(TextField, {\n sizes: BASE_SIZES,\n feedbacks: TextFieldFeedbackStateEnum,\n types: TextFieldTextTypeEnum\n});\n"],"names":["EMPTY_OBJECT","primary","secondary","withStaticProps","forwardRef","_ref","ref","_ref$className","className","_ref$placeholder","placeholder","_ref$autoComplete","autoComplete","value","_ref$onChange","onChange","NOOP","_ref$onBlur","onBlur","_ref$onFocus","onFocus","_ref$onKeyDown","onKeyDown","_ref$onWheel","onWheel","_ref$debounceRate","debounceRate","_ref$autoFocus","autoFocus","_ref$disabled","disabled","_ref$readonly","readonly","_ref$setRef","setRef","iconName","secondaryIconName","_ref$id","id","_ref$title","title","_ref$size","size","_ref$validation","validation","_ref$wrapperClassName","wrapperClassName","_ref$onIconClick","onIconClick","_ref$clearOnIconClick","clearOnIconClick","labelIconName","_ref$showCharCount","showCharCount","inputAriaLabel","_ref$searchResultsCon","searchResultsContainerId","_ref$activeDescendant","activeDescendant","_ref$iconsNames","iconsNames","_ref$type","type","_ref$maxLength","maxLength","_ref$allowExceedingMa","allowExceedingMaxLength","_ref$trim","trim","_ref$role","role","_ref$required","required","_ref$requiredErrorTex","requiredErrorText","_ref$loading","loading","dataTestId","secondaryDataTestId","tabIndex","_ref$underline","underline","name","_ref$controlled","controlled","iconTooltipContent","secondaryTooltipContent","dir","_useState","useState","_useState2","_slicedToArray","isRequiredAndEmpty","setIsRequiredAndEmpty","inputRef","useRef","mergedRef","useMergeRef","onBlurCallback","useCallback","e","target","onChangeCallback","current","_useDebounceEvent","useDebounceEvent","delay","initialStateValue","uncontrolledInput","inputValue","onEventChanged","clearValue","useMemo","handleChange","event","currentStateIconName","onIconClickCallback","focus","validationClass","length","FEEDBACK_CLASSES","error","status","hasIcon","shouldShowExtraText","text","isSecondary","isPrimary","shouldFocusOnPrimaryIcon","shouldFocusOnSecondaryIcon","allowExceedingMaxLengthTextId","concat","undefined","useEffect","animationFrame","requestAnimationFrame","cancelAnimationFrame","isIconContainerClickable","primaryIconLabel","secondaryIconLabel","React","createElement","cx","styles","textField","_defineProperty","onlyUnderline","labelWrapper","FieldLabel","labelText","icon","labelFor","inputWrapper","SIZE_MAPPER","input","inputHasIcon","readOnly","getTestId","ComponentDefaultTestId","TEXT_FIELD","ComponentVibeId","loaderContainer","loaderContainerHasIcon","loader","Loader","loaderSvg","Tooltip","content","referenceWrapperClassName","tooltipContainer","Clickable","iconContainer","iconContainerHasIcon","iconContainerActive","iconContainerClickable","onClick","ariaLabel","Icon","iconType","iconSize","addKeyboardHideShowTriggersByDefault","TEXT_FIELD_SECONDARY_BUTTON","Text","color","subTextContainer","subTextContainerStatus","counter","TextFieldAriaLabel","CHAR","HiddenText","sizes","BASE_SIZES","feedbacks","TextFieldFeedbackStateEnum","types","TextFieldTextTypeEnum"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextField.js","sources":["../../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, {\n ChangeEvent,\n type ChangeEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport useDebounceEvent from \"../../hooks/useDebounceEvent\";\nimport { Icon } from \"@vibe/icon\";\nimport { Loader } from \"@vibe/loader\";\nimport { Text } from \"@vibe/typography\";\nimport FieldLabel from \"../FieldLabel/FieldLabel\";\nimport {\n FEEDBACK_CLASSES,\n SIZE_MAPPER,\n TextFieldAriaLabel,\n TextFieldFeedbackState as TextFieldFeedbackStateEnum,\n TextFieldTextType as TextFieldTextTypeEnum\n} from \"./TextFieldConstants\";\nimport { type TextFieldType, type TextFieldSize } from \"./TextField.types\";\nimport { BASE_SIZES } from \"../../constants/sizes\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { Clickable } from \"@vibe/clickable\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../tests/constants\";\nimport { type VibeComponentProps, withStaticProps } from \"../../types\";\nimport styles from \"./TextField.module.scss\";\nimport { Tooltip } from \"@vibe/tooltip\";\nimport { HiddenText } from \"../HiddenText\";\n\nconst EMPTY_OBJECT = { primary: \"\", secondary: \"\" };\n\nexport interface TextFieldProps extends VibeComponentProps {\n /**\n * The placeholder text displayed when the input is empty.\n */\n placeholder?: string;\n /**\n * Configures the browser's autocomplete behavior.\n */\n autoComplete?: string;\n /**\n * The current value of the text field.\n */\n value?: string;\n /**\n * Callback fired when the text field value changes.\n */\n onChange?: (\n value: string,\n event: React.ChangeEvent<HTMLInputElement> | Pick<React.ChangeEvent<HTMLInputElement>, \"target\">\n ) => void;\n /**\n * Callback fired when the text field loses focus.\n */\n onBlur?: (event: React.FocusEvent) => void;\n /**\n * Callback fired when the text field gains focus.\n */\n onFocus?: (event: React.FocusEvent) => void;\n /**\n * Callback fired when a key is pressed inside the text field.\n */\n onKeyDown?: (event: React.KeyboardEvent) => void;\n /**\n * Callback fired when the mouse wheel is used inside the text field.\n */\n onWheel?: (event: React.WheelEvent) => void;\n /**\n * The debounce rate for input value changes.\n */\n debounceRate?: number;\n /**\n * If true, the input is automatically focused on mount.\n */\n autoFocus?: boolean;\n /**\n * If true, disables the text field.\n */\n disabled?: boolean;\n /**\n * If true, makes the text field read-only.\n */\n readonly?: boolean;\n /**\n * A function to set a reference to the input element.\n */\n setRef?: (node: HTMLElement) => void;\n /**\n * The primary icon displayed inside the text field.\n */\n iconName?: string | React.FunctionComponent | null;\n /**\n * Position of the primary icon inside the text field.\n */\n iconPosition?: \"left\" | \"right\";\n /**\n * The secondary icon displayed inside the text field.\n */\n secondaryIconName?: string | React.FunctionComponent | null;\n /**\n * The label displayed above the text field.\n */\n title?: string;\n /**\n * The size of the text field.\n */\n size?: TextFieldSize;\n /**\n * Validation state for the text field.\n */\n validation?: { status?: \"error\" | \"success\"; text?: string | React.ReactNode };\n /**\n * Class name applied to the text field wrapper.\n */\n wrapperClassName?: string;\n /**\n * Callback fired when the icon inside the text field is clicked.\n */\n onIconClick?: (icon: string | React.FunctionComponent | null) => void;\n /**\n * If true, clears the input when the icon is clicked.\n */\n clearOnIconClick?: boolean;\n /**\n * The icon displayed inside the label.\n */\n labelIconName?: string | React.FunctionComponent | null;\n /**\n * If true, displays the character count.\n */\n showCharCount?: boolean;\n /**\n * The ARIA label for the input field.\n */\n inputAriaLabel?: string;\n /**\n * The ID of the container where search results are displayed.\n */\n searchResultsContainerId?: string;\n /**\n * The ID of the currently active search result.\n */\n activeDescendant?: string;\n /**\n * Icon labels for accessibility.\n */\n iconsNames?: {\n primary: string;\n secondary: string;\n };\n /**\n * The type of the text field.\n */\n type?: TextFieldType;\n /**\n * The maximum number of characters allowed.\n */\n maxLength?: number;\n /**\n * If true, allows the user to exceed the character limit set by `maxLength`.\n */\n allowExceedingMaxLength?: boolean;\n /**\n * If true, trims whitespace from the input value.\n */\n trim?: boolean;\n /**\n * The ARIA role of the text field.\n */\n role?: string;\n /**\n * If true, marks the input as required.\n */\n required?: boolean;\n /**\n * The error message displayed when a required field is left empty.\n */\n requiredErrorText?: string;\n /**\n * If true, displays a loading indicator inside the text field.\n */\n loading?: boolean;\n /**\n * Test ID for the secondary icon.\n */\n secondaryDataTestId?: string;\n /**\n * The tab order of the input field.\n */\n tabIndex?: number;\n /**\n * The name attribute for the input field.\n */\n name?: string;\n /**\n * If true, renders only an underline style for the text field.\n */\n underline?: boolean;\n /**\n * If true, the component is controlled by an external state.\n */\n controlled?: boolean;\n /**\n * Tooltip content for the primary icon.\n */\n iconTooltipContent?: string;\n /**\n * Tooltip content for the secondary icon.\n */\n secondaryTooltipContent?: string;\n /**\n * The text direction of the input.\n */\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n}\n\nconst TextField = forwardRef(\n (\n {\n className = \"\",\n placeholder = \"\",\n autoComplete = \"off\",\n value,\n onChange = NOOP,\n onBlur = NOOP,\n onFocus = NOOP,\n onKeyDown = NOOP,\n onWheel = NOOP,\n debounceRate = 0,\n autoFocus = false,\n disabled = false,\n readonly = false,\n setRef = NOOP,\n iconName,\n iconPosition = \"right\",\n secondaryIconName,\n id = \"input\",\n title = \"\",\n size = \"small\",\n validation = null,\n wrapperClassName = \"\",\n onIconClick = NOOP,\n clearOnIconClick = false,\n labelIconName,\n showCharCount = false,\n inputAriaLabel,\n searchResultsContainerId = \"\",\n activeDescendant = \"\",\n iconsNames = EMPTY_OBJECT,\n type = \"text\",\n maxLength = null,\n allowExceedingMaxLength = false,\n trim = false,\n role = \"\",\n required = false,\n requiredErrorText = \"\",\n loading = false,\n \"data-testid\": dataTestId,\n secondaryDataTestId,\n tabIndex,\n underline = false,\n name,\n controlled = false,\n iconTooltipContent,\n secondaryTooltipContent,\n dir\n }: TextFieldProps,\n ref: React.ForwardedRef<unknown>\n ) => {\n const [isRequiredAndEmpty, setIsRequiredAndEmpty] = useState(false);\n\n const inputRef = useRef(null);\n const mergedRef = useMergeRef(ref, inputRef, setRef);\n\n const onBlurCallback = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (required && !e.target.value) {\n setIsRequiredAndEmpty(true);\n }\n onBlur(e);\n },\n [onBlur, required]\n );\n\n const onChangeCallback = useCallback(\n (value: string, e?: React.ChangeEvent<HTMLInputElement>) => {\n if (isRequiredAndEmpty && value) {\n setIsRequiredAndEmpty(false);\n }\n const event = e || { target: inputRef.current };\n onChange(value, event);\n },\n [onChange, isRequiredAndEmpty]\n );\n\n const {\n inputValue: uncontrolledInput,\n onEventChanged,\n clearValue\n } = useDebounceEvent({\n delay: debounceRate,\n onChange: onChangeCallback,\n initialStateValue: value,\n trim\n });\n\n const inputValue = useMemo(() => {\n return controlled ? value : uncontrolledInput;\n }, [controlled, value, uncontrolledInput]);\n\n const handleChange = useCallback<ChangeEventHandler<HTMLInputElement>>(\n event => {\n controlled ? onChangeCallback(event.target.value, event) : onEventChanged(event);\n },\n [controlled, onChangeCallback, onEventChanged]\n );\n\n const currentStateIconName = useMemo(() => {\n if (secondaryIconName) {\n return inputValue ? secondaryIconName : iconName;\n }\n return iconName;\n }, [iconName, secondaryIconName, inputValue]);\n\n const onIconClickCallback = useCallback(() => {\n if (disabled) {\n return;\n }\n\n if (clearOnIconClick) {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n // Do it cause otherwise the value is not cleared in target object\n inputRef.current.value = \"\";\n controlled ? onChangeCallback(\"\") : clearValue();\n }\n onIconClick(currentStateIconName);\n }, [disabled, clearOnIconClick, onIconClick, currentStateIconName, controlled, onChangeCallback, clearValue]);\n\n const validationClass = useMemo(() => {\n if (typeof maxLength === \"number\" && inputValue && inputValue.length > maxLength) {\n return FEEDBACK_CLASSES.error;\n }\n\n if ((!validation || !validation.status) && !isRequiredAndEmpty) {\n return \"\";\n }\n const status = isRequiredAndEmpty ? \"error\" : validation.status;\n return FEEDBACK_CLASSES[status];\n }, [maxLength, validation, isRequiredAndEmpty, inputValue]);\n\n const hasIcon = iconName || secondaryIconName;\n const shouldShowExtraText =\n showCharCount || (validation && validation.text) || (isRequiredAndEmpty && requiredErrorText);\n const isSecondary = secondaryIconName === currentStateIconName;\n const isPrimary = iconName === currentStateIconName;\n const shouldFocusOnPrimaryIcon =\n (onIconClick !== NOOP || iconsNames.primary || iconTooltipContent) && inputValue && iconName.length && isPrimary;\n const shouldFocusOnSecondaryIcon = (secondaryIconName || secondaryTooltipContent) && isSecondary && !!inputValue;\n const allowExceedingMaxLengthTextId = allowExceedingMaxLength ? `${id}-allow-exceeding-max-length-text` : undefined;\n\n useEffect(() => {\n if (!inputRef?.current || !autoFocus) {\n return;\n }\n\n const animationFrame = requestAnimationFrame(() => inputRef.current.focus());\n return () => cancelAnimationFrame(animationFrame);\n }, [inputRef, autoFocus]);\n\n const isIconContainerClickable = onIconClick !== NOOP || clearOnIconClick;\n\n const primaryIconLabel = iconsNames.primary || iconTooltipContent;\n const secondaryIconLabel = iconsNames.secondary || secondaryTooltipContent;\n\n return (\n <div\n className={cx(styles.textField, wrapperClassName, {\n [styles.disabled]: disabled,\n [styles.onlyUnderline]: underline\n })}\n role={role}\n aria-busy={loading}\n >\n <div className={cx(styles.labelWrapper)}>\n <FieldLabel labelText={title} icon={labelIconName} labelFor={id} required={required} />\n <div\n className={cx(styles.inputWrapper, SIZE_MAPPER[size], validationClass, {\n [styles.inputWrapperIconLeft]: iconPosition === \"left\" && !!iconName\n })}\n >\n {/*Programatical input (tabIndex={-1}) is working fine with aria-activedescendant attribute despite the rule*/}\n {/*eslint-disable-next-line jsx-a11y/aria-activedescendant-has-tabindex*/}\n <input\n className={cx(className, styles.input, {\n [styles.inputHasIcon]: !!hasIcon,\n [styles.readOnly]: readonly\n })}\n placeholder={placeholder}\n autoComplete={autoComplete}\n value={inputValue}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readonly}\n ref={mergedRef}\n type={type}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TEXT_FIELD, id)}\n data-vibe={ComponentVibeId.TEXT_FIELD}\n name={name}\n onBlur={onBlurCallback}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onWheel={onWheel}\n maxLength={typeof maxLength === \"number\" && !allowExceedingMaxLength ? maxLength : undefined}\n role={searchResultsContainerId && \"combobox\"} // For voice reader\n aria-label={inputAriaLabel || placeholder}\n aria-invalid={(validation && validation.status === \"error\") || isRequiredAndEmpty}\n aria-owns={searchResultsContainerId}\n aria-activedescendant={activeDescendant}\n aria-required={required}\n aria-describedby={allowExceedingMaxLengthTextId}\n required={required}\n tabIndex={tabIndex}\n dir={dir}\n />\n {loading && (\n <div\n className={cx(styles.loaderContainer, {\n [styles.loaderContainerHasIcon]: hasIcon\n })}\n >\n <div className={cx(styles.loader)}>\n <Loader className={cx(styles.loaderSvg)} />\n </div>\n </div>\n )}\n {iconName && (\n <Tooltip\n content={isPrimary ? iconTooltipContent : undefined}\n referenceWrapperClassName={styles.tooltipContainer}\n >\n <Clickable\n className={cx(styles.iconContainer, {\n [styles.iconContainerHasIcon]: hasIcon,\n [styles.iconContainerActive]: isPrimary,\n [styles.iconContainerClickable]: isIconContainerClickable,\n [styles.iconContainerLeft]: iconPosition === \"left\"\n })}\n onClick={onIconClickCallback}\n tabIndex={shouldFocusOnPrimaryIcon ? \"0\" : \"-1\"}\n ariaLabel={primaryIconLabel}\n >\n <Icon\n icon={iconName}\n className={cx(styles.icon)}\n iconType=\"font\"\n iconSize={size === \"small\" ? \"16px\" : \"18px\"}\n />\n </Clickable>\n </Tooltip>\n )}\n {secondaryIconName && (\n <Tooltip\n content={isSecondary ? secondaryTooltipContent : undefined}\n addKeyboardHideShowTriggersByDefault\n referenceWrapperClassName={styles.tooltipContainer}\n >\n <Clickable\n className={cx(styles.iconContainer, {\n [styles.iconContainerHasIcon]: hasIcon,\n [styles.iconContainerActive]: isSecondary,\n [styles.iconContainerClickable]: isIconContainerClickable\n })}\n onClick={onIconClickCallback}\n tabIndex={shouldFocusOnSecondaryIcon ? \"0\" : \"-1\"}\n data-testid={secondaryDataTestId || getTestId(ComponentDefaultTestId.TEXT_FIELD_SECONDARY_BUTTON, id)}\n ariaLabel={secondaryIconLabel}\n >\n <Icon\n icon={secondaryIconName}\n className={cx(styles.icon)}\n iconType=\"font\"\n iconSize={size === \"small\" ? \"16px\" : \"18px\"}\n />\n </Clickable>\n </Tooltip>\n )}\n </div>\n {shouldShowExtraText && (\n <Text type=\"text2\" color=\"secondary\" className={cx(styles.subTextContainer)}>\n {((validation && validation.text) || (isRequiredAndEmpty && requiredErrorText)) && (\n <span className={cx(styles.subTextContainerStatus)}>\n {isRequiredAndEmpty ? requiredErrorText : validation.text}\n </span>\n )}\n {showCharCount && (\n <span className={cx(styles.counter)} aria-label={TextFieldAriaLabel.CHAR}>\n {(inputValue && inputValue.length) || 0}\n {typeof maxLength === \"number\" && `/${maxLength}`}\n <HiddenText id={allowExceedingMaxLengthTextId} text={`Maximum of ${maxLength} characters`} />\n </span>\n )}\n </Text>\n )}\n </div>\n </div>\n );\n }\n);\n\ninterface TextFieldStaticProps {\n sizes: typeof BASE_SIZES;\n types: typeof TextFieldTextTypeEnum;\n feedbacks: typeof TextFieldFeedbackStateEnum;\n}\n\nexport default withStaticProps<TextFieldProps, TextFieldStaticProps, unknown>(TextField, {\n sizes: BASE_SIZES,\n feedbacks: TextFieldFeedbackStateEnum,\n types: TextFieldTextTypeEnum\n});\n"],"names":["EMPTY_OBJECT","primary","secondary","withStaticProps","forwardRef","_ref","ref","_ref$className","className","_ref$placeholder","placeholder","_ref$autoComplete","autoComplete","value","_ref$onChange","onChange","NOOP","_ref$onBlur","onBlur","_ref$onFocus","onFocus","_ref$onKeyDown","onKeyDown","_ref$onWheel","onWheel","_ref$debounceRate","debounceRate","_ref$autoFocus","autoFocus","_ref$disabled","disabled","_ref$readonly","readonly","_ref$setRef","setRef","iconName","_ref$iconPosition","iconPosition","secondaryIconName","_ref$id","id","_ref$title","title","_ref$size","size","_ref$validation","validation","_ref$wrapperClassName","wrapperClassName","_ref$onIconClick","onIconClick","_ref$clearOnIconClick","clearOnIconClick","labelIconName","_ref$showCharCount","showCharCount","inputAriaLabel","_ref$searchResultsCon","searchResultsContainerId","_ref$activeDescendant","activeDescendant","_ref$iconsNames","iconsNames","_ref$type","type","_ref$maxLength","maxLength","_ref$allowExceedingMa","allowExceedingMaxLength","_ref$trim","trim","_ref$role","role","_ref$required","required","_ref$requiredErrorTex","requiredErrorText","_ref$loading","loading","dataTestId","secondaryDataTestId","tabIndex","_ref$underline","underline","name","_ref$controlled","controlled","iconTooltipContent","secondaryTooltipContent","dir","_useState","useState","_useState2","_slicedToArray","isRequiredAndEmpty","setIsRequiredAndEmpty","inputRef","useRef","mergedRef","useMergeRef","onBlurCallback","useCallback","e","target","onChangeCallback","current","_useDebounceEvent","useDebounceEvent","delay","initialStateValue","uncontrolledInput","inputValue","onEventChanged","clearValue","useMemo","handleChange","event","currentStateIconName","onIconClickCallback","focus","validationClass","length","FEEDBACK_CLASSES","error","status","hasIcon","shouldShowExtraText","text","isSecondary","isPrimary","shouldFocusOnPrimaryIcon","shouldFocusOnSecondaryIcon","allowExceedingMaxLengthTextId","concat","undefined","useEffect","animationFrame","requestAnimationFrame","cancelAnimationFrame","isIconContainerClickable","primaryIconLabel","secondaryIconLabel","React","createElement","cx","styles","textField","_defineProperty","onlyUnderline","labelWrapper","FieldLabel","labelText","icon","labelFor","inputWrapper","SIZE_MAPPER","inputWrapperIconLeft","input","inputHasIcon","readOnly","getTestId","ComponentDefaultTestId","TEXT_FIELD","ComponentVibeId","loaderContainer","loaderContainerHasIcon","loader","Loader","loaderSvg","Tooltip","content","referenceWrapperClassName","tooltipContainer","Clickable","iconContainer","iconContainerHasIcon","iconContainerActive","iconContainerClickable","iconContainerLeft","onClick","ariaLabel","Icon","iconType","iconSize","addKeyboardHideShowTriggersByDefault","TEXT_FIELD_SECONDARY_BUTTON","Text","color","subTextContainer","subTextContainerStatus","counter","TextFieldAriaLabel","CHAR","HiddenText","sizes","BASE_SIZES","feedbacks","TextFieldFeedbackStateEnum","types","TextFieldTextTypeEnum"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var n={textField:"textField",labelWrapper:"labelWrapper",subTextContainer:"subTextContainer",counter:"counter",disabled:"disabled",icon:"icon",inputWrapper:"inputWrapper",input:"input",iconContainer:"iconContainer",iconContainerHasIcon:"iconContainerHasIcon",readOnly:"readOnly",inputHover:"inputHover",inputActive:"inputActive",inputHasIcon:"inputHasIcon",round:"round",square:"square",onlyUnderline:"onlyUnderline",tooltipContainer:"tooltipContainer",wrapperSizeMedium:"wrapperSizeMedium",wrapperSizeLarge:"wrapperSizeLarge",iconContainerActive:"iconContainerActive",iconContainerClickable:"iconContainerClickable",inputErrorValidation:"inputErrorValidation",subTextContainerStatus:"subTextContainerStatus",inputSuccessValidation:"inputSuccessValidation",wrapperSizeSmall:"wrapperSizeSmall",inputWrapperSizeSmall:"inputWrapperSizeSmall",loaderContainer:"loaderContainer",loaderContainerHasIcon:"loaderContainerHasIcon",loader:"loader",loaderSvg:"loaderSvg"};!function(n){const e="s_id-695413f4db8e_3_88_5";if("undefined"!=typeof document){const t=document.head||document.getElementsByTagName("head")[0];if(t.querySelector("#"+e))return;const i=document.createElement("style");i.id=e,t.firstChild?t.insertBefore(i,t.firstChild):t.appendChild(i),i.appendChild(document.createTextNode(n))}else globalThis.injectedStyles&&(globalThis.injectedStyles[e]=n)}("/* stylelint-disable */\n/* stylelint-enable */\n/* stylelint-disable */\n/* stylelint-enable */\n.textField {\n position: relative;\n box-sizing: border-box;\n font: var(--font-text2-normal);\n width: 100%;\n}\n.textField * {\n box-sizing: border-box;\n}\n.textField .labelWrapper {\n width: 100%;\n}\n.textField .subTextContainer {\n display: flex;\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n padding-block: 1px;\n}\n.textField .subTextContainer .counter {\n margin-left: auto;\n}\n.textField.disabled .icon {\n cursor: not-allowed;\n}\n.textField.disabled .inputWrapper {\n cursor: not-allowed;\n}\n.textField.disabled .inputWrapper .input {\n user-select: none;\n border: none;\n pointer-events: none;\n background-color: var(--disabled-background-color);\n cursor: not-allowed;\n}\n.textField.disabled .inputWrapper .input::placeholder {\n color: var(--disabled-text-color);\n}\n.textField.disabled .inputWrapper .iconContainer.iconContainerHasIcon:hover {\n background-color: transparent;\n}\n.textField .inputWrapper {\n width: 100%;\n position: relative;\n}\n.textField .inputWrapper .input {\n width: 100%;\n height: 100%;\n outline: 0;\n background-color: var(--secondary-background-color);\n border: 1px solid;\n border-color: var(--ui-border-color);\n border-radius: var(--border-radius-small);\n transition: border-color var(--motion-productive-medium) ease-in;\n padding: var(--spacing-small) var(--spacing-medium);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--primary-text-color);\n}\n.textField .inputWrapper .input.readOnly {\n background-color: var(--allgrey-background-color);\n border: none;\n}\n.textField .inputWrapper .input.inputHover {\n border-color: var(--primary-text-color);\n}\n.textField .inputWrapper .input:focus,\n.textField .inputWrapper .input:active,\n.textField .inputWrapper .input.inputActive {\n border-color: var(--primary-color);\n}\n.textField .inputWrapper .input::placeholder {\n color: var(--secondary-text-color);\n font-weight: 400;\n}\n.textField .inputWrapper .input.inputHasIcon {\n padding: var(--spacing-small) var(--spacing-large) var(--spacing-small) var(--spacing-medium);\n}\n.textField .inputWrapper .input.round {\n border-radius: 50px;\n}\n.textField .inputWrapper .input.square {\n border-radius: 0;\n}\n.textField .inputWrapper .input.onlyUnderline {\n border-left: none;\n border-right: none;\n border-top: none;\n padding: var(--spacing-small) var(--spacing-large) var(--spacing-small) var(--spacing-xs);\n border-radius: 0 !important;\n}\n.textField .inputWrapper .tooltipContainer {\n position: absolute;\n top: 50%;\n right: 0;\n width: 32px;\n height: 20px;\n transform: translateY(-50%);\n}\n.textField .inputWrapper.wrapperSizeMedium .tooltipContainer {\n width: 40px;\n}\n.textField .inputWrapper.wrapperSizeLarge .tooltipContainer {\n width: 46px;\n}\n.textField .inputWrapper .iconContainer {\n position: absolute;\n top: 50%;\n right: 4px;\n width: 24px;\n height: 24px;\n transform: translateY(-50%);\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: var(--border-radius-small);\n opacity: 0;\n pointer-events: none;\n -webkit-appearance: none;\n}\n.textField .inputWrapper .iconContainer.iconContainerActive.iconContainerHasIcon.iconContainerClickable {\n pointer-events: all;\n cursor: pointer;\n}\n.textField .inputWrapper .iconContainer.iconContainerActive.iconContainerHasIcon:not(.iconContainerClickable) {\n pointer-events: none;\n cursor: default;\n}\n.textField .inputWrapper .iconContainer.iconContainerActive {\n opacity: 1;\n}\n.textField .inputWrapper .iconContainer.iconContainerActive .icon {\n opacity: 1;\n pointer-events: all;\n transform: rotate(0) scale(1);\n}\n.textField .inputWrapper .iconContainer.iconContainerHasIcon.iconContainerClickable:hover {\n background-color: var(--primary-background-hover-color);\n}\n.textField .inputWrapper .iconContainer.iconContainerHasIcon.iconContainerClickable:active {\n transform: translateY(-50%) scale(0.9);\n}\n.textField .inputWrapper .iconContainer .icon {\n transform: rotate(90deg) scale(0.8);\n color: var(--icon-color);\n will-change: transform;\n pointer-events: none;\n transition: color var(--motion-productive-short) var(--motion-timing-enter), transform var(--motion-productive-short) var(--motion-timing-enter);\n font-size: 14px;\n font-family: var(--font-family);\n}\n.textField .inputWrapper.inputErrorValidation:hover .input {\n border-color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .input {\n border-color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .input:focus,\n.textField .inputWrapper.inputErrorValidation .input:active {\n border-color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .iconContainer .icon {\n color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .iconContainer .icon:hover {\n color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation + .subTextContainer .subTextContainerStatus,\n.textField .inputWrapper.inputErrorValidation + .subTextContainer .counter {\n color: var(--negative-color);\n}\n.textField .inputWrapper.inputSuccessValidation:hover .input {\n border-color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .input {\n border-color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .input:focus,\n.textField .inputWrapper.inputSuccessValidation .input:active {\n border-color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .iconContainer .icon {\n color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .iconContainer .icon:hover {\n color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation + .subTextContainer .subTextContainerStatus {\n color: var(--positive-color);\n}\n.textField .inputWrapper.wrapperSizeSmall {\n height: 32px;\n}\n.textField .inputWrapper.wrapperSizeSmall .input {\n font: var(--font-text2-normal);\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n}\n.textField .inputWrapper.inputWrapperSizeSmall .input.inputHasIcon.onlyUnderline {\n padding-left: var(--spacing-xs);\n}\n.textField .inputWrapper.wrapperSizeMedium {\n height: 40px;\n}\n.textField .inputWrapper.wrapperSizeMedium .input {\n font: var(--font-text1-normal);\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n}\n.textField .inputWrapper.wrapperSizeMedium .input.inputHasIcon {\n padding: var(--spacing-small) var(--spacing-xl) var(--spacing-small) var(--spacing-medium);\n}\n.textField .inputWrapper.wrapperSizeMedium .input.inputHasIcon.onlyUnderline {\n padding-left: 4px;\n}\n.textField .inputWrapper.wrapperSizeMedium .iconContainer {\n pointer-events: none;\n height: 32px;\n width: 32px;\n outline: none;\n}\n.textField .inputWrapper.wrapperSizeMedium .iconContainer:hover + .iconContainer + .input {\n border-color: var(--primary-text-color);\n}\n.textField .inputWrapper.wrapperSizeLarge {\n height: 48px;\n}\n.textField .inputWrapper.wrapperSizeLarge .input {\n font: var(--font-text1-normal);\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n}\n.textField .inputWrapper.wrapperSizeLarge .input.inputHasIcon {\n padding: var(--spacing-small) var(--spacing-xl) var(--spacing-small) var(--spacing-medium);\n}\n.textField .inputWrapper.wrapperSizeLarge .input.inputHasIcon.onlyUnderline {\n padding-left: var(--spacing-xs);\n}\n.textField .inputWrapper.wrapperSizeLarge .iconContainer {\n height: 40px;\n width: 40px;\n}\n.textField .inputWrapper:hover .input {\n border-color: var(--primary-text-color);\n}\n.textField .inputWrapper .loaderContainer {\n position: absolute;\n top: 50%;\n right: 4px;\n width: 24px;\n height: 24px;\n transform: translateY(-50%);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.textField .inputWrapper .loaderContainer.loaderContainerHasIcon {\n right: 32px;\n}\n.textField .inputWrapper .loaderContainer .loader {\n width: 16px;\n height: 16px;\n}\n.textField .inputWrapper .loaderContainer .loader .loaderSvg {\n color: var(--secondary-text-color);\n}\n.textField .inputWrapper.wrapperSizeMedium .iconContainer .icon {\n font-size: 16px;\n font-family: var(--font-family);\n}\n.textField .inputWrapper.wrapperSizeLarge .iconContainer .icon {\n font-size: 16px;\n font-family: var(--font-family);\n}\n.dark-app-theme input[type=date]::-webkit-calendar-picker-indicator, .black-app-theme input[type=date]::-webkit-calendar-picker-indicator, .hacker_theme-app-theme input[type=date]::-webkit-calendar-picker-indicator,\n.dark-app-theme input[type=datetime-local]::-webkit-calendar-picker-indicator,\n.black-app-theme input[type=datetime-local]::-webkit-calendar-picker-indicator,\n.hacker_theme-app-theme input[type=datetime-local]::-webkit-calendar-picker-indicator {\n filter: invert(1);\n}");export{n as default};
|
|
1
|
+
var n={textField:"textField",labelWrapper:"labelWrapper",subTextContainer:"subTextContainer",counter:"counter",disabled:"disabled",icon:"icon",inputWrapper:"inputWrapper",input:"input",iconContainer:"iconContainer",iconContainerHasIcon:"iconContainerHasIcon",readOnly:"readOnly",inputHover:"inputHover",inputActive:"inputActive",inputHasIcon:"inputHasIcon",round:"round",square:"square",onlyUnderline:"onlyUnderline",tooltipContainer:"tooltipContainer",wrapperSizeMedium:"wrapperSizeMedium",wrapperSizeLarge:"wrapperSizeLarge",iconContainerLeft:"iconContainerLeft",inputWrapperIconLeft:"inputWrapperIconLeft",iconContainerActive:"iconContainerActive",iconContainerClickable:"iconContainerClickable",inputErrorValidation:"inputErrorValidation",subTextContainerStatus:"subTextContainerStatus",inputSuccessValidation:"inputSuccessValidation",wrapperSizeSmall:"wrapperSizeSmall",inputWrapperSizeSmall:"inputWrapperSizeSmall",loaderContainer:"loaderContainer",loaderContainerHasIcon:"loaderContainerHasIcon",loader:"loader",loaderSvg:"loaderSvg"};!function(n){const e="s_id-da704bbc4cbc_3_88_6";if("undefined"!=typeof document){const t=document.head||document.getElementsByTagName("head")[0];if(t.querySelector("#"+e))return;const i=document.createElement("style");i.id=e,t.firstChild?t.insertBefore(i,t.firstChild):t.appendChild(i),i.appendChild(document.createTextNode(n))}else globalThis.injectedStyles&&(globalThis.injectedStyles[e]=n)}("/* stylelint-disable */\n/* stylelint-enable */\n/* stylelint-disable */\n/* stylelint-enable */\n.textField {\n position: relative;\n box-sizing: border-box;\n font: var(--font-text2-normal);\n width: 100%;\n}\n.textField * {\n box-sizing: border-box;\n}\n.textField .labelWrapper {\n width: 100%;\n}\n.textField .subTextContainer {\n display: flex;\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n padding-block: 1px;\n}\n.textField .subTextContainer .counter {\n margin-left: auto;\n}\n.textField.disabled .icon {\n cursor: not-allowed;\n}\n.textField.disabled .inputWrapper {\n cursor: not-allowed;\n}\n.textField.disabled .inputWrapper .input {\n user-select: none;\n border: none;\n pointer-events: none;\n background-color: var(--disabled-background-color);\n cursor: not-allowed;\n}\n.textField.disabled .inputWrapper .input::placeholder {\n color: var(--disabled-text-color);\n}\n.textField.disabled .inputWrapper .iconContainer.iconContainerHasIcon:hover {\n background-color: transparent;\n}\n.textField .inputWrapper {\n width: 100%;\n position: relative;\n}\n.textField .inputWrapper .input {\n width: 100%;\n height: 100%;\n outline: 0;\n background-color: var(--secondary-background-color);\n border: 1px solid;\n border-color: var(--ui-border-color);\n border-radius: var(--border-radius-medium);\n transition: border-color var(--motion-productive-medium) ease-in;\n padding: var(--spacing-small) var(--spacing-medium);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--primary-text-color);\n}\n.textField .inputWrapper .input.readOnly {\n background-color: var(--allgrey-background-color);\n border: none;\n}\n.textField .inputWrapper .input.inputHover {\n border-color: var(--primary-text-color);\n}\n.textField .inputWrapper .input:focus,\n.textField .inputWrapper .input:active,\n.textField .inputWrapper .input.inputActive {\n border-color: var(--primary-color);\n}\n.textField .inputWrapper .input::placeholder {\n color: var(--secondary-text-color);\n font-weight: 400;\n}\n.textField .inputWrapper .input.inputHasIcon {\n padding: var(--spacing-small) var(--spacing-large) var(--spacing-small) var(--spacing-medium);\n}\n.textField .inputWrapper .input.round {\n border-radius: 50px;\n}\n.textField .inputWrapper .input.square {\n border-radius: 0;\n}\n.textField .inputWrapper .input.onlyUnderline {\n border-left: none;\n border-right: none;\n border-top: none;\n padding: var(--spacing-small) var(--spacing-large) var(--spacing-small) var(--spacing-xs);\n border-radius: 0 !important;\n}\n.textField .inputWrapper .tooltipContainer {\n position: absolute;\n top: 50%;\n right: 0;\n width: 32px;\n height: 20px;\n transform: translateY(-50%);\n}\n.textField .inputWrapper.wrapperSizeMedium .tooltipContainer {\n width: 40px;\n}\n.textField .inputWrapper.wrapperSizeLarge .tooltipContainer {\n width: 46px;\n}\n.textField .inputWrapper .iconContainer {\n position: absolute;\n top: 50%;\n right: 4px;\n width: 24px;\n height: 24px;\n transform: translateY(-50%);\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: var(--border-radius-small);\n opacity: 0;\n pointer-events: none;\n -webkit-appearance: none;\n}\n.textField .inputWrapper .iconContainer.iconContainerLeft {\n left: var(--spacing-small);\n right: auto;\n opacity: 1;\n}\n.textField .inputWrapper .iconContainer.iconContainerLeft .icon {\n opacity: 1;\n transform: none;\n}\n.textField .inputWrapper.inputWrapperIconLeft .input {\n padding-left: 36px;\n}\n.textField .inputWrapper.inputWrapperIconLeft .input.inputHasIcon {\n padding-left: 36px;\n padding-right: var(--spacing-medium);\n}\n.textField .inputWrapper .iconContainer.iconContainerActive.iconContainerHasIcon.iconContainerClickable {\n pointer-events: all;\n cursor: pointer;\n}\n.textField .inputWrapper .iconContainer.iconContainerActive.iconContainerHasIcon:not(.iconContainerClickable) {\n pointer-events: none;\n cursor: default;\n}\n.textField .inputWrapper .iconContainer.iconContainerActive {\n opacity: 1;\n}\n.textField .inputWrapper .iconContainer.iconContainerActive .icon {\n opacity: 1;\n pointer-events: all;\n transform: rotate(0) scale(1);\n}\n.textField .inputWrapper .iconContainer.iconContainerHasIcon.iconContainerClickable:hover {\n background-color: var(--primary-background-hover-color);\n}\n.textField .inputWrapper .iconContainer.iconContainerHasIcon.iconContainerClickable:active {\n transform: translateY(-50%) scale(0.9);\n}\n.textField .inputWrapper .iconContainer .icon {\n transform: rotate(90deg) scale(0.8);\n color: var(--icon-color);\n will-change: transform;\n pointer-events: none;\n transition: color var(--motion-productive-short) var(--motion-timing-enter), transform var(--motion-productive-short) var(--motion-timing-enter);\n font-size: 14px;\n font-family: var(--font-family);\n}\n.textField .inputWrapper.inputErrorValidation:hover .input {\n border-color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .input {\n border-color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .input:focus,\n.textField .inputWrapper.inputErrorValidation .input:active {\n border-color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .iconContainer .icon {\n color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation .iconContainer .icon:hover {\n color: var(--negative-color);\n}\n.textField .inputWrapper.inputErrorValidation + .subTextContainer .subTextContainerStatus,\n.textField .inputWrapper.inputErrorValidation + .subTextContainer .counter {\n color: var(--negative-color);\n}\n.textField .inputWrapper.inputSuccessValidation:hover .input {\n border-color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .input {\n border-color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .input:focus,\n.textField .inputWrapper.inputSuccessValidation .input:active {\n border-color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .iconContainer .icon {\n color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation .iconContainer .icon:hover {\n color: var(--positive-color);\n}\n.textField .inputWrapper.inputSuccessValidation + .subTextContainer .subTextContainerStatus {\n color: var(--positive-color);\n}\n.textField .inputWrapper.wrapperSizeSmall {\n height: 32px;\n}\n.textField .inputWrapper.wrapperSizeSmall .input {\n font: var(--font-text2-normal);\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n}\n.textField .inputWrapper.inputWrapperSizeSmall .input.inputHasIcon.onlyUnderline {\n padding-left: var(--spacing-xs);\n}\n.textField .inputWrapper.wrapperSizeMedium {\n height: 36px;\n}\n.textField .inputWrapper.wrapperSizeMedium .input {\n font: var(--font-text2-normal);\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n}\n.textField .inputWrapper.wrapperSizeMedium .input.inputHasIcon {\n padding: var(--spacing-small) var(--spacing-xl) var(--spacing-small) var(--spacing-medium);\n}\n.textField .inputWrapper.wrapperSizeMedium .input.inputHasIcon.onlyUnderline {\n padding-left: 4px;\n}\n.textField .inputWrapper.wrapperSizeMedium .iconContainer {\n pointer-events: none;\n height: 32px;\n width: 32px;\n outline: none;\n}\n.textField .inputWrapper.wrapperSizeMedium .iconContainer:hover + .iconContainer + .input {\n border-color: var(--primary-text-color);\n}\n.textField .inputWrapper.wrapperSizeLarge {\n height: 40px;\n}\n.textField .inputWrapper.wrapperSizeLarge .input {\n font: var(--font-text1-normal);\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n}\n.textField .inputWrapper.wrapperSizeLarge .input.inputHasIcon {\n padding: var(--spacing-small) var(--spacing-xl) var(--spacing-small) var(--spacing-medium);\n}\n.textField .inputWrapper.wrapperSizeLarge .input.inputHasIcon.onlyUnderline {\n padding-left: var(--spacing-xs);\n}\n.textField .inputWrapper.wrapperSizeLarge .iconContainer {\n height: 40px;\n width: 40px;\n}\n.textField .inputWrapper:hover .input {\n border-color: var(--primary-text-color);\n}\n.textField .inputWrapper .loaderContainer {\n position: absolute;\n top: 50%;\n right: 4px;\n width: 24px;\n height: 24px;\n transform: translateY(-50%);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.textField .inputWrapper .loaderContainer.loaderContainerHasIcon {\n right: 32px;\n}\n.textField .inputWrapper .loaderContainer .loader {\n width: 16px;\n height: 16px;\n}\n.textField .inputWrapper .loaderContainer .loader .loaderSvg {\n color: var(--secondary-text-color);\n}\n.textField .inputWrapper.wrapperSizeMedium .iconContainer .icon {\n font-size: 16px;\n font-family: var(--font-family);\n}\n.textField .inputWrapper.wrapperSizeLarge .iconContainer .icon {\n font-size: 16px;\n font-family: var(--font-family);\n}\n.dark-app-theme input[type=date]::-webkit-calendar-picker-indicator, .black-app-theme input[type=date]::-webkit-calendar-picker-indicator, .hacker_theme-app-theme input[type=date]::-webkit-calendar-picker-indicator,\n.dark-app-theme input[type=datetime-local]::-webkit-calendar-picker-indicator,\n.black-app-theme input[type=datetime-local]::-webkit-calendar-picker-indicator,\n.hacker_theme-app-theme input[type=datetime-local]::-webkit-calendar-picker-indicator {\n filter: invert(1);\n}");export{n as default};
|
|
2
2
|
//# sourceMappingURL=TextField.module.scss.js.map
|
package/dist/mocked_classnames/src/components/TextWithHighlight/TextWithHighlight.module.scss.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={textWithHighlightWrapper:"textWithHighlightWrapper",highlightText:"highlightText",withEllipsis:"withEllipsis"};!function(e){const t="s_id-
|
|
1
|
+
var e={textWithHighlightWrapper:"textWithHighlightWrapper",highlightText:"highlightText",withEllipsis:"withEllipsis"};!function(e){const t="s_id-42c1fd2afe36_3_88_6";if("undefined"!=typeof document){const i=document.head||document.getElementsByTagName("head")[0];if(i.querySelector("#"+t))return;const l=document.createElement("style");l.id=t,i.firstChild?i.insertBefore(l,i.firstChild):i.appendChild(l),l.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}("/* stylelint-disable */\n/* stylelint-enable */\n.textWithHighlightWrapper {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n}\n.textWithHighlightWrapper em.highlightText {\n background-color: var(--primary-selected-color);\n color: var(--primary-text-color);\n border-radius: 2px;\n}\n.textWithHighlightWrapper.withEllipsis {\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: var(--heading-clamp-lines);\n -webkit-box-orient: vertical;\n white-space: initial;\n word-break: break-word;\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TextWithHighlight.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={tipseenWrapper:"tipseenWrapper",tipseenWrapperWithoutCustomWidth:"tipseenWrapperWithoutCustomWidth",floating:"floating",tipseenHeader:"tipseenHeader",tipseenTitle:"tipseenTitle",tipseenContent:"tipseenContent",tipseenCloseButton:"tipseenCloseButton",dark:"dark"};!function(e){const t="s_id-
|
|
1
|
+
var e={tipseenWrapper:"tipseenWrapper",tipseenWrapperWithoutCustomWidth:"tipseenWrapperWithoutCustomWidth",floating:"floating",tipseenHeader:"tipseenHeader",tipseenTitle:"tipseenTitle",tipseenContent:"tipseenContent",tipseenCloseButton:"tipseenCloseButton",dark:"dark"};!function(e){const t="s_id-33da00d2ba25_3_88_6";if("undefined"!=typeof document){const n=document.head||document.getElementsByTagName("head")[0];if(n.querySelector("#"+t))return;const i=document.createElement("style");i.id=t,n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}("/* stylelint-disable */\n/* stylelint-enable */\n.tipseenWrapper {\n min-width: 100px;\n min-height: 40px;\n --tooltip-padding: 0;\n --tooltip-border-radius: var(--border-radius-medium);\n --tooltip-max-width: initial;\n}\n.tipseenWrapper.tipseenWrapperWithoutCustomWidth {\n --tooltip-max-width: 320px;\n}\n.tipseenWrapper.floating {\n position: fixed;\n bottom: 0;\n right: 0;\n margin-bottom: var(--spacing-medium);\n margin-right: var(--spacing-medium);\n}\n.tipseenWrapper .tipseenHeader {\n display: flex;\n justify-content: flex-start;\n}\n.tipseenWrapper .tipseenTitle {\n padding: var(--spacing-medium) var(--spacing-xl) 0 var(--spacing-medium);\n}\n.tipseenWrapper .tipseenContent {\n margin: 0;\n -webkit-font-smoothing: var(--font-smoothing-webkit);\n -moz-osx-font-smoothing: var(--font-smoothing-moz);\n}\n.tipseenWrapper .tipseenCloseButton {\n position: absolute;\n top: var(--spacing-small);\n right: var(--spacing-small);\n z-index: 2;\n}\n.tipseenWrapper .tipseenCloseButton.dark {\n color: var(--color-asphalt);\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=Tipseen.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={tipseenBasicContent:"tipseenBasicContent"};!function(e){const n="s_id-
|
|
1
|
+
var e={tipseenBasicContent:"tipseenBasicContent"};!function(e){const n="s_id-e688002d63b5_3_88_6";if("undefined"!=typeof document){const t=document.head||document.getElementsByTagName("head")[0];if(t.querySelector("#"+n))return;const i=document.createElement("style");i.id=n,t.firstChild?t.insertBefore(i,t.firstChild):t.appendChild(i),i.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[n]=e)}(".tipseenBasicContent {\n padding: var(--spacing-medium) 20px var(--spacing-large) 20px;\n display: flex;\n flex-direction: column;\n}\n.tipseenBasicContent:not(:first-child) {\n padding-top: 12px;\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TipseenBasicContent.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={buttons:"buttons",dismiss:"dismiss"};!function(e){const t="s_id-
|
|
1
|
+
var e={buttons:"buttons",dismiss:"dismiss"};!function(e){const t="s_id-91df242cd10d_3_88_6";if("undefined"!=typeof document){const n=document.head||document.getElementsByTagName("head")[0];if(n.querySelector("#"+t))return;const s=document.createElement("style");s.id=t,n.firstChild?n.insertBefore(s,n.firstChild):n.appendChild(s),s.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}(".buttons {\n margin-top: 20px;\n display: flex;\n justify-content: flex-end;\n}\n\n.dismiss {\n margin-right: var(--spacing-small);\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TipseenContent.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={tipseenImage:"tipseenImage"};!function(e){const t="s_id-
|
|
1
|
+
var e={tipseenImage:"tipseenImage"};!function(e){const t="s_id-5a749fe7aaee_3_88_6";if("undefined"!=typeof document){const n=document.head||document.getElementsByTagName("head")[0];if(n.querySelector("#"+t))return;const d=document.createElement("style");d.id=t,n.firstChild?n.insertBefore(d,n.firstChild):n.appendChild(d),d.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}(".tipseenImage {\n object-fit: cover;\n width: 100%;\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TipseenImage.module.scss.js.map
|
package/dist/mocked_classnames/src/components/Tipseen/TipseenMedia/TipseenMedia.module.scss.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={tipseenMedia:"tipseenMedia",colorInverted:"colorInverted"};!function(e){const n="s_id-
|
|
1
|
+
var e={tipseenMedia:"tipseenMedia",colorInverted:"colorInverted"};!function(e){const n="s_id-71e151b2b729_3_88_6";if("undefined"!=typeof document){const d=document.head||document.getElementsByTagName("head")[0];if(d.querySelector("#"+n))return;const r=document.createElement("style");r.id=n,d.firstChild?d.insertBefore(r,d.firstChild):d.appendChild(r),r.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[n]=e)}(".tipseenMedia {\n width: 100%;\n overflow: hidden;\n display: flex;\n border: 2px solid var(--primary-color);\n border-radius: var(--border-radius-medium);\n position: relative;\n z-index: 1;\n}\n\n.colorInverted {\n border-color: var(--inverted-color-background);\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TipseenMedia.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={title:"title"};!function(e){const t="s_id-
|
|
1
|
+
var e={title:"title"};!function(e){const t="s_id-52c2fd8cbf53_3_88_6";if("undefined"!=typeof document){const d=document.head||document.getElementsByTagName("head")[0];if(d.querySelector("#"+t))return;const n=document.createElement("style");n.id=t,d.firstChild?d.insertBefore(n,d.firstChild):d.appendChild(n),n.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}(".title {\n padding-right: var(--spacing-medium);\n padding-bottom: var(--spacing-xs);\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TipseenTitle.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={tipseenWizard:"tipseenWizard",tipseenWizardWizard:"tipseenWizardWizard"};!function(e){const i="s_id-
|
|
1
|
+
var e={tipseenWizard:"tipseenWizard",tipseenWizardWizard:"tipseenWizardWizard"};!function(e){const i="s_id-98eba0c83d1f_3_88_6";if("undefined"!=typeof document){const t=document.head||document.getElementsByTagName("head")[0];if(t.querySelector("#"+i))return;const d=document.createElement("style");d.id=i,t.firstChild?t.insertBefore(d,t.firstChild):t.appendChild(d),d.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[i]=e)}(".tipseenWizard {\n display: flex;\n flex-direction: column;\n}\n.tipseenWizardWizard {\n width: 100%;\n}");export{e as default};
|
|
2
2
|
//# sourceMappingURL=TipseenWizard.module.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as
|
|
1
|
+
import{slicedToArray as t,defineProperty as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as o}from"../../../_virtual/_tslib.js";import{camelCase as i}from"es-toolkit";import{getTestId as r,ComponentDefaultTestId as n}from"../../tests/testIds.js";import a from"classnames";import s,{useRef as l,useState as m,useMemo as c,useCallback as u,useEffect as d}from"react";import{createPortal as p}from"react-dom";import{CSSTransition as f}from"react-transition-group";import{Text as v}from"@vibe/typography/mockedClassNames";import{Loader as y}from"@vibe/loader/mockedClassNames";import{Flex as T}from"@vibe/layout/mockedClassNames";import{CloseSmall as h}from"@vibe/icons";import k from"./ToastLink/ToastLink.js";import N from"./ToastButton/ToastButton.js";import{ToastType as b,ToastActionType as g}from"./ToastConstants.js";import{getIcon as j}from"./ToastHelpers.js";import{NOOP as C}from"../../utils/function-utils.js";import{getStyle as E}from"../../helpers/typesciptCssModulesHelper.js";import{withStaticPropsWithoutForwardRef as x}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import A from"./Toast.module.scss.js";import{IconButton as O}from"@vibe/icon-button/mockedClassNames";import{Tooltip as w}from"@vibe/tooltip/mockedClassNames";import B from"../../hooks/usePrevious/index.js";var L=x((function(b){var g=b.open,x=void 0!==g&&g,L=b.loading,_=void 0!==L&&L,S=b.autoHideDuration,H=void 0===S?null:S,P=b.type,z=void 0===P?"normal":P,I=b.icon,W=b.hideIcon,D=void 0!==W&&W,M=b.action,R=b.actions,U=b.children,q=b.closeable,F=void 0===q||q,G=b.onClose,J=void 0===G?C:G,K=b.className,Q=b.id,V=b.closeButtonAriaLabel,X=void 0===V?"Close":V,Y=b.inline,Z=void 0!==Y&&Y,$=b["data-testid"],tt=l(null),et=l(null),ot=l(null),it=m(!1),rt=t(it,2),nt=rt[0],at=rt[1],st=B(null==R?void 0:R.length),lt=c((function(){return R?R.filter((function(t){return"link"===t.type})).map((function(t){var e=o(t,["type"]);return s.createElement(k,Object.assign({key:e.href,className:A.actionLink},e))})):null}),[R]),mt=c((function(){return void 0!==st&&(null==R?void 0:R.length)!==st}),[R,st]),ct=c((function(){return R?R.filter((function(t){return"button"===t.type})).map((function(t,i){var r=t.content,n=o(t,["type","content"]);return s.createElement(N,Object.assign({key:"alert-button-".concat(i),className:a(A.actionButton,e({},A.withTransition,mt)),color:"dark"===z?"fixed-light":"primary"},n),r)})):null}),[R,mt,z]),ut=c((function(){return a(A.toast,E(A,i("type-"+z)),e({},A.inline,Z),K)}),[z,Z,K]),dt=u((function(){J&&J()}),[J]),pt=l(),ft=u((function(t){J&&null!=t&&(clearTimeout(pt.current),pt.current=setTimeout((function(){dt()}),t))}),[dt,J]);d((function(){return x&&H>0&&ft(H),function(){clearTimeout(pt.current)}}),[x,H,ft]),d((function(){var t=ot.current;t&&at(t.scrollWidth>t.clientWidth)}),[U,x]);var vt=!D&&j(z,I),yt=u((function(t){var e=t.style.width;t.style.width="auto";var o=getComputedStyle(t).width;t.style.width=e,t.style.width=o}),[]);d((function(){tt.current&&yt(tt.current)}),[U,yt]);var Tt=s.createElement(w,{content:nt&&"string"==typeof U?U:void 0,position:"top"},s.createElement(v,{ref:et,id:Q,"data-testid":$||r(n.TOAST,Q),type:"text2",element:"div",color:"dark"===z?"fixedLight":"primary",className:ut,role:"alert","aria-live":"polite"},vt&&s.createElement("div",{className:a(A.icon)},vt),s.createElement(T,{align:"center",gap:"medium",className:A.content},s.createElement(T,{gap:"medium","data-testid":r(n.TOAST_CONTENT),className:A.textContent},s.createElement("span",{ref:ot,className:A.message},U),lt),(ct||M)&&(ct||M),_&&s.createElement(y,{size:"xs"})),F&&s.createElement(O,{className:a(A.closeButton),onClick:dt,size:"xs",kind:"tertiary",color:"dark"===z?"fixed-light":"primary",ariaLabel:X,"data-testid":r(n.TOAST_CLOSE_BUTTON),icon:h,hideTooltip:!0})));return Z?x?Tt:null:p(s.createElement(f,{in:x,nodeRef:et,classNames:{enterActive:A.enterActive,exitActive:A.exitActive},timeout:400,unmountOnExit:!0},Tt),document.body)}),{types:b,actionTypes:g});export{L as default};
|
|
2
2
|
//# sourceMappingURL=Toast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.js","sources":["../../../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { camelCase } from \"es-toolkit\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport React, { type ReactElement, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { type IconSubComponentProps } from \"@vibe/icon\";\nimport { Text } from \"@vibe/typography\";\nimport { Loader } from \"@vibe/loader\";\nimport { Flex } from \"@vibe/layout\";\nimport { CloseSmall } from \"@vibe/icons\";\nimport ToastLink from \"./ToastLink/ToastLink\";\nimport ToastButton from \"./ToastButton/ToastButton\";\nimport { ToastActionType as ToastActionTypeEnum, ToastType as ToastTypeEnum } from \"./ToastConstants\";\nimport { type ToastType, type ToastAction } from \"./Toast.types\";\nimport { getIcon } from \"./ToastHelpers\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { type VibeComponentProps, withStaticPropsWithoutForwardRef } from \"../../types\";\nimport styles from \"./Toast.module.scss\";\nimport { IconButton } from \"@vibe/icon-button\";\nimport usePrevious from \"../../hooks/usePrevious\";\n\nexport interface ToastProps extends VibeComponentProps {\n /**\n * The actions available in the toast.\n */\n actions?: ToastAction[];\n /**\n * If true, the toast is open (visible).\n */\n open?: boolean;\n /**\n * If true, displays a loading indicator inside the toast.\n */\n loading?: boolean;\n /**\n * The type of toast.\n */\n type?: ToastType;\n /**\n * The icon displayed in the toast.\n */\n icon?: string | React.FC<IconSubComponentProps> | null;\n /**\n * If true, hides the toast icon.\n */\n hideIcon?: boolean;\n /**\n * The action element displayed in the toast.\n */\n action?: JSX.Element;\n /**\n * If false, hides the close button.\n */\n closeable?: boolean;\n /**\n * Callback fired when the toast is closed.\n */\n onClose?: () => void;\n /**\n * The number of milliseconds before the toast automatically closes.\n * (0 or null disables auto-close behavior).\n */\n autoHideDuration?: number;\n /**\n * The content displayed inside the toast.\n */\n children?: ReactElement | ReactElement[] | string;\n /**\n * The aria-label for the close button.\n */\n closeButtonAriaLabel?: string;\n}\n\nconst Toast = ({\n open = false,\n loading = false,\n autoHideDuration = null,\n type = \"normal\",\n icon,\n hideIcon = false,\n action: deprecatedAction,\n actions,\n children,\n closeable = true,\n onClose = NOOP,\n className,\n id,\n closeButtonAriaLabel = \"Close\",\n \"data-testid\": dataTestId\n}: ToastProps) => {\n const ref = useRef(null);\n const nodeRef = useRef<HTMLDivElement>(null);\n const prevActions = usePrevious(actions?.length);\n const toastLinks = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"link\")\n .map(({ type: _type, ...otherProps }) => (\n <ToastLink key={otherProps.href} className={styles.actionLink} {...otherProps} />\n ))\n : null;\n }, [actions]);\n\n const shouldShowButtonTransition = useMemo(() => {\n return prevActions !== undefined && actions?.length !== prevActions;\n }, [actions, prevActions]);\n\n const toastButtons: JSX.Element[] | null = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"button\")\n .map(({ type: _type, content, ...otherProps }, index) => (\n <ToastButton\n key={`alert-button-${index}`}\n className={cx(styles.actionButton, { [styles.withTransition]: shouldShowButtonTransition })}\n {...otherProps}\n >\n {content}\n </ToastButton>\n ))\n : null;\n }, [actions, shouldShowButtonTransition]);\n\n const classNames = useMemo(\n () => cx(styles.toast, getStyle(styles, camelCase(\"type-\" + type)), className),\n [type, className]\n );\n\n const handleClose = useCallback(() => {\n if (onClose) {\n onClose();\n }\n }, [onClose]);\n\n /* Timer */\n const timerAutoHide = useRef<NodeJS.Timeout>();\n const setAutoHideTimer = useCallback(\n (duration: number) => {\n if (!onClose || duration == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n handleClose();\n }, duration);\n },\n [handleClose, onClose]\n );\n\n useEffect(() => {\n if (open && autoHideDuration > 0) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n const iconElement = !hideIcon && getIcon(type, icon);\n\n // https://n12v.com/css-transition-to-from-auto/\n const recalculateElementWidth = useCallback((element: HTMLElement) => {\n const prevWidth = element.style.width;\n element.style.width = \"auto\";\n const endWidth = getComputedStyle(element).width;\n element.style.width = prevWidth;\n element.offsetWidth; // force repaint\n element.style.width = endWidth;\n }, []);\n\n useEffect(() => {\n if (ref.current) {\n recalculateElementWidth(ref.current);\n }\n }, [children, recalculateElementWidth]);\n\n return (\n <CSSTransition\n in={open}\n nodeRef={nodeRef}\n classNames={{ enterActive: styles.enterActive, exitActive: styles.exitActive }}\n timeout={400}\n unmountOnExit\n >\n <Text\n ref={nodeRef}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TOAST, id)}\n type=\"text2\"\n element=\"div\"\n color=\"fixedLight\"\n className={classNames}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {iconElement && <div className={cx(styles.icon)}>{iconElement}</div>}\n <Flex align=\"center\" gap=\"large\" className={styles.content}>\n <Flex\n gap=\"medium\"\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CONTENT)}\n className={styles.textContent}\n >\n <span>{children}</span>\n {toastLinks}\n </Flex>\n {(toastButtons || deprecatedAction) && (toastButtons || deprecatedAction)}\n {loading && <Loader size=\"xs\" />}\n </Flex>\n {closeable && (\n <IconButton\n className={cx(styles.closeButton)}\n onClick={handleClose}\n size=\"small\"\n kind=\"tertiary\"\n color=\"fixed-light\"\n ariaLabel={closeButtonAriaLabel}\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CLOSE_BUTTON)}\n icon={CloseSmall}\n hideTooltip\n />\n )}\n </Text>\n </CSSTransition>\n );\n};\n\ninterface ToastStaticProps {\n types: typeof ToastTypeEnum;\n actionTypes: typeof ToastActionTypeEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<ToastProps, ToastStaticProps>(Toast, {\n types: ToastTypeEnum,\n actionTypes: ToastActionTypeEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$open","open","_ref$loading","loading","_ref$autoHideDuration","autoHideDuration","_ref$type","type","icon","_ref$hideIcon","hideIcon","deprecatedAction","action","actions","children","_ref$closeable","closeable","_ref$onClose","onClose","NOOP","className","id","_ref$closeButtonAriaL","closeButtonAriaLabel","dataTestId","ref","useRef","nodeRef","prevActions","usePrevious","length","toastLinks","useMemo","filter","map","_a","otherProps","__rest","React","createElement","ToastLink","key","href","styles","actionLink","shouldShowButtonTransition","undefined","toastButtons","index","content","ToastButton","Object","assign","concat","cx","actionButton","_defineProperty","withTransition","classNames","toast","getStyle","camelCase","handleClose","useCallback","timerAutoHide","setAutoHideTimer","duration","clearTimeout","current","setTimeout","useEffect","iconElement","getIcon","recalculateElementWidth","element","prevWidth","style","width","endWidth","getComputedStyle","CSSTransition","in","enterActive","exitActive","timeout","unmountOnExit","Text","getTestId","ComponentDefaultTestId","TOAST","color","role","Flex","align","gap","TOAST_CONTENT","textContent","Loader","size","IconButton","closeButton","onClick","kind","ariaLabel","TOAST_CLOSE_BUTTON","CloseSmall","hideTooltip","types","ToastTypeEnum","actionTypes","ToastActionTypeEnum"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Toast.js","sources":["../../../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { camelCase } from \"es-toolkit\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport React, { type ReactElement, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { type IconSubComponentProps } from \"@vibe/icon\";\nimport { Text } from \"@vibe/typography\";\nimport { Loader } from \"@vibe/loader\";\nimport { Flex } from \"@vibe/layout\";\nimport { CloseSmall } from \"@vibe/icons\";\nimport ToastLink from \"./ToastLink/ToastLink\";\nimport ToastButton from \"./ToastButton/ToastButton\";\nimport { ToastActionType as ToastActionTypeEnum, ToastType as ToastTypeEnum } from \"./ToastConstants\";\nimport { type ToastType, type ToastAction } from \"./Toast.types\";\nimport { getIcon } from \"./ToastHelpers\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { type VibeComponentProps, withStaticPropsWithoutForwardRef } from \"../../types\";\nimport styles from \"./Toast.module.scss\";\nimport { IconButton } from \"@vibe/icon-button\";\nimport { Tooltip } from \"@vibe/tooltip\";\nimport usePrevious from \"../../hooks/usePrevious\";\n\nexport interface ToastProps extends VibeComponentProps {\n /**\n * The actions available in the toast.\n */\n actions?: ToastAction[];\n /**\n * If true, the toast is open (visible).\n */\n open?: boolean;\n /**\n * If true, displays a loading indicator inside the toast.\n */\n loading?: boolean;\n /**\n * The type of toast.\n */\n type?: ToastType;\n /**\n * The icon displayed in the toast.\n */\n icon?: string | React.FC<IconSubComponentProps> | null;\n /**\n * If true, hides the toast icon.\n */\n hideIcon?: boolean;\n /**\n * The action element displayed in the toast.\n */\n action?: JSX.Element;\n /**\n * If false, hides the close button.\n */\n closeable?: boolean;\n /**\n * Callback fired when the toast is closed.\n */\n onClose?: () => void;\n /**\n * The number of milliseconds before the toast automatically closes.\n * (0 or null disables auto-close behavior).\n */\n autoHideDuration?: number;\n /**\n * The content displayed inside the toast.\n */\n children?: ReactElement | ReactElement[] | string;\n /**\n * The aria-label for the close button.\n */\n closeButtonAriaLabel?: string;\n /**\n * If true, renders the toast in place (for gallery previews) instead of fixed at the top.\n */\n inline?: boolean;\n}\n\nconst Toast = ({\n open = false,\n loading = false,\n autoHideDuration = null,\n type = \"normal\",\n icon,\n hideIcon = false,\n action: deprecatedAction,\n actions,\n children,\n closeable = true,\n onClose = NOOP,\n className,\n id,\n closeButtonAriaLabel = \"Close\",\n inline = false,\n \"data-testid\": dataTestId\n}: ToastProps) => {\n const ref = useRef(null);\n const nodeRef = useRef<HTMLDivElement>(null);\n const messageRef = useRef<HTMLSpanElement>(null);\n const [isMessageTruncated, setIsMessageTruncated] = useState(false);\n const prevActions = usePrevious(actions?.length);\n const toastLinks = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"link\")\n .map(({ type: _type, ...otherProps }) => (\n <ToastLink key={otherProps.href} className={styles.actionLink} {...otherProps} />\n ))\n : null;\n }, [actions]);\n\n const shouldShowButtonTransition = useMemo(() => {\n return prevActions !== undefined && actions?.length !== prevActions;\n }, [actions, prevActions]);\n\n const toastButtons: JSX.Element[] | null = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"button\")\n .map(({ type: _type, content, ...otherProps }, index) => (\n <ToastButton\n key={`alert-button-${index}`}\n className={cx(styles.actionButton, { [styles.withTransition]: shouldShowButtonTransition })}\n color={type === \"dark\" ? \"fixed-light\" : \"primary\"}\n {...otherProps}\n >\n {content}\n </ToastButton>\n ))\n : null;\n }, [actions, shouldShowButtonTransition, type]);\n\n const classNames = useMemo(\n () => cx(styles.toast, getStyle(styles, camelCase(\"type-\" + type)), { [styles.inline]: inline }, className),\n [type, inline, className]\n );\n\n const handleClose = useCallback(() => {\n if (onClose) {\n onClose();\n }\n }, [onClose]);\n\n /* Timer */\n const timerAutoHide = useRef<NodeJS.Timeout>();\n const setAutoHideTimer = useCallback(\n (duration: number) => {\n if (!onClose || duration == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n handleClose();\n }, duration);\n },\n [handleClose, onClose]\n );\n\n useEffect(() => {\n if (open && autoHideDuration > 0) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n useEffect(() => {\n const el = messageRef.current;\n if (el) {\n setIsMessageTruncated(el.scrollWidth > el.clientWidth);\n }\n }, [children, open]);\n\n const iconElement = !hideIcon && getIcon(type, icon);\n\n // https://n12v.com/css-transition-to-from-auto/\n const recalculateElementWidth = useCallback((element: HTMLElement) => {\n const prevWidth = element.style.width;\n element.style.width = \"auto\";\n const endWidth = getComputedStyle(element).width;\n element.style.width = prevWidth;\n element.offsetWidth; // force repaint\n element.style.width = endWidth;\n }, []);\n\n useEffect(() => {\n if (ref.current) {\n recalculateElementWidth(ref.current);\n }\n }, [children, recalculateElementWidth]);\n\n const tooltipContent = isMessageTruncated && typeof children === \"string\" ? children : undefined;\n\n const toastElement = (\n <Tooltip content={tooltipContent} position=\"top\">\n <Text\n ref={nodeRef}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TOAST, id)}\n type=\"text2\"\n element=\"div\"\n color={type === \"dark\" ? \"fixedLight\" : \"primary\"}\n className={classNames}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {iconElement && <div className={cx(styles.icon)}>{iconElement}</div>}\n <Flex align=\"center\" gap=\"medium\" className={styles.content}>\n <Flex\n gap=\"medium\"\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CONTENT)}\n className={styles.textContent}\n >\n <span ref={messageRef} className={styles.message}>\n {children}\n </span>\n {toastLinks}\n </Flex>\n {(toastButtons || deprecatedAction) && (toastButtons || deprecatedAction)}\n {loading && <Loader size=\"xs\" />}\n </Flex>\n {closeable && (\n <IconButton\n className={cx(styles.closeButton)}\n onClick={handleClose}\n size=\"xs\"\n kind=\"tertiary\"\n color={type === \"dark\" ? \"fixed-light\" : \"primary\"}\n ariaLabel={closeButtonAriaLabel}\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CLOSE_BUTTON)}\n icon={CloseSmall}\n hideTooltip\n />\n )}\n </Text>\n </Tooltip>\n );\n\n // Gallery / static previews: render in place, skip enter/exit animation.\n if (inline) {\n return open ? toastElement : null;\n }\n\n // Portal to body so Toast always stacks above app chrome (search, sticky headers).\n return createPortal(\n <CSSTransition\n in={open}\n nodeRef={nodeRef}\n classNames={{ enterActive: styles.enterActive, exitActive: styles.exitActive }}\n timeout={400}\n unmountOnExit\n >\n {toastElement}\n </CSSTransition>,\n document.body\n );\n};\n\ninterface ToastStaticProps {\n types: typeof ToastTypeEnum;\n actionTypes: typeof ToastActionTypeEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<ToastProps, ToastStaticProps>(Toast, {\n types: ToastTypeEnum,\n actionTypes: ToastActionTypeEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$open","open","_ref$loading","loading","_ref$autoHideDuration","autoHideDuration","_ref$type","type","icon","_ref$hideIcon","hideIcon","deprecatedAction","action","actions","children","_ref$closeable","closeable","_ref$onClose","onClose","NOOP","className","id","_ref$closeButtonAriaL","closeButtonAriaLabel","_ref$inline","inline","dataTestId","ref","useRef","nodeRef","messageRef","_useState","useState","_useState2","_slicedToArray","isMessageTruncated","setIsMessageTruncated","prevActions","usePrevious","length","toastLinks","useMemo","filter","map","_a","otherProps","__rest","React","createElement","ToastLink","key","href","styles","actionLink","shouldShowButtonTransition","undefined","toastButtons","index","content","ToastButton","Object","assign","concat","cx","actionButton","_defineProperty","withTransition","color","classNames","toast","getStyle","camelCase","handleClose","useCallback","timerAutoHide","setAutoHideTimer","duration","clearTimeout","current","setTimeout","useEffect","el","scrollWidth","clientWidth","iconElement","getIcon","recalculateElementWidth","element","prevWidth","style","width","endWidth","getComputedStyle","toastElement","Tooltip","position","Text","getTestId","ComponentDefaultTestId","TOAST","role","Flex","align","gap","TOAST_CONTENT","textContent","message","Loader","size","IconButton","closeButton","onClick","kind","ariaLabel","TOAST_CLOSE_BUTTON","CloseSmall","hideTooltip","createPortal","CSSTransition","in","enterActive","exitActive","timeout","unmountOnExit","document","body","types","ToastTypeEnum","actionTypes","ToastActionTypeEnum"],"mappings":"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"}
|