@vibe/core 3.77.1-alpha-eb809.0 → 3.77.1-alpha-4a3fa.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 (324) hide show
  1. package/dist/components/EditableTypography/EditableTypography.d.ts +4 -0
  2. package/dist/components/dialog/dist/Dialog/Dialog.js +1 -1
  3. package/dist/components/dialog/dist/Dialog/Dialog.js.map +1 -1
  4. package/dist/components/layers/dist/LayerProvider/LayerContext.js.map +1 -0
  5. package/dist/components/layers/dist/LayerProvider/LayerProvider.js.map +1 -0
  6. package/dist/metadata.json +18 -32
  7. package/dist/mocked_classnames/base/dist/BaseInput/BaseInput.js +2 -0
  8. package/dist/mocked_classnames/base/dist/BaseInput/BaseInput.js.map +1 -0
  9. package/dist/mocked_classnames/base/dist/BaseInput/BaseInput.module.scss.js +2 -0
  10. package/dist/mocked_classnames/base/dist/BaseInput/BaseInput.module.scss.js.map +1 -0
  11. package/dist/mocked_classnames/base/dist/_virtual/_tslib.js +2 -0
  12. package/dist/mocked_classnames/base/dist/_virtual/_tslib.js.map +1 -0
  13. package/dist/mocked_classnames/components/EditableTypography/EditableTypography.d.ts +4 -0
  14. package/dist/mocked_classnames/components/button/dist/Button/Button.js +2 -0
  15. package/dist/mocked_classnames/components/button/dist/Button/Button.js.map +1 -0
  16. package/dist/mocked_classnames/components/button/dist/Button/Button.module.scss.js +2 -0
  17. package/dist/mocked_classnames/components/button/dist/Button/Button.module.scss.js.map +1 -0
  18. package/dist/mocked_classnames/components/button/dist/Button/ButtonConstants.js +2 -0
  19. package/dist/mocked_classnames/components/button/dist/Button/ButtonConstants.js.map +1 -0
  20. package/dist/mocked_classnames/components/button/dist/Button/helper/dom-helpers.js +2 -0
  21. package/dist/mocked_classnames/components/button/dist/Button/helper/dom-helpers.js.map +1 -0
  22. package/dist/mocked_classnames/components/button/dist/Button/helper/useButtonLoading.js +2 -0
  23. package/dist/mocked_classnames/components/button/dist/Button/helper/useButtonLoading.js.map +1 -0
  24. package/dist/mocked_classnames/components/dialog/dist/Dialog/Dialog.js +2 -0
  25. package/dist/mocked_classnames/components/dialog/dist/Dialog/Dialog.js.map +1 -0
  26. package/dist/mocked_classnames/components/dialog/dist/Dialog/Dialog.module.scss.js +2 -0
  27. package/dist/mocked_classnames/components/dialog/dist/Dialog/Dialog.module.scss.js.map +1 -0
  28. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogConstants.js +2 -0
  29. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogConstants.js.map +1 -0
  30. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogContent/DialogContent.js +2 -0
  31. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogContent/DialogContent.js.map +1 -0
  32. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogContent/DialogContent.module.scss.js +2 -0
  33. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogContent/DialogContent.module.scss.js.map +1 -0
  34. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogContent/useDisableScroll.js +2 -0
  35. package/dist/mocked_classnames/components/dialog/dist/Dialog/DialogContent/useDisableScroll.js.map +1 -0
  36. package/dist/mocked_classnames/components/dialog/dist/Dialog/modifiers/observeContentResizeModifier.js +2 -0
  37. package/dist/mocked_classnames/components/dialog/dist/Dialog/modifiers/observeContentResizeModifier.js.map +1 -0
  38. package/dist/mocked_classnames/components/dialog/dist/Dialog/modifiers/observeReferenceResizeModifier.js +2 -0
  39. package/dist/mocked_classnames/components/dialog/dist/Dialog/modifiers/observeReferenceResizeModifier.js.map +1 -0
  40. package/dist/mocked_classnames/components/dialog/dist/Dialog/useForceUpdate.js +2 -0
  41. package/dist/mocked_classnames/components/dialog/dist/Dialog/useForceUpdate.js.map +1 -0
  42. package/dist/mocked_classnames/components/dialog/dist/Dialog/usePopover.js +2 -0
  43. package/dist/mocked_classnames/components/dialog/dist/Dialog/usePopover.js.map +1 -0
  44. package/dist/mocked_classnames/components/dialog/dist/DialogContentContainer/DialogContentContainer.js +2 -0
  45. package/dist/mocked_classnames/components/dialog/dist/DialogContentContainer/DialogContentContainer.js.map +1 -0
  46. package/dist/mocked_classnames/components/dialog/dist/DialogContentContainer/DialogContentContainer.module.scss.js +2 -0
  47. package/dist/mocked_classnames/components/dialog/dist/DialogContentContainer/DialogContentContainer.module.scss.js.map +1 -0
  48. package/dist/mocked_classnames/components/dialog/dist/Refable/Refable.js +2 -0
  49. package/dist/mocked_classnames/components/dialog/dist/Refable/Refable.js.map +1 -0
  50. package/dist/mocked_classnames/components/dialog/dist/_virtual/_tslib.js +2 -0
  51. package/dist/mocked_classnames/components/dialog/dist/_virtual/_tslib.js.map +1 -0
  52. package/dist/mocked_classnames/components/icon/dist/Icon/CustomSvgIcon/CustomSvgIcon.js +2 -0
  53. package/dist/mocked_classnames/components/icon/dist/Icon/CustomSvgIcon/CustomSvgIcon.js.map +1 -0
  54. package/dist/mocked_classnames/components/icon/dist/Icon/FontIcon/FontIcon.js +2 -0
  55. package/dist/mocked_classnames/components/icon/dist/Icon/FontIcon/FontIcon.js.map +1 -0
  56. package/dist/mocked_classnames/components/icon/dist/Icon/Icon.js +2 -0
  57. package/dist/mocked_classnames/components/icon/dist/Icon/Icon.js.map +1 -0
  58. package/dist/mocked_classnames/components/icon/dist/Icon/Icon.module.scss.js +2 -0
  59. package/dist/mocked_classnames/components/icon/dist/Icon/Icon.module.scss.js.map +1 -0
  60. package/dist/mocked_classnames/components/icon/dist/Icon/constants.js +2 -0
  61. package/dist/mocked_classnames/components/icon/dist/Icon/constants.js.map +1 -0
  62. package/dist/mocked_classnames/components/icon/dist/Icon/hooks/useIconProps.js +2 -0
  63. package/dist/mocked_classnames/components/icon/dist/Icon/hooks/useIconProps.js.map +1 -0
  64. package/dist/mocked_classnames/components/icon/dist/Icon/hooks/useIconScreenReaderAccessProps.js +2 -0
  65. package/dist/mocked_classnames/components/icon/dist/Icon/hooks/useIconScreenReaderAccessProps.js.map +1 -0
  66. package/dist/mocked_classnames/components/layers/dist/LayerProvider/LayerContext.js +2 -0
  67. package/dist/mocked_classnames/components/layers/dist/LayerProvider/LayerContext.js.map +1 -0
  68. package/dist/mocked_classnames/components/layers/dist/LayerProvider/LayerProvider.js +2 -0
  69. package/dist/mocked_classnames/components/layers/dist/LayerProvider/LayerProvider.js.map +1 -0
  70. package/dist/mocked_classnames/components/loader/dist/Loader/Loader.js +2 -0
  71. package/dist/mocked_classnames/components/loader/dist/Loader/Loader.js.map +1 -0
  72. package/dist/mocked_classnames/components/loader/dist/Loader/Loader.module.scss.js +2 -0
  73. package/dist/mocked_classnames/components/loader/dist/Loader/Loader.module.scss.js.map +1 -0
  74. package/dist/mocked_classnames/components/loader/dist/Loader/LoaderConstants.js +2 -0
  75. package/dist/mocked_classnames/components/loader/dist/Loader/LoaderConstants.js.map +1 -0
  76. package/dist/mocked_classnames/hooks/dist/useClickOutside/index.js +2 -0
  77. package/dist/mocked_classnames/hooks/dist/useClickOutside/index.js.map +1 -0
  78. package/dist/mocked_classnames/icons/dist/_virtual/_tslib.js +2 -0
  79. package/dist/mocked_classnames/icons/dist/_virtual/_tslib.js.map +1 -0
  80. package/dist/mocked_classnames/icons/dist/react/AddSmall.js +2 -0
  81. package/dist/mocked_classnames/icons/dist/react/AddSmall.js.map +1 -0
  82. package/dist/mocked_classnames/icons/dist/react/Alert.js +2 -0
  83. package/dist/mocked_classnames/icons/dist/react/Alert.js.map +1 -0
  84. package/dist/mocked_classnames/icons/dist/react/Check.js +2 -0
  85. package/dist/mocked_classnames/icons/dist/react/Check.js.map +1 -0
  86. package/dist/mocked_classnames/icons/dist/react/CloseMedium.js +2 -0
  87. package/dist/mocked_classnames/icons/dist/react/CloseMedium.js.map +1 -0
  88. package/dist/mocked_classnames/icons/dist/react/CloseSmall.js +2 -0
  89. package/dist/mocked_classnames/icons/dist/react/CloseSmall.js.map +1 -0
  90. package/dist/mocked_classnames/icons/dist/react/DropdownChevronDown.js +2 -0
  91. package/dist/mocked_classnames/icons/dist/react/DropdownChevronDown.js.map +1 -0
  92. package/dist/mocked_classnames/icons/dist/react/DropdownChevronRight.js +2 -0
  93. package/dist/mocked_classnames/icons/dist/react/DropdownChevronRight.js.map +1 -0
  94. package/dist/mocked_classnames/icons/dist/react/DropdownChevronUp.js +2 -0
  95. package/dist/mocked_classnames/icons/dist/react/DropdownChevronUp.js.map +1 -0
  96. package/dist/mocked_classnames/icons/dist/react/Favorite.js +2 -0
  97. package/dist/mocked_classnames/icons/dist/react/Favorite.js.map +1 -0
  98. package/dist/mocked_classnames/icons/dist/react/Info.js +2 -0
  99. package/dist/mocked_classnames/icons/dist/react/Info.js.map +1 -0
  100. package/dist/mocked_classnames/icons/dist/react/Menu.js +2 -0
  101. package/dist/mocked_classnames/icons/dist/react/Menu.js.map +1 -0
  102. package/dist/mocked_classnames/icons/dist/react/MoveArrowLeft.js +2 -0
  103. package/dist/mocked_classnames/icons/dist/react/MoveArrowLeft.js.map +1 -0
  104. package/dist/mocked_classnames/icons/dist/react/MoveArrowRight.js +2 -0
  105. package/dist/mocked_classnames/icons/dist/react/MoveArrowRight.js.map +1 -0
  106. package/dist/mocked_classnames/icons/dist/react/NavigationChevronLeft.js +2 -0
  107. package/dist/mocked_classnames/icons/dist/react/NavigationChevronLeft.js.map +1 -0
  108. package/dist/mocked_classnames/icons/dist/react/NavigationChevronRight.js +2 -0
  109. package/dist/mocked_classnames/icons/dist/react/NavigationChevronRight.js.map +1 -0
  110. package/dist/mocked_classnames/icons/dist/react/NoColor.js +2 -0
  111. package/dist/mocked_classnames/icons/dist/react/NoColor.js.map +1 -0
  112. package/dist/mocked_classnames/icons/dist/react/Remove.js +2 -0
  113. package/dist/mocked_classnames/icons/dist/react/Remove.js.map +1 -0
  114. package/dist/mocked_classnames/icons/dist/react/Search.js +2 -0
  115. package/dist/mocked_classnames/icons/dist/react/Search.js.map +1 -0
  116. package/dist/mocked_classnames/icons/dist/react/Sort.js +2 -0
  117. package/dist/mocked_classnames/icons/dist/react/Sort.js.map +1 -0
  118. package/dist/mocked_classnames/icons/dist/react/SortAscending.js +2 -0
  119. package/dist/mocked_classnames/icons/dist/react/SortAscending.js.map +1 -0
  120. package/dist/mocked_classnames/icons/dist/react/SortDescending.js +2 -0
  121. package/dist/mocked_classnames/icons/dist/react/SortDescending.js.map +1 -0
  122. package/dist/mocked_classnames/icons/dist/react/Warning.js +2 -0
  123. package/dist/mocked_classnames/icons/dist/react/Warning.js.map +1 -0
  124. package/dist/mocked_classnames/shared/dist/constants/keyCodes.js +2 -0
  125. package/dist/mocked_classnames/shared/dist/constants/keyCodes.js.map +1 -0
  126. package/dist/mocked_classnames/shared/dist/constants/sizes.js +2 -0
  127. package/dist/mocked_classnames/shared/dist/constants/sizes.js.map +1 -0
  128. package/dist/mocked_classnames/shared/dist/hooks/ssr/useIsMounted.js +2 -0
  129. package/dist/mocked_classnames/shared/dist/hooks/ssr/useIsMounted.js.map +1 -0
  130. package/dist/mocked_classnames/shared/dist/hooks/ssr/useIsomorphicLayoutEffect.js +2 -0
  131. package/dist/mocked_classnames/shared/dist/hooks/ssr/useIsomorphicLayoutEffect.js.map +1 -0
  132. package/dist/mocked_classnames/shared/dist/hooks/useEventListener.js +2 -0
  133. package/dist/mocked_classnames/shared/dist/hooks/useEventListener.js.map +1 -0
  134. package/dist/mocked_classnames/shared/dist/hooks/useKeyEvent.js +2 -0
  135. package/dist/mocked_classnames/shared/dist/hooks/useKeyEvent.js.map +1 -0
  136. package/dist/mocked_classnames/shared/dist/hooks/useMergeRef.js +2 -0
  137. package/dist/mocked_classnames/shared/dist/hooks/useMergeRef.js.map +1 -0
  138. package/dist/mocked_classnames/shared/dist/tests/constants.js +2 -0
  139. package/dist/mocked_classnames/shared/dist/tests/constants.js.map +1 -0
  140. package/dist/mocked_classnames/shared/dist/tests/test-ids-utils.js +2 -0
  141. package/dist/mocked_classnames/shared/dist/tests/test-ids-utils.js.map +1 -0
  142. package/dist/mocked_classnames/shared/dist/types/withStaticProps.js +2 -0
  143. package/dist/mocked_classnames/shared/dist/types/withStaticProps.js.map +1 -0
  144. package/dist/mocked_classnames/shared/dist/utils/dom-utils.js +2 -0
  145. package/dist/mocked_classnames/shared/dist/utils/dom-utils.js.map +1 -0
  146. package/dist/mocked_classnames/shared/dist/utils/function-utils.js +2 -0
  147. package/dist/mocked_classnames/shared/dist/utils/function-utils.js.map +1 -0
  148. package/dist/mocked_classnames/shared/dist/utils/screenReaderAccessHelper.js +2 -0
  149. package/dist/mocked_classnames/shared/dist/utils/screenReaderAccessHelper.js.map +1 -0
  150. package/dist/mocked_classnames/shared/dist/utils/ssr-utils.js +2 -0
  151. package/dist/mocked_classnames/shared/dist/utils/ssr-utils.js.map +1 -0
  152. package/dist/mocked_classnames/shared/dist/utils/typesciptCssModulesHelper.js +2 -0
  153. package/dist/mocked_classnames/shared/dist/utils/typesciptCssModulesHelper.js.map +1 -0
  154. package/dist/mocked_classnames/src/components/AlertBanner/AlertBanner.js +1 -1
  155. package/dist/mocked_classnames/src/components/AlertBanner/AlertBanner.js.map +1 -1
  156. package/dist/mocked_classnames/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.js +1 -1
  157. package/dist/mocked_classnames/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.js.map +1 -1
  158. package/dist/mocked_classnames/src/components/AttentionBox/AttentionBox.js +1 -1
  159. package/dist/mocked_classnames/src/components/AttentionBox/AttentionBox.js.map +1 -1
  160. package/dist/mocked_classnames/src/components/Avatar/AvatarBadge.js +1 -1
  161. package/dist/mocked_classnames/src/components/Avatar/AvatarBadge.js.map +1 -1
  162. package/dist/mocked_classnames/src/components/Avatar/AvatarContent.js +1 -1
  163. package/dist/mocked_classnames/src/components/Avatar/AvatarContent.js.map +1 -1
  164. package/dist/mocked_classnames/src/components/BaseListItem/utils.js +1 -1
  165. package/dist/mocked_classnames/src/components/BaseListItem/utils.js.map +1 -1
  166. package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbsBar.js +1 -1
  167. package/dist/mocked_classnames/src/components/BreadcrumbsBar/BreadcrumbsBar.js.map +1 -1
  168. package/dist/mocked_classnames/src/components/ButtonGroup/ButtonGroup.js +1 -1
  169. package/dist/mocked_classnames/src/components/ButtonGroup/ButtonGroup.js.map +1 -1
  170. package/dist/mocked_classnames/src/components/ButtonGroup/ButtonWrapper.js +1 -1
  171. package/dist/mocked_classnames/src/components/ButtonGroup/ButtonWrapper.js.map +1 -1
  172. package/dist/mocked_classnames/src/components/Checkbox/Checkbox.js +1 -1
  173. package/dist/mocked_classnames/src/components/Checkbox/Checkbox.js.map +1 -1
  174. package/dist/mocked_classnames/src/components/Chips/Chips.js +1 -1
  175. package/dist/mocked_classnames/src/components/Chips/Chips.js.map +1 -1
  176. package/dist/mocked_classnames/src/components/ColorPicker/ColorPicker.js +1 -1
  177. package/dist/mocked_classnames/src/components/ColorPicker/ColorPicker.js.map +1 -1
  178. package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerContent/ColorPickerClearButton.js +1 -1
  179. package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerContent/ColorPickerClearButton.js.map +1 -1
  180. package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerContent/ColorPickerContent.js +1 -1
  181. package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerContent/ColorPickerContent.js.map +1 -1
  182. package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerItemComponent/ColorPickerItemComponent.js +1 -1
  183. package/dist/mocked_classnames/src/components/ColorPicker/components/ColorPickerItemComponent/ColorPickerItemComponent.js.map +1 -1
  184. package/dist/mocked_classnames/src/components/Combobox/Combobox.js +1 -1
  185. package/dist/mocked_classnames/src/components/Combobox/Combobox.js.map +1 -1
  186. package/dist/mocked_classnames/src/components/Combobox/components/ComboboxOption/ComboboxOption.js +1 -1
  187. package/dist/mocked_classnames/src/components/Combobox/components/ComboboxOption/ComboboxOption.js.map +1 -1
  188. package/dist/mocked_classnames/src/components/DatePicker/DateNavigationItem/DateNavigationItem.js +1 -1
  189. package/dist/mocked_classnames/src/components/DatePicker/DateNavigationItem/DateNavigationItem.js.map +1 -1
  190. package/dist/mocked_classnames/src/components/DatePicker/DatePickerHeader/DatePickerHeader.js +1 -1
  191. package/dist/mocked_classnames/src/components/DatePicker/DatePickerHeader/DatePickerHeader.js.map +1 -1
  192. package/dist/mocked_classnames/src/components/DatePicker/YearPicker/YearsList.js +1 -1
  193. package/dist/mocked_classnames/src/components/DatePicker/YearPicker/YearsList.js.map +1 -1
  194. package/dist/mocked_classnames/src/components/Dropdown/Dropdown.js +1 -1
  195. package/dist/mocked_classnames/src/components/Dropdown/Dropdown.js.map +1 -1
  196. package/dist/mocked_classnames/src/components/Dropdown/components/ChildrenContent/ChildrenContent.js +1 -1
  197. package/dist/mocked_classnames/src/components/Dropdown/components/ChildrenContent/ChildrenContent.js.map +1 -1
  198. package/dist/mocked_classnames/src/components/Dropdown/components/ClearIndicator/ClearIndicator.js +1 -1
  199. package/dist/mocked_classnames/src/components/Dropdown/components/ClearIndicator/ClearIndicator.js.map +1 -1
  200. package/dist/mocked_classnames/src/components/Dropdown/components/DropdownIndicator/DropdownIndicator.js +1 -1
  201. package/dist/mocked_classnames/src/components/Dropdown/components/DropdownIndicator/DropdownIndicator.js.map +1 -1
  202. package/dist/mocked_classnames/src/components/Dropdown/components/MultiValueContainer/MultiValueContainer.js +1 -1
  203. package/dist/mocked_classnames/src/components/Dropdown/components/MultiValueContainer/MultiValueContainer.js.map +1 -1
  204. package/dist/mocked_classnames/src/components/EditableTypography/EditableTypography.js +1 -1
  205. package/dist/mocked_classnames/src/components/EditableTypography/EditableTypography.js.map +1 -1
  206. package/dist/mocked_classnames/src/components/EmptyState/EmptyState.js +1 -1
  207. package/dist/mocked_classnames/src/components/EmptyState/EmptyState.js.map +1 -1
  208. package/dist/mocked_classnames/src/components/ExpandCollapse/ExpandCollapse.js +1 -1
  209. package/dist/mocked_classnames/src/components/ExpandCollapse/ExpandCollapse.js.map +1 -1
  210. package/dist/mocked_classnames/src/components/FieldLabel/FieldLabel.js +1 -1
  211. package/dist/mocked_classnames/src/components/FieldLabel/FieldLabel.js.map +1 -1
  212. package/dist/mocked_classnames/src/components/IconButton/IconButton.js +1 -1
  213. package/dist/mocked_classnames/src/components/IconButton/IconButton.js.map +1 -1
  214. package/dist/mocked_classnames/src/components/Info/Info.js +1 -1
  215. package/dist/mocked_classnames/src/components/Info/Info.js.map +1 -1
  216. package/dist/mocked_classnames/src/components/Info/components/InfoDialogContent/InfoDialogContent.js +1 -1
  217. package/dist/mocked_classnames/src/components/Info/components/InfoDialogContent/InfoDialogContent.js.map +1 -1
  218. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModal.js +1 -1
  219. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModal.js.map +1 -1
  220. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModalFooter/LegacyModalFooterButtons/LegacyModalFooterButtons.js +1 -1
  221. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModalFooter/LegacyModalFooterButtons/LegacyModalFooterButtons.js.map +1 -1
  222. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModalHeader/LegacyModalHeader.js +1 -1
  223. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModalHeader/LegacyModalHeader.js.map +1 -1
  224. package/dist/mocked_classnames/src/components/Link/Link.js +1 -1
  225. package/dist/mocked_classnames/src/components/Link/Link.js.map +1 -1
  226. package/dist/mocked_classnames/src/components/ListItem/ListItem.js +1 -1
  227. package/dist/mocked_classnames/src/components/ListItem/ListItem.js.map +1 -1
  228. package/dist/mocked_classnames/src/components/ListItemIcon/ListItemIcon.js +1 -1
  229. package/dist/mocked_classnames/src/components/ListItemIcon/ListItemIcon.js.map +1 -1
  230. package/dist/mocked_classnames/src/components/Menu/Menu/Menu.js +1 -1
  231. package/dist/mocked_classnames/src/components/Menu/MenuItem/MenuItem.js +1 -1
  232. package/dist/mocked_classnames/src/components/Menu/MenuItem/MenuItem.js.map +1 -1
  233. package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.js +1 -1
  234. package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.js.map +1 -1
  235. package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.js +1 -1
  236. package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.js.map +1 -1
  237. package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.js +1 -1
  238. package/dist/mocked_classnames/src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.js.map +1 -1
  239. package/dist/mocked_classnames/src/components/Menu/MenuItemButton/MenuItemButton.js +1 -1
  240. package/dist/mocked_classnames/src/components/Menu/MenuItemButton/MenuItemButton.js.map +1 -1
  241. package/dist/mocked_classnames/src/components/MenuButton/MenuButton.js +1 -1
  242. package/dist/mocked_classnames/src/components/MenuButton/MenuButton.js.map +1 -1
  243. package/dist/mocked_classnames/src/components/Modal/Modal/Modal.js +1 -1
  244. package/dist/mocked_classnames/src/components/Modal/Modal/Modal.js.map +1 -1
  245. package/dist/mocked_classnames/src/components/Modal/ModalHeader/ModalHeader.js +1 -1
  246. package/dist/mocked_classnames/src/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  247. package/dist/mocked_classnames/src/components/Modal/ModalTopActions/ModalTopActions.js +1 -1
  248. package/dist/mocked_classnames/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.js +1 -1
  249. package/dist/mocked_classnames/src/components/Modal/footers/ModalFooterBase/ModalFooterBase.js.map +1 -1
  250. package/dist/mocked_classnames/src/components/MultiStepIndicator/MultiStepIndicator.js +1 -1
  251. package/dist/mocked_classnames/src/components/MultiStepIndicator/MultiStepIndicator.js.map +1 -1
  252. package/dist/mocked_classnames/src/components/MultiStepIndicator/components/StepIndicator/StepIndicator.js +1 -1
  253. package/dist/mocked_classnames/src/components/MultiStepIndicator/components/StepIndicator/StepIndicator.js.map +1 -1
  254. package/dist/mocked_classnames/src/components/NumberField/NumberField.js +1 -1
  255. package/dist/mocked_classnames/src/components/NumberField/NumberField.js.map +1 -1
  256. package/dist/mocked_classnames/src/components/NumberField/components/NumberFieldSpinButton/NumberFieldSpinButton.js +1 -1
  257. package/dist/mocked_classnames/src/components/NumberField/components/NumberFieldSpinButton/NumberFieldSpinButton.js.map +1 -1
  258. package/dist/mocked_classnames/src/components/Search/Search.js +1 -1
  259. package/dist/mocked_classnames/src/components/Search/Search.js.map +1 -1
  260. package/dist/mocked_classnames/src/components/Slider/SliderInfixHooks.js +1 -1
  261. package/dist/mocked_classnames/src/components/Slider/SliderInfixHooks.js.map +1 -1
  262. package/dist/mocked_classnames/src/components/SplitButton/SplitButton.js +1 -1
  263. package/dist/mocked_classnames/src/components/SplitButton/SplitButton.js.map +1 -1
  264. package/dist/mocked_classnames/src/components/SplitButton/SplitButtonConstants.js +1 -1
  265. package/dist/mocked_classnames/src/components/SplitButton/SplitButtonConstants.js.map +1 -1
  266. package/dist/mocked_classnames/src/components/Steps/StepsCommand.js +1 -1
  267. package/dist/mocked_classnames/src/components/Steps/StepsCommand.js.map +1 -1
  268. package/dist/mocked_classnames/src/components/Steps/StepsHeader.js +1 -1
  269. package/dist/mocked_classnames/src/components/Steps/StepsHeader.js.map +1 -1
  270. package/dist/mocked_classnames/src/components/Table/Table/tableHelpers.js +1 -1
  271. package/dist/mocked_classnames/src/components/Table/Table/tableHelpers.js.map +1 -1
  272. package/dist/mocked_classnames/src/components/Table/TableHeaderCell/TableHeaderCell.js +1 -1
  273. package/dist/mocked_classnames/src/components/Table/TableHeaderCell/TableHeaderCell.js.map +1 -1
  274. package/dist/mocked_classnames/src/components/Tabs/Tab/Tab.js +1 -1
  275. package/dist/mocked_classnames/src/components/Tabs/Tab/Tab.js.map +1 -1
  276. package/dist/mocked_classnames/src/components/TextField/TextField.js +1 -1
  277. package/dist/mocked_classnames/src/components/TextField/TextField.js.map +1 -1
  278. package/dist/mocked_classnames/src/components/Tipseen/Tipseen.js +1 -1
  279. package/dist/mocked_classnames/src/components/Tipseen/Tipseen.js.map +1 -1
  280. package/dist/mocked_classnames/src/components/Tipseen/TipseenContent.js +1 -1
  281. package/dist/mocked_classnames/src/components/Tipseen/TipseenContent.js.map +1 -1
  282. package/dist/mocked_classnames/src/components/Toast/Toast.js +1 -1
  283. package/dist/mocked_classnames/src/components/Toast/Toast.js.map +1 -1
  284. package/dist/mocked_classnames/src/components/Toast/ToastButton/ToastButton.js +1 -1
  285. package/dist/mocked_classnames/src/components/Toast/ToastButton/ToastButton.js.map +1 -1
  286. package/dist/mocked_classnames/src/components/Toast/ToastConstants.js +1 -1
  287. package/dist/mocked_classnames/src/components/Toast/ToastConstants.js.map +1 -1
  288. package/dist/mocked_classnames/src/components/Toast/ToastHelpers.js +1 -1
  289. package/dist/mocked_classnames/src/components/Toast/ToastHelpers.js.map +1 -1
  290. package/dist/mocked_classnames/src/components/Tooltip/Tooltip.js +1 -1
  291. package/dist/mocked_classnames/src/components/Tooltip/Tooltip.js.map +1 -1
  292. package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxButton/AttentionBoxButton.js +1 -1
  293. package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxButton/AttentionBoxButton.js.map +1 -1
  294. package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxCloseButton/AttentionBoxCloseButton.js +1 -1
  295. package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxCloseButton/AttentionBoxCloseButton.js.map +1 -1
  296. package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxLeadingIcon/AttentionBoxLeadingIcon.js +1 -1
  297. package/dist/mocked_classnames/src/components/next/AttentionBox/components/AttentionBoxLeadingIcon/AttentionBoxLeadingIcon.js.map +1 -1
  298. package/dist/mocked_classnames/src/components/next/AttentionBox/consts/icons.js +1 -1
  299. package/dist/mocked_classnames/src/components/next/AttentionBox/consts/icons.js.map +1 -1
  300. package/dist/mocked_classnames/src/components/next/Dropdown/components/DropdownPopup/DropdownPopup.js +1 -1
  301. package/dist/mocked_classnames/src/components/next/Dropdown/components/DropdownPopup/DropdownPopup.js.map +1 -1
  302. package/dist/mocked_classnames/src/components/next/Dropdown/components/Menu/Menu.js +1 -1
  303. package/dist/mocked_classnames/src/components/next/Dropdown/components/Menu/Menu.js.map +1 -1
  304. package/dist/mocked_classnames/src/components/next/Dropdown/components/MultiSelectedValues/MultiSelectedValues.js +1 -1
  305. package/dist/mocked_classnames/src/components/next/Dropdown/components/MultiSelectedValues/MultiSelectedValues.js.map +1 -1
  306. package/dist/mocked_classnames/src/components/next/Dropdown/components/Trigger/DropdownInput.js +1 -1
  307. package/dist/mocked_classnames/src/components/next/Dropdown/components/Trigger/DropdownInput.js.map +1 -1
  308. package/dist/mocked_classnames/src/components/next/Dropdown/components/Trigger/TriggerActions.js +1 -1
  309. package/dist/mocked_classnames/src/components/next/Dropdown/components/Trigger/TriggerActions.js.map +1 -1
  310. package/dist/mocked_classnames/src/index.js +1 -1
  311. package/dist/src/components/Dropdown/Dropdown.js +1 -1
  312. package/dist/src/components/Dropdown/Dropdown.js.map +1 -1
  313. package/dist/src/components/EditableTypography/EditableTypography.js +1 -1
  314. package/dist/src/components/EditableTypography/EditableTypography.js.map +1 -1
  315. package/dist/src/components/LegacyModal/LegacyModal.js +1 -1
  316. package/dist/src/components/LegacyModal/LegacyModal.js.map +1 -1
  317. package/dist/src/components/Modal/Modal/Modal.js +1 -1
  318. package/dist/src/components/Modal/Modal/Modal.js.map +1 -1
  319. package/dist/src/index.js +1 -1
  320. package/package.json +10 -10
  321. package/dist/components/layer/dist/LayerProvider/LayerContext.js.map +0 -1
  322. package/dist/components/layer/dist/LayerProvider/LayerProvider.js.map +0 -1
  323. /package/dist/components/{layer → layers}/dist/LayerProvider/LayerContext.js +0 -0
  324. /package/dist/components/{layer → layers}/dist/LayerProvider/LayerProvider.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sources":["../../../../../../src/components/Menu/MenuItem/MenuItem.tsx"],"sourcesContent":["import React, { type AriaAttributes, type ForwardedRef, type ReactElement, forwardRef, useMemo, useRef } from \"react\";\nimport Tooltip, { type TooltipProps } from \"../../../components/Tooltip/Tooltip\";\nimport { type IconType, Icon, type SubIcon } from \"@vibe/icon\";\nimport useIsOverflowing from \"../../../hooks/useIsOverflowing/useIsOverflowing\";\nimport { type VibeComponentProps, withStaticProps } from \"../../../types\";\nimport { type CloseMenuOption, type MenuChild } from \"../Menu/MenuConstants\";\nimport Label from \"../../Label/Label\";\nimport styles from \"./MenuItem.module.scss\";\nimport BaseMenuItem from \"./components/BaseMenuItem/BaseMenuItem\";\nimport MenuItemIcon from \"./components/MenuItemIcon/MenuItemIcon\";\nimport { type TooltipPositions } from \"../../Tooltip/Tooltip.types\";\nimport { TooltipPositions as TooltipPositionsEnum } from \"../../Tooltip/TooltipConstants\";\nimport { type SubmenuPosition } from \"./MenuItem.types\";\nimport Flex from \"../../Flex/Flex\";\n\nexport interface MenuItemProps extends VibeComponentProps {\n /**\n * The title of the menu item.\n */\n title?: string;\n /**\n * The label displayed alongside the title.\n */\n label?: string | React.ReactElement<typeof Label>;\n /**\n * The icon displayed in the menu item.\n */\n icon?: SubIcon;\n /**\n * The type of icon.\n */\n iconType?: IconType;\n /**\n * The background color of the icon.\n */\n iconBackgroundColor?: string;\n /**\n * The right icon to be displayed.\n */\n rightIcon?: SubIcon;\n /**\n * The type of right icon.\n */\n rightIconType?: IconType;\n /**\n * The background color of the right icon.\n */\n rightIconBackgroundColor?: string;\n /**\n * Class name applied to the icon wrapper.\n */\n rightIconWrapperClassName?: string;\n /**\n * The label of the menu item for accessibility.\n */\n rightIconAriaLabel?: AriaAttributes[\"aria-label\"];\n /**\n * If true, the menu item is disabled.\n */\n disabled?: boolean;\n /**\n * The reason for disabling the item, shown in a tooltip.\n */\n disableReason?: string;\n /**\n * If true, the menu item is selected.\n */\n selected?: boolean;\n /**\n * Callback fired when the menu item is clicked.\n */\n onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n /**\n * The active item index in the menu.\n */\n activeItemIndex?: number;\n /**\n * Callback to set the active item index.\n */\n setActiveItemIndex?: (index: number) => void;\n /**\n * The index of the menu item.\n */\n index?: number;\n /**\n * The key of the menu item.\n */\n key?: string;\n /**\n * If true, the parent menu is visible.\n */\n isParentMenuVisible?: boolean;\n /**\n * Callback to reset the open submenu index.\n */\n resetOpenSubMenuIndex?: () => void;\n /**\n * If true, a submenu is open.\n */\n hasOpenSubMenu?: boolean;\n /**\n * Callback to open or close a submenu by index.\n */\n setSubMenuIsOpenByIndex?: (index: number, isOpen: boolean) => void;\n /**\n * If true, document event listeners are used for handling interactions.\n */\n useDocumentEventListeners?: boolean;\n /**\n * The tooltip content for the menu item.\n */\n tooltipContent?: string;\n /**\n * The position of the tooltip.\n */\n tooltipPosition?: TooltipPositions;\n /**\n * The delay in milliseconds before the tooltip shows.\n */\n tooltipShowDelay?: number;\n /**\n * Additional props for customizing the tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n /**\n * Callback fired when the mouse leaves the item.\n */\n onMouseLeave?: (event: React.MouseEvent) => void;\n /**\n * Callback fired when the mouse enters the item.\n */\n onMouseEnter?: (event: React.MouseEvent) => void;\n /**\n * Class name applied to the icon wrapper.\n */\n iconWrapperClassName?: string;\n /**\n * If true, the menu item starts as selected.\n */\n isInitialSelectedState?: boolean;\n /**\n * If true, the menu scrolls to ensure visibility.\n */\n shouldScrollMenu?: boolean;\n /**\n * Function to close the menu with a given option.\n */\n closeMenu?: (option: CloseMenuOption) => void;\n /**\n * Reference to the menu container.\n */\n menuRef?: React.RefObject<HTMLElement>;\n /**\n * The submenu items, if applicable.\n */\n children?: MenuChild | MenuChild[];\n /**\n * If true, enables a split menu item interaction where the main area triggers an action,\n * while the icon button opens the submenu.\n */\n splitMenuItem?: boolean;\n /**\n * The label of the menu item for accessibility.\n */\n \"aria-label\"?: AriaAttributes[\"aria-label\"];\n /**\n * The position of a submenu relative to the menu item.\n */\n submenuPosition?: SubmenuPosition;\n /**\n * If true, automatically repositions the submenu when its content changes.\n */\n autoAdjustOnSubMenuContentResize?: boolean;\n}\n\nexport interface MenuItemTitleComponentProps extends Omit<MenuItemProps, \"title\"> {\n title: ReactElement;\n \"aria-label\": NonNullable<AriaAttributes[\"aria-label\"]>;\n}\n\nconst MenuItem = forwardRef(\n (\n {\n className,\n iconWrapperClassName,\n rightIconWrapperClassName,\n title = \"\",\n label = \"\",\n icon = \"\",\n rightIcon = \"\",\n rightIconType,\n rightIconBackgroundColor,\n rightIconAriaLabel,\n iconType,\n iconBackgroundColor,\n disabled = false,\n disableReason,\n selected = false,\n key,\n children,\n tooltipContent,\n tooltipPosition = \"right\",\n tooltipShowDelay = 300,\n tooltipProps,\n \"aria-label\": ariaLabel,\n ...baseMenuProps\n }: MenuItemProps | MenuItemTitleComponentProps,\n ref: ForwardedRef<HTMLElement>\n ) => {\n const titleRef = useRef();\n\n // if \"title\" is a component ariaLabel is mandatory\n const iconLabel = ariaLabel ?? (title as string);\n const rightIconLabel = rightIconAriaLabel ?? (title as string);\n\n const isTitleHoveredAndOverflowing = useIsOverflowing({ ref: titleRef });\n const shouldShowTooltip = isTitleHoveredAndOverflowing || disabled || tooltipContent;\n\n const finalTooltipContent = useMemo(() => {\n if (disabled) return disableReason;\n if (tooltipContent) return tooltipContent;\n return title;\n }, [disableReason, disabled, title, tooltipContent]);\n\n const renderLabel = useMemo(() => {\n if (!label) return;\n if (typeof label === \"string\") {\n return <Label kind=\"line\" text={label} />;\n }\n if (React.isValidElement(label) && label.type === Label) {\n return label;\n }\n }, [label]);\n\n return (\n <Tooltip\n content={shouldShowTooltip ? finalTooltipContent : null}\n position={tooltipPosition}\n showDelay={tooltipShowDelay}\n {...tooltipProps}\n >\n <BaseMenuItem\n key={key}\n ref={ref}\n subMenu={children}\n className={className}\n disabled={disabled}\n selected={selected}\n {...baseMenuProps}\n >\n {Boolean(icon) && (\n <MenuItemIcon\n icon={icon}\n type={iconType}\n label={iconLabel}\n disabled={disabled}\n selected={selected}\n backgroundColor={iconBackgroundColor}\n wrapperClassName={iconWrapperClassName}\n />\n )}\n <div ref={titleRef} className={styles.title}>\n {title}\n </div>\n <Flex gap=\"xs\">\n {Boolean(rightIcon) && !children && (\n <MenuItemIcon\n icon={rightIcon}\n type={rightIconType}\n label={rightIconLabel}\n disabled={disabled}\n selected={selected}\n backgroundColor={rightIconBackgroundColor}\n isRightIcon={true}\n wrapperClassName={rightIconWrapperClassName}\n />\n )}\n {renderLabel}\n </Flex>\n </BaseMenuItem>\n </Tooltip>\n );\n }\n);\n\nObject.assign(MenuItem, {\n isSelectable: true,\n isMenuChild: true\n});\n\ninterface MenuItemStaticProps {\n iconType: typeof Icon.type;\n tooltipPositions: typeof TooltipPositionsEnum;\n}\n\nexport default withStaticProps<MenuItemProps | MenuItemTitleComponentProps, MenuItemStaticProps>(MenuItem, {\n iconType: Icon.type,\n tooltipPositions: TooltipPositionsEnum\n});\n"],"names":["MenuItem","forwardRef","_a","ref","className","iconWrapperClassName","rightIconWrapperClassName","_a$title","title","_a$label","label","_a$icon","icon","_a$rightIcon","rightIcon","rightIconType","rightIconBackgroundColor","rightIconAriaLabel","iconType","iconBackgroundColor","_a$disabled","disabled","disableReason","_a$selected","selected","key","children","tooltipContent","_a$tooltipPosition","tooltipPosition","_a$tooltipShowDelay","tooltipShowDelay","tooltipProps","ariaLabel","baseMenuProps","__rest","titleRef","useRef","iconLabel","rightIconLabel","shouldShowTooltip","useIsOverflowing","finalTooltipContent","useMemo","renderLabel","React","createElement","Label","kind","text","isValidElement","type","Tooltip","Object","assign","content","position","showDelay","BaseMenuItem","subMenu","MenuItemIcon","backgroundColor","wrapperClassName","styles","Flex","gap","isRightIcon","isSelectable","isMenuChild","withStaticProps","Icon","tooltipPositions","TooltipPositionsEnum"],"mappings":"yqBAoLA,IAAMA,EAAWC,GACf,SACEC,EAyBAC,GAzBA,IACEC,EAuB4CF,EAvB5CE,UACAC,EAsB4CH,EAtB5CG,qBACAC,EAqB4CJ,EArB5CI,0BAAyBC,EAqBmBL,EApB5CM,MAAAA,OAAQ,IAAHD,EAAG,GAAEA,EAAAE,EAoBkCP,EAnB5CQ,MAAAA,OAAQ,IAAHD,EAAG,GAAEA,EAAAE,EAmBkCT,EAlB5CU,KAAAA,OAAO,IAAHD,EAAG,GAAEA,EAAAE,EAkBmCX,EAjB5CY,UAAAA,OAAY,IAAHD,EAAG,GAAEA,EACdE,EAgB4Cb,EAhB5Ca,cACAC,EAe4Cd,EAf5Cc,yBACAC,EAc4Cf,EAd5Ce,mBACAC,EAa4ChB,EAb5CgB,SACAC,EAY4CjB,EAZ5CiB,oBAAmBC,EAYyBlB,EAX5CmB,SAAAA,OAAW,IAAHD,GAAQA,EAChBE,EAU4CpB,EAV5CoB,cAAaC,EAU+BrB,EAT5CsB,SAAAA,OAAW,IAAHD,GAAQA,EAChBE,EAQ4CvB,EAR5CuB,IACAC,EAO4CxB,EAP5CwB,SACAC,EAM4CzB,EAN5CyB,eAAcC,EAM8B1B,EAL5C2B,gBAAAA,OAAkB,IAAHD,EAAG,QAAOA,EAAAE,EAKmB5B,EAJ5C6B,iBAAAA,OAAmB,IAAHD,EAAG,IAAGA,EACtBE,EAG4C9B,EAH5C8B,aACcC,EAE8B/B,EAF5C,cACGgC,EAAaC,EAAAjC,EAvBlB,+UA2BMkC,EAAWC,IAGXC,EAAYL,QAAAA,EAAczB,EAC1B+B,EAAiBtB,QAAAA,EAAuBT,EAGxCgC,EAD+BC,EAAiB,CAAEtC,IAAKiC,KACHf,GAAYM,EAEhEe,EAAsBC,GAAQ,WAClC,OAAItB,EAAiBC,EACjBK,GACGnB,CACR,GAAE,CAACc,EAAeD,EAAUb,EAAOmB,IAE9BiB,EAAcD,GAAQ,WAC1B,GAAKjC,EACL,MAAqB,iBAAVA,EACFmC,EAAAC,cAACC,EAAK,CAACC,KAAK,OAAOC,KAAMvC,IAE9BmC,EAAMK,eAAexC,IAAUA,EAAMyC,OAASJ,EACzCrC,OADT,CAGF,GAAG,CAACA,IAEJ,OACEmC,EAACC,cAAAM,EACCC,OAAAC,OAAA,CAAAC,QAASf,EAAoBE,EAAsB,KACnDc,SAAU3B,EACV4B,UAAW1B,GACPC,GAEJa,EAACC,cAAAY,EACCL,OAAAC,OAAA,CAAA7B,IAAKA,EACLtB,IAAKA,EACLwD,QAASjC,EACTtB,UAAWA,EACXiB,SAAUA,EACVG,SAAUA,GACNU,KAEKtB,GACPiC,gBAACe,EAAY,CACXhD,KAAMA,EACNuC,KAAMjC,EACNR,MAAO4B,EACPjB,SAAUA,EACVG,SAAUA,EACVqC,gBAAiB1C,EACjB2C,iBAAkBzD,IAGtBwC,EAAKC,cAAA,MAAA,CAAA3C,IAAKiC,EAAUhC,UAAW2D,EAAOvD,OACnCA,GAEHqC,EAAAC,cAACkB,EAAI,CAACC,IAAI,QACCnD,IAAeY,GACtBmB,EAAAC,cAACc,EACC,CAAAhD,KAAME,EACNqC,KAAMpC,EACNL,MAAO6B,EACPlB,SAAUA,EACVG,SAAUA,EACVqC,gBAAiB7C,EACjBkD,aAAa,EACbJ,iBAAkBxD,IAGrBsC,IAKX,IAGFS,OAAOC,OAAOtD,EAAU,CACtBmE,cAAc,EACdC,aAAa,IAQf,IAAeC,EAAAA,EAAkFrE,EAAU,CACzGkB,SAAUoD,EAAKnB,KACfoB,iBAAkBC"}
1
+ {"version":3,"file":"MenuItem.js","sources":["../../../../../../src/components/Menu/MenuItem/MenuItem.tsx"],"sourcesContent":["import React, { type AriaAttributes, type ForwardedRef, type ReactElement, forwardRef, useMemo, useRef } from \"react\";\nimport Tooltip, { type TooltipProps } from \"../../../components/Tooltip/Tooltip\";\nimport { type IconType, Icon, type SubIcon } from \"@vibe/icon\";\nimport useIsOverflowing from \"../../../hooks/useIsOverflowing/useIsOverflowing\";\nimport { type VibeComponentProps, withStaticProps } from \"../../../types\";\nimport { type CloseMenuOption, type MenuChild } from \"../Menu/MenuConstants\";\nimport Label from \"../../Label/Label\";\nimport styles from \"./MenuItem.module.scss\";\nimport BaseMenuItem from \"./components/BaseMenuItem/BaseMenuItem\";\nimport MenuItemIcon from \"./components/MenuItemIcon/MenuItemIcon\";\nimport { type TooltipPositions } from \"../../Tooltip/Tooltip.types\";\nimport { TooltipPositions as TooltipPositionsEnum } from \"../../Tooltip/TooltipConstants\";\nimport { type SubmenuPosition } from \"./MenuItem.types\";\nimport Flex from \"../../Flex/Flex\";\n\nexport interface MenuItemProps extends VibeComponentProps {\n /**\n * The title of the menu item.\n */\n title?: string;\n /**\n * The label displayed alongside the title.\n */\n label?: string | React.ReactElement<typeof Label>;\n /**\n * The icon displayed in the menu item.\n */\n icon?: SubIcon;\n /**\n * The type of icon.\n */\n iconType?: IconType;\n /**\n * The background color of the icon.\n */\n iconBackgroundColor?: string;\n /**\n * The right icon to be displayed.\n */\n rightIcon?: SubIcon;\n /**\n * The type of right icon.\n */\n rightIconType?: IconType;\n /**\n * The background color of the right icon.\n */\n rightIconBackgroundColor?: string;\n /**\n * Class name applied to the icon wrapper.\n */\n rightIconWrapperClassName?: string;\n /**\n * The label of the menu item for accessibility.\n */\n rightIconAriaLabel?: AriaAttributes[\"aria-label\"];\n /**\n * If true, the menu item is disabled.\n */\n disabled?: boolean;\n /**\n * The reason for disabling the item, shown in a tooltip.\n */\n disableReason?: string;\n /**\n * If true, the menu item is selected.\n */\n selected?: boolean;\n /**\n * Callback fired when the menu item is clicked.\n */\n onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n /**\n * The active item index in the menu.\n */\n activeItemIndex?: number;\n /**\n * Callback to set the active item index.\n */\n setActiveItemIndex?: (index: number) => void;\n /**\n * The index of the menu item.\n */\n index?: number;\n /**\n * The key of the menu item.\n */\n key?: string;\n /**\n * If true, the parent menu is visible.\n */\n isParentMenuVisible?: boolean;\n /**\n * Callback to reset the open submenu index.\n */\n resetOpenSubMenuIndex?: () => void;\n /**\n * If true, a submenu is open.\n */\n hasOpenSubMenu?: boolean;\n /**\n * Callback to open or close a submenu by index.\n */\n setSubMenuIsOpenByIndex?: (index: number, isOpen: boolean) => void;\n /**\n * If true, document event listeners are used for handling interactions.\n */\n useDocumentEventListeners?: boolean;\n /**\n * The tooltip content for the menu item.\n */\n tooltipContent?: string;\n /**\n * The position of the tooltip.\n */\n tooltipPosition?: TooltipPositions;\n /**\n * The delay in milliseconds before the tooltip shows.\n */\n tooltipShowDelay?: number;\n /**\n * Additional props for customizing the tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n /**\n * Callback fired when the mouse leaves the item.\n */\n onMouseLeave?: (event: React.MouseEvent) => void;\n /**\n * Callback fired when the mouse enters the item.\n */\n onMouseEnter?: (event: React.MouseEvent) => void;\n /**\n * Class name applied to the icon wrapper.\n */\n iconWrapperClassName?: string;\n /**\n * If true, the menu item starts as selected.\n */\n isInitialSelectedState?: boolean;\n /**\n * If true, the menu scrolls to ensure visibility.\n */\n shouldScrollMenu?: boolean;\n /**\n * Function to close the menu with a given option.\n */\n closeMenu?: (option: CloseMenuOption) => void;\n /**\n * Reference to the menu container.\n */\n menuRef?: React.RefObject<HTMLElement>;\n /**\n * The submenu items, if applicable.\n */\n children?: MenuChild | MenuChild[];\n /**\n * If true, enables a split menu item interaction where the main area triggers an action,\n * while the icon button opens the submenu.\n */\n splitMenuItem?: boolean;\n /**\n * The label of the menu item for accessibility.\n */\n \"aria-label\"?: AriaAttributes[\"aria-label\"];\n /**\n * The position of a submenu relative to the menu item.\n */\n submenuPosition?: SubmenuPosition;\n /**\n * If true, automatically repositions the submenu when its content changes.\n */\n autoAdjustOnSubMenuContentResize?: boolean;\n}\n\nexport interface MenuItemTitleComponentProps extends Omit<MenuItemProps, \"title\"> {\n title: ReactElement;\n \"aria-label\": NonNullable<AriaAttributes[\"aria-label\"]>;\n}\n\nconst MenuItem = forwardRef(\n (\n {\n className,\n iconWrapperClassName,\n rightIconWrapperClassName,\n title = \"\",\n label = \"\",\n icon = \"\",\n rightIcon = \"\",\n rightIconType,\n rightIconBackgroundColor,\n rightIconAriaLabel,\n iconType,\n iconBackgroundColor,\n disabled = false,\n disableReason,\n selected = false,\n key,\n children,\n tooltipContent,\n tooltipPosition = \"right\",\n tooltipShowDelay = 300,\n tooltipProps,\n \"aria-label\": ariaLabel,\n ...baseMenuProps\n }: MenuItemProps | MenuItemTitleComponentProps,\n ref: ForwardedRef<HTMLElement>\n ) => {\n const titleRef = useRef();\n\n // if \"title\" is a component ariaLabel is mandatory\n const iconLabel = ariaLabel ?? (title as string);\n const rightIconLabel = rightIconAriaLabel ?? (title as string);\n\n const isTitleHoveredAndOverflowing = useIsOverflowing({ ref: titleRef });\n const shouldShowTooltip = isTitleHoveredAndOverflowing || disabled || tooltipContent;\n\n const finalTooltipContent = useMemo(() => {\n if (disabled) return disableReason;\n if (tooltipContent) return tooltipContent;\n return title;\n }, [disableReason, disabled, title, tooltipContent]);\n\n const renderLabel = useMemo(() => {\n if (!label) return;\n if (typeof label === \"string\") {\n return <Label kind=\"line\" text={label} />;\n }\n if (React.isValidElement(label) && label.type === Label) {\n return label;\n }\n }, [label]);\n\n return (\n <Tooltip\n content={shouldShowTooltip ? finalTooltipContent : null}\n position={tooltipPosition}\n showDelay={tooltipShowDelay}\n {...tooltipProps}\n >\n <BaseMenuItem\n key={key}\n ref={ref}\n subMenu={children}\n className={className}\n disabled={disabled}\n selected={selected}\n {...baseMenuProps}\n >\n {Boolean(icon) && (\n <MenuItemIcon\n icon={icon}\n type={iconType}\n label={iconLabel}\n disabled={disabled}\n selected={selected}\n backgroundColor={iconBackgroundColor}\n wrapperClassName={iconWrapperClassName}\n />\n )}\n <div ref={titleRef} className={styles.title}>\n {title}\n </div>\n <Flex gap=\"xs\">\n {Boolean(rightIcon) && !children && (\n <MenuItemIcon\n icon={rightIcon}\n type={rightIconType}\n label={rightIconLabel}\n disabled={disabled}\n selected={selected}\n backgroundColor={rightIconBackgroundColor}\n isRightIcon={true}\n wrapperClassName={rightIconWrapperClassName}\n />\n )}\n {renderLabel}\n </Flex>\n </BaseMenuItem>\n </Tooltip>\n );\n }\n);\n\nObject.assign(MenuItem, {\n isSelectable: true,\n isMenuChild: true\n});\n\ninterface MenuItemStaticProps {\n iconType: typeof Icon.type;\n tooltipPositions: typeof TooltipPositionsEnum;\n}\n\nexport default withStaticProps<MenuItemProps | MenuItemTitleComponentProps, MenuItemStaticProps>(MenuItem, {\n iconType: Icon.type,\n tooltipPositions: TooltipPositionsEnum\n});\n"],"names":["MenuItem","forwardRef","_a","ref","className","iconWrapperClassName","rightIconWrapperClassName","_a$title","title","_a$label","label","_a$icon","icon","_a$rightIcon","rightIcon","rightIconType","rightIconBackgroundColor","rightIconAriaLabel","iconType","iconBackgroundColor","_a$disabled","disabled","disableReason","_a$selected","selected","key","children","tooltipContent","_a$tooltipPosition","tooltipPosition","_a$tooltipShowDelay","tooltipShowDelay","tooltipProps","ariaLabel","baseMenuProps","__rest","titleRef","useRef","iconLabel","rightIconLabel","shouldShowTooltip","useIsOverflowing","finalTooltipContent","useMemo","renderLabel","React","createElement","Label","kind","text","isValidElement","type","Tooltip","Object","assign","content","position","showDelay","BaseMenuItem","subMenu","MenuItemIcon","backgroundColor","wrapperClassName","styles","Flex","gap","isRightIcon","isSelectable","isMenuChild","withStaticProps","Icon","tooltipPositions","TooltipPositionsEnum"],"mappings":"mrBAoLA,IAAMA,EAAWC,GACf,SACEC,EAyBAC,GAzBA,IACEC,EAuB4CF,EAvB5CE,UACAC,EAsB4CH,EAtB5CG,qBACAC,EAqB4CJ,EArB5CI,0BAAyBC,EAqBmBL,EApB5CM,MAAAA,OAAQ,IAAHD,EAAG,GAAEA,EAAAE,EAoBkCP,EAnB5CQ,MAAAA,OAAQ,IAAHD,EAAG,GAAEA,EAAAE,EAmBkCT,EAlB5CU,KAAAA,OAAO,IAAHD,EAAG,GAAEA,EAAAE,EAkBmCX,EAjB5CY,UAAAA,OAAY,IAAHD,EAAG,GAAEA,EACdE,EAgB4Cb,EAhB5Ca,cACAC,EAe4Cd,EAf5Cc,yBACAC,EAc4Cf,EAd5Ce,mBACAC,EAa4ChB,EAb5CgB,SACAC,EAY4CjB,EAZ5CiB,oBAAmBC,EAYyBlB,EAX5CmB,SAAAA,OAAW,IAAHD,GAAQA,EAChBE,EAU4CpB,EAV5CoB,cAAaC,EAU+BrB,EAT5CsB,SAAAA,OAAW,IAAHD,GAAQA,EAChBE,EAQ4CvB,EAR5CuB,IACAC,EAO4CxB,EAP5CwB,SACAC,EAM4CzB,EAN5CyB,eAAcC,EAM8B1B,EAL5C2B,gBAAAA,OAAkB,IAAHD,EAAG,QAAOA,EAAAE,EAKmB5B,EAJ5C6B,iBAAAA,OAAmB,IAAHD,EAAG,IAAGA,EACtBE,EAG4C9B,EAH5C8B,aACcC,EAE8B/B,EAF5C,cACGgC,EAAaC,EAAAjC,EAvBlB,+UA2BMkC,EAAWC,IAGXC,EAAYL,QAAAA,EAAczB,EAC1B+B,EAAiBtB,QAAAA,EAAuBT,EAGxCgC,EAD+BC,EAAiB,CAAEtC,IAAKiC,KACHf,GAAYM,EAEhEe,EAAsBC,GAAQ,WAClC,OAAItB,EAAiBC,EACjBK,GACGnB,CACR,GAAE,CAACc,EAAeD,EAAUb,EAAOmB,IAE9BiB,EAAcD,GAAQ,WAC1B,GAAKjC,EACL,MAAqB,iBAAVA,EACFmC,EAAAC,cAACC,EAAK,CAACC,KAAK,OAAOC,KAAMvC,IAE9BmC,EAAMK,eAAexC,IAAUA,EAAMyC,OAASJ,EACzCrC,OADT,CAGF,GAAG,CAACA,IAEJ,OACEmC,EAACC,cAAAM,EACCC,OAAAC,OAAA,CAAAC,QAASf,EAAoBE,EAAsB,KACnDc,SAAU3B,EACV4B,UAAW1B,GACPC,GAEJa,EAACC,cAAAY,EACCL,OAAAC,OAAA,CAAA7B,IAAKA,EACLtB,IAAKA,EACLwD,QAASjC,EACTtB,UAAWA,EACXiB,SAAUA,EACVG,SAAUA,GACNU,KAEKtB,GACPiC,gBAACe,EAAY,CACXhD,KAAMA,EACNuC,KAAMjC,EACNR,MAAO4B,EACPjB,SAAUA,EACVG,SAAUA,EACVqC,gBAAiB1C,EACjB2C,iBAAkBzD,IAGtBwC,EAAKC,cAAA,MAAA,CAAA3C,IAAKiC,EAAUhC,UAAW2D,EAAOvD,OACnCA,GAEHqC,EAAAC,cAACkB,EAAI,CAACC,IAAI,QACCnD,IAAeY,GACtBmB,EAAAC,cAACc,EACC,CAAAhD,KAAME,EACNqC,KAAMpC,EACNL,MAAO6B,EACPlB,SAAUA,EACVG,SAAUA,EACVqC,gBAAiB7C,EACjBkD,aAAa,EACbJ,iBAAkBxD,IAGrBsC,IAKX,IAGFS,OAAOC,OAAOtD,EAAU,CACtBmE,cAAc,EACdC,aAAa,IAQf,IAAeC,EAAAA,EAAkFrE,EAAU,CACzGkB,SAAUoD,EAAKnB,KACfoB,iBAAkBC"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e}from"../../../../../../_virtual/_rollupPluginBabelHelpers.js";import o from"react";import{Icon as r}from"@vibe/icon/mockedClassNames";import s from"../../../../Flex/Flex.js";import t from"classnames";import i from"./MenuItemIcon.module.scss.js";var a=function(a){var c=a.icon,n=a.isRightIcon,l=a.type,m=a.disabled,p=a.selected,d=a.backgroundColor,u=a.wrapperClassName;return o.createElement(s,{justify:"center",className:t(i.iconWrapper,e(e(e({},i.rightIcon,void 0!==n&&n),i.disabled,m),i.withBackgroundColor,!!d),u),style:Object.assign({},d&&{backgroundColor:d})},o.createElement(r,{iconType:l||("function"==typeof c?"svg":"font"),icon:c,className:t(i.icon,e({},i.selected,!m&&p)),ignoreFocusStyle:!0,iconSize:18}))};export{a as default};
1
+ import{defineProperty as e}from"../../../../../../_virtual/_rollupPluginBabelHelpers.js";import o from"react";import r from"../../../../Flex/Flex.js";import t from"classnames";import n from"./MenuItemIcon.module.scss.js";import s from"../../../../../../components/icon/dist/Icon/Icon.js";var c=function(c){var i=c.icon,a=c.isRightIcon,l=c.type,m=c.disabled,p=c.selected,d=c.backgroundColor,u=c.wrapperClassName;return o.createElement(r,{justify:"center",className:t(n.iconWrapper,e(e(e({},n.rightIcon,void 0!==a&&a),n.disabled,m),n.withBackgroundColor,!!d),u),style:Object.assign({},d&&{backgroundColor:d})},o.createElement(s,{iconType:l||("function"==typeof i?"svg":"font"),icon:i,className:t(n.icon,e({},n.selected,!m&&p)),ignoreFocusStyle:!0,iconSize:18}))};export{c as default};
2
2
  //# sourceMappingURL=MenuItemIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemIcon.js","sources":["../../../../../../../../src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@vibe/icon\";\nimport Flex from \"../../../../Flex/Flex\";\nimport cx from \"classnames\";\nimport styles from \"./MenuItemIcon.module.scss\";\nimport { type MenuItemIconProps } from \"./MenuItemIcon.types\";\n\nconst MenuItemIcon = ({\n icon,\n isRightIcon = false,\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n label,\n disabled,\n selected,\n backgroundColor,\n wrapperClassName\n}: MenuItemIconProps) => (\n <Flex\n justify=\"center\"\n className={cx(\n styles.iconWrapper,\n {\n [styles.rightIcon]: isRightIcon,\n [styles.disabled]: disabled,\n [styles.withBackgroundColor]: !!backgroundColor\n },\n wrapperClassName\n )}\n style={{ ...(backgroundColor && { backgroundColor }) }}\n >\n <Icon\n iconType={type || (typeof icon === \"function\" ? \"svg\" : \"font\")}\n icon={icon}\n className={cx(styles.icon, { [styles.selected]: !disabled && selected })}\n ignoreFocusStyle\n iconSize={18}\n />\n </Flex>\n);\n\nexport default MenuItemIcon;\n"],"names":["MenuItemIcon","_ref","icon","_ref$isRightIcon","isRightIcon","type","disabled","selected","backgroundColor","wrapperClassName","React","createElement","Flex","justify","className","cx","styles","iconWrapper","_defineProperty","rightIcon","withBackgroundColor","style","Object","assign","Icon","iconType","ignoreFocusStyle","iconSize"],"mappings":"gRAOA,IAAMA,EAAe,SAAHC,GAAA,IAChBC,EAAID,EAAJC,KAAIC,EAAAF,EACJG,YACAC,EAAIJ,EAAJI,KAGAC,EAAQL,EAARK,SACAC,EAAQN,EAARM,SACAC,EAAeP,EAAfO,gBACAC,EAAgBR,EAAhBQ,iBAAgB,OAEhBC,EAACC,cAAAC,EACC,CAAAC,QAAQ,SACRC,UAAWC,EACTC,EAAOC,YAAWC,EAAAA,EAAAA,EAEfF,GAAAA,EAAOG,eAdA,IAAHhB,GAAQA,GAeZa,EAAOV,SAAWA,GAClBU,EAAOI,sBAAwBZ,GAElCC,GAEFY,MAAKC,OAAAC,OAAA,CAAA,EAAQf,GAAmB,CAAEA,gBAAAA,KAElCE,EAACC,cAAAa,EACC,CAAAC,SAAUpB,IAAyB,mBAATH,EAAsB,MAAQ,QACxDA,KAAMA,EACNY,UAAWC,EAAGC,EAAOd,KAAIgB,EAAA,GAAKF,EAAOT,UAAYD,GAAYC,IAC7DmB,kBAAgB,EAChBC,SAAU,KAEP"}
1
+ {"version":3,"file":"MenuItemIcon.js","sources":["../../../../../../../../src/components/Menu/MenuItem/components/MenuItemIcon/MenuItemIcon.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@vibe/icon\";\nimport Flex from \"../../../../Flex/Flex\";\nimport cx from \"classnames\";\nimport styles from \"./MenuItemIcon.module.scss\";\nimport { type MenuItemIconProps } from \"./MenuItemIcon.types\";\n\nconst MenuItemIcon = ({\n icon,\n isRightIcon = false,\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n label,\n disabled,\n selected,\n backgroundColor,\n wrapperClassName\n}: MenuItemIconProps) => (\n <Flex\n justify=\"center\"\n className={cx(\n styles.iconWrapper,\n {\n [styles.rightIcon]: isRightIcon,\n [styles.disabled]: disabled,\n [styles.withBackgroundColor]: !!backgroundColor\n },\n wrapperClassName\n )}\n style={{ ...(backgroundColor && { backgroundColor }) }}\n >\n <Icon\n iconType={type || (typeof icon === \"function\" ? \"svg\" : \"font\")}\n icon={icon}\n className={cx(styles.icon, { [styles.selected]: !disabled && selected })}\n ignoreFocusStyle\n iconSize={18}\n />\n </Flex>\n);\n\nexport default MenuItemIcon;\n"],"names":["MenuItemIcon","_ref","icon","_ref$isRightIcon","isRightIcon","type","disabled","selected","backgroundColor","wrapperClassName","React","createElement","Flex","justify","className","cx","styles","iconWrapper","_defineProperty","rightIcon","withBackgroundColor","style","Object","assign","Icon","iconType","ignoreFocusStyle","iconSize"],"mappings":"gSAOA,IAAMA,EAAe,SAAHC,GAAA,IAChBC,EAAID,EAAJC,KAAIC,EAAAF,EACJG,YACAC,EAAIJ,EAAJI,KAGAC,EAAQL,EAARK,SACAC,EAAQN,EAARM,SACAC,EAAeP,EAAfO,gBACAC,EAAgBR,EAAhBQ,iBAAgB,OAEhBC,EAACC,cAAAC,EACC,CAAAC,QAAQ,SACRC,UAAWC,EACTC,EAAOC,YAAWC,EAAAA,EAAAA,EAEfF,GAAAA,EAAOG,eAdA,IAAHhB,GAAQA,GAeZa,EAAOV,SAAWA,GAClBU,EAAOI,sBAAwBZ,GAElCC,GAEFY,MAAKC,OAAAC,OAAA,CAAA,EAAQf,GAAmB,CAAEA,gBAAAA,KAElCE,EAACC,cAAAa,EACC,CAAAC,SAAUpB,IAAyB,mBAATH,EAAsB,MAAQ,QACxDA,KAAMA,EACNY,UAAWC,EAAGC,EAAOd,KAAIgB,EAAA,GAAKF,EAAOT,UAAYD,GAAYC,IAC7DmB,kBAAgB,EAChBC,SAAU,KAEP"}
@@ -1,2 +1,2 @@
1
- import e,{useRef as n,useMemo as t}from"react";import{DialogPlacementEnum as i,usePopover as o,DialogContentContainer as s}from"@vibe/dialog/mockedClassNames";import{useIsomorphicLayoutEffect as l}from"@vibe/shared/mockedClassNames";var r=function(r){var u,a=r.anchorRef,c=r.open,d=r.autoFocusOnMount,m=r.onClose,v=r.children,p=r.submenuPosition,b=r.autoAdjustOnSubMenuContentResize,f=n(null),O=n(null);l((function(){d&&c&&(null==f?void 0:f.current)&&requestAnimationFrame((function(){f.current.focus()}))}),[d,c]);var h=t((function(){return"left"===p?i.LEFT_START:void 0}),[p]),C=o(null==a?void 0:a.current,null==O?void 0:O.current,{isOpen:c,placement:h,observeContentResize:b}),g=C.styles,j=C.attributes,y=v&&e.Children.only(v);return(null===(u=null==y?void 0:y.type)||void 0===u?void 0:u.isMenu)?e.createElement("div",Object.assign({style:Object.assign(Object.assign({},g.popper),{visibility:c?"visible":"hidden"})},j.popper,{ref:O}),y&&c&&e.createElement(s,null,e.cloneElement(y,Object.assign(Object.assign({},null==y?void 0:y.props),{isVisible:c,isSubMenu:!0,onClose:m,ref:f,useDocumentEventListeners:!d})))):(console.error("MenuItem can accept only Menu element as first level child, this element is not valid: ",y),null)};export{r as default};
1
+ import e,{useRef as n,useMemo as o}from"react";import{DialogPlacement as t}from"../../../../../../components/dialog/dist/Dialog/DialogConstants.js";import i from"../../../../../../components/dialog/dist/Dialog/usePopover.js";import s from"../../../../../../components/dialog/dist/DialogContentContainer/DialogContentContainer.js";import{useIsomorphicLayoutEffect as l}from"../../../../../../shared/dist/hooks/ssr/useIsomorphicLayoutEffect.js";var r=function(r){var u,a=r.anchorRef,c=r.open,m=r.autoFocusOnMount,d=r.onClose,p=r.children,v=r.submenuPosition,f=r.autoAdjustOnSubMenuContentResize,g=n(null),b=n(null);l((function(){m&&c&&(null==g?void 0:g.current)&&requestAnimationFrame((function(){g.current.focus()}))}),[m,c]);var j=o((function(){return"left"===v?t.LEFT_START:void 0}),[v]),C=i(null==a?void 0:a.current,null==b?void 0:b.current,{isOpen:c,placement:j,observeContentResize:f}),h=C.styles,O=C.attributes,y=p&&e.Children.only(p);return(null===(u=null==y?void 0:y.type)||void 0===u?void 0:u.isMenu)?e.createElement("div",Object.assign({style:Object.assign(Object.assign({},h.popper),{visibility:c?"visible":"hidden"})},O.popper,{ref:b}),y&&c&&e.createElement(s,null,e.cloneElement(y,Object.assign(Object.assign({},null==y?void 0:y.props),{isVisible:c,isSubMenu:!0,onClose:d,ref:g,useDocumentEventListeners:!m})))):(console.error("MenuItem can accept only Menu element as first level child, this element is not valid: ",y),null)};export{r as default};
2
2
  //# sourceMappingURL=MenuItemSubMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemSubMenu.js","sources":["../../../../../../../../src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.tsx"],"sourcesContent":["import React, { useMemo, useRef } from \"react\";\nimport { DialogContentContainer } from \"@vibe/dialog\";\nimport { usePopover, DialogPlacementEnum as Placement } from \"@vibe/dialog\";\nimport { type MenuChild } from \"../../../Menu/MenuConstants\";\nimport { type MenuItemSubMenuProps } from \"./MenuItemSubMenu.types\";\nimport { useIsomorphicLayoutEffect } from \"@vibe/shared\";\n\nconst MenuItemSubMenu = ({\n anchorRef,\n open,\n autoFocusOnMount,\n onClose,\n children,\n submenuPosition,\n autoAdjustOnSubMenuContentResize\n}: MenuItemSubMenuProps) => {\n const childRef = useRef<HTMLDivElement>(null);\n const popperElementRef = useRef<HTMLDivElement>(null);\n\n useIsomorphicLayoutEffect(() => {\n if (!autoFocusOnMount || !open || !childRef?.current) {\n return;\n }\n requestAnimationFrame(() => {\n childRef.current.focus();\n });\n }, [autoFocusOnMount, open]);\n\n const submenuPlacement = useMemo(\n () => (submenuPosition === \"left\" ? Placement.LEFT_START : undefined),\n [submenuPosition]\n );\n\n const { styles: popoverStyles, attributes: popoverAttributes } = usePopover(\n anchorRef?.current,\n popperElementRef?.current,\n {\n isOpen: open,\n placement: submenuPlacement,\n observeContentResize: autoAdjustOnSubMenuContentResize\n }\n );\n\n const subMenu: MenuChild = children && React.Children.only(children);\n if (!subMenu?.type?.isMenu) {\n console.error(\"MenuItem can accept only Menu element as first level child, this element is not valid: \", subMenu);\n return null;\n }\n\n return (\n <div\n style={{ ...popoverStyles.popper, visibility: open ? \"visible\" : \"hidden\" }}\n {...popoverAttributes.popper}\n ref={popperElementRef}\n >\n {subMenu && open && (\n <DialogContentContainer>\n {React.cloneElement(subMenu, {\n ...subMenu?.props,\n isVisible: open,\n isSubMenu: true,\n onClose,\n ref: childRef,\n useDocumentEventListeners: !autoFocusOnMount\n })}\n </DialogContentContainer>\n )}\n </div>\n );\n};\n\nexport default MenuItemSubMenu;\n"],"names":["MenuItemSubMenu","_ref","anchorRef","open","autoFocusOnMount","onClose","children","submenuPosition","autoAdjustOnSubMenuContentResize","childRef","useRef","popperElementRef","useIsomorphicLayoutEffect","current","requestAnimationFrame","focus","submenuPlacement","useMemo","Placement","LEFT_START","undefined","_usePopover","usePopover","isOpen","placement","observeContentResize","popoverStyles","styles","popoverAttributes","attributes","subMenu","React","Children","only","_a","type","isMenu","createElement","Object","assign","style","popper","visibility","ref","DialogContentContainer","cloneElement","props","isVisible","isSubMenu","useDocumentEventListeners","console","error"],"mappings":"yOAOA,IAAMA,EAAkB,SAAHC,GAQM,MAPzBC,EAASD,EAATC,UACAC,EAAIF,EAAJE,KACAC,EAAgBH,EAAhBG,iBACAC,EAAOJ,EAAPI,QACAC,EAAQL,EAARK,SACAC,EAAeN,EAAfM,gBACAC,EAAgCP,EAAhCO,iCAEMC,EAAWC,EAAuB,MAClCC,EAAmBD,EAAuB,MAEhDE,GAA0B,WACnBR,GAAqBD,IAASM,aAAA,EAAAA,EAAUI,UAG7CC,uBAAsB,WACpBL,EAASI,QAAQE,OACnB,GACF,GAAG,CAACX,EAAkBD,IAEtB,IAAMa,EAAmBC,GACvB,WAAA,MAA2B,SAApBV,EAA6BW,EAAUC,gBAAaC,CAAS,GACpE,CAACb,IAGHc,EAAiEC,EAC/DpB,aAAA,EAAAA,EAAWW,QACXF,aAAA,EAAAA,EAAkBE,QAClB,CACEU,OAAQpB,EACRqB,UAAWR,EACXS,qBAAsBjB,IANVkB,EAAaL,EAArBM,OAAmCC,EAAiBP,EAA7BQ,WAUzBC,EAAqBxB,GAAYyB,EAAMC,SAASC,KAAK3B,GAC3D,OAAoB,QAAf4B,EAAAJ,aAAA,EAAAA,EAASK,YAAM,IAAAD,OAAA,EAAAA,EAAAE,QAMlBL,EAAAM,cAAA,MAAAC,OAAAC,OAAA,CACEC,MAAKF,OAAAC,OAAAD,OAAAC,OAAA,GAAOb,EAAce,QAAQ,CAAAC,WAAYvC,EAAO,UAAY,YAC7DyB,EAAkBa,QACtBE,IAAKhC,IAEJmB,GAAW3B,GACV4B,gBAACa,EAAsB,KACpBb,EAAMc,aAAaf,EAAOQ,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACtBT,aAAA,EAAAA,EAASgB,OAAK,CACjBC,UAAW5C,EACX6C,WAAW,EACX3C,QAAAA,EACAsC,IAAKlC,EACLwC,2BAA4B7C,QAlBpC8C,QAAQC,MAAM,0FAA2FrB,GAClG,KAuBX"}
1
+ {"version":3,"file":"MenuItemSubMenu.js","sources":["../../../../../../../../src/components/Menu/MenuItem/components/MenuItemSubMenu/MenuItemSubMenu.tsx"],"sourcesContent":["import React, { useMemo, useRef } from \"react\";\nimport { DialogContentContainer } from \"@vibe/dialog\";\nimport { usePopover, DialogPlacementEnum as Placement } from \"@vibe/dialog\";\nimport { type MenuChild } from \"../../../Menu/MenuConstants\";\nimport { type MenuItemSubMenuProps } from \"./MenuItemSubMenu.types\";\nimport { useIsomorphicLayoutEffect } from \"@vibe/shared\";\n\nconst MenuItemSubMenu = ({\n anchorRef,\n open,\n autoFocusOnMount,\n onClose,\n children,\n submenuPosition,\n autoAdjustOnSubMenuContentResize\n}: MenuItemSubMenuProps) => {\n const childRef = useRef<HTMLDivElement>(null);\n const popperElementRef = useRef<HTMLDivElement>(null);\n\n useIsomorphicLayoutEffect(() => {\n if (!autoFocusOnMount || !open || !childRef?.current) {\n return;\n }\n requestAnimationFrame(() => {\n childRef.current.focus();\n });\n }, [autoFocusOnMount, open]);\n\n const submenuPlacement = useMemo(\n () => (submenuPosition === \"left\" ? Placement.LEFT_START : undefined),\n [submenuPosition]\n );\n\n const { styles: popoverStyles, attributes: popoverAttributes } = usePopover(\n anchorRef?.current,\n popperElementRef?.current,\n {\n isOpen: open,\n placement: submenuPlacement,\n observeContentResize: autoAdjustOnSubMenuContentResize\n }\n );\n\n const subMenu: MenuChild = children && React.Children.only(children);\n if (!subMenu?.type?.isMenu) {\n console.error(\"MenuItem can accept only Menu element as first level child, this element is not valid: \", subMenu);\n return null;\n }\n\n return (\n <div\n style={{ ...popoverStyles.popper, visibility: open ? \"visible\" : \"hidden\" }}\n {...popoverAttributes.popper}\n ref={popperElementRef}\n >\n {subMenu && open && (\n <DialogContentContainer>\n {React.cloneElement(subMenu, {\n ...subMenu?.props,\n isVisible: open,\n isSubMenu: true,\n onClose,\n ref: childRef,\n useDocumentEventListeners: !autoFocusOnMount\n })}\n </DialogContentContainer>\n )}\n </div>\n );\n};\n\nexport default MenuItemSubMenu;\n"],"names":["MenuItemSubMenu","_ref","anchorRef","open","autoFocusOnMount","onClose","children","submenuPosition","autoAdjustOnSubMenuContentResize","childRef","useRef","popperElementRef","useIsomorphicLayoutEffect","current","requestAnimationFrame","focus","submenuPlacement","useMemo","Placement","LEFT_START","undefined","_usePopover","usePopover","isOpen","placement","observeContentResize","popoverStyles","styles","popoverAttributes","attributes","subMenu","React","Children","only","_a","type","isMenu","createElement","Object","assign","style","popper","visibility","ref","DialogContentContainer","cloneElement","props","isVisible","isSubMenu","useDocumentEventListeners","console","error"],"mappings":"2bAOA,IAAMA,EAAkB,SAAHC,GAQM,MAPzBC,EAASD,EAATC,UACAC,EAAIF,EAAJE,KACAC,EAAgBH,EAAhBG,iBACAC,EAAOJ,EAAPI,QACAC,EAAQL,EAARK,SACAC,EAAeN,EAAfM,gBACAC,EAAgCP,EAAhCO,iCAEMC,EAAWC,EAAuB,MAClCC,EAAmBD,EAAuB,MAEhDE,GAA0B,WACnBR,GAAqBD,IAASM,aAAA,EAAAA,EAAUI,UAG7CC,uBAAsB,WACpBL,EAASI,QAAQE,OACnB,GACF,GAAG,CAACX,EAAkBD,IAEtB,IAAMa,EAAmBC,GACvB,WAAA,MAA2B,SAApBV,EAA6BW,EAAUC,gBAAaC,CAAS,GACpE,CAACb,IAGHc,EAAiEC,EAC/DpB,aAAA,EAAAA,EAAWW,QACXF,aAAA,EAAAA,EAAkBE,QAClB,CACEU,OAAQpB,EACRqB,UAAWR,EACXS,qBAAsBjB,IANVkB,EAAaL,EAArBM,OAAmCC,EAAiBP,EAA7BQ,WAUzBC,EAAqBxB,GAAYyB,EAAMC,SAASC,KAAK3B,GAC3D,OAAoB,QAAf4B,EAAAJ,aAAA,EAAAA,EAASK,YAAM,IAAAD,OAAA,EAAAA,EAAAE,QAMlBL,EAAAM,cAAA,MAAAC,OAAAC,OAAA,CACEC,MAAKF,OAAAC,OAAAD,OAAAC,OAAA,GAAOb,EAAce,QAAQ,CAAAC,WAAYvC,EAAO,UAAY,YAC7DyB,EAAkBa,QACtBE,IAAKhC,IAEJmB,GAAW3B,GACV4B,gBAACa,EAAsB,KACpBb,EAAMc,aAAaf,EAAOQ,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACtBT,aAAA,EAAAA,EAASgB,OAAK,CACjBC,UAAW5C,EACX6C,WAAW,EACX3C,QAAAA,EACAsC,IAAKlC,EACLwC,2BAA4B7C,QAlBpC8C,QAAQC,MAAM,0FAA2FrB,GAClG,KAuBX"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e}from"../../../../../../_virtual/_rollupPluginBabelHelpers.js";import i,{forwardRef as t}from"react";import r from"classnames";import o from"../../../../Divider/Divider.js";import{Icon as s}from"@vibe/icon/mockedClassNames";import a from"../../../../Flex/Flex.js";import n from"../../../../IconButton/IconButton.js";import{DropdownChevronRight as l}from"@vibe/icons/mockedClassNames";import m from"./MenuItemSubMenuIcon.module.scss.js";var c=t((function(t,c){return i.createElement(a,{justify:"center",className:m.subMenuIconWrapper},!0===t.isSplit?i.createElement(i.Fragment,null,i.createElement(o,{direction:"vertical",className:m.divider}),i.createElement(n,{icon:l,className:m.splitMenuItemIconButton,kind:"tertiary",size:null,iconClassName:r(m.splitSubMenuIcon,e({},m.disabled,t.disabled)),tabIndex:-1,ref:c,active:t.active,disabled:t.disabled})):i.createElement(s,{icon:l,iconLabel:t.label,className:r(m.subMenuIcon,e({},m.disabled,t.disabled)),ignoreFocusStyle:!0,iconSize:18}))}));export{c as default};
1
+ import{defineProperty as e}from"../../../../../../_virtual/_rollupPluginBabelHelpers.js";import t,{forwardRef as i}from"react";import o from"classnames";import r from"../../../../Divider/Divider.js";import n from"../../../../Flex/Flex.js";import s from"../../../../IconButton/IconButton.js";import a from"./MenuItemSubMenuIcon.module.scss.js";import l from"../../../../../../icons/dist/react/DropdownChevronRight.js";import c from"../../../../../../components/icon/dist/Icon/Icon.js";var m=i((function(i,m){return t.createElement(n,{justify:"center",className:a.subMenuIconWrapper},!0===i.isSplit?t.createElement(t.Fragment,null,t.createElement(r,{direction:"vertical",className:a.divider}),t.createElement(s,{icon:l,className:a.splitMenuItemIconButton,kind:"tertiary",size:null,iconClassName:o(a.splitSubMenuIcon,e({},a.disabled,i.disabled)),tabIndex:-1,ref:m,active:i.active,disabled:i.disabled})):t.createElement(c,{icon:l,iconLabel:i.label,className:o(a.subMenuIcon,e({},a.disabled,i.disabled)),ignoreFocusStyle:!0,iconSize:18}))}));export{m as default};
2
2
  //# sourceMappingURL=MenuItemSubMenuIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemSubMenuIcon.js","sources":["../../../../../../../../src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport Divider from \"../../../../Divider/Divider\";\nimport { Icon } from \"@vibe/icon\";\nimport Flex from \"../../../../Flex/Flex\";\nimport IconButton from \"../../../../IconButton/IconButton\";\nimport { DropdownChevronRight } from \"@vibe/icons\";\nimport styles from \"./MenuItemSubMenuIcon.module.scss\";\nimport { type MenuItemSubMenuIconProps } from \"./MenuItemSubMenuIcon.types\";\n\nconst MenuItemSubMenuIcon = forwardRef((props: MenuItemSubMenuIconProps, ref: React.ForwardedRef<HTMLDivElement>) => (\n <Flex justify=\"center\" className={styles.subMenuIconWrapper}>\n {props.isSplit === true ? (\n <>\n <Divider direction=\"vertical\" className={styles.divider} />\n <IconButton\n icon={DropdownChevronRight}\n className={styles.splitMenuItemIconButton}\n kind=\"tertiary\"\n size={null} // Customizing size via className\n iconClassName={cx(styles.splitSubMenuIcon, { [styles.disabled]: props.disabled })}\n tabIndex={-1}\n ref={ref}\n active={props.active}\n disabled={props.disabled}\n />\n </>\n ) : (\n <Icon\n icon={DropdownChevronRight}\n iconLabel={props.label}\n className={cx(styles.subMenuIcon, { [styles.disabled]: props.disabled })}\n ignoreFocusStyle\n iconSize={18}\n />\n )}\n </Flex>\n));\n\nexport default MenuItemSubMenuIcon;\n"],"names":["MenuItemSubMenuIcon","forwardRef","props","ref","React","createElement","Flex","justify","className","styles","subMenuIconWrapper","isSplit","Fragment","Divider","direction","divider","IconButton","icon","DropdownChevronRight","splitMenuItemIconButton","kind","size","iconClassName","cx","splitSubMenuIcon","_defineProperty","disabled","tabIndex","active","Icon","iconLabel","label","subMenuIcon","ignoreFocusStyle","iconSize"],"mappings":"8cAUA,IAAMA,EAAsBC,GAAW,SAACC,EAAiCC,GAAuC,OAC9GC,EAAAC,cAACC,EAAK,CAAAC,QAAQ,SAASC,UAAWC,EAAOC,qBACpB,IAAlBR,EAAMS,QACLP,EAAAC,cAAAD,EAAAQ,SAAA,KACER,EAACC,cAAAQ,EAAQ,CAAAC,UAAU,WAAWN,UAAWC,EAAOM,UAChDX,EAACC,cAAAW,EACC,CAAAC,KAAMC,EACNV,UAAWC,EAAOU,wBAClBC,KAAK,WACLC,KAAM,KACNC,cAAeC,EAAGd,EAAOe,iBAAgBC,EAAKhB,GAAAA,EAAOiB,SAAWxB,EAAMwB,WACtEC,UAAW,EACXxB,IAAKA,EACLyB,OAAQ1B,EAAM0B,OACdF,SAAUxB,EAAMwB,YAIpBtB,EAACC,cAAAwB,GACCZ,KAAMC,EACNY,UAAW5B,EAAM6B,MACjBvB,UAAWe,EAAGd,EAAOuB,YAAWP,EAAKhB,GAAAA,EAAOiB,SAAWxB,EAAMwB,WAC7DO,kBAAgB,EAChBC,SAAU,KAGT"}
1
+ {"version":3,"file":"MenuItemSubMenuIcon.js","sources":["../../../../../../../../src/components/Menu/MenuItem/components/MenuItemSubMenuIcon/MenuItemSubMenuIcon.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport Divider from \"../../../../Divider/Divider\";\nimport { Icon } from \"@vibe/icon\";\nimport Flex from \"../../../../Flex/Flex\";\nimport IconButton from \"../../../../IconButton/IconButton\";\nimport { DropdownChevronRight } from \"@vibe/icons\";\nimport styles from \"./MenuItemSubMenuIcon.module.scss\";\nimport { type MenuItemSubMenuIconProps } from \"./MenuItemSubMenuIcon.types\";\n\nconst MenuItemSubMenuIcon = forwardRef((props: MenuItemSubMenuIconProps, ref: React.ForwardedRef<HTMLDivElement>) => (\n <Flex justify=\"center\" className={styles.subMenuIconWrapper}>\n {props.isSplit === true ? (\n <>\n <Divider direction=\"vertical\" className={styles.divider} />\n <IconButton\n icon={DropdownChevronRight}\n className={styles.splitMenuItemIconButton}\n kind=\"tertiary\"\n size={null} // Customizing size via className\n iconClassName={cx(styles.splitSubMenuIcon, { [styles.disabled]: props.disabled })}\n tabIndex={-1}\n ref={ref}\n active={props.active}\n disabled={props.disabled}\n />\n </>\n ) : (\n <Icon\n icon={DropdownChevronRight}\n iconLabel={props.label}\n className={cx(styles.subMenuIcon, { [styles.disabled]: props.disabled })}\n ignoreFocusStyle\n iconSize={18}\n />\n )}\n </Flex>\n));\n\nexport default MenuItemSubMenuIcon;\n"],"names":["MenuItemSubMenuIcon","forwardRef","props","ref","React","createElement","Flex","justify","className","styles","subMenuIconWrapper","isSplit","Fragment","Divider","direction","divider","IconButton","icon","DropdownChevronRight","splitMenuItemIconButton","kind","size","iconClassName","cx","splitSubMenuIcon","_defineProperty","disabled","tabIndex","active","Icon","iconLabel","label","subMenuIcon","ignoreFocusStyle","iconSize"],"mappings":"oeAUA,IAAMA,EAAsBC,GAAW,SAACC,EAAiCC,GAAuC,OAC9GC,EAAAC,cAACC,EAAK,CAAAC,QAAQ,SAASC,UAAWC,EAAOC,qBACpB,IAAlBR,EAAMS,QACLP,EAAAC,cAAAD,EAAAQ,SAAA,KACER,EAACC,cAAAQ,EAAQ,CAAAC,UAAU,WAAWN,UAAWC,EAAOM,UAChDX,EAACC,cAAAW,EACC,CAAAC,KAAMC,EACNV,UAAWC,EAAOU,wBAClBC,KAAK,WACLC,KAAM,KACNC,cAAeC,EAAGd,EAAOe,iBAAgBC,EAAKhB,GAAAA,EAAOiB,SAAWxB,EAAMwB,WACtEC,UAAW,EACXxB,IAAKA,EACLyB,OAAQ1B,EAAM0B,OACdF,SAAUxB,EAAMwB,YAIpBtB,EAACC,cAAAwB,GACCZ,KAAMC,EACNY,UAAW5B,EAAM6B,MACjBvB,UAAWe,EAAGd,EAAOuB,YAAWP,EAAKhB,GAAAA,EAAOiB,SAAWxB,EAAMwB,WAC7DO,kBAAgB,EAChBC,SAAU,KAGT"}
@@ -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{Button as i}from"@vibe/button/mockedClassNames";import r from"../../Tooltip/Tooltip.js";import l from"../../../hooks/useMergeRef.js";import m from"../MenuItem/hooks/useMenuItemMouseEvents.js";import a from"../MenuItem/hooks/useMenuItemKeyboardEvents.js";import{withStaticPropsWithoutForwardRef as u}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(u){var p=u.className,I=u.kind,v=void 0===I?"primary":I,f=u.leftIcon,M=void 0===f?null:f,b=u.rightIcon,h=void 0===b?null:b,x=u.disabled,k=void 0!==x&&x,j=u.disableReason,C=u.index,E=u.activeItemIndex,S=void 0===E?-1:E,y=u.onClick,T=u.tooltipPosition,O=void 0===T?"right":T,N=u.tooltipShowDelay,B=void 0===N?300:N,g=u.children,A=u.resetOpenSubMenuIndex,w=u.setSubMenuIsOpenByIndex,D=u.setActiveItemIndex,R=u.menuRef,P=u.closeMenu,U=u.useDocumentEventListeners,L=u.id,_=u["data-testid"],z=o(null),K=o(null),q=l(z,K),F=k&&j,G=j,H=S===C,J=m({ref:z,resetOpenSubMenuIndex:A,setSubMenuIsOpenByIndex:w,isActive:H,setActiveItemIndex:D,index:C,hasChildren:!1}),Q=a({onClick:y,disabled:k,isActive:H,index:C,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:O,showDelay:B},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:k,leftIcon:M,rightIcon:h,onClick:Q,kind:v,size:"small",blurOnMouseUp:!1},t.createElement("div",{className:c.content},g))))};Object.assign(I,{isSelectable:!0,isMenuChild:!0});var v=u(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 n,ComponentDefaultTestId as s}from"../../../tests/testIds.js";import i from"../../Tooltip/Tooltip.js";import r from"../../../hooks/useMergeRef.js";import l from"../MenuItem/hooks/useMenuItemMouseEvents.js";import m from"../MenuItem/hooks/useMenuItemKeyboardEvents.js";import{withStaticPropsWithoutForwardRef as u}from"../../../types/withStaticProps.js";import"../../../utils/colors-vars-map.js";import a from"../../Text/Text.js";import d from"./MenuItemButton.module.scss.js";import{TooltipPositions as c}from"../../Tooltip/TooltipConstants.js";import p from"../../../../components/button/dist/Button/Button.js";var I=function(u){var c=u.className,I=u.kind,v=void 0===I?"primary":I,f=u.leftIcon,M=void 0===f?null:f,b=u.rightIcon,h=void 0===b?null:b,x=u.disabled,j=void 0!==x&&x,k=u.disableReason,E=u.index,C=u.activeItemIndex,S=void 0===C?-1:C,y=u.onClick,T=u.tooltipPosition,B=void 0===T?"right":T,O=u.tooltipShowDelay,N=void 0===O?300:O,g=u.children,A=u.resetOpenSubMenuIndex,w=u.setSubMenuIsOpenByIndex,D=u.setActiveItemIndex,R=u.menuRef,P=u.closeMenu,U=u.useDocumentEventListeners,L=u.id,_=u["data-testid"],z=o(null),K=o(null),q=r(z,K),F=j&&k,G=k,H=S===E,J=l({ref:z,resetOpenSubMenuIndex:A,setSubMenuIsOpenByIndex:w,isActive:H,setActiveItemIndex:D,index:E,hasChildren:!1}),Q=m({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(i,{content:F?G:null,position:B,showDelay:N},t.createElement(a,{type:"text2",element:"li","data-testid":_||n(s.MENU_ITEM_BUTTON,L),id:L,className:e(d.itemButton,c),ref:q,role:"menuitem","aria-current":H},t.createElement(p,{className:d.buttonComponent,active:H,disabled:j,leftIcon:M,rightIcon:h,onClick:Q,kind:v,size:"small",blurOnMouseUp:!1},t.createElement("div",{className:d.content},g))))};Object.assign(I,{isSelectable:!0,isMenuChild:!0});var v=u(I,{kinds:p.kinds,tooltipPositions:c});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, type ButtonType } from \"@vibe/button\";\nimport Tooltip from \"../../Tooltip/Tooltip\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport useMenuItemMouseEvents from \"../MenuItem/hooks/useMenuItemMouseEvents\";\nimport useMenuItemKeyboardEvents from \"../MenuItem/hooks/useMenuItemKeyboardEvents\";\nimport { type VibeComponentProps, type ElementContent, withStaticPropsWithoutForwardRef } from \"../../../types\";\nimport { type SubIcon } from \"@vibe/icon\";\nimport Text from \"../../Text/Text\";\nimport styles from \"./MenuItemButton.module.scss\";\nimport { type 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":"wqBAsFA,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
+ {"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, type ButtonType } from \"@vibe/button\";\nimport Tooltip from \"../../Tooltip/Tooltip\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\nimport useMenuItemMouseEvents from \"../MenuItem/hooks/useMenuItemMouseEvents\";\nimport useMenuItemKeyboardEvents from \"../MenuItem/hooks/useMenuItemKeyboardEvents\";\nimport { type VibeComponentProps, type ElementContent, withStaticPropsWithoutForwardRef } from \"../../../types\";\nimport { type SubIcon } from \"@vibe/icon\";\nimport Text from \"../../Text/Text\";\nimport styles from \"./MenuItemButton.module.scss\";\nimport { type 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":"orBAsFA,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{slicedToArray as e,defineProperty as o}from"../../../_virtual/_rollupPluginBabelHelpers.js";import i,{forwardRef as t,useRef as r,useState as n,useCallback as s,useMemo as a}from"react";import l from"classnames";import{camelCase as d}from"es-toolkit";import{isForwardRef as c}from"react-is";import{Dialog as m,DialogSizeEnum as g,DialogPositionEnum as u,DialogTriggerEventEnum as p,DialogContentContainer as f}from"@vibe/dialog/mockedClassNames";import h from"../Tooltip/Tooltip.js";import T from"../../hooks/ssr/useIsomorphicLayoutEffect.js";import v from"../../hooks/useMergeRef.js";import{withStaticProps as C}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{MenuButtonSize as E,MenuButtonComponentPosition as S}from"./MenuButtonConstants.js";import{NOOP as w}from"../../utils/function-utils.js";import{Menu as b}from"@vibe/icons/mockedClassNames";import{getStyle as O}from"../../helpers/typesciptCssModulesHelper.js";import{getTestId as y,ComponentDefaultTestId as N}from"../../tests/testIds.js";import j from"./MenuButton.module.scss.js";import{ComponentVibeId as M}from"../../tests/constants.js";var P={main:8,secondary:0},_=[m.hideShowTriggers.ESCAPE_KEY,m.hideShowTriggers.TAB_KEY],A=C(t((function(t,g){var u=t.id,p=t.className,C=t.openDialogComponentClassName,E=t.children,S=t.component,A=void 0===S?b:S,I=t.componentPosition,x=void 0===I?"start":I,k=t.size,z=void 0===k?"small":k,B=t.open,D=void 0!==B&&B,H=t.onClick,K=void 0===H?w:H,R=t.zIndex,L=void 0===R?null:R,U=t.ariaLabel,Y=void 0===U?"Menu":U,W=t.closeMenuOnItemClick,F=t.dialogOffset,V=void 0===F?P:F,q=t.dialogPosition,G=void 0===q?m.positions.BOTTOM_START:q,J=t.dialogClassName,Q=t.dialogPaddingSize,X=void 0===Q?f.sizes.SMALL:Q,Z=t.dialogShowTriggerIgnoreClass,$=t.dialogHideTriggerIgnoreClass,ee=t.onMenuHide,oe=void 0===ee?w:ee,ie=t.onMenuShow,te=void 0===ie?w:ie,re=t.disabled,ne=void 0!==re&&re,se=t.text,ae=t.tooltipContent,le=t.tooltipProps,de=t.tooltipTriggers,ce=void 0===de?["mouseleave"]:de,me=t.tooltipPosition,ge=void 0===me?"right":me,ue=t.startingEdge,pe=void 0===ue?"bottom":ue,fe=t.removeTabCloseTrigger,he=void 0!==fe&&fe,Te=t.tooltipReferenceClassName,ve=t.hideWhenReferenceHidden,Ce=void 0===ve||ve,Ee=t.dialogContainerSelector,Se=t.active,we=t.triggerElement,be=void 0===we?"button":we,Oe=t.showTooltipOnlyOnTriggerElement,ye=t["data-testid"],Ne=t.closeDialogOnContentClick,je=void 0!==Ne&&Ne,Me=t.ariaControls,Pe=r(null),_e=v(g,Pe),Ae=n(D),Ie=e(Ae,2),xe=Ie[0],ke=Ie[1],ze=null!=Se?Se:xe,Be=s((function(e){oe(),ke(!1);var o=Pe.current;o&&e&&window.requestAnimationFrame((function(){o.focus()}))}),[oe]),De=s((function(e){var o=_.includes(e.key);(o||W)&&e.propagate&&Be(o)}),[W,Be]),He=s((function(e,o){Be(xe&&_.includes(o))}),[Be,xe]),Ke=s((function(){ke(!0),te()}),[ke,te]),Re=a((function(){var e=new Set([m.hideShowTriggers.CLICK_OUTSIDE,m.hideShowTriggers.TAB_KEY,m.hideShowTriggers.ESCAPE_KEY]);return je&&(e.add(m.hideShowTriggers.CONTENT_CLICK),e.add(m.hideShowTriggers.ENTER)),he&&e.delete(m.hideShowTriggers.TAB_KEY),[i.Children.toArray(E).map((function(o){if(!i.isValidElement(o))return null;var t={};return o.type&&o.type.supportFocusOnMount&&(t.focusOnMount=!0,e.delete(m.hideShowTriggers.ESCAPE_KEY)),o.type&&o.type.isMenu&&(t.onClose=De),i.cloneElement(o,t)})),Array.from(e)]}),[E,De,je,he]),Le=e(Re,2),Ue=Le[0],Ye=Le[1],We=a((function(){return 0===Ue.length?null:i.createElement(f,{size:X,type:f.types.POPOVER,role:null},Ue)}),[Ue,X]),Fe=a((function(){return Object.assign(Object.assign({},P),V)}),[V]),Ve=A,qe=a((function(){switch(z){case"xxs":case"xs":return 16;case"small":case"medium":case"large":return 20;default:return 24}}),[z]),Ge=Ve?i.createElement(Ve,{size:""+qe,role:"img","aria-hidden":"true"}):null;T((function(){ke(D)}),[D,ke]);var Je="button"===be?{ref:_e}:{active:ze,disabled:ne,ref:c(be)?_e:void 0},Qe=i.createElement(be,Object.assign({id:u,"data-testid":ye||y(N.MENU_BUTTON,u),"data-vibe":M.MENU_BUTTON,type:"button",className:l(j.wrapper,p,O(j,d("size-".concat(z))),o(o(o(o({},j.active,ze),O(j,C),xe&&C),j.disabled,ne),j.text,se)),"aria-haspopup":"true","aria-expanded":xe,"aria-controls":Me,"aria-label":!se&&Y,onMouseUp:function(e){ne?e.currentTarget.blur():K(e)},"aria-disabled":ne},Je),"start"===x&&Ge,se&&i.createElement("span",{className:j.innerText},se),"end"===x&&Ge),Xe=function(e){return i.createElement(m,{wrapperClassName:J,position:G,containerSelector:Ee,startingEdge:pe,animationType:"expand",content:We,moveBy:Fe,showTrigger:ne?[]:["click","enter"],hideTrigger:Ye,showTriggerIgnoreClass:Z,hideTriggerIgnoreClass:$,useDerivedStateFromProps:!0,onDialogDidShow:Ke,onDialogDidHide:He,zIndex:L,isOpen:xe,hideWhenReferenceHidden:Ce},e)},Ze=function(e){return i.createElement(h,Object.assign({content:ae,position:ge,showTrigger:"mouseenter",hideTrigger:ce,referenceWrapperClassName:Te,hideWhenReferenceHidden:Ce},le),e)};return Oe?Xe(Ze(Qe)):Ze(Xe(Qe))})),{sizes:E,paddingSizes:g,dialogPositions:u,hideTriggers:p,componentPositions:S});export{A as default};
1
+ import{slicedToArray as e,defineProperty as o}from"../../../_virtual/_rollupPluginBabelHelpers.js";import i,{forwardRef as t,useRef as r,useState as n,useCallback as s,useMemo as a}from"react";import l from"classnames";import{camelCase as d}from"es-toolkit";import{isForwardRef as g}from"react-is";import c from"../Tooltip/Tooltip.js";import m from"../../hooks/ssr/useIsomorphicLayoutEffect.js";import p from"../../hooks/useMergeRef.js";import{withStaticProps as u}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{MenuButtonSize as f,MenuButtonComponentPosition as h}from"./MenuButtonConstants.js";import{NOOP as T}from"../../utils/function-utils.js";import{getStyle as v}from"../../helpers/typesciptCssModulesHelper.js";import{getTestId as C,ComponentDefaultTestId as E}from"../../tests/testIds.js";import S from"./MenuButton.module.scss.js";import{ComponentVibeId as w}from"../../tests/constants.js";import j from"../../../components/dialog/dist/Dialog/Dialog.js";import{DialogSize as O,DialogPosition as y,HideShowEvent as b}from"../../../components/dialog/dist/Dialog/DialogConstants.js";import M from"../../../components/dialog/dist/DialogContentContainer/DialogContentContainer.js";import P from"../../../icons/dist/react/Menu.js";var D={main:8,secondary:0},N=[j.hideShowTriggers.ESCAPE_KEY,j.hideShowTriggers.TAB_KEY],_=u(t((function(t,u){var f=t.id,h=t.className,O=t.openDialogComponentClassName,y=t.children,b=t.component,_=void 0===b?P:b,A=t.componentPosition,I=void 0===A?"start":A,x=t.size,z=void 0===x?"small":x,B=t.open,H=void 0!==B&&B,k=t.onClick,K=void 0===k?T:k,R=t.zIndex,L=void 0===R?null:R,U=t.ariaLabel,Y=void 0===U?"Menu":U,W=t.closeMenuOnItemClick,F=t.dialogOffset,V=void 0===F?D:F,q=t.dialogPosition,G=void 0===q?j.positions.BOTTOM_START:q,J=t.dialogClassName,Q=t.dialogPaddingSize,X=void 0===Q?M.sizes.SMALL:Q,Z=t.dialogShowTriggerIgnoreClass,$=t.dialogHideTriggerIgnoreClass,ee=t.onMenuHide,oe=void 0===ee?T:ee,ie=t.onMenuShow,te=void 0===ie?T:ie,re=t.disabled,ne=void 0!==re&&re,se=t.text,ae=t.tooltipContent,le=t.tooltipProps,de=t.tooltipTriggers,ge=void 0===de?["mouseleave"]:de,ce=t.tooltipPosition,me=void 0===ce?"right":ce,pe=t.startingEdge,ue=void 0===pe?"bottom":pe,fe=t.removeTabCloseTrigger,he=void 0!==fe&&fe,Te=t.tooltipReferenceClassName,ve=t.hideWhenReferenceHidden,Ce=void 0===ve||ve,Ee=t.dialogContainerSelector,Se=t.active,we=t.triggerElement,je=void 0===we?"button":we,Oe=t.showTooltipOnlyOnTriggerElement,ye=t["data-testid"],be=t.closeDialogOnContentClick,Me=void 0!==be&&be,Pe=t.ariaControls,De=r(null),Ne=p(u,De),_e=n(H),Ae=e(_e,2),Ie=Ae[0],xe=Ae[1],ze=null!=Se?Se:Ie,Be=s((function(e){oe(),xe(!1);var o=De.current;o&&e&&window.requestAnimationFrame((function(){o.focus()}))}),[oe]),He=s((function(e){var o=N.includes(e.key);(o||W)&&e.propagate&&Be(o)}),[W,Be]),ke=s((function(e,o){Be(Ie&&N.includes(o))}),[Be,Ie]),Ke=s((function(){xe(!0),te()}),[xe,te]),Re=a((function(){var e=new Set([j.hideShowTriggers.CLICK_OUTSIDE,j.hideShowTriggers.TAB_KEY,j.hideShowTriggers.ESCAPE_KEY]);return Me&&(e.add(j.hideShowTriggers.CONTENT_CLICK),e.add(j.hideShowTriggers.ENTER)),he&&e.delete(j.hideShowTriggers.TAB_KEY),[i.Children.toArray(y).map((function(o){if(!i.isValidElement(o))return null;var t={};return o.type&&o.type.supportFocusOnMount&&(t.focusOnMount=!0,e.delete(j.hideShowTriggers.ESCAPE_KEY)),o.type&&o.type.isMenu&&(t.onClose=He),i.cloneElement(o,t)})),Array.from(e)]}),[y,He,Me,he]),Le=e(Re,2),Ue=Le[0],Ye=Le[1],We=a((function(){return 0===Ue.length?null:i.createElement(M,{size:X,type:M.types.POPOVER,role:null},Ue)}),[Ue,X]),Fe=a((function(){return Object.assign(Object.assign({},D),V)}),[V]),Ve=_,qe=a((function(){switch(z){case"xxs":case"xs":return 16;case"small":case"medium":case"large":return 20;default:return 24}}),[z]),Ge=Ve?i.createElement(Ve,{size:""+qe,role:"img","aria-hidden":"true"}):null;m((function(){xe(H)}),[H,xe]);var Je="button"===je?{ref:Ne}:{active:ze,disabled:ne,ref:g(je)?Ne:void 0},Qe=i.createElement(je,Object.assign({id:f,"data-testid":ye||C(E.MENU_BUTTON,f),"data-vibe":w.MENU_BUTTON,type:"button",className:l(S.wrapper,h,v(S,d("size-".concat(z))),o(o(o(o({},S.active,ze),v(S,O),Ie&&O),S.disabled,ne),S.text,se)),"aria-haspopup":"true","aria-expanded":Ie,"aria-controls":Pe,"aria-label":!se&&Y,onMouseUp:function(e){ne?e.currentTarget.blur():K(e)},"aria-disabled":ne},Je),"start"===I&&Ge,se&&i.createElement("span",{className:S.innerText},se),"end"===I&&Ge),Xe=function(e){return i.createElement(j,{wrapperClassName:J,position:G,containerSelector:Ee,startingEdge:ue,animationType:"expand",content:We,moveBy:Fe,showTrigger:ne?[]:["click","enter"],hideTrigger:Ye,showTriggerIgnoreClass:Z,hideTriggerIgnoreClass:$,useDerivedStateFromProps:!0,onDialogDidShow:Ke,onDialogDidHide:ke,zIndex:L,isOpen:Ie,hideWhenReferenceHidden:Ce},e)},Ze=function(e){return i.createElement(c,Object.assign({content:ae,position:me,showTrigger:"mouseenter",hideTrigger:ge,referenceWrapperClassName:Te,hideWhenReferenceHidden:Ce},le),e)};return Oe?Xe(Ze(Qe)):Ze(Xe(Qe))})),{sizes:f,paddingSizes:O,dialogPositions:y,hideTriggers:b,componentPositions:h});export{_ as default};
2
2
  //# sourceMappingURL=MenuButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuButton.js","sources":["../../../../../src/components/MenuButton/MenuButton.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { camelCase } from \"es-toolkit\";\nimport { isForwardRef } from \"react-is\";\nimport { Dialog, type DialogEvent, DialogContentContainer } from \"@vibe/dialog\";\nimport { DialogPositionEnum, DialogTriggerEventEnum, DialogSizeEnum } from \"@vibe/dialog\";\nimport { type DialogOffset, type DialogPosition, type DialogSize, type DialogTriggerEvent } from \"@vibe/dialog\";\nimport Tooltip, { type TooltipProps } from \"../Tooltip/Tooltip\";\nimport useIsomorphicLayoutEffect from \"../../hooks/ssr/useIsomorphicLayoutEffect\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { type ElementContent, type VibeComponentProps, withStaticProps } from \"../../types\";\nimport {\n MenuButtonComponentPosition as MenuButtonComponentPositionEnum,\n MenuButtonSize as MenuButtonSizeEnum\n} from \"./MenuButtonConstants\";\nimport { type MenuButtonComponentPosition, type MenuButtonSize } from \"./MenuButton.types\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { Menu } from \"@vibe/icons\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport { type MenuChild } from \"../Menu/Menu/MenuConstants\";\nimport styles from \"./MenuButton.module.scss\";\nimport { type TooltipPositions } from \"../Tooltip\";\nimport { ComponentVibeId } from \"../../tests/constants\";\n\nconst MOVE_BY = { main: 8, secondary: 0 };\nconst CLOSE_KEYS: DialogTriggerEventEnum[] = [Dialog.hideShowTriggers.ESCAPE_KEY, Dialog.hideShowTriggers.TAB_KEY];\n\nexport interface MenuButtonProps extends VibeComponentProps {\n /**\n * If true, the button is in an active state.\n */\n active?: boolean;\n /**\n * Class name applied to the button when the dialog is open.\n */\n openDialogComponentClassName?: string;\n /**\n * The component used as the button icon.\n */\n component?: (() => JSX.Element) | React.ElementType;\n /**\n * The size of the button.\n */\n size?: MenuButtonSize;\n /**\n * If true, the menu is open.\n */\n open?: boolean;\n /**\n * Callback fired when the button is clicked.\n */\n onClick?: (event: React.MouseEvent) => void;\n /**\n * The z-index of the menu.\n */\n zIndex?: number;\n /**\n * The label of the button for accessibility.\n */\n ariaLabel?: string;\n /**\n * Class name applied to the menu dialog wrapper.\n */\n dialogClassName?: string;\n /**\n * The offset of the menu relative to the button.\n */\n dialogOffset?: DialogOffset;\n /**\n * The padding size inside the menu dialog.\n */\n dialogPaddingSize?: DialogSize;\n /**\n * The position of the menu dialog relative to the button.\n */\n dialogPosition?: DialogPosition;\n /**\n * Classes that prevent showing the dialog when present.\n */\n dialogShowTriggerIgnoreClass?: string | Array<string>;\n /**\n * Classes that prevent hiding the dialog when present.\n */\n dialogHideTriggerIgnoreClass?: string | Array<string>;\n /**\n * The container selector in which to append the dialog.\n */\n dialogContainerSelector?: string;\n /**\n * The starting edge alignment of the menu.\n */\n startingEdge?: string;\n /**\n * Callback fired when the menu is shown.\n */\n onMenuShow?: () => void;\n /**\n * Callback fired when the menu is hidden.\n */\n onMenuHide?: () => void;\n /**\n * The text displayed inside the button.\n */\n text?: string;\n /**\n * If true, the button is disabled.\n */\n disabled?: boolean;\n /**\n * The tooltip content displayed when hovering over the button.\n */\n tooltipContent?: string;\n /**\n * If true, removes the tab key from the hide trigger.\n */\n removeTabCloseTrigger?: boolean;\n /**\n * The triggers that cause the tooltip to show or hide.\n */\n tooltipTriggers?: DialogTriggerEvent | DialogTriggerEvent[];\n /**\n * The position of the tooltip.\n */\n tooltipPosition?: TooltipPositions;\n /**\n * Class name applied to the tooltip reference wrapper.\n */\n tooltipReferenceClassName?: string;\n /**\n * Additional props for customizing the tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n /**\n * If true, hides the menu and tooltip when the button is not visible.\n */\n hideWhenReferenceHidden?: boolean;\n /**\n * The content inside the menu button.\n */\n children?: ElementContent;\n /**\n * The position of the component relative to the text.\n */\n componentPosition?: MenuButtonComponentPosition;\n /**\n * The element used as the trigger for the menu.\n */\n triggerElement?: React.ElementType;\n /**\n * If true, closes the menu when a menu item is clicked.\n */\n closeMenuOnItemClick?: boolean;\n /**\n * If true, the tooltip appears only when hovering over the trigger element, not the menu dialog.\n */\n showTooltipOnlyOnTriggerElement?: boolean;\n /**\n * If true, closes the menu when clicking inside the dialog.\n */\n closeDialogOnContentClick?: boolean;\n /**\n * The ARIA control of the menu button for accessibility.\n */\n ariaControls?: string;\n}\n\nconst MenuButton = forwardRef(\n (\n {\n id,\n className,\n openDialogComponentClassName,\n children,\n component = Menu,\n componentPosition = \"start\",\n size = \"small\",\n open = false,\n onClick = NOOP,\n zIndex = null,\n ariaLabel = \"Menu\",\n closeMenuOnItemClick,\n dialogOffset = MOVE_BY,\n dialogPosition = Dialog.positions.BOTTOM_START,\n dialogClassName,\n dialogPaddingSize = DialogContentContainer.sizes.SMALL,\n dialogShowTriggerIgnoreClass,\n dialogHideTriggerIgnoreClass,\n onMenuHide = NOOP,\n onMenuShow = NOOP,\n disabled = false,\n text,\n tooltipContent,\n tooltipProps,\n tooltipTriggers = [\"mouseleave\"],\n tooltipPosition = \"right\",\n startingEdge = \"bottom\",\n removeTabCloseTrigger = false,\n tooltipReferenceClassName,\n hideWhenReferenceHidden = true,\n dialogContainerSelector,\n active,\n triggerElement: TriggerElement = \"button\",\n showTooltipOnlyOnTriggerElement,\n \"data-testid\": dataTestId,\n closeDialogOnContentClick = false,\n ariaControls\n }: MenuButtonProps,\n ref: React.ForwardedRef<HTMLElement>\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n const [isOpen, setIsOpen] = useState(open);\n const isActive = active ?? isOpen;\n\n const handleMenuClose = useCallback(\n (focusOnMenuButtonAfterClose: boolean) => {\n onMenuHide();\n setIsOpen(false);\n const button = componentRef.current;\n if (!button || !focusOnMenuButtonAfterClose) {\n return;\n }\n window.requestAnimationFrame(() => {\n button.focus();\n });\n },\n [onMenuHide]\n );\n\n const onMenuDidClose = useCallback(\n (event: React.KeyboardEvent) => {\n // TODO: check the functionality of the isEscapeKey since the event is not an actual KeyboardEVent but an object with propagate property only\n const isCloseKey = CLOSE_KEYS.includes(event.key as DialogTriggerEventEnum);\n if (isCloseKey || closeMenuOnItemClick) {\n // @ts-ignore\n if (event.propagate) {\n handleMenuClose(isCloseKey);\n }\n }\n },\n [closeMenuOnItemClick, handleMenuClose]\n );\n\n const onDialogDidHide = useCallback(\n (event: DialogEvent, hideEvent: string) => {\n handleMenuClose(isOpen && CLOSE_KEYS.includes(hideEvent as DialogTriggerEventEnum));\n },\n [handleMenuClose, isOpen]\n );\n\n const onDialogDidShow = useCallback(() => {\n setIsOpen(true);\n onMenuShow();\n }, [setIsOpen, onMenuShow]);\n\n const [clonedChildren, hideTrigger] = useMemo(() => {\n const triggers = new Set([\n Dialog.hideShowTriggers.CLICK_OUTSIDE,\n Dialog.hideShowTriggers.TAB_KEY,\n Dialog.hideShowTriggers.ESCAPE_KEY\n ]);\n\n if (closeDialogOnContentClick) {\n triggers.add(Dialog.hideShowTriggers.CONTENT_CLICK);\n triggers.add(Dialog.hideShowTriggers.ENTER);\n }\n\n if (removeTabCloseTrigger) {\n triggers.delete(Dialog.hideShowTriggers.TAB_KEY);\n }\n const childrenArr = React.Children.toArray(children) as MenuChild[];\n const cloned = childrenArr.map(child => {\n if (!React.isValidElement(child)) return null;\n\n const newProps: { focusOnMount?: boolean; onClose?: (event: React.KeyboardEvent) => void } = {};\n if (child.type && child.type.supportFocusOnMount) {\n newProps.focusOnMount = true;\n triggers.delete(Dialog.hideShowTriggers.ESCAPE_KEY);\n }\n\n if (child.type && child.type.isMenu) {\n newProps.onClose = onMenuDidClose;\n }\n\n return React.cloneElement(child, newProps);\n });\n return [cloned, Array.from(triggers)];\n }, [children, onMenuDidClose, closeDialogOnContentClick, removeTabCloseTrigger]);\n\n const content = useMemo(() => {\n if (clonedChildren.length === 0) return null;\n return (\n <DialogContentContainer size={dialogPaddingSize} type={DialogContentContainer.types.POPOVER} role={null}>\n {clonedChildren}\n </DialogContentContainer>\n );\n }, [clonedChildren, dialogPaddingSize]);\n\n const computedDialogOffset = useMemo(\n () => ({\n ...MOVE_BY,\n ...dialogOffset\n }),\n [dialogOffset]\n );\n\n const onMouseUp = (event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.currentTarget.blur();\n return;\n }\n onClick(event);\n };\n\n const Icon = component;\n const iconSize = useMemo(() => {\n switch (size) {\n case \"xxs\":\n case \"xs\":\n return 16;\n case \"small\":\n case \"medium\":\n case \"large\":\n return 20;\n default:\n return 24;\n }\n }, [size]);\n const icon = Icon ? <Icon size={iconSize.toString()} role=\"img\" aria-hidden=\"true\" /> : null;\n\n useIsomorphicLayoutEffect(() => {\n setIsOpen(open);\n }, [open, setIsOpen]);\n\n // Trigger element props, which are only relevant for \"button\" element, but might be needed for other elements e.g. Button\n const triggerElementProps =\n TriggerElement === \"button\"\n ? {\n ref: mergedRef\n }\n : {\n active: isActive,\n disabled: disabled,\n ref: isForwardRef(TriggerElement) ? mergedRef : undefined\n };\n\n const triggerElementNode = (\n <TriggerElement\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_BUTTON, id)}\n data-vibe={ComponentVibeId.MENU_BUTTON}\n type=\"button\"\n className={cx(styles.wrapper, className, getStyle(styles, camelCase(`size-${size}`)), {\n [styles.active]: isActive,\n [getStyle(styles, openDialogComponentClassName)]: isOpen && openDialogComponentClassName,\n [styles.disabled]: disabled,\n [styles.text]: text\n })}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n aria-controls={ariaControls}\n aria-label={!text && ariaLabel}\n onMouseUp={onMouseUp}\n aria-disabled={disabled}\n {...triggerElementProps}\n >\n {componentPosition === \"start\" && icon}\n {text && <span className={styles.innerText}>{text}</span>}\n {componentPosition === \"end\" && icon}\n </TriggerElement>\n );\n\n const dialogNode = (dialogChildren: React.ReactElement) => (\n <Dialog\n wrapperClassName={dialogClassName}\n position={dialogPosition}\n containerSelector={dialogContainerSelector}\n startingEdge={startingEdge}\n animationType=\"expand\"\n content={content}\n moveBy={computedDialogOffset}\n showTrigger={disabled ? [] : [\"click\", \"enter\"]}\n hideTrigger={hideTrigger}\n showTriggerIgnoreClass={dialogShowTriggerIgnoreClass}\n hideTriggerIgnoreClass={dialogHideTriggerIgnoreClass}\n useDerivedStateFromProps={true}\n onDialogDidShow={onDialogDidShow}\n onDialogDidHide={onDialogDidHide}\n zIndex={zIndex}\n isOpen={isOpen}\n hideWhenReferenceHidden={hideWhenReferenceHidden}\n >\n {dialogChildren}\n </Dialog>\n );\n\n const tooltipNode = (tooltipChildren: React.ReactElement) => (\n <Tooltip\n content={tooltipContent}\n position={tooltipPosition}\n showTrigger=\"mouseenter\"\n hideTrigger={tooltipTriggers}\n referenceWrapperClassName={tooltipReferenceClassName}\n hideWhenReferenceHidden={hideWhenReferenceHidden}\n {...tooltipProps}\n >\n {tooltipChildren}\n </Tooltip>\n );\n\n if (showTooltipOnlyOnTriggerElement) {\n return dialogNode(tooltipNode(triggerElementNode));\n }\n return tooltipNode(dialogNode(triggerElementNode));\n }\n);\n\ninterface MenuButtonStaticProps {\n sizes: typeof MenuButtonSizeEnum;\n paddingSizes: typeof DialogContentContainer.sizes;\n dialogPositions: typeof DialogPositionEnum;\n hideTriggers: typeof Dialog.hideShowTriggers;\n componentPositions: typeof MenuButtonComponentPositionEnum;\n}\n\nexport default withStaticProps<MenuButtonProps, MenuButtonStaticProps>(MenuButton, {\n sizes: MenuButtonSizeEnum,\n paddingSizes: DialogSizeEnum,\n dialogPositions: DialogPositionEnum,\n hideTriggers: DialogTriggerEventEnum,\n componentPositions: MenuButtonComponentPositionEnum\n});\n"],"names":["MOVE_BY","main","secondary","CLOSE_KEYS","Dialog","hideShowTriggers","ESCAPE_KEY","TAB_KEY","withStaticProps","forwardRef","_ref","ref","id","className","openDialogComponentClassName","children","_ref$component","component","Menu","_ref$componentPositio","componentPosition","_ref$size","size","_ref$open","open","_ref$onClick","onClick","NOOP","_ref$zIndex","zIndex","_ref$ariaLabel","ariaLabel","closeMenuOnItemClick","_ref$dialogOffset","dialogOffset","_ref$dialogPosition","dialogPosition","positions","BOTTOM_START","dialogClassName","_ref$dialogPaddingSiz","dialogPaddingSize","DialogContentContainer","sizes","SMALL","dialogShowTriggerIgnoreClass","dialogHideTriggerIgnoreClass","_ref$onMenuHide","onMenuHide","_ref$onMenuShow","onMenuShow","_ref$disabled","disabled","text","tooltipContent","tooltipProps","_ref$tooltipTriggers","tooltipTriggers","_ref$tooltipPosition","tooltipPosition","_ref$startingEdge","startingEdge","_ref$removeTabCloseTr","removeTabCloseTrigger","tooltipReferenceClassName","_ref$hideWhenReferenc","hideWhenReferenceHidden","dialogContainerSelector","active","_ref$triggerElement","triggerElement","TriggerElement","showTooltipOnlyOnTriggerElement","dataTestId","_ref$closeDialogOnCon","closeDialogOnContentClick","ariaControls","componentRef","useRef","mergedRef","useMergeRef","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","isActive","handleMenuClose","useCallback","focusOnMenuButtonAfterClose","button","current","window","requestAnimationFrame","focus","onMenuDidClose","event","isCloseKey","includes","key","propagate","onDialogDidHide","hideEvent","onDialogDidShow","_useMemo","useMemo","triggers","Set","CLICK_OUTSIDE","add","CONTENT_CLICK","ENTER","delete","React","Children","toArray","map","child","isValidElement","newProps","type","supportFocusOnMount","focusOnMount","isMenu","onClose","cloneElement","Array","from","_useMemo2","clonedChildren","hideTrigger","content","length","types","POPOVER","role","computedDialogOffset","Object","assign","Icon","iconSize","icon","createElement","useIsomorphicLayoutEffect","triggerElementProps","isForwardRef","undefined","triggerElementNode","getTestId","ComponentDefaultTestId","MENU_BUTTON","ComponentVibeId","cx","styles","wrapper","getStyle","camelCase","concat","_defineProperty","onMouseUp","currentTarget","blur","innerText","dialogNode","dialogChildren","wrapperClassName","position","containerSelector","animationType","moveBy","showTrigger","showTriggerIgnoreClass","hideTriggerIgnoreClass","useDerivedStateFromProps","tooltipNode","tooltipChildren","Tooltip","referenceWrapperClassName","MenuButtonSizeEnum","paddingSizes","DialogSizeEnum","dialogPositions","DialogPositionEnum","hideTriggers","DialogTriggerEventEnum","componentPositions","MenuButtonComponentPositionEnum"],"mappings":"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"}
1
+ {"version":3,"file":"MenuButton.js","sources":["../../../../../src/components/MenuButton/MenuButton.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { camelCase } from \"es-toolkit\";\nimport { isForwardRef } from \"react-is\";\nimport { Dialog, type DialogEvent, DialogContentContainer } from \"@vibe/dialog\";\nimport { DialogPositionEnum, DialogTriggerEventEnum, DialogSizeEnum } from \"@vibe/dialog\";\nimport { type DialogOffset, type DialogPosition, type DialogSize, type DialogTriggerEvent } from \"@vibe/dialog\";\nimport Tooltip, { type TooltipProps } from \"../Tooltip/Tooltip\";\nimport useIsomorphicLayoutEffect from \"../../hooks/ssr/useIsomorphicLayoutEffect\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { type ElementContent, type VibeComponentProps, withStaticProps } from \"../../types\";\nimport {\n MenuButtonComponentPosition as MenuButtonComponentPositionEnum,\n MenuButtonSize as MenuButtonSizeEnum\n} from \"./MenuButtonConstants\";\nimport { type MenuButtonComponentPosition, type MenuButtonSize } from \"./MenuButton.types\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { Menu } from \"@vibe/icons\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport { type MenuChild } from \"../Menu/Menu/MenuConstants\";\nimport styles from \"./MenuButton.module.scss\";\nimport { type TooltipPositions } from \"../Tooltip\";\nimport { ComponentVibeId } from \"../../tests/constants\";\n\nconst MOVE_BY = { main: 8, secondary: 0 };\nconst CLOSE_KEYS: DialogTriggerEventEnum[] = [Dialog.hideShowTriggers.ESCAPE_KEY, Dialog.hideShowTriggers.TAB_KEY];\n\nexport interface MenuButtonProps extends VibeComponentProps {\n /**\n * If true, the button is in an active state.\n */\n active?: boolean;\n /**\n * Class name applied to the button when the dialog is open.\n */\n openDialogComponentClassName?: string;\n /**\n * The component used as the button icon.\n */\n component?: (() => JSX.Element) | React.ElementType;\n /**\n * The size of the button.\n */\n size?: MenuButtonSize;\n /**\n * If true, the menu is open.\n */\n open?: boolean;\n /**\n * Callback fired when the button is clicked.\n */\n onClick?: (event: React.MouseEvent) => void;\n /**\n * The z-index of the menu.\n */\n zIndex?: number;\n /**\n * The label of the button for accessibility.\n */\n ariaLabel?: string;\n /**\n * Class name applied to the menu dialog wrapper.\n */\n dialogClassName?: string;\n /**\n * The offset of the menu relative to the button.\n */\n dialogOffset?: DialogOffset;\n /**\n * The padding size inside the menu dialog.\n */\n dialogPaddingSize?: DialogSize;\n /**\n * The position of the menu dialog relative to the button.\n */\n dialogPosition?: DialogPosition;\n /**\n * Classes that prevent showing the dialog when present.\n */\n dialogShowTriggerIgnoreClass?: string | Array<string>;\n /**\n * Classes that prevent hiding the dialog when present.\n */\n dialogHideTriggerIgnoreClass?: string | Array<string>;\n /**\n * The container selector in which to append the dialog.\n */\n dialogContainerSelector?: string;\n /**\n * The starting edge alignment of the menu.\n */\n startingEdge?: string;\n /**\n * Callback fired when the menu is shown.\n */\n onMenuShow?: () => void;\n /**\n * Callback fired when the menu is hidden.\n */\n onMenuHide?: () => void;\n /**\n * The text displayed inside the button.\n */\n text?: string;\n /**\n * If true, the button is disabled.\n */\n disabled?: boolean;\n /**\n * The tooltip content displayed when hovering over the button.\n */\n tooltipContent?: string;\n /**\n * If true, removes the tab key from the hide trigger.\n */\n removeTabCloseTrigger?: boolean;\n /**\n * The triggers that cause the tooltip to show or hide.\n */\n tooltipTriggers?: DialogTriggerEvent | DialogTriggerEvent[];\n /**\n * The position of the tooltip.\n */\n tooltipPosition?: TooltipPositions;\n /**\n * Class name applied to the tooltip reference wrapper.\n */\n tooltipReferenceClassName?: string;\n /**\n * Additional props for customizing the tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n /**\n * If true, hides the menu and tooltip when the button is not visible.\n */\n hideWhenReferenceHidden?: boolean;\n /**\n * The content inside the menu button.\n */\n children?: ElementContent;\n /**\n * The position of the component relative to the text.\n */\n componentPosition?: MenuButtonComponentPosition;\n /**\n * The element used as the trigger for the menu.\n */\n triggerElement?: React.ElementType;\n /**\n * If true, closes the menu when a menu item is clicked.\n */\n closeMenuOnItemClick?: boolean;\n /**\n * If true, the tooltip appears only when hovering over the trigger element, not the menu dialog.\n */\n showTooltipOnlyOnTriggerElement?: boolean;\n /**\n * If true, closes the menu when clicking inside the dialog.\n */\n closeDialogOnContentClick?: boolean;\n /**\n * The ARIA control of the menu button for accessibility.\n */\n ariaControls?: string;\n}\n\nconst MenuButton = forwardRef(\n (\n {\n id,\n className,\n openDialogComponentClassName,\n children,\n component = Menu,\n componentPosition = \"start\",\n size = \"small\",\n open = false,\n onClick = NOOP,\n zIndex = null,\n ariaLabel = \"Menu\",\n closeMenuOnItemClick,\n dialogOffset = MOVE_BY,\n dialogPosition = Dialog.positions.BOTTOM_START,\n dialogClassName,\n dialogPaddingSize = DialogContentContainer.sizes.SMALL,\n dialogShowTriggerIgnoreClass,\n dialogHideTriggerIgnoreClass,\n onMenuHide = NOOP,\n onMenuShow = NOOP,\n disabled = false,\n text,\n tooltipContent,\n tooltipProps,\n tooltipTriggers = [\"mouseleave\"],\n tooltipPosition = \"right\",\n startingEdge = \"bottom\",\n removeTabCloseTrigger = false,\n tooltipReferenceClassName,\n hideWhenReferenceHidden = true,\n dialogContainerSelector,\n active,\n triggerElement: TriggerElement = \"button\",\n showTooltipOnlyOnTriggerElement,\n \"data-testid\": dataTestId,\n closeDialogOnContentClick = false,\n ariaControls\n }: MenuButtonProps,\n ref: React.ForwardedRef<HTMLElement>\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n const [isOpen, setIsOpen] = useState(open);\n const isActive = active ?? isOpen;\n\n const handleMenuClose = useCallback(\n (focusOnMenuButtonAfterClose: boolean) => {\n onMenuHide();\n setIsOpen(false);\n const button = componentRef.current;\n if (!button || !focusOnMenuButtonAfterClose) {\n return;\n }\n window.requestAnimationFrame(() => {\n button.focus();\n });\n },\n [onMenuHide]\n );\n\n const onMenuDidClose = useCallback(\n (event: React.KeyboardEvent) => {\n // TODO: check the functionality of the isEscapeKey since the event is not an actual KeyboardEVent but an object with propagate property only\n const isCloseKey = CLOSE_KEYS.includes(event.key as DialogTriggerEventEnum);\n if (isCloseKey || closeMenuOnItemClick) {\n // @ts-ignore\n if (event.propagate) {\n handleMenuClose(isCloseKey);\n }\n }\n },\n [closeMenuOnItemClick, handleMenuClose]\n );\n\n const onDialogDidHide = useCallback(\n (event: DialogEvent, hideEvent: string) => {\n handleMenuClose(isOpen && CLOSE_KEYS.includes(hideEvent as DialogTriggerEventEnum));\n },\n [handleMenuClose, isOpen]\n );\n\n const onDialogDidShow = useCallback(() => {\n setIsOpen(true);\n onMenuShow();\n }, [setIsOpen, onMenuShow]);\n\n const [clonedChildren, hideTrigger] = useMemo(() => {\n const triggers = new Set([\n Dialog.hideShowTriggers.CLICK_OUTSIDE,\n Dialog.hideShowTriggers.TAB_KEY,\n Dialog.hideShowTriggers.ESCAPE_KEY\n ]);\n\n if (closeDialogOnContentClick) {\n triggers.add(Dialog.hideShowTriggers.CONTENT_CLICK);\n triggers.add(Dialog.hideShowTriggers.ENTER);\n }\n\n if (removeTabCloseTrigger) {\n triggers.delete(Dialog.hideShowTriggers.TAB_KEY);\n }\n const childrenArr = React.Children.toArray(children) as MenuChild[];\n const cloned = childrenArr.map(child => {\n if (!React.isValidElement(child)) return null;\n\n const newProps: { focusOnMount?: boolean; onClose?: (event: React.KeyboardEvent) => void } = {};\n if (child.type && child.type.supportFocusOnMount) {\n newProps.focusOnMount = true;\n triggers.delete(Dialog.hideShowTriggers.ESCAPE_KEY);\n }\n\n if (child.type && child.type.isMenu) {\n newProps.onClose = onMenuDidClose;\n }\n\n return React.cloneElement(child, newProps);\n });\n return [cloned, Array.from(triggers)];\n }, [children, onMenuDidClose, closeDialogOnContentClick, removeTabCloseTrigger]);\n\n const content = useMemo(() => {\n if (clonedChildren.length === 0) return null;\n return (\n <DialogContentContainer size={dialogPaddingSize} type={DialogContentContainer.types.POPOVER} role={null}>\n {clonedChildren}\n </DialogContentContainer>\n );\n }, [clonedChildren, dialogPaddingSize]);\n\n const computedDialogOffset = useMemo(\n () => ({\n ...MOVE_BY,\n ...dialogOffset\n }),\n [dialogOffset]\n );\n\n const onMouseUp = (event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.currentTarget.blur();\n return;\n }\n onClick(event);\n };\n\n const Icon = component;\n const iconSize = useMemo(() => {\n switch (size) {\n case \"xxs\":\n case \"xs\":\n return 16;\n case \"small\":\n case \"medium\":\n case \"large\":\n return 20;\n default:\n return 24;\n }\n }, [size]);\n const icon = Icon ? <Icon size={iconSize.toString()} role=\"img\" aria-hidden=\"true\" /> : null;\n\n useIsomorphicLayoutEffect(() => {\n setIsOpen(open);\n }, [open, setIsOpen]);\n\n // Trigger element props, which are only relevant for \"button\" element, but might be needed for other elements e.g. Button\n const triggerElementProps =\n TriggerElement === \"button\"\n ? {\n ref: mergedRef\n }\n : {\n active: isActive,\n disabled: disabled,\n ref: isForwardRef(TriggerElement) ? mergedRef : undefined\n };\n\n const triggerElementNode = (\n <TriggerElement\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MENU_BUTTON, id)}\n data-vibe={ComponentVibeId.MENU_BUTTON}\n type=\"button\"\n className={cx(styles.wrapper, className, getStyle(styles, camelCase(`size-${size}`)), {\n [styles.active]: isActive,\n [getStyle(styles, openDialogComponentClassName)]: isOpen && openDialogComponentClassName,\n [styles.disabled]: disabled,\n [styles.text]: text\n })}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n aria-controls={ariaControls}\n aria-label={!text && ariaLabel}\n onMouseUp={onMouseUp}\n aria-disabled={disabled}\n {...triggerElementProps}\n >\n {componentPosition === \"start\" && icon}\n {text && <span className={styles.innerText}>{text}</span>}\n {componentPosition === \"end\" && icon}\n </TriggerElement>\n );\n\n const dialogNode = (dialogChildren: React.ReactElement) => (\n <Dialog\n wrapperClassName={dialogClassName}\n position={dialogPosition}\n containerSelector={dialogContainerSelector}\n startingEdge={startingEdge}\n animationType=\"expand\"\n content={content}\n moveBy={computedDialogOffset}\n showTrigger={disabled ? [] : [\"click\", \"enter\"]}\n hideTrigger={hideTrigger}\n showTriggerIgnoreClass={dialogShowTriggerIgnoreClass}\n hideTriggerIgnoreClass={dialogHideTriggerIgnoreClass}\n useDerivedStateFromProps={true}\n onDialogDidShow={onDialogDidShow}\n onDialogDidHide={onDialogDidHide}\n zIndex={zIndex}\n isOpen={isOpen}\n hideWhenReferenceHidden={hideWhenReferenceHidden}\n >\n {dialogChildren}\n </Dialog>\n );\n\n const tooltipNode = (tooltipChildren: React.ReactElement) => (\n <Tooltip\n content={tooltipContent}\n position={tooltipPosition}\n showTrigger=\"mouseenter\"\n hideTrigger={tooltipTriggers}\n referenceWrapperClassName={tooltipReferenceClassName}\n hideWhenReferenceHidden={hideWhenReferenceHidden}\n {...tooltipProps}\n >\n {tooltipChildren}\n </Tooltip>\n );\n\n if (showTooltipOnlyOnTriggerElement) {\n return dialogNode(tooltipNode(triggerElementNode));\n }\n return tooltipNode(dialogNode(triggerElementNode));\n }\n);\n\ninterface MenuButtonStaticProps {\n sizes: typeof MenuButtonSizeEnum;\n paddingSizes: typeof DialogContentContainer.sizes;\n dialogPositions: typeof DialogPositionEnum;\n hideTriggers: typeof Dialog.hideShowTriggers;\n componentPositions: typeof MenuButtonComponentPositionEnum;\n}\n\nexport default withStaticProps<MenuButtonProps, MenuButtonStaticProps>(MenuButton, {\n sizes: MenuButtonSizeEnum,\n paddingSizes: DialogSizeEnum,\n dialogPositions: DialogPositionEnum,\n hideTriggers: DialogTriggerEventEnum,\n componentPositions: MenuButtonComponentPositionEnum\n});\n"],"names":["MOVE_BY","main","secondary","CLOSE_KEYS","Dialog","hideShowTriggers","ESCAPE_KEY","TAB_KEY","withStaticProps","forwardRef","_ref","ref","id","className","openDialogComponentClassName","children","_ref$component","component","Menu","_ref$componentPositio","componentPosition","_ref$size","size","_ref$open","open","_ref$onClick","onClick","NOOP","_ref$zIndex","zIndex","_ref$ariaLabel","ariaLabel","closeMenuOnItemClick","_ref$dialogOffset","dialogOffset","_ref$dialogPosition","dialogPosition","positions","BOTTOM_START","dialogClassName","_ref$dialogPaddingSiz","dialogPaddingSize","DialogContentContainer","sizes","SMALL","dialogShowTriggerIgnoreClass","dialogHideTriggerIgnoreClass","_ref$onMenuHide","onMenuHide","_ref$onMenuShow","onMenuShow","_ref$disabled","disabled","text","tooltipContent","tooltipProps","_ref$tooltipTriggers","tooltipTriggers","_ref$tooltipPosition","tooltipPosition","_ref$startingEdge","startingEdge","_ref$removeTabCloseTr","removeTabCloseTrigger","tooltipReferenceClassName","_ref$hideWhenReferenc","hideWhenReferenceHidden","dialogContainerSelector","active","_ref$triggerElement","triggerElement","TriggerElement","showTooltipOnlyOnTriggerElement","dataTestId","_ref$closeDialogOnCon","closeDialogOnContentClick","ariaControls","componentRef","useRef","mergedRef","useMergeRef","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","isActive","handleMenuClose","useCallback","focusOnMenuButtonAfterClose","button","current","window","requestAnimationFrame","focus","onMenuDidClose","event","isCloseKey","includes","key","propagate","onDialogDidHide","hideEvent","onDialogDidShow","_useMemo","useMemo","triggers","Set","CLICK_OUTSIDE","add","CONTENT_CLICK","ENTER","delete","React","Children","toArray","map","child","isValidElement","newProps","type","supportFocusOnMount","focusOnMount","isMenu","onClose","cloneElement","Array","from","_useMemo2","clonedChildren","hideTrigger","content","length","types","POPOVER","role","computedDialogOffset","Object","assign","Icon","iconSize","icon","createElement","useIsomorphicLayoutEffect","triggerElementProps","isForwardRef","undefined","triggerElementNode","getTestId","ComponentDefaultTestId","MENU_BUTTON","ComponentVibeId","cx","styles","wrapper","getStyle","camelCase","concat","_defineProperty","onMouseUp","currentTarget","blur","innerText","dialogNode","dialogChildren","wrapperClassName","position","containerSelector","animationType","moveBy","showTrigger","showTriggerIgnoreClass","hideTriggerIgnoreClass","useDerivedStateFromProps","tooltipNode","tooltipChildren","Tooltip","referenceWrapperClassName","MenuButtonSizeEnum","paddingSizes","DialogSizeEnum","dialogPositions","DialogPositionEnum","hideTriggers","DialogTriggerEventEnum","componentPositions","MenuButtonComponentPositionEnum"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e,defineProperty as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import o,{forwardRef as r,useRef as a,useState as s,useCallback as i,useMemo as n}from"react";import l from"classnames";import{RemoveScroll as m}from"react-remove-scroll";import c from"react-focus-lock";import{AnimatePresence as d,motion as u}from"framer-motion";import{getTestId as f}from"../../../tests/testIds.js";import{ComponentDefaultTestId as p,ComponentVibeId as v}from"../../../tests/constants.js";import E from"./Modal.module.scss.js";import y from"../ModalTopActions/ModalTopActions.js";import{getStyle as b}from"../../../helpers/typesciptCssModulesHelper.js";import{camelCase as A}from"es-toolkit";import{ModalProvider as j}from"../context/ModalContext.js";import{keyCodes as T}from"../../../constants/keyCodes.js";import"../../../constants/sizes.js";import{modalAnimationFullViewVariants as h,modalAnimationAnchorPopVariants as x,modalAnimationCenterPopVariants as M,modalAnimationOverlayVariants as k}from"../utils/animationVariants.js";import{createPortal as C}from"react-dom";import F from"../hooks/usePortalTarget/usePortalTarget.js";import L from"../hooks/useFocusEscapeTargets/useFocusEscapeTargets.js";import{LayerProvider as g}from"@vibe/layer/mockedClassNames";import w from"../../../hooks/useMergeRef.js";var N=c.default||c,I=r((function(r,c){var I=r.id,P=r.show,z=r.size,D=void 0===z?"medium":z,H=r.renderHeaderAction,_=r.closeButtonTheme,B=r.closeButtonAriaLabel,O=r.onClose,R=void 0===O?function(){}:O,V=r.autoFocus,X=void 0===V||V,K=r.allowFocusEscapeTo,S=r.onFocusAttempt,Y=r.anchorElementRef,q=r.alertModal,G=r.container,J=void 0===G?document.body:G,Q=r.children,U=r.style,W=r.zIndex,Z=r.className,$=r["data-testid"],ee=r["aria-labelledby"],te=r["aria-describedby"],oe=F(J),re=a(null),ae=w(c,re),se=a(null),ie=s(),ne=e(ie,2),le=ne[0],me=ne[1],ce=s(),de=e(ce,2),ue=de[0],fe=de[1],pe=i((function(e){ee||me(e)}),[ee]),ve=i((function(e){te||fe(e)}),[te]),Ee=n((function(){return{modalId:I,setTitleId:pe,setDescriptionId:ve,autoFocus:X}}),[I,pe,ve,X]),ye=i((function(e){P&&!q&&R(e)}),[P,q,R]),be=i((function(e){e.key===T.ESCAPE&&P&&!q&&R(e)}),[q,R,P]),Ae="full-view"===D?h:(null==Y?void 0:Y.current)?x:M,je=W?{"--monday-modal-z-index":W}:{},Te=L(K),he=i((function(e){if(S){var t=S(e);return!0===t||t instanceof HTMLElement&&(t.focus(),!1)}return!Te(e)}),[S,Te]);return o.createElement(d,null,P&&o.createElement(g,{layerRef:se},o.createElement(j,{value:Ee},C(o.createElement(N,{returnFocus:!0,autoFocus:X,whiteList:he},o.createElement("div",{ref:se,className:E.container,style:je},o.createElement(u.div,{variants:k,initial:"initial",animate:"enter",exit:"exit","data-testid":f(p.MODAL_NEXT_OVERLAY,I),className:E.overlay,onClick:ye,"aria-hidden":!0}),o.createElement(m,{forwardProps:!0,ref:ae},o.createElement(u.div,{variants:Ae,initial:"exit",animate:"enter",exit:"exit",custom:Y,className:l(E.modal,b(E,A("size-"+D)),t({},E.withHeaderAction,!!H),Z),id:I,"data-testid":$||f(p.MODAL_NEXT,I),"data-vibe":v.MODAL,role:"dialog","aria-modal":!0,"aria-labelledby":ee||le,"aria-describedby":te||ue,style:U,onKeyDown:be,tabIndex:-1},Q,o.createElement(y,{renderAction:H,theme:_,closeButtonAriaLabel:B,onClose:R}))))),oe))))}));export{I as default};
1
+ import{slicedToArray as e,defineProperty as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import o,{forwardRef as r,useRef as a,useState as i,useCallback as s,useMemo as n}from"react";import l from"classnames";import{RemoveScroll as m}from"react-remove-scroll";import c from"react-focus-lock";import{AnimatePresence as d,motion as u}from"framer-motion";import{getTestId as f}from"../../../tests/testIds.js";import{ComponentDefaultTestId as p,ComponentVibeId as v}from"../../../tests/constants.js";import y from"./Modal.module.scss.js";import E from"../ModalTopActions/ModalTopActions.js";import{getStyle as b}from"../../../helpers/typesciptCssModulesHelper.js";import{camelCase as j}from"es-toolkit";import{ModalProvider as A}from"../context/ModalContext.js";import{keyCodes as T}from"../../../constants/keyCodes.js";import"../../../constants/sizes.js";import{modalAnimationFullViewVariants as h,modalAnimationAnchorPopVariants as x,modalAnimationCenterPopVariants as M,modalAnimationOverlayVariants as L}from"../utils/animationVariants.js";import{createPortal as k}from"react-dom";import F from"../hooks/usePortalTarget/usePortalTarget.js";import P from"../hooks/useFocusEscapeTargets/useFocusEscapeTargets.js";import g from"../../../hooks/useMergeRef.js";import w from"../../../../components/layers/dist/LayerProvider/LayerProvider.js";var C=c.default||c,I=r((function(r,c){var I=r.id,N=r.show,z=r.size,D=void 0===z?"medium":z,H=r.renderHeaderAction,_=r.closeButtonTheme,B=r.closeButtonAriaLabel,O=r.onClose,R=void 0===O?function(){}:O,V=r.autoFocus,X=void 0===V||V,K=r.allowFocusEscapeTo,S=r.onFocusAttempt,Y=r.anchorElementRef,q=r.alertModal,G=r.container,J=void 0===G?document.body:G,Q=r.children,U=r.style,W=r.zIndex,Z=r.className,$=r["data-testid"],ee=r["aria-labelledby"],te=r["aria-describedby"],oe=F(J),re=a(null),ae=g(c,re),ie=a(null),se=i(),ne=e(se,2),le=ne[0],me=ne[1],ce=i(),de=e(ce,2),ue=de[0],fe=de[1],pe=s((function(e){ee||me(e)}),[ee]),ve=s((function(e){te||fe(e)}),[te]),ye=n((function(){return{modalId:I,setTitleId:pe,setDescriptionId:ve,autoFocus:X}}),[I,pe,ve,X]),Ee=s((function(e){N&&!q&&R(e)}),[N,q,R]),be=s((function(e){e.key===T.ESCAPE&&N&&!q&&R(e)}),[q,R,N]),je="full-view"===D?h:(null==Y?void 0:Y.current)?x:M,Ae=W?{"--monday-modal-z-index":W}:{},Te=P(K),he=s((function(e){if(S){var t=S(e);return!0===t||t instanceof HTMLElement&&(t.focus(),!1)}return!Te(e)}),[S,Te]);return o.createElement(d,null,N&&o.createElement(w,{layerRef:ie},o.createElement(A,{value:ye},k(o.createElement(C,{returnFocus:!0,autoFocus:X,whiteList:he},o.createElement("div",{ref:ie,className:y.container,style:Ae},o.createElement(u.div,{variants:L,initial:"initial",animate:"enter",exit:"exit","data-testid":f(p.MODAL_NEXT_OVERLAY,I),className:y.overlay,onClick:Ee,"aria-hidden":!0}),o.createElement(m,{forwardProps:!0,ref:ae},o.createElement(u.div,{variants:je,initial:"exit",animate:"enter",exit:"exit",custom:Y,className:l(y.modal,b(y,j("size-"+D)),t({},y.withHeaderAction,!!H),Z),id:I,"data-testid":$||f(p.MODAL_NEXT,I),"data-vibe":v.MODAL,role:"dialog","aria-modal":!0,"aria-labelledby":ee||le,"aria-describedby":te||ue,style:U,onKeyDown:be,tabIndex:-1},Q,o.createElement(E,{renderAction:H,theme:_,closeButtonAriaLabel:B,onClose:R}))))),oe))))}));export{I as default};
2
2
  //# sourceMappingURL=Modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../../../src/components/Modal/Modal/Modal.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport FocusLock from \"react-focus-lock\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../../tests/constants\";\nimport styles from \"./Modal.module.scss\";\nimport { type ModalProps } from \"./Modal.types\";\nimport ModalTopActions from \"../ModalTopActions/ModalTopActions\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport { camelCase } from \"es-toolkit\";\nimport { ModalProvider } from \"../context/ModalContext\";\nimport { type ModalProviderValue } from \"../context/ModalContext.types\";\nimport { keyCodes } from \"../../../constants\";\nimport {\n modalAnimationAnchorPopVariants,\n modalAnimationCenterPopVariants,\n modalAnimationFullViewVariants,\n modalAnimationOverlayVariants\n} from \"../utils/animationVariants\";\nimport { createPortal } from \"react-dom\";\nimport usePortalTarget from \"../hooks/usePortalTarget/usePortalTarget\";\nimport useFocusEscapeTargets from \"../hooks/useFocusEscapeTargets/useFocusEscapeTargets\";\nimport { LayerProvider } from \"@vibe/layer\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\n\n// @ts-expect-error This is a precaution to support all possible module systems (ESM/CJS)\nconst FocusLockComponent = (FocusLock.default || FocusLock) as typeof FocusLock;\n\nconst Modal = forwardRef(\n (\n {\n id,\n show,\n size = \"medium\",\n renderHeaderAction,\n closeButtonTheme,\n closeButtonAriaLabel,\n onClose = () => {},\n autoFocus = true,\n allowFocusEscapeTo,\n onFocusAttempt,\n anchorElementRef,\n alertModal,\n container = document.body,\n children,\n style,\n zIndex,\n className,\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby\n }: ModalProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const portalTargetElement = usePortalTarget(container);\n\n const modalRef = useRef<HTMLDivElement>(null);\n const modalMergedRef = useMergeRef<HTMLDivElement>(ref, modalRef);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [titleId, setTitleId] = useState<string>();\n const [descriptionId, setDescriptionId] = useState<string>();\n\n const setTitleIdCallback = useCallback(\n (newId: string) => {\n if (ariaLabelledby) return;\n setTitleId(newId);\n },\n [ariaLabelledby]\n );\n const setDescriptionIdCallback = useCallback(\n (newId: string) => {\n if (ariaDescribedby) return;\n setDescriptionId(newId);\n },\n [ariaDescribedby]\n );\n\n const contextValue = useMemo<ModalProviderValue>(\n () => ({\n modalId: id,\n setTitleId: setTitleIdCallback,\n setDescriptionId: setDescriptionIdCallback,\n autoFocus\n }),\n [id, setTitleIdCallback, setDescriptionIdCallback, autoFocus]\n );\n\n const onBackdropClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n e => {\n if (!show || alertModal) return;\n onClose(e);\n },\n [show, alertModal, onClose]\n );\n\n const onModalKeyDown = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n e => {\n if (e.key !== keyCodes.ESCAPE || !show || alertModal) return;\n onClose(e);\n },\n [alertModal, onClose, show]\n );\n\n const modalAnimationVariants =\n size === \"full-view\"\n ? modalAnimationFullViewVariants\n : anchorElementRef?.current\n ? modalAnimationAnchorPopVariants\n : modalAnimationCenterPopVariants;\n\n const zIndexStyle = zIndex ? ({ \"--monday-modal-z-index\": zIndex } as React.CSSProperties) : {};\n\n const shouldAllowFocusEscape = useFocusEscapeTargets(allowFocusEscapeTo);\n\n /**\n * Returning true means that the focus-lock is allowed to manage the element.\n * Returning false means that the focus-lock would surrender control to the element.\n */\n const handleFocusLockWhiteList = useCallback(\n (nextFocusedElement?: HTMLElement) => {\n if (onFocusAttempt) {\n const outcome = onFocusAttempt(nextFocusedElement);\n\n if (outcome === true) return true;\n\n if (outcome instanceof HTMLElement) {\n outcome.focus();\n return false;\n }\n\n return false;\n }\n\n return !shouldAllowFocusEscape(nextFocusedElement);\n },\n [onFocusAttempt, shouldAllowFocusEscape]\n );\n\n return (\n <AnimatePresence>\n {show && (\n <LayerProvider layerRef={containerRef}>\n <ModalProvider value={contextValue}>\n {createPortal(\n <FocusLockComponent returnFocus autoFocus={autoFocus} whiteList={handleFocusLockWhiteList}>\n <div ref={containerRef} className={styles.container} style={zIndexStyle}>\n <motion.div\n variants={modalAnimationOverlayVariants}\n initial=\"initial\"\n animate=\"enter\"\n exit=\"exit\"\n data-testid={getTestId(ComponentDefaultTestId.MODAL_NEXT_OVERLAY, id)}\n className={styles.overlay}\n onClick={onBackdropClick}\n aria-hidden\n />\n <RemoveScroll forwardProps ref={modalMergedRef}>\n <motion.div\n variants={modalAnimationVariants}\n initial=\"exit\"\n animate=\"enter\"\n exit=\"exit\"\n custom={anchorElementRef}\n className={cx(\n styles.modal,\n getStyle(styles, camelCase(\"size-\" + size)),\n { [styles.withHeaderAction]: !!renderHeaderAction },\n className\n )}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL_NEXT, id)}\n data-vibe={ComponentVibeId.MODAL}\n role=\"dialog\"\n aria-modal\n aria-labelledby={ariaLabelledby || titleId}\n aria-describedby={ariaDescribedby || descriptionId}\n style={style}\n onKeyDown={onModalKeyDown}\n tabIndex={-1}\n >\n {children}\n <ModalTopActions\n renderAction={renderHeaderAction}\n theme={closeButtonTheme}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onClose={onClose}\n />\n </motion.div>\n </RemoveScroll>\n </div>\n </FocusLockComponent>,\n portalTargetElement\n )}\n </ModalProvider>\n </LayerProvider>\n )}\n </AnimatePresence>\n );\n }\n);\n\nexport default Modal;\n"],"names":["FocusLockComponent","FocusLock","default","Modal","forwardRef","_ref","ref","id","show","_ref$size","size","renderHeaderAction","closeButtonTheme","closeButtonAriaLabel","_ref$onClose","onClose","_ref$autoFocus","autoFocus","allowFocusEscapeTo","onFocusAttempt","anchorElementRef","alertModal","_ref$container","container","document","body","children","style","zIndex","className","dataTestId","ariaLabelledby","ariaDescribedby","portalTargetElement","usePortalTarget","modalRef","useRef","modalMergedRef","useMergeRef","containerRef","_useState","useState","_useState2","_slicedToArray","titleId","setTitleId","_useState3","_useState4","descriptionId","setDescriptionId","setTitleIdCallback","useCallback","newId","setDescriptionIdCallback","contextValue","useMemo","modalId","onBackdropClick","e","onModalKeyDown","key","keyCodes","ESCAPE","modalAnimationVariants","modalAnimationFullViewVariants","current","modalAnimationAnchorPopVariants","modalAnimationCenterPopVariants","zIndexStyle","shouldAllowFocusEscape","useFocusEscapeTargets","handleFocusLockWhiteList","nextFocusedElement","outcome","HTMLElement","focus","React","createElement","AnimatePresence","LayerProvider","layerRef","ModalProvider","value","createPortal","returnFocus","whiteList","styles","motion","div","variants","modalAnimationOverlayVariants","initial","animate","exit","getTestId","ComponentDefaultTestId","MODAL_NEXT_OVERLAY","overlay","onClick","RemoveScroll","forwardProps","custom","cx","modal","getStyle","camelCase","_defineProperty","withHeaderAction","MODAL_NEXT","ComponentVibeId","MODAL","role","onKeyDown","tabIndex","ModalTopActions","renderAction","theme"],"mappings":"kzCA4BA,IAAMA,EAAsBC,EAAUC,SAAWD,EAE3CE,EAAQC,GACZ,SAAAC,EAuBEC,GACE,IAtBAC,EAAEF,EAAFE,GACAC,EAAIH,EAAJG,KAAIC,EAAAJ,EACJK,KAAAA,OAAO,IAAHD,EAAG,SAAQA,EACfE,EAAkBN,EAAlBM,mBACAC,EAAgBP,EAAhBO,iBACAC,EAAoBR,EAApBQ,qBAAoBC,EAAAT,EACpBU,QAAAA,OAAO,IAAAD,EAAG,WAAQ,EAAAA,EAAAE,EAAAX,EAClBY,UAAAA,OAAY,IAAHD,GAAOA,EAChBE,EAAkBb,EAAlBa,mBACAC,EAAcd,EAAdc,eACAC,EAAgBf,EAAhBe,iBACAC,EAAUhB,EAAVgB,WAAUC,EAAAjB,EACVkB,UAAAA,OAAS,IAAAD,EAAGE,SAASC,KAAIH,EACzBI,EAAQrB,EAARqB,SACAC,EAAKtB,EAALsB,MACAC,EAAMvB,EAANuB,OACAC,EAASxB,EAATwB,UACeC,EAAUzB,EAAzB,eACmB0B,GAAc1B,EAAjC,mBACoB2B,GAAe3B,EAAnC,oBAII4B,GAAsBC,EAAgBX,GAEtCY,GAAWC,EAAuB,MAClCC,GAAiBC,EAA4BhC,EAAK6B,IAClDI,GAAeH,EAAuB,MAE5CI,GAA8BC,IAAkBC,GAAAC,EAAAH,GAAA,GAAzCI,GAAOF,GAAA,GAAEG,GAAUH,GAAA,GAC1BI,GAA0CL,IAAkBM,GAAAJ,EAAAG,GAAA,GAArDE,GAAaD,GAAA,GAAEE,GAAgBF,GAAA,GAEhCG,GAAqBC,GACzB,SAACC,GACKrB,IACJc,GAAWO,EACb,GACA,CAACrB,KAEGsB,GAA2BF,GAC/B,SAACC,GACKpB,IACJiB,GAAiBG,EACnB,GACA,CAACpB,KAGGsB,GAAeC,GACnB,WAAA,MAAO,CACLC,QAASjD,EACTsC,WAAYK,GACZD,iBAAkBI,GAClBpC,UAAAA,EACA,GACF,CAACV,EAAI2C,GAAoBG,GAA0BpC,IAG/CwC,GAAkBN,GACtB,SAAAO,GACOlD,IAAQa,GACbN,EAAQ2C,EACT,GACD,CAAClD,EAAMa,EAAYN,IAGf4C,GAAiBR,GACrB,SAAAO,GACMA,EAAEE,MAAQC,EAASC,QAAWtD,IAAQa,GAC1CN,EAAQ2C,EACT,GACD,CAACrC,EAAYN,EAASP,IAGlBuD,GACK,cAATrD,EACIsD,GACA5C,aAAA,EAAAA,EAAkB6C,SAClBC,EACAC,EAEAC,GAAcxC,EAAU,CAAE,yBAA0BA,GAAmC,GAEvFyC,GAAyBC,EAAsBpD,GAM/CqD,GAA2BpB,GAC/B,SAACqB,GACC,GAAIrD,EAAgB,CAClB,IAAMsD,EAAUtD,EAAeqD,GAE/B,OAAgB,IAAZC,GAEAA,aAAmBC,cACrBD,EAAQE,SACD,EAIV,CAED,OAAQN,GAAuBG,EACjC,GACA,CAACrD,EAAgBkD,KAGnB,OACEO,EAAAC,cAACC,EAAe,KACbtE,GACCoE,EAAAC,cAACE,EAAa,CAACC,SAAUzC,IACvBqC,EAAAC,cAACI,EAAc,CAAAC,MAAO5B,IACnB6B,EACCP,EAAAC,cAAC7E,EAAmB,CAAAoF,eAAYnE,UAAWA,EAAWoE,UAAWd,IAC/DK,EAAAC,cAAA,MAAA,CAAKvE,IAAKiC,GAAcV,UAAWyD,EAAO/D,UAAWI,MAAOyC,IAC1DQ,EAAAC,cAACU,EAAOC,IACN,CAAAC,SAAUC,EACVC,QAAQ,UACRC,QAAQ,QACRC,KAAK,OACQ,cAAAC,EAAUC,EAAuBC,mBAAoBzF,GAClEsB,UAAWyD,EAAOW,QAClBC,QAASzC,GAET,eAAA,IACFmB,EAAAC,cAACsB,EAAa,CAAAC,cAAa,EAAA9F,IAAK+B,IAC9BuC,EAACC,cAAAU,EAAOC,IAAG,CACTC,SAAU1B,GACV4B,QAAQ,OACRC,QAAQ,QACRC,KAAK,OACLQ,OAAQjF,EACRS,UAAWyE,EACThB,EAAOiB,MACPC,EAASlB,EAAQmB,EAAU,QAAU/F,IAAMgG,EAAA,CAAA,EACxCpB,EAAOqB,mBAAqBhG,GAC/BkB,GAEFtB,GAAIA,EAAE,cACOuB,GAAcgE,EAAUC,EAAuBa,WAAYrG,GAAG,YAChEsG,EAAgBC,MAC3BC,KAAK,SAAQ,cAAA,EAAA,kBAEIhF,IAAkBa,GACjB,mBAAAZ,IAAmBgB,GACrCrB,MAAOA,EACPqF,UAAWrD,GACXsD,UAAW,GAEVvF,EACDkD,EAAAC,cAACqC,EAAe,CACdC,aAAcxG,EACdyG,MAAOxG,EACPC,qBAAsBA,EACtBE,QAASA,QAMnBkB,MAOd"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../../src/components/Modal/Modal/Modal.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport FocusLock from \"react-focus-lock\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../../tests/constants\";\nimport styles from \"./Modal.module.scss\";\nimport { type ModalProps } from \"./Modal.types\";\nimport ModalTopActions from \"../ModalTopActions/ModalTopActions\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport { camelCase } from \"es-toolkit\";\nimport { ModalProvider } from \"../context/ModalContext\";\nimport { type ModalProviderValue } from \"../context/ModalContext.types\";\nimport { keyCodes } from \"../../../constants\";\nimport {\n modalAnimationAnchorPopVariants,\n modalAnimationCenterPopVariants,\n modalAnimationFullViewVariants,\n modalAnimationOverlayVariants\n} from \"../utils/animationVariants\";\nimport { createPortal } from \"react-dom\";\nimport usePortalTarget from \"../hooks/usePortalTarget/usePortalTarget\";\nimport useFocusEscapeTargets from \"../hooks/useFocusEscapeTargets/useFocusEscapeTargets\";\nimport { LayerProvider } from \"@vibe/layer\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\n\n// @ts-expect-error This is a precaution to support all possible module systems (ESM/CJS)\nconst FocusLockComponent = (FocusLock.default || FocusLock) as typeof FocusLock;\n\nconst Modal = forwardRef(\n (\n {\n id,\n show,\n size = \"medium\",\n renderHeaderAction,\n closeButtonTheme,\n closeButtonAriaLabel,\n onClose = () => {},\n autoFocus = true,\n allowFocusEscapeTo,\n onFocusAttempt,\n anchorElementRef,\n alertModal,\n container = document.body,\n children,\n style,\n zIndex,\n className,\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby\n }: ModalProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const portalTargetElement = usePortalTarget(container);\n\n const modalRef = useRef<HTMLDivElement>(null);\n const modalMergedRef = useMergeRef<HTMLDivElement>(ref, modalRef);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [titleId, setTitleId] = useState<string>();\n const [descriptionId, setDescriptionId] = useState<string>();\n\n const setTitleIdCallback = useCallback(\n (newId: string) => {\n if (ariaLabelledby) return;\n setTitleId(newId);\n },\n [ariaLabelledby]\n );\n const setDescriptionIdCallback = useCallback(\n (newId: string) => {\n if (ariaDescribedby) return;\n setDescriptionId(newId);\n },\n [ariaDescribedby]\n );\n\n const contextValue = useMemo<ModalProviderValue>(\n () => ({\n modalId: id,\n setTitleId: setTitleIdCallback,\n setDescriptionId: setDescriptionIdCallback,\n autoFocus\n }),\n [id, setTitleIdCallback, setDescriptionIdCallback, autoFocus]\n );\n\n const onBackdropClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n e => {\n if (!show || alertModal) return;\n onClose(e);\n },\n [show, alertModal, onClose]\n );\n\n const onModalKeyDown = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n e => {\n if (e.key !== keyCodes.ESCAPE || !show || alertModal) return;\n onClose(e);\n },\n [alertModal, onClose, show]\n );\n\n const modalAnimationVariants =\n size === \"full-view\"\n ? modalAnimationFullViewVariants\n : anchorElementRef?.current\n ? modalAnimationAnchorPopVariants\n : modalAnimationCenterPopVariants;\n\n const zIndexStyle = zIndex ? ({ \"--monday-modal-z-index\": zIndex } as React.CSSProperties) : {};\n\n const shouldAllowFocusEscape = useFocusEscapeTargets(allowFocusEscapeTo);\n\n /**\n * Returning true means that the focus-lock is allowed to manage the element.\n * Returning false means that the focus-lock would surrender control to the element.\n */\n const handleFocusLockWhiteList = useCallback(\n (nextFocusedElement?: HTMLElement) => {\n if (onFocusAttempt) {\n const outcome = onFocusAttempt(nextFocusedElement);\n\n if (outcome === true) return true;\n\n if (outcome instanceof HTMLElement) {\n outcome.focus();\n return false;\n }\n\n return false;\n }\n\n return !shouldAllowFocusEscape(nextFocusedElement);\n },\n [onFocusAttempt, shouldAllowFocusEscape]\n );\n\n return (\n <AnimatePresence>\n {show && (\n <LayerProvider layerRef={containerRef}>\n <ModalProvider value={contextValue}>\n {createPortal(\n <FocusLockComponent returnFocus autoFocus={autoFocus} whiteList={handleFocusLockWhiteList}>\n <div ref={containerRef} className={styles.container} style={zIndexStyle}>\n <motion.div\n variants={modalAnimationOverlayVariants}\n initial=\"initial\"\n animate=\"enter\"\n exit=\"exit\"\n data-testid={getTestId(ComponentDefaultTestId.MODAL_NEXT_OVERLAY, id)}\n className={styles.overlay}\n onClick={onBackdropClick}\n aria-hidden\n />\n <RemoveScroll forwardProps ref={modalMergedRef}>\n <motion.div\n variants={modalAnimationVariants}\n initial=\"exit\"\n animate=\"enter\"\n exit=\"exit\"\n custom={anchorElementRef}\n className={cx(\n styles.modal,\n getStyle(styles, camelCase(\"size-\" + size)),\n { [styles.withHeaderAction]: !!renderHeaderAction },\n className\n )}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL_NEXT, id)}\n data-vibe={ComponentVibeId.MODAL}\n role=\"dialog\"\n aria-modal\n aria-labelledby={ariaLabelledby || titleId}\n aria-describedby={ariaDescribedby || descriptionId}\n style={style}\n onKeyDown={onModalKeyDown}\n tabIndex={-1}\n >\n {children}\n <ModalTopActions\n renderAction={renderHeaderAction}\n theme={closeButtonTheme}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onClose={onClose}\n />\n </motion.div>\n </RemoveScroll>\n </div>\n </FocusLockComponent>,\n portalTargetElement\n )}\n </ModalProvider>\n </LayerProvider>\n )}\n </AnimatePresence>\n );\n }\n);\n\nexport default Modal;\n"],"names":["FocusLockComponent","FocusLock","default","Modal","forwardRef","_ref","ref","id","show","_ref$size","size","renderHeaderAction","closeButtonTheme","closeButtonAriaLabel","_ref$onClose","onClose","_ref$autoFocus","autoFocus","allowFocusEscapeTo","onFocusAttempt","anchorElementRef","alertModal","_ref$container","container","document","body","children","style","zIndex","className","dataTestId","ariaLabelledby","ariaDescribedby","portalTargetElement","usePortalTarget","modalRef","useRef","modalMergedRef","useMergeRef","containerRef","_useState","useState","_useState2","_slicedToArray","titleId","setTitleId","_useState3","_useState4","descriptionId","setDescriptionId","setTitleIdCallback","useCallback","newId","setDescriptionIdCallback","contextValue","useMemo","modalId","onBackdropClick","e","onModalKeyDown","key","keyCodes","ESCAPE","modalAnimationVariants","modalAnimationFullViewVariants","current","modalAnimationAnchorPopVariants","modalAnimationCenterPopVariants","zIndexStyle","shouldAllowFocusEscape","useFocusEscapeTargets","handleFocusLockWhiteList","nextFocusedElement","outcome","HTMLElement","focus","React","createElement","AnimatePresence","LayerProvider","layerRef","ModalProvider","value","createPortal","returnFocus","whiteList","styles","motion","div","variants","modalAnimationOverlayVariants","initial","animate","exit","getTestId","ComponentDefaultTestId","MODAL_NEXT_OVERLAY","overlay","onClick","RemoveScroll","forwardProps","custom","cx","modal","getStyle","camelCase","_defineProperty","withHeaderAction","MODAL_NEXT","ComponentVibeId","MODAL","role","onKeyDown","tabIndex","ModalTopActions","renderAction","theme"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{typeof as e}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import t,{forwardRef as a,useEffect as o}from"react";import s from"classnames";import{getTestId as i}from"../../../tests/testIds.js";import{ComponentDefaultTestId as r}from"../../../tests/constants.js";import n from"./ModalHeader.module.scss.js";import c from"../../Flex/Flex.js";import m from"../../Heading/Heading.js";import l from"../../Text/Text.js";import{Icon as d}from"@vibe/icon/mockedClassNames";import{useModal as p}from"../context/ModalContext.js";var f=a((function(a,f){var g=a.title,j=a.description,u=a.descriptionIcon,x=a.className,_=a.id,E=a["data-testid"],N=p(),b=N.modalId,I=N.setDescriptionId,h=N.setTitleId,y=_?"".concat(b,"_").concat(_,"_label"):"".concat(b,"_label"),H=_?"".concat(b,"_").concat(_,"_desc"):"".concat(b,"_desc");return o((function(){b&&(h(y),j&&I(H))}),[b,h,y,j,I,H]),t.createElement(c,{gap:"xs",direction:"column",align:"start",ref:f,className:s(n.header,x),id:_,"data-testid":E||i(r.MODAL_NEXT_HEADER,_)},"string"==typeof g?t.createElement(m,{id:y,align:"inherit",type:"h2",weight:"medium",maxLines:2,className:n.title},g):g,j&&t.createElement(c,{id:H},u&&t.createElement(d,{icon:"object"===e(u)?u.name:u,className:s(n.descriptionIcon,"object"===e(u)&&u.className)}),"string"==typeof j?t.createElement(l,{element:"span",align:"inherit",type:"text1"},j):j))}));export{f as default};
1
+ import{typeof as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import e,{forwardRef as o,useEffect as s}from"react";import a from"classnames";import{getTestId as i}from"../../../tests/testIds.js";import{ComponentDefaultTestId as n}from"../../../tests/constants.js";import r from"./ModalHeader.module.scss.js";import c from"../../Flex/Flex.js";import m from"../../Heading/Heading.js";import l from"../../Text/Text.js";import{useModal as d}from"../context/ModalContext.js";import p from"../../../../components/icon/dist/Icon/Icon.js";var f=o((function(o,f){var j=o.title,g=o.description,u=o.descriptionIcon,x=o.className,_=o.id,E=o["data-testid"],I=d(),N=I.modalId,b=I.setDescriptionId,h=I.setTitleId,y=_?"".concat(N,"_").concat(_,"_label"):"".concat(N,"_label"),H=_?"".concat(N,"_").concat(_,"_desc"):"".concat(N,"_desc");return s((function(){N&&(h(y),g&&b(H))}),[N,h,y,g,b,H]),e.createElement(c,{gap:"xs",direction:"column",align:"start",ref:f,className:a(r.header,x),id:_,"data-testid":E||i(n.MODAL_NEXT_HEADER,_)},"string"==typeof j?e.createElement(m,{id:y,align:"inherit",type:"h2",weight:"medium",maxLines:2,className:r.title},j):j,g&&e.createElement(c,{id:H},u&&e.createElement(p,{icon:"object"===t(u)?u.name:u,className:a(r.descriptionIcon,"object"===t(u)&&u.className)}),"string"==typeof g?e.createElement(l,{element:"span",align:"inherit",type:"text1"},g):g))}));export{f as default};
2
2
  //# sourceMappingURL=ModalHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalHeader.js","sources":["../../../../../../src/components/Modal/ModalHeader/ModalHeader.tsx"],"sourcesContent":["import React, { forwardRef, useEffect } from \"react\";\nimport cx from \"classnames\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId } from \"../../../tests/constants\";\nimport styles from \"./ModalHeader.module.scss\";\nimport { type ModalHeaderProps } from \"./ModalHeader.types\";\nimport Flex from \"../../Flex/Flex\";\nimport Heading from \"../../Heading/Heading\";\nimport Text from \"../../Text/Text\";\nimport { Icon } from \"@vibe/icon\";\nimport { useModal } from \"../context/ModalContext\";\n\nconst ModalHeader = forwardRef(\n (\n { title, description, descriptionIcon, className, id, \"data-testid\": dataTestId }: ModalHeaderProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const { modalId, setDescriptionId, setTitleId } = useModal();\n const titleId = id ? `${modalId}_${id}_label` : `${modalId}_label`;\n const descriptionId = id ? `${modalId}_${id}_desc` : `${modalId}_desc`;\n\n useEffect(() => {\n if (!modalId) return;\n setTitleId(titleId);\n if (!description) return;\n setDescriptionId(descriptionId);\n }, [modalId, setTitleId, titleId, description, setDescriptionId, descriptionId]);\n\n return (\n <Flex\n gap=\"xs\"\n direction=\"column\"\n align=\"start\"\n ref={ref}\n className={cx(styles.header, className)}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL_NEXT_HEADER, id)}\n >\n {typeof title === \"string\" ? (\n <Heading id={titleId} align=\"inherit\" type=\"h2\" weight=\"medium\" maxLines={2} className={styles.title}>\n {title}\n </Heading>\n ) : (\n title\n )}\n\n {description && (\n <Flex id={descriptionId}>\n {descriptionIcon && (\n <Icon\n icon={typeof descriptionIcon === \"object\" ? descriptionIcon.name : descriptionIcon}\n className={cx(styles.descriptionIcon, typeof descriptionIcon === \"object\" && descriptionIcon.className)}\n />\n )}\n {typeof description === \"string\" ? (\n <Text element=\"span\" align=\"inherit\" type=\"text1\">\n {description}\n </Text>\n ) : (\n description\n )}\n </Flex>\n )}\n </Flex>\n );\n }\n);\n\nexport default ModalHeader;\n"],"names":["ModalHeader","forwardRef","_ref","ref","title","description","descriptionIcon","className","id","dataTestId","_useModal","useModal","modalId","setDescriptionId","setTitleId","titleId","concat","descriptionId","useEffect","React","Flex","gap","direction","align","cx","styles","header","getTestId","ComponentDefaultTestId","MODAL_NEXT_HEADER","Heading","type","weight","maxLines","createElement","Icon","icon","_typeof","name","Text","element"],"mappings":"shBAYMA,IAAAA,EAAcC,GAClB,SAAAC,EAEEC,GACE,IAFAC,EAAKF,EAALE,MAAOC,EAAWH,EAAXG,YAAaC,EAAeJ,EAAfI,gBAAiBC,EAASL,EAATK,UAAWC,EAAEN,EAAFM,GAAmBC,EAAUP,EAAzB,eAGtDQ,EAAkDC,IAA1CC,EAAOF,EAAPE,QAASC,EAAgBH,EAAhBG,iBAAkBC,EAAUJ,EAAVI,WAC7BC,EAAUP,EAAE,GAAAQ,OAAMJ,EAAOI,KAAAA,OAAIR,EAAE,UAAA,GAAAQ,OAAcJ,EAAe,UAC5DK,EAAgBT,EAAE,GAAAQ,OAAMJ,EAAOI,KAAAA,OAAIR,EAAE,SAAA,GAAAQ,OAAaJ,EAAc,SAStE,OAPAM,GAAU,WACHN,IACLE,EAAWC,GACNV,GACLQ,EAAiBI,GACnB,GAAG,CAACL,EAASE,EAAYC,EAASV,EAAaQ,EAAkBI,IAG/DE,gBAACC,EAAI,CACHC,IAAI,KACJC,UAAU,SACVC,MAAM,QACNpB,IAAKA,EACLI,UAAWiB,EAAGC,EAAOC,OAAQnB,GAC7BC,GAAIA,gBACSC,GAAckB,EAAUC,EAAuBC,kBAAmBrB,IAE7D,iBAAVJ,EACNe,gBAACW,EAAO,CAACtB,GAAIO,EAASQ,MAAM,UAAUQ,KAAK,KAAKC,OAAO,SAASC,SAAU,EAAG1B,UAAWkB,EAAOrB,OAC5FA,GAGHA,EAGDC,GACCc,EAAAe,cAACd,EAAK,CAAAZ,GAAIS,GACPX,GACCa,EAAAe,cAACC,EACC,CAAAC,KAAiC,WAA3BC,EAAO/B,GAA+BA,EAAgBgC,KAAOhC,EACnEC,UAAWiB,EAAGC,EAAOnB,gBAA4C,WAA3B+B,EAAO/B,IAAgCA,EAAgBC,aAGzE,iBAAhBF,EACNc,EAACe,cAAAK,GAAKC,QAAQ,OAAOjB,MAAM,UAAUQ,KAAK,SACvC1B,GAGHA,GAMZ"}
1
+ {"version":3,"file":"ModalHeader.js","sources":["../../../../../../src/components/Modal/ModalHeader/ModalHeader.tsx"],"sourcesContent":["import React, { forwardRef, useEffect } from \"react\";\nimport cx from \"classnames\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId } from \"../../../tests/constants\";\nimport styles from \"./ModalHeader.module.scss\";\nimport { type ModalHeaderProps } from \"./ModalHeader.types\";\nimport Flex from \"../../Flex/Flex\";\nimport Heading from \"../../Heading/Heading\";\nimport Text from \"../../Text/Text\";\nimport { Icon } from \"@vibe/icon\";\nimport { useModal } from \"../context/ModalContext\";\n\nconst ModalHeader = forwardRef(\n (\n { title, description, descriptionIcon, className, id, \"data-testid\": dataTestId }: ModalHeaderProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const { modalId, setDescriptionId, setTitleId } = useModal();\n const titleId = id ? `${modalId}_${id}_label` : `${modalId}_label`;\n const descriptionId = id ? `${modalId}_${id}_desc` : `${modalId}_desc`;\n\n useEffect(() => {\n if (!modalId) return;\n setTitleId(titleId);\n if (!description) return;\n setDescriptionId(descriptionId);\n }, [modalId, setTitleId, titleId, description, setDescriptionId, descriptionId]);\n\n return (\n <Flex\n gap=\"xs\"\n direction=\"column\"\n align=\"start\"\n ref={ref}\n className={cx(styles.header, className)}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL_NEXT_HEADER, id)}\n >\n {typeof title === \"string\" ? (\n <Heading id={titleId} align=\"inherit\" type=\"h2\" weight=\"medium\" maxLines={2} className={styles.title}>\n {title}\n </Heading>\n ) : (\n title\n )}\n\n {description && (\n <Flex id={descriptionId}>\n {descriptionIcon && (\n <Icon\n icon={typeof descriptionIcon === \"object\" ? descriptionIcon.name : descriptionIcon}\n className={cx(styles.descriptionIcon, typeof descriptionIcon === \"object\" && descriptionIcon.className)}\n />\n )}\n {typeof description === \"string\" ? (\n <Text element=\"span\" align=\"inherit\" type=\"text1\">\n {description}\n </Text>\n ) : (\n description\n )}\n </Flex>\n )}\n </Flex>\n );\n }\n);\n\nexport default ModalHeader;\n"],"names":["ModalHeader","forwardRef","_ref","ref","title","description","descriptionIcon","className","id","dataTestId","_useModal","useModal","modalId","setDescriptionId","setTitleId","titleId","concat","descriptionId","useEffect","React","Flex","gap","direction","align","cx","styles","header","getTestId","ComponentDefaultTestId","MODAL_NEXT_HEADER","Heading","type","weight","maxLines","createElement","Icon","icon","_typeof","name","Text","element"],"mappings":"giBAYMA,IAAAA,EAAcC,GAClB,SAAAC,EAEEC,GACE,IAFAC,EAAKF,EAALE,MAAOC,EAAWH,EAAXG,YAAaC,EAAeJ,EAAfI,gBAAiBC,EAASL,EAATK,UAAWC,EAAEN,EAAFM,GAAmBC,EAAUP,EAAzB,eAGtDQ,EAAkDC,IAA1CC,EAAOF,EAAPE,QAASC,EAAgBH,EAAhBG,iBAAkBC,EAAUJ,EAAVI,WAC7BC,EAAUP,EAAE,GAAAQ,OAAMJ,EAAOI,KAAAA,OAAIR,EAAE,UAAA,GAAAQ,OAAcJ,EAAe,UAC5DK,EAAgBT,EAAE,GAAAQ,OAAMJ,EAAOI,KAAAA,OAAIR,EAAE,SAAA,GAAAQ,OAAaJ,EAAc,SAStE,OAPAM,GAAU,WACHN,IACLE,EAAWC,GACNV,GACLQ,EAAiBI,GACnB,GAAG,CAACL,EAASE,EAAYC,EAASV,EAAaQ,EAAkBI,IAG/DE,gBAACC,EAAI,CACHC,IAAI,KACJC,UAAU,SACVC,MAAM,QACNpB,IAAKA,EACLI,UAAWiB,EAAGC,EAAOC,OAAQnB,GAC7BC,GAAIA,gBACSC,GAAckB,EAAUC,EAAuBC,kBAAmBrB,IAE7D,iBAAVJ,EACNe,gBAACW,EAAO,CAACtB,GAAIO,EAASQ,MAAM,UAAUQ,KAAK,KAAKC,OAAO,SAASC,SAAU,EAAG1B,UAAWkB,EAAOrB,OAC5FA,GAGHA,EAGDC,GACCc,EAAAe,cAACd,EAAK,CAAAZ,GAAIS,GACPX,GACCa,EAAAe,cAACC,EACC,CAAAC,KAAiC,WAA3BC,EAAO/B,GAA+BA,EAAgBgC,KAAOhC,EACnEC,UAAWiB,EAAGC,EAAOnB,gBAA4C,WAA3B+B,EAAO/B,IAAgCA,EAAgBC,aAGzE,iBAAhBF,EACNc,EAACe,cAAAK,GAAKC,QAAQ,OAAOjB,MAAM,UAAUQ,KAAK,SACvC1B,GAGHA,GAMZ"}
@@ -1,2 +1,2 @@
1
- import t from"react";import o from"./ModalTopActions.module.scss.js";import e from"../../IconButton/IconButton.js";import{CloseMedium as a}from"@vibe/icons/mockedClassNames";import{ComponentDefaultTestId as r}from"../../../tests/constants.js";var i={dark:"fixed-dark",light:"fixed-light"},s=function(s){var n=s.renderAction,c=s.closeButtonAriaLabel,m=s.onClose,l=i[s.theme]||"primary";return t.createElement("div",{className:o.actions,"data-no-autofocus":!0},"function"==typeof n?n(l):n,t.createElement(e,{"data-testid":r.MODAL_NEXT_CLOSE_BUTTON,icon:a,onClick:m,size:"small",kind:"tertiary",color:l,ariaLabel:c}))};export{s as default};
1
+ import t from"react";import o from"./ModalTopActions.module.scss.js";import e from"../../IconButton/IconButton.js";import{ComponentDefaultTestId as r}from"../../../tests/constants.js";import a from"../../../../icons/dist/react/CloseMedium.js";var i={dark:"fixed-dark",light:"fixed-light"},s=function(s){var n=s.renderAction,c=s.closeButtonAriaLabel,m=s.onClose,l=i[s.theme]||"primary";return t.createElement("div",{className:o.actions,"data-no-autofocus":!0},"function"==typeof n?n(l):n,t.createElement(e,{"data-testid":r.MODAL_NEXT_CLOSE_BUTTON,icon:a,onClick:m,size:"small",kind:"tertiary",color:l,ariaLabel:c}))};export{s as default};
2
2
  //# sourceMappingURL=ModalTopActions.js.map
@@ -1,2 +1,2 @@
1
- import{__rest as t}from"../../../../../_virtual/_tslib.js";import e,{forwardRef as o}from"react";import r from"./ModalFooterBase.module.scss.js";import{Button as s}from"@vibe/button/mockedClassNames";import a from"../../../Flex/Flex.js";import i from"classnames";import n from"../../../Tooltip/Tooltip.js";var m=o((function(o,m){var l=o.primaryButton,c=o.secondaryButton,p=o.renderAction,d=o.id,f=o.className,j=o["data-testid"],u=l.text,b=l.tooltipProps,x=void 0===b?{}:b,v=t(l,["text","tooltipProps"]),g=c||{},E=g.text,y=g.tooltipProps,O=void 0===y?{}:y,P=t(g,["text","tooltipProps"]);return e.createElement(a,{ref:m,id:d,justify:"space-between",gap:"small",className:i(r.footer,f),"data-testid":j},e.createElement(n,Object.assign({},x,{content:x.content}),e.createElement(s,Object.assign({},v),u)),c&&e.createElement(n,Object.assign({},O,{content:O.content}),e.createElement(s,Object.assign({},P,{kind:"tertiary"}),E)),p)}));export{m as default};
1
+ import{__rest as t}from"../../../../../_virtual/_tslib.js";import e,{forwardRef as o}from"react";import r from"./ModalFooterBase.module.scss.js";import s from"../../../Flex/Flex.js";import a from"classnames";import n from"../../../Tooltip/Tooltip.js";import i from"../../../../../components/button/dist/Button/Button.js";var m=o((function(o,m){var c=o.primaryButton,l=o.secondaryButton,p=o.renderAction,d=o.id,f=o.className,u=o["data-testid"],j=c.text,b=c.tooltipProps,x=void 0===b?{}:b,g=t(c,["text","tooltipProps"]),v=l||{},B=v.text,E=v.tooltipProps,y=void 0===E?{}:E,O=t(v,["text","tooltipProps"]);return e.createElement(s,{ref:m,id:d,justify:"space-between",gap:"small",className:a(r.footer,f),"data-testid":u},e.createElement(n,Object.assign({},x,{content:x.content}),e.createElement(i,Object.assign({},g),j)),l&&e.createElement(n,Object.assign({},y,{content:y.content}),e.createElement(i,Object.assign({},O,{kind:"tertiary"}),B)),p)}));export{m as default};
2
2
  //# sourceMappingURL=ModalFooterBase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalFooterBase.js","sources":["../../../../../../../src/components/Modal/footers/ModalFooterBase/ModalFooterBase.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport styles from \"./ModalFooterBase.module.scss\";\nimport { Button } from \"@vibe/button\";\nimport Flex from \"../../../Flex/Flex\";\nimport { type ModalFooterBaseProps } from \"./ModalFooterBase.types\";\nimport cx from \"classnames\";\nimport { Tooltip } from \"../../../Tooltip\";\n\nconst ModalFooterBase = forwardRef(\n (\n { primaryButton, secondaryButton, renderAction, id, className, \"data-testid\": dataTestId }: ModalFooterBaseProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const {\n text: primaryButtonText,\n tooltipProps: primaryButtonTooltipProps = {},\n ...primaryButtonProps\n } = primaryButton;\n const {\n text: secondaryButtonText,\n tooltipProps: secondaryButtonTooltipProps = {},\n ...secondaryButtonProps\n } = secondaryButton || {};\n\n return (\n <Flex\n ref={ref}\n id={id}\n justify=\"space-between\"\n gap=\"small\"\n className={cx(styles.footer, className)}\n data-testid={dataTestId}\n >\n <Tooltip {...primaryButtonTooltipProps} content={primaryButtonTooltipProps.content}>\n <Button {...primaryButtonProps}>{primaryButtonText}</Button>\n </Tooltip>\n {secondaryButton && (\n <Tooltip {...secondaryButtonTooltipProps} content={secondaryButtonTooltipProps.content}>\n <Button {...secondaryButtonProps} kind=\"tertiary\">\n {secondaryButtonText}\n </Button>\n </Tooltip>\n )}\n {renderAction}\n </Flex>\n );\n }\n);\n\nexport default ModalFooterBase;\n"],"names":["ModalFooterBase","forwardRef","_ref","ref","primaryButton","secondaryButton","renderAction","id","className","dataTestId","primaryButtonText","text","_primaryButton$toolti","tooltipProps","primaryButtonTooltipProps","primaryButtonProps","__rest","_a","secondaryButtonText","_a$tooltipProps","secondaryButtonTooltipProps","secondaryButtonProps","React","createElement","Flex","justify","gap","cx","styles","footer","Tooltip","content","Button","Object","assign","kind"],"mappings":"kTAQMA,IAAAA,EAAkBC,GACtB,SAAAC,EAEEC,GACE,IAFAC,EAAaF,EAAbE,cAAeC,EAAeH,EAAfG,gBAAiBC,EAAYJ,EAAZI,aAAcC,EAAEL,EAAFK,GAAIC,EAASN,EAATM,UAA0BC,EAAUP,EAAzB,eAIvDQ,EAGJN,EAHFO,KAAIC,EAGFR,EAFFS,aAAcC,OAAyB,IAAAF,EAAG,CAAE,EAAAA,EACzCG,EAAkBC,EACnBZ,EAJE,CAAA,OAAA,iBAKAa,EAIFZ,GAAmB,CAAE,EAHjBa,EACwCD,EAD9CN,KAAIQ,EAC0CF,EAA9CJ,aAAcO,OAA2B,IAAAD,EAAG,CAAE,EAAAA,EAC3CE,EAAoBL,EAAAC,EAHnB,CAIL,OAAA,iBAED,OACEK,EAAAC,cAACC,EAAI,CACHrB,IAAKA,EACLI,GAAIA,EACJkB,QAAQ,gBACRC,IAAI,QACJlB,UAAWmB,EAAGC,EAAOC,OAAQrB,iBAChBC,GAEba,EAACC,cAAAO,mBAAYhB,EAAyB,CAAEiB,QAASjB,EAA0BiB,UACzET,EAAAC,cAACS,EAAWC,OAAAC,OAAA,CAAA,EAAAnB,GAAqBL,IAElCL,GACCiB,EAAAC,cAACO,EAAOG,OAAAC,OAAA,CAAA,EAAKd,EAA2B,CAAEW,QAASX,EAA4BW,UAC7ET,EAACC,cAAAS,EAAWC,OAAAC,OAAA,CAAA,EAAAb,EAAsB,CAAAc,KAAK,aACpCjB,IAINZ,EAGP"}
1
+ {"version":3,"file":"ModalFooterBase.js","sources":["../../../../../../../src/components/Modal/footers/ModalFooterBase/ModalFooterBase.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport styles from \"./ModalFooterBase.module.scss\";\nimport { Button } from \"@vibe/button\";\nimport Flex from \"../../../Flex/Flex\";\nimport { type ModalFooterBaseProps } from \"./ModalFooterBase.types\";\nimport cx from \"classnames\";\nimport { Tooltip } from \"../../../Tooltip\";\n\nconst ModalFooterBase = forwardRef(\n (\n { primaryButton, secondaryButton, renderAction, id, className, \"data-testid\": dataTestId }: ModalFooterBaseProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const {\n text: primaryButtonText,\n tooltipProps: primaryButtonTooltipProps = {},\n ...primaryButtonProps\n } = primaryButton;\n const {\n text: secondaryButtonText,\n tooltipProps: secondaryButtonTooltipProps = {},\n ...secondaryButtonProps\n } = secondaryButton || {};\n\n return (\n <Flex\n ref={ref}\n id={id}\n justify=\"space-between\"\n gap=\"small\"\n className={cx(styles.footer, className)}\n data-testid={dataTestId}\n >\n <Tooltip {...primaryButtonTooltipProps} content={primaryButtonTooltipProps.content}>\n <Button {...primaryButtonProps}>{primaryButtonText}</Button>\n </Tooltip>\n {secondaryButton && (\n <Tooltip {...secondaryButtonTooltipProps} content={secondaryButtonTooltipProps.content}>\n <Button {...secondaryButtonProps} kind=\"tertiary\">\n {secondaryButtonText}\n </Button>\n </Tooltip>\n )}\n {renderAction}\n </Flex>\n );\n }\n);\n\nexport default ModalFooterBase;\n"],"names":["ModalFooterBase","forwardRef","_ref","ref","primaryButton","secondaryButton","renderAction","id","className","dataTestId","primaryButtonText","text","_primaryButton$toolti","tooltipProps","primaryButtonTooltipProps","primaryButtonProps","__rest","_a","secondaryButtonText","_a$tooltipProps","secondaryButtonTooltipProps","secondaryButtonProps","React","createElement","Flex","justify","gap","cx","styles","footer","Tooltip","content","Button","Object","assign","kind"],"mappings":"iUAQMA,IAAAA,EAAkBC,GACtB,SAAAC,EAEEC,GACE,IAFAC,EAAaF,EAAbE,cAAeC,EAAeH,EAAfG,gBAAiBC,EAAYJ,EAAZI,aAAcC,EAAEL,EAAFK,GAAIC,EAASN,EAATM,UAA0BC,EAAUP,EAAzB,eAIvDQ,EAGJN,EAHFO,KAAIC,EAGFR,EAFFS,aAAcC,OAAyB,IAAAF,EAAG,CAAE,EAAAA,EACzCG,EAAkBC,EACnBZ,EAJE,CAAA,OAAA,iBAKAa,EAIFZ,GAAmB,CAAE,EAHjBa,EACwCD,EAD9CN,KAAIQ,EAC0CF,EAA9CJ,aAAcO,OAA2B,IAAAD,EAAG,CAAE,EAAAA,EAC3CE,EAAoBL,EAAAC,EAHnB,CAIL,OAAA,iBAED,OACEK,EAAAC,cAACC,EAAI,CACHrB,IAAKA,EACLI,GAAIA,EACJkB,QAAQ,gBACRC,IAAI,QACJlB,UAAWmB,EAAGC,EAAOC,OAAQrB,iBAChBC,GAEba,EAACC,cAAAO,mBAAYhB,EAAyB,CAAEiB,QAASjB,EAA0BiB,UACzET,EAAAC,cAACS,EAAWC,OAAAC,OAAA,CAAA,EAAAnB,GAAqBL,IAElCL,GACCiB,EAAAC,cAACO,EAAOG,OAAAC,OAAA,CAAA,EAAKd,EAA2B,CAAEW,QAASX,EAA4BW,UAC7ET,EAACC,cAAAS,EAAWC,OAAAC,OAAA,CAAA,EAAAb,EAAsB,CAAAc,KAAK,aACpCjB,IAINZ,EAGP"}