@vibe/core 3.50.1-alpha-b401f.0 → 3.50.1-alpha-b92cc.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.
Files changed (220) hide show
  1. package/dist/components/AlertBanner/AlertBanner.d.ts +1 -1
  2. package/dist/components/AttentionBox/AttentionBox.d.ts +1 -1
  3. package/dist/components/Avatar/Avatar.d.ts +1 -1
  4. package/dist/components/Avatar/AvatarBadge.d.ts +1 -1
  5. package/dist/components/Avatar/AvatarContent.d.ts +1 -1
  6. package/dist/components/Badge/Badge.d.ts +1 -1
  7. package/dist/components/Badge/Indicator/Indicator.d.ts +1 -1
  8. package/dist/components/Box/Box.d.ts +1 -1
  9. package/dist/components/BreadcrumbsBar/BreadcrumbsBar.d.ts +1 -1
  10. package/dist/components/Button/Button.d.ts +1 -1
  11. package/dist/components/ButtonGroup/ButtonGroup.d.ts +1 -1
  12. package/dist/components/Chips/Chips.d.ts +1 -1
  13. package/dist/components/ColorPicker/ColorPicker.d.ts +1 -1
  14. package/dist/components/ColorPicker/components/ColorPickerContent/ColorPickerContent.d.ts +1 -1
  15. package/dist/components/Combobox/Combobox.d.ts +1 -1
  16. package/dist/components/Combobox/components/ComboboxOption/ComboboxOption.d.ts +1 -1
  17. package/dist/components/Counter/Counter.d.ts +1 -1
  18. package/dist/components/DialogContentContainer/DialogContentContainer.d.ts +1 -1
  19. package/dist/components/Divider/Divider.d.ts +1 -1
  20. package/dist/components/Dropdown/Dropdown.d.ts +1 -1
  21. package/dist/components/DropdownNew/Dropdown.types.d.ts +42 -16
  22. package/dist/components/DropdownNew/hooks/useDropdownCombobox.d.ts +1 -1
  23. package/dist/components/DropdownNew/hooks/useDropdownFiltering.d.ts +1 -1
  24. package/dist/components/DropdownNew/hooks/useDropdownMultiCombobox.d.ts +1 -1
  25. package/dist/components/DropdownNew/utils/dropdownUtils.d.ts +1 -1
  26. package/dist/components/EditableHeading/EditableHeading.d.ts +1 -1
  27. package/dist/components/EditableText/EditableText.d.ts +1 -1
  28. package/dist/components/Flex/Flex.d.ts +1 -1
  29. package/dist/components/FormattedNumber/FormattedNumber.d.ts +1 -1
  30. package/dist/components/Heading/Heading.d.ts +1 -1
  31. package/dist/components/Icon/Icon.d.ts +1 -1
  32. package/dist/components/IconButton/IconButton.d.ts +1 -1
  33. package/dist/components/Label/Label.d.ts +1 -1
  34. package/dist/components/LegacyModal/LegacyModal.d.ts +1 -1
  35. package/dist/components/Link/Link.d.ts +1 -1
  36. package/dist/components/List/List.d.ts +1 -1
  37. package/dist/components/ListItem/ListItem.d.ts +1 -1
  38. package/dist/components/ListItemAvatar/ListItemAvatar.d.ts +1 -1
  39. package/dist/components/ListItemIcon/ListItemIcon.d.ts +1 -1
  40. package/dist/components/Loader/Loader.d.ts +1 -1
  41. package/dist/components/Menu/Menu/Menu.d.ts +1 -1
  42. package/dist/components/Menu/MenuItem/MenuItem.d.ts +1 -1
  43. package/dist/components/Menu/MenuItemButton/MenuItemButton.d.ts +1 -1
  44. package/dist/components/Menu/MenuTitle/MenuTitle.d.ts +1 -1
  45. package/dist/components/MenuButton/MenuButton.d.ts +1 -1
  46. package/dist/components/MultiStepIndicator/MultiStepIndicator.d.ts +1 -1
  47. package/dist/components/ProgressBars/LinearProgressBar/LinearProgressBar.d.ts +1 -1
  48. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  49. package/dist/components/Slider/Slider.d.ts +1 -1
  50. package/dist/components/Slider/SliderInfix.d.ts +1 -1
  51. package/dist/components/SplitButton/SplitButton.d.ts +1 -1
  52. package/dist/components/Steps/Steps.d.ts +1 -1
  53. package/dist/components/Table/Table/Table.d.ts +1 -1
  54. package/dist/components/Tabs/TabPanels/TabPanels.d.ts +1 -1
  55. package/dist/components/Text/Text.d.ts +1 -1
  56. package/dist/components/TextField/TextField.d.ts +1 -1
  57. package/dist/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  58. package/dist/components/Tipseen/Tipseen.d.ts +1 -1
  59. package/dist/components/Toast/Toast.d.ts +1 -1
  60. package/dist/hooks/useGridKeyboardNavigation/gridKeyboardNavigationHelper.d.ts +1 -2
  61. package/dist/hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.d.ts +1 -3
  62. package/dist/metadata.json +19677 -3193
  63. package/dist/mocked_classnames/components/AlertBanner/AlertBanner.d.ts +1 -1
  64. package/dist/mocked_classnames/components/AttentionBox/AttentionBox.d.ts +1 -1
  65. package/dist/mocked_classnames/components/Avatar/Avatar.d.ts +1 -1
  66. package/dist/mocked_classnames/components/Avatar/AvatarBadge.d.ts +1 -1
  67. package/dist/mocked_classnames/components/Avatar/AvatarContent.d.ts +1 -1
  68. package/dist/mocked_classnames/components/Badge/Badge.d.ts +1 -1
  69. package/dist/mocked_classnames/components/Badge/Indicator/Indicator.d.ts +1 -1
  70. package/dist/mocked_classnames/components/Box/Box.d.ts +1 -1
  71. package/dist/mocked_classnames/components/BreadcrumbsBar/BreadcrumbsBar.d.ts +1 -1
  72. package/dist/mocked_classnames/components/Button/Button.d.ts +1 -1
  73. package/dist/mocked_classnames/components/ButtonGroup/ButtonGroup.d.ts +1 -1
  74. package/dist/mocked_classnames/components/Chips/Chips.d.ts +1 -1
  75. package/dist/mocked_classnames/components/ColorPicker/ColorPicker.d.ts +1 -1
  76. package/dist/mocked_classnames/components/ColorPicker/components/ColorPickerContent/ColorPickerContent.d.ts +1 -1
  77. package/dist/mocked_classnames/components/Combobox/Combobox.d.ts +1 -1
  78. package/dist/mocked_classnames/components/Combobox/components/ComboboxOption/ComboboxOption.d.ts +1 -1
  79. package/dist/mocked_classnames/components/Counter/Counter.d.ts +1 -1
  80. package/dist/mocked_classnames/components/DialogContentContainer/DialogContentContainer.d.ts +1 -1
  81. package/dist/mocked_classnames/components/Divider/Divider.d.ts +1 -1
  82. package/dist/mocked_classnames/components/Dropdown/Dropdown.d.ts +1 -1
  83. package/dist/mocked_classnames/components/DropdownNew/Dropdown.types.d.ts +42 -16
  84. package/dist/mocked_classnames/components/DropdownNew/hooks/useDropdownCombobox.d.ts +1 -1
  85. package/dist/mocked_classnames/components/DropdownNew/hooks/useDropdownFiltering.d.ts +1 -1
  86. package/dist/mocked_classnames/components/DropdownNew/hooks/useDropdownMultiCombobox.d.ts +1 -1
  87. package/dist/mocked_classnames/components/DropdownNew/utils/dropdownUtils.d.ts +1 -1
  88. package/dist/mocked_classnames/components/EditableHeading/EditableHeading.d.ts +1 -1
  89. package/dist/mocked_classnames/components/EditableText/EditableText.d.ts +1 -1
  90. package/dist/mocked_classnames/components/Flex/Flex.d.ts +1 -1
  91. package/dist/mocked_classnames/components/FormattedNumber/FormattedNumber.d.ts +1 -1
  92. package/dist/mocked_classnames/components/Heading/Heading.d.ts +1 -1
  93. package/dist/mocked_classnames/components/Icon/Icon.d.ts +1 -1
  94. package/dist/mocked_classnames/components/IconButton/IconButton.d.ts +1 -1
  95. package/dist/mocked_classnames/components/Label/Label.d.ts +1 -1
  96. package/dist/mocked_classnames/components/LegacyModal/LegacyModal.d.ts +1 -1
  97. package/dist/mocked_classnames/components/Link/Link.d.ts +1 -1
  98. package/dist/mocked_classnames/components/List/List.d.ts +1 -1
  99. package/dist/mocked_classnames/components/ListItem/ListItem.d.ts +1 -1
  100. package/dist/mocked_classnames/components/ListItemAvatar/ListItemAvatar.d.ts +1 -1
  101. package/dist/mocked_classnames/components/ListItemIcon/ListItemIcon.d.ts +1 -1
  102. package/dist/mocked_classnames/components/Loader/Loader.d.ts +1 -1
  103. package/dist/mocked_classnames/components/Menu/Menu/Menu.d.ts +1 -1
  104. package/dist/mocked_classnames/components/Menu/MenuItem/MenuItem.d.ts +1 -1
  105. package/dist/mocked_classnames/components/Menu/MenuItemButton/MenuItemButton.d.ts +1 -1
  106. package/dist/mocked_classnames/components/Menu/MenuTitle/MenuTitle.d.ts +1 -1
  107. package/dist/mocked_classnames/components/MenuButton/MenuButton.d.ts +1 -1
  108. package/dist/mocked_classnames/components/MultiStepIndicator/MultiStepIndicator.d.ts +1 -1
  109. package/dist/mocked_classnames/components/ProgressBars/LinearProgressBar/LinearProgressBar.d.ts +1 -1
  110. package/dist/mocked_classnames/components/Skeleton/Skeleton.d.ts +1 -1
  111. package/dist/mocked_classnames/components/Slider/Slider.d.ts +1 -1
  112. package/dist/mocked_classnames/components/Slider/SliderInfix.d.ts +1 -1
  113. package/dist/mocked_classnames/components/SplitButton/SplitButton.d.ts +1 -1
  114. package/dist/mocked_classnames/components/Steps/Steps.d.ts +1 -1
  115. package/dist/mocked_classnames/components/Table/Table/Table.d.ts +1 -1
  116. package/dist/mocked_classnames/components/Tabs/TabPanels/TabPanels.d.ts +1 -1
  117. package/dist/mocked_classnames/components/Text/Text.d.ts +1 -1
  118. package/dist/mocked_classnames/components/TextField/TextField.d.ts +1 -1
  119. package/dist/mocked_classnames/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  120. package/dist/mocked_classnames/components/Tipseen/Tipseen.d.ts +1 -1
  121. package/dist/mocked_classnames/components/Toast/Toast.d.ts +1 -1
  122. package/dist/mocked_classnames/hooks/useGridKeyboardNavigation/gridKeyboardNavigationHelper.d.ts +1 -2
  123. package/dist/mocked_classnames/hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.d.ts +1 -3
  124. package/dist/mocked_classnames/src/components/AttentionBox/AttentionBox.js +1 -1
  125. package/dist/mocked_classnames/src/components/AttentionBox/AttentionBox.js.map +1 -1
  126. package/dist/mocked_classnames/src/components/Avatar/Avatar.js +1 -1
  127. package/dist/mocked_classnames/src/components/Avatar/Avatar.js.map +1 -1
  128. package/dist/mocked_classnames/src/components/Avatar/AvatarBadge.js +1 -1
  129. package/dist/mocked_classnames/src/components/Avatar/AvatarBadge.js.map +1 -1
  130. package/dist/mocked_classnames/src/components/Avatar/AvatarContent.js +1 -1
  131. package/dist/mocked_classnames/src/components/Avatar/AvatarContent.js.map +1 -1
  132. package/dist/mocked_classnames/src/components/Badge/Indicator/Indicator.js +1 -1
  133. package/dist/mocked_classnames/src/components/Badge/Indicator/Indicator.js.map +1 -1
  134. package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbsBar.js +1 -1
  135. package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbsBar.js.map +1 -1
  136. package/dist/mocked_classnames/src/components/Combobox/components/ComboboxOption/ComboboxOption.js +1 -1
  137. package/dist/mocked_classnames/src/components/Combobox/components/ComboboxOption/ComboboxOption.js.map +1 -1
  138. package/dist/mocked_classnames/src/components/Counter/Counter.js +1 -1
  139. package/dist/mocked_classnames/src/components/Counter/Counter.js.map +1 -1
  140. package/dist/mocked_classnames/src/components/Divider/Divider.js +1 -1
  141. package/dist/mocked_classnames/src/components/Divider/Divider.js.map +1 -1
  142. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModal.js +1 -1
  143. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModal.js.map +1 -1
  144. package/dist/mocked_classnames/src/components/Menu/MenuItemButton/MenuItemButton.js +1 -1
  145. package/dist/mocked_classnames/src/components/Menu/MenuItemButton/MenuItemButton.js.map +1 -1
  146. package/dist/mocked_classnames/src/components/Menu/MenuTitle/MenuTitle.js +1 -1
  147. package/dist/mocked_classnames/src/components/Menu/MenuTitle/MenuTitle.js.map +1 -1
  148. package/dist/mocked_classnames/src/components/Skeleton/Skeleton.js +1 -1
  149. package/dist/mocked_classnames/src/components/Skeleton/Skeleton.js.map +1 -1
  150. package/dist/mocked_classnames/src/components/Slider/SliderInfix.js +1 -1
  151. package/dist/mocked_classnames/src/components/Slider/SliderInfix.js.map +1 -1
  152. package/dist/mocked_classnames/src/components/SplitButton/SplitButton.js +1 -1
  153. package/dist/mocked_classnames/src/components/SplitButton/SplitButton.js.map +1 -1
  154. package/dist/mocked_classnames/src/components/Tabs/Tab/Tab.js +1 -1
  155. package/dist/mocked_classnames/src/components/Tabs/Tab/Tab.js.map +1 -1
  156. package/dist/mocked_classnames/src/components/Tabs/TabList/TabList.js +1 -1
  157. package/dist/mocked_classnames/src/components/Tabs/TabList/TabList.js.map +1 -1
  158. package/dist/mocked_classnames/src/components/TextField/TextField.js +1 -1
  159. package/dist/mocked_classnames/src/components/TextField/TextField.js.map +1 -1
  160. package/dist/mocked_classnames/src/components/ThemeProvider/ThemeProvider.js +1 -1
  161. package/dist/mocked_classnames/src/components/ThemeProvider/ThemeProvider.js.map +1 -1
  162. package/dist/mocked_classnames/src/components/Toast/Toast.js +1 -1
  163. package/dist/mocked_classnames/src/components/Toast/Toast.js.map +1 -1
  164. package/dist/mocked_classnames/src/hooks/useGridKeyboardNavigation/gridKeyboardNavigationHelper.js +1 -1
  165. package/dist/mocked_classnames/src/hooks/useGridKeyboardNavigation/gridKeyboardNavigationHelper.js.map +1 -1
  166. package/dist/mocked_classnames/src/hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js +1 -1
  167. package/dist/mocked_classnames/src/hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js.map +1 -1
  168. package/dist/mocked_classnames/src/index.js +1 -1
  169. package/dist/mocked_classnames/src/types/withStaticProps.js +1 -1
  170. package/dist/mocked_classnames/src/types/withStaticProps.js.map +1 -1
  171. package/dist/mocked_classnames/types/withStaticProps.d.ts +2 -2
  172. package/dist/src/components/AttentionBox/AttentionBox.js +1 -1
  173. package/dist/src/components/AttentionBox/AttentionBox.js.map +1 -1
  174. package/dist/src/components/Avatar/Avatar.js +1 -1
  175. package/dist/src/components/Avatar/Avatar.js.map +1 -1
  176. package/dist/src/components/Avatar/AvatarBadge.js +1 -1
  177. package/dist/src/components/Avatar/AvatarBadge.js.map +1 -1
  178. package/dist/src/components/Avatar/AvatarContent.js +1 -1
  179. package/dist/src/components/Avatar/AvatarContent.js.map +1 -1
  180. package/dist/src/components/Badge/Indicator/Indicator.js +1 -1
  181. package/dist/src/components/Badge/Indicator/Indicator.js.map +1 -1
  182. package/dist/src/components/BreadcrumbsBar/BreadcrumbsBar.js +1 -1
  183. package/dist/src/components/BreadcrumbsBar/BreadcrumbsBar.js.map +1 -1
  184. package/dist/src/components/Combobox/components/ComboboxOption/ComboboxOption.js +1 -1
  185. package/dist/src/components/Combobox/components/ComboboxOption/ComboboxOption.js.map +1 -1
  186. package/dist/src/components/Counter/Counter.js +1 -1
  187. package/dist/src/components/Counter/Counter.js.map +1 -1
  188. package/dist/src/components/Divider/Divider.js +1 -1
  189. package/dist/src/components/Divider/Divider.js.map +1 -1
  190. package/dist/src/components/LegacyModal/LegacyModal.js +1 -1
  191. package/dist/src/components/LegacyModal/LegacyModal.js.map +1 -1
  192. package/dist/src/components/Menu/MenuItemButton/MenuItemButton.js +1 -1
  193. package/dist/src/components/Menu/MenuItemButton/MenuItemButton.js.map +1 -1
  194. package/dist/src/components/Menu/MenuTitle/MenuTitle.js +1 -1
  195. package/dist/src/components/Menu/MenuTitle/MenuTitle.js.map +1 -1
  196. package/dist/src/components/Skeleton/Skeleton.js +1 -1
  197. package/dist/src/components/Skeleton/Skeleton.js.map +1 -1
  198. package/dist/src/components/Slider/SliderInfix.js +1 -1
  199. package/dist/src/components/Slider/SliderInfix.js.map +1 -1
  200. package/dist/src/components/SplitButton/SplitButton.js +1 -1
  201. package/dist/src/components/SplitButton/SplitButton.js.map +1 -1
  202. package/dist/src/components/Tabs/Tab/Tab.js +1 -1
  203. package/dist/src/components/Tabs/Tab/Tab.js.map +1 -1
  204. package/dist/src/components/Tabs/TabList/TabList.js +1 -1
  205. package/dist/src/components/Tabs/TabList/TabList.js.map +1 -1
  206. package/dist/src/components/TextField/TextField.js +1 -1
  207. package/dist/src/components/TextField/TextField.js.map +1 -1
  208. package/dist/src/components/ThemeProvider/ThemeProvider.js +1 -1
  209. package/dist/src/components/ThemeProvider/ThemeProvider.js.map +1 -1
  210. package/dist/src/components/Toast/Toast.js +1 -1
  211. package/dist/src/components/Toast/Toast.js.map +1 -1
  212. package/dist/src/hooks/useGridKeyboardNavigation/gridKeyboardNavigationHelper.js +1 -1
  213. package/dist/src/hooks/useGridKeyboardNavigation/gridKeyboardNavigationHelper.js.map +1 -1
  214. package/dist/src/hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js +1 -1
  215. package/dist/src/hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js.map +1 -1
  216. package/dist/src/index.js +1 -1
  217. package/dist/src/types/withStaticProps.js +1 -1
  218. package/dist/src/types/withStaticProps.js.map +1 -1
  219. package/dist/types/withStaticProps.d.ts +2 -2
  220. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"LegacyModal.js","sources":["../../../../../src/components/LegacyModal/LegacyModal.tsx"],"sourcesContent":["import React, { cloneElement, ReactElement, useCallback, useMemo } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport cx from \"classnames\";\nimport { useA11yDialog } from \"./a11yDialog\";\nimport ModalContent from \"./LegacyModalContent/LegacyModalContent\";\nimport ModalHeader from \"./LegacyModalHeader/LegacyModalHeader\";\nimport useBodyScrollLock from \"./useBodyScrollLock\";\nimport useShowHideModal from \"./useShowHideModal\";\nimport {\n isModalContent,\n isModalFooter,\n isModalHeader,\n ModalWidth as ModalWidthEnum,\n validateTitleProp\n} from \"./ModalHelper\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { withStaticProps } from \"../../types\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId } from \"../../tests/constants\";\nimport styles from \"./LegacyModal.module.scss\";\nimport { ModalWidth } from \"./LegacyModal.types\";\nimport LayerProvider from \"../LayerProvider/LayerProvider\";\nimport { isClient } from \"../../utils/ssr-utils\";\n\nexport interface LegacyModalProps {\n /**\n * Id of the modal, used internally and for accessibility\n */\n id?: string;\n \"data-testid\"?: string;\n /**\n * Show/hide the Dialog\n */\n show: boolean;\n /**\n * Heading for the modal, mandatory when ModalHeader isn't provided in children\n */\n title?: string;\n /**\n * Description for the modal title\n */\n description?: string;\n /**\n * Called when the modal is closed (by close button/click outside/esc key)\n */\n onClose: () => void;\n /**\n * Makes the dialog behave like a modal (preventing closing on click outside of\n * ESC key)..\n */\n alertDialog?: boolean;\n /**\n * Used for the fromOrigin animation\n */\n triggerElement?: Element;\n /**\n * Set the modal's width. Can be one of the presets or any custom size\n */\n width?: ModalWidth | string;\n /**\n * Aria label for the close button\n */\n closeButtonAriaLabel?: string;\n /**\n * Add gaps between parts of the modal\n */\n contentSpacing?: boolean;\n /**\n * classNames for specific parts of the dialog\n */\n classNames?: {\n container?: string;\n overlay?: string;\n modal?: string;\n };\n /**\n * Dialog content\n */\n children?: ReactElement | ReactElement[];\n /**\n * z-index attribute of the container\n */\n zIndex?: number;\n /**\n * When `false`, the modal will remain in the DOM when closed\n */\n unmountOnClose?: boolean;\n}\n\nconst Modal = ({\n classNames = { container: \"\", overlay: \"\", modal: \"\" },\n id,\n show,\n title = \"\",\n description = \"\",\n onClose = NOOP,\n alertDialog = false,\n children,\n triggerElement,\n width = \"default\",\n closeButtonAriaLabel = \"Close\",\n contentSpacing = false,\n zIndex = 10000,\n unmountOnClose = true,\n \"data-testid\": dataTestId\n}: LegacyModalProps) => {\n const childrenArray: ReactElement[] = useMemo(\n () => (children ? (React.Children.toArray(children) as ReactElement[]) : []),\n [children]\n );\n validateTitleProp(title, childrenArray);\n\n const [instance, attr] = useA11yDialog({\n id,\n alertDialog\n });\n\n const closeIfNotAlertType = useCallback(() => {\n if (!alertDialog) {\n onClose?.();\n }\n }, [alertDialog, onClose]);\n\n // lock body scroll when modal is open\n useBodyScrollLock({ instance });\n\n // show/hide and animate the modal\n const { shouldShow } = useShowHideModal({\n instance,\n show,\n triggerElement,\n onClose,\n alertDialog\n });\n\n const header = useMemo(() => {\n const { id } = attr.title;\n const header = childrenArray.find(isModalHeader);\n if (header) {\n return cloneElement(header, { id, closeModal: onClose });\n }\n return (\n <ModalHeader\n title={title}\n description={description}\n closeModal={onClose}\n id={id}\n closeButtonAriaLabel={closeButtonAriaLabel}\n />\n );\n }, [attr.title, childrenArray, title, description, onClose, closeButtonAriaLabel]);\n\n const content = useMemo(() => {\n return (\n childrenArray.find(isModalContent) || (\n <ModalContent>{childrenArray.filter(child => !isModalHeader(child) && !isModalFooter(child))}</ModalContent>\n )\n );\n }, [childrenArray]);\n\n const footer = useMemo(() => {\n return childrenArray.find(isModalFooter) || null;\n }, [childrenArray]);\n\n const customWidth = width !== \"default\" && width !== \"full-width\";\n\n const dialog = (\n <LayerProvider layerRef={{ current: instance?.$el }}>\n <div\n {...attr.container}\n className={cx(styles.container, classNames.container)}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL, id)}\n style={{ \"--monday-modal-z-index\": zIndex }}\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n onClick={closeIfNotAlertType}\n className={cx(styles.overlay, classNames.overlay)}\n data-testid={ComponentDefaultTestId.MODAL_OVERLAY}\n />\n <div\n {...attr.dialog}\n className={cx(styles.dialog, classNames.modal, {\n [styles.default]: width === \"default\",\n [styles.full]: width === \"full-width\",\n [styles.spacing]: contentSpacing\n })}\n style={{ width: customWidth ? width : null }}\n >\n {header}\n {content}\n {footer}\n </div>\n </div>\n </LayerProvider>\n );\n\n if (unmountOnClose && !shouldShow) {\n return null;\n }\n return isClient() ? ReactDOM.createPortal(dialog, document.body) : null;\n};\n\ninterface LegacyModalStaticProps {\n width: typeof ModalWidthEnum;\n}\n\nexport default withStaticProps<LegacyModalProps, LegacyModalStaticProps>(Modal, {\n width: ModalWidthEnum\n});\n"],"names":["withStaticProps","_ref","_ref$classNames","classNames","container","overlay","modal","id","show","_ref$title","title","_ref$description","description","_ref$onClose","onClose","NOOP","_ref$alertDialog","alertDialog","children","triggerElement","_ref$width","width","_ref$closeButtonAriaL","closeButtonAriaLabel","_ref$contentSpacing","contentSpacing","_ref$zIndex","zIndex","_ref$unmountOnClose","unmountOnClose","dataTestId","childrenArray","useMemo","React","Children","toArray","validateTitleProp","_useA11yDialog","useA11yDialog","_useA11yDialog2","_slicedToArray","instance","attr","closeIfNotAlertType","useCallback","useBodyScrollLock","shouldShow","useShowHideModal","header","find","isModalHeader","cloneElement","closeModal","createElement","ModalHeader","content","isModalContent","ModalContent","filter","child","isModalFooter","footer","customWidth","dialog","LayerProvider","layerRef","current","$el","Object","assign","className","cx","styles","getTestId","ComponentDefaultTestId","MODAL","style","onClick","MODAL_OVERLAY","_defineProperty","default","full","spacing","isClient","ReactDOM","createPortal","document","body","ModalWidthEnum"],"mappings":"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"}
1
+ {"version":3,"file":"LegacyModal.js","sources":["../../../../../src/components/LegacyModal/LegacyModal.tsx"],"sourcesContent":["import React, { cloneElement, ReactElement, useCallback, useMemo } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport cx from \"classnames\";\nimport { useA11yDialog } from \"./a11yDialog\";\nimport ModalContent from \"./LegacyModalContent/LegacyModalContent\";\nimport ModalHeader from \"./LegacyModalHeader/LegacyModalHeader\";\nimport useBodyScrollLock from \"./useBodyScrollLock\";\nimport useShowHideModal from \"./useShowHideModal\";\nimport {\n isModalContent,\n isModalFooter,\n isModalHeader,\n ModalWidth as ModalWidthEnum,\n validateTitleProp\n} from \"./ModalHelper\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { withStaticPropsWithoutForwardRef } from \"../../types\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId } from \"../../tests/constants\";\nimport styles from \"./LegacyModal.module.scss\";\nimport { ModalWidth } from \"./LegacyModal.types\";\nimport LayerProvider from \"../LayerProvider/LayerProvider\";\nimport { isClient } from \"../../utils/ssr-utils\";\n\nexport interface LegacyModalProps {\n /**\n * Id of the modal, used internally and for accessibility\n */\n id?: string;\n \"data-testid\"?: string;\n /**\n * Show/hide the Dialog\n */\n show: boolean;\n /**\n * Heading for the modal, mandatory when ModalHeader isn't provided in children\n */\n title?: string;\n /**\n * Description for the modal title\n */\n description?: string;\n /**\n * Called when the modal is closed (by close button/click outside/esc key)\n */\n onClose: () => void;\n /**\n * Makes the dialog behave like a modal (preventing closing on click outside of\n * ESC key)..\n */\n alertDialog?: boolean;\n /**\n * Used for the fromOrigin animation\n */\n triggerElement?: Element;\n /**\n * Set the modal's width. Can be one of the presets or any custom size\n */\n width?: ModalWidth | string;\n /**\n * Aria label for the close button\n */\n closeButtonAriaLabel?: string;\n /**\n * Add gaps between parts of the modal\n */\n contentSpacing?: boolean;\n /**\n * classNames for specific parts of the dialog\n */\n classNames?: {\n container?: string;\n overlay?: string;\n modal?: string;\n };\n /**\n * Dialog content\n */\n children?: ReactElement | ReactElement[];\n /**\n * z-index attribute of the container\n */\n zIndex?: number;\n /**\n * When `false`, the modal will remain in the DOM when closed\n */\n unmountOnClose?: boolean;\n}\n\nconst Modal = ({\n classNames = { container: \"\", overlay: \"\", modal: \"\" },\n id,\n show,\n title = \"\",\n description = \"\",\n onClose = NOOP,\n alertDialog = false,\n children,\n triggerElement,\n width = \"default\",\n closeButtonAriaLabel = \"Close\",\n contentSpacing = false,\n zIndex = 10000,\n unmountOnClose = true,\n \"data-testid\": dataTestId\n}: LegacyModalProps) => {\n const childrenArray: ReactElement[] = useMemo(\n () => (children ? (React.Children.toArray(children) as ReactElement[]) : []),\n [children]\n );\n validateTitleProp(title, childrenArray);\n\n const [instance, attr] = useA11yDialog({\n id,\n alertDialog\n });\n\n const closeIfNotAlertType = useCallback(() => {\n if (!alertDialog) {\n onClose?.();\n }\n }, [alertDialog, onClose]);\n\n // lock body scroll when modal is open\n useBodyScrollLock({ instance });\n\n // show/hide and animate the modal\n const { shouldShow } = useShowHideModal({\n instance,\n show,\n triggerElement,\n onClose,\n alertDialog\n });\n\n const header = useMemo(() => {\n const { id } = attr.title;\n const header = childrenArray.find(isModalHeader);\n if (header) {\n return cloneElement(header, { id, closeModal: onClose });\n }\n return (\n <ModalHeader\n title={title}\n description={description}\n closeModal={onClose}\n id={id}\n closeButtonAriaLabel={closeButtonAriaLabel}\n />\n );\n }, [attr.title, childrenArray, title, description, onClose, closeButtonAriaLabel]);\n\n const content = useMemo(() => {\n return (\n childrenArray.find(isModalContent) || (\n <ModalContent>{childrenArray.filter(child => !isModalHeader(child) && !isModalFooter(child))}</ModalContent>\n )\n );\n }, [childrenArray]);\n\n const footer = useMemo(() => {\n return childrenArray.find(isModalFooter) || null;\n }, [childrenArray]);\n\n const customWidth = width !== \"default\" && width !== \"full-width\";\n\n const dialog = (\n <LayerProvider layerRef={{ current: instance?.$el }}>\n <div\n {...attr.container}\n className={cx(styles.container, classNames.container)}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL, id)}\n style={{ \"--monday-modal-z-index\": zIndex }}\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n onClick={closeIfNotAlertType}\n className={cx(styles.overlay, classNames.overlay)}\n data-testid={ComponentDefaultTestId.MODAL_OVERLAY}\n />\n <div\n {...attr.dialog}\n className={cx(styles.dialog, classNames.modal, {\n [styles.default]: width === \"default\",\n [styles.full]: width === \"full-width\",\n [styles.spacing]: contentSpacing\n })}\n style={{ width: customWidth ? width : null }}\n >\n {header}\n {content}\n {footer}\n </div>\n </div>\n </LayerProvider>\n );\n\n if (unmountOnClose && !shouldShow) {\n return null;\n }\n return isClient() ? ReactDOM.createPortal(dialog, document.body) : null;\n};\n\ninterface LegacyModalStaticProps {\n width: typeof ModalWidthEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<LegacyModalProps, LegacyModalStaticProps>(Modal, {\n width: ModalWidthEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$classNames","classNames","container","overlay","modal","id","show","_ref$title","title","_ref$description","description","_ref$onClose","onClose","NOOP","_ref$alertDialog","alertDialog","children","triggerElement","_ref$width","width","_ref$closeButtonAriaL","closeButtonAriaLabel","_ref$contentSpacing","contentSpacing","_ref$zIndex","zIndex","_ref$unmountOnClose","unmountOnClose","dataTestId","childrenArray","useMemo","React","Children","toArray","validateTitleProp","_useA11yDialog","useA11yDialog","_useA11yDialog2","_slicedToArray","instance","attr","closeIfNotAlertType","useCallback","useBodyScrollLock","shouldShow","useShowHideModal","header","find","isModalHeader","cloneElement","closeModal","createElement","ModalHeader","content","isModalContent","ModalContent","filter","child","isModalFooter","footer","customWidth","dialog","LayerProvider","layerRef","current","$el","Object","assign","className","cx","styles","getTestId","ComponentDefaultTestId","MODAL","style","onClick","MODAL_OVERLAY","_defineProperty","default","full","spacing","isClient","ReactDOM","createPortal","document","body","ModalWidthEnum"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from"classnames";import t,{useRef as o}from"react";import{getTestId as s,ComponentDefaultTestId as n}from"../../../tests/testIds.js";import i from"../../Button/Button.js";import r from"../../Tooltip/Tooltip.js";import l from"../../../hooks/useMergeRef.js";import m from"../MenuItem/hooks/useMenuItemMouseEvents.js";import u from"../MenuItem/hooks/useMenuItemKeyboardEvents.js";import{withStaticProps as a}from"../../../types/withStaticProps.js";import"../../../utils/colors-vars-map.js";import d from"../../Text/Text.js";import c from"./MenuItemButton.module.scss.js";import{TooltipPositions as p}from"../../Tooltip/TooltipConstants.js";var I=function(a){var p=a.className,I=a.kind,v=void 0===I?"primary":I,f=a.leftIcon,M=void 0===f?null:f,h=a.rightIcon,b=void 0===h?null:h,x=a.disabled,j=void 0!==x&&x,k=a.disableReason,E=a.index,C=a.activeItemIndex,S=void 0===C?-1:C,y=a.onClick,T=a.tooltipPosition,B=void 0===T?"right":T,O=a.tooltipShowDelay,N=void 0===O?300:O,g=a.children,A=a.resetOpenSubMenuIndex,w=a.setSubMenuIsOpenByIndex,D=a.setActiveItemIndex,R=a.menuRef,P=a.closeMenu,U=a.useDocumentEventListeners,L=a.id,_=a["data-testid"],z=o(null),K=o(null),q=l(z,K),F=j&&k,G=k,H=S===E,J=m({ref:z,resetOpenSubMenuIndex:A,setSubMenuIsOpenByIndex:w,isActive:H,setActiveItemIndex:D,index:E,hasChildren:!1}),Q=u({onClick:y,disabled:j,isActive:H,index:E,setActiveItemIndex:D,hasChildren:!1,shouldShowSubMenu:!1,setSubMenuIsOpenByIndex:w,menuRef:R,isMouseEnter:J,closeMenu:P,useDocumentEventListeners:U}).onClickCallback;return t.createElement(r,{content:F?G:null,position:B,showDelay:N},t.createElement(d,{type:"text2",element:"li","data-testid":_||s(n.MENU_ITEM_BUTTON,L),id:L,className:e(c.itemButton,p),ref:q,role:"menuitem","aria-current":H},t.createElement(i,{className:c.buttonComponent,active:H,disabled:j,leftIcon:M,rightIcon:b,onClick:Q,kind:v,size:"small",blurOnMouseUp:!1},t.createElement("div",{className:c.content},g))))};Object.assign(I,{isSelectable:!0,isMenuChild:!0});var v=a(I,{kinds:i.kinds,tooltipPositions:p});export{v as default};
1
+ import e from"classnames";import t,{useRef as o}from"react";import{getTestId as s,ComponentDefaultTestId as n}from"../../../tests/testIds.js";import i from"../../Button/Button.js";import r from"../../Tooltip/Tooltip.js";import l from"../../../hooks/useMergeRef.js";import m from"../MenuItem/hooks/useMenuItemMouseEvents.js";import u from"../MenuItem/hooks/useMenuItemKeyboardEvents.js";import{withStaticPropsWithoutForwardRef as a}from"../../../types/withStaticProps.js";import"../../../utils/colors-vars-map.js";import d from"../../Text/Text.js";import c from"./MenuItemButton.module.scss.js";import{TooltipPositions as p}from"../../Tooltip/TooltipConstants.js";var I=function(a){var p=a.className,I=a.kind,v=void 0===I?"primary":I,f=a.leftIcon,M=void 0===f?null:f,h=a.rightIcon,b=void 0===h?null:h,x=a.disabled,j=void 0!==x&&x,k=a.disableReason,E=a.index,C=a.activeItemIndex,S=void 0===C?-1:C,y=a.onClick,T=a.tooltipPosition,B=void 0===T?"right":T,O=a.tooltipShowDelay,N=void 0===O?300:O,g=a.children,A=a.resetOpenSubMenuIndex,w=a.setSubMenuIsOpenByIndex,D=a.setActiveItemIndex,R=a.menuRef,P=a.closeMenu,U=a.useDocumentEventListeners,L=a.id,_=a["data-testid"],z=o(null),K=o(null),q=l(z,K),F=j&&k,G=k,H=S===E,J=m({ref:z,resetOpenSubMenuIndex:A,setSubMenuIsOpenByIndex:w,isActive:H,setActiveItemIndex:D,index:E,hasChildren:!1}),Q=u({onClick:y,disabled:j,isActive:H,index:E,setActiveItemIndex:D,hasChildren:!1,shouldShowSubMenu:!1,setSubMenuIsOpenByIndex:w,menuRef:R,isMouseEnter:J,closeMenu:P,useDocumentEventListeners:U}).onClickCallback;return t.createElement(r,{content:F?G:null,position:B,showDelay:N},t.createElement(d,{type:"text2",element:"li","data-testid":_||s(n.MENU_ITEM_BUTTON,L),id:L,className:e(c.itemButton,p),ref:q,role:"menuitem","aria-current":H},t.createElement(i,{className:c.buttonComponent,active:H,disabled:j,leftIcon:M,rightIcon:b,onClick:Q,kind:v,size:"small",blurOnMouseUp:!1},t.createElement("div",{className:c.content},g))))};Object.assign(I,{isSelectable:!0,isMenuChild:!0});var v=a(I,{kinds:i.kinds,tooltipPositions:p});export{v as default};
2
2
  //# sourceMappingURL=MenuItemButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemButton.js","sources":["../../../../../../src/components/Menu/MenuItemButton/MenuItemButton.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, { useRef } from \"react\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport Button from \"../../Button/Button\";\nimport Tooltip from \"../../Tooltip/Tooltip\";\nimport { ButtonType } from \"../../Button\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport useMenuItemMouseEvents from \"../MenuItem/hooks/useMenuItemMouseEvents\";\nimport useMenuItemKeyboardEvents from \"../MenuItem/hooks/useMenuItemKeyboardEvents\";\nimport { SubIcon, VibeComponentProps, withStaticProps, ElementContent } from \"../../../types\";\nimport Text from \"../../Text/Text\";\nimport styles from \"./MenuItemButton.module.scss\";\nimport { TooltipPositions } from \"../../Tooltip\";\nimport { TooltipPositions as TooltipPositionsEnum } from \"../../Tooltip/TooltipConstants\";\n\nexport interface MenuItemButtonProps extends VibeComponentProps {\n /**\n * The style variant of the button.\n */\n kind?: ButtonType;\n /**\n * Icon displayed on the left side of the button.\n */\n leftIcon?: SubIcon;\n /**\n * Icon displayed on the right side of the button.\n */\n rightIcon?: SubIcon;\n /**\n * The index of the menu item in the menu.\n */\n index?: number;\n /**\n * The index of the currently active menu item.\n */\n activeItemIndex?: number;\n /**\n * If true, the button is disabled.\n */\n disabled?: boolean;\n /**\n * The reason why the button is disabled, displayed as a tooltip.\n */\n disableReason?: string;\n /**\n * Callback fired when the button is clicked.\n */\n onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n /**\n * The position of the tooltip.\n */\n tooltipPosition?: TooltipPositions;\n /**\n * The delay in milliseconds before the tooltip appears.\n */\n tooltipShowDelay?: number;\n /**\n * Callback to reset the open submenu index.\n */\n resetOpenSubMenuIndex?: () => void;\n /**\n * Callback to open or close a submenu by index.\n */\n setSubMenuIsOpenByIndex?: (index: number, isOpen: boolean) => void;\n /**\n * Callback to set the active item index.\n */\n setActiveItemIndex?: (index: number) => void;\n /**\n * Reference to the menu container.\n */\n menuRef?: React.RefObject<HTMLElement>;\n /**\n * Function to close the menu.\n */\n closeMenu?: () => void;\n /**\n * If true, event listeners are added at the document level.\n */\n useDocumentEventListeners?: boolean;\n /**\n * The content of the button.\n */\n children?: ElementContent | ElementContent[];\n}\n\nconst MenuItemButton = ({\n className,\n kind = \"primary\",\n leftIcon = null,\n rightIcon = null,\n disabled = false,\n disableReason,\n index,\n activeItemIndex = -1,\n onClick,\n tooltipPosition = \"right\",\n tooltipShowDelay = 300,\n children,\n resetOpenSubMenuIndex,\n setSubMenuIsOpenByIndex,\n setActiveItemIndex,\n menuRef,\n closeMenu,\n useDocumentEventListeners,\n id,\n \"data-testid\": dataTestId\n}: MenuItemButtonProps) => {\n const ref = useRef(null);\n const referenceElementRef = useRef(null);\n const mergedRef = useMergeRef(ref, referenceElementRef);\n\n const shouldShowTooltip = disabled && disableReason;\n const tooltipContent = disableReason;\n\n const isActive = activeItemIndex === index;\n\n const isMouseEnter = useMenuItemMouseEvents({\n ref,\n resetOpenSubMenuIndex,\n setSubMenuIsOpenByIndex,\n isActive,\n setActiveItemIndex,\n index,\n hasChildren: false\n });\n\n const { onClickCallback } = useMenuItemKeyboardEvents({\n onClick,\n disabled,\n isActive,\n index,\n setActiveItemIndex,\n hasChildren: false,\n shouldShowSubMenu: false,\n setSubMenuIsOpenByIndex,\n menuRef,\n isMouseEnter,\n closeMenu,\n useDocumentEventListeners\n });\n\n return (\n <Tooltip\n content={shouldShowTooltip ? tooltipContent : null}\n position={tooltipPosition}\n showDelay={tooltipShowDelay}\n >\n <Text\n type=\"text2\"\n element=\"li\"\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_ITEM_BUTTON, id)}\n id={id}\n className={cx(styles.itemButton, className)}\n ref={mergedRef}\n role=\"menuitem\"\n aria-current={isActive}\n >\n <Button\n className={styles.buttonComponent}\n active={isActive}\n disabled={disabled}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n onClick={onClickCallback}\n kind={kind}\n size=\"small\"\n blurOnMouseUp={false}\n >\n <div className={styles.content}>{children}</div>\n </Button>\n </Text>\n </Tooltip>\n );\n};\n\nObject.assign(MenuItemButton, {\n isSelectable: true,\n isMenuChild: true\n});\n\ninterface MenuItemButtonStaticProps {\n kinds: typeof Button.kinds;\n tooltipPositions: typeof TooltipPositionsEnum;\n}\n\nexport default withStaticProps<MenuItemButtonProps, MenuItemButtonStaticProps>(MenuItemButton, {\n kinds: Button.kinds,\n tooltipPositions: TooltipPositionsEnum\n});\n"],"names":["MenuItemButton","_ref","className","_ref$kind","kind","_ref$leftIcon","leftIcon","_ref$rightIcon","rightIcon","_ref$disabled","disabled","disableReason","index","_ref$activeItemIndex","activeItemIndex","onClick","_ref$tooltipPosition","tooltipPosition","_ref$tooltipShowDelay","tooltipShowDelay","children","resetOpenSubMenuIndex","setSubMenuIsOpenByIndex","setActiveItemIndex","menuRef","closeMenu","useDocumentEventListeners","id","dataTestId","ref","useRef","referenceElementRef","mergedRef","useMergeRef","shouldShowTooltip","tooltipContent","isActive","isMouseEnter","useMenuItemMouseEvents","hasChildren","onClickCallback","useMenuItemKeyboardEvents","shouldShowSubMenu","React","Tooltip","content","position","showDelay","createElement","Text","type","element","getTestId","ComponentDefaultTestId","MENU_ITEM_BUTTON","cx","styles","itemButton","role","Button","buttonComponent","active","size","blurOnMouseUp","Object","assign","isSelectable","isMenuChild","withStaticProps","kinds","tooltipPositions","TooltipPositionsEnum"],"mappings":"soBAsFA,IAAMA,EAAiB,SAAHC,GAqBM,IApBxBC,EAASD,EAATC,UAASC,EAAAF,EACTG,KAAAA,OAAO,IAAHD,EAAG,UAASA,EAAAE,EAAAJ,EAChBK,SAAAA,OAAW,IAAHD,EAAG,KAAIA,EAAAE,EAAAN,EACfO,UAAAA,OAAY,IAAHD,EAAG,KAAIA,EAAAE,EAAAR,EAChBS,SAAAA,OAAW,IAAHD,GAAQA,EAChBE,EAAaV,EAAbU,cACAC,EAAKX,EAALW,MAAKC,EAAAZ,EACLa,gBAAAA,OAAe,IAAAD,GAAI,EAACA,EACpBE,EAAOd,EAAPc,QAAOC,EAAAf,EACPgB,gBAAAA,OAAkB,IAAHD,EAAG,QAAOA,EAAAE,EAAAjB,EACzBkB,iBAAAA,OAAmB,IAAHD,EAAG,IAAGA,EACtBE,EAAQnB,EAARmB,SACAC,EAAqBpB,EAArBoB,sBACAC,EAAuBrB,EAAvBqB,wBACAC,EAAkBtB,EAAlBsB,mBACAC,EAAOvB,EAAPuB,QACAC,EAASxB,EAATwB,UACAC,EAAyBzB,EAAzByB,0BACAC,EAAE1B,EAAF0B,GACeC,EAAU3B,EAAzB,eAEM4B,EAAMC,EAAO,MACbC,EAAsBD,EAAO,MAC7BE,EAAYC,EAAYJ,EAAKE,GAE7BG,EAAoBxB,GAAYC,EAChCwB,EAAiBxB,EAEjByB,EAAWtB,IAAoBF,EAE/ByB,EAAeC,EAAuB,CAC1CT,IAAAA,EACAR,sBAAAA,EACAC,wBAAAA,EACAc,SAAAA,EACAb,mBAAAA,EACAX,MAAAA,EACA2B,aAAa,IAGPC,EAAoBC,EAA0B,CACpD1B,QAAAA,EACAL,SAAAA,EACA0B,SAAAA,EACAxB,MAAAA,EACAW,mBAAAA,EACAgB,aAAa,EACbG,mBAAmB,EACnBpB,wBAAAA,EACAE,QAAAA,EACAa,aAAAA,EACAZ,UAAAA,EACAC,0BAAAA,IAZMc,gBAeR,OACEG,gBAACC,EAAO,CACNC,QAASX,EAAoBC,EAAiB,KAC9CW,SAAU7B,EACV8B,UAAW5B,GAEXwB,EAACK,cAAAC,GACCC,KAAK,QACLC,QAAQ,KAAI,cACCvB,GAAcwB,EAAUC,EAAuBC,iBAAkB3B,GAC9EA,GAAIA,EACJzB,UAAWqD,EAAGC,EAAOC,WAAYvD,GACjC2B,IAAKG,EACL0B,KAAK,0BACStB,GAEdO,EAAAK,cAACW,EACC,CAAAzD,UAAWsD,EAAOI,gBAClBC,OAAQzB,EACR1B,SAAUA,EACVJ,SAAUA,EACVE,UAAWA,EACXO,QAASyB,EACTpC,KAAMA,EACN0D,KAAK,QACLC,eAAe,GAEfpB,EAAAK,cAAA,MAAA,CAAK9C,UAAWsD,EAAOX,SAAUzB,KAK3C,EAEA4C,OAAOC,OAAOjE,EAAgB,CAC5BkE,cAAc,EACdC,aAAa,IAQf,IAAeC,EAAAA,EAAgEpE,EAAgB,CAC7FqE,MAAOV,EAAOU,MACdC,iBAAkBC"}
1
+ {"version":3,"file":"MenuItemButton.js","sources":["../../../../../../src/components/Menu/MenuItemButton/MenuItemButton.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, { useRef } from \"react\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport Button from \"../../Button/Button\";\nimport Tooltip from \"../../Tooltip/Tooltip\";\nimport { ButtonType } from \"../../Button\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport useMenuItemMouseEvents from \"../MenuItem/hooks/useMenuItemMouseEvents\";\nimport useMenuItemKeyboardEvents from \"../MenuItem/hooks/useMenuItemKeyboardEvents\";\nimport { SubIcon, VibeComponentProps, ElementContent, withStaticPropsWithoutForwardRef } from \"../../../types\";\nimport Text from \"../../Text/Text\";\nimport styles from \"./MenuItemButton.module.scss\";\nimport { TooltipPositions } from \"../../Tooltip\";\nimport { TooltipPositions as TooltipPositionsEnum } from \"../../Tooltip/TooltipConstants\";\n\nexport interface MenuItemButtonProps extends VibeComponentProps {\n /**\n * The style variant of the button.\n */\n kind?: ButtonType;\n /**\n * Icon displayed on the left side of the button.\n */\n leftIcon?: SubIcon;\n /**\n * Icon displayed on the right side of the button.\n */\n rightIcon?: SubIcon;\n /**\n * The index of the menu item in the menu.\n */\n index?: number;\n /**\n * The index of the currently active menu item.\n */\n activeItemIndex?: number;\n /**\n * If true, the button is disabled.\n */\n disabled?: boolean;\n /**\n * The reason why the button is disabled, displayed as a tooltip.\n */\n disableReason?: string;\n /**\n * Callback fired when the button is clicked.\n */\n onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n /**\n * The position of the tooltip.\n */\n tooltipPosition?: TooltipPositions;\n /**\n * The delay in milliseconds before the tooltip appears.\n */\n tooltipShowDelay?: number;\n /**\n * Callback to reset the open submenu index.\n */\n resetOpenSubMenuIndex?: () => void;\n /**\n * Callback to open or close a submenu by index.\n */\n setSubMenuIsOpenByIndex?: (index: number, isOpen: boolean) => void;\n /**\n * Callback to set the active item index.\n */\n setActiveItemIndex?: (index: number) => void;\n /**\n * Reference to the menu container.\n */\n menuRef?: React.RefObject<HTMLElement>;\n /**\n * Function to close the menu.\n */\n closeMenu?: () => void;\n /**\n * If true, event listeners are added at the document level.\n */\n useDocumentEventListeners?: boolean;\n /**\n * The content of the button.\n */\n children?: ElementContent | ElementContent[];\n}\n\nconst MenuItemButton = ({\n className,\n kind = \"primary\",\n leftIcon = null,\n rightIcon = null,\n disabled = false,\n disableReason,\n index,\n activeItemIndex = -1,\n onClick,\n tooltipPosition = \"right\",\n tooltipShowDelay = 300,\n children,\n resetOpenSubMenuIndex,\n setSubMenuIsOpenByIndex,\n setActiveItemIndex,\n menuRef,\n closeMenu,\n useDocumentEventListeners,\n id,\n \"data-testid\": dataTestId\n}: MenuItemButtonProps) => {\n const ref = useRef(null);\n const referenceElementRef = useRef(null);\n const mergedRef = useMergeRef(ref, referenceElementRef);\n\n const shouldShowTooltip = disabled && disableReason;\n const tooltipContent = disableReason;\n\n const isActive = activeItemIndex === index;\n\n const isMouseEnter = useMenuItemMouseEvents({\n ref,\n resetOpenSubMenuIndex,\n setSubMenuIsOpenByIndex,\n isActive,\n setActiveItemIndex,\n index,\n hasChildren: false\n });\n\n const { onClickCallback } = useMenuItemKeyboardEvents({\n onClick,\n disabled,\n isActive,\n index,\n setActiveItemIndex,\n hasChildren: false,\n shouldShowSubMenu: false,\n setSubMenuIsOpenByIndex,\n menuRef,\n isMouseEnter,\n closeMenu,\n useDocumentEventListeners\n });\n\n return (\n <Tooltip\n content={shouldShowTooltip ? tooltipContent : null}\n position={tooltipPosition}\n showDelay={tooltipShowDelay}\n >\n <Text\n type=\"text2\"\n element=\"li\"\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_ITEM_BUTTON, id)}\n id={id}\n className={cx(styles.itemButton, className)}\n ref={mergedRef}\n role=\"menuitem\"\n aria-current={isActive}\n >\n <Button\n className={styles.buttonComponent}\n active={isActive}\n disabled={disabled}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n onClick={onClickCallback}\n kind={kind}\n size=\"small\"\n blurOnMouseUp={false}\n >\n <div className={styles.content}>{children}</div>\n </Button>\n </Text>\n </Tooltip>\n );\n};\n\nObject.assign(MenuItemButton, {\n isSelectable: true,\n isMenuChild: true\n});\n\ninterface MenuItemButtonStaticProps {\n kinds: typeof Button.kinds;\n tooltipPositions: typeof TooltipPositionsEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<MenuItemButtonProps, MenuItemButtonStaticProps>(MenuItemButton, {\n kinds: Button.kinds,\n tooltipPositions: TooltipPositionsEnum\n});\n"],"names":["MenuItemButton","_ref","className","_ref$kind","kind","_ref$leftIcon","leftIcon","_ref$rightIcon","rightIcon","_ref$disabled","disabled","disableReason","index","_ref$activeItemIndex","activeItemIndex","onClick","_ref$tooltipPosition","tooltipPosition","_ref$tooltipShowDelay","tooltipShowDelay","children","resetOpenSubMenuIndex","setSubMenuIsOpenByIndex","setActiveItemIndex","menuRef","closeMenu","useDocumentEventListeners","id","dataTestId","ref","useRef","referenceElementRef","mergedRef","useMergeRef","shouldShowTooltip","tooltipContent","isActive","isMouseEnter","useMenuItemMouseEvents","hasChildren","onClickCallback","useMenuItemKeyboardEvents","shouldShowSubMenu","React","Tooltip","content","position","showDelay","createElement","Text","type","element","getTestId","ComponentDefaultTestId","MENU_ITEM_BUTTON","cx","styles","itemButton","role","Button","buttonComponent","active","size","blurOnMouseUp","Object","assign","isSelectable","isMenuChild","withStaticPropsWithoutForwardRef","kinds","tooltipPositions","TooltipPositionsEnum"],"mappings":"upBAsFA,IAAMA,EAAiB,SAAHC,GAqBM,IApBxBC,EAASD,EAATC,UAASC,EAAAF,EACTG,KAAAA,OAAO,IAAHD,EAAG,UAASA,EAAAE,EAAAJ,EAChBK,SAAAA,OAAW,IAAHD,EAAG,KAAIA,EAAAE,EAAAN,EACfO,UAAAA,OAAY,IAAHD,EAAG,KAAIA,EAAAE,EAAAR,EAChBS,SAAAA,OAAW,IAAHD,GAAQA,EAChBE,EAAaV,EAAbU,cACAC,EAAKX,EAALW,MAAKC,EAAAZ,EACLa,gBAAAA,OAAe,IAAAD,GAAI,EAACA,EACpBE,EAAOd,EAAPc,QAAOC,EAAAf,EACPgB,gBAAAA,OAAkB,IAAHD,EAAG,QAAOA,EAAAE,EAAAjB,EACzBkB,iBAAAA,OAAmB,IAAHD,EAAG,IAAGA,EACtBE,EAAQnB,EAARmB,SACAC,EAAqBpB,EAArBoB,sBACAC,EAAuBrB,EAAvBqB,wBACAC,EAAkBtB,EAAlBsB,mBACAC,EAAOvB,EAAPuB,QACAC,EAASxB,EAATwB,UACAC,EAAyBzB,EAAzByB,0BACAC,EAAE1B,EAAF0B,GACeC,EAAU3B,EAAzB,eAEM4B,EAAMC,EAAO,MACbC,EAAsBD,EAAO,MAC7BE,EAAYC,EAAYJ,EAAKE,GAE7BG,EAAoBxB,GAAYC,EAChCwB,EAAiBxB,EAEjByB,EAAWtB,IAAoBF,EAE/ByB,EAAeC,EAAuB,CAC1CT,IAAAA,EACAR,sBAAAA,EACAC,wBAAAA,EACAc,SAAAA,EACAb,mBAAAA,EACAX,MAAAA,EACA2B,aAAa,IAGPC,EAAoBC,EAA0B,CACpD1B,QAAAA,EACAL,SAAAA,EACA0B,SAAAA,EACAxB,MAAAA,EACAW,mBAAAA,EACAgB,aAAa,EACbG,mBAAmB,EACnBpB,wBAAAA,EACAE,QAAAA,EACAa,aAAAA,EACAZ,UAAAA,EACAC,0BAAAA,IAZMc,gBAeR,OACEG,gBAACC,EAAO,CACNC,QAASX,EAAoBC,EAAiB,KAC9CW,SAAU7B,EACV8B,UAAW5B,GAEXwB,EAACK,cAAAC,GACCC,KAAK,QACLC,QAAQ,KAAI,cACCvB,GAAcwB,EAAUC,EAAuBC,iBAAkB3B,GAC9EA,GAAIA,EACJzB,UAAWqD,EAAGC,EAAOC,WAAYvD,GACjC2B,IAAKG,EACL0B,KAAK,0BACStB,GAEdO,EAAAK,cAACW,EACC,CAAAzD,UAAWsD,EAAOI,gBAClBC,OAAQzB,EACR1B,SAAUA,EACVJ,SAAUA,EACVE,UAAWA,EACXO,QAASyB,EACTpC,KAAMA,EACN0D,KAAK,QACLC,eAAe,GAEfpB,EAAAK,cAAA,MAAA,CAAK9C,UAAWsD,EAAOX,SAAUzB,KAK3C,EAEA4C,OAAOC,OAAOjE,EAAgB,CAC5BkE,cAAc,EACdC,aAAa,IAQf,IAAeC,EAAAA,EAAiFpE,EAAgB,CAC9GqE,MAAOV,EAAOU,MACdC,iBAAkBC"}
@@ -1,2 +1,2 @@
1
- import t from"react";import s from"classnames";import{camelCase as o}from"lodash-es";import{getStyle as e}from"../../../helpers/typesciptCssModulesHelper.js";import{getTestId as i,ComponentDefaultTestId as r}from"../../../tests/testIds.js";import a from"../../Text/Text.js";import{MenuTitleCaptionPosition as m}from"./MenuTitleConstants.js";import{withStaticProps as p}from"../../../types/withStaticProps.js";import"../../../utils/colors-vars-map.js";import n from"./MenuTitle.module.scss.js";var l=function(m){var p=m.caption,l=void 0===p?"":p,c=m.captionPosition,d=void 0===c?"bottom":c,f=m.id,u=m["data-testid"];return t.createElement(a,{color:"secondary",type:"text2",className:s(n.title,m.className),"data-testid":u||i(r.MENU_TITLE,f)},function(){if(l)return t.createElement("label",{className:s(n.titleCaption,e(n,o("title__caption--"+d))),id:f,"data-testid":u||i(r.MENU_TITLE_CAPTION,f)},l)}())};Object.assign(l,{isMenuChild:!0});var c=p(l,{positions:m,captionPositions:m});export{c as default};
1
+ import t from"react";import s from"classnames";import{camelCase as o}from"lodash-es";import{getStyle as e}from"../../../helpers/typesciptCssModulesHelper.js";import{getTestId as i,ComponentDefaultTestId as r}from"../../../tests/testIds.js";import a from"../../Text/Text.js";import{MenuTitleCaptionPosition as m}from"./MenuTitleConstants.js";import{withStaticPropsWithoutForwardRef as p}from"../../../types/withStaticProps.js";import"../../../utils/colors-vars-map.js";import n from"./MenuTitle.module.scss.js";var l=function(m){var p=m.caption,l=void 0===p?"":p,c=m.captionPosition,d=void 0===c?"bottom":c,f=m.id,u=m["data-testid"];return t.createElement(a,{color:"secondary",type:"text2",className:s(n.title,m.className),"data-testid":u||i(r.MENU_TITLE,f)},function(){if(l)return t.createElement("label",{className:s(n.titleCaption,e(n,o("title__caption--"+d))),id:f,"data-testid":u||i(r.MENU_TITLE_CAPTION,f)},l)}())};Object.assign(l,{isMenuChild:!0});var c=p(l,{positions:m,captionPositions:m});export{c as default};
2
2
  //# sourceMappingURL=MenuTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTitle.js","sources":["../../../../../../src/components/Menu/MenuTitle/MenuTitle.tsx"],"sourcesContent":["import React from \"react\";\nimport cx from \"classnames\";\nimport { camelCase } from \"lodash-es\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport Text from \"../../Text/Text\";\nimport { MenuTitleCaptionPosition as MenuTitleCaptionPositionEnum } from \"./MenuTitleConstants\";\nimport { MenuTitleCaptionPosition } from \"./MenuTitle.type\";\nimport { VibeComponentProps, withStaticProps } from \"../../../types\";\nimport styles from \"./MenuTitle.module.scss\";\n\nexport interface MenuTitleProps extends VibeComponentProps {\n /**\n * The caption text displayed alongside the title.\n */\n caption?: string | React.ReactNode;\n /**\n * The position of the caption relative to the title.\n */\n captionPosition?: MenuTitleCaptionPosition;\n}\n\nconst MenuTitle = ({\n className,\n caption = \"\",\n captionPosition = \"bottom\",\n id,\n \"data-testid\": dataTestId\n}: MenuTitleProps) => {\n const renderCaptionIfNeeded = () => {\n if (caption) {\n return (\n <label\n className={cx(styles.titleCaption, getStyle(styles, camelCase(\"title__caption--\" + captionPosition)))}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_TITLE_CAPTION, id)}\n >\n {caption}\n </label>\n );\n }\n };\n return (\n <Text\n color=\"secondary\"\n type=\"text2\"\n className={cx(styles.title, className)}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_TITLE, id)}\n >\n {renderCaptionIfNeeded()}\n </Text>\n );\n};\n\nObject.assign(MenuTitle, {\n isMenuChild: true\n});\n\ninterface MenuTitleStaticProps {\n positions: typeof MenuTitleCaptionPositionEnum;\n captionPositions: typeof MenuTitleCaptionPositionEnum;\n}\n\nexport default withStaticProps<MenuTitleProps, MenuTitleStaticProps>(MenuTitle, {\n positions: MenuTitleCaptionPositionEnum,\n captionPositions: MenuTitleCaptionPositionEnum\n});\n"],"names":["MenuTitle","_ref","_ref$caption","caption","_ref$captionPosition","captionPosition","id","dataTestId","React","createElement","Text","color","type","className","cx","styles","title","getTestId","ComponentDefaultTestId","MENU_TITLE","titleCaption","getStyle","camelCase","MENU_TITLE_CAPTION","renderCaptionIfNeeded","Object","assign","isMenuChild","withStaticProps","positions","MenuTitleCaptionPositionEnum","captionPositions"],"mappings":"6eAsBA,IAAMA,EAAY,SAAHC,GAMM,IALVC,EAAAD,EACTE,QAAAA,OAAU,IAAHD,EAAG,GAAEA,EAAAE,EAAAH,EACZI,gBAAAA,OAAkB,IAAHD,EAAG,SAAQA,EAC1BE,EAAEL,EAAFK,GACeC,EAAUN,EAAzB,eAeA,OACEO,EAACC,cAAAC,EACC,CAAAC,MAAM,YACNC,KAAK,QACLC,UAAWC,EAAGC,EAAOC,MAvBhBf,EAATY,WAwBiB,cAAAN,GAAcU,EAAUC,EAAuBC,WAAYb,IAlB9C,WAC5B,GAAIH,EACF,OACEK,EACEC,cAAA,QAAA,CAAAI,UAAWC,EAAGC,EAAOK,aAAcC,EAASN,EAAQO,EAAU,mBAAqBjB,KACnFC,GAAIA,EACS,cAAAC,GAAcU,EAAUC,EAAuBK,mBAAoBjB,IAE/EH,GAYJqB,GAGP,EAEAC,OAAOC,OAAO1B,EAAW,CACvB2B,aAAa,IAQf,IAAeC,EAAAA,EAAsD5B,EAAW,CAC9E6B,UAAWC,EACXC,iBAAkBD"}
1
+ {"version":3,"file":"MenuTitle.js","sources":["../../../../../../src/components/Menu/MenuTitle/MenuTitle.tsx"],"sourcesContent":["import React from \"react\";\nimport cx from \"classnames\";\nimport { camelCase } from \"lodash-es\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport Text from \"../../Text/Text\";\nimport { MenuTitleCaptionPosition as MenuTitleCaptionPositionEnum } from \"./MenuTitleConstants\";\nimport { MenuTitleCaptionPosition } from \"./MenuTitle.type\";\nimport { VibeComponentProps, withStaticPropsWithoutForwardRef } from \"../../../types\";\nimport styles from \"./MenuTitle.module.scss\";\n\nexport interface MenuTitleProps extends VibeComponentProps {\n /**\n * The caption text displayed alongside the title.\n */\n caption?: string | React.ReactNode;\n /**\n * The position of the caption relative to the title.\n */\n captionPosition?: MenuTitleCaptionPosition;\n}\n\nconst MenuTitle = ({\n className,\n caption = \"\",\n captionPosition = \"bottom\",\n id,\n \"data-testid\": dataTestId\n}: MenuTitleProps) => {\n const renderCaptionIfNeeded = () => {\n if (caption) {\n return (\n <label\n className={cx(styles.titleCaption, getStyle(styles, camelCase(\"title__caption--\" + captionPosition)))}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_TITLE_CAPTION, id)}\n >\n {caption}\n </label>\n );\n }\n };\n return (\n <Text\n color=\"secondary\"\n type=\"text2\"\n className={cx(styles.title, className)}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_TITLE, id)}\n >\n {renderCaptionIfNeeded()}\n </Text>\n );\n};\n\nObject.assign(MenuTitle, {\n isMenuChild: true\n});\n\ninterface MenuTitleStaticProps {\n positions: typeof MenuTitleCaptionPositionEnum;\n captionPositions: typeof MenuTitleCaptionPositionEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<MenuTitleProps, MenuTitleStaticProps>(MenuTitle, {\n positions: MenuTitleCaptionPositionEnum,\n captionPositions: MenuTitleCaptionPositionEnum\n});\n"],"names":["MenuTitle","_ref","_ref$caption","caption","_ref$captionPosition","captionPosition","id","dataTestId","React","createElement","Text","color","type","className","cx","styles","title","getTestId","ComponentDefaultTestId","MENU_TITLE","titleCaption","getStyle","camelCase","MENU_TITLE_CAPTION","renderCaptionIfNeeded","Object","assign","isMenuChild","withStaticPropsWithoutForwardRef","positions","MenuTitleCaptionPositionEnum","captionPositions"],"mappings":"8fAsBA,IAAMA,EAAY,SAAHC,GAMM,IALVC,EAAAD,EACTE,QAAAA,OAAU,IAAHD,EAAG,GAAEA,EAAAE,EAAAH,EACZI,gBAAAA,OAAkB,IAAHD,EAAG,SAAQA,EAC1BE,EAAEL,EAAFK,GACeC,EAAUN,EAAzB,eAeA,OACEO,EAACC,cAAAC,EACC,CAAAC,MAAM,YACNC,KAAK,QACLC,UAAWC,EAAGC,EAAOC,MAvBhBf,EAATY,WAwBiB,cAAAN,GAAcU,EAAUC,EAAuBC,WAAYb,IAlB9C,WAC5B,GAAIH,EACF,OACEK,EACEC,cAAA,QAAA,CAAAI,UAAWC,EAAGC,EAAOK,aAAcC,EAASN,EAAQO,EAAU,mBAAqBjB,KACnFC,GAAIA,EACS,cAAAC,GAAcU,EAAUC,EAAuBK,mBAAoBjB,IAE/EH,GAYJqB,GAGP,EAEAC,OAAOC,OAAO1B,EAAW,CACvB2B,aAAa,IAQf,IAAeC,EAAAA,EAAuE5B,EAAW,CAC/F6B,UAAWC,EACXC,iBAAkBD"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import t from"react";import{camelCase as s}from"lodash-es";import{getTestId as r,ComponentDefaultTestId as i}from"../../tests/testIds.js";import l from"classnames";import{SkeletonType as o,SKELETON_SIZES as a,TextSkeletonSize as m,SKELETON_CUSTOM_SIZE as p}from"./SkeletonConstants.js";import{getStyle as d}from"../../helpers/typesciptCssModulesHelper.js";import{withStaticProps as c}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import n from"./Skeleton.module.scss.js";var u=c((function(a){var c=a.type,u=void 0===c?"rectangle":c,f=a.size,h=void 0===f?"custom":f,v=a.className,j=a.wrapperClassName,y=a.width,g=a.height,N=a.fullWidth,w=void 0!==N&&N,E=a.id,S=a["data-testid"],b=Object.values(o).includes(u)?u:"rectangle",k=Object.values(m).includes(h)?h:p;return t.createElement("div",{id:E,className:l(n.skeleton,j,e({},n.fullWidth,w)),"data-testid":S||r(i.SKELETON,E)},t.createElement("div",{className:l(n[b],d(n,s(b+"-"+k)),v,e({},n.fullWidth,w)),style:{width:y,height:g}}))}),{types:o,sizes:a});export{u as default};
1
+ import{defineProperty as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import t from"react";import{camelCase as s}from"lodash-es";import{getTestId as r,ComponentDefaultTestId as i}from"../../tests/testIds.js";import l from"classnames";import{SkeletonType as o,SKELETON_SIZES as a,TextSkeletonSize as m,SKELETON_CUSTOM_SIZE as p}from"./SkeletonConstants.js";import{getStyle as d}from"../../helpers/typesciptCssModulesHelper.js";import{withStaticPropsWithoutForwardRef as c}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import n from"./Skeleton.module.scss.js";var u=c((function(a){var c=a.type,u=void 0===c?"rectangle":c,f=a.size,h=void 0===f?"custom":f,v=a.className,j=a.wrapperClassName,y=a.width,g=a.height,N=a.fullWidth,w=void 0!==N&&N,E=a.id,S=a["data-testid"],b=Object.values(o).includes(u)?u:"rectangle",k=Object.values(m).includes(h)?h:p;return t.createElement("div",{id:E,className:l(n.skeleton,j,e({},n.fullWidth,w)),"data-testid":S||r(i.SKELETON,E)},t.createElement("div",{className:l(n[b],d(n,s(b+"-"+k)),v,e({},n.fullWidth,w)),style:{width:y,height:g}}))}),{types:o,sizes:a});export{u as default};
2
2
  //# sourceMappingURL=Skeleton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.js","sources":["../../../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import React from \"react\";\nimport { camelCase } from \"lodash-es\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport {\n SKELETON_SIZES,\n SkeletonType as SkeletonTypeEnum,\n SKELETON_CUSTOM_SIZE,\n TextSkeletonSize as TextSkeletonSizeEnum\n} from \"./SkeletonConstants\";\n\nimport { SkeletonType, SkeletonSizeType } from \"./Skelton.types\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { withStaticProps, VibeComponentProps } from \"../../types\";\nimport styles from \"./Skeleton.module.scss\";\n\nexport interface SkeletonProps extends VibeComponentProps {\n /**\n * The type of skeleton.\n */\n type?: SkeletonType;\n /**\n * The predefined size of the skeleton.\n */\n size?: SkeletonSizeType;\n /**\n * The width of the skeleton in pixels.\n */\n width?: number;\n /**\n * The height of the skeleton in pixels.\n */\n height?: number;\n /**\n * Class name applied to the wrapper element.\n */\n wrapperClassName?: string;\n /**\n * If true, the skeleton will take up the full width of its container.\n */\n fullWidth?: boolean;\n}\n\nconst Skeleton = ({\n type = \"rectangle\",\n size = \"custom\",\n className,\n wrapperClassName,\n width,\n height,\n fullWidth = false,\n id,\n \"data-testid\": dataTestId\n}: SkeletonProps) => {\n const skeletonType = (Object.values(SkeletonTypeEnum) as string[]).includes(type) ? type : \"rectangle\";\n\n // Skeleton has sizes only for text type, other types support only custom size\n const skeletonSize = (Object.values(TextSkeletonSizeEnum) as string[]).includes(size) ? size : SKELETON_CUSTOM_SIZE;\n\n return (\n <div\n id={id}\n className={cx(styles.skeleton, wrapperClassName, { [styles.fullWidth]: fullWidth })}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.SKELETON, id)}\n >\n <div\n className={cx(styles[skeletonType], getStyle(styles, camelCase(skeletonType + \"-\" + skeletonSize)), className, {\n [styles.fullWidth]: fullWidth\n })}\n style={{ width, height }}\n />\n </div>\n );\n};\n\ninterface SkeletonStaticProps {\n types: typeof SkeletonTypeEnum;\n sizes: typeof SKELETON_SIZES;\n}\n\nexport default withStaticProps<SkeletonProps, SkeletonStaticProps>(Skeleton, {\n types: SkeletonTypeEnum,\n sizes: SKELETON_SIZES\n});\n"],"names":["withStaticProps","_ref","_ref$type","type","_ref$size","size","className","wrapperClassName","width","height","_ref$fullWidth","fullWidth","id","dataTestId","skeletonType","Object","values","SkeletonTypeEnum","includes","skeletonSize","TextSkeletonSizeEnum","SKELETON_CUSTOM_SIZE","React","createElement","cx","styles","skeleton","_defineProperty","getTestId","ComponentDefaultTestId","SKELETON","getStyle","camelCase","style","types","sizes","SKELETON_SIZES"],"mappings":"qkBA2CA,IAqCeA,EAAAA,GArCE,SAAHC,GAUM,IAAAC,EAAAD,EATlBE,KAAAA,OAAO,IAAHD,EAAG,YAAWA,EAAAE,EAAAH,EAClBI,KAAAA,OAAO,IAAHD,EAAG,SAAQA,EACfE,EAASL,EAATK,UACAC,EAAgBN,EAAhBM,iBACAC,EAAKP,EAALO,MACAC,EAAMR,EAANQ,OAAMC,EAAAT,EACNU,UAAAA,OAAY,IAAHD,GAAQA,EACjBE,EAAEX,EAAFW,GACeC,EAAUZ,EAAzB,eAEMa,EAAgBC,OAAOC,OAAOC,GAA+BC,SAASf,GAAQA,EAAO,YAGrFgB,EAAgBJ,OAAOC,OAAOI,GAAmCF,SAASb,GAAQA,EAAOgB,EAE/F,OACEC,EACEC,cAAA,MAAA,CAAAX,GAAIA,EACJN,UAAWkB,EAAGC,EAAOC,SAAUnB,EAAgBoB,KAAKF,EAAOd,UAAYA,IAC1D,cAAAE,GAAce,EAAUC,EAAuBC,SAAUlB,IAEtEU,EACEC,cAAA,MAAA,CAAAjB,UAAWkB,EAAGC,EAAOX,GAAeiB,EAASN,EAAQO,EAAUlB,EAAe,IAAMK,IAAgBb,EAASqB,EAC1GF,CAAAA,EAAAA,EAAOd,UAAYA,IAEtBsB,MAAO,CAAEzB,MAAAA,EAAOC,OAAAA,KAIxB,GAO6E,CAC3EyB,MAAOjB,EACPkB,MAAOC"}
1
+ {"version":3,"file":"Skeleton.js","sources":["../../../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import React from \"react\";\nimport { camelCase } from \"lodash-es\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport {\n SKELETON_SIZES,\n SkeletonType as SkeletonTypeEnum,\n SKELETON_CUSTOM_SIZE,\n TextSkeletonSize as TextSkeletonSizeEnum\n} from \"./SkeletonConstants\";\n\nimport { SkeletonType, SkeletonSizeType } from \"./Skelton.types\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { VibeComponentProps, withStaticPropsWithoutForwardRef } from \"../../types\";\nimport styles from \"./Skeleton.module.scss\";\n\nexport interface SkeletonProps extends VibeComponentProps {\n /**\n * The type of skeleton.\n */\n type?: SkeletonType;\n /**\n * The predefined size of the skeleton.\n */\n size?: SkeletonSizeType;\n /**\n * The width of the skeleton in pixels.\n */\n width?: number;\n /**\n * The height of the skeleton in pixels.\n */\n height?: number;\n /**\n * Class name applied to the wrapper element.\n */\n wrapperClassName?: string;\n /**\n * If true, the skeleton will take up the full width of its container.\n */\n fullWidth?: boolean;\n}\n\nconst Skeleton = ({\n type = \"rectangle\",\n size = \"custom\",\n className,\n wrapperClassName,\n width,\n height,\n fullWidth = false,\n id,\n \"data-testid\": dataTestId\n}: SkeletonProps) => {\n const skeletonType = (Object.values(SkeletonTypeEnum) as string[]).includes(type) ? type : \"rectangle\";\n\n // Skeleton has sizes only for text type, other types support only custom size\n const skeletonSize = (Object.values(TextSkeletonSizeEnum) as string[]).includes(size) ? size : SKELETON_CUSTOM_SIZE;\n\n return (\n <div\n id={id}\n className={cx(styles.skeleton, wrapperClassName, { [styles.fullWidth]: fullWidth })}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.SKELETON, id)}\n >\n <div\n className={cx(styles[skeletonType], getStyle(styles, camelCase(skeletonType + \"-\" + skeletonSize)), className, {\n [styles.fullWidth]: fullWidth\n })}\n style={{ width, height }}\n />\n </div>\n );\n};\n\ninterface SkeletonStaticProps {\n types: typeof SkeletonTypeEnum;\n sizes: typeof SKELETON_SIZES;\n}\n\nexport default withStaticPropsWithoutForwardRef<SkeletonProps, SkeletonStaticProps>(Skeleton, {\n types: SkeletonTypeEnum,\n sizes: SKELETON_SIZES\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$type","type","_ref$size","size","className","wrapperClassName","width","height","_ref$fullWidth","fullWidth","id","dataTestId","skeletonType","Object","values","SkeletonTypeEnum","includes","skeletonSize","TextSkeletonSizeEnum","SKELETON_CUSTOM_SIZE","React","createElement","cx","styles","skeleton","_defineProperty","getTestId","ComponentDefaultTestId","SKELETON","getStyle","camelCase","style","types","sizes","SKELETON_SIZES"],"mappings":"slBA2CA,IAqCeA,EAAAA,GArCE,SAAHC,GAUM,IAAAC,EAAAD,EATlBE,KAAAA,OAAO,IAAHD,EAAG,YAAWA,EAAAE,EAAAH,EAClBI,KAAAA,OAAO,IAAHD,EAAG,SAAQA,EACfE,EAASL,EAATK,UACAC,EAAgBN,EAAhBM,iBACAC,EAAKP,EAALO,MACAC,EAAMR,EAANQ,OAAMC,EAAAT,EACNU,UAAAA,OAAY,IAAHD,GAAQA,EACjBE,EAAEX,EAAFW,GACeC,EAAUZ,EAAzB,eAEMa,EAAgBC,OAAOC,OAAOC,GAA+BC,SAASf,GAAQA,EAAO,YAGrFgB,EAAgBJ,OAAOC,OAAOI,GAAmCF,SAASb,GAAQA,EAAOgB,EAE/F,OACEC,EACEC,cAAA,MAAA,CAAAX,GAAIA,EACJN,UAAWkB,EAAGC,EAAOC,SAAUnB,EAAgBoB,KAAKF,EAAOd,UAAYA,IAC1D,cAAAE,GAAce,EAAUC,EAAuBC,SAAUlB,IAEtEU,EACEC,cAAA,MAAA,CAAAjB,UAAWkB,EAAGC,EAAOX,GAAeiB,EAASN,EAAQO,EAAUlB,EAAe,IAAMK,IAAgBb,EAASqB,EAC1GF,CAAAA,EAAAA,EAAOd,UAAYA,IAEtBsB,MAAO,CAAEzB,MAAAA,EAAOC,OAAAA,KAIxB,GAO8F,CAC5FyB,MAAOjB,EACPkB,MAAOC"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as r}from"../../../_virtual/_rollupPluginBabelHelpers.js";import s from"react";import{InfixKind as o}from"./SliderConstants.js";import{useSliderInfixComponent as i}from"./SliderInfixHooks.js";import t from"classnames";import{getStyle as e}from"../../helpers/typesciptCssModulesHelper.js";import{withStaticProps as m}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import l from"./SliderInfix.module.scss.js";var p=m((function o(m){var p=m.kind,a=void 0===p?o.kinds.PREFIX:p,n=i(a),f=r(n,4),d=f[1],c=f[2],u=f[3];return f[0]&&s.createElement("div",{className:t(l.infix,e(l,a),d.map((function(r){return e(l,r)}))),style:u},c)}),{kinds:o});export{p as default};
1
+ import{slicedToArray as r}from"../../../_virtual/_rollupPluginBabelHelpers.js";import s from"react";import{InfixKind as o}from"./SliderConstants.js";import{useSliderInfixComponent as i}from"./SliderInfixHooks.js";import t from"classnames";import{getStyle as e}from"../../helpers/typesciptCssModulesHelper.js";import{withStaticPropsWithoutForwardRef as m}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import l from"./SliderInfix.module.scss.js";var p=m((function o(m){var p=m.kind,a=void 0===p?o.kinds.PREFIX:p,n=i(a),f=r(n,4),d=f[1],c=f[2],u=f[3];return f[0]&&s.createElement("div",{className:t(l.infix,e(l,a),d.map((function(r){return e(l,r)}))),style:u},c)}),{kinds:o});export{p as default};
2
2
  //# sourceMappingURL=SliderInfix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SliderInfix.js","sources":["../../../../../src/components/Slider/SliderInfix.tsx"],"sourcesContent":["import React, { FC } from \"react\";\nimport { InfixKind as InfixKindEnum } from \"./SliderConstants\";\nimport { useSliderInfixComponent } from \"./SliderInfixHooks\";\nimport cx from \"classnames\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { withStaticProps, VibeComponentProps } from \"../../types\";\nimport styles from \"./SliderInfix.module.scss\";\nimport { InfixKind } from \"./Slider.types\";\n\nexport interface SliderInfixProps extends VibeComponentProps {\n /**\n * Specifies the type of infix (prefix or postfix).\n */\n kind?: InfixKind;\n}\n\nconst SliderInfix: FC<SliderInfixProps> & { kinds?: typeof InfixKindEnum } = ({ kind = SliderInfix.kinds.PREFIX }) => {\n const [isShow, modificators, InfixComponent, inlineStyle] = useSliderInfixComponent(kind);\n return (\n isShow && (\n <div\n className={cx(\n styles.infix,\n getStyle(styles, kind),\n modificators.map(m => getStyle(styles, m))\n )}\n style={inlineStyle}\n >\n {InfixComponent}\n </div>\n )\n );\n};\n\nexport default withStaticProps(SliderInfix, {\n kinds: InfixKindEnum\n});\n"],"names":["withStaticProps","SliderInfix","_ref","_ref$kind","kind","kinds","PREFIX","_useSliderInfixCompon","useSliderInfixComponent","_useSliderInfixCompon2","_slicedToArray","modificators","InfixComponent","inlineStyle","React","className","cx","styles","infix","getStyle","map","m","style","InfixKindEnum"],"mappings":"ycAgBA,IAkBeA,EAAAA,GAlB8D,SAAvEC,EAAWC,GAAoG,IAAAC,EAAAD,EAArCE,KAAAA,OAAOH,IAAHE,EAAGF,EAAYI,MAAMC,OAAMH,EAC7GI,EAA4DC,EAAwBJ,GAAKK,EAAAC,EAAAH,EAAA,GAA1EI,EAAYF,EAAA,GAAEG,EAAcH,EAAA,GAAEI,EAAWJ,EAAA,GACxD,OADaA,EAAA,IAGTK,uBACEC,UAAWC,EACTC,EAAOC,MACPC,EAASF,EAAQb,GACjBO,EAAaS,KAAI,SAAAC,GAAC,OAAIF,EAASF,EAAQI,EAAE,KAE3CC,MAAOT,GAEND,EAIT,GAE4C,CAC1CP,MAAOkB"}
1
+ {"version":3,"file":"SliderInfix.js","sources":["../../../../../src/components/Slider/SliderInfix.tsx"],"sourcesContent":["import React, { FC } from \"react\";\nimport { InfixKind as InfixKindEnum } from \"./SliderConstants\";\nimport { useSliderInfixComponent } from \"./SliderInfixHooks\";\nimport cx from \"classnames\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { VibeComponentProps, withStaticPropsWithoutForwardRef } from \"../../types\";\nimport styles from \"./SliderInfix.module.scss\";\nimport { InfixKind } from \"./Slider.types\";\n\nexport interface SliderInfixProps extends VibeComponentProps {\n /**\n * Specifies the type of infix (prefix or postfix).\n */\n kind?: InfixKind;\n}\n\nconst SliderInfix: FC<SliderInfixProps> & { kinds?: typeof InfixKindEnum } = ({ kind = SliderInfix.kinds.PREFIX }) => {\n const [isShow, modificators, InfixComponent, inlineStyle] = useSliderInfixComponent(kind);\n return (\n isShow && (\n <div\n className={cx(\n styles.infix,\n getStyle(styles, kind),\n modificators.map(m => getStyle(styles, m))\n )}\n style={inlineStyle}\n >\n {InfixComponent}\n </div>\n )\n );\n};\n\nexport default withStaticPropsWithoutForwardRef<SliderInfixProps, { kinds: typeof InfixKindEnum }>(SliderInfix, {\n kinds: InfixKindEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","SliderInfix","_ref","_ref$kind","kind","kinds","PREFIX","_useSliderInfixCompon","useSliderInfixComponent","_useSliderInfixCompon2","_slicedToArray","modificators","InfixComponent","inlineStyle","React","className","cx","styles","infix","getStyle","map","m","style","InfixKindEnum"],"mappings":"0dAgBA,IAkBeA,EAAAA,GAlB8D,SAAvEC,EAAWC,GAAoG,IAAAC,EAAAD,EAArCE,KAAAA,OAAOH,IAAHE,EAAGF,EAAYI,MAAMC,OAAMH,EAC7GI,EAA4DC,EAAwBJ,GAAKK,EAAAC,EAAAH,EAAA,GAA1EI,EAAYF,EAAA,GAAEG,EAAcH,EAAA,GAAEI,EAAWJ,EAAA,GACxD,OADaA,EAAA,IAGTK,uBACEC,UAAWC,EACTC,EAAOC,MACPC,EAASF,EAAQb,GACjBO,EAAaS,KAAI,SAAAC,GAAC,OAAIF,EAASF,EAAQI,EAAE,KAE3CC,MAAOT,GAEND,EAIT,GAEgH,CAC9GP,MAAOkB"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as o,defineProperty as e,toConsumableArray as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as i}from"../../../_virtual/_tslib.js";import{camelCase as n}from"lodash-es";import{getStyle as a}from"../../helpers/typesciptCssModulesHelper.js";import{getTestId as r,ComponentDefaultTestId as s}from"../../tests/testIds.js";import l from"classnames";import d,{useState as c,useRef as m,useCallback as u,useMemo as g}from"react";import{SplitButtonSecondaryContentPosition as p,ENTER_KEYS as f,DEFAULT_DIALOG_SHOW_TRIGGER as D,DEFAULT_DIALOG_HIDE_TRIGGER as v,DIALOG_MOVE_BY as y,SECONDARY_BUTTON_ARIA_LABEL as C,SECONDARY_BUTTON_WRAPPER_CLASSNAME as T}from"./SplitButtonConstants.js";import{withStaticProps as S}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{HideShowEvent as N,AnimationType as b}from"../Dialog/DialogConstants.js";import{NOOP as h}from"../../utils/function-utils.js";import{isInsideClass as k}from"../../utils/dom-utils.js";import P from"../../hooks/useKeyEvent/index.js";import j from"../../hooks/useEventListener/index.js";import I from"../Button/Button.js";import B from"../Dialog/Dialog.js";import O from"../DialogContentContainer/DialogContentContainer.js";import E from"./SplitButton.module.scss.js";import{ComponentVibeId as _}from"../../tests/constants.js";import z from"../../../icons/dist/react/DropdownChevronDown.js";var w=function(p){var S=p.secondaryDialogContent,w=p.onSecondaryDialogDidShow,L=void 0===w?h:w,A=p.onSecondaryDialogDidHide,x=void 0===A?h:A,R=p.shouldCloseOnClickInsideDialog,H=p.zIndex,U=void 0===H?null:H,M=p.secondaryDialogClassName,F=p.secondaryDialogPosition,K=void 0===F?"bottom-start":F,W=p.dialogContainerSelector,Y=p.dialogPaddingSize,V=void 0===Y?"medium":Y,X=p.disabled,q=p.loading,G=p.kind,J=p.color,Q=p.className,Z=p.leftIcon,$=p.rightIcon,oo=p.onClick,eo=p.children,to=p.marginLeft,io=p.marginRight,no=p.active,ao=p.id,ro=p["data-testid"],so=i(p,["secondaryDialogContent","onSecondaryDialogDidShow","onSecondaryDialogDidHide","shouldCloseOnClickInsideDialog","zIndex","secondaryDialogClassName","secondaryDialogPosition","dialogContainerSelector","dialogPaddingSize","disabled","success","loading","kind","color","className","leftIcon","rightIcon","onClick","children","marginLeft","marginRight","active","id","data-testid"]),lo=c(!1),co=o(lo,2),mo=co[0],uo=co[1],go=c(!1),po=o(go,2),fo=po[0],Do=po[1],vo=c(!1),yo=o(vo,2),Co=yo[0],To=yo[1],So=m(null),No=m(null),bo=u((function(){return Do(!0)}),[Do]),ho=u((function(){return Do(!1)}),[Do]),ko=u((function(o){return!X&&!k(o.target,T)}),[X]),Po=u((function(o){ko(o)&&To(!0)}),[To,ko]),jo=u((function(){return To(!1)}),[To]),Io=u((function(o){ko(o)&&To(!0)}),[To,ko]),Bo=u((function(){uo(!0),L()}),[uo,L]),Oo=u((function(o,e){uo(!1),x(),"esckey"===e&&No.current.focus()}),[uo,x]);j({eventName:"mouseenter",callback:bo,ref:So}),j({eventName:"mouseleave",callback:ho,ref:So}),j({eventName:"mousedown",callback:Po,ref:So}),j({eventName:"mouseup",callback:jo,ref:So}),j({eventName:"transitionend",callback:jo,ref:So}),P({keys:f,ref:So,callback:Io});var Eo=g((function(){return l(E.button,a(E,n("kind-"+G)),a(E,n("color-"+J)),e(e(e(e(e({},E.mainActive,no),E.active,Co),E.splitContentOpen,mo),E.hovered,fo),E.disabled,X),Q)}),[Q,G,J,no,Co,mo,fo,X]),_o=g((function(){return X?[]:D}),[X]),zo=g((function(){return R?[].concat(t(v),[N.CONTENT_CLICK]):v}),[R]),wo=u((function(){var o="function"==typeof S?S():S;return d.createElement(O,{type:O.types.POPOVER,size:V},o)}),[S,V]),Lo=g((function(){return"bottom"===K?"":"bottom-start"===K?"bottom":"top"}),[K]);return d.createElement("div",{className:Eo,ref:So,id:ao,"data-testid":ro||r(s.SPLIT_BUTTON,ao),"data-vibe":_.SPLIT_BUTTON},d.createElement(I,Object.assign({},so,{preventClickAnimation:!0,leftIcon:Z,rightIcon:$,rightFlat:!0,color:J,kind:G,active:no,onClick:oo,className:E.mainButton,marginLeft:to,onFocus:bo,onBlur:ho,disabled:X,loading:q,"data-testid":r(s.SPLIT_BUTTON_PRIMARY_BUTTON,ao)}),eo),d.createElement("div",{className:E.secondaryButtonWrapper},d.createElement(B,{wrapperClassName:M,zIndex:U,content:wo,position:K,containerSelector:W,startingEdge:Lo,animationType:b.EXPAND,moveBy:y,onDialogDidShow:Bo,onDialogDidHide:Oo,showTrigger:_o,hideTrigger:zo},d.createElement(I,Object.assign({},so,{ref:No,preventClickAnimation:!0,leftFlat:!0,noSidePadding:!0,color:J,kind:G,className:E.secondaryButton,active:mo,marginRight:io,onFocus:bo,onBlur:ho,disabled:X,ariaLabel:C,ariaHasPopup:!0,ariaExpanded:mo,"data-testid":r(s.SPLIT_BUTTON_SECONDARY_BUTTON,ao)}),d.createElement("div",{className:E.secondaryButtonIconWrapper},d.createElement(z,{"aria-hidden":"true"}))))))};w.defaultProps=Object.assign(Object.assign({},I.defaultProps),{onSecondaryDialogDidShow:h,onSecondaryDialogDidHide:h,zIndex:null,secondaryDialogClassName:"",secondaryDialogPosition:p.BOTTOM_START,dialogPaddingSize:O.sizes.MEDIUM});var L=S(w,{secondaryPositions:p,secondaryDialogPositions:p,sizes:I.sizes,colors:I.colors,kinds:I.kinds,inputTags:I.inputTags,dialogPaddingSizes:O.sizes});export{L as default};
1
+ import{slicedToArray as o,defineProperty as e,toConsumableArray as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as i}from"../../../_virtual/_tslib.js";import{camelCase as n}from"lodash-es";import{getStyle as a}from"../../helpers/typesciptCssModulesHelper.js";import{getTestId as r,ComponentDefaultTestId as s}from"../../tests/testIds.js";import l from"classnames";import d,{useState as c,useRef as m,useCallback as u,useMemo as g}from"react";import{SplitButtonSecondaryContentPosition as p,ENTER_KEYS as f,DEFAULT_DIALOG_SHOW_TRIGGER as D,DEFAULT_DIALOG_HIDE_TRIGGER as v,DIALOG_MOVE_BY as y,SECONDARY_BUTTON_ARIA_LABEL as C,SECONDARY_BUTTON_WRAPPER_CLASSNAME as T}from"./SplitButtonConstants.js";import{withStaticPropsWithoutForwardRef as S}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{HideShowEvent as N,AnimationType as b}from"../Dialog/DialogConstants.js";import{NOOP as h}from"../../utils/function-utils.js";import{isInsideClass as k}from"../../utils/dom-utils.js";import P from"../../hooks/useKeyEvent/index.js";import j from"../../hooks/useEventListener/index.js";import I from"../Button/Button.js";import B from"../Dialog/Dialog.js";import O from"../DialogContentContainer/DialogContentContainer.js";import E from"./SplitButton.module.scss.js";import{ComponentVibeId as _}from"../../tests/constants.js";import z from"../../../icons/dist/react/DropdownChevronDown.js";var w=function(p){var S=p.secondaryDialogContent,w=p.onSecondaryDialogDidShow,L=void 0===w?h:w,A=p.onSecondaryDialogDidHide,x=void 0===A?h:A,R=p.shouldCloseOnClickInsideDialog,H=p.zIndex,U=void 0===H?null:H,M=p.secondaryDialogClassName,F=p.secondaryDialogPosition,K=void 0===F?"bottom-start":F,W=p.dialogContainerSelector,Y=p.dialogPaddingSize,V=void 0===Y?"medium":Y,X=p.disabled,q=p.loading,G=p.kind,J=p.color,Q=p.className,Z=p.leftIcon,$=p.rightIcon,oo=p.onClick,eo=p.children,to=p.marginLeft,io=p.marginRight,no=p.active,ao=p.id,ro=p["data-testid"],so=i(p,["secondaryDialogContent","onSecondaryDialogDidShow","onSecondaryDialogDidHide","shouldCloseOnClickInsideDialog","zIndex","secondaryDialogClassName","secondaryDialogPosition","dialogContainerSelector","dialogPaddingSize","disabled","success","loading","kind","color","className","leftIcon","rightIcon","onClick","children","marginLeft","marginRight","active","id","data-testid"]),lo=c(!1),co=o(lo,2),mo=co[0],uo=co[1],go=c(!1),po=o(go,2),fo=po[0],Do=po[1],vo=c(!1),yo=o(vo,2),Co=yo[0],To=yo[1],So=m(null),No=m(null),bo=u((function(){return Do(!0)}),[Do]),ho=u((function(){return Do(!1)}),[Do]),ko=u((function(o){return!X&&!k(o.target,T)}),[X]),Po=u((function(o){ko(o)&&To(!0)}),[To,ko]),jo=u((function(){return To(!1)}),[To]),Io=u((function(o){ko(o)&&To(!0)}),[To,ko]),Bo=u((function(){uo(!0),L()}),[uo,L]),Oo=u((function(o,e){uo(!1),x(),"esckey"===e&&No.current.focus()}),[uo,x]);j({eventName:"mouseenter",callback:bo,ref:So}),j({eventName:"mouseleave",callback:ho,ref:So}),j({eventName:"mousedown",callback:Po,ref:So}),j({eventName:"mouseup",callback:jo,ref:So}),j({eventName:"transitionend",callback:jo,ref:So}),P({keys:f,ref:So,callback:Io});var Eo=g((function(){return l(E.button,a(E,n("kind-"+G)),a(E,n("color-"+J)),e(e(e(e(e({},E.mainActive,no),E.active,Co),E.splitContentOpen,mo),E.hovered,fo),E.disabled,X),Q)}),[Q,G,J,no,Co,mo,fo,X]),_o=g((function(){return X?[]:D}),[X]),zo=g((function(){return R?[].concat(t(v),[N.CONTENT_CLICK]):v}),[R]),wo=u((function(){var o="function"==typeof S?S():S;return d.createElement(O,{type:O.types.POPOVER,size:V},o)}),[S,V]),Lo=g((function(){return"bottom"===K?"":"bottom-start"===K?"bottom":"top"}),[K]);return d.createElement("div",{className:Eo,ref:So,id:ao,"data-testid":ro||r(s.SPLIT_BUTTON,ao),"data-vibe":_.SPLIT_BUTTON},d.createElement(I,Object.assign({},so,{preventClickAnimation:!0,leftIcon:Z,rightIcon:$,rightFlat:!0,color:J,kind:G,active:no,onClick:oo,className:E.mainButton,marginLeft:to,onFocus:bo,onBlur:ho,disabled:X,loading:q,"data-testid":r(s.SPLIT_BUTTON_PRIMARY_BUTTON,ao)}),eo),d.createElement("div",{className:E.secondaryButtonWrapper},d.createElement(B,{wrapperClassName:M,zIndex:U,content:wo,position:K,containerSelector:W,startingEdge:Lo,animationType:b.EXPAND,moveBy:y,onDialogDidShow:Bo,onDialogDidHide:Oo,showTrigger:_o,hideTrigger:zo},d.createElement(I,Object.assign({},so,{ref:No,preventClickAnimation:!0,leftFlat:!0,noSidePadding:!0,color:J,kind:G,className:E.secondaryButton,active:mo,marginRight:io,onFocus:bo,onBlur:ho,disabled:X,ariaLabel:C,ariaHasPopup:!0,ariaExpanded:mo,"data-testid":r(s.SPLIT_BUTTON_SECONDARY_BUTTON,ao)}),d.createElement("div",{className:E.secondaryButtonIconWrapper},d.createElement(z,{"aria-hidden":"true"}))))))};w.defaultProps=Object.assign(Object.assign({},I.defaultProps),{onSecondaryDialogDidShow:h,onSecondaryDialogDidHide:h,zIndex:null,secondaryDialogClassName:"",secondaryDialogPosition:p.BOTTOM_START,dialogPaddingSize:O.sizes.MEDIUM});var L=S(w,{secondaryPositions:p,secondaryDialogPositions:p,sizes:I.sizes,colors:I.colors,kinds:I.kinds,inputTags:I.inputTags,dialogPaddingSizes:O.sizes});export{L as default};
2
2
  //# sourceMappingURL=SplitButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SplitButton.js","sources":["../../../../../src/components/SplitButton/SplitButton.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { camelCase } from \"lodash-es\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\n// Libraries import\nimport React, { ReactElement, useCallback, useMemo, useRef, useState } from \"react\";\n// Constants import\nimport {\n DEFAULT_DIALOG_HIDE_TRIGGER,\n DEFAULT_DIALOG_SHOW_TRIGGER,\n DIALOG_MOVE_BY,\n ENTER_KEYS,\n SECONDARY_BUTTON_ARIA_LABEL,\n SECONDARY_BUTTON_WRAPPER_CLASSNAME,\n SplitButtonSecondaryContentPosition,\n SplitButtonSecondaryContentPositionType\n} from \"./SplitButtonConstants\";\nimport { withStaticProps } from \"../../types\";\nimport { AnimationType, DialogPosition, HideShowEvent } from \"../Dialog/DialogConstants\";\n// Utils import\nimport { NOOP } from \"../../utils/function-utils\";\nimport { isInsideClass } from \"../../utils/dom-utils\";\n// Hooks import\nimport useKeyEvent from \"../../hooks/useKeyEvent\";\nimport useEventListener from \"../../hooks/useEventListener\";\n// Components import\nimport Button, { ButtonProps } from \"../Button/Button\";\nimport Dialog, { DialogEvent } from \"../Dialog/Dialog\";\nimport { DropdownChevronDown } from \"@vibe/icons\";\nimport DialogContentContainer from \"../DialogContentContainer/DialogContentContainer\";\nimport styles from \"./SplitButton.module.scss\";\nimport { DialogSize, DialogTriggerEvent } from \"../Dialog\";\nimport { ComponentVibeId } from \"../../tests/constants\";\n\nexport interface SplitButtonProps extends ButtonProps {\n /**\n * The element or renderer that is displayed inside the dialog opened by clicking the secondary button.\n */\n secondaryDialogContent?: ReactElement | (() => string | ReactElement);\n /**\n * Callback fired when the secondary dialog is shown.\n */\n onSecondaryDialogDidShow?: () => void;\n /**\n * Callback fired when the secondary dialog is hidden.\n */\n onSecondaryDialogDidHide?: () => void;\n /**\n * The z-index applied to the secondary dialog.\n */\n zIndex?: number;\n /**\n * Class name applied to the wrapper of the secondary dialog.\n */\n secondaryDialogClassName?: string;\n /**\n * The position of the secondary dialog.\n */\n secondaryDialogPosition?: SplitButtonSecondaryContentPositionType;\n /**\n * The padding size inside the secondary dialog.\n */\n dialogPaddingSize?: DialogSize;\n /**\n * The CSS selector of the container where the dialog should be rendered.\n */\n dialogContainerSelector?: string;\n /**\n * If true, clicking inside the dialog will close it.\n */\n shouldCloseOnClickInsideDialog?: boolean;\n}\n\nconst SplitButton = ({\n secondaryDialogContent,\n onSecondaryDialogDidShow = NOOP,\n onSecondaryDialogDidHide = NOOP,\n shouldCloseOnClickInsideDialog,\n zIndex = null,\n secondaryDialogClassName,\n secondaryDialogPosition = \"bottom-start\",\n dialogContainerSelector,\n dialogPaddingSize = \"medium\",\n disabled,\n // success mode not working right now, need to fix it in different pr\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n success,\n loading,\n kind,\n color,\n className,\n leftIcon,\n rightIcon,\n onClick,\n children,\n marginLeft,\n marginRight,\n active,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}: SplitButtonProps) => {\n // State //\n const [isDialogOpen, setDialogOpen] = useState(false);\n const [isHovered, setIsHover] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n // Refs //\n const ref = useRef(null);\n const secondaryButtonRef = useRef(null);\n\n // Callbacks //\n const setHovered = useCallback(() => setIsHover(true), [setIsHover]);\n const setNotHovered = useCallback(() => setIsHover(false), [setIsHover]);\n\n const shouldSetActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (disabled) return false;\n return !isInsideClass(e.target as HTMLElement, SECONDARY_BUTTON_WRAPPER_CLASSNAME);\n },\n [disabled]\n );\n\n const setActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n const setNotActive = useCallback(() => setIsActive(false), [setIsActive]);\n const setActiveOnEnter = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n\n const showDialog = useCallback(() => {\n setDialogOpen(true);\n onSecondaryDialogDidShow();\n }, [setDialogOpen, onSecondaryDialogDidShow]);\n\n const hideDialog = useCallback(\n (_: DialogEvent, eventName: DialogTriggerEvent) => {\n setDialogOpen(false);\n onSecondaryDialogDidHide();\n if (eventName === \"esckey\") {\n secondaryButtonRef.current.focus();\n }\n },\n [setDialogOpen, onSecondaryDialogDidHide]\n );\n\n // Event listeners //\n\n // Used to set both buttons as hovered no matter what button was hovered\n useEventListener({ eventName: \"mouseenter\", callback: setHovered, ref });\n useEventListener({ eventName: \"mouseleave\", callback: setNotHovered, ref });\n\n useEventListener({ eventName: \"mousedown\", callback: setActive, ref });\n useEventListener({ eventName: \"mouseup\", callback: setNotActive, ref });\n\n // Used to finish active transition if clicked on enter\n useEventListener({ eventName: \"transitionend\", callback: setNotActive, ref });\n\n // Key events\n useKeyEvent({ keys: ENTER_KEYS, ref, callback: setActiveOnEnter });\n\n const classNames = useMemo(\n () =>\n cx(\n styles.button,\n getStyle(styles, camelCase(\"kind-\" + kind)),\n getStyle(styles, camelCase(\"color-\" + color)),\n {\n [styles.mainActive]: active,\n [styles.active]: isActive,\n [styles.splitContentOpen]: isDialogOpen,\n [styles.hovered]: isHovered,\n [styles.disabled]: disabled\n },\n className\n ),\n [className, kind, color, active, isActive, isDialogOpen, isHovered, disabled]\n );\n\n const dialogShowTrigger = useMemo(() => (disabled ? [] : DEFAULT_DIALOG_SHOW_TRIGGER), [disabled]);\n\n const dialogHideTrigger = useMemo(() => {\n if (shouldCloseOnClickInsideDialog) return [...DEFAULT_DIALOG_HIDE_TRIGGER, HideShowEvent.CONTENT_CLICK];\n return DEFAULT_DIALOG_HIDE_TRIGGER;\n }, [shouldCloseOnClickInsideDialog]);\n\n const actionsContent = useCallback(() => {\n const content = typeof secondaryDialogContent === \"function\" ? secondaryDialogContent() : secondaryDialogContent;\n return (\n <DialogContentContainer type={DialogContentContainer.types.POPOVER} size={dialogPaddingSize}>\n {content}\n </DialogContentContainer>\n );\n }, [secondaryDialogContent, dialogPaddingSize]);\n\n const animationEdgePosition = useMemo(() => {\n if (secondaryDialogPosition === \"bottom\") {\n return \"\";\n }\n if (secondaryDialogPosition === \"bottom-start\") {\n return \"bottom\";\n }\n\n return \"top\";\n }, [secondaryDialogPosition]);\n\n return (\n <div\n className={classNames}\n ref={ref}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.SPLIT_BUTTON, id)}\n data-vibe={ComponentVibeId.SPLIT_BUTTON}\n >\n <Button\n {\n ...buttonProps /* We are enriching button with other props so we must use spreading */\n }\n preventClickAnimation\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n rightFlat\n color={color}\n kind={kind}\n active={active}\n onClick={onClick}\n className={styles.mainButton}\n marginLeft={marginLeft}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n loading={loading}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_PRIMARY_BUTTON, id)}\n >\n {children}\n </Button>\n <div className={styles.secondaryButtonWrapper}>\n <Dialog\n wrapperClassName={secondaryDialogClassName}\n zIndex={zIndex}\n content={actionsContent}\n position={secondaryDialogPosition as DialogPosition}\n containerSelector={dialogContainerSelector}\n startingEdge={animationEdgePosition}\n animationType={AnimationType.EXPAND}\n moveBy={DIALOG_MOVE_BY}\n onDialogDidShow={showDialog}\n onDialogDidHide={hideDialog}\n showTrigger={dialogShowTrigger}\n hideTrigger={dialogHideTrigger}\n >\n <Button\n {...buttonProps}\n ref={secondaryButtonRef}\n preventClickAnimation\n leftFlat\n noSidePadding\n color={color}\n kind={kind}\n className={styles.secondaryButton}\n active={isDialogOpen}\n marginRight={marginRight}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n ariaLabel={SECONDARY_BUTTON_ARIA_LABEL}\n ariaHasPopup\n ariaExpanded={isDialogOpen}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_SECONDARY_BUTTON, id)}\n >\n <div className={styles.secondaryButtonIconWrapper}>\n <DropdownChevronDown aria-hidden=\"true\" />\n </div>\n </Button>\n </Dialog>\n </div>\n </div>\n );\n};\n\nSplitButton.defaultProps = {\n ...Button.defaultProps,\n onSecondaryDialogDidShow: NOOP,\n onSecondaryDialogDidHide: NOOP,\n zIndex: null,\n secondaryDialogClassName: \"\",\n secondaryDialogPosition: SplitButtonSecondaryContentPosition.BOTTOM_START,\n dialogPaddingSize: DialogContentContainer.sizes.MEDIUM\n};\n\ninterface SplitButtonStaticProps {\n secondaryPositions: typeof SplitButtonSecondaryContentPosition;\n secondaryDialogPositions: typeof SplitButtonSecondaryContentPosition;\n sizes: typeof Button.sizes;\n colors: typeof Button.colors;\n kinds: typeof Button.kinds;\n inputTags: typeof Button.inputTags;\n dialogPaddingSizes: typeof DialogContentContainer.sizes;\n}\n\nexport default withStaticProps<SplitButtonProps, SplitButtonStaticProps>(SplitButton, {\n secondaryPositions: SplitButtonSecondaryContentPosition,\n secondaryDialogPositions: SplitButtonSecondaryContentPosition,\n sizes: Button.sizes,\n colors: Button.colors,\n kinds: Button.kinds,\n inputTags: Button.inputTags,\n dialogPaddingSizes: DialogContentContainer.sizes\n});\n"],"names":["SplitButton","_a","secondaryDialogContent","_a$onSecondaryDialogD","onSecondaryDialogDidShow","NOOP","_a$onSecondaryDialogD2","onSecondaryDialogDidHide","shouldCloseOnClickInsideDialog","_a$zIndex","zIndex","secondaryDialogClassName","_a$secondaryDialogPos","secondaryDialogPosition","dialogContainerSelector","_a$dialogPaddingSize","dialogPaddingSize","disabled","loading","kind","color","className","leftIcon","rightIcon","onClick","children","marginLeft","marginRight","active","id","dataTestId","buttonProps","__rest","_useState","useState","_useState2","_slicedToArray","isDialogOpen","setDialogOpen","_useState3","_useState4","isHovered","setIsHover","_useState5","_useState6","isActive","setIsActive","ref","useRef","secondaryButtonRef","setHovered","useCallback","setNotHovered","shouldSetActive","e","isInsideClass","target","SECONDARY_BUTTON_WRAPPER_CLASSNAME","setActive","setNotActive","setActiveOnEnter","showDialog","hideDialog","_","eventName","current","focus","useEventListener","callback","useKeyEvent","keys","ENTER_KEYS","classNames","useMemo","cx","styles","button","getStyle","camelCase","_defineProperty","mainActive","splitContentOpen","hovered","dialogShowTrigger","DEFAULT_DIALOG_SHOW_TRIGGER","dialogHideTrigger","concat","_toConsumableArray","DEFAULT_DIALOG_HIDE_TRIGGER","HideShowEvent","CONTENT_CLICK","actionsContent","content","React","createElement","DialogContentContainer","type","types","POPOVER","size","animationEdgePosition","getTestId","ComponentDefaultTestId","SPLIT_BUTTON","ComponentVibeId","Button","Object","assign","preventClickAnimation","rightFlat","mainButton","onFocus","onBlur","SPLIT_BUTTON_PRIMARY_BUTTON","secondaryButtonWrapper","Dialog","wrapperClassName","position","containerSelector","startingEdge","animationType","AnimationType","EXPAND","moveBy","DIALOG_MOVE_BY","onDialogDidShow","onDialogDidHide","showTrigger","hideTrigger","leftFlat","noSidePadding","secondaryButton","ariaLabel","SECONDARY_BUTTON_ARIA_LABEL","ariaHasPopup","ariaExpanded","SPLIT_BUTTON_SECONDARY_BUTTON","secondaryButtonIconWrapper","DropdownChevronDown","defaultProps","SplitButtonSecondaryContentPosition","BOTTOM_START","sizes","MEDIUM","withStaticProps","secondaryPositions","secondaryDialogPositions","colors","kinds","inputTags","dialogPaddingSizes"],"mappings":"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"}
1
+ {"version":3,"file":"SplitButton.js","sources":["../../../../../src/components/SplitButton/SplitButton.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { camelCase } from \"lodash-es\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\n// Libraries import\nimport React, { ReactElement, useCallback, useMemo, useRef, useState } from \"react\";\n// Constants import\nimport {\n DEFAULT_DIALOG_HIDE_TRIGGER,\n DEFAULT_DIALOG_SHOW_TRIGGER,\n DIALOG_MOVE_BY,\n ENTER_KEYS,\n SECONDARY_BUTTON_ARIA_LABEL,\n SECONDARY_BUTTON_WRAPPER_CLASSNAME,\n SplitButtonSecondaryContentPosition,\n SplitButtonSecondaryContentPositionType\n} from \"./SplitButtonConstants\";\nimport { withStaticPropsWithoutForwardRef } from \"../../types\";\nimport { AnimationType, DialogPosition, HideShowEvent } from \"../Dialog/DialogConstants\";\n// Utils import\nimport { NOOP } from \"../../utils/function-utils\";\nimport { isInsideClass } from \"../../utils/dom-utils\";\n// Hooks import\nimport useKeyEvent from \"../../hooks/useKeyEvent\";\nimport useEventListener from \"../../hooks/useEventListener\";\n// Components import\nimport Button, { ButtonProps } from \"../Button/Button\";\nimport Dialog, { DialogEvent } from \"../Dialog/Dialog\";\nimport { DropdownChevronDown } from \"@vibe/icons\";\nimport DialogContentContainer from \"../DialogContentContainer/DialogContentContainer\";\nimport styles from \"./SplitButton.module.scss\";\nimport { DialogSize, DialogTriggerEvent } from \"../Dialog\";\nimport { ComponentVibeId } from \"../../tests/constants\";\n\nexport interface SplitButtonProps extends ButtonProps {\n /**\n * The element or renderer that is displayed inside the dialog opened by clicking the secondary button.\n */\n secondaryDialogContent?: ReactElement | (() => string | ReactElement);\n /**\n * Callback fired when the secondary dialog is shown.\n */\n onSecondaryDialogDidShow?: () => void;\n /**\n * Callback fired when the secondary dialog is hidden.\n */\n onSecondaryDialogDidHide?: () => void;\n /**\n * The z-index applied to the secondary dialog.\n */\n zIndex?: number;\n /**\n * Class name applied to the wrapper of the secondary dialog.\n */\n secondaryDialogClassName?: string;\n /**\n * The position of the secondary dialog.\n */\n secondaryDialogPosition?: SplitButtonSecondaryContentPositionType;\n /**\n * The padding size inside the secondary dialog.\n */\n dialogPaddingSize?: DialogSize;\n /**\n * The CSS selector of the container where the dialog should be rendered.\n */\n dialogContainerSelector?: string;\n /**\n * If true, clicking inside the dialog will close it.\n */\n shouldCloseOnClickInsideDialog?: boolean;\n}\n\nconst SplitButton = ({\n secondaryDialogContent,\n onSecondaryDialogDidShow = NOOP,\n onSecondaryDialogDidHide = NOOP,\n shouldCloseOnClickInsideDialog,\n zIndex = null,\n secondaryDialogClassName,\n secondaryDialogPosition = \"bottom-start\",\n dialogContainerSelector,\n dialogPaddingSize = \"medium\",\n disabled,\n // success mode not working right now, need to fix it in different pr\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n success,\n loading,\n kind,\n color,\n className,\n leftIcon,\n rightIcon,\n onClick,\n children,\n marginLeft,\n marginRight,\n active,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}: SplitButtonProps) => {\n // State //\n const [isDialogOpen, setDialogOpen] = useState(false);\n const [isHovered, setIsHover] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n // Refs //\n const ref = useRef(null);\n const secondaryButtonRef = useRef(null);\n\n // Callbacks //\n const setHovered = useCallback(() => setIsHover(true), [setIsHover]);\n const setNotHovered = useCallback(() => setIsHover(false), [setIsHover]);\n\n const shouldSetActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (disabled) return false;\n return !isInsideClass(e.target as HTMLElement, SECONDARY_BUTTON_WRAPPER_CLASSNAME);\n },\n [disabled]\n );\n\n const setActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n const setNotActive = useCallback(() => setIsActive(false), [setIsActive]);\n const setActiveOnEnter = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n\n const showDialog = useCallback(() => {\n setDialogOpen(true);\n onSecondaryDialogDidShow();\n }, [setDialogOpen, onSecondaryDialogDidShow]);\n\n const hideDialog = useCallback(\n (_: DialogEvent, eventName: DialogTriggerEvent) => {\n setDialogOpen(false);\n onSecondaryDialogDidHide();\n if (eventName === \"esckey\") {\n secondaryButtonRef.current.focus();\n }\n },\n [setDialogOpen, onSecondaryDialogDidHide]\n );\n\n // Event listeners //\n\n // Used to set both buttons as hovered no matter what button was hovered\n useEventListener({ eventName: \"mouseenter\", callback: setHovered, ref });\n useEventListener({ eventName: \"mouseleave\", callback: setNotHovered, ref });\n\n useEventListener({ eventName: \"mousedown\", callback: setActive, ref });\n useEventListener({ eventName: \"mouseup\", callback: setNotActive, ref });\n\n // Used to finish active transition if clicked on enter\n useEventListener({ eventName: \"transitionend\", callback: setNotActive, ref });\n\n // Key events\n useKeyEvent({ keys: ENTER_KEYS, ref, callback: setActiveOnEnter });\n\n const classNames = useMemo(\n () =>\n cx(\n styles.button,\n getStyle(styles, camelCase(\"kind-\" + kind)),\n getStyle(styles, camelCase(\"color-\" + color)),\n {\n [styles.mainActive]: active,\n [styles.active]: isActive,\n [styles.splitContentOpen]: isDialogOpen,\n [styles.hovered]: isHovered,\n [styles.disabled]: disabled\n },\n className\n ),\n [className, kind, color, active, isActive, isDialogOpen, isHovered, disabled]\n );\n\n const dialogShowTrigger = useMemo(() => (disabled ? [] : DEFAULT_DIALOG_SHOW_TRIGGER), [disabled]);\n\n const dialogHideTrigger = useMemo(() => {\n if (shouldCloseOnClickInsideDialog) return [...DEFAULT_DIALOG_HIDE_TRIGGER, HideShowEvent.CONTENT_CLICK];\n return DEFAULT_DIALOG_HIDE_TRIGGER;\n }, [shouldCloseOnClickInsideDialog]);\n\n const actionsContent = useCallback(() => {\n const content = typeof secondaryDialogContent === \"function\" ? secondaryDialogContent() : secondaryDialogContent;\n return (\n <DialogContentContainer type={DialogContentContainer.types.POPOVER} size={dialogPaddingSize}>\n {content}\n </DialogContentContainer>\n );\n }, [secondaryDialogContent, dialogPaddingSize]);\n\n const animationEdgePosition = useMemo(() => {\n if (secondaryDialogPosition === \"bottom\") {\n return \"\";\n }\n if (secondaryDialogPosition === \"bottom-start\") {\n return \"bottom\";\n }\n\n return \"top\";\n }, [secondaryDialogPosition]);\n\n return (\n <div\n className={classNames}\n ref={ref}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.SPLIT_BUTTON, id)}\n data-vibe={ComponentVibeId.SPLIT_BUTTON}\n >\n <Button\n {\n ...buttonProps /* We are enriching button with other props so we must use spreading */\n }\n preventClickAnimation\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n rightFlat\n color={color}\n kind={kind}\n active={active}\n onClick={onClick}\n className={styles.mainButton}\n marginLeft={marginLeft}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n loading={loading}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_PRIMARY_BUTTON, id)}\n >\n {children}\n </Button>\n <div className={styles.secondaryButtonWrapper}>\n <Dialog\n wrapperClassName={secondaryDialogClassName}\n zIndex={zIndex}\n content={actionsContent}\n position={secondaryDialogPosition as DialogPosition}\n containerSelector={dialogContainerSelector}\n startingEdge={animationEdgePosition}\n animationType={AnimationType.EXPAND}\n moveBy={DIALOG_MOVE_BY}\n onDialogDidShow={showDialog}\n onDialogDidHide={hideDialog}\n showTrigger={dialogShowTrigger}\n hideTrigger={dialogHideTrigger}\n >\n <Button\n {...buttonProps}\n ref={secondaryButtonRef}\n preventClickAnimation\n leftFlat\n noSidePadding\n color={color}\n kind={kind}\n className={styles.secondaryButton}\n active={isDialogOpen}\n marginRight={marginRight}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n ariaLabel={SECONDARY_BUTTON_ARIA_LABEL}\n ariaHasPopup\n ariaExpanded={isDialogOpen}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_SECONDARY_BUTTON, id)}\n >\n <div className={styles.secondaryButtonIconWrapper}>\n <DropdownChevronDown aria-hidden=\"true\" />\n </div>\n </Button>\n </Dialog>\n </div>\n </div>\n );\n};\n\nSplitButton.defaultProps = {\n ...Button.defaultProps,\n onSecondaryDialogDidShow: NOOP,\n onSecondaryDialogDidHide: NOOP,\n zIndex: null,\n secondaryDialogClassName: \"\",\n secondaryDialogPosition: SplitButtonSecondaryContentPosition.BOTTOM_START,\n dialogPaddingSize: DialogContentContainer.sizes.MEDIUM\n};\n\ninterface SplitButtonStaticProps {\n secondaryPositions: typeof SplitButtonSecondaryContentPosition;\n secondaryDialogPositions: typeof SplitButtonSecondaryContentPosition;\n sizes: typeof Button.sizes;\n colors: typeof Button.colors;\n kinds: typeof Button.kinds;\n inputTags: typeof Button.inputTags;\n dialogPaddingSizes: typeof DialogContentContainer.sizes;\n}\n\nexport default withStaticPropsWithoutForwardRef<SplitButtonProps, SplitButtonStaticProps>(SplitButton, {\n secondaryPositions: SplitButtonSecondaryContentPosition,\n secondaryDialogPositions: SplitButtonSecondaryContentPosition,\n sizes: Button.sizes,\n colors: Button.colors,\n kinds: Button.kinds,\n inputTags: Button.inputTags,\n dialogPaddingSizes: DialogContentContainer.sizes\n});\n"],"names":["SplitButton","_a","secondaryDialogContent","_a$onSecondaryDialogD","onSecondaryDialogDidShow","NOOP","_a$onSecondaryDialogD2","onSecondaryDialogDidHide","shouldCloseOnClickInsideDialog","_a$zIndex","zIndex","secondaryDialogClassName","_a$secondaryDialogPos","secondaryDialogPosition","dialogContainerSelector","_a$dialogPaddingSize","dialogPaddingSize","disabled","loading","kind","color","className","leftIcon","rightIcon","onClick","children","marginLeft","marginRight","active","id","dataTestId","buttonProps","__rest","_useState","useState","_useState2","_slicedToArray","isDialogOpen","setDialogOpen","_useState3","_useState4","isHovered","setIsHover","_useState5","_useState6","isActive","setIsActive","ref","useRef","secondaryButtonRef","setHovered","useCallback","setNotHovered","shouldSetActive","e","isInsideClass","target","SECONDARY_BUTTON_WRAPPER_CLASSNAME","setActive","setNotActive","setActiveOnEnter","showDialog","hideDialog","_","eventName","current","focus","useEventListener","callback","useKeyEvent","keys","ENTER_KEYS","classNames","useMemo","cx","styles","button","getStyle","camelCase","_defineProperty","mainActive","splitContentOpen","hovered","dialogShowTrigger","DEFAULT_DIALOG_SHOW_TRIGGER","dialogHideTrigger","concat","_toConsumableArray","DEFAULT_DIALOG_HIDE_TRIGGER","HideShowEvent","CONTENT_CLICK","actionsContent","content","React","createElement","DialogContentContainer","type","types","POPOVER","size","animationEdgePosition","getTestId","ComponentDefaultTestId","SPLIT_BUTTON","ComponentVibeId","Button","Object","assign","preventClickAnimation","rightFlat","mainButton","onFocus","onBlur","SPLIT_BUTTON_PRIMARY_BUTTON","secondaryButtonWrapper","Dialog","wrapperClassName","position","containerSelector","startingEdge","animationType","AnimationType","EXPAND","moveBy","DIALOG_MOVE_BY","onDialogDidShow","onDialogDidHide","showTrigger","hideTrigger","leftFlat","noSidePadding","secondaryButton","ariaLabel","SECONDARY_BUTTON_ARIA_LABEL","ariaHasPopup","ariaExpanded","SPLIT_BUTTON_SECONDARY_BUTTON","secondaryButtonIconWrapper","DropdownChevronDown","defaultProps","SplitButtonSecondaryContentPosition","BOTTOM_START","sizes","MEDIUM","withStaticPropsWithoutForwardRef","secondaryPositions","secondaryDialogPositions","colors","kinds","inputTags","dialogPaddingSizes"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,toConsumableArray as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import o from"classnames";import s,{forwardRef as r,useRef as i}from"react";import{noop as a}from"lodash-es";import n from"../../../hooks/useMergeRef.js";import{getStyle as c}from"../../../helpers/typesciptCssModulesHelper.js";import l from"../../Icon/Icon.js";import{getTestId as m,ComponentDefaultTestId as d}from"../../../tests/testIds.js";import p from"./Tab.module.scss.js";import f from"../../Tooltip/Tooltip.js";import{ComponentVibeId as u}from"../../../tests/constants.js";import{keyCodes as v}from"../../../constants/keyCodes.js";import"../../../constants/sizes.js";var b=r((function(r,b){var y=r.className,j=r.tabInnerClassName,C=r.id,T=r.value,k=void 0===T?0:T,E=r.disabled,I=void 0!==E&&E,N=r.active,h=void 0!==N&&N,A=r.focus,g=void 0!==A&&A,P=r.onClick,S=void 0===P?a:P,B=r.tooltipProps,H=void 0===B?{}:B,z=r.icon,D=r.iconType,F=r.iconSide,M=void 0===F?"left":F,R=r.children,_=r["data-testid"],w=i(null),x=n(b,w);return s.createElement(f,Object.assign({},H,{content:H.content}),s.createElement("li",{ref:x,key:C,className:o(p.tabWrapper,y,e(e(e({},p.active,h),p.disabled,I),p.tabFocusVisibleInset,g)),id:C,role:"tab","aria-selected":h,"aria-disabled":I,"data-testid":_||m(d.TAB,C),"data-vibe":u.TAB,onClick:function(){return!I&&S(k)},onKeyDown:function(e){e.key!==v.ENTER&&e.key!==v.SPACE||(e.preventDefault(),!I&&S(k))}},s.createElement("div",{className:o(p.tabInner,j)},function(){if(!z)return R;var e=s.createElement(l,{ariaHidden:!0,iconType:D,icon:z,className:o(p.tabIcon,c(p,M)),iconSize:18,ignoreFocusStyle:!0}),r=s.Children.toArray(R);return"left"===M?[e].concat(t(r)):[].concat(t(r),[e])}())))}));export{b as default};
1
+ import{defineProperty as e,toConsumableArray as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import o from"classnames";import r,{forwardRef as a,useRef as i}from"react";import{noop as s}from"lodash-es";import n from"../../../hooks/useMergeRef.js";import{getStyle as l}from"../../../helpers/typesciptCssModulesHelper.js";import c from"../../Icon/Icon.js";import{getTestId as m,ComponentDefaultTestId as d}from"../../../tests/testIds.js";import p from"./Tab.module.scss.js";import f from"../../Tooltip/Tooltip.js";import{ComponentVibeId as u}from"../../../tests/constants.js";var b=a((function(a,b){var v=a.className,j=a.tabInnerClassName,y=a.id,I=a.value,T=void 0===I?0:I,C=a.disabled,h=void 0!==C&&C,N=a.active,g=void 0!==N&&N,k=a.focus,A=void 0!==k&&k,E=a.onClick,B=void 0===E?s:E,H=a.tooltipProps,P=void 0===H?{}:H,S=a.icon,F=a.iconType,M=a.iconSide,_=void 0===M?"left":M,x=a.children,z=a["data-testid"],O=i(null),R=n(b,O);return r.createElement(f,Object.assign({},P,{content:P.content}),r.createElement("li",{ref:R,key:y,className:o(p.tabWrapper,v,e(e(e({},p.active,g),p.disabled,h),p.tabFocusVisibleInset,A)),id:y,role:"tab","aria-selected":g,"aria-disabled":h,"data-testid":z||m(d.TAB,y),"data-vibe":u.TAB},r.createElement("a",{className:o(p.tabInner,j),onClick:function(){return!h&&B(T)}},function(){if(!S)return x;var e=r.createElement(c,{ariaHidden:!0,iconType:F,icon:S,className:o(p.tabIcon,l(p,_)),iconSize:18,ignoreFocusStyle:!0}),a=r.Children.toArray(x);return"left"===_?[e].concat(t(a)):[].concat(t(a),[e])}())))}));export{b as default};
2
2
  //# sourceMappingURL=Tab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sources":["../../../../../../src/components/Tabs/Tab/Tab.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, { FC, forwardRef, ReactElement, useRef } from \"react\";\nimport { noop as NOOP } from \"lodash-es\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport Icon from \"../../Icon/Icon\";\nimport VibeComponentProps from \"../../../types/VibeComponentProps\";\nimport { IconType } from \"../../Icon\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport styles from \"./Tab.module.scss\";\nimport { SubIcon } from \"../../../types/SubIcon\";\nimport Tooltip, { TooltipProps } from \"../../Tooltip/Tooltip\";\nimport { ComponentVibeId } from \"../../../tests/constants\";\nimport { keyCodes } from \"../../../constants\";\n\nexport interface TabProps extends VibeComponentProps {\n /**\n * Class name applied to the inner tab content.\n */\n tabInnerClassName?: string;\n /**\n * The index value of the tab.\n */\n value?: number;\n /**\n * If true, disables the tab.\n */\n disabled?: boolean;\n /**\n * If true, marks the tab as active.\n */\n active?: boolean;\n /**\n * If true, applies focus styles to the tab.\n */\n focus?: boolean;\n /**\n * The icon displayed in the tab.\n */\n icon?: SubIcon;\n /**\n * The type of icon.\n */\n iconType?: IconType;\n /**\n * The position of the icon relative to the text.\n */\n iconSide?: string;\n /**\n * Callback fired when the tab is clicked.\n */\n onClick?: (value: number) => void;\n /**\n * Props passed to the tab's tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n /**\n * The content displayed inside the tab.\n */\n children?: string | ReactElement | ReactElement[];\n}\n\nconst Tab: FC<TabProps> = forwardRef(\n (\n {\n className,\n tabInnerClassName,\n id,\n value = 0,\n disabled = false,\n active = false,\n focus = false,\n onClick = NOOP,\n tooltipProps = {} as TooltipProps,\n icon,\n iconType,\n iconSide = \"left\",\n children,\n \"data-testid\": dataTestId\n }: TabProps,\n ref\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n function renderIconAndChildren() {\n if (!icon) return children;\n\n const iconElement = (\n <Icon\n ariaHidden={true}\n iconType={iconType}\n icon={icon}\n className={cx(styles.tabIcon, getStyle(styles, iconSide))}\n iconSize={18}\n ignoreFocusStyle\n />\n );\n\n const childrenArray = React.Children.toArray(children);\n\n if (iconSide === \"left\") {\n return [iconElement, ...childrenArray];\n }\n\n return [...childrenArray, iconElement];\n }\n\n function handleKeyDown(event: React.KeyboardEvent) {\n if (event.key === keyCodes.ENTER || event.key === keyCodes.SPACE) {\n event.preventDefault();\n !disabled && onClick(value);\n }\n }\n\n return (\n <Tooltip {...tooltipProps} content={tooltipProps.content}>\n <li\n ref={mergedRef}\n key={id}\n className={cx(styles.tabWrapper, className, {\n [styles.active]: active,\n [styles.disabled]: disabled,\n [styles.tabFocusVisibleInset]: focus\n })}\n id={id}\n role=\"tab\"\n aria-selected={active}\n aria-disabled={disabled}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TAB, id)}\n data-vibe={ComponentVibeId.TAB}\n onClick={() => !disabled && onClick(value)}\n onKeyDown={handleKeyDown}\n >\n <div className={cx(styles.tabInner, tabInnerClassName)}>{renderIconAndChildren()}</div>\n </li>\n </Tooltip>\n );\n }\n);\n\nexport default Tab;\n"],"names":["Tab","forwardRef","_ref","ref","className","tabInnerClassName","id","_ref$value","value","_ref$disabled","disabled","_ref$active","active","_ref$focus","focus","_ref$onClick","onClick","NOOP","_ref$tooltipProps","tooltipProps","icon","iconType","_ref$iconSide","iconSide","children","dataTestId","componentRef","useRef","mergedRef","useMergeRef","React","createElement","Tooltip","Object","assign","content","key","cx","styles","tabWrapper","_defineProperty","tabFocusVisibleInset","role","getTestId","ComponentDefaultTestId","TAB","ComponentVibeId","onKeyDown","event","keyCodes","ENTER","SPACE","preventDefault","tabInner","iconElement","Icon","ariaHidden","tabIcon","getStyle","iconSize","ignoreFocusStyle","childrenArray","Children","toArray","concat","_toConsumableArray","renderIconAndChildren"],"mappings":"yqBA8DMA,IAAAA,EAAoBC,GACxB,SAAAC,EAiBEC,GACE,IAhBAC,EAASF,EAATE,UACAC,EAAiBH,EAAjBG,kBACAC,EAAEJ,EAAFI,GAAEC,EAAAL,EACFM,MAAAA,OAAQ,IAAHD,EAAG,EAACA,EAAAE,EAAAP,EACTQ,SAAAA,OAAW,IAAHD,GAAQA,EAAAE,EAAAT,EAChBU,OAAAA,OAAS,IAAHD,GAAQA,EAAAE,EAAAX,EACdY,MAAAA,OAAQ,IAAHD,GAAQA,EAAAE,EAAAb,EACbc,QAAAA,OAAUC,IAAHF,EAAGE,EAAIF,EAAAG,EAAAhB,EACdiB,aAAAA,OAAY,IAAAD,EAAG,CAAkB,EAAAA,EACjCE,EAAIlB,EAAJkB,KACAC,EAAQnB,EAARmB,SAAQC,EAAApB,EACRqB,SAAAA,OAAW,IAAHD,EAAG,OAAMA,EACjBE,EAAQtB,EAARsB,SACeC,EAAUvB,EAAzB,eAIIwB,EAAeC,EAAO,MACtBC,EAAYC,EAAY1B,EAAKuB,GAgCnC,OACEI,EAACC,cAAAC,EAAYC,OAAAC,OAAA,CAAA,EAAAf,GAAcgB,QAAShB,EAAagB,UAC/CL,EAAAC,cAAA,KAAA,CACE5B,IAAKyB,EACLQ,IAAK9B,EACLF,UAAWiC,EAAGC,EAAOC,WAAYnC,EAASoC,EAAAA,EAAAA,EACvCF,GAAAA,EAAO1B,OAASA,GAChB0B,EAAO5B,SAAWA,GAClB4B,EAAOG,qBAAuB3B,IAEjCR,GAAIA,EACJoC,KAAK,MAAK,gBACK9B,EACA,gBAAAF,gBACFe,GAAckB,EAAUC,EAAuBC,IAAKvC,GAAG,YACzDwC,EAAgBD,IAC3B7B,QAAS,WAAA,OAAON,GAAYM,EAAQR,EAAM,EAC1CuC,UAxBN,SAAuBC,GACjBA,EAAMZ,MAAQa,EAASC,OAASF,EAAMZ,MAAQa,EAASE,QACzDH,EAAMI,kBACL1C,GAAYM,EAAQR,GAEzB,GAqBMsB,EAAAC,cAAA,MAAA,CAAK3B,UAAWiC,EAAGC,EAAOe,SAAUhD,IAjD1C,WACE,IAAKe,EAAM,OAAOI,EAElB,IAAM8B,EACJxB,gBAACyB,EAAI,CACHC,YAAY,EACZnC,SAAUA,EACVD,KAAMA,EACNhB,UAAWiC,EAAGC,EAAOmB,QAASC,EAASpB,EAAQf,IAC/CoC,SAAU,GACVC,kBAAgB,IAIdC,EAAgB/B,EAAMgC,SAASC,QAAQvC,GAE7C,MAAiB,SAAbD,EACF,CAAQ+B,GAAWU,OAAAC,EAAKJ,IAG1B,GAAAG,OAAAC,EAAWJ,IAAeP,GAC5B,CA4B+DY,KAIjE"}
1
+ {"version":3,"file":"Tab.js","sources":["../../../../../../src/components/Tabs/Tab/Tab.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, { FC, forwardRef, ReactElement, useRef } from \"react\";\nimport { noop as NOOP } from \"lodash-es\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport Icon from \"../../Icon/Icon\";\nimport VibeComponentProps from \"../../../types/VibeComponentProps\";\nimport { IconType } from \"../../Icon\";\nimport { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport styles from \"./Tab.module.scss\";\nimport { SubIcon } from \"../../../types/SubIcon\";\nimport Tooltip, { TooltipProps } from \"../../Tooltip/Tooltip\";\nimport { ComponentVibeId } from \"../../../tests/constants\";\n\nexport interface TabProps extends VibeComponentProps {\n /**\n * Class name applied to the inner tab content.\n */\n tabInnerClassName?: string;\n /**\n * The index value of the tab.\n */\n value?: number;\n /**\n * If true, disables the tab.\n */\n disabled?: boolean;\n /**\n * If true, marks the tab as active.\n */\n active?: boolean;\n /**\n * If true, applies focus styles to the tab.\n */\n focus?: boolean;\n /**\n * The icon displayed in the tab.\n */\n icon?: SubIcon;\n /**\n * The type of icon.\n */\n iconType?: IconType;\n /**\n * The position of the icon relative to the text.\n */\n iconSide?: string;\n /**\n * Callback fired when the tab is clicked.\n */\n onClick?: (value: number) => void;\n /**\n * Props passed to the tab's tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n /**\n * The content displayed inside the tab.\n */\n children?: string | ReactElement | ReactElement[];\n}\n\nconst Tab: FC<TabProps> = forwardRef(\n (\n {\n className,\n tabInnerClassName,\n id,\n value = 0,\n disabled = false,\n active = false,\n focus = false,\n onClick = NOOP,\n tooltipProps = {} as TooltipProps,\n icon,\n iconType,\n iconSide = \"left\",\n children,\n \"data-testid\": dataTestId\n }: TabProps,\n ref\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n function renderIconAndChildren() {\n if (!icon) return children;\n\n const iconElement = (\n <Icon\n ariaHidden={true}\n iconType={iconType}\n icon={icon}\n className={cx(styles.tabIcon, getStyle(styles, iconSide))}\n iconSize={18}\n ignoreFocusStyle\n />\n );\n\n const childrenArray = React.Children.toArray(children);\n\n if (iconSide === \"left\") {\n return [iconElement, ...childrenArray];\n }\n\n return [...childrenArray, iconElement];\n }\n return (\n <Tooltip {...tooltipProps} content={tooltipProps.content}>\n <li\n ref={mergedRef}\n key={id}\n className={cx(styles.tabWrapper, className, {\n [styles.active]: active,\n [styles.disabled]: disabled,\n [styles.tabFocusVisibleInset]: focus\n })}\n id={id}\n role=\"tab\"\n aria-selected={active}\n aria-disabled={disabled}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TAB, id)}\n data-vibe={ComponentVibeId.TAB}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid,jsx-a11y/click-events-have-key-events */}\n <a className={cx(styles.tabInner, tabInnerClassName)} onClick={() => !disabled && onClick(value)}>\n {renderIconAndChildren()}\n </a>\n </li>\n </Tooltip>\n );\n }\n);\n\nexport default Tab;\n"],"names":["Tab","forwardRef","_ref","ref","className","tabInnerClassName","id","_ref$value","value","_ref$disabled","disabled","_ref$active","active","_ref$focus","focus","_ref$onClick","onClick","NOOP","_ref$tooltipProps","tooltipProps","icon","iconType","_ref$iconSide","iconSide","children","dataTestId","componentRef","useRef","mergedRef","useMergeRef","React","createElement","Tooltip","Object","assign","content","key","cx","styles","tabWrapper","_defineProperty","tabFocusVisibleInset","role","getTestId","ComponentDefaultTestId","TAB","ComponentVibeId","tabInner","iconElement","Icon","ariaHidden","tabIcon","getStyle","iconSize","ignoreFocusStyle","childrenArray","Children","toArray","concat","_toConsumableArray","renderIconAndChildren"],"mappings":"2kBA6DMA,IAAAA,EAAoBC,GACxB,SAAAC,EAiBEC,GACE,IAhBAC,EAASF,EAATE,UACAC,EAAiBH,EAAjBG,kBACAC,EAAEJ,EAAFI,GAAEC,EAAAL,EACFM,MAAAA,OAAQ,IAAHD,EAAG,EAACA,EAAAE,EAAAP,EACTQ,SAAAA,OAAW,IAAHD,GAAQA,EAAAE,EAAAT,EAChBU,OAAAA,OAAS,IAAHD,GAAQA,EAAAE,EAAAX,EACdY,MAAAA,OAAQ,IAAHD,GAAQA,EAAAE,EAAAb,EACbc,QAAAA,OAAUC,IAAHF,EAAGE,EAAIF,EAAAG,EAAAhB,EACdiB,aAAAA,OAAY,IAAAD,EAAG,CAAkB,EAAAA,EACjCE,EAAIlB,EAAJkB,KACAC,EAAQnB,EAARmB,SAAQC,EAAApB,EACRqB,SAAAA,OAAW,IAAHD,EAAG,OAAMA,EACjBE,EAAQtB,EAARsB,SACeC,EAAUvB,EAAzB,eAIIwB,EAAeC,EAAO,MACtBC,EAAYC,EAAY1B,EAAKuB,GAwBnC,OACEI,EAACC,cAAAC,EAAYC,OAAAC,OAAA,CAAA,EAAAf,GAAcgB,QAAShB,EAAagB,UAC/CL,EAAAC,cAAA,KAAA,CACE5B,IAAKyB,EACLQ,IAAK9B,EACLF,UAAWiC,EAAGC,EAAOC,WAAYnC,EAASoC,EAAAA,EAAAA,EACvCF,GAAAA,EAAO1B,OAASA,GAChB0B,EAAO5B,SAAWA,GAClB4B,EAAOG,qBAAuB3B,IAEjCR,GAAIA,EACJoC,KAAK,MAAK,gBACK9B,EAAM,gBACNF,EAAQ,cACVe,GAAckB,EAAUC,EAAuBC,IAAKvC,GAAG,YACzDwC,EAAgBD,KAG3Bf,EAAAC,cAAA,IAAA,CAAG3B,UAAWiC,EAAGC,EAAOS,SAAU1C,GAAoBW,QAAS,WAAA,OAAON,GAAYM,EAAQR,EAAM,GAxCtG,WACE,IAAKY,EAAM,OAAOI,EAElB,IAAMwB,EACJlB,gBAACmB,EAAI,CACHC,YAAY,EACZ7B,SAAUA,EACVD,KAAMA,EACNhB,UAAWiC,EAAGC,EAAOa,QAASC,EAASd,EAAQf,IAC/C8B,SAAU,GACVC,kBAAgB,IAIdC,EAAgBzB,EAAM0B,SAASC,QAAQjC,GAE7C,MAAiB,SAAbD,EACF,CAAQyB,GAAWU,OAAAC,EAAKJ,IAG1B,GAAAG,OAAAC,EAAWJ,IAAeP,GAC5B,CAoBSY,KAKX"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import t from"classnames";import{camelCase as r}from"lodash-es";import s,{forwardRef as a,useRef as o,useState as i,useEffect as n,useMemo as l,useCallback as m}from"react";import d from"../../../hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js";import u from"../../../hooks/useMergeRef.js";import c from"../../../hooks/usePrevious/index.js";import{NOOP as p}from"../../../utils/function-utils.js";import{getTestId as f,ComponentDefaultTestId as b}from"../../../tests/testIds.js";import{getStyle as v}from"../../../helpers/typesciptCssModulesHelper.js";import h from"./TabList.module.scss.js";var I=a((function(a,I){var C=a.className,g=a.id,N=a.onTabChange,T=void 0===N?p:N,j=a.activeTabId,y=void 0===j?0:j,L=a.tabType,k=void 0===L?"Compact":L,x=a.size,A=a.children,E=a["data-testid"],B=o(null),S=u(I,B),_=i(y),G=e(_,2),H=G[0],K=G[1],M=c(y);n((function(){y!==M&&y!==H&&K(y)}),[y,M,H,K]);var O=l((function(){var e=new Set;return s.Children.forEach(A,(function(t,r){t.props.disabled&&e.add(r)})),e}),[A]),P=m((function(e){O.has(e)||(K(e),T&&T(e))}),[T,O]),W=m((function(e,t){var r,s=null===(r=A[t].props)||void 0===r?void 0:r.onClick;O.has(t)||(s&&s(t),P(t))}),[A,O,P]),w=m((function(e){return A[e]}),[A]),z=l((function(){return Array.from(O)}),[O]),R=o(),q=d({ref:R,numberOfItemsInLine:null==A?void 0:A.length,itemsCount:null==A?void 0:A.length,getItemByIndex:w,onItemClicked:W,disabledIndexes:z,circularNavigation:!0}),D=q.activeIndex,F=q.onSelectionAction,J=l((function(){return s.Children.map(A,(function(e,r){return s.cloneElement(e,{value:r,active:H===r,focus:D===r,onClick:F,className:t(h.tabListTabWrapper,e.props.className),tabInnerClassName:t(h.tabListTabInner,e.props.tabInnerClassName)})}))}),[A,H,D,F]);return s.createElement("div",{ref:S,className:t(h.tabsWrapper,C,[v(h,r(k))]),id:g,"data-testid":E||f(b.TAB_LIST,g)},s.createElement("ul",{ref:R,tabIndex:0,className:t(h.tabsList,[v(h,x)]),role:"tablist"},J))}));Object.assign(I,{isTabList:!0});export{I as default};
1
+ import{slicedToArray as e}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import t from"classnames";import{camelCase as r}from"lodash-es";import s,{forwardRef as o,useRef as a,useState as i,useEffect as n,useMemo as l,useCallback as m}from"react";import d from"../../../hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js";import u from"../../../hooks/useMergeRef.js";import c from"../../../hooks/usePrevious/index.js";import{NOOP as p}from"../../../utils/function-utils.js";import{getTestId as f,ComponentDefaultTestId as b}from"../../../tests/testIds.js";import{getStyle as v}from"../../../helpers/typesciptCssModulesHelper.js";import h from"./TabList.module.scss.js";var I=o((function(o,I){var C=o.className,T=o.id,g=o.onTabChange,j=void 0===g?p:g,N=o.activeTabId,y=void 0===N?0:N,L=o.tabType,k=void 0===L?"Compact":L,x=o.size,A=o.children,E=o["data-testid"],B=a(null),S=u(I,B),_=i(y),G=e(_,2),H=G[0],K=G[1],M=c(y);n((function(){y!==M&&y!==H&&K(y)}),[y,M,H,K]);var O=l((function(){var e=new Set;return s.Children.forEach(A,(function(t,r){t.props.disabled&&e.add(r)})),e}),[A]),P=m((function(e){O.has(e)||(K(e),j&&j(e))}),[j,O]),W=m((function(e,t){var r,s=null===(r=A[t].props)||void 0===r?void 0:r.onClick;O.has(t)||(s&&s(t),P(t))}),[A,O,P]),w=m((function(e){return A[e]}),[A]),z=l((function(){return Array.from(O)}),[O]),R=a(),q=d({ref:R,numberOfItemsInLine:null==A?void 0:A.length,itemsCount:null==A?void 0:A.length,getItemByIndex:w,onItemClicked:W,disabledIndexes:z}),D=q.activeIndex,F=q.onSelectionAction,J=l((function(){return s.Children.map(A,(function(e,r){return s.cloneElement(e,{value:r,active:H===r,focus:D===r,onClick:F,className:t(h.tabListTabWrapper,e.props.className),tabInnerClassName:t(h.tabListTabInner,e.props.tabInnerClassName)})}))}),[A,H,D,F]);return s.createElement("div",{ref:S,className:t(h.tabsWrapper,C,[v(h,r(k))]),id:T,"data-testid":E||f(b.TAB_LIST,T)},s.createElement("ul",{ref:R,tabIndex:0,className:t(h.tabsList,[v(h,x)]),role:"tablist"},J))}));Object.assign(I,{isTabList:!0});export{I as default};
2
2
  //# sourceMappingURL=TabList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabList.js","sources":["../../../../../../src/components/Tabs/TabList/TabList.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport { camelCase } from \"lodash-es\";\nimport React, { FC, forwardRef, ReactElement, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport useGridKeyboardNavigation from \"../../../hooks/useGridKeyboardNavigation/useGridKeyboardNavigation\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport usePrevious from \"../../../hooks/usePrevious\";\nimport VibeComponentProps from \"../../../types/VibeComponentProps\";\nimport { NOOP } from \"../../../utils/function-utils\";\nimport { 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 * The child elements representing tabs.\n */\n children?: ReactElement<TabProps>[];\n}\n\nconst TabList: FC<TabListProps> = forwardRef(\n (\n {\n className,\n id,\n onTabChange = NOOP,\n activeTabId = 0,\n tabType = \"Compact\",\n size,\n children,\n \"data-testid\": dataTestId\n },\n ref\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n const [activeTabState, setActiveTabState] = useState<number>(activeTabId);\n\n const prevActiveTabIdProp = usePrevious(activeTabId);\n\n useEffect(() => {\n // Update active tab if changed from props\n if (activeTabId !== prevActiveTabIdProp && activeTabId !== activeTabState) {\n setActiveTabState(activeTabId);\n }\n }, [activeTabId, prevActiveTabIdProp, activeTabState, setActiveTabState]);\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\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\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\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 const tabsToRender = useMemo(() => {\n const childrenToRender = React.Children.map(children, (child, index) => {\n return React.cloneElement(child, {\n value: index,\n active: activeTabState === index,\n focus: focusIndex === index,\n onClick: onSelectionAction,\n className: cx(styles.tabListTabWrapper, child.props.className),\n tabInnerClassName: cx(styles.tabListTabInner, child.props.tabInnerClassName)\n });\n });\n return childrenToRender;\n }, [children, activeTabState, focusIndex, onSelectionAction]);\n\n return (\n <div\n ref={mergedRef}\n className={cx(styles.tabsWrapper, className, [getStyle(styles, camelCase(tabType))])}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TAB_LIST, id)}\n >\n <ul ref={ulRef} tabIndex={0} className={cx(styles.tabsList, [getStyle(styles, size)])} role=\"tablist\">\n {tabsToRender}\n </ul>\n </div>\n );\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","children","dataTestId","componentRef","useRef","mergedRef","useMergeRef","_useState","useState","_useState2","_slicedToArray","activeTabState","setActiveTabState","prevActiveTabIdProp","usePrevious","useEffect","disabledTabIds","useMemo","disabledIds","Set","React","Children","forEach","child","index","props","disabled","add","onTabSelect","useCallback","tabId","has","onTabClick","value","tabCallbackFunc","_a","onClick","getItemByIndex","disabledIndexes","Array","from","ulRef","_useGridKeyboardNavig","useGridKeyboardNavigation","numberOfItemsInLine","length","itemsCount","onItemClicked","circularNavigation","focusIndex","activeIndex","onSelectionAction","tabsToRender","map","cloneElement","active","focus","cx","styles","tabListTabWrapper","tabInnerClassName","tabListTabInner","createElement","tabsWrapper","getStyle","camelCase","getTestId","ComponentDefaultTestId","TAB_LIST","tabIndex","tabsList","role","Object","assign","isTabList"],"mappings":"+qBAoCMA,IAAAA,EAA4BC,GAChC,SAAAC,EAWEC,GACE,IAVAC,EAASF,EAATE,UACAC,EAAEH,EAAFG,GAAEC,EAAAJ,EACFK,YAAAA,OAAcC,IAAHF,EAAGE,EAAIF,EAAAG,EAAAP,EAClBQ,YAAAA,OAAc,IAAHD,EAAG,EAACA,EAAAE,EAAAT,EACfU,QAAAA,OAAU,IAAHD,EAAG,UAASA,EACnBE,EAAIX,EAAJW,KACAC,EAAQZ,EAARY,SACeC,EAAUb,EAAzB,eAIIc,EAAeC,EAAO,MACtBC,EAAYC,EAAYhB,EAAKa,GAEnCI,EAA4CC,EAAiBX,GAAYY,EAAAC,EAAAH,EAAA,GAAlEI,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GAElCI,EAAsBC,EAAYjB,GAExCkB,GAAU,WAEJlB,IAAgBgB,GAAuBhB,IAAgBc,GACzDC,EAAkBf,EAErB,GAAE,CAACA,EAAagB,EAAqBF,EAAgBC,IAEtD,IAAMI,EAAiBC,GAAQ,WAC7B,IAAMC,EAAc,IAAIC,IAMxB,OALAC,EAAMC,SAASC,QAAQrB,GAAU,SAACsB,EAAOC,GACnCD,EAAME,MAAMC,UACdR,EAAYS,IAAIH,EAEpB,IACON,CACT,GAAG,CAACjB,IAEE2B,EAAcC,GAClB,SAACC,GACKd,EAAee,IAAID,KACvBlB,EAAkBkB,GAClBpC,GAAeA,EAAYoC,GAC7B,GACA,CAACpC,EAAasB,IAGVgB,EAAaH,GACjB,SAACI,EAA2BH,SACpBI,EAAyC,QAAvBC,EAAAlC,EAAS6B,GAAOL,aAAO,IAAAU,OAAA,EAAAA,EAAAC,QAC3CpB,EAAee,IAAID,KACnBI,GAAiBA,EAAgBJ,GACrCF,EAAYE,GACb,GACD,CAAC7B,EAAUe,EAAgBY,IAGvBS,EAAiBR,GAAY,SAACL,GAAa,OAA6BvB,EAASuB,KAAQ,CAACvB,IAC1FqC,EAAkBrB,GAAQ,WAAA,OAAMsB,MAAMC,KAAKxB,KAAiB,CAACA,IAC7DyB,EAAQrC,IACdsC,EAAuDC,EAA0B,CAC/ErD,IAAKmD,EACLG,oBAAqB3C,aAAA,EAAAA,EAAU4C,OAC/BC,WAAY7C,aAAA,EAAAA,EAAU4C,OACtBR,eAAAA,EACAU,cAAef,EACfM,gBAAAA,EACAU,oBAAoB,IAPDC,EAAUP,EAAvBQ,YAAyBC,EAAiBT,EAAjBS,kBAU3BC,EAAenC,GAAQ,WAW3B,OAVyBG,EAAMC,SAASgC,IAAIpD,GAAU,SAACsB,EAAOC,GAC5D,OAAOJ,EAAMkC,aAAa/B,EAAO,CAC/BU,MAAOT,EACP+B,OAAQ5C,IAAmBa,EAC3BgC,MAAOP,IAAezB,EACtBY,QAASe,EACT5D,UAAWkE,EAAGC,EAAOC,kBAAmBpC,EAAME,MAAMlC,WACpDqE,kBAAmBH,EAAGC,EAAOG,gBAAiBtC,EAAME,MAAMmC,oBAE9D,GAED,GAAE,CAAC3D,EAAUU,EAAgBsC,EAAYE,IAE1C,OACE/B,EACE0C,cAAA,MAAA,CAAAxE,IAAKe,EACLd,UAAWkE,EAAGC,EAAOK,YAAaxE,EAAW,CAACyE,EAASN,EAAQO,EAAUlE,MACzEP,GAAIA,gBACSU,GAAcgE,EAAUC,EAAuBC,SAAU5E,IAEtE4B,EAAA0C,cAAA,KAAA,CAAIxE,IAAKmD,EAAO4B,SAAU,EAAG9E,UAAWkE,EAAGC,EAAOY,SAAU,CAACN,EAASN,EAAQ1D,KAASuE,KAAK,WACzFnB,GAIT,IAGFoB,OAAOC,OAAOtF,EAAS,CACrBuF,WAAW"}
1
+ {"version":3,"file":"TabList.js","sources":["../../../../../../src/components/Tabs/TabList/TabList.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport { camelCase } from \"lodash-es\";\nimport React, { FC, forwardRef, ReactElement, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport useGridKeyboardNavigation from \"../../../hooks/useGridKeyboardNavigation/useGridKeyboardNavigation\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport usePrevious from \"../../../hooks/usePrevious\";\nimport VibeComponentProps from \"../../../types/VibeComponentProps\";\nimport { NOOP } from \"../../../utils/function-utils\";\nimport { 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 * The child elements representing tabs.\n */\n children?: ReactElement<TabProps>[];\n}\n\nconst TabList: FC<TabListProps> = forwardRef(\n (\n {\n className,\n id,\n onTabChange = NOOP,\n activeTabId = 0,\n tabType = \"Compact\",\n size,\n children,\n \"data-testid\": dataTestId\n },\n ref\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n const [activeTabState, setActiveTabState] = useState<number>(activeTabId);\n\n const prevActiveTabIdProp = usePrevious(activeTabId);\n\n useEffect(() => {\n // Update active tab if changed from props\n if (activeTabId !== prevActiveTabIdProp && activeTabId !== activeTabState) {\n setActiveTabState(activeTabId);\n }\n }, [activeTabId, prevActiveTabIdProp, activeTabState, setActiveTabState]);\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\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\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\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 });\n\n const tabsToRender = useMemo(() => {\n const childrenToRender = React.Children.map(children, (child, index) => {\n return React.cloneElement(child, {\n value: index,\n active: activeTabState === index,\n focus: focusIndex === index,\n onClick: onSelectionAction,\n className: cx(styles.tabListTabWrapper, child.props.className),\n tabInnerClassName: cx(styles.tabListTabInner, child.props.tabInnerClassName)\n });\n });\n return childrenToRender;\n }, [children, activeTabState, focusIndex, onSelectionAction]);\n\n return (\n <div\n ref={mergedRef}\n className={cx(styles.tabsWrapper, className, [getStyle(styles, camelCase(tabType))])}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TAB_LIST, id)}\n >\n <ul ref={ulRef} tabIndex={0} className={cx(styles.tabsList, [getStyle(styles, size)])} role=\"tablist\">\n {tabsToRender}\n </ul>\n </div>\n );\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","children","dataTestId","componentRef","useRef","mergedRef","useMergeRef","_useState","useState","_useState2","_slicedToArray","activeTabState","setActiveTabState","prevActiveTabIdProp","usePrevious","useEffect","disabledTabIds","useMemo","disabledIds","Set","React","Children","forEach","child","index","props","disabled","add","onTabSelect","useCallback","tabId","has","onTabClick","value","tabCallbackFunc","_a","onClick","getItemByIndex","disabledIndexes","Array","from","ulRef","_useGridKeyboardNavig","useGridKeyboardNavigation","numberOfItemsInLine","length","itemsCount","onItemClicked","focusIndex","activeIndex","onSelectionAction","tabsToRender","map","cloneElement","active","focus","cx","styles","tabListTabWrapper","tabInnerClassName","tabListTabInner","createElement","tabsWrapper","getStyle","camelCase","getTestId","ComponentDefaultTestId","TAB_LIST","tabIndex","tabsList","role","Object","assign","isTabList"],"mappings":"+qBAoCMA,IAAAA,EAA4BC,GAChC,SAAAC,EAWEC,GACE,IAVAC,EAASF,EAATE,UACAC,EAAEH,EAAFG,GAAEC,EAAAJ,EACFK,YAAAA,OAAcC,IAAHF,EAAGE,EAAIF,EAAAG,EAAAP,EAClBQ,YAAAA,OAAc,IAAHD,EAAG,EAACA,EAAAE,EAAAT,EACfU,QAAAA,OAAU,IAAHD,EAAG,UAASA,EACnBE,EAAIX,EAAJW,KACAC,EAAQZ,EAARY,SACeC,EAAUb,EAAzB,eAIIc,EAAeC,EAAO,MACtBC,EAAYC,EAAYhB,EAAKa,GAEnCI,EAA4CC,EAAiBX,GAAYY,EAAAC,EAAAH,EAAA,GAAlEI,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GAElCI,EAAsBC,EAAYjB,GAExCkB,GAAU,WAEJlB,IAAgBgB,GAAuBhB,IAAgBc,GACzDC,EAAkBf,EAErB,GAAE,CAACA,EAAagB,EAAqBF,EAAgBC,IAEtD,IAAMI,EAAiBC,GAAQ,WAC7B,IAAMC,EAAc,IAAIC,IAMxB,OALAC,EAAMC,SAASC,QAAQrB,GAAU,SAACsB,EAAOC,GACnCD,EAAME,MAAMC,UACdR,EAAYS,IAAIH,EAEpB,IACON,CACT,GAAG,CAACjB,IAEE2B,EAAcC,GAClB,SAACC,GACKd,EAAee,IAAID,KACvBlB,EAAkBkB,GAClBpC,GAAeA,EAAYoC,GAC7B,GACA,CAACpC,EAAasB,IAGVgB,EAAaH,GACjB,SAACI,EAA2BH,SACpBI,EAAyC,QAAvBC,EAAAlC,EAAS6B,GAAOL,aAAO,IAAAU,OAAA,EAAAA,EAAAC,QAC3CpB,EAAee,IAAID,KACnBI,GAAiBA,EAAgBJ,GACrCF,EAAYE,GACb,GACD,CAAC7B,EAAUe,EAAgBY,IAGvBS,EAAiBR,GAAY,SAACL,GAAa,OAA6BvB,EAASuB,KAAQ,CAACvB,IAC1FqC,EAAkBrB,GAAQ,WAAA,OAAMsB,MAAMC,KAAKxB,KAAiB,CAACA,IAC7DyB,EAAQrC,IACdsC,EAAuDC,EAA0B,CAC/ErD,IAAKmD,EACLG,oBAAqB3C,aAAA,EAAAA,EAAU4C,OAC/BC,WAAY7C,aAAA,EAAAA,EAAU4C,OACtBR,eAAAA,EACAU,cAAef,EACfM,gBAAAA,IANmBU,EAAUN,EAAvBO,YAAyBC,EAAiBR,EAAjBQ,kBAS3BC,EAAelC,GAAQ,WAW3B,OAVyBG,EAAMC,SAAS+B,IAAInD,GAAU,SAACsB,EAAOC,GAC5D,OAAOJ,EAAMiC,aAAa9B,EAAO,CAC/BU,MAAOT,EACP8B,OAAQ3C,IAAmBa,EAC3B+B,MAAOP,IAAexB,EACtBY,QAASc,EACT3D,UAAWiE,EAAGC,EAAOC,kBAAmBnC,EAAME,MAAMlC,WACpDoE,kBAAmBH,EAAGC,EAAOG,gBAAiBrC,EAAME,MAAMkC,oBAE9D,GAED,GAAE,CAAC1D,EAAUU,EAAgBqC,EAAYE,IAE1C,OACE9B,EACEyC,cAAA,MAAA,CAAAvE,IAAKe,EACLd,UAAWiE,EAAGC,EAAOK,YAAavE,EAAW,CAACwE,EAASN,EAAQO,EAAUjE,MACzEP,GAAIA,gBACSU,GAAc+D,EAAUC,EAAuBC,SAAU3E,IAEtE4B,EAAAyC,cAAA,KAAA,CAAIvE,IAAKmD,EAAO2B,SAAU,EAAG7E,UAAWiE,EAAGC,EAAOY,SAAU,CAACN,EAASN,EAAQzD,KAASsE,KAAK,WACzFnB,GAIT,IAGFoB,OAAOC,OAAOrF,EAAS,CACrBsF,WAAW"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e,defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import o from"classnames";import a,{forwardRef as n,useState as r,useRef as i,useCallback as l,useMemo as s,useEffect as c}from"react";import d from"../../hooks/useDebounceEvent/index.js";import m from"../Icon/Icon.js";import u from"../Loader/Loader.js";import p from"../Text/Text.js";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 T from"../../hooks/useMergeRef.js";import N from"../Clickable/Clickable.js";import{getTestId as h}from"../../tests/testIds.js";import{NOOP as g}from"../../utils/function-utils.js";import{ComponentDefaultTestId as I,ComponentVibeId as j}from"../../tests/constants.js";import{withStaticProps as F}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import L from"./TextField.module.scss.js";import k from"../Tooltip/Tooltip.js";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,_=n.value,q=n.onChange,R=void 0===q?g:q,W=n.onBlur,z=void 0===W?g:W,B=n.onFocus,O=void 0===B?g:B,K=n.onKeyDown,M=void 0===K?g:K,P=n.onWheel,V=void 0===P?g:P,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,te=void 0===ee?g:ee,oe=n.iconName,ae=n.secondaryIconName,ne=n.id,re=void 0===ne?"input":ne,ie=n.title,le=void 0===ie?"":ie,se=n.size,ce=void 0===se?"small":se,de=n.validation,me=void 0===de?null:de,ue=n.wrapperClassName,pe=void 0===ue?"":ue,ve=n.onIconClick,fe=void 0===ve?g:ve,Ce=n.clearOnIconClick,be=void 0!==Ce&&Ce,xe=n.labelIconName,ye=n.showCharCount,Ee=void 0!==ye&&ye,Te=n.inputAriaLabel,Ne=n.searchResultsContainerId,he=void 0===Ne?"":Ne,ge=n.activeDescendant,Ie=void 0===ge?"":ge,je=n.iconsNames,Fe=void 0===je?w:je,Le=n.type,ke=void 0===Le?"text":Le,De=n.maxLength,we=void 0===De?null:De,He=n.allowExceedingMaxLength,Ae=void 0!==He&&He,Se=n.trim,_e=void 0!==Se&&Se,qe=n.role,Re=void 0===qe?"":qe,We=n.required,ze=void 0!==We&&We,Be=n.requiredErrorText,Oe=void 0===Be?"":Be,Ke=n.loading,Me=void 0!==Ke&&Ke,Pe=n["data-testid"],Ve=n.secondaryDataTestId,Xe=n.tabIndex,Ue=n.underline,Ye=void 0!==Ue&&Ue,Ge=n.name,Je=n.controlled,Qe=void 0!==Je&&Je,Ze=n.iconTooltipContent,$e=n.secondaryTooltipContent,et=n.dir,tt=r(!1),ot=e(tt,2),at=ot[0],nt=ot[1],rt=i(null),it=T(f,rt,te),lt=l((function(e){ze&&!e.target.value&&nt(!0),z(e)}),[z,ze]),st=l((function(e,t){at&&e&&nt(!1),R(e,t||{target:rt.current})}),[R,at]),ct=d({delay:U,onChange:st,initialStateValue:_,trim:_e}),dt=ct.inputValue,mt=ct.onEventChanged,ut=ct.clearValue,pt=s((function(){return Qe?_:dt}),[Qe,_,dt]),vt=l((function(e){Qe?st(e.target.value,e):mt(e)}),[Qe,st,mt]),ft=s((function(){return ae&&pt?ae:oe}),[oe,ae,pt]),Ct=l((function(){Q||(be&&(rt.current&&rt.current.focus(),rt.current.value="",Qe?st(""):ut()),fe(ft))}),[Q,be,fe,ft,Qe,st,ut]),bt=s((function(){return"number"==typeof we&&pt&&pt.length>we?b.error:me&&me.status||at?b[at?"error":me.status]:""}),[we,me,at,pt]),xt=oe||ae,yt=Ee||me&&me.text||at&&Oe,Et=ae===ft,Tt=oe===ft,Nt=(fe!==g||Fe.primary||Ze)&&pt&&oe.length&&Tt,ht=(ae||$e)&&Et&&!!pt,gt=Ae?"".concat(re,"-allow-exceeding-max-length-text"):void 0;c((function(){if((null==rt?void 0:rt.current)&&G){var e=requestAnimationFrame((function(){return rt.current.focus()}));return function(){return cancelAnimationFrame(e)}}}),[rt,G]);var It=fe!==g||be,jt=Fe.primary||Ze,Ft=Fe.secondary||$e;return a.createElement("div",{className:o(L.textField,pe,t(t({},L.disabled,Q),L.onlyUnderline,Ye)),role:Re,"aria-busy":Me},a.createElement("div",{className:o(L.labelWrapper)},a.createElement(v,{labelText:le,icon:xe,labelFor:re,required:ze}),a.createElement("div",{className:o(L.inputWrapper,x[ce],bt)},a.createElement("input",{className:o(E,L.input,t(t({},L.inputHasIcon,!!xt),L.readOnly,$)),placeholder:H,autoComplete:S,value:pt,onChange:vt,disabled:Q,readOnly:$,ref:it,type:ke,id:re,"data-testid":Pe||h(I.TEXT_FIELD,re),"data-vibe":j.TEXT_FIELD,name:Ge,onBlur:lt,onFocus:O,onKeyDown:M,onWheel:V,maxLength:"number"!=typeof we||Ae?void 0:we,role:he&&"combobox","aria-label":Te||H,"aria-invalid":me&&"error"===me.status||at,"aria-owns":he,"aria-activedescendant":Ie,"aria-required":ze,"aria-describedby":gt,required:ze,tabIndex:Xe,dir:et}),Me&&a.createElement("div",{className:o(L.loaderContainer,t({},L.loaderContainerHasIcon,xt))},a.createElement("div",{className:o(L.loader)},a.createElement(u,{className:o(L.loaderSvg)}))),a.createElement(k,{content:Tt?Ze:void 0,referenceWrapperClassName:L.tooltipContainer},a.createElement(N,{className:o(L.iconContainer,t(t(t({},L.iconContainerHasIcon,xt),L.iconContainerActive,Tt),L.iconContainerClickable,It)),onClick:Ct,tabIndex:Nt?"0":"-1",ariaLabel:jt},a.createElement(m,{icon:oe,className:o(L.icon),iconType:"font",iconSize:"small"===ce?"16px":"18px"}))),a.createElement(k,{content:Et?$e:void 0,addKeyboardHideShowTriggersByDefault:!0,referenceWrapperClassName:L.tooltipContainer},a.createElement(N,{className:o(L.iconContainer,t(t(t({},L.iconContainerHasIcon,xt),L.iconContainerActive,Et),L.iconContainerClickable,It)),onClick:Ct,tabIndex:ht?"0":"-1","data-testid":Ve||h(I.TEXT_FIELD_SECONDARY_BUTTON,re),ariaLabel:Ft},a.createElement(m,{icon:ae,className:o(L.icon),iconType:"font",iconSize:"small"===ce?"16px":"18px"})))),yt&&a.createElement(p,{type:"text2",color:"secondary",className:o(L.subTextContainer)},me&&me.text&&a.createElement("span",{className:o(L.subTextContainerStatus)},at?Oe:me.text),Ee&&a.createElement("span",{className:o(L.counter),"aria-label":y.CHAR},pt&&pt.length||0,"number"==typeof we&&"/".concat(we),a.createElement(D,{id:gt,text:"Maximum of ".concat(we," characters")})))))})),{sizes:E,feedbacks:f,types:C});export{H as default};
1
+ import{slicedToArray as e,defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import o from"classnames";import a,{forwardRef as n,useState as r,useRef as i,useCallback as l,useMemo as s,useEffect as c}from"react";import d from"../../hooks/useDebounceEvent/index.js";import m from"../Icon/Icon.js";import u from"../Loader/Loader.js";import p from"../Text/Text.js";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 T from"../../hooks/useMergeRef.js";import N from"../Clickable/Clickable.js";import{getTestId as h}from"../../tests/testIds.js";import{NOOP as g}from"../../utils/function-utils.js";import{ComponentDefaultTestId as I,ComponentVibeId as j}from"../../tests/constants.js";import{withStaticPropsWithoutForwardRef as F}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import L from"./TextField.module.scss.js";import k from"../Tooltip/Tooltip.js";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,_=n.value,q=n.onChange,R=void 0===q?g:q,W=n.onBlur,z=void 0===W?g:W,B=n.onFocus,O=void 0===B?g:B,K=n.onKeyDown,M=void 0===K?g:K,P=n.onWheel,V=void 0===P?g:P,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,te=void 0===ee?g:ee,oe=n.iconName,ae=n.secondaryIconName,ne=n.id,re=void 0===ne?"input":ne,ie=n.title,le=void 0===ie?"":ie,se=n.size,ce=void 0===se?"small":se,de=n.validation,me=void 0===de?null:de,ue=n.wrapperClassName,pe=void 0===ue?"":ue,ve=n.onIconClick,fe=void 0===ve?g:ve,Ce=n.clearOnIconClick,be=void 0!==Ce&&Ce,xe=n.labelIconName,ye=n.showCharCount,Ee=void 0!==ye&&ye,Te=n.inputAriaLabel,Ne=n.searchResultsContainerId,he=void 0===Ne?"":Ne,ge=n.activeDescendant,Ie=void 0===ge?"":ge,je=n.iconsNames,Fe=void 0===je?w:je,Le=n.type,ke=void 0===Le?"text":Le,De=n.maxLength,we=void 0===De?null:De,He=n.allowExceedingMaxLength,Ae=void 0!==He&&He,Se=n.trim,_e=void 0!==Se&&Se,qe=n.role,Re=void 0===qe?"":qe,We=n.required,ze=void 0!==We&&We,Be=n.requiredErrorText,Oe=void 0===Be?"":Be,Ke=n.loading,Me=void 0!==Ke&&Ke,Pe=n["data-testid"],Ve=n.secondaryDataTestId,Xe=n.tabIndex,Ue=n.underline,Ye=void 0!==Ue&&Ue,Ge=n.name,Je=n.controlled,Qe=void 0!==Je&&Je,Ze=n.iconTooltipContent,$e=n.secondaryTooltipContent,et=n.dir,tt=r(!1),ot=e(tt,2),at=ot[0],nt=ot[1],rt=i(null),it=T(f,rt,te),lt=l((function(e){ze&&!e.target.value&&nt(!0),z(e)}),[z,ze]),st=l((function(e,t){at&&e&&nt(!1),R(e,t||{target:rt.current})}),[R,at]),ct=d({delay:U,onChange:st,initialStateValue:_,trim:_e}),dt=ct.inputValue,mt=ct.onEventChanged,ut=ct.clearValue,pt=s((function(){return Qe?_:dt}),[Qe,_,dt]),vt=l((function(e){Qe?st(e.target.value,e):mt(e)}),[Qe,st,mt]),ft=s((function(){return ae&&pt?ae:oe}),[oe,ae,pt]),Ct=l((function(){Q||(be&&(rt.current&&rt.current.focus(),rt.current.value="",Qe?st(""):ut()),fe(ft))}),[Q,be,fe,ft,Qe,st,ut]),bt=s((function(){return"number"==typeof we&&pt&&pt.length>we?b.error:me&&me.status||at?b[at?"error":me.status]:""}),[we,me,at,pt]),xt=oe||ae,yt=Ee||me&&me.text||at&&Oe,Et=ae===ft,Tt=oe===ft,Nt=(fe!==g||Fe.primary||Ze)&&pt&&oe.length&&Tt,ht=(ae||$e)&&Et&&!!pt,gt=Ae?"".concat(re,"-allow-exceeding-max-length-text"):void 0;c((function(){if((null==rt?void 0:rt.current)&&G){var e=requestAnimationFrame((function(){return rt.current.focus()}));return function(){return cancelAnimationFrame(e)}}}),[rt,G]);var It=fe!==g||be,jt=Fe.primary||Ze,Ft=Fe.secondary||$e;return a.createElement("div",{className:o(L.textField,pe,t(t({},L.disabled,Q),L.onlyUnderline,Ye)),role:Re,"aria-busy":Me},a.createElement("div",{className:o(L.labelWrapper)},a.createElement(v,{labelText:le,icon:xe,labelFor:re,required:ze}),a.createElement("div",{className:o(L.inputWrapper,x[ce],bt)},a.createElement("input",{className:o(E,L.input,t(t({},L.inputHasIcon,!!xt),L.readOnly,$)),placeholder:H,autoComplete:S,value:pt,onChange:vt,disabled:Q,readOnly:$,ref:it,type:ke,id:re,"data-testid":Pe||h(I.TEXT_FIELD,re),"data-vibe":j.TEXT_FIELD,name:Ge,onBlur:lt,onFocus:O,onKeyDown:M,onWheel:V,maxLength:"number"!=typeof we||Ae?void 0:we,role:he&&"combobox","aria-label":Te||H,"aria-invalid":me&&"error"===me.status||at,"aria-owns":he,"aria-activedescendant":Ie,"aria-required":ze,"aria-describedby":gt,required:ze,tabIndex:Xe,dir:et}),Me&&a.createElement("div",{className:o(L.loaderContainer,t({},L.loaderContainerHasIcon,xt))},a.createElement("div",{className:o(L.loader)},a.createElement(u,{className:o(L.loaderSvg)}))),a.createElement(k,{content:Tt?Ze:void 0,referenceWrapperClassName:L.tooltipContainer},a.createElement(N,{className:o(L.iconContainer,t(t(t({},L.iconContainerHasIcon,xt),L.iconContainerActive,Tt),L.iconContainerClickable,It)),onClick:Ct,tabIndex:Nt?"0":"-1",ariaLabel:jt},a.createElement(m,{icon:oe,className:o(L.icon),iconType:"font",iconSize:"small"===ce?"16px":"18px"}))),a.createElement(k,{content:Et?$e:void 0,addKeyboardHideShowTriggersByDefault:!0,referenceWrapperClassName:L.tooltipContainer},a.createElement(N,{className:o(L.iconContainer,t(t(t({},L.iconContainerHasIcon,xt),L.iconContainerActive,Et),L.iconContainerClickable,It)),onClick:Ct,tabIndex:ht?"0":"-1","data-testid":Ve||h(I.TEXT_FIELD_SECONDARY_BUTTON,re),ariaLabel:Ft},a.createElement(m,{icon:ae,className:o(L.icon),iconType:"font",iconSize:"small"===ce?"16px":"18px"})))),yt&&a.createElement(p,{type:"text2",color:"secondary",className:o(L.subTextContainer)},me&&me.text&&a.createElement("span",{className:o(L.subTextContainerStatus)},at?Oe:me.text),Ee&&a.createElement("span",{className:o(L.counter),"aria-label":y.CHAR},pt&&pt.length||0,"number"==typeof we&&"/".concat(we),a.createElement(D,{id:gt,text:"Maximum of ".concat(we," characters")})))))})),{sizes:E,feedbacks:f,types:C});export{H as default};
2
2
  //# sourceMappingURL=TextField.js.map