@muraldevkit/ui-toolkit 4.68.0-dev-NFbt.1 → 4.68.0-dev-nPeA.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -250
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js +17 -11
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +27 -25
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js +11 -5
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +12 -4
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +13 -6
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js +7 -3
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +24 -28
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +20 -20
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js +21 -21
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +20 -22
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +14 -10
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/actions.js +11 -16
- package/dist/cjs/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/cjs/components/button/helpers.js +4 -6
- package/dist/cjs/components/button/helpers.js.map +1 -1
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +8 -9
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js +14 -7
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js +18 -6
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/cjs/components/empty/default/MrlEmpty.js +8 -4
- package/dist/cjs/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js +8 -4
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js +30 -38
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +7 -3
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js +8 -7
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +9 -3
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +6 -5
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +13 -4
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +11 -7
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js +21 -14
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js +8 -4
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/cjs/components/form/hooks/useActiveColor.js +2 -2
- package/dist/cjs/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/cjs/components/form/hooks/useIsEditable.js +3 -3
- package/dist/cjs/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js +12 -5
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +19 -5
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +42 -31
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +21 -12
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +19 -11
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js +8 -7
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/index.js +4 -3
- package/dist/cjs/components/form/legacy-select/index.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +7 -3
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +11 -5
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js +3 -2
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js.map +1 -1
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js +9 -3
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectOption.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectOption.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js.map +1 -1
- package/dist/cjs/components/form/select/styles/default.js +18 -18
- package/dist/cjs/components/form/select/styles/default.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inline.js +2 -2
- package/dist/cjs/components/form/select/styles/inline.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/cjs/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -7
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +13 -9
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +31 -19
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +28 -23
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -16
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +14 -17
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +16 -9
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/cjs/components/form/utils.js +2 -4
- package/dist/cjs/components/form/utils.js.map +1 -1
- package/dist/cjs/components/grid/MrlCol/MrlCol.js +37 -46
- package/dist/cjs/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js +7 -3
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js.map +1 -1
- package/dist/cjs/components/grid/MrlRow/MrlRow.js +7 -3
- package/dist/cjs/components/grid/MrlRow/MrlRow.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js.map +1 -1
- package/dist/cjs/components/layout/MrlMain/MrlMain.js +9 -3
- package/dist/cjs/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/MrlPage.js +9 -3
- package/dist/cjs/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/index.js +3 -2
- package/dist/cjs/components/layout/MrlPage/index.js.map +1 -1
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +27 -15
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js +10 -3
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/cjs/components/layout/context/LayoutContext.js +7 -6
- package/dist/cjs/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +18 -14
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +13 -9
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/cjs/components/layout/utils.js +2 -2
- package/dist/cjs/components/layout/utils.js.map +1 -1
- package/dist/cjs/components/link/MrlLink/MrlLink.js +13 -4
- package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +16 -14
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js +13 -12
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js +16 -6
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js +16 -4
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +61 -63
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/cjs/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js +4 -3
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +24 -19
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -6
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/cjs/components/menu/context/MrlMenuContext.js +3 -2
- package/dist/cjs/components/menu/context/MrlMenuContext.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js +19 -15
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/cjs/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js +29 -25
- package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js +12 -8
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js +4 -3
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js +13 -6
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js +12 -6
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js +7 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +11 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +26 -19
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js +17 -7
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/cjs/components/notification/MrlToast/MrlToast.js +18 -9
- package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js +7 -3
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +7 -3
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js +8 -4
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +25 -17
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js +3 -2
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js +9 -5
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +8 -4
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +77 -73
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +22 -23
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/cjs/components/portal/MrlPortal.js +5 -4
- package/dist/cjs/components/portal/MrlPortal.js.map +1 -1
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +237 -263
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js +11 -5
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +12 -6
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js +17 -17
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +20 -15
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +78 -96
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js +5 -4
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/cjs/components/table/MrlTable/MrlTable.js +7 -3
- package/dist/cjs/components/table/MrlTable/MrlTable.js.map +1 -1
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js +7 -3
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js.map +1 -1
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js +12 -3
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js +13 -3
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js +7 -3
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js.map +1 -1
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js +7 -3
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js.map +1 -1
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -7
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/cjs/components/table/utils.js +4 -10
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js +16 -9
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js +12 -5
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js +15 -13
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +16 -9
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js +16 -10
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/cjs/components/text/MrlText/MrlText.js +14 -5
- package/dist/cjs/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js +14 -4
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js +17 -8
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +7 -3
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +37 -36
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +13 -4
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js +21 -19
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/cjs/components/tooltip/utils.js +3 -3
- package/dist/cjs/components/tooltip/utils.js.map +1 -1
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js +7 -6
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/cjs/hooks/useBreakpoint/index.js +5 -5
- package/dist/cjs/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/cjs/hooks/useClickOutside/index.js +4 -4
- package/dist/cjs/hooks/useClickOutside/index.js.map +1 -1
- package/dist/cjs/hooks/useCoordinate/index.js +19 -28
- package/dist/cjs/hooks/useCoordinate/index.js.map +1 -1
- package/dist/cjs/hooks/useElementDimensions/index.js +21 -33
- package/dist/cjs/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js +7 -8
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/cjs/hooks/useScrollbarInfo/index.js +11 -10
- package/dist/cjs/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/index.js +20 -22
- package/dist/cjs/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/cjs/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/cjs/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/cjs/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/cjs/utils/frameDebounce/index.js +27 -28
- package/dist/cjs/utils/frameDebounce/index.js.map +1 -1
- package/dist/cjs/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/cjs/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js.map +1 -1
- package/dist/cjs/utils/isImagePath/index.js +4 -3
- package/dist/cjs/utils/isImagePath/index.js.map +1 -1
- package/dist/cjs/utils/isImageUri/index.js +1 -1
- package/dist/cjs/utils/isImageUri/index.js.map +1 -1
- package/dist/cjs/utils/isObject/isObject.js +1 -1
- package/dist/cjs/utils/isObject/isObject.js.map +1 -1
- package/dist/cjs/utils/isTouch/index.js +1 -1
- package/dist/cjs/utils/isTouch/index.js.map +1 -1
- package/dist/cjs/utils/layers/index.js +1 -1
- package/dist/cjs/utils/layers/index.js.map +1 -1
- package/dist/cjs/utils/noop/index.js +1 -1
- package/dist/cjs/utils/noop/index.js.map +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/cjs/utils/setAttributes/setAttributes.js +11 -5
- package/dist/cjs/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/cjs/utils/trapFocus/index.js +9 -11
- package/dist/cjs/utils/trapFocus/index.js.map +1 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -234
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js +12 -10
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +22 -24
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js +6 -4
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +7 -3
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +7 -4
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +18 -26
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +14 -18
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js +16 -20
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +14 -20
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +7 -7
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/actions.js +12 -17
- package/dist/esm/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/esm/components/button/helpers.js +4 -6
- package/dist/esm/components/button/helpers.js.map +1 -1
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js +5 -7
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/esm/components/container/MrlContainer/MrlContainer.js +7 -4
- package/dist/esm/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js +13 -5
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js +28 -37
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js +5 -5
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +4 -2
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +3 -3
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +8 -3
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +2 -2
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/esm/components/form/date-picker/MrlDatePicker.js +15 -12
- package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js +2 -2
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/esm/components/form/hooks/useActiveColor.js +2 -2
- package/dist/esm/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/esm/components/form/hooks/useIsEditable.js +3 -3
- package/dist/esm/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js +6 -3
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +14 -4
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +37 -30
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +16 -11
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +14 -10
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/esm/components/form/legacy-select/context/SelectContext.js +5 -5
- package/dist/esm/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/esm/components/form/legacy-select/index.js +1 -1
- package/dist/esm/components/form/legacy-select/index.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +4 -2
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +2 -2
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +2 -2
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js +4 -2
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/esm/components/form/select/styles/default.js +18 -18
- package/dist/esm/components/form/select/styles/default.js.map +1 -1
- package/dist/esm/components/form/select/styles/inline.js +2 -2
- package/dist/esm/components/form/select/styles/inline.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/esm/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/esm/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +9 -6
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +3 -3
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +25 -17
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +21 -20
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +15 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +8 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +9 -6
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/esm/components/form/utils.js +2 -4
- package/dist/esm/components/form/utils.js.map +1 -1
- package/dist/esm/components/grid/MrlCol/MrlCol.js +31 -44
- package/dist/esm/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/esm/components/layout/MrlMain/MrlMain.js +4 -2
- package/dist/esm/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/esm/components/layout/MrlPage/MrlPage.js +4 -2
- package/dist/esm/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +19 -11
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js +5 -2
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/esm/components/layout/context/LayoutContext.js +4 -4
- package/dist/esm/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/esm/components/layout/utils.js +2 -2
- package/dist/esm/components/layout/utils.js.map +1 -1
- package/dist/esm/components/link/MrlLink/MrlLink.js +8 -3
- package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +9 -11
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js +5 -9
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js +9 -3
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js +11 -3
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js +56 -62
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/esm/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -17
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +2 -2
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js +14 -14
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/esm/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -22
- package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js +5 -5
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js +7 -4
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js +7 -5
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +6 -2
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +18 -15
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js +11 -5
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/esm/components/notification/MrlToast/MrlToast.js +14 -9
- package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js +14 -10
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js +2 -2
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js +71 -71
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +19 -21
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/esm/components/portal/MrlPortal.js +2 -2
- package/dist/esm/components/portal/MrlPortal.js.map +1 -1
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +235 -262
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js +6 -4
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +7 -5
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js +7 -11
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +8 -8
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +71 -94
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js +2 -2
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js +7 -2
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js +8 -2
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +7 -5
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/esm/components/table/utils.js +4 -10
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js +11 -8
- package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js +7 -4
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js +8 -10
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +11 -8
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js +11 -9
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/esm/components/text/MrlText/MrlText.js +8 -3
- package/dist/esm/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js +9 -3
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js +12 -7
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +31 -34
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +8 -3
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/index.js +15 -17
- package/dist/esm/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/esm/components/tooltip/utils.js +3 -3
- package/dist/esm/components/tooltip/utils.js.map +1 -1
- package/dist/esm/hooks/useAutoClose/useAutoClose.js +4 -4
- package/dist/esm/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/index.js +5 -5
- package/dist/esm/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/index.js +4 -4
- package/dist/esm/hooks/useClickOutside/index.js.map +1 -1
- package/dist/esm/hooks/useCoordinate/index.js +20 -29
- package/dist/esm/hooks/useCoordinate/index.js.map +1 -1
- package/dist/esm/hooks/useElementDimensions/index.js +19 -32
- package/dist/esm/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/esm/hooks/useHasFocusableDescendant/index.js +4 -6
- package/dist/esm/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/esm/hooks/useScrollbarInfo/index.js +8 -8
- package/dist/esm/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/index.js +14 -20
- package/dist/esm/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/esm/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/esm/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/esm/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/esm/utils/frameDebounce/index.js +28 -29
- package/dist/esm/utils/frameDebounce/index.js.map +1 -1
- package/dist/esm/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/esm/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/esm/utils/isElementScrollable/index.js +1 -1
- package/dist/esm/utils/isElementScrollable/index.js.map +1 -1
- package/dist/esm/utils/isImagePath/index.js +1 -1
- package/dist/esm/utils/isImagePath/index.js.map +1 -1
- package/dist/esm/utils/isImageUri/index.js +1 -1
- package/dist/esm/utils/isImageUri/index.js.map +1 -1
- package/dist/esm/utils/isObject/isObject.js +1 -1
- package/dist/esm/utils/isObject/isObject.js.map +1 -1
- package/dist/esm/utils/isTouch/index.js +1 -1
- package/dist/esm/utils/isTouch/index.js.map +1 -1
- package/dist/esm/utils/layers/index.js +1 -1
- package/dist/esm/utils/layers/index.js.map +1 -1
- package/dist/esm/utils/noop/index.js +1 -1
- package/dist/esm/utils/noop/index.js.map +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/esm/utils/setAttributes/setAttributes.js +7 -5
- package/dist/esm/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/esm/utils/trapFocus/index.js +9 -11
- package/dist/esm/utils/trapFocus/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlMenu.js","sources":["../../../../../src/components/menu/MrlMenu/MrlMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlPortal, PortalProps } from '../../../components';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../hooks/useSubMenuElementPosition';\nimport {\n\tMenuPosition,\n\tMenuAlignment,\n\tActionState,\n\tActionType,\n\tCustomMenuPosition\n} from '../constants';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport {\n\tfindAdjacentInteractiveElement,\n\tpreventDefault,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport classnames from 'classnames';\nimport { MrlMenuContext } from '../context/MrlMenuContext';\nimport styles from './MrlMenu.module.scss';\nimport itemStyles from '../MrlMenuItem/MrlMenuItem.module.scss';\nimport { useTransition, animated } from '@react-spring/web';\nimport { isTouchDevice } from '../../../utils/isTouch';\nimport { getScrollableParent } from '../utilities/get-scrollable-parent';\nimport { useMenuScroll } from '../hooks/useMenuScroll';\n\nexport interface MrlMenuProps {\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode;\n\n\t/** Event to close the menu */\n\tclickOutsideEvent?: 'mousedown' | 'mouseup' | 'click';\n\n\t/**\n\t * Enables closing the menu when scrolling. Default is false.\n\t *\n\t */\n\tcloseOnScroll?: boolean;\n\n\t/**\n\t * Private closeParent prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tcloseParent?: () => void;\n\n\t/**\n\t * Disable arrows from opening the menu\n\t * - This is useful when you want to disable the default browser behavior of opening a menu on arrow down.\n\t *\n\t * Example usage: the menu is within a vertical toolbar and you want to use the arrow keys to navigate the toolbar.\n\t * By using this prop you can disable the arrow key open/close so that navigating the toolbar does not conflict\n\t * with opening/closing the menu.\n\t */\n\tdisableArrowOpen?: boolean;\n\n\t/**\n\t * Disable flipping of the menu when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/**\n\t * Use when the menu is embedded within another component\n\t * Removes the following styles:\n\t * - padding on the menu\n\t * - drop shadow and border\n\t * @default false\n\t */\n\tisInternal?: boolean;\n\n\t/**\n\t * Private isSubMenu prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * spacing of menu\n\t * - compact has less padding\n\t * @default 'default'\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Offset of the menu from the trigger element in pixels\n\t * @default 10px\n\t */\n\tmenuOffset?: number;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t * - position 'left', 'right', 'top', 'bottom' position relative to the trigger\n\t * - position 'static' renders the menu in place, not using the portal\n\t * - position 'ignore' will not position the menu, allowing you to use the customPosition prop to position the element\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLButtonElement>;\n\n\t/**\n\t * Trigger stop propagation on click\n\t *\n\t * In some instances we may want the trigger element to stop propogation to the\n\t * rest of the DOM. Use this flag to enable and disable it.\n\t * @default false\n\t */\n\ttriggerStopPropagation?: boolean;\n\n\t/**\n\t * Vertical and horizontal alignment of the menu relative to the position of the menu with the trigger\n\t * - 'left' and 'right' work with position 'top' and 'bottom'\n\t * - 'top' and 'bottom' work with position 'left' and 'right'\n\t * - 'center' works with all positions\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * Callback to be called when the menu is closed\n\t * @param type - type of close event\n\t */\n\tonClose?: (type?: string) => void;\n}\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]';\n\n/**\n * MrlMenu component\n *\n * Renders a menu component with alignment relative to a trigger element\n * @param {MrlMenuProps} props - The props for the MrlMenu component\n * @returns {Element} - rendered MrlMenu component\n */\nexport function MrlMenu({\n\tactionState = { actionType: null, isOpen: false },\n\talignment = 'center',\n\tchildren,\n\tcloseOnScroll = false,\n\tcloseParent,\n\tcustomPosition,\n\tclickOutsideEvent = 'mouseup',\n\tdisableArrowOpen,\n\tdisableFlipping = false,\n\tid,\n\tisInternal = false,\n\tisSubMenu = false,\n\tspacing = 'default',\n\tmenuOffset = 10,\n\tportalProps = { id: PORTAL_LAYERS.MENU.name },\n\tposition = 'bottom',\n\ttriggerStopPropagation = false,\n\tonClose,\n\ttriggerRef,\n\t...remainingProps\n}: MrlMenuProps): JSX.Element {\n\tconst defaultOpenState = position === 'static' || false;\n\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: defaultOpenState\n\t} as ActionState);\n\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\tconst listRef = React.useRef<HTMLUListElement>(null);\n\tconst [menuItems, setMenuItems] = React.useState<HTMLButtonElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\n\t/**\n\t * Checks if the trigger element is disabled\n\t * @returns {boolean} - true if the trigger element is disabled, false otherwise\n\t */\n\tconst isTriggerDisabled = React.useCallback((): boolean => {\n\t\treturn isElementAriaDisabled(triggerRef?.current);\n\t}, [triggerRef]);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu\n\t * @param e - mouse event\n\t */\n\tconst toggleMenuTrigger = React.useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (isTriggerDisabled()) return;\n\n\t\t\tif (triggerStopPropagation) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\n\t\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t\t},\n\t\t[triggerStopPropagation, isTriggerDisabled]\n\t);\n\n\t/**\n\t * Used to display the menu when hovering over a menu item that has a submenu\n\t */\n\tconst showMenuHover = React.useCallback(() => {\n\t\tsetState({ actionType: 'click', isOpen: true });\n\t}, []);\n\n\tconst showMenuTap = React.useCallback(() => {\n\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t}, []);\n\n\tconst hideMenuHover = React.useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\tconst relatedTarget = event.relatedTarget as Node;\n\n\t\t\t// If the related target is not a child of the menu, close the menu\n\t\t\t// This prevents the menu from closing when hovering over a submenu item or trigger\n\t\t\tif (\n\t\t\t\ttriggerRef &&\n\t\t\t\tmenuRef.current &&\n\t\t\t\t!menuRef.current.contains(relatedTarget) &&\n\t\t\t\ttriggerRef.current &&\n\t\t\t\t!triggerRef.current.contains(relatedTarget)\n\t\t\t) {\n\t\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\t}\n\t\t},\n\t\t[triggerRef]\n\t);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu with a keyboard\n\t */\n\tconst toggleMenuKey = React.useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst openMenu = () => {\n\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t};\n\n\t\t\tif (!state.isOpen) {\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\tswitch (e.key) {\n\t\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tcase 'Enter':\n\t\t\t\t\t\tcase ' ':\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\t\tif (!disableArrowOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Enter':\n\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\topenMenu();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[state.isOpen, isTriggerDisabled, disableArrowOpen, isSubMenu]\n\t);\n\n\tconst closeMenu = React.useCallback(\n\t\t(shouldCloseParent = true) => {\n\t\t\tif (position === 'static') return;\n\n\t\t\t/**\n\t\t\t * What is closeParent?\n\t\t\t *\n\t\t\t * It is passed from the context provider to the MenuItem (which helps render our submenus)\n\t\t\t * When we render the submenu, we pass the closeMenu function as \"closeParent\" to the submenu.\n\t\t\t * This allows us to trigger closing the parent menu when the submenu is closed. And that's\n\t\t\t * what this call is for.\n\t\t\t */\n\t\t\tif (shouldCloseParent && closeParent) closeParent();\n\n\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\tonClose?.();\n\t\t},\n\t\t[position, closeParent, onClose]\n\t);\n\n\t/**\n\t * Click outside to dismiss the menu\n\t * @param e\n\t */\n\tconst disableClickOutside = !state.isOpen || position === 'static';\n\tuseClickOutside(menuRef, triggerRef, clickOutsideEvent, closeMenu, disableClickOutside);\n\n\tconst handleMenuKeyUp = (e: React.KeyboardEvent) => {\n\t\tconst actions: ActionType[] = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'Enter', 'Escape', ' '];\n\n\t\tif (actions.includes(e.key as ActionType)) {\n\t\t\tpreventDefault(e);\n\t\t}\n\t};\n\n\t/**\n\t * Focus management when someone is using a keyboard to navigate the menu\n\t * @param e - keyboard event\n\t */\n\tconst handleMenuKey = (e: React.KeyboardEvent) => {\n\t\tconst currentIndex = menuItems.findIndex((item) => document.activeElement === item);\n\t\tlet nextIndex: number;\n\n\t\tif (state.isOpen) {\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex < menuItems.length - 1 ? currentIndex + 1 : currentIndex;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex > 0 ? currentIndex - 1 : 0;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\ttriggerRef?.current?.focus();\n\t\t\t\t\tcloseMenu(false);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tif (!isSubMenu && position !== 'static') {\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\t// Handle shift + tab: move focus to the previous item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst prevElement = findAdjacentInteractiveElement(triggerRef, 'previous');\n\t\t\t\t\t\t\t\tprevElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Regular tab: close the menu or move to the next item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef);\n\t\t\t\t\t\t\t\tnextElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcloseMenu();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * useEffect hooks to handle menu state changes\n\t */\n\n\tReact.useEffect(() => {\n\t\tif (triggerRef?.current) {\n\t\t\ttriggerRef.current.setAttribute('aria-haspopup', 'menu');\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tReact.useEffect(() => {\n\t\tif (position === 'static') {\n\t\t\tsetState({ actionType: 'click', isOpen: true });\n\t\t}\n\t}, [position]);\n\n\tReact.useEffect(() => {\n\t\ttriggerRef?.current?.setAttribute('aria-expanded', state.isOpen.toString());\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (!isSubMenu && position !== 'static')\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t}, [actionState.isOpen, actionState.actionType, isSubMenu, position]);\n\n\t// setup event handlers for mouse, keyboard, and scroll interactions\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst menuItems = menuElement?.querySelectorAll(MENU_ITEM_SELECTOR);\n\n\t\tlet scrollableParent: HTMLElement | Window;\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', preventDefault);\n\t\t\tif (!isSubMenu) triggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\n\n\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\ttriggerElement.addEventListener('touchend', showMenuTap);\n\t\t\t\t}\n\n\t\t\t\tif (menuElement) {\n\t\t\t\t\tmenuElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\t\tmenuElement.addEventListener('mouseout', hideMenuHover);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (closeOnScroll) {\n\t\t\t\tscrollableParent = getScrollableParent(triggerElement);\n\t\t\t\tif (scrollableParent) {\n\t\t\t\t\tscrollableParent.addEventListener('scroll', () => closeMenu(), {\n\t\t\t\t\t\tcapture: true,\n\t\t\t\t\t\tpassive: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\tif (!isSubMenu) triggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (menuItems) {\n\t\t\t\t\tmenuItems.forEach((item: Element) => {\n\t\t\t\t\t\tif (!item.getAttribute('aria-haspopup')) {\n\t\t\t\t\t\t\titem.removeEventListener('mousedown', () => closeMenu());\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\ttriggerElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\ttriggerElement.removeEventListener('mouseout', hideMenuHover);\n\n\t\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\t\ttriggerElement.removeEventListener('touchstart', showMenuHover);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (menuElement) {\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseout', hideMenuHover);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (closeOnScroll && scrollableParent) {\n\t\t\t\t\tscrollableParent.removeEventListener('scroll', () => closeMenu());\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}, [\n\t\tcloseOnScroll,\n\t\tisSubMenu,\n\t\ttriggerRef,\n\t\ttoggleMenuTrigger,\n\t\ttoggleMenuKey,\n\t\tshowMenuHover,\n\t\thideMenuHover,\n\t\tcloseMenu,\n\t\tshowMenuTap\n\t]);\n\n\t// This use effect handles a few things when we open the menu:\n\t// - making sure that the menu component is aware of it's menu items\n\t// - adding a class to the trigger element when the submenu is open for styling\n\t// - storing the menu rect in state for positioning calculations\n\tReact.useEffect(() => {\n\t\tif (state.isOpen) {\n\t\t\tconst foundMenuItems = Array.from(\n\t\t\t\tmenuRef.current?.querySelectorAll(MENU_ITEM_SELECTOR) || []\n\t\t\t) as HTMLButtonElement[];\n\n\t\t\tsetMenuItems(foundMenuItems);\n\t\t}\n\n\t\tif (state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.add(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t} else if (!state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.remove(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t}\n\n\t\t// For consistent submenu calculations, we are storing the menu rect in state\n\t\t// Anytime we need to use the menu rect, we want to make sure the values are based\n\t\t// on the original state of the menu for proper transformations\n\t\tif (!menuRect && menuRef.current) {\n\t\t\tconst newRect = menuRef.current?.getBoundingClientRect();\n\t\t\tsetMenuRect(newRect || null);\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRect, isSubMenu]);\n\n\t/**\n\t * Focus management for when the menu is opening or closing\n\t */\n\tReact.useEffect(() => {\n\t\tif (menuItems.length > 0) {\n\t\t\tlet menuItemToFocus;\n\n\t\t\tswitch (state.actionType) {\n\t\t\t\tcase 'Enter':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase ' ':\n\t\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tmenuItemToFocus = menuItems[menuItems.length - 1];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\n\t\t\t\t\t// Scroll to the bottom of the menu when the last item is focused\n\t\t\t\t\t// setTimeout is required to ensure the element has been rendered\n\t\t\t\t\t// and the scrollHeight is accurate prior to scrolling\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (listRef.current) {\n\t\t\t\t\t\t\tlistRef.current.scrollTo(0, listRef.current.scrollHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 20);\n\t\t\t}\n\n\t\t\tif (isSubMenu && state.actionType === 'ArrowRight') {\n\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t}\n\t\t}\n\t}, [isSubMenu, menuItems, state.actionType]);\n\n\t/**\n\t * Menu scroll behavior\n\t *\n\t * When the menu cannot fit in the preferred or flipped position,\n\t * this hook constrains the menu height and enables internal scrolling.\n\t * Called before useTriggerPosition so that isScrolling can disable flipping,\n\t * preventing the positioning hook from fighting the scroll constraint.\n\t */\n\tconst disableMenuScroll =\n\t\tisSubMenu || !state.isOpen || position === 'static' || position === 'ignore';\n\n\t/**\n\t * Sets overflow (scrolling) on menu when there is no space to display\n\t * the menu in the preferred or flipped position.\n\t */\n\tconst menuScroll = useMenuScroll(\n\t\ttriggerRef,\n\t\tlistRef,\n\t\tposition,\n\t\tmenuOffset,\n\t\tstate.isOpen,\n\t\tdisableMenuScroll\n\t);\n\n\t/**\n\t * Primary menu positioning, alignment, and transition styling\n\t *\n\t * This hook is only enabled if isSubMenu is FALSE\n\t */\n\tconst disableTriggerPosition = isSubMenu || !state.isOpen || position === 'static';\n\tconst menuPositionStyles = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\tmenuOffset,\n\t\tdisableTriggerPosition,\n\t\tdisableFlipping || menuScroll.isScrolling\n\t);\n\n\t/**\n\t * Submenu positioning and alignment\n\t *\n\t * This hook is only enabled if isSubMenu is TRUE\n\t */\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t// disable the subelement positioning if it's not a submenu\n\t\t!isSubMenu\n\t);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPositionStyles.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPositionStyles.top\n\t\t},\n\t\tsubmenu: {\n\t\t\tleft: subMenuPosition.left,\n\t\t\ttop: subMenuPosition.top\n\t\t}\n\t};\n\n\t/**\n\t * React Spring transitions for the menu\n\t */\n\tconst transitionConfig = {\n\t\tconfig: { duration: state.isOpen ? 300 : 150 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' },\n\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\tleave: { opacity: 0, transform: 'translateY(4px)' }\n\t};\n\n\tconst transitionStatic = {\n\t\tconfig: { duration: 0 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' }\n\t};\n\n\tconst transitions = useTransition(\n\t\tstate.isOpen,\n\t\tposition === 'static' ? transitionStatic : transitionConfig\n\t);\n\n\tconst menuClasses = classnames(styles['MrlMenu'], 'MrlMenu', {\n\t\t[styles['MrlMenu--submenu']]: isSubMenu,\n\t\t[styles.open]: state.isOpen,\n\t\t[styles['MrlMenu--compact']]: spacing === 'compact',\n\t\t[styles['MrlMenu--static']]: position === 'static',\n\t\t[styles['MrlMenu--internal']]: isInternal,\n\t\t[styles['MrlMenu--scrolling']]: menuScroll.isScrolling,\n\t\t[styles['MrlMenu--ignore']]: position === 'ignore'\n\t});\n\n\tconst positionStyles = isSubMenu\n\t\t? inlineStyles.submenu\n\t\t: position !== 'static'\n\t\t\t? inlineStyles.menu\n\t\t\t: {};\n\n\tconst menuScrollStyles =\n\t\t(menuScroll.maxHeight !== undefined && { maxHeight: menuScroll.maxHeight }) || undefined;\n\n\tconst renderMenu = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{transitions(\n\t\t\t\t\t(style, item) =>\n\t\t\t\t\t\titem && (\n\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\tonKeyUp={handleMenuKeyUp}\n\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\trole=\"none\"\n\t\t\t\t\t\t\t\t{...remainingProps}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ul ref={listRef} role=\"menu\" style={menuScrollStyles}>\n\t\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t// For managing and restoring focus to the original menu trigger\n\t// Ensures the triggerRef in context is always the parent triggerRef\n\tconst parentContext = React.useContext(MrlMenuContext);\n\tconst contextTriggerRef = isSubMenu ? parentContext?.triggerRef : triggerRef;\n\n\treturn (\n\t\t<MrlMenuContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu,\n\t\t\t\tcloseParent: !isSubMenu ? closeMenu : undefined,\n\t\t\t\ttriggerRef: contextTriggerRef\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu || position === 'static' ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.MENU} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlMenuContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlMenu.componentType = 'Menu';\n"],"names":["MENU_ITEM_SELECTOR","MrlMenu","_ref","_ref$actionState","actionState","actionType","isOpen","_ref$alignment","alignment","children","_ref$closeOnScroll","closeOnScroll","closeParent","customPosition","_ref$clickOutsideEven","clickOutsideEvent","disableArrowOpen","_ref$disableFlipping","disableFlipping","id","_ref$isInternal","isInternal","_ref$isSubMenu","isSubMenu","_ref$spacing","spacing","_ref$menuOffset","menuOffset","_ref$portalProps","portalProps","PORTAL_LAYERS","MENU","name","_ref$position","position","_ref$triggerStopPropa","triggerStopPropagation","onClose","triggerRef","remainingProps","_objectWithoutProperties","_excluded","defaultOpenState","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","menuRef","useRef","listRef","_React$useState3","_React$useState4","menuItems","setMenuItems","_React$useState5","_React$useState6","menuRect","setMenuRect","isTriggerDisabled","useCallback","isElementAriaDisabled","current","toggleMenuTrigger","e","preventDefault","prevState","showMenuHover","showMenuTap","hideMenuHover","event","relatedTarget","contains","toggleMenuKey","openMenu","key","closeMenu","shouldCloseParent","arguments","length","undefined","disableClickOutside","useClickOutside","handleMenuKeyUp","actions","includes","handleMenuKey","_menuItems$nextIndex","_menuItems$nextIndex2","_triggerRef$current","currentIndex","findIndex","item","document","activeElement","nextIndex","focus","shiftKey","prevElement","findAdjacentInteractiveElement","nextElement","useEffect","setAttribute","_triggerRef$current2","toString","triggerElement","menuElement","querySelectorAll","scrollableParent","addEventListener","isTouchDevice","getScrollableParent","capture","passive","removeEventListener","forEach","getAttribute","_menuRef$current","foundMenuItems","Array","from","_triggerRef$current3","classList","add","itemStyles","_triggerRef$current4","remove","_menuRef$current2","newRect","getBoundingClientRect","_menuItemToFocus","_menuItemToFocus2","menuItemToFocus","setTimeout","scrollTo","scrollHeight","_menuItemToFocus3","disableMenuScroll","menuScroll","useMenuScroll","disableTriggerPosition","menuPositionStyles","useTriggerPosition","align","isScrolling","subMenuPosition","useSubMenuElementPosition","inlineStyles","menu","left","top","submenu","transitionConfig","config","duration","enter","opacity","transform","leave","transitionStatic","transitions","useTransition","menuClasses","classnames","styles","_defineProperty","open","positionStyles","menuScrollStyles","maxHeight","renderMenu","createElement","Fragment","style","animated","div","_extends","className","_objectSpread","onKeyUp","onKeyDown","ref","role","parentContext","useContext","MrlMenuContext","contextTriggerRef","Provider","value","MrlPortal","layer","componentType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlMenu.js","sources":["../../../../../src/components/menu/MrlMenu/MrlMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlPortal, PortalProps } from '../../../components';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../hooks/useSubMenuElementPosition';\nimport {\n\tMenuPosition,\n\tMenuAlignment,\n\tActionState,\n\tActionType,\n\tCustomMenuPosition\n} from '../constants';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport {\n\tfindAdjacentInteractiveElement,\n\tpreventDefault,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport classnames from 'classnames';\nimport { MrlMenuContext } from '../context/MrlMenuContext';\nimport styles from './MrlMenu.module.scss';\nimport itemStyles from '../MrlMenuItem/MrlMenuItem.module.scss';\nimport { useTransition, animated } from '@react-spring/web';\nimport { isTouchDevice } from '../../../utils/isTouch';\nimport { getScrollableParent } from '../utilities/get-scrollable-parent';\nimport { useMenuScroll } from '../hooks/useMenuScroll';\n\nexport interface MrlMenuProps {\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode;\n\n\t/** Event to close the menu */\n\tclickOutsideEvent?: 'mousedown' | 'mouseup' | 'click';\n\n\t/**\n\t * Enables closing the menu when scrolling. Default is false.\n\t *\n\t */\n\tcloseOnScroll?: boolean;\n\n\t/**\n\t * Private closeParent prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tcloseParent?: () => void;\n\n\t/**\n\t * Disable arrows from opening the menu\n\t * - This is useful when you want to disable the default browser behavior of opening a menu on arrow down.\n\t *\n\t * Example usage: the menu is within a vertical toolbar and you want to use the arrow keys to navigate the toolbar.\n\t * By using this prop you can disable the arrow key open/close so that navigating the toolbar does not conflict\n\t * with opening/closing the menu.\n\t */\n\tdisableArrowOpen?: boolean;\n\n\t/**\n\t * Disable flipping of the menu when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/**\n\t * Use when the menu is embedded within another component\n\t * Removes the following styles:\n\t * - padding on the menu\n\t * - drop shadow and border\n\t * @default false\n\t */\n\tisInternal?: boolean;\n\n\t/**\n\t * Private isSubMenu prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * spacing of menu\n\t * - compact has less padding\n\t * @default 'default'\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Offset of the menu from the trigger element in pixels\n\t * @default 10px\n\t */\n\tmenuOffset?: number;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t * - position 'left', 'right', 'top', 'bottom' position relative to the trigger\n\t * - position 'static' renders the menu in place, not using the portal\n\t * - position 'ignore' will not position the menu, allowing you to use the customPosition prop to position the element\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLButtonElement>;\n\n\t/**\n\t * Trigger stop propagation on click\n\t *\n\t * In some instances we may want the trigger element to stop propogation to the\n\t * rest of the DOM. Use this flag to enable and disable it.\n\t * @default false\n\t */\n\ttriggerStopPropagation?: boolean;\n\n\t/**\n\t * Vertical and horizontal alignment of the menu relative to the position of the menu with the trigger\n\t * - 'left' and 'right' work with position 'top' and 'bottom'\n\t * - 'top' and 'bottom' work with position 'left' and 'right'\n\t * - 'center' works with all positions\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * Callback to be called when the menu is closed\n\t * @param type - type of close event\n\t */\n\tonClose?: (type?: string) => void;\n}\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]';\n\n/**\n * MrlMenu component\n *\n * Renders a menu component with alignment relative to a trigger element\n * @param {MrlMenuProps} props - The props for the MrlMenu component\n * @returns {Element} - rendered MrlMenu component\n */\nexport function MrlMenu({\n\tactionState = { actionType: null, isOpen: false },\n\talignment = 'center',\n\tchildren,\n\tcloseOnScroll = false,\n\tcloseParent,\n\tcustomPosition,\n\tclickOutsideEvent = 'mouseup',\n\tdisableArrowOpen,\n\tdisableFlipping = false,\n\tid,\n\tisInternal = false,\n\tisSubMenu = false,\n\tspacing = 'default',\n\tmenuOffset = 10,\n\tportalProps = { id: PORTAL_LAYERS.MENU.name },\n\tposition = 'bottom',\n\ttriggerStopPropagation = false,\n\tonClose,\n\ttriggerRef,\n\t...remainingProps\n}: MrlMenuProps): JSX.Element {\n\tconst defaultOpenState = position === 'static' || false;\n\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: defaultOpenState\n\t} as ActionState);\n\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\tconst listRef = React.useRef<HTMLUListElement>(null);\n\tconst [menuItems, setMenuItems] = React.useState<HTMLButtonElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\n\t/**\n\t * Checks if the trigger element is disabled\n\t * @returns {boolean} - true if the trigger element is disabled, false otherwise\n\t */\n\tconst isTriggerDisabled = React.useCallback((): boolean => {\n\t\treturn isElementAriaDisabled(triggerRef?.current);\n\t}, [triggerRef]);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu\n\t * @param e - mouse event\n\t */\n\tconst toggleMenuTrigger = React.useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (isTriggerDisabled()) return;\n\n\t\t\tif (triggerStopPropagation) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\n\t\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t\t},\n\t\t[triggerStopPropagation, isTriggerDisabled]\n\t);\n\n\t/**\n\t * Used to display the menu when hovering over a menu item that has a submenu\n\t */\n\tconst showMenuHover = React.useCallback(() => {\n\t\tsetState({ actionType: 'click', isOpen: true });\n\t}, []);\n\n\tconst showMenuTap = React.useCallback(() => {\n\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t}, []);\n\n\tconst hideMenuHover = React.useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\tconst relatedTarget = event.relatedTarget as Node;\n\n\t\t\t// If the related target is not a child of the menu, close the menu\n\t\t\t// This prevents the menu from closing when hovering over a submenu item or trigger\n\t\t\tif (\n\t\t\t\ttriggerRef &&\n\t\t\t\tmenuRef.current &&\n\t\t\t\t!menuRef.current.contains(relatedTarget) &&\n\t\t\t\ttriggerRef.current &&\n\t\t\t\t!triggerRef.current.contains(relatedTarget)\n\t\t\t) {\n\t\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\t}\n\t\t},\n\t\t[triggerRef]\n\t);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu with a keyboard\n\t */\n\tconst toggleMenuKey = React.useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst openMenu = () => {\n\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t};\n\n\t\t\tif (!state.isOpen) {\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\tswitch (e.key) {\n\t\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tcase 'Enter':\n\t\t\t\t\t\tcase ' ':\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\t\tif (!disableArrowOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Enter':\n\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\topenMenu();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[state.isOpen, isTriggerDisabled, disableArrowOpen, isSubMenu]\n\t);\n\n\tconst closeMenu = React.useCallback(\n\t\t(shouldCloseParent = true) => {\n\t\t\tif (position === 'static') return;\n\n\t\t\t/**\n\t\t\t * What is closeParent?\n\t\t\t *\n\t\t\t * It is passed from the context provider to the MenuItem (which helps render our submenus)\n\t\t\t * When we render the submenu, we pass the closeMenu function as \"closeParent\" to the submenu.\n\t\t\t * This allows us to trigger closing the parent menu when the submenu is closed. And that's\n\t\t\t * what this call is for.\n\t\t\t */\n\t\t\tif (shouldCloseParent && closeParent) closeParent();\n\n\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\tonClose?.();\n\t\t},\n\t\t[position, closeParent, onClose]\n\t);\n\n\t/**\n\t * Click outside to dismiss the menu\n\t * @param e\n\t */\n\tconst disableClickOutside = !state.isOpen || position === 'static';\n\tuseClickOutside(menuRef, triggerRef, clickOutsideEvent, closeMenu, disableClickOutside);\n\n\tconst handleMenuKeyUp = (e: React.KeyboardEvent) => {\n\t\tconst actions: ActionType[] = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'Enter', 'Escape', ' '];\n\n\t\tif (actions.includes(e.key as ActionType)) {\n\t\t\tpreventDefault(e);\n\t\t}\n\t};\n\n\t/**\n\t * Focus management when someone is using a keyboard to navigate the menu\n\t * @param e - keyboard event\n\t */\n\tconst handleMenuKey = (e: React.KeyboardEvent) => {\n\t\tconst currentIndex = menuItems.findIndex((item) => document.activeElement === item);\n\t\tlet nextIndex: number;\n\n\t\tif (state.isOpen) {\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex < menuItems.length - 1 ? currentIndex + 1 : currentIndex;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex > 0 ? currentIndex - 1 : 0;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\ttriggerRef?.current?.focus();\n\t\t\t\t\tcloseMenu(false);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tif (!isSubMenu && position !== 'static') {\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\t// Handle shift + tab: move focus to the previous item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst prevElement = findAdjacentInteractiveElement(triggerRef, 'previous');\n\t\t\t\t\t\t\t\tprevElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Regular tab: close the menu or move to the next item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef);\n\t\t\t\t\t\t\t\tnextElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcloseMenu();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * useEffect hooks to handle menu state changes\n\t */\n\n\tReact.useEffect(() => {\n\t\tif (triggerRef?.current) {\n\t\t\ttriggerRef.current.setAttribute('aria-haspopup', 'menu');\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tReact.useEffect(() => {\n\t\tif (position === 'static') {\n\t\t\tsetState({ actionType: 'click', isOpen: true });\n\t\t}\n\t}, [position]);\n\n\tReact.useEffect(() => {\n\t\ttriggerRef?.current?.setAttribute('aria-expanded', state.isOpen.toString());\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (!isSubMenu && position !== 'static')\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t}, [actionState.isOpen, actionState.actionType, isSubMenu, position]);\n\n\t// setup event handlers for mouse, keyboard, and scroll interactions\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst menuItems = menuElement?.querySelectorAll(MENU_ITEM_SELECTOR);\n\n\t\tlet scrollableParent: HTMLElement | Window;\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', preventDefault);\n\t\t\tif (!isSubMenu) triggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\n\n\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\ttriggerElement.addEventListener('touchend', showMenuTap);\n\t\t\t\t}\n\n\t\t\t\tif (menuElement) {\n\t\t\t\t\tmenuElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\t\tmenuElement.addEventListener('mouseout', hideMenuHover);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (closeOnScroll) {\n\t\t\t\tscrollableParent = getScrollableParent(triggerElement);\n\t\t\t\tif (scrollableParent) {\n\t\t\t\t\tscrollableParent.addEventListener('scroll', () => closeMenu(), {\n\t\t\t\t\t\tcapture: true,\n\t\t\t\t\t\tpassive: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\tif (!isSubMenu) triggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (menuItems) {\n\t\t\t\t\tmenuItems.forEach((item: Element) => {\n\t\t\t\t\t\tif (!item.getAttribute('aria-haspopup')) {\n\t\t\t\t\t\t\titem.removeEventListener('mousedown', () => closeMenu());\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\ttriggerElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\ttriggerElement.removeEventListener('mouseout', hideMenuHover);\n\n\t\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\t\ttriggerElement.removeEventListener('touchstart', showMenuHover);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (menuElement) {\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseout', hideMenuHover);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (closeOnScroll && scrollableParent) {\n\t\t\t\t\tscrollableParent.removeEventListener('scroll', () => closeMenu());\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}, [\n\t\tcloseOnScroll,\n\t\tisSubMenu,\n\t\ttriggerRef,\n\t\ttoggleMenuTrigger,\n\t\ttoggleMenuKey,\n\t\tshowMenuHover,\n\t\thideMenuHover,\n\t\tcloseMenu,\n\t\tshowMenuTap\n\t]);\n\n\t// This use effect handles a few things when we open the menu:\n\t// - making sure that the menu component is aware of it's menu items\n\t// - adding a class to the trigger element when the submenu is open for styling\n\t// - storing the menu rect in state for positioning calculations\n\tReact.useEffect(() => {\n\t\tif (state.isOpen) {\n\t\t\tconst foundMenuItems = Array.from(\n\t\t\t\tmenuRef.current?.querySelectorAll(MENU_ITEM_SELECTOR) || []\n\t\t\t) as HTMLButtonElement[];\n\n\t\t\tsetMenuItems(foundMenuItems);\n\t\t}\n\n\t\tif (state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.add(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t} else if (!state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.remove(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t}\n\n\t\t// For consistent submenu calculations, we are storing the menu rect in state\n\t\t// Anytime we need to use the menu rect, we want to make sure the values are based\n\t\t// on the original state of the menu for proper transformations\n\t\tif (!menuRect && menuRef.current) {\n\t\t\tconst newRect = menuRef.current?.getBoundingClientRect();\n\t\t\tsetMenuRect(newRect || null);\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRect, isSubMenu]);\n\n\t/**\n\t * Focus management for when the menu is opening or closing\n\t */\n\tReact.useEffect(() => {\n\t\tif (menuItems.length > 0) {\n\t\t\tlet menuItemToFocus;\n\n\t\t\tswitch (state.actionType) {\n\t\t\t\tcase 'Enter':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase ' ':\n\t\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tmenuItemToFocus = menuItems[menuItems.length - 1];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\n\t\t\t\t\t// Scroll to the bottom of the menu when the last item is focused\n\t\t\t\t\t// setTimeout is required to ensure the element has been rendered\n\t\t\t\t\t// and the scrollHeight is accurate prior to scrolling\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (listRef.current) {\n\t\t\t\t\t\t\tlistRef.current.scrollTo(0, listRef.current.scrollHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 20);\n\t\t\t}\n\n\t\t\tif (isSubMenu && state.actionType === 'ArrowRight') {\n\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t}\n\t\t}\n\t}, [isSubMenu, menuItems, state.actionType]);\n\n\t/**\n\t * Menu scroll behavior\n\t *\n\t * When the menu cannot fit in the preferred or flipped position,\n\t * this hook constrains the menu height and enables internal scrolling.\n\t * Called before useTriggerPosition so that isScrolling can disable flipping,\n\t * preventing the positioning hook from fighting the scroll constraint.\n\t */\n\tconst disableMenuScroll =\n\t\tisSubMenu || !state.isOpen || position === 'static' || position === 'ignore';\n\n\t/**\n\t * Sets overflow (scrolling) on menu when there is no space to display\n\t * the menu in the preferred or flipped position.\n\t */\n\tconst menuScroll = useMenuScroll(\n\t\ttriggerRef,\n\t\tlistRef,\n\t\tposition,\n\t\tmenuOffset,\n\t\tstate.isOpen,\n\t\tdisableMenuScroll\n\t);\n\n\t/**\n\t * Primary menu positioning, alignment, and transition styling\n\t *\n\t * This hook is only enabled if isSubMenu is FALSE\n\t */\n\tconst disableTriggerPosition = isSubMenu || !state.isOpen || position === 'static';\n\tconst menuPositionStyles = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\tmenuOffset,\n\t\tdisableTriggerPosition,\n\t\tdisableFlipping || menuScroll.isScrolling\n\t);\n\n\t/**\n\t * Submenu positioning and alignment\n\t *\n\t * This hook is only enabled if isSubMenu is TRUE\n\t */\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t// disable the subelement positioning if it's not a submenu\n\t\t!isSubMenu\n\t);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPositionStyles.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPositionStyles.top\n\t\t},\n\t\tsubmenu: {\n\t\t\tleft: subMenuPosition.left,\n\t\t\ttop: subMenuPosition.top\n\t\t}\n\t};\n\n\t/**\n\t * React Spring transitions for the menu\n\t */\n\tconst transitionConfig = {\n\t\tconfig: { duration: state.isOpen ? 300 : 150 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' },\n\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\tleave: { opacity: 0, transform: 'translateY(4px)' }\n\t};\n\n\tconst transitionStatic = {\n\t\tconfig: { duration: 0 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' }\n\t};\n\n\tconst transitions = useTransition(\n\t\tstate.isOpen,\n\t\tposition === 'static' ? transitionStatic : transitionConfig\n\t);\n\n\tconst menuClasses = classnames(styles['MrlMenu'], 'MrlMenu', {\n\t\t[styles['MrlMenu--submenu']]: isSubMenu,\n\t\t[styles.open]: state.isOpen,\n\t\t[styles['MrlMenu--compact']]: spacing === 'compact',\n\t\t[styles['MrlMenu--static']]: position === 'static',\n\t\t[styles['MrlMenu--internal']]: isInternal,\n\t\t[styles['MrlMenu--scrolling']]: menuScroll.isScrolling,\n\t\t[styles['MrlMenu--ignore']]: position === 'ignore'\n\t});\n\n\tconst positionStyles = isSubMenu\n\t\t? inlineStyles.submenu\n\t\t: position !== 'static'\n\t\t\t? inlineStyles.menu\n\t\t\t: {};\n\n\tconst menuScrollStyles =\n\t\t(menuScroll.maxHeight !== undefined && { maxHeight: menuScroll.maxHeight }) || undefined;\n\n\tconst renderMenu = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{transitions(\n\t\t\t\t\t(style, item) =>\n\t\t\t\t\t\titem && (\n\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\tonKeyUp={handleMenuKeyUp}\n\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\trole=\"none\"\n\t\t\t\t\t\t\t\t{...remainingProps}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ul ref={listRef} role=\"menu\" style={menuScrollStyles}>\n\t\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t// For managing and restoring focus to the original menu trigger\n\t// Ensures the triggerRef in context is always the parent triggerRef\n\tconst parentContext = React.useContext(MrlMenuContext);\n\tconst contextTriggerRef = isSubMenu ? parentContext?.triggerRef : triggerRef;\n\n\treturn (\n\t\t<MrlMenuContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu,\n\t\t\t\tcloseParent: !isSubMenu ? closeMenu : undefined,\n\t\t\t\ttriggerRef: contextTriggerRef\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu || position === 'static' ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.MENU} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlMenuContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlMenu.componentType = 'Menu';\n"],"names":["MENU_ITEM_SELECTOR","MrlMenu","_ref","_ref$actionState","actionState","actionType","isOpen","_ref$alignment","alignment","children","_ref$closeOnScroll","closeOnScroll","closeParent","customPosition","_ref$clickOutsideEven","clickOutsideEvent","disableArrowOpen","_ref$disableFlipping","disableFlipping","id","_ref$isInternal","isInternal","_ref$isSubMenu","isSubMenu","_ref$spacing","spacing","_ref$menuOffset","menuOffset","_ref$portalProps","portalProps","PORTAL_LAYERS","MENU","name","_ref$position","position","_ref$triggerStopPropa","triggerStopPropagation","onClose","triggerRef","remainingProps","_objectWithoutProperties","_excluded","defaultOpenState","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","menuRef","useRef","listRef","_React$useState3","_React$useState4","menuItems","setMenuItems","_React$useState5","_React$useState6","menuRect","setMenuRect","isTriggerDisabled","useCallback","isElementAriaDisabled","current","toggleMenuTrigger","e","preventDefault","prevState","showMenuHover","showMenuTap","hideMenuHover","event","relatedTarget","contains","toggleMenuKey","openMenu","key","closeMenu","shouldCloseParent","arguments","length","undefined","disableClickOutside","useClickOutside","handleMenuKeyUp","actions","includes","handleMenuKey","_menuItems$nextIndex","_menuItems$nextIndex2","_triggerRef$current","currentIndex","findIndex","item","document","activeElement","nextIndex","focus","shiftKey","prevElement","findAdjacentInteractiveElement","nextElement","useEffect","setAttribute","_triggerRef$current2","toString","triggerElement","menuElement","querySelectorAll","scrollableParent","addEventListener","isTouchDevice","getScrollableParent","capture","passive","removeEventListener","forEach","getAttribute","_menuRef$current","foundMenuItems","Array","from","_triggerRef$current3","classList","add","itemStyles","_triggerRef$current4","remove","_menuRef$current2","newRect","getBoundingClientRect","_menuItemToFocus","_menuItemToFocus2","menuItemToFocus","setTimeout","scrollTo","scrollHeight","_menuItemToFocus3","disableMenuScroll","menuScroll","useMenuScroll","disableTriggerPosition","menuPositionStyles","useTriggerPosition","align","isScrolling","subMenuPosition","useSubMenuElementPosition","inlineStyles","menu","left","top","submenu","transitionConfig","config","duration","enter","opacity","transform","leave","transitionStatic","transitions","useTransition","menuClasses","classnames","styles","open","positionStyles","menuScrollStyles","maxHeight","renderMenu","createElement","Fragment","style","animated","div","_extends","className","_objectSpread","onKeyUp","onKeyDown","ref","role","parentContext","useContext","MrlMenuContext","contextTriggerRef","Provider","value","MrlPortal","layer","componentType"],"mappings":"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"}
|
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
* @param el - The element to start searching from
|
|
7
7
|
* @returns The closest menu parent or null if none is found
|
|
8
8
|
*/
|
|
9
|
-
var findClosestMenuParent =
|
|
10
|
-
return el === null || el === void 0 ? void 0 : el.closest('[role="menu"]');
|
|
11
|
-
};
|
|
9
|
+
var findClosestMenuParent = el => el === null || el === void 0 ? void 0 : el.closest('[role="menu"]');
|
|
12
10
|
|
|
13
11
|
/**
|
|
14
12
|
* Calculate the horizontal positioning of the submenu
|
|
@@ -19,7 +17,7 @@ var findClosestMenuParent = function findClosestMenuParent(el) {
|
|
|
19
17
|
* @param triggerRef - The ref of the trigger element
|
|
20
18
|
* @returns The left position of the menu
|
|
21
19
|
*/
|
|
22
|
-
var calculateLeftPosition =
|
|
20
|
+
var calculateLeftPosition = (overlapsRight, overlapsLeft, menuRect, triggerRef) => {
|
|
23
21
|
if (overlapsRight && overlapsLeft) {
|
|
24
22
|
// if we overlap on the left and right, provide an offset value so the menu
|
|
25
23
|
// isn't flush left with the trigger element (per design specs)
|
|
@@ -46,7 +44,7 @@ var calculateLeftPosition = function calculateLeftPosition(overlapsRight, overla
|
|
|
46
44
|
* @param triggerRect - The bounding rectangle of the trigger element
|
|
47
45
|
* @returns The top position of the menu
|
|
48
46
|
*/
|
|
49
|
-
var calculateTopPosition =
|
|
47
|
+
var calculateTopPosition = (overlapsRight, overlapsLeft, triggerRef, menuRect, parentMenu, triggerRect) => {
|
|
50
48
|
if (triggerRef.current) {
|
|
51
49
|
var parentContainer = parentMenu.parentElement;
|
|
52
50
|
if (parentContainer) {
|
|
@@ -77,7 +75,7 @@ var calculateTopPosition = function calculateTopPosition(overlapsRight, overlaps
|
|
|
77
75
|
* @param element - The element to check
|
|
78
76
|
* @returns Whether the element has overflow-y set to auto
|
|
79
77
|
*/
|
|
80
|
-
var hasOverflowY =
|
|
78
|
+
var hasOverflowY = element => {
|
|
81
79
|
var style = window.getComputedStyle(element);
|
|
82
80
|
return style.overflowY === 'auto';
|
|
83
81
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sources":["../../../../../src/components/menu/MrlMenu/utilities.ts"],"sourcesContent":["/**\n * Find the closest menu parent of an element\n *\n * @param el - The element to start searching from\n * @returns The closest menu parent or null if none is found\n */\nexport const findClosestMenuParent = (el: HTMLElement | null): HTMLElement | null | undefined =>\n\tel?.closest('[role=\"menu\"]');\n\n/**\n * Calculate the horizontal positioning of the submenu\n *\n * @param overlapsRight - Whether the menu overlaps the right side of the screen\n * @param overlapsLeft - Whether the menu overlaps the left side of the screen\n * @param menuRect - The bounding rectangle of the menu\n * @param triggerRef - The ref of the trigger element\n * @returns The left position of the menu\n */\nexport const calculateLeftPosition = (\n\toverlapsRight: boolean,\n\toverlapsLeft: boolean,\n\tmenuRect: DOMRect,\n\ttriggerRef: React.RefObject<HTMLElement>\n): string => {\n\tif (overlapsRight && overlapsLeft) {\n\t\t// if we overlap on the left and right, provide an offset value so the menu\n\t\t// isn't flush left with the trigger element (per design specs)\n\t\treturn '55px';\n\t} else if (overlapsRight) {\n\t\t// if we overlap on the right, move the menu to the left side of the trigger\n\t\treturn `-${menuRect.width - 5}px`;\n\t} else if (triggerRef.current) {\n\t\t// otherwise display on the right\n\t\treturn `${triggerRef.current?.clientWidth + 13}px`;\n\t}\n\n\treturn '0';\n};\n\n/**\n * Calculate vertical positioning of the submenu\n *\n * @param overlapsRight - Whether the menu overlaps the right side of the screen\n * @param overlapsLeft - Whether the menu overlaps the left side of the screen\n * @param triggerRef - The ref of the trigger element\n * @param menuRect - The bounding rectangle of the menu\n * @param parentMenu - The parent menu element\n * @param triggerRect - The bounding rectangle of the trigger element\n * @returns The top position of the menu\n */\nexport const calculateTopPosition = (\n\toverlapsRight: boolean,\n\toverlapsLeft: boolean,\n\ttriggerRef: React.RefObject<HTMLElement>,\n\tmenuRect: DOMRect,\n\tparentMenu: HTMLElement,\n\ttriggerRect: DOMRect\n): string => {\n\tif (triggerRef.current) {\n\t\tconst parentContainer = parentMenu.parentElement;\n\n\t\tif (parentContainer) {\n\t\t\tconst menuBottom = triggerRect.top + menuRect.height;\n\t\t\tconst parentRect = parentContainer.getBoundingClientRect();\n\n\t\t\t// if we overlap both left and right, we want to position the menu above or below the trigger\n\t\t\tif (overlapsRight && overlapsLeft) {\n\t\t\t\t// if the menu overlaps and is below the trigger, position it above, otherwise position it below\n\t\t\t\treturn menuBottom > window.innerHeight\n\t\t\t\t\t? `${triggerRef.current.offsetTop - menuRect.height - 21 - parentMenu.scrollTop}px`\n\t\t\t\t\t: `${triggerRef.current.offsetTop + triggerRect.height - parentMenu.scrollTop}px`;\n\t\t\t} else if (menuBottom > parentRect.bottom) {\n\t\t\t\t// if the menu's bottom edge is below the parent container's bottom, align bottom\n\t\t\t\tconst topPosition = parentRect.height - menuRect.height;\n\t\t\t\tconst offset = hasOverflowY(parentMenu) ? 20 : 0;\n\t\t\t\treturn `${topPosition - offset}px`;\n\t\t\t} else {\n\t\t\t\t// otherwise align it with the top of the trigger\n\t\t\t\treturn `${triggerRef.current.offsetTop - parentMenu.scrollTop - 12}px`;\n\t\t\t}\n\t\t}\n\t}\n\treturn '0';\n};\n\n/*\n * Check if an element has overflow-y set to auto\n *\n * @param element - The element to check\n * @returns Whether the element has overflow-y set to auto\n */\nconst hasOverflowY = (element: HTMLElement) => {\n\tconst style = window.getComputedStyle(element);\n\treturn style.overflowY === 'auto';\n};\n"],"names":["findClosestMenuParent","el","closest","calculateLeftPosition","overlapsRight","overlapsLeft","menuRect","triggerRef","concat","width","current","_triggerRef$current","clientWidth","calculateTopPosition","parentMenu","triggerRect","parentContainer","parentElement","menuBottom","top","height","parentRect","getBoundingClientRect","window","innerHeight","offsetTop","scrollTop","bottom","topPosition","offset","hasOverflowY","element","style","getComputedStyle","overflowY"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"utilities.js","sources":["../../../../../src/components/menu/MrlMenu/utilities.ts"],"sourcesContent":["/**\n * Find the closest menu parent of an element\n *\n * @param el - The element to start searching from\n * @returns The closest menu parent or null if none is found\n */\nexport const findClosestMenuParent = (el: HTMLElement | null): HTMLElement | null | undefined =>\n\tel?.closest('[role=\"menu\"]');\n\n/**\n * Calculate the horizontal positioning of the submenu\n *\n * @param overlapsRight - Whether the menu overlaps the right side of the screen\n * @param overlapsLeft - Whether the menu overlaps the left side of the screen\n * @param menuRect - The bounding rectangle of the menu\n * @param triggerRef - The ref of the trigger element\n * @returns The left position of the menu\n */\nexport const calculateLeftPosition = (\n\toverlapsRight: boolean,\n\toverlapsLeft: boolean,\n\tmenuRect: DOMRect,\n\ttriggerRef: React.RefObject<HTMLElement>\n): string => {\n\tif (overlapsRight && overlapsLeft) {\n\t\t// if we overlap on the left and right, provide an offset value so the menu\n\t\t// isn't flush left with the trigger element (per design specs)\n\t\treturn '55px';\n\t} else if (overlapsRight) {\n\t\t// if we overlap on the right, move the menu to the left side of the trigger\n\t\treturn `-${menuRect.width - 5}px`;\n\t} else if (triggerRef.current) {\n\t\t// otherwise display on the right\n\t\treturn `${triggerRef.current?.clientWidth + 13}px`;\n\t}\n\n\treturn '0';\n};\n\n/**\n * Calculate vertical positioning of the submenu\n *\n * @param overlapsRight - Whether the menu overlaps the right side of the screen\n * @param overlapsLeft - Whether the menu overlaps the left side of the screen\n * @param triggerRef - The ref of the trigger element\n * @param menuRect - The bounding rectangle of the menu\n * @param parentMenu - The parent menu element\n * @param triggerRect - The bounding rectangle of the trigger element\n * @returns The top position of the menu\n */\nexport const calculateTopPosition = (\n\toverlapsRight: boolean,\n\toverlapsLeft: boolean,\n\ttriggerRef: React.RefObject<HTMLElement>,\n\tmenuRect: DOMRect,\n\tparentMenu: HTMLElement,\n\ttriggerRect: DOMRect\n): string => {\n\tif (triggerRef.current) {\n\t\tconst parentContainer = parentMenu.parentElement;\n\n\t\tif (parentContainer) {\n\t\t\tconst menuBottom = triggerRect.top + menuRect.height;\n\t\t\tconst parentRect = parentContainer.getBoundingClientRect();\n\n\t\t\t// if we overlap both left and right, we want to position the menu above or below the trigger\n\t\t\tif (overlapsRight && overlapsLeft) {\n\t\t\t\t// if the menu overlaps and is below the trigger, position it above, otherwise position it below\n\t\t\t\treturn menuBottom > window.innerHeight\n\t\t\t\t\t? `${triggerRef.current.offsetTop - menuRect.height - 21 - parentMenu.scrollTop}px`\n\t\t\t\t\t: `${triggerRef.current.offsetTop + triggerRect.height - parentMenu.scrollTop}px`;\n\t\t\t} else if (menuBottom > parentRect.bottom) {\n\t\t\t\t// if the menu's bottom edge is below the parent container's bottom, align bottom\n\t\t\t\tconst topPosition = parentRect.height - menuRect.height;\n\t\t\t\tconst offset = hasOverflowY(parentMenu) ? 20 : 0;\n\t\t\t\treturn `${topPosition - offset}px`;\n\t\t\t} else {\n\t\t\t\t// otherwise align it with the top of the trigger\n\t\t\t\treturn `${triggerRef.current.offsetTop - parentMenu.scrollTop - 12}px`;\n\t\t\t}\n\t\t}\n\t}\n\treturn '0';\n};\n\n/*\n * Check if an element has overflow-y set to auto\n *\n * @param element - The element to check\n * @returns Whether the element has overflow-y set to auto\n */\nconst hasOverflowY = (element: HTMLElement) => {\n\tconst style = window.getComputedStyle(element);\n\treturn style.overflowY === 'auto';\n};\n"],"names":["findClosestMenuParent","el","closest","calculateLeftPosition","overlapsRight","overlapsLeft","menuRect","triggerRef","concat","width","current","_triggerRef$current","clientWidth","calculateTopPosition","parentMenu","triggerRect","parentContainer","parentElement","menuBottom","top","height","parentRect","getBoundingClientRect","window","innerHeight","offsetTop","scrollTop","bottom","topPosition","offset","hasOverflowY","element","style","getComputedStyle","overflowY"],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@ var MrlMenuGroup_module = require('./MrlMenuGroup.module.scss.js');
|
|
|
6
6
|
var MrlDivider = require('../../divider/MrlDivider/MrlDivider.js');
|
|
7
7
|
var MrlTextHeading = require('../../text/MrlTextHeading/MrlTextHeading.js');
|
|
8
8
|
|
|
9
|
-
function
|
|
9
|
+
function _interopNamespace(e) {
|
|
10
|
+
if (e && e.__esModule) return e;
|
|
10
11
|
var n = Object.create(null);
|
|
11
12
|
if (e) {
|
|
12
13
|
Object.keys(e).forEach(function (k) {
|
|
@@ -23,7 +24,7 @@ function _interopNamespaceDefault(e) {
|
|
|
23
24
|
return Object.freeze(n);
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
var React__namespace = /*#__PURE__*/
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
28
|
|
|
28
29
|
var _excluded = ["children", "divider", "groupLabel"];
|
|
29
30
|
/**
|
|
@@ -31,7 +32,7 @@ var _excluded = ["children", "divider", "groupLabel"];
|
|
|
31
32
|
* @param props - component properties
|
|
32
33
|
* @returns JSX.Element
|
|
33
34
|
*/
|
|
34
|
-
var MrlMenuGroup =
|
|
35
|
+
var MrlMenuGroup = _ref => {
|
|
35
36
|
var children = _ref.children,
|
|
36
37
|
_ref$divider = _ref.divider,
|
|
37
38
|
divider = _ref$divider === void 0 ? true : _ref$divider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlMenuGroup.js","sources":["../../../../../src/components/menu/MrlMenuGroup/MrlMenuGroup.tsx"],"sourcesContent":["import { MrlTextHeading } from '../../text';\nimport { MrlDivider } from '../../divider';\nimport * as React from 'react';\nimport styles from './MrlMenuGroup.module.scss';\n\nexport interface MrlMenuGroupPropTypes {\n\tchildren: React.ReactNode;\n\tdivider?: boolean;\n\tgroupLabel?: string;\n}\n\n/**\n * MrlMenuGroup\n * @param props - component properties\n * @returns JSX.Element\n */\nexport const MrlMenuGroup = ({\n\tchildren,\n\tdivider = true,\n\tgroupLabel,\n\t...rest\n}: MrlMenuGroupPropTypes): JSX.Element => {\n\treturn (\n\t\t<li role=\"none\" {...rest}>\n\t\t\t{groupLabel && (\n\t\t\t\t<MrlTextHeading\n\t\t\t\t\tattrs={{\n\t\t\t\t\t\tclassName: styles['MrlMenuGroup--label']\n\t\t\t\t\t}}\n\t\t\t\t\thierarchy=\"primary\"\n\t\t\t\t\tkind=\"title\"\n\t\t\t\t\tlevel=\"2\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t>\n\t\t\t\t\t{groupLabel}\n\t\t\t\t</MrlTextHeading>\n\t\t\t)}\n\t\t\t<ul role=\"none\">{children}</ul>\n\t\t\t{divider && <MrlDivider />}\n\t\t</li>\n\t);\n};\n"],"names":["MrlMenuGroup","_ref","children","_ref$divider","divider","groupLabel","rest","_objectWithoutProperties","_excluded","React","createElement","_extends","role","MrlTextHeading","attrs","className","styles","hierarchy","kind","level","size","MrlDivider"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MrlMenuGroup.js","sources":["../../../../../src/components/menu/MrlMenuGroup/MrlMenuGroup.tsx"],"sourcesContent":["import { MrlTextHeading } from '../../text';\nimport { MrlDivider } from '../../divider';\nimport * as React from 'react';\nimport styles from './MrlMenuGroup.module.scss';\n\nexport interface MrlMenuGroupPropTypes {\n\tchildren: React.ReactNode;\n\tdivider?: boolean;\n\tgroupLabel?: string;\n}\n\n/**\n * MrlMenuGroup\n * @param props - component properties\n * @returns JSX.Element\n */\nexport const MrlMenuGroup = ({\n\tchildren,\n\tdivider = true,\n\tgroupLabel,\n\t...rest\n}: MrlMenuGroupPropTypes): JSX.Element => {\n\treturn (\n\t\t<li role=\"none\" {...rest}>\n\t\t\t{groupLabel && (\n\t\t\t\t<MrlTextHeading\n\t\t\t\t\tattrs={{\n\t\t\t\t\t\tclassName: styles['MrlMenuGroup--label']\n\t\t\t\t\t}}\n\t\t\t\t\thierarchy=\"primary\"\n\t\t\t\t\tkind=\"title\"\n\t\t\t\t\tlevel=\"2\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t>\n\t\t\t\t\t{groupLabel}\n\t\t\t\t</MrlTextHeading>\n\t\t\t)}\n\t\t\t<ul role=\"none\">{children}</ul>\n\t\t\t{divider && <MrlDivider />}\n\t\t</li>\n\t);\n};\n"],"names":["MrlMenuGroup","_ref","children","_ref$divider","divider","groupLabel","rest","_objectWithoutProperties","_excluded","React","createElement","_extends","role","MrlTextHeading","attrs","className","styles","hierarchy","kind","level","size","MrlDivider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA;AACA;AACA;AACA;AACA;AACO,IAAMA,YAAY,GAAGC,IAAA,IAKc;AAAA,EAAA,IAJzCC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAAC,YAAA,GAAAF,IAAA,CACRG,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,YAAA;IACdE,UAAU,GAAAJ,IAAA,CAAVI,UAAU;AACPC,IAAAA,IAAI,GAAAC,iDAAA,CAAAN,IAAA,EAAAO,SAAA,CAAA;AAEP,EAAA,oBACCC,gBAAA,CAAAC,aAAA,CAAA,IAAA,EAAAC,iCAAA,CAAA;AAAIC,IAAAA,IAAI,EAAC;GAAM,EAAKN,IAAI,GACtBD,UAAU,iBACVI,gBAAA,CAAAC,aAAA,CAACG,6BAAc,EAAA;AACdC,IAAAA,KAAK,EAAE;MACNC,SAAS,EAAEC,2BAAM,CAAC,qBAAqB;KACtC;AACFC,IAAAA,SAAS,EAAC,SAAS;AACnBC,IAAAA,IAAI,EAAC,OAAO;AACZC,IAAAA,KAAK,EAAC,GAAG;AACTC,IAAAA,IAAI,EAAC;AAAO,GAAA,EAEXf,UACc,CAChB,eACDI,gBAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIE,IAAAA,IAAI,EAAC;AAAM,GAAA,EAAEV,QAAa,CAAC,EAC9BE,OAAO,iBAAIK,gBAAA,CAAAC,aAAA,CAACW,qBAAU,EAAA,IAAE,CACtB,CAAC;AAEP;;;;"}
|
|
@@ -9,7 +9,10 @@ var MrlMenuItem_module = require('./MrlMenuItem.module.scss.js');
|
|
|
9
9
|
var setAttributes = require('../../../utils/setAttributes/setAttributes.js');
|
|
10
10
|
var MrlSvg = require('../../svg/MrlSvg/MrlSvg.js');
|
|
11
11
|
|
|
12
|
-
function
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
function _interopNamespace(e) {
|
|
15
|
+
if (e && e.__esModule) return e;
|
|
13
16
|
var n = Object.create(null);
|
|
14
17
|
if (e) {
|
|
15
18
|
Object.keys(e).forEach(function (k) {
|
|
@@ -26,10 +29,11 @@ function _interopNamespaceDefault(e) {
|
|
|
26
29
|
return Object.freeze(n);
|
|
27
30
|
}
|
|
28
31
|
|
|
29
|
-
var React__namespace = /*#__PURE__*/
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
33
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
30
34
|
|
|
31
35
|
var _excluded = ["ariaDescribedBy", "ariaHasPopup", "children", "className", "dataQa", "disabled", "icon", "id", "onClick", "onMouseOut", "onMouseOver", "role", "selected"];
|
|
32
|
-
var getSubMenuType =
|
|
36
|
+
var getSubMenuType = child => {
|
|
33
37
|
if (/*#__PURE__*/React__namespace.isValidElement(child)) {
|
|
34
38
|
var type = child.type.componentType;
|
|
35
39
|
if (type === 'Menu' || type === 'Popover') {
|
|
@@ -69,7 +73,7 @@ function MrlMenuItem(_ref) {
|
|
|
69
73
|
isSubElement = _React$useState2[0],
|
|
70
74
|
setIsSubElement = _React$useState2[1];
|
|
71
75
|
var isSelectable = role === 'menuitemcheckbox' || role === 'menuitemradio';
|
|
72
|
-
var setFocusItem =
|
|
76
|
+
var setFocusItem = () => {
|
|
73
77
|
var _context$triggerRef;
|
|
74
78
|
if (ariaHasPopup && ariaHasPopup !== 'menu' && context !== null && context !== void 0 && (_context$triggerRef = context.triggerRef) !== null && _context$triggerRef !== void 0 && _context$triggerRef.current) {
|
|
75
79
|
var triggerElement = context.triggerRef.current;
|
|
@@ -79,7 +83,7 @@ function MrlMenuItem(_ref) {
|
|
|
79
83
|
document.body.setAttribute('data-focus-item', triggerElement.id);
|
|
80
84
|
}
|
|
81
85
|
};
|
|
82
|
-
var handleClick =
|
|
86
|
+
var handleClick = e => {
|
|
83
87
|
e.preventDefault();
|
|
84
88
|
e.stopPropagation();
|
|
85
89
|
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
@@ -88,7 +92,7 @@ function MrlMenuItem(_ref) {
|
|
|
88
92
|
context.closeMenu();
|
|
89
93
|
}
|
|
90
94
|
};
|
|
91
|
-
var handleKeyDown =
|
|
95
|
+
var handleKeyDown = e => {
|
|
92
96
|
// WCAG specifices that space key should toggle the selection of a checkbox or radio button
|
|
93
97
|
// but not close the menu. When a user presses the enter key on these items the menu should close.
|
|
94
98
|
if (e.key === ' ' && !disabled) {
|
|
@@ -104,18 +108,18 @@ function MrlMenuItem(_ref) {
|
|
|
104
108
|
}
|
|
105
109
|
}
|
|
106
110
|
};
|
|
107
|
-
var handleDisabled =
|
|
111
|
+
var handleDisabled = e => {
|
|
108
112
|
e.preventDefault();
|
|
109
113
|
e.stopPropagation();
|
|
110
114
|
};
|
|
111
|
-
var handleFocusIn =
|
|
115
|
+
var handleFocusIn = () => {
|
|
112
116
|
onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver();
|
|
113
117
|
};
|
|
114
|
-
var handleFocusOut =
|
|
118
|
+
var handleFocusOut = () => {
|
|
115
119
|
onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut();
|
|
116
120
|
};
|
|
117
|
-
var renderMenu =
|
|
118
|
-
return React__namespace.Children.map(children,
|
|
121
|
+
var renderMenu = () => {
|
|
122
|
+
return React__namespace.Children.map(children, child => {
|
|
119
123
|
if (/*#__PURE__*/React__namespace.isValidElement(child)) {
|
|
120
124
|
var type = child.type.componentType;
|
|
121
125
|
if (type === 'Menu') {
|
|
@@ -139,22 +143,23 @@ function MrlMenuItem(_ref) {
|
|
|
139
143
|
}
|
|
140
144
|
});
|
|
141
145
|
};
|
|
142
|
-
var renderChildren =
|
|
143
|
-
return React__namespace.Children.map(children,
|
|
146
|
+
var renderChildren = () => {
|
|
147
|
+
return React__namespace.Children.map(children, child => {
|
|
144
148
|
if (!getSubMenuType(child)) {
|
|
145
149
|
return child;
|
|
146
150
|
}
|
|
147
151
|
return null;
|
|
148
152
|
});
|
|
149
153
|
};
|
|
150
|
-
React__namespace.useEffect(
|
|
151
|
-
var hasSubMenu = React__namespace.Children.toArray(children).some(
|
|
152
|
-
return getSubMenuType(child);
|
|
153
|
-
});
|
|
154
|
+
React__namespace.useEffect(() => {
|
|
155
|
+
var hasSubMenu = React__namespace.Children.toArray(children).some(child => getSubMenuType(child));
|
|
154
156
|
setIsSubElement(hasSubMenu);
|
|
155
157
|
}, [children]);
|
|
156
|
-
var menuItemClasses =
|
|
157
|
-
var menuTriggerClasses =
|
|
158
|
+
var menuItemClasses = classnames__default.default(MrlMenuItem_module.default['MrlMenuItem'], 'MrlMenuItem');
|
|
159
|
+
var menuTriggerClasses = classnames__default.default(MrlMenuItem_module.default['MrlMenuItem--item'], 'MrlMenuItem--item', {
|
|
160
|
+
[MrlMenuItem_module.default['MrlMenuItem--item--selected']]: selected,
|
|
161
|
+
[MrlMenuItem_module.default['MrlMenuItem--item--withIcon']]: !!icon
|
|
162
|
+
}, className);
|
|
158
163
|
var rightIcon = isSubElement ? dsIcons.chevronRight : selected ? dsIcons.check : null;
|
|
159
164
|
var hasPopup = isSubElement ? 'menu' : ariaHasPopup ? ariaHasPopup : undefined;
|
|
160
165
|
return /*#__PURE__*/React__namespace.createElement("li", _rollupPluginBabelHelpers.extends({}, rest, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlMenuItem.js","sources":["../../../../../src/components/menu/MrlMenuItem/MrlMenuItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { check, chevronRight } from '@muraldevkit/ds-icons';\nimport classnames from 'classnames';\nimport { DSIconType, getUniqueId, MrlMenuProps, MrlPopoverProps, MrlSvg } from '../../../';\nimport { SubMenuTypes, ComponentWithComponentType, AriaHasPopup, MenuItemRole } from '../constants';\nimport { MrlMenuContext } from '../context/MrlMenuContext';\n\nimport styles from './MrlMenuItem.module.scss';\n\nexport interface MrlMenuItemProps {\n\t/** ID for associated description */\n\tariaDescribedBy?: string;\n\n\t/** Indicates whether the menu item has a popup menu using aria-haspopup attribute */\n\tariaHasPopup?: AriaHasPopup;\n\n\t/**\n\t Children to be rendered within the menu component\n\t */\n\tchildren: React.ReactNode | string;\n\n\t/** Classname for the menu item */\n\tclassName?: string;\n\n\t/** If the menu item is disabled */\n\tdisabled?: boolean;\n\n\t/** Icon for menu item */\n\ticon?: DSIconType;\n\n\t/** Unique ID for the menu item */\n\tid?: string;\n\n\t/** Callback to be called when the menu item is clicked */\n\tonClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/** Callback to be called when the menu item is hovered */\n\tonMouseOver?: (e?: React.MouseEvent) => void;\n\n\t/** Callback to be called when the menu item is hovered out */\n\tonMouseOut?: (e?: React.MouseEvent) => void;\n\n\t/** Data-qa attribute for the menu item */\n\tdataQa?: string;\n\n\t/**\n\t * Role for the menu item\n\t *\n\t * When using `menuitemcheckbox` or `menuitemradio`, the menu item will be treated as a selectable item,\n\t * aria-checked will be set to 'true' or 'false' based on the selected state.\n\t *\n\t * @default 'menuitem' - for regular menu items\n\t * @example 'menuitemcheckbox' - for checkbox menu items\n\t * @example 'menuitemradio' - for radio menu items\n\t */\n\trole?: MenuItemRole;\n\n\t/** If the menu item is selected */\n\tselected?: boolean;\n}\n\nconst getSubMenuType = (child: React.ReactNode): SubMenuTypes | null => {\n\tif (React.isValidElement(child)) {\n\t\tconst type = (child.type as ComponentWithComponentType).componentType;\n\n\t\tif (type === 'Menu' || type === 'Popover') {\n\t\t\treturn type;\n\t\t}\n\t}\n\n\treturn null;\n};\n\n/**\n * MrlMenuItem component\n *\n * Renders a menu item to be used within the MrlMenu component\n * @param {MrlMenuItemProps} props - The props for the MrlMenuItem component\n * @returns {Element} - rendered MrlMenuItem component\n */\nexport function MrlMenuItem({\n\tariaDescribedBy,\n\tariaHasPopup,\n\tchildren,\n\tclassName,\n\tdataQa,\n\tdisabled,\n\ticon,\n\tid,\n\tonClick,\n\tonMouseOut,\n\tonMouseOver,\n\trole = 'menuitem',\n\tselected,\n\t...rest\n}: MrlMenuItemProps): JSX.Element {\n\tconst context = React.useContext(MrlMenuContext);\n\tconst menuItemRef = React.useRef<HTMLButtonElement>(null);\n\tconst [isSubElement, setIsSubElement] = React.useState(false);\n\tconst isSelectable = role === 'menuitemcheckbox' || role === 'menuitemradio';\n\n\tconst setFocusItem = (): void => {\n\t\tif (ariaHasPopup && ariaHasPopup !== 'menu' && context?.triggerRef?.current) {\n\t\t\tconst triggerElement = context.triggerRef.current;\n\t\t\tif (!triggerElement.id) {\n\t\t\t\ttriggerElement.id = getUniqueId('menu-trigger');\n\t\t\t}\n\n\t\t\tdocument.body.setAttribute('data-focus-item', triggerElement.id);\n\t\t}\n\t};\n\n\tconst handleClick = (e: React.MouseEvent<HTMLButtonElement>): void => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tonClick?.(e);\n\n\t\tsetFocusItem();\n\n\t\tif (context && !!context.closeMenu && !isSubElement) {\n\t\t\tcontext.closeMenu();\n\t\t}\n\t};\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>): void => {\n\t\t// WCAG specifices that space key should toggle the selection of a checkbox or radio button\n\t\t// but not close the menu. When a user presses the enter key on these items the menu should close.\n\t\tif (e.key === ' ' && !disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tonClick?.();\n\n\t\t\t// close the menu if we are not a selectable item (checkbox or radio button)\n\t\t\tif (!isSelectable) {\n\t\t\t\tsetFocusItem();\n\t\t\t\tcontext?.closeMenu?.();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleDisabled = (e: React.MouseEvent<HTMLButtonElement>): void => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t};\n\n\tconst handleFocusIn = (): void => {\n\t\tonMouseOver?.();\n\t};\n\n\tconst handleFocusOut = (): void => {\n\t\tonMouseOut?.();\n\t};\n\n\tconst renderMenu = () => {\n\t\treturn React.Children.map(children, (child) => {\n\t\t\tif (React.isValidElement(child)) {\n\t\t\t\tconst type = (child.type as ComponentWithComponentType).componentType;\n\n\t\t\t\tif (type === 'Menu') {\n\t\t\t\t\treturn React.cloneElement(child as React.ReactElement<Partial<MrlMenuProps>>, {\n\t\t\t\t\t\talignment: 'start',\n\t\t\t\t\t\tcloseParent: context?.closeParent,\n\t\t\t\t\t\tisSubMenu: true,\n\t\t\t\t\t\tposition: 'right',\n\t\t\t\t\t\ttriggerRef: menuItemRef\n\t\t\t\t\t});\n\t\t\t\t} else if (type === 'Popover') {\n\t\t\t\t\treturn React.cloneElement(child as React.ReactElement<Partial<MrlPopoverProps>>, {\n\t\t\t\t\t\talignment: 'start',\n\t\t\t\t\t\tisSubMenu: true,\n\t\t\t\t\t\tpoint: false,\n\t\t\t\t\t\tposition: 'right',\n\t\t\t\t\t\ttriggerRef: menuItemRef\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\t};\n\n\tconst renderChildren = () => {\n\t\treturn React.Children.map(children, (child) => {\n\t\t\tif (!getSubMenuType(child)) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t};\n\n\tReact.useEffect(() => {\n\t\tconst hasSubMenu = React.Children.toArray(children).some((child) => getSubMenuType(child));\n\n\t\tsetIsSubElement(hasSubMenu);\n\t}, [children]);\n\n\tconst menuItemClasses = classnames(styles['MrlMenuItem'], 'MrlMenuItem');\n\tconst menuTriggerClasses = classnames(\n\t\tstyles['MrlMenuItem--item'],\n\t\t'MrlMenuItem--item',\n\t\t{\n\t\t\t[styles['MrlMenuItem--item--selected']]: selected,\n\t\t\t[styles['MrlMenuItem--item--withIcon']]: !!icon\n\t\t},\n\t\tclassName\n\t);\n\n\tconst rightIcon = isSubElement ? chevronRight : selected ? check : null;\n\tconst hasPopup = isSubElement ? 'menu' : ariaHasPopup ? ariaHasPopup : undefined;\n\n\treturn (\n\t\t<li {...rest} className={menuItemClasses} data-qa={dataQa}>\n\t\t\t<button\n\t\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t\taria-disabled={disabled}\n\t\t\t\taria-haspopup={hasPopup}\n\t\t\t\t{...(isSelectable ? { 'aria-checked': selected ? 'true' : 'false' } : {})}\n\t\t\t\tdata-selected={selected}\n\t\t\t\tdata-qa={dataQa && `${dataQa}-button`}\n\t\t\t\tid={id}\n\t\t\t\tref={menuItemRef}\n\t\t\t\trole={role}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={disabled ? handleDisabled : handleClick}\n\t\t\t\tonKeyDown={!disabled ? handleKeyDown : undefined}\n\t\t\t\tonMouseOver={!disabled && onMouseOver ? onMouseOver : undefined}\n\t\t\t\tonMouseOut={!disabled && onMouseOut ? onMouseOut : undefined}\n\t\t\t\tonFocus={!disabled && onMouseOver ? handleFocusIn : undefined}\n\t\t\t\tonBlur={!disabled && onMouseOut ? handleFocusOut : undefined}\n\t\t\t\tclassName={menuTriggerClasses}\n\t\t\t>\n\t\t\t\t{isSubElement && <div className={styles['MrlMenuItem--item--hoverArea']} />}\n\t\t\t\t{icon && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-left']}>\n\t\t\t\t\t\t<MrlSvg size=\"small\" svg={icon} />\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{renderChildren()}\n\t\t\t\t{rightIcon && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-right']}>\n\t\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-right-container']}>\n\t\t\t\t\t\t\t<MrlSvg svg={rightIcon} size=\"auto\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</button>\n\t\t\t{renderMenu()}\n\t\t</li>\n\t);\n}\n"],"names":["getSubMenuType","child","React","isValidElement","type","componentType","MrlMenuItem","_ref","ariaDescribedBy","ariaHasPopup","children","className","dataQa","disabled","icon","id","onClick","onMouseOut","onMouseOver","_ref$role","role","selected","rest","_objectWithoutProperties","_excluded","context","useContext","MrlMenuContext","menuItemRef","useRef","_React$useState","useState","_React$useState2","_slicedToArray","isSubElement","setIsSubElement","isSelectable","setFocusItem","_context$triggerRef","triggerRef","current","triggerElement","getUniqueId","document","body","setAttribute","handleClick","e","preventDefault","stopPropagation","closeMenu","handleKeyDown","key","_context$closeMenu","call","handleDisabled","handleFocusIn","handleFocusOut","renderMenu","Children","map","cloneElement","alignment","closeParent","isSubMenu","position","point","renderChildren","useEffect","hasSubMenu","toArray","some","menuItemClasses","classnames","styles","menuTriggerClasses","_defineProperty","rightIcon","chevronRight","check","hasPopup","undefined","createElement","_extends","concat","ref","onKeyDown","onFocus","onBlur","MrlSvg","size","svg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlMenuItem.js","sources":["../../../../../src/components/menu/MrlMenuItem/MrlMenuItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { check, chevronRight } from '@muraldevkit/ds-icons';\nimport classnames from 'classnames';\nimport { DSIconType, getUniqueId, MrlMenuProps, MrlPopoverProps, MrlSvg } from '../../../';\nimport { SubMenuTypes, ComponentWithComponentType, AriaHasPopup, MenuItemRole } from '../constants';\nimport { MrlMenuContext } from '../context/MrlMenuContext';\n\nimport styles from './MrlMenuItem.module.scss';\n\nexport interface MrlMenuItemProps {\n\t/** ID for associated description */\n\tariaDescribedBy?: string;\n\n\t/** Indicates whether the menu item has a popup menu using aria-haspopup attribute */\n\tariaHasPopup?: AriaHasPopup;\n\n\t/**\n\t Children to be rendered within the menu component\n\t */\n\tchildren: React.ReactNode | string;\n\n\t/** Classname for the menu item */\n\tclassName?: string;\n\n\t/** If the menu item is disabled */\n\tdisabled?: boolean;\n\n\t/** Icon for menu item */\n\ticon?: DSIconType;\n\n\t/** Unique ID for the menu item */\n\tid?: string;\n\n\t/** Callback to be called when the menu item is clicked */\n\tonClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/** Callback to be called when the menu item is hovered */\n\tonMouseOver?: (e?: React.MouseEvent) => void;\n\n\t/** Callback to be called when the menu item is hovered out */\n\tonMouseOut?: (e?: React.MouseEvent) => void;\n\n\t/** Data-qa attribute for the menu item */\n\tdataQa?: string;\n\n\t/**\n\t * Role for the menu item\n\t *\n\t * When using `menuitemcheckbox` or `menuitemradio`, the menu item will be treated as a selectable item,\n\t * aria-checked will be set to 'true' or 'false' based on the selected state.\n\t *\n\t * @default 'menuitem' - for regular menu items\n\t * @example 'menuitemcheckbox' - for checkbox menu items\n\t * @example 'menuitemradio' - for radio menu items\n\t */\n\trole?: MenuItemRole;\n\n\t/** If the menu item is selected */\n\tselected?: boolean;\n}\n\nconst getSubMenuType = (child: React.ReactNode): SubMenuTypes | null => {\n\tif (React.isValidElement(child)) {\n\t\tconst type = (child.type as ComponentWithComponentType).componentType;\n\n\t\tif (type === 'Menu' || type === 'Popover') {\n\t\t\treturn type;\n\t\t}\n\t}\n\n\treturn null;\n};\n\n/**\n * MrlMenuItem component\n *\n * Renders a menu item to be used within the MrlMenu component\n * @param {MrlMenuItemProps} props - The props for the MrlMenuItem component\n * @returns {Element} - rendered MrlMenuItem component\n */\nexport function MrlMenuItem({\n\tariaDescribedBy,\n\tariaHasPopup,\n\tchildren,\n\tclassName,\n\tdataQa,\n\tdisabled,\n\ticon,\n\tid,\n\tonClick,\n\tonMouseOut,\n\tonMouseOver,\n\trole = 'menuitem',\n\tselected,\n\t...rest\n}: MrlMenuItemProps): JSX.Element {\n\tconst context = React.useContext(MrlMenuContext);\n\tconst menuItemRef = React.useRef<HTMLButtonElement>(null);\n\tconst [isSubElement, setIsSubElement] = React.useState(false);\n\tconst isSelectable = role === 'menuitemcheckbox' || role === 'menuitemradio';\n\n\tconst setFocusItem = (): void => {\n\t\tif (ariaHasPopup && ariaHasPopup !== 'menu' && context?.triggerRef?.current) {\n\t\t\tconst triggerElement = context.triggerRef.current;\n\t\t\tif (!triggerElement.id) {\n\t\t\t\ttriggerElement.id = getUniqueId('menu-trigger');\n\t\t\t}\n\n\t\t\tdocument.body.setAttribute('data-focus-item', triggerElement.id);\n\t\t}\n\t};\n\n\tconst handleClick = (e: React.MouseEvent<HTMLButtonElement>): void => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tonClick?.(e);\n\n\t\tsetFocusItem();\n\n\t\tif (context && !!context.closeMenu && !isSubElement) {\n\t\t\tcontext.closeMenu();\n\t\t}\n\t};\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>): void => {\n\t\t// WCAG specifices that space key should toggle the selection of a checkbox or radio button\n\t\t// but not close the menu. When a user presses the enter key on these items the menu should close.\n\t\tif (e.key === ' ' && !disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tonClick?.();\n\n\t\t\t// close the menu if we are not a selectable item (checkbox or radio button)\n\t\t\tif (!isSelectable) {\n\t\t\t\tsetFocusItem();\n\t\t\t\tcontext?.closeMenu?.();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleDisabled = (e: React.MouseEvent<HTMLButtonElement>): void => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t};\n\n\tconst handleFocusIn = (): void => {\n\t\tonMouseOver?.();\n\t};\n\n\tconst handleFocusOut = (): void => {\n\t\tonMouseOut?.();\n\t};\n\n\tconst renderMenu = () => {\n\t\treturn React.Children.map(children, (child) => {\n\t\t\tif (React.isValidElement(child)) {\n\t\t\t\tconst type = (child.type as ComponentWithComponentType).componentType;\n\n\t\t\t\tif (type === 'Menu') {\n\t\t\t\t\treturn React.cloneElement(child as React.ReactElement<Partial<MrlMenuProps>>, {\n\t\t\t\t\t\talignment: 'start',\n\t\t\t\t\t\tcloseParent: context?.closeParent,\n\t\t\t\t\t\tisSubMenu: true,\n\t\t\t\t\t\tposition: 'right',\n\t\t\t\t\t\ttriggerRef: menuItemRef\n\t\t\t\t\t});\n\t\t\t\t} else if (type === 'Popover') {\n\t\t\t\t\treturn React.cloneElement(child as React.ReactElement<Partial<MrlPopoverProps>>, {\n\t\t\t\t\t\talignment: 'start',\n\t\t\t\t\t\tisSubMenu: true,\n\t\t\t\t\t\tpoint: false,\n\t\t\t\t\t\tposition: 'right',\n\t\t\t\t\t\ttriggerRef: menuItemRef\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\t};\n\n\tconst renderChildren = () => {\n\t\treturn React.Children.map(children, (child) => {\n\t\t\tif (!getSubMenuType(child)) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t};\n\n\tReact.useEffect(() => {\n\t\tconst hasSubMenu = React.Children.toArray(children).some((child) => getSubMenuType(child));\n\n\t\tsetIsSubElement(hasSubMenu);\n\t}, [children]);\n\n\tconst menuItemClasses = classnames(styles['MrlMenuItem'], 'MrlMenuItem');\n\tconst menuTriggerClasses = classnames(\n\t\tstyles['MrlMenuItem--item'],\n\t\t'MrlMenuItem--item',\n\t\t{\n\t\t\t[styles['MrlMenuItem--item--selected']]: selected,\n\t\t\t[styles['MrlMenuItem--item--withIcon']]: !!icon\n\t\t},\n\t\tclassName\n\t);\n\n\tconst rightIcon = isSubElement ? chevronRight : selected ? check : null;\n\tconst hasPopup = isSubElement ? 'menu' : ariaHasPopup ? ariaHasPopup : undefined;\n\n\treturn (\n\t\t<li {...rest} className={menuItemClasses} data-qa={dataQa}>\n\t\t\t<button\n\t\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t\taria-disabled={disabled}\n\t\t\t\taria-haspopup={hasPopup}\n\t\t\t\t{...(isSelectable ? { 'aria-checked': selected ? 'true' : 'false' } : {})}\n\t\t\t\tdata-selected={selected}\n\t\t\t\tdata-qa={dataQa && `${dataQa}-button`}\n\t\t\t\tid={id}\n\t\t\t\tref={menuItemRef}\n\t\t\t\trole={role}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={disabled ? handleDisabled : handleClick}\n\t\t\t\tonKeyDown={!disabled ? handleKeyDown : undefined}\n\t\t\t\tonMouseOver={!disabled && onMouseOver ? onMouseOver : undefined}\n\t\t\t\tonMouseOut={!disabled && onMouseOut ? onMouseOut : undefined}\n\t\t\t\tonFocus={!disabled && onMouseOver ? handleFocusIn : undefined}\n\t\t\t\tonBlur={!disabled && onMouseOut ? handleFocusOut : undefined}\n\t\t\t\tclassName={menuTriggerClasses}\n\t\t\t>\n\t\t\t\t{isSubElement && <div className={styles['MrlMenuItem--item--hoverArea']} />}\n\t\t\t\t{icon && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-left']}>\n\t\t\t\t\t\t<MrlSvg size=\"small\" svg={icon} />\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{renderChildren()}\n\t\t\t\t{rightIcon && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-right']}>\n\t\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-right-container']}>\n\t\t\t\t\t\t\t<MrlSvg svg={rightIcon} size=\"auto\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</button>\n\t\t\t{renderMenu()}\n\t\t</li>\n\t);\n}\n"],"names":["getSubMenuType","child","React","isValidElement","type","componentType","MrlMenuItem","_ref","ariaDescribedBy","ariaHasPopup","children","className","dataQa","disabled","icon","id","onClick","onMouseOut","onMouseOver","_ref$role","role","selected","rest","_objectWithoutProperties","_excluded","context","useContext","MrlMenuContext","menuItemRef","useRef","_React$useState","useState","_React$useState2","_slicedToArray","isSubElement","setIsSubElement","isSelectable","setFocusItem","_context$triggerRef","triggerRef","current","triggerElement","getUniqueId","document","body","setAttribute","handleClick","e","preventDefault","stopPropagation","closeMenu","handleKeyDown","key","_context$closeMenu","call","handleDisabled","handleFocusIn","handleFocusOut","renderMenu","Children","map","cloneElement","alignment","closeParent","isSubMenu","position","point","renderChildren","useEffect","hasSubMenu","toArray","some","menuItemClasses","classnames","styles","menuTriggerClasses","rightIcon","chevronRight","check","hasPopup","undefined","createElement","_extends","concat","ref","onKeyDown","onFocus","onBlur","MrlSvg","size","svg"],"mappings":"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"}
|
|
@@ -7,7 +7,10 @@ var classnames = require('classnames');
|
|
|
7
7
|
var MrlMenuItem_module = require('../MrlMenuItem/MrlMenuItem.module.scss.js');
|
|
8
8
|
var MrlSvg = require('../../svg/MrlSvg/MrlSvg.js');
|
|
9
9
|
|
|
10
|
-
function
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
function _interopNamespace(e) {
|
|
13
|
+
if (e && e.__esModule) return e;
|
|
11
14
|
var n = Object.create(null);
|
|
12
15
|
if (e) {
|
|
13
16
|
Object.keys(e).forEach(function (k) {
|
|
@@ -24,7 +27,8 @@ function _interopNamespaceDefault(e) {
|
|
|
24
27
|
return Object.freeze(n);
|
|
25
28
|
}
|
|
26
29
|
|
|
27
|
-
var React__namespace = /*#__PURE__*/
|
|
30
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
31
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
28
32
|
|
|
29
33
|
var _excluded = ["ariaDescribedBy", "children", "className", "dataQa", "disabled", "href", "icon", "id", "onClick", "selected", "target"];
|
|
30
34
|
/**
|
|
@@ -48,15 +52,15 @@ function MrlMenuItemLink(_ref) {
|
|
|
48
52
|
_ref$target = _ref.target,
|
|
49
53
|
target = _ref$target === void 0 ? '_self' : _ref$target,
|
|
50
54
|
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
|
51
|
-
var handleClick =
|
|
55
|
+
var handleClick = e => {
|
|
52
56
|
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
53
57
|
};
|
|
54
|
-
var handleDisabled =
|
|
58
|
+
var handleDisabled = e => {
|
|
55
59
|
e.preventDefault();
|
|
56
60
|
e.stopPropagation();
|
|
57
61
|
};
|
|
58
|
-
var menuItemClasses =
|
|
59
|
-
var menuTriggerClasses =
|
|
62
|
+
var menuItemClasses = classnames__default.default(MrlMenuItem_module.default['MrlMenuItem'], 'MrlMenuItem', className);
|
|
63
|
+
var menuTriggerClasses = classnames__default.default(MrlMenuItem_module.default['MrlMenuItem--item'], 'MrlMenuItem--item');
|
|
60
64
|
var isExternalLink = target === '_blank';
|
|
61
65
|
var linkRel = isExternalLink ? 'noopener noreferrer' : rest.rel;
|
|
62
66
|
return /*#__PURE__*/React__namespace.createElement("li", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlMenuItemLink.js","sources":["../../../../../src/components/menu/MrlMenuItemLink/MrlMenuItemLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport { linkOpen } from '@muraldevkit/ds-icons';\nimport classnames from 'classnames';\nimport { DSIconType, MrlSvg } from '../../../';\nimport styles from '../MrlMenuItem/MrlMenuItem.module.scss';\n\nexport interface MrlMenuItemLinkProps {\n\t/** ID for associated description */\n\tariaDescribedBy?: string;\n\n\t/**\n\t Children to be rendered within the menu component\n\t */\n\tchildren: React.ReactNode | string;\n\n\t/** Class names for the menu item */\n\tclassName?: string;\n\n\t/** If the menu item is disabled */\n\tdisabled?: boolean;\n\n\t/** Href for the menu item */\n\thref: string;\n\n\t/** Icon for menu item */\n\ticon?: DSIconType;\n\n\t/** Target for links */\n\ttarget?: string;\n\n\t/** Unique ID for the menu item */\n\tid?: string;\n\n\t/** Callback to be called when the menu item is clicked */\n\tonClick?: (e: React.MouseEvent<HTMLElement>) => void;\n\n\t/** Data-qa attribute for the menu item */\n\tdataQa?: string;\n\n\t/** If the menu item is selected */\n\tselected?: boolean;\n\n\t/** Rel attr for the menu item */\n\trel?: string;\n}\n\n/**\n * MrlMenuItem component\n *\n * Renders a menu item to be used within the MrlMenu component\n * @param {MrlMenuItemLinkProps} props - The props for the MrlMenuItem component\n * @returns {Element} - rendered MrlMenuItem component\n */\nexport function MrlMenuItemLink({\n\tariaDescribedBy,\n\tchildren,\n\tclassName,\n\tdataQa,\n\tdisabled,\n\thref,\n\ticon,\n\tid,\n\tonClick,\n\tselected,\n\ttarget = '_self',\n\t...rest\n}: MrlMenuItemLinkProps): JSX.Element {\n\tconst handleClick = (e: React.MouseEvent<HTMLElement>): void => {\n\t\tonClick?.(e);\n\t};\n\n\tconst handleDisabled = (e: React.MouseEvent<HTMLElement>): void => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t};\n\n\tconst menuItemClasses = classnames(styles['MrlMenuItem'], 'MrlMenuItem', className);\n\tconst menuTriggerClasses = classnames(styles['MrlMenuItem--item'], 'MrlMenuItem--item');\n\n\tconst isExternalLink = target === '_blank';\n\tconst linkRel = isExternalLink ? 'noopener noreferrer' : rest.rel;\n\n\treturn (\n\t\t<li className={menuItemClasses} data-qa={dataQa}>\n\t\t\t<a\n\t\t\t\t{...rest}\n\t\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t\taria-disabled={disabled}\n\t\t\t\tdata-selected={selected}\n\t\t\t\tdata-qa={dataQa && `${dataQa}-button`}\n\t\t\t\tid={id}\n\t\t\t\trole=\"menuitem\"\n\t\t\t\tonClick={disabled ? handleDisabled : handleClick}\n\t\t\t\tclassName={menuTriggerClasses}\n\t\t\t\trel={linkRel}\n\t\t\t\thref={href}\n\t\t\t\ttarget={target}\n\t\t\t>\n\t\t\t\t{icon && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--submenuIcon-left']}>\n\t\t\t\t\t\t<MrlSvg size=\"small\" svg={icon} />\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{children}\n\t\t\t\t{isExternalLink && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-right']}>\n\t\t\t\t\t\t<span className={styles['MrlMenuItem--item--linkOpenIcon']}>\n\t\t\t\t\t\t\t<MrlSvg svg={linkOpen} size=\"auto\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</a>\n\t\t</li>\n\t);\n}\n"],"names":["MrlMenuItemLink","_ref","ariaDescribedBy","children","className","dataQa","disabled","href","icon","id","onClick","selected","_ref$target","target","rest","_objectWithoutProperties","_excluded","handleClick","e","handleDisabled","preventDefault","stopPropagation","menuItemClasses","classnames","styles","menuTriggerClasses","isExternalLink","linkRel","rel","React","createElement","_extends","concat","role","MrlSvg","size","svg","linkOpen"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MrlMenuItemLink.js","sources":["../../../../../src/components/menu/MrlMenuItemLink/MrlMenuItemLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport { linkOpen } from '@muraldevkit/ds-icons';\nimport classnames from 'classnames';\nimport { DSIconType, MrlSvg } from '../../../';\nimport styles from '../MrlMenuItem/MrlMenuItem.module.scss';\n\nexport interface MrlMenuItemLinkProps {\n\t/** ID for associated description */\n\tariaDescribedBy?: string;\n\n\t/**\n\t Children to be rendered within the menu component\n\t */\n\tchildren: React.ReactNode | string;\n\n\t/** Class names for the menu item */\n\tclassName?: string;\n\n\t/** If the menu item is disabled */\n\tdisabled?: boolean;\n\n\t/** Href for the menu item */\n\thref: string;\n\n\t/** Icon for menu item */\n\ticon?: DSIconType;\n\n\t/** Target for links */\n\ttarget?: string;\n\n\t/** Unique ID for the menu item */\n\tid?: string;\n\n\t/** Callback to be called when the menu item is clicked */\n\tonClick?: (e: React.MouseEvent<HTMLElement>) => void;\n\n\t/** Data-qa attribute for the menu item */\n\tdataQa?: string;\n\n\t/** If the menu item is selected */\n\tselected?: boolean;\n\n\t/** Rel attr for the menu item */\n\trel?: string;\n}\n\n/**\n * MrlMenuItem component\n *\n * Renders a menu item to be used within the MrlMenu component\n * @param {MrlMenuItemLinkProps} props - The props for the MrlMenuItem component\n * @returns {Element} - rendered MrlMenuItem component\n */\nexport function MrlMenuItemLink({\n\tariaDescribedBy,\n\tchildren,\n\tclassName,\n\tdataQa,\n\tdisabled,\n\thref,\n\ticon,\n\tid,\n\tonClick,\n\tselected,\n\ttarget = '_self',\n\t...rest\n}: MrlMenuItemLinkProps): JSX.Element {\n\tconst handleClick = (e: React.MouseEvent<HTMLElement>): void => {\n\t\tonClick?.(e);\n\t};\n\n\tconst handleDisabled = (e: React.MouseEvent<HTMLElement>): void => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t};\n\n\tconst menuItemClasses = classnames(styles['MrlMenuItem'], 'MrlMenuItem', className);\n\tconst menuTriggerClasses = classnames(styles['MrlMenuItem--item'], 'MrlMenuItem--item');\n\n\tconst isExternalLink = target === '_blank';\n\tconst linkRel = isExternalLink ? 'noopener noreferrer' : rest.rel;\n\n\treturn (\n\t\t<li className={menuItemClasses} data-qa={dataQa}>\n\t\t\t<a\n\t\t\t\t{...rest}\n\t\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t\taria-disabled={disabled}\n\t\t\t\tdata-selected={selected}\n\t\t\t\tdata-qa={dataQa && `${dataQa}-button`}\n\t\t\t\tid={id}\n\t\t\t\trole=\"menuitem\"\n\t\t\t\tonClick={disabled ? handleDisabled : handleClick}\n\t\t\t\tclassName={menuTriggerClasses}\n\t\t\t\trel={linkRel}\n\t\t\t\thref={href}\n\t\t\t\ttarget={target}\n\t\t\t>\n\t\t\t\t{icon && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--submenuIcon-left']}>\n\t\t\t\t\t\t<MrlSvg size=\"small\" svg={icon} />\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{children}\n\t\t\t\t{isExternalLink && (\n\t\t\t\t\t<span className={styles['MrlMenuItem--item--icon-right']}>\n\t\t\t\t\t\t<span className={styles['MrlMenuItem--item--linkOpenIcon']}>\n\t\t\t\t\t\t\t<MrlSvg svg={linkOpen} size=\"auto\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</a>\n\t\t</li>\n\t);\n}\n"],"names":["MrlMenuItemLink","_ref","ariaDescribedBy","children","className","dataQa","disabled","href","icon","id","onClick","selected","_ref$target","target","rest","_objectWithoutProperties","_excluded","handleClick","e","handleDisabled","preventDefault","stopPropagation","menuItemClasses","classnames","styles","menuTriggerClasses","isExternalLink","linkRel","rel","React","createElement","_extends","concat","role","MrlSvg","size","svg","linkOpen"],"mappings":"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"}
|