@muraldevkit/ui-toolkit 4.68.0-dev-NFbt.1 → 4.68.0-dev-5W5E.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,4 +1,4 @@
|
|
|
1
|
-
import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray,
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, extends as _extends, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
4
|
import { close } from '@muraldevkit/ds-icons';
|
|
@@ -103,14 +103,14 @@ function MrlPopover(_ref) {
|
|
|
103
103
|
* Checks if the trigger element is disabled
|
|
104
104
|
* @returns {boolean} - true if the trigger element is disabled, false otherwise
|
|
105
105
|
*/
|
|
106
|
-
var isTriggerDisabled = React.useCallback(
|
|
106
|
+
var isTriggerDisabled = React.useCallback(() => {
|
|
107
107
|
return isElementAriaDisabled(triggerRef === null || triggerRef === void 0 ? void 0 : triggerRef.current);
|
|
108
108
|
}, [triggerRef]);
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
111
|
* Opening and closing the menu
|
|
112
112
|
*/
|
|
113
|
-
var closeMenu = React.useCallback(
|
|
113
|
+
var closeMenu = React.useCallback(() => {
|
|
114
114
|
setState({
|
|
115
115
|
actionType: null,
|
|
116
116
|
isOpen: false
|
|
@@ -118,17 +118,17 @@ function MrlPopover(_ref) {
|
|
|
118
118
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
119
119
|
}, [onClose]);
|
|
120
120
|
var _useMrlPopoverEventHa = useMrlPopoverEventHandlers({
|
|
121
|
-
closeMenu
|
|
122
|
-
disableClickToOpen
|
|
123
|
-
disableFocusTrap
|
|
124
|
-
hasCloseButton
|
|
125
|
-
interactiveElements
|
|
126
|
-
isSubMenu
|
|
127
|
-
isTriggerDisabled
|
|
128
|
-
menuRef
|
|
129
|
-
setState
|
|
130
|
-
state
|
|
131
|
-
triggerRef
|
|
121
|
+
closeMenu,
|
|
122
|
+
disableClickToOpen,
|
|
123
|
+
disableFocusTrap,
|
|
124
|
+
hasCloseButton,
|
|
125
|
+
interactiveElements,
|
|
126
|
+
isSubMenu,
|
|
127
|
+
isTriggerDisabled,
|
|
128
|
+
menuRef,
|
|
129
|
+
setState,
|
|
130
|
+
state,
|
|
131
|
+
triggerRef
|
|
132
132
|
}),
|
|
133
133
|
handleClose = _useMrlPopoverEventHa.handleClose,
|
|
134
134
|
handleMenuKey = _useMrlPopoverEventHa.handleMenuKey,
|
|
@@ -138,7 +138,7 @@ function MrlPopover(_ref) {
|
|
|
138
138
|
toggleMenuTrigger = _useMrlPopoverEventHa.toggleMenuTrigger,
|
|
139
139
|
showMenuHover = _useMrlPopoverEventHa.showMenuHover;
|
|
140
140
|
useClickOutside(menuRef, triggerRef, 'mouseup', closeMenu, disableClickOutside || !state.isOpen, POPOVER_CLICKOUTSIDE_WHITELIST);
|
|
141
|
-
React.useEffect(
|
|
141
|
+
React.useEffect(() => {
|
|
142
142
|
if (isTriggerDisabled()) return;
|
|
143
143
|
if (!isSubMenu) {
|
|
144
144
|
setState({
|
|
@@ -150,7 +150,7 @@ function MrlPopover(_ref) {
|
|
|
150
150
|
}, [isSubMenu, actionState.actionType, actionState.isOpen]);
|
|
151
151
|
|
|
152
152
|
// This use effect handles storing the rect in state for positioning calculations
|
|
153
|
-
React.useLayoutEffect(
|
|
153
|
+
React.useLayoutEffect(() => {
|
|
154
154
|
if (!state.isOpen) return;
|
|
155
155
|
|
|
156
156
|
// For consistent calculations, we are storing the menu rect in state
|
|
@@ -168,7 +168,7 @@ function MrlPopover(_ref) {
|
|
|
168
168
|
// This use effect handles getting and setting the interactive elements in the popover.
|
|
169
169
|
// These elements are used for focus management when focus trap is not enabled to ensure
|
|
170
170
|
// that our tab order matches the visual order of the page
|
|
171
|
-
React.useEffect(
|
|
171
|
+
React.useEffect(() => {
|
|
172
172
|
if (state.isOpen && !isSubMenu && menuRef.current) {
|
|
173
173
|
if (disableFocusTrap) {
|
|
174
174
|
// set the interactive elements so we can track focus location
|
|
@@ -188,14 +188,12 @@ function MrlPopover(_ref) {
|
|
|
188
188
|
// - menu event handlers
|
|
189
189
|
// - "next element" event handlers, which are event handlers attached to the next interactive element after the trigger
|
|
190
190
|
//
|
|
191
|
-
React.useEffect(
|
|
191
|
+
React.useEffect(() => {
|
|
192
192
|
var triggerElement = triggerRef === null || triggerRef === void 0 ? void 0 : triggerRef.current;
|
|
193
193
|
var menuElement = menuRef === null || menuRef === void 0 ? void 0 : menuRef.current;
|
|
194
194
|
var nextElement = findAdjacentInteractiveElement(triggerRef, 'next');
|
|
195
195
|
if (triggerElement) {
|
|
196
|
-
triggerElement.addEventListener('mousedown',
|
|
197
|
-
return e.stopPropagation();
|
|
198
|
-
});
|
|
196
|
+
triggerElement.addEventListener('mousedown', e => e.stopPropagation());
|
|
199
197
|
triggerElement.addEventListener('click', toggleMenuTrigger);
|
|
200
198
|
triggerElement.addEventListener('keydown', toggleMenuKey);
|
|
201
199
|
if (nextElement) nextElement.addEventListener('keydown', handleTriggerSiblingKey);
|
|
@@ -210,7 +208,7 @@ function MrlPopover(_ref) {
|
|
|
210
208
|
_menuElement.addEventListener('mouseout', hideMenuHover);
|
|
211
209
|
}
|
|
212
210
|
}
|
|
213
|
-
return
|
|
211
|
+
return () => {
|
|
214
212
|
triggerElement.removeEventListener('mousedown', preventDefault);
|
|
215
213
|
triggerElement.removeEventListener('click', toggleMenuTrigger);
|
|
216
214
|
triggerElement.removeEventListener('keydown', toggleMenuKey);
|
|
@@ -233,14 +231,14 @@ function MrlPopover(_ref) {
|
|
|
233
231
|
* Restore the previous DOM value when the trigger changes or this popover unmounts so host-owned
|
|
234
232
|
* ARIA (e.g. aria-haspopup="menu") is not left stale after a callout dismisses.
|
|
235
233
|
*/
|
|
236
|
-
React.useEffect(
|
|
234
|
+
React.useEffect(() => {
|
|
237
235
|
var el = triggerRef === null || triggerRef === void 0 ? void 0 : triggerRef.current;
|
|
238
236
|
if (!el) return;
|
|
239
237
|
var previousValue = el.getAttribute('aria-haspopup');
|
|
240
238
|
el.setAttribute('aria-haspopup', 'true');
|
|
241
239
|
|
|
242
240
|
// Restore the previous value of the aria-haspopup attribute when the callout is removed from the DOM
|
|
243
|
-
return
|
|
241
|
+
return () => {
|
|
244
242
|
if (previousValue === null) {
|
|
245
243
|
el.removeAttribute('aria-haspopup');
|
|
246
244
|
} else {
|
|
@@ -249,14 +247,14 @@ function MrlPopover(_ref) {
|
|
|
249
247
|
};
|
|
250
248
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
251
249
|
}, [triggerRef === null || triggerRef === void 0 ? void 0 : triggerRef.current]);
|
|
252
|
-
React.useEffect(
|
|
250
|
+
React.useEffect(() => {
|
|
253
251
|
var el = triggerRef === null || triggerRef === void 0 ? void 0 : triggerRef.current;
|
|
254
252
|
if (!el) return;
|
|
255
253
|
|
|
256
254
|
// Store the previous value of the aria-expanded attribute when the callout is added to the DOM
|
|
257
255
|
if (!triggerExpandedRestoreRef.current || triggerExpandedRestoreRef.current.el !== el) {
|
|
258
256
|
triggerExpandedRestoreRef.current = {
|
|
259
|
-
el
|
|
257
|
+
el,
|
|
260
258
|
value: el.hasAttribute('aria-expanded') ? el.getAttribute('aria-expanded') : null
|
|
261
259
|
};
|
|
262
260
|
}
|
|
@@ -270,8 +268,8 @@ function MrlPopover(_ref) {
|
|
|
270
268
|
/**
|
|
271
269
|
* Restore the previous value of the aria-expanded attribute when the callout is removed from the DOM
|
|
272
270
|
*/
|
|
273
|
-
React.useEffect(
|
|
274
|
-
return
|
|
271
|
+
React.useEffect(() => {
|
|
272
|
+
return () => {
|
|
275
273
|
var _document, _document$documentEle;
|
|
276
274
|
var snap = triggerExpandedRestoreRef.current;
|
|
277
275
|
if (!snap) return;
|
|
@@ -289,9 +287,7 @@ function MrlPopover(_ref) {
|
|
|
289
287
|
/**
|
|
290
288
|
* Setup positioning styles, submenu positioning styles, scroll styles, and transition.
|
|
291
289
|
*/
|
|
292
|
-
var memoizedCustomPosition = React.useMemo(
|
|
293
|
-
return customPosition;
|
|
294
|
-
}, [customPosition]);
|
|
290
|
+
var memoizedCustomPosition = React.useMemo(() => customPosition, [customPosition]);
|
|
295
291
|
var customPopoverPosition = memoizedCustomPosition || {
|
|
296
292
|
left: 0,
|
|
297
293
|
top: 0
|
|
@@ -336,54 +332,58 @@ function MrlPopover(_ref) {
|
|
|
336
332
|
transform: 'translateY(4px)'
|
|
337
333
|
}
|
|
338
334
|
});
|
|
339
|
-
var menuClasses = classnames(styles['MrlPopover'], 'MrlPopover', styles['MrlPopover--scrolling'], className,
|
|
335
|
+
var menuClasses = classnames(styles['MrlPopover'], 'MrlPopover', styles['MrlPopover--scrolling'], className, {
|
|
336
|
+
[styles['MrlPopover--submenu']]: isSubMenu,
|
|
337
|
+
[styles['inverse']]: kind === 'inverse',
|
|
338
|
+
[styles['primary']]: kind === 'primary',
|
|
339
|
+
[styles['compact']]: spacing === 'compact',
|
|
340
|
+
[styles['default']]: spacing === 'default'
|
|
341
|
+
});
|
|
340
342
|
var positionStyles = isSubMenu ? inlineStyles.submenu : inlineStyles.menu;
|
|
341
|
-
var renderMenu =
|
|
343
|
+
var renderMenu = () => {
|
|
342
344
|
var inlineScrollStyles = isSubMenu ? {} : scrollStyles ? scrollStyles.styles : {};
|
|
343
345
|
var scrollClasses = classnames(styles['MrlPopover--content'], styles['MrlPopover--scrolling--content']);
|
|
344
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, transitions(
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}))));
|
|
380
|
-
}));
|
|
346
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, transitions((style, item) => item && /*#__PURE__*/React.createElement(MrlFocusTrap, {
|
|
347
|
+
disabled: disableFocusTrap,
|
|
348
|
+
containerRef: menuRef
|
|
349
|
+
}, /*#__PURE__*/React.createElement(animated.div, _extends({
|
|
350
|
+
"aria-label": ariaLabel,
|
|
351
|
+
"aria-labelledby": ariaLabelledBy,
|
|
352
|
+
className: menuClasses,
|
|
353
|
+
id: id,
|
|
354
|
+
tabIndex: -1,
|
|
355
|
+
style: _objectSpread2(_objectSpread2({}, positionStyles), style),
|
|
356
|
+
onKeyDown: handleMenuKey,
|
|
357
|
+
ref: menuRef
|
|
358
|
+
}, rest), /*#__PURE__*/React.createElement(MrlPopoverScrollContainer, {
|
|
359
|
+
className: scrollClasses,
|
|
360
|
+
style: inlineScrollStyles
|
|
361
|
+
}, typeof children === 'function' && children({
|
|
362
|
+
closeMenu
|
|
363
|
+
}), typeof children !== 'function' && children, hasCloseButton && /*#__PURE__*/React.createElement(MrlIconButton, {
|
|
364
|
+
"data-qa": "popover-close-button",
|
|
365
|
+
wrapperClassName: styles['MrlPopover--close'],
|
|
366
|
+
icon: /*#__PURE__*/React.createElement(MrlSvg, {
|
|
367
|
+
svg: close
|
|
368
|
+
}),
|
|
369
|
+
kind: kind === 'inverse' ? 'ghost-inverse' : 'ghost',
|
|
370
|
+
text: "Close",
|
|
371
|
+
state: "default",
|
|
372
|
+
position: "right",
|
|
373
|
+
tipAnchor: "center",
|
|
374
|
+
onMouseUp: closeMenu,
|
|
375
|
+
onKeyDown: handleClose,
|
|
376
|
+
size: "small"
|
|
377
|
+
}), point && /*#__PURE__*/React.createElement("div", {
|
|
378
|
+
className: styles['MrlPopover--point'],
|
|
379
|
+
"data-point": getDataPoint(menuPositionState, alignment)
|
|
380
|
+
}))))));
|
|
381
381
|
};
|
|
382
382
|
|
|
383
383
|
/* eslint-disable */
|
|
384
384
|
return /*#__PURE__*/React.createElement(MrlPopoverContext.Provider, {
|
|
385
385
|
value: {
|
|
386
|
-
closeMenu
|
|
386
|
+
closeMenu
|
|
387
387
|
}
|
|
388
388
|
}, isSubMenu ? renderMenu() : /*#__PURE__*/React.createElement(MrlPortal, _extends({
|
|
389
389
|
layer: portalProps.layer || PORTAL_LAYERS.POPOVER
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlPopover.js","sources":["../../../../../src/components/popover/MrlPopover/MrlPopover.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { close } from '@muraldevkit/ds-icons';\nimport { MrlFocusTrap, MrlIconButton, MrlPortal, MrlSvg, PortalProps } from '../../';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useBrowserEdgeScroll } from '../../menu/hooks/useBrowserEdgeScroll';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../../menu/hooks/useSubMenuElementPosition';\nimport { MenuPosition, MenuAlignment, ActionState, CustomMenuPosition } from '../../menu/constants';\nimport {\n\tpreventDefault,\n\tgetFocusableElementsInsideElement,\n\tfindAdjacentInteractiveElement,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport { useTransition, animated } from '@react-spring/web';\nimport { SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlSelect/MrlSelect';\nimport { MULTI_SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlMultiSelect/MrlMultiSelect';\nimport styles from './MrlPopover.module.scss';\nimport { flipPosition } from '../../menu/utilities/flip-position';\nimport { getDataPoint } from './utilities/get-data-point';\nimport { getOffset } from './utilities/get-offset';\nimport { useMrlPopoverEventHandlers } from './hooks/use-mrl-popover-event-handlers';\nimport { MrlPopoverContext } from './context/MrlPopoverContext';\nimport { MrlPopoverScrollContainer } from './MrlPopoverScrollContainer';\n\nconst POPOVER_CLICKOUTSIDE_WHITELIST = [\n\t'#mrl-select-portal',\n\t'#mrl-popover-menu-portal',\n\t`.${SELECT_MENU_LIST_CLASS_NAME}`,\n\t`.${MULTI_SELECT_MENU_LIST_CLASS_NAME}`\n];\n\ntype RenderPropFn = ({ closeMenu }: { closeMenu: () => void }) => JSX.Element;\n\nexport interface MrlPopoverProps {\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/** Label for the popover */\n\tariaLabel?: string;\n\n\t/** ID of element to associate a label */\n\tariaLabelledBy?: string;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode | RenderPropFn;\n\n\t/** Custom class names for the popover */\n\tclassName?: string;\n\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/**\n\t * If the popover should disable click to open\n\t *\n\t * Example usage: if you do not want your component opened via click, set to true\n\t */\n\tdisableClickToOpen?: boolean;\n\n\t/**\n\t * If the popover should close when clicking outside of the menu\n\t *\n\t * Example usage: MrlCallout component should not close when clicking outside, so it's set to true\n\t */\n\tdisableClickOutside?: boolean;\n\n\t/**\n\t * Disable flipping of the popover when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/**\n\t * If the popover should disable focus trap\n\t *\n\t * The impact of enabling or disabling focus trap:\n\t * - enabled : focus will remain trapped in the popover until a user closes the popover\n\t * - disabled : focus will move to the next interactive element in the DOM when the user\n\t * tabs out of the popover. Focus will move to the trigger when the user shift+tabs out of the popover\n\t *\n\t * Additional scenarios to consider with focus trap is disabled. When hasCloseButton is set to true/false:\n\t * - true : if a user shows the close button, the popover will stay open until explicitly dismissed\n\t * - false : if a user hides the close button, the popover will close when a user tabs out of it from the beginning or end\n\t */\n\tdisableFocusTrap?: boolean;\n\n\t/** If the popover should have a close button */\n\thasCloseButton?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/** If the menu is a submenu */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t *\n\t * This does not impact submenus\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Alignment of the popover along the axis perpendicular to its position\n\t * - For position 'top'/'bottom': 'start' = left, 'end' = right, 'center' = center horizontally\n\t * - For position 'left'/'right': 'start' = top, 'end' = bottom, 'center' = center vertically\n\t *\n\t * @default 'center'\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * spacing of menu\n\t * - 'default' has 16px padding\n\t * - 'compact' has 12px padding\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLElement>;\n\n\t/**\n\t * If the menu should be rendered with the inverse theme\n\t * @default 'primary'\n\t */\n\tkind?: 'primary' | 'inverse';\n\n\t/**\n\t * If the menu should have a pointer element\n\t * @default false\n\t */\n\tpoint?: boolean;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Offset in pixels for the popover\n\t *\n\t * The popover automatically calculates the proper offset based on the position and alignment\n\t * this prop will override those values.\n\t */\n\toffset?: number;\n\n\t/**\n\t * Callback to be called when the menu is opened\n\t */\n\tonOpen?: () => void;\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\t/**\n\t * data-qa attribute for the popover\n\t */\n\t['data-qa']?: string;\n}\n\n/**\n * MrlPopover\n *\n * Renders a popover component with position and alignment relative to a trigger element\n * @param {MrlPopoverProps} props - The props for the MrlPopover component\n * @returns {Element} - rendered MrlPopover component\n */\nexport function MrlPopover({\n\talignment = 'center',\n\tariaLabel,\n\tariaLabelledBy,\n\tchildren,\n\tclassName,\n\tcustomPosition,\n\tdisableClickToOpen = false,\n\tdisableClickOutside = false,\n\tdisableFlipping = false,\n\tdisableFocusTrap = false,\n\thasCloseButton = false,\n\tspacing = 'default',\n\tid,\n\tisSubMenu = false,\n\tactionState = { actionType: null, isOpen: false },\n\tposition = 'bottom',\n\tpoint = true,\n\tportalProps = { id: PORTAL_LAYERS.POPOVER.name },\n\tkind = 'primary',\n\toffset,\n\tonClose,\n\tonOpen,\n\ttriggerRef,\n\t...rest\n}: MrlPopoverProps): JSX.Element {\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: actionState.isOpen || false\n\t} as ActionState);\n\n\t// stores all of the interactive elements in the popover for focus management\n\tconst [interactiveElements, setInteractiveElements] = React.useState<HTMLElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\t/** Snapshot of trigger `aria-expanded` before we manage it; restored on popover unmount only. */\n\tconst triggerExpandedRestoreRef = React.useRef<{\n\t\tel: HTMLElement;\n\t\tvalue: string | null;\n\t} | 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 * Opening and closing the menu\n\t */\n\tconst closeMenu = React.useCallback(() => {\n\t\tsetState({ actionType: null, isOpen: false });\n\t\tonClose?.();\n\t}, [onClose]);\n\n\tconst {\n\t\thandleClose,\n\t\thandleMenuKey,\n\t\thideMenuHover,\n\t\thandleTriggerSiblingKey,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\tshowMenuHover\n\t} = useMrlPopoverEventHandlers({\n\t\tcloseMenu,\n\t\tdisableClickToOpen,\n\t\tdisableFocusTrap,\n\t\thasCloseButton,\n\t\tinteractiveElements,\n\t\tisSubMenu,\n\t\tisTriggerDisabled,\n\t\tmenuRef,\n\t\tsetState,\n\t\tstate,\n\t\ttriggerRef\n\t});\n\n\tuseClickOutside(\n\t\tmenuRef,\n\t\ttriggerRef,\n\t\t'mouseup',\n\t\tcloseMenu,\n\t\tdisableClickOutside || !state.isOpen,\n\t\tPOPOVER_CLICKOUTSIDE_WHITELIST\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isTriggerDisabled()) return;\n\n\t\tif (!isSubMenu) {\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isSubMenu, actionState.actionType, actionState.isOpen]);\n\n\t// This use effect handles storing the rect in state for positioning calculations\n\tReact.useLayoutEffect(() => {\n\t\tif (!state.isOpen) return;\n\n\t\t// For consistent 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, isSubMenu]);\n\n\t// This use effect handles getting and setting the interactive elements in the popover.\n\t// These elements are used for focus management when focus trap is not enabled to ensure\n\t// that our tab order matches the visual order of the page\n\tReact.useEffect(() => {\n\t\tif (state.isOpen && !isSubMenu && menuRef.current) {\n\t\t\tif (disableFocusTrap) {\n\t\t\t\t// set the interactive elements so we can track focus location\n\t\t\t\tconst elements = getFocusableElementsInsideElement(menuRef.current as HTMLElement);\n\t\t\t\tsetInteractiveElements(elements);\n\n\t\t\t\t// without focus trap enabled, we want to focus the first interactive element\n\t\t\t\telements[0].focus();\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRef.current]);\n\n\t// This use effect handles setting all of the event handlers for different parts of the component.\n\t// - trigger event handlers\n\t// - submenu event handlers\n\t// - menu event handlers\n\t// - \"next element\" event handlers, which are event handlers attached to the next interactive element after the trigger\n\t//\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef, 'next');\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', (e) => e.stopPropagation());\n\t\t\ttriggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\tif (nextElement) nextElement.addEventListener('keydown', handleTriggerSiblingKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\tconst menuElement = menuRef?.current;\n\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\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\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\ttriggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (nextElement) nextElement.removeEventListener('keydown', handleTriggerSiblingKey);\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 (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\t\t\t};\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\tcloseMenu,\n\t\tisSubMenu,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\ttriggerRef?.current,\n\t\thideMenuHover,\n\t\tshowMenuHover,\n\t\thasCloseButton,\n\t\thandleClose\n\t]);\n\n\t/**\n\t * Popover triggers are not necessarily modal dialogs; use the generic 'true' (see ARIA in HTML).\n\t * Restore the previous DOM value when the trigger changes or this popover unmounts so host-owned\n\t * ARIA (e.g. aria-haspopup=\"menu\") is not left stale after a callout dismisses.\n\t */\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\tconst previousValue = el.getAttribute('aria-haspopup');\n\t\tel.setAttribute('aria-haspopup', 'true');\n\n\t\t// Restore the previous value of the aria-haspopup attribute when the callout is removed from the DOM\n\t\treturn () => {\n\t\t\tif (previousValue === null) {\n\t\t\t\tel.removeAttribute('aria-haspopup');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-haspopup', previousValue);\n\t\t\t}\n\t\t};\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [triggerRef?.current]);\n\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\t// Store the previous value of the aria-expanded attribute when the callout is added to the DOM\n\t\tif (!triggerExpandedRestoreRef.current || triggerExpandedRestoreRef.current.el !== el) {\n\t\t\ttriggerExpandedRestoreRef.current = {\n\t\t\t\tel,\n\t\t\t\tvalue: el.hasAttribute('aria-expanded') ? el.getAttribute('aria-expanded') : null\n\t\t\t};\n\t\t}\n\n\t\t// Set the aria-expanded attribute to the current state of the popover\n\t\tel.setAttribute('aria-expanded', state.isOpen.toString());\n\n\t\tif (state.isOpen) onOpen?.();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, onOpen, triggerRef?.current]);\n\n\t/**\n\t * Restore the previous value of the aria-expanded attribute when the callout is removed from the DOM\n\t */\n\tReact.useEffect(() => {\n\t\treturn () => {\n\t\t\tconst snap = triggerExpandedRestoreRef.current;\n\t\t\tif (!snap) return;\n\t\t\tconst { el, value } = snap;\n\n\t\t\tif (!document?.documentElement?.contains(el)) return;\n\n\t\t\tif (value === null) {\n\t\t\t\tel.removeAttribute('aria-expanded');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-expanded', value);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\t/**\n\t * Setup positioning styles, submenu positioning styles, scroll styles, and transition.\n\t */\n\tconst memoizedCustomPosition = React.useMemo(() => customPosition, [customPosition]);\n\tconst customPopoverPosition = memoizedCustomPosition || { left: 0, top: 0 };\n\n\tconst menuPosition = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPopoverPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\toffset || getOffset(position, point),\n\t\tisSubMenu,\n\t\tdisableFlipping\n\t);\n\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t!isSubMenu\n\t);\n\n\tconst menuPositionState = menuPosition.flipped ? flipPosition(position) : position;\n\tconst scrollStyles = useBrowserEdgeScroll(menuRef, menuPositionState, alignment);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPosition.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPosition.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 transitions = useTransition(state.isOpen, {\n\t\tconfig: { duration: 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 menuClasses = classnames(\n\t\tstyles['MrlPopover'],\n\t\t'MrlPopover',\n\t\tstyles['MrlPopover--scrolling'],\n\t\tclassName,\n\t\t{\n\t\t\t[styles['MrlPopover--submenu']]: isSubMenu,\n\t\t\t[styles['inverse']]: kind === 'inverse',\n\t\t\t[styles['primary']]: kind === 'primary',\n\t\t\t[styles['compact']]: spacing === 'compact',\n\t\t\t[styles['default']]: spacing === 'default'\n\t\t}\n\t);\n\n\tconst positionStyles = isSubMenu ? inlineStyles.submenu : inlineStyles.menu;\n\n\tconst renderMenu = () => {\n\t\tconst inlineScrollStyles = isSubMenu ? {} : scrollStyles ? scrollStyles.styles : {};\n\t\tconst scrollClasses = classnames(\n\t\t\tstyles['MrlPopover--content'],\n\t\t\tstyles['MrlPopover--scrolling--content']\n\t\t);\n\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<MrlFocusTrap disabled={disableFocusTrap} containerRef={menuRef}>\n\t\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MrlPopoverScrollContainer className={scrollClasses} style={inlineScrollStyles}>\n\t\t\t\t\t\t\t\t\t\t{typeof children === 'function' && children({ closeMenu })}\n\t\t\t\t\t\t\t\t\t\t{typeof children !== 'function' && children}\n\t\t\t\t\t\t\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\t\t\t\t\tdata-qa=\"popover-close-button\"\n\t\t\t\t\t\t\t\t\t\t\t\twrapperClassName={styles['MrlPopover--close']}\n\t\t\t\t\t\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\t\t\t\t\t\tkind={kind === 'inverse' ? 'ghost-inverse' : 'ghost'}\n\t\t\t\t\t\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t\t\t\t\t\tposition=\"right\"\n\t\t\t\t\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseUp={closeMenu}\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={handleClose}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{point && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={styles['MrlPopover--point']}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-point={getDataPoint(menuPositionState, alignment)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</MrlPopoverScrollContainer>\n\t\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t\t</MrlFocusTrap>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t/* eslint-disable */\n\treturn (\n\t\t<MrlPopoverContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.POPOVER} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlPopoverContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlPopover.componentType = 'Popover';\n"],"names":["POPOVER_CLICKOUTSIDE_WHITELIST","concat","SELECT_MENU_LIST_CLASS_NAME","MULTI_SELECT_MENU_LIST_CLASS_NAME","MrlPopover","_ref","_ref$alignment","alignment","ariaLabel","ariaLabelledBy","children","className","customPosition","_ref$disableClickToOp","disableClickToOpen","_ref$disableClickOuts","disableClickOutside","_ref$disableFlipping","disableFlipping","_ref$disableFocusTrap","disableFocusTrap","_ref$hasCloseButton","hasCloseButton","_ref$spacing","spacing","id","_ref$isSubMenu","isSubMenu","_ref$actionState","actionState","actionType","isOpen","_ref$position","position","_ref$point","point","_ref$portalProps","portalProps","PORTAL_LAYERS","POPOVER","name","_ref$kind","kind","offset","onClose","onOpen","triggerRef","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","_React$useState3","_React$useState4","interactiveElements","setInteractiveElements","_React$useState5","_React$useState6","menuRect","setMenuRect","menuRef","useRef","triggerExpandedRestoreRef","isTriggerDisabled","useCallback","isElementAriaDisabled","current","closeMenu","_useMrlPopoverEventHa","useMrlPopoverEventHandlers","handleClose","handleMenuKey","hideMenuHover","handleTriggerSiblingKey","toggleMenuKey","toggleMenuTrigger","showMenuHover","useClickOutside","useEffect","useLayoutEffect","_menuRef$current","newRect","getBoundingClientRect","elements","getFocusableElementsInsideElement","focus","triggerElement","menuElement","nextElement","findAdjacentInteractiveElement","addEventListener","e","stopPropagation","removeEventListener","preventDefault","el","previousValue","getAttribute","setAttribute","removeAttribute","value","hasAttribute","toString","_document","_document$documentEle","snap","document","documentElement","contains","memoizedCustomPosition","useMemo","customPopoverPosition","left","top","menuPosition","useTriggerPosition","align","getOffset","subMenuPosition","useSubMenuElementPosition","menuPositionState","flipped","flipPosition","scrollStyles","useBrowserEdgeScroll","inlineStyles","menu","submenu","transitions","useTransition","config","duration","enter","opacity","transform","from","leave","menuClasses","classnames","styles","_defineProperty","positionStyles","renderMenu","inlineScrollStyles","scrollClasses","createElement","Fragment","style","item","MrlFocusTrap","disabled","containerRef","animated","div","_extends","tabIndex","_objectSpread","onKeyDown","ref","MrlPopoverScrollContainer","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","close","text","tipAnchor","onMouseUp","size","getDataPoint","MrlPopoverContext","Provider","MrlPortal","layer","componentType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlPopover.js","sources":["../../../../../src/components/popover/MrlPopover/MrlPopover.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { close } from '@muraldevkit/ds-icons';\nimport { MrlFocusTrap, MrlIconButton, MrlPortal, MrlSvg, PortalProps } from '../../';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useBrowserEdgeScroll } from '../../menu/hooks/useBrowserEdgeScroll';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../../menu/hooks/useSubMenuElementPosition';\nimport { MenuPosition, MenuAlignment, ActionState, CustomMenuPosition } from '../../menu/constants';\nimport {\n\tpreventDefault,\n\tgetFocusableElementsInsideElement,\n\tfindAdjacentInteractiveElement,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport { useTransition, animated } from '@react-spring/web';\nimport { SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlSelect/MrlSelect';\nimport { MULTI_SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlMultiSelect/MrlMultiSelect';\nimport styles from './MrlPopover.module.scss';\nimport { flipPosition } from '../../menu/utilities/flip-position';\nimport { getDataPoint } from './utilities/get-data-point';\nimport { getOffset } from './utilities/get-offset';\nimport { useMrlPopoverEventHandlers } from './hooks/use-mrl-popover-event-handlers';\nimport { MrlPopoverContext } from './context/MrlPopoverContext';\nimport { MrlPopoverScrollContainer } from './MrlPopoverScrollContainer';\n\nconst POPOVER_CLICKOUTSIDE_WHITELIST = [\n\t'#mrl-select-portal',\n\t'#mrl-popover-menu-portal',\n\t`.${SELECT_MENU_LIST_CLASS_NAME}`,\n\t`.${MULTI_SELECT_MENU_LIST_CLASS_NAME}`\n];\n\ntype RenderPropFn = ({ closeMenu }: { closeMenu: () => void }) => JSX.Element;\n\nexport interface MrlPopoverProps {\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/** Label for the popover */\n\tariaLabel?: string;\n\n\t/** ID of element to associate a label */\n\tariaLabelledBy?: string;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode | RenderPropFn;\n\n\t/** Custom class names for the popover */\n\tclassName?: string;\n\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/**\n\t * If the popover should disable click to open\n\t *\n\t * Example usage: if you do not want your component opened via click, set to true\n\t */\n\tdisableClickToOpen?: boolean;\n\n\t/**\n\t * If the popover should close when clicking outside of the menu\n\t *\n\t * Example usage: MrlCallout component should not close when clicking outside, so it's set to true\n\t */\n\tdisableClickOutside?: boolean;\n\n\t/**\n\t * Disable flipping of the popover when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/**\n\t * If the popover should disable focus trap\n\t *\n\t * The impact of enabling or disabling focus trap:\n\t * - enabled : focus will remain trapped in the popover until a user closes the popover\n\t * - disabled : focus will move to the next interactive element in the DOM when the user\n\t * tabs out of the popover. Focus will move to the trigger when the user shift+tabs out of the popover\n\t *\n\t * Additional scenarios to consider with focus trap is disabled. When hasCloseButton is set to true/false:\n\t * - true : if a user shows the close button, the popover will stay open until explicitly dismissed\n\t * - false : if a user hides the close button, the popover will close when a user tabs out of it from the beginning or end\n\t */\n\tdisableFocusTrap?: boolean;\n\n\t/** If the popover should have a close button */\n\thasCloseButton?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/** If the menu is a submenu */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t *\n\t * This does not impact submenus\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Alignment of the popover along the axis perpendicular to its position\n\t * - For position 'top'/'bottom': 'start' = left, 'end' = right, 'center' = center horizontally\n\t * - For position 'left'/'right': 'start' = top, 'end' = bottom, 'center' = center vertically\n\t *\n\t * @default 'center'\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * spacing of menu\n\t * - 'default' has 16px padding\n\t * - 'compact' has 12px padding\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLElement>;\n\n\t/**\n\t * If the menu should be rendered with the inverse theme\n\t * @default 'primary'\n\t */\n\tkind?: 'primary' | 'inverse';\n\n\t/**\n\t * If the menu should have a pointer element\n\t * @default false\n\t */\n\tpoint?: boolean;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Offset in pixels for the popover\n\t *\n\t * The popover automatically calculates the proper offset based on the position and alignment\n\t * this prop will override those values.\n\t */\n\toffset?: number;\n\n\t/**\n\t * Callback to be called when the menu is opened\n\t */\n\tonOpen?: () => void;\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\t/**\n\t * data-qa attribute for the popover\n\t */\n\t['data-qa']?: string;\n}\n\n/**\n * MrlPopover\n *\n * Renders a popover component with position and alignment relative to a trigger element\n * @param {MrlPopoverProps} props - The props for the MrlPopover component\n * @returns {Element} - rendered MrlPopover component\n */\nexport function MrlPopover({\n\talignment = 'center',\n\tariaLabel,\n\tariaLabelledBy,\n\tchildren,\n\tclassName,\n\tcustomPosition,\n\tdisableClickToOpen = false,\n\tdisableClickOutside = false,\n\tdisableFlipping = false,\n\tdisableFocusTrap = false,\n\thasCloseButton = false,\n\tspacing = 'default',\n\tid,\n\tisSubMenu = false,\n\tactionState = { actionType: null, isOpen: false },\n\tposition = 'bottom',\n\tpoint = true,\n\tportalProps = { id: PORTAL_LAYERS.POPOVER.name },\n\tkind = 'primary',\n\toffset,\n\tonClose,\n\tonOpen,\n\ttriggerRef,\n\t...rest\n}: MrlPopoverProps): JSX.Element {\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: actionState.isOpen || false\n\t} as ActionState);\n\n\t// stores all of the interactive elements in the popover for focus management\n\tconst [interactiveElements, setInteractiveElements] = React.useState<HTMLElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\t/** Snapshot of trigger `aria-expanded` before we manage it; restored on popover unmount only. */\n\tconst triggerExpandedRestoreRef = React.useRef<{\n\t\tel: HTMLElement;\n\t\tvalue: string | null;\n\t} | 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 * Opening and closing the menu\n\t */\n\tconst closeMenu = React.useCallback(() => {\n\t\tsetState({ actionType: null, isOpen: false });\n\t\tonClose?.();\n\t}, [onClose]);\n\n\tconst {\n\t\thandleClose,\n\t\thandleMenuKey,\n\t\thideMenuHover,\n\t\thandleTriggerSiblingKey,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\tshowMenuHover\n\t} = useMrlPopoverEventHandlers({\n\t\tcloseMenu,\n\t\tdisableClickToOpen,\n\t\tdisableFocusTrap,\n\t\thasCloseButton,\n\t\tinteractiveElements,\n\t\tisSubMenu,\n\t\tisTriggerDisabled,\n\t\tmenuRef,\n\t\tsetState,\n\t\tstate,\n\t\ttriggerRef\n\t});\n\n\tuseClickOutside(\n\t\tmenuRef,\n\t\ttriggerRef,\n\t\t'mouseup',\n\t\tcloseMenu,\n\t\tdisableClickOutside || !state.isOpen,\n\t\tPOPOVER_CLICKOUTSIDE_WHITELIST\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isTriggerDisabled()) return;\n\n\t\tif (!isSubMenu) {\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isSubMenu, actionState.actionType, actionState.isOpen]);\n\n\t// This use effect handles storing the rect in state for positioning calculations\n\tReact.useLayoutEffect(() => {\n\t\tif (!state.isOpen) return;\n\n\t\t// For consistent 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, isSubMenu]);\n\n\t// This use effect handles getting and setting the interactive elements in the popover.\n\t// These elements are used for focus management when focus trap is not enabled to ensure\n\t// that our tab order matches the visual order of the page\n\tReact.useEffect(() => {\n\t\tif (state.isOpen && !isSubMenu && menuRef.current) {\n\t\t\tif (disableFocusTrap) {\n\t\t\t\t// set the interactive elements so we can track focus location\n\t\t\t\tconst elements = getFocusableElementsInsideElement(menuRef.current as HTMLElement);\n\t\t\t\tsetInteractiveElements(elements);\n\n\t\t\t\t// without focus trap enabled, we want to focus the first interactive element\n\t\t\t\telements[0].focus();\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRef.current]);\n\n\t// This use effect handles setting all of the event handlers for different parts of the component.\n\t// - trigger event handlers\n\t// - submenu event handlers\n\t// - menu event handlers\n\t// - \"next element\" event handlers, which are event handlers attached to the next interactive element after the trigger\n\t//\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef, 'next');\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', (e) => e.stopPropagation());\n\t\t\ttriggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\tif (nextElement) nextElement.addEventListener('keydown', handleTriggerSiblingKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\tconst menuElement = menuRef?.current;\n\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\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\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\ttriggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (nextElement) nextElement.removeEventListener('keydown', handleTriggerSiblingKey);\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 (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\t\t\t};\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\tcloseMenu,\n\t\tisSubMenu,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\ttriggerRef?.current,\n\t\thideMenuHover,\n\t\tshowMenuHover,\n\t\thasCloseButton,\n\t\thandleClose\n\t]);\n\n\t/**\n\t * Popover triggers are not necessarily modal dialogs; use the generic 'true' (see ARIA in HTML).\n\t * Restore the previous DOM value when the trigger changes or this popover unmounts so host-owned\n\t * ARIA (e.g. aria-haspopup=\"menu\") is not left stale after a callout dismisses.\n\t */\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\tconst previousValue = el.getAttribute('aria-haspopup');\n\t\tel.setAttribute('aria-haspopup', 'true');\n\n\t\t// Restore the previous value of the aria-haspopup attribute when the callout is removed from the DOM\n\t\treturn () => {\n\t\t\tif (previousValue === null) {\n\t\t\t\tel.removeAttribute('aria-haspopup');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-haspopup', previousValue);\n\t\t\t}\n\t\t};\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [triggerRef?.current]);\n\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\t// Store the previous value of the aria-expanded attribute when the callout is added to the DOM\n\t\tif (!triggerExpandedRestoreRef.current || triggerExpandedRestoreRef.current.el !== el) {\n\t\t\ttriggerExpandedRestoreRef.current = {\n\t\t\t\tel,\n\t\t\t\tvalue: el.hasAttribute('aria-expanded') ? el.getAttribute('aria-expanded') : null\n\t\t\t};\n\t\t}\n\n\t\t// Set the aria-expanded attribute to the current state of the popover\n\t\tel.setAttribute('aria-expanded', state.isOpen.toString());\n\n\t\tif (state.isOpen) onOpen?.();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, onOpen, triggerRef?.current]);\n\n\t/**\n\t * Restore the previous value of the aria-expanded attribute when the callout is removed from the DOM\n\t */\n\tReact.useEffect(() => {\n\t\treturn () => {\n\t\t\tconst snap = triggerExpandedRestoreRef.current;\n\t\t\tif (!snap) return;\n\t\t\tconst { el, value } = snap;\n\n\t\t\tif (!document?.documentElement?.contains(el)) return;\n\n\t\t\tif (value === null) {\n\t\t\t\tel.removeAttribute('aria-expanded');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-expanded', value);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\t/**\n\t * Setup positioning styles, submenu positioning styles, scroll styles, and transition.\n\t */\n\tconst memoizedCustomPosition = React.useMemo(() => customPosition, [customPosition]);\n\tconst customPopoverPosition = memoizedCustomPosition || { left: 0, top: 0 };\n\n\tconst menuPosition = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPopoverPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\toffset || getOffset(position, point),\n\t\tisSubMenu,\n\t\tdisableFlipping\n\t);\n\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t!isSubMenu\n\t);\n\n\tconst menuPositionState = menuPosition.flipped ? flipPosition(position) : position;\n\tconst scrollStyles = useBrowserEdgeScroll(menuRef, menuPositionState, alignment);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPosition.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPosition.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 transitions = useTransition(state.isOpen, {\n\t\tconfig: { duration: 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 menuClasses = classnames(\n\t\tstyles['MrlPopover'],\n\t\t'MrlPopover',\n\t\tstyles['MrlPopover--scrolling'],\n\t\tclassName,\n\t\t{\n\t\t\t[styles['MrlPopover--submenu']]: isSubMenu,\n\t\t\t[styles['inverse']]: kind === 'inverse',\n\t\t\t[styles['primary']]: kind === 'primary',\n\t\t\t[styles['compact']]: spacing === 'compact',\n\t\t\t[styles['default']]: spacing === 'default'\n\t\t}\n\t);\n\n\tconst positionStyles = isSubMenu ? inlineStyles.submenu : inlineStyles.menu;\n\n\tconst renderMenu = () => {\n\t\tconst inlineScrollStyles = isSubMenu ? {} : scrollStyles ? scrollStyles.styles : {};\n\t\tconst scrollClasses = classnames(\n\t\t\tstyles['MrlPopover--content'],\n\t\t\tstyles['MrlPopover--scrolling--content']\n\t\t);\n\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<MrlFocusTrap disabled={disableFocusTrap} containerRef={menuRef}>\n\t\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MrlPopoverScrollContainer className={scrollClasses} style={inlineScrollStyles}>\n\t\t\t\t\t\t\t\t\t\t{typeof children === 'function' && children({ closeMenu })}\n\t\t\t\t\t\t\t\t\t\t{typeof children !== 'function' && children}\n\t\t\t\t\t\t\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\t\t\t\t\tdata-qa=\"popover-close-button\"\n\t\t\t\t\t\t\t\t\t\t\t\twrapperClassName={styles['MrlPopover--close']}\n\t\t\t\t\t\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\t\t\t\t\t\tkind={kind === 'inverse' ? 'ghost-inverse' : 'ghost'}\n\t\t\t\t\t\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t\t\t\t\t\tposition=\"right\"\n\t\t\t\t\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseUp={closeMenu}\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={handleClose}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{point && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={styles['MrlPopover--point']}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-point={getDataPoint(menuPositionState, alignment)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</MrlPopoverScrollContainer>\n\t\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t\t</MrlFocusTrap>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t/* eslint-disable */\n\treturn (\n\t\t<MrlPopoverContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.POPOVER} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlPopoverContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlPopover.componentType = 'Popover';\n"],"names":["POPOVER_CLICKOUTSIDE_WHITELIST","concat","SELECT_MENU_LIST_CLASS_NAME","MULTI_SELECT_MENU_LIST_CLASS_NAME","MrlPopover","_ref","_ref$alignment","alignment","ariaLabel","ariaLabelledBy","children","className","customPosition","_ref$disableClickToOp","disableClickToOpen","_ref$disableClickOuts","disableClickOutside","_ref$disableFlipping","disableFlipping","_ref$disableFocusTrap","disableFocusTrap","_ref$hasCloseButton","hasCloseButton","_ref$spacing","spacing","id","_ref$isSubMenu","isSubMenu","_ref$actionState","actionState","actionType","isOpen","_ref$position","position","_ref$point","point","_ref$portalProps","portalProps","PORTAL_LAYERS","POPOVER","name","_ref$kind","kind","offset","onClose","onOpen","triggerRef","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","_React$useState3","_React$useState4","interactiveElements","setInteractiveElements","_React$useState5","_React$useState6","menuRect","setMenuRect","menuRef","useRef","triggerExpandedRestoreRef","isTriggerDisabled","useCallback","isElementAriaDisabled","current","closeMenu","_useMrlPopoverEventHa","useMrlPopoverEventHandlers","handleClose","handleMenuKey","hideMenuHover","handleTriggerSiblingKey","toggleMenuKey","toggleMenuTrigger","showMenuHover","useClickOutside","useEffect","useLayoutEffect","_menuRef$current","newRect","getBoundingClientRect","elements","getFocusableElementsInsideElement","focus","triggerElement","menuElement","nextElement","findAdjacentInteractiveElement","addEventListener","e","stopPropagation","removeEventListener","preventDefault","el","previousValue","getAttribute","setAttribute","removeAttribute","value","hasAttribute","toString","_document","_document$documentEle","snap","document","documentElement","contains","memoizedCustomPosition","useMemo","customPopoverPosition","left","top","menuPosition","useTriggerPosition","align","getOffset","subMenuPosition","useSubMenuElementPosition","menuPositionState","flipped","flipPosition","scrollStyles","useBrowserEdgeScroll","inlineStyles","menu","submenu","transitions","useTransition","config","duration","enter","opacity","transform","from","leave","menuClasses","classnames","styles","positionStyles","renderMenu","inlineScrollStyles","scrollClasses","createElement","Fragment","style","item","MrlFocusTrap","disabled","containerRef","animated","div","_extends","tabIndex","_objectSpread","onKeyDown","ref","MrlPopoverScrollContainer","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","close","text","tipAnchor","onMouseUp","size","getDataPoint","MrlPopoverContext","Provider","MrlPortal","layer","componentType"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { findAdjacentInteractiveElement } from '../../../../utils/findAdjacentIn
|
|
|
8
8
|
* @param options configuration options
|
|
9
9
|
* @returns all of the required event handlers
|
|
10
10
|
*/
|
|
11
|
-
var useMrlPopoverEventHandlers =
|
|
11
|
+
var useMrlPopoverEventHandlers = _ref => {
|
|
12
12
|
var closeMenu = _ref.closeMenu,
|
|
13
13
|
isSubMenu = _ref.isSubMenu,
|
|
14
14
|
disableFocusTrap = _ref.disableFocusTrap,
|
|
@@ -23,7 +23,7 @@ var useMrlPopoverEventHandlers = function useMrlPopoverEventHandlers(_ref) {
|
|
|
23
23
|
/**
|
|
24
24
|
* Sets up trigger event listeners to open and close the menu with a keyboard
|
|
25
25
|
*/
|
|
26
|
-
var toggleMenuKey = React.useCallback(
|
|
26
|
+
var toggleMenuKey = React.useCallback(e => {
|
|
27
27
|
if (!state.isOpen) {
|
|
28
28
|
switch (e.key) {
|
|
29
29
|
case 'ArrowRight':
|
|
@@ -77,26 +77,24 @@ var useMrlPopoverEventHandlers = function useMrlPopoverEventHandlers(_ref) {
|
|
|
77
77
|
* Sets up trigger event listeners to open and close the menu
|
|
78
78
|
*
|
|
79
79
|
*/
|
|
80
|
-
var toggleMenuTrigger = React.useCallback(
|
|
80
|
+
var toggleMenuTrigger = React.useCallback(() => {
|
|
81
81
|
if (disableClickToOpen || isTriggerDisabled()) return;
|
|
82
|
-
setState(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
};
|
|
87
|
-
});
|
|
82
|
+
setState(prevState => ({
|
|
83
|
+
actionType: 'click',
|
|
84
|
+
isOpen: !prevState.isOpen
|
|
85
|
+
}));
|
|
88
86
|
}, [disableClickToOpen, isTriggerDisabled, setState]);
|
|
89
87
|
|
|
90
88
|
/**
|
|
91
89
|
* Used to display the menu when hovering over a menu item that has a submenu
|
|
92
90
|
*/
|
|
93
|
-
var showMenuHover = React.useCallback(
|
|
91
|
+
var showMenuHover = React.useCallback(() => {
|
|
94
92
|
setState({
|
|
95
93
|
actionType: 'click',
|
|
96
94
|
isOpen: true
|
|
97
95
|
});
|
|
98
96
|
}, [setState]);
|
|
99
|
-
var hideMenuHover = React.useCallback(
|
|
97
|
+
var hideMenuHover = React.useCallback(event => {
|
|
100
98
|
// event.relatedTarget is a property utilized in mouse-related events such as `mouseover` and `mouseout`
|
|
101
99
|
// It signifies the element that was previously targeted before the current event occurred.
|
|
102
100
|
//
|
|
@@ -119,7 +117,7 @@ var useMrlPopoverEventHandlers = function useMrlPopoverEventHandlers(_ref) {
|
|
|
119
117
|
*
|
|
120
118
|
* @param e - keyboard event
|
|
121
119
|
*/
|
|
122
|
-
var handleMenuKey =
|
|
120
|
+
var handleMenuKey = e => {
|
|
123
121
|
var _triggerRef$current;
|
|
124
122
|
if (state.isOpen) {
|
|
125
123
|
switch (e.key) {
|
|
@@ -176,7 +174,7 @@ var useMrlPopoverEventHandlers = function useMrlPopoverEventHandlers(_ref) {
|
|
|
176
174
|
*
|
|
177
175
|
* @param e - keyboard event
|
|
178
176
|
*/
|
|
179
|
-
var handleTriggerSiblingKey =
|
|
177
|
+
var handleTriggerSiblingKey = e => {
|
|
180
178
|
if (state.isOpen && disableFocusTrap) {
|
|
181
179
|
switch (e.key) {
|
|
182
180
|
case 'Tab':
|
|
@@ -188,7 +186,7 @@ var useMrlPopoverEventHandlers = function useMrlPopoverEventHandlers(_ref) {
|
|
|
188
186
|
}
|
|
189
187
|
}
|
|
190
188
|
};
|
|
191
|
-
var handleClose = React.useCallback(
|
|
189
|
+
var handleClose = React.useCallback(e => {
|
|
192
190
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
193
191
|
var _triggerRef$current3;
|
|
194
192
|
closeMenu();
|
|
@@ -198,13 +196,13 @@ var useMrlPopoverEventHandlers = function useMrlPopoverEventHandlers(_ref) {
|
|
|
198
196
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
199
197
|
[closeMenu, disableFocusTrap]);
|
|
200
198
|
return {
|
|
201
|
-
handleClose
|
|
202
|
-
handleMenuKey
|
|
203
|
-
handleTriggerSiblingKey
|
|
204
|
-
hideMenuHover
|
|
205
|
-
showMenuHover
|
|
206
|
-
toggleMenuKey
|
|
207
|
-
toggleMenuTrigger
|
|
199
|
+
handleClose,
|
|
200
|
+
handleMenuKey,
|
|
201
|
+
handleTriggerSiblingKey,
|
|
202
|
+
hideMenuHover,
|
|
203
|
+
showMenuHover,
|
|
204
|
+
toggleMenuKey,
|
|
205
|
+
toggleMenuTrigger
|
|
208
206
|
};
|
|
209
207
|
};
|
|
210
208
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-mrl-popover-event-handlers.js","sources":["../../../../../../src/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.ts"],"sourcesContent":["import * as React from 'react';\nimport { ActionState, ActionType } from '../../../menu';\nimport { MrlPopoverProps } from '../MrlPopover';\nimport { findAdjacentInteractiveElement, preventDefault } from '../../../../utils';\n\ntype UseMrlPopoverEventHandlersOptions = {\n\tcloseMenu: () => void;\n\tisSubMenu: MrlPopoverProps['isSubMenu'];\n\tdisableFocusTrap: MrlPopoverProps['disableFocusTrap'];\n\tdisableClickToOpen: MrlPopoverProps['disableClickToOpen'];\n\thasCloseButton: MrlPopoverProps['hasCloseButton'];\n\tinteractiveElements: HTMLElement[];\n\tmenuRef: React.RefObject<HTMLDivElement>;\n\tstate: ActionState;\n\tsetState: React.Dispatch<React.SetStateAction<ActionState>>;\n\ttriggerRef: MrlPopoverProps['triggerRef'];\n\tisTriggerDisabled: () => boolean;\n};\n\ntype UseMrlPopoverEventHandlersReturn = {\n\thandleClose: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n\thandleMenuKey: (e: React.KeyboardEvent) => void;\n\thandleTriggerSiblingKey: (e: KeyboardEvent) => void;\n\thideMenuHover: (e: MouseEvent) => void;\n\tshowMenuHover: () => void;\n\ttoggleMenuKey: (e: KeyboardEvent) => void;\n\ttoggleMenuTrigger: () => void;\n};\n\n/**\n * Creates all of the required event handlers for the MrlPopover component\n *\n * @param options configuration options\n * @returns all of the required event handlers\n */\nexport const useMrlPopoverEventHandlers = ({\n\tcloseMenu,\n\tisSubMenu,\n\tdisableFocusTrap,\n\tdisableClickToOpen,\n\thasCloseButton,\n\tinteractiveElements,\n\tmenuRef,\n\tstate,\n\tsetState,\n\ttriggerRef,\n\tisTriggerDisabled\n}: UseMrlPopoverEventHandlersOptions): UseMrlPopoverEventHandlersReturn => {\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\tif (!state.isOpen) {\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tif (isSubMenu) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tsetState({ actionType: 'click', isOpen: true });\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 (!disableClickToOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\t\tif (!isSubMenu && !disableClickToOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (state.isOpen) {\n\t\t\t\t// When focus is on the trigger and the popover is open, if a user presses \"tab\"\n\t\t\t\t// we want to move focus to the first interactive element of the popover\n\t\t\t\t// so that the tab order of the DOM follows the visual order of the page\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'Tab':\n\t\t\t\t\t\tif (!e.shiftKey && disableFocusTrap) {\n\t\t\t\t\t\t\tif (document.activeElement === triggerRef?.current) {\n\t\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\t\tinteractiveElements[0].focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[disableFocusTrap, state.isOpen, interactiveElements]\n\t);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu\n\t *\n\t */\n\tconst toggleMenuTrigger = React.useCallback(() => {\n\t\tif (disableClickToOpen || isTriggerDisabled()) return;\n\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t}, [disableClickToOpen, isTriggerDisabled, setState]);\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}, [setState]);\n\n\tconst hideMenuHover = React.useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\t// event.relatedTarget is a property utilized in mouse-related events such as `mouseover` and `mouseout`\n\t\t\t// It signifies the element that was previously targeted before the current event occurred.\n\t\t\t//\n\t\t\t// For instance, in a `mouseover` event, `event.relatedTarget` refers to the\n\t\t\t// element the cursor was over before moving to the current element.\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\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, menuRef, setState]\n\t);\n\n\t/**\n\t * Focus management when someone is using a keyboard to navigate the menu\n\t *\n\t * @param e - keyboard event\n\t */\n\tconst handleMenuKey = (e: React.KeyboardEvent) => {\n\t\tif (state.isOpen) {\n\t\t\tswitch (e.key) {\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();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Tab':\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tif (disableFocusTrap) {\n\t\t\t\t\t\tconst first = interactiveElements[0];\n\t\t\t\t\t\tconst last = interactiveElements[interactiveElements.length - 1];\n\t\t\t\t\t\tconst isShiftKey = e.shiftKey;\n\n\t\t\t\t\t\t// If the first or last interactive element is focused, we want to move focus to the trigger\n\t\t\t\t\t\t// and close the menu. If the last iteractive element is focused, we are checking that the shift\n\t\t\t\t\t\t// key is not held down. Otherwise the popover will close when you press shift+tab on an element\n\t\t\t\t\t\t// that is not the first one.\n\t\t\t\t\t\tif (isShiftKey && document.activeElement === first) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\ttriggerRef?.current?.focus();\n\t\t\t\t\t\t\tif (!hasCloseButton) setState({ actionType: null, isOpen: false });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!isShiftKey && document.activeElement === last) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tfindAdjacentInteractiveElement(triggerRef, 'next')?.focus();\n\t\t\t\t\t\t\tif (!hasCloseButton) setState({ actionType: null, isOpen: false });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * When focus trap is disabled, we need to handle moving focus back to the popover when you\n\t * shift+tab from the interactive element immediately after the trigger. This will allow us\n\t * to maintain a tab order that matches the visual order on the page.\n\t *\n\t * @param e - keyboard event\n\t */\n\tconst handleTriggerSiblingKey = (e: KeyboardEvent) => {\n\t\tif (state.isOpen && disableFocusTrap) {\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tinteractiveElements[interactiveElements.length - 1].focus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleClose = React.useCallback(\n\t\t(e: React.KeyboardEvent<HTMLButtonElement>) => {\n\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\tcloseMenu();\n\t\t\t\tif (disableFocusTrap) triggerRef?.current?.focus();\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[closeMenu, disableFocusTrap]\n\t);\n\n\treturn {\n\t\thandleClose,\n\t\thandleMenuKey,\n\t\thandleTriggerSiblingKey,\n\t\thideMenuHover,\n\t\tshowMenuHover,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger\n\t};\n};\n"],"names":["useMrlPopoverEventHandlers","_ref","closeMenu","isSubMenu","disableFocusTrap","disableClickToOpen","hasCloseButton","interactiveElements","menuRef","state","setState","triggerRef","isTriggerDisabled","toggleMenuKey","React","useCallback","e","isOpen","key","preventDefault","actionType","shiftKey","document","activeElement","current","focus","toggleMenuTrigger","prevState","showMenuHover","hideMenuHover","event","relatedTarget","contains","handleMenuKey","_triggerRef$current","stopPropagation","first","last","length","isShiftKey","_triggerRef$current2","_findAdjacentInteract","findAdjacentInteractiveElement","handleTriggerSiblingKey","handleClose","_triggerRef$current3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-mrl-popover-event-handlers.js","sources":["../../../../../../src/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.ts"],"sourcesContent":["import * as React from 'react';\nimport { ActionState, ActionType } from '../../../menu';\nimport { MrlPopoverProps } from '../MrlPopover';\nimport { findAdjacentInteractiveElement, preventDefault } from '../../../../utils';\n\ntype UseMrlPopoverEventHandlersOptions = {\n\tcloseMenu: () => void;\n\tisSubMenu: MrlPopoverProps['isSubMenu'];\n\tdisableFocusTrap: MrlPopoverProps['disableFocusTrap'];\n\tdisableClickToOpen: MrlPopoverProps['disableClickToOpen'];\n\thasCloseButton: MrlPopoverProps['hasCloseButton'];\n\tinteractiveElements: HTMLElement[];\n\tmenuRef: React.RefObject<HTMLDivElement>;\n\tstate: ActionState;\n\tsetState: React.Dispatch<React.SetStateAction<ActionState>>;\n\ttriggerRef: MrlPopoverProps['triggerRef'];\n\tisTriggerDisabled: () => boolean;\n};\n\ntype UseMrlPopoverEventHandlersReturn = {\n\thandleClose: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n\thandleMenuKey: (e: React.KeyboardEvent) => void;\n\thandleTriggerSiblingKey: (e: KeyboardEvent) => void;\n\thideMenuHover: (e: MouseEvent) => void;\n\tshowMenuHover: () => void;\n\ttoggleMenuKey: (e: KeyboardEvent) => void;\n\ttoggleMenuTrigger: () => void;\n};\n\n/**\n * Creates all of the required event handlers for the MrlPopover component\n *\n * @param options configuration options\n * @returns all of the required event handlers\n */\nexport const useMrlPopoverEventHandlers = ({\n\tcloseMenu,\n\tisSubMenu,\n\tdisableFocusTrap,\n\tdisableClickToOpen,\n\thasCloseButton,\n\tinteractiveElements,\n\tmenuRef,\n\tstate,\n\tsetState,\n\ttriggerRef,\n\tisTriggerDisabled\n}: UseMrlPopoverEventHandlersOptions): UseMrlPopoverEventHandlersReturn => {\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\tif (!state.isOpen) {\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tif (isSubMenu) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tsetState({ actionType: 'click', isOpen: true });\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 (!disableClickToOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\t\tif (!isSubMenu && !disableClickToOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (state.isOpen) {\n\t\t\t\t// When focus is on the trigger and the popover is open, if a user presses \"tab\"\n\t\t\t\t// we want to move focus to the first interactive element of the popover\n\t\t\t\t// so that the tab order of the DOM follows the visual order of the page\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'Tab':\n\t\t\t\t\t\tif (!e.shiftKey && disableFocusTrap) {\n\t\t\t\t\t\t\tif (document.activeElement === triggerRef?.current) {\n\t\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\t\tinteractiveElements[0].focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[disableFocusTrap, state.isOpen, interactiveElements]\n\t);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu\n\t *\n\t */\n\tconst toggleMenuTrigger = React.useCallback(() => {\n\t\tif (disableClickToOpen || isTriggerDisabled()) return;\n\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t}, [disableClickToOpen, isTriggerDisabled, setState]);\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}, [setState]);\n\n\tconst hideMenuHover = React.useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\t// event.relatedTarget is a property utilized in mouse-related events such as `mouseover` and `mouseout`\n\t\t\t// It signifies the element that was previously targeted before the current event occurred.\n\t\t\t//\n\t\t\t// For instance, in a `mouseover` event, `event.relatedTarget` refers to the\n\t\t\t// element the cursor was over before moving to the current element.\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\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, menuRef, setState]\n\t);\n\n\t/**\n\t * Focus management when someone is using a keyboard to navigate the menu\n\t *\n\t * @param e - keyboard event\n\t */\n\tconst handleMenuKey = (e: React.KeyboardEvent) => {\n\t\tif (state.isOpen) {\n\t\t\tswitch (e.key) {\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();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Tab':\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tif (disableFocusTrap) {\n\t\t\t\t\t\tconst first = interactiveElements[0];\n\t\t\t\t\t\tconst last = interactiveElements[interactiveElements.length - 1];\n\t\t\t\t\t\tconst isShiftKey = e.shiftKey;\n\n\t\t\t\t\t\t// If the first or last interactive element is focused, we want to move focus to the trigger\n\t\t\t\t\t\t// and close the menu. If the last iteractive element is focused, we are checking that the shift\n\t\t\t\t\t\t// key is not held down. Otherwise the popover will close when you press shift+tab on an element\n\t\t\t\t\t\t// that is not the first one.\n\t\t\t\t\t\tif (isShiftKey && document.activeElement === first) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\ttriggerRef?.current?.focus();\n\t\t\t\t\t\t\tif (!hasCloseButton) setState({ actionType: null, isOpen: false });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!isShiftKey && document.activeElement === last) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tfindAdjacentInteractiveElement(triggerRef, 'next')?.focus();\n\t\t\t\t\t\t\tif (!hasCloseButton) setState({ actionType: null, isOpen: false });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * When focus trap is disabled, we need to handle moving focus back to the popover when you\n\t * shift+tab from the interactive element immediately after the trigger. This will allow us\n\t * to maintain a tab order that matches the visual order on the page.\n\t *\n\t * @param e - keyboard event\n\t */\n\tconst handleTriggerSiblingKey = (e: KeyboardEvent) => {\n\t\tif (state.isOpen && disableFocusTrap) {\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tinteractiveElements[interactiveElements.length - 1].focus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleClose = React.useCallback(\n\t\t(e: React.KeyboardEvent<HTMLButtonElement>) => {\n\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\tcloseMenu();\n\t\t\t\tif (disableFocusTrap) triggerRef?.current?.focus();\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[closeMenu, disableFocusTrap]\n\t);\n\n\treturn {\n\t\thandleClose,\n\t\thandleMenuKey,\n\t\thandleTriggerSiblingKey,\n\t\thideMenuHover,\n\t\tshowMenuHover,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger\n\t};\n};\n"],"names":["useMrlPopoverEventHandlers","_ref","closeMenu","isSubMenu","disableFocusTrap","disableClickToOpen","hasCloseButton","interactiveElements","menuRef","state","setState","triggerRef","isTriggerDisabled","toggleMenuKey","React","useCallback","e","isOpen","key","preventDefault","actionType","shiftKey","document","activeElement","current","focus","toggleMenuTrigger","prevState","showMenuHover","hideMenuHover","event","relatedTarget","contains","handleMenuKey","_triggerRef$current","stopPropagation","first","last","length","isShiftKey","_triggerRef$current2","_findAdjacentInteract","findAdjacentInteractiveElement","handleTriggerSiblingKey","handleClose","_triggerRef$current3"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @param alignment - alignment of the menu
|
|
6
6
|
* @returns - data-point attribute value
|
|
7
7
|
*/
|
|
8
|
-
var getDataPoint =
|
|
8
|
+
var getDataPoint = (position, alignment) => {
|
|
9
9
|
return "".concat(position, "-").concat(alignment);
|
|
10
10
|
};
|
|
11
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-data-point.js","sources":["../../../../../../src/components/popover/MrlPopover/utilities/get-data-point.ts"],"sourcesContent":["import { MenuAlignment, MenuPosition } from '../../../menu';\n\n/**\n * Returns the data-point attribute for the popover pointer\n *\n * @param position - position of the menu\n * @param alignment - alignment of the menu\n * @returns - data-point attribute value\n */\nexport const getDataPoint = (position: MenuPosition, alignment: MenuAlignment): string => {\n\treturn `${position}-${alignment}`;\n};\n"],"names":["getDataPoint","position","alignment","concat"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"get-data-point.js","sources":["../../../../../../src/components/popover/MrlPopover/utilities/get-data-point.ts"],"sourcesContent":["import { MenuAlignment, MenuPosition } from '../../../menu';\n\n/**\n * Returns the data-point attribute for the popover pointer\n *\n * @param position - position of the menu\n * @param alignment - alignment of the menu\n * @returns - data-point attribute value\n */\nexport const getDataPoint = (position: MenuPosition, alignment: MenuAlignment): string => {\n\treturn `${position}-${alignment}`;\n};\n"],"names":["getDataPoint","position","alignment","concat"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;IACaA,YAAY,GAAGA,CAACC,QAAsB,EAAEC,SAAwB,KAAa;AACzF,EAAA,OAAA,EAAA,CAAAC,MAAA,CAAUF,QAAQ,EAAA,GAAA,CAAA,CAAAE,MAAA,CAAID,SAAS,CAAA;AAChC;;;;"}
|