@muraldevkit/ui-toolkit 4.68.0-dev-NFbt.1 → 4.68.0-dev-nPeA.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -250
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js +17 -11
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +27 -25
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js +11 -5
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +12 -4
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +13 -6
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js +7 -3
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +24 -28
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +20 -20
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js +21 -21
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +20 -22
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +14 -10
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/actions.js +11 -16
- package/dist/cjs/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/cjs/components/button/helpers.js +4 -6
- package/dist/cjs/components/button/helpers.js.map +1 -1
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +8 -9
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js +14 -7
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js +18 -6
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/cjs/components/empty/default/MrlEmpty.js +8 -4
- package/dist/cjs/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js +8 -4
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js +30 -38
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +7 -3
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js +8 -7
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +9 -3
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +6 -5
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +13 -4
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +11 -7
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js +21 -14
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js +8 -4
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/cjs/components/form/hooks/useActiveColor.js +2 -2
- package/dist/cjs/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/cjs/components/form/hooks/useIsEditable.js +3 -3
- package/dist/cjs/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js +12 -5
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +19 -5
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +42 -31
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +21 -12
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +19 -11
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js +8 -7
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/index.js +4 -3
- package/dist/cjs/components/form/legacy-select/index.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +7 -3
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +11 -5
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js +3 -2
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js.map +1 -1
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js +9 -3
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectOption.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectOption.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js.map +1 -1
- package/dist/cjs/components/form/select/styles/default.js +18 -18
- package/dist/cjs/components/form/select/styles/default.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inline.js +2 -2
- package/dist/cjs/components/form/select/styles/inline.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/cjs/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -7
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +13 -9
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +31 -19
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +28 -23
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -16
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +14 -17
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +16 -9
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/cjs/components/form/utils.js +2 -4
- package/dist/cjs/components/form/utils.js.map +1 -1
- package/dist/cjs/components/grid/MrlCol/MrlCol.js +37 -46
- package/dist/cjs/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js +7 -3
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js.map +1 -1
- package/dist/cjs/components/grid/MrlRow/MrlRow.js +7 -3
- package/dist/cjs/components/grid/MrlRow/MrlRow.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js.map +1 -1
- package/dist/cjs/components/layout/MrlMain/MrlMain.js +9 -3
- package/dist/cjs/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/MrlPage.js +9 -3
- package/dist/cjs/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/index.js +3 -2
- package/dist/cjs/components/layout/MrlPage/index.js.map +1 -1
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +27 -15
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js +10 -3
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/cjs/components/layout/context/LayoutContext.js +7 -6
- package/dist/cjs/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +18 -14
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +13 -9
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/cjs/components/layout/utils.js +2 -2
- package/dist/cjs/components/layout/utils.js.map +1 -1
- package/dist/cjs/components/link/MrlLink/MrlLink.js +13 -4
- package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +16 -14
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js +13 -12
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js +16 -6
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js +16 -4
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +61 -63
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/cjs/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js +4 -3
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +24 -19
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -6
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/cjs/components/menu/context/MrlMenuContext.js +3 -2
- package/dist/cjs/components/menu/context/MrlMenuContext.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js +19 -15
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/cjs/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js +29 -25
- package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js +12 -8
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js +4 -3
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js +13 -6
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js +12 -6
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js +7 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +11 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +26 -19
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js +17 -7
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/cjs/components/notification/MrlToast/MrlToast.js +18 -9
- package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js +7 -3
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +7 -3
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js +8 -4
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +25 -17
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js +3 -2
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js +9 -5
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +8 -4
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +77 -73
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +22 -23
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/cjs/components/portal/MrlPortal.js +5 -4
- package/dist/cjs/components/portal/MrlPortal.js.map +1 -1
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +237 -263
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js +11 -5
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +12 -6
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js +17 -17
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +20 -15
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +78 -96
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js +5 -4
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/cjs/components/table/MrlTable/MrlTable.js +7 -3
- package/dist/cjs/components/table/MrlTable/MrlTable.js.map +1 -1
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js +7 -3
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js.map +1 -1
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js +12 -3
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js +13 -3
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js +7 -3
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js.map +1 -1
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js +7 -3
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js.map +1 -1
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -7
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/cjs/components/table/utils.js +4 -10
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js +16 -9
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js +12 -5
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js +15 -13
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +16 -9
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js +16 -10
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/cjs/components/text/MrlText/MrlText.js +14 -5
- package/dist/cjs/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js +14 -4
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js +17 -8
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +7 -3
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +37 -36
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +13 -4
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js +21 -19
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/cjs/components/tooltip/utils.js +3 -3
- package/dist/cjs/components/tooltip/utils.js.map +1 -1
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js +7 -6
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/cjs/hooks/useBreakpoint/index.js +5 -5
- package/dist/cjs/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/cjs/hooks/useClickOutside/index.js +4 -4
- package/dist/cjs/hooks/useClickOutside/index.js.map +1 -1
- package/dist/cjs/hooks/useCoordinate/index.js +19 -28
- package/dist/cjs/hooks/useCoordinate/index.js.map +1 -1
- package/dist/cjs/hooks/useElementDimensions/index.js +21 -33
- package/dist/cjs/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js +7 -8
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/cjs/hooks/useScrollbarInfo/index.js +11 -10
- package/dist/cjs/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/index.js +20 -22
- package/dist/cjs/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/cjs/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/cjs/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/cjs/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/cjs/utils/frameDebounce/index.js +27 -28
- package/dist/cjs/utils/frameDebounce/index.js.map +1 -1
- package/dist/cjs/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/cjs/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js.map +1 -1
- package/dist/cjs/utils/isImagePath/index.js +4 -3
- package/dist/cjs/utils/isImagePath/index.js.map +1 -1
- package/dist/cjs/utils/isImageUri/index.js +1 -1
- package/dist/cjs/utils/isImageUri/index.js.map +1 -1
- package/dist/cjs/utils/isObject/isObject.js +1 -1
- package/dist/cjs/utils/isObject/isObject.js.map +1 -1
- package/dist/cjs/utils/isTouch/index.js +1 -1
- package/dist/cjs/utils/isTouch/index.js.map +1 -1
- package/dist/cjs/utils/layers/index.js +1 -1
- package/dist/cjs/utils/layers/index.js.map +1 -1
- package/dist/cjs/utils/noop/index.js +1 -1
- package/dist/cjs/utils/noop/index.js.map +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/cjs/utils/setAttributes/setAttributes.js +11 -5
- package/dist/cjs/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/cjs/utils/trapFocus/index.js +9 -11
- package/dist/cjs/utils/trapFocus/index.js.map +1 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -234
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js +12 -10
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +22 -24
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js +6 -4
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +7 -3
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +7 -4
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +18 -26
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +14 -18
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js +16 -20
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +14 -20
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +7 -7
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/actions.js +12 -17
- package/dist/esm/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/esm/components/button/helpers.js +4 -6
- package/dist/esm/components/button/helpers.js.map +1 -1
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js +5 -7
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/esm/components/container/MrlContainer/MrlContainer.js +7 -4
- package/dist/esm/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js +13 -5
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js +28 -37
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js +5 -5
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +4 -2
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +3 -3
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +8 -3
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +2 -2
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/esm/components/form/date-picker/MrlDatePicker.js +15 -12
- package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js +2 -2
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/esm/components/form/hooks/useActiveColor.js +2 -2
- package/dist/esm/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/esm/components/form/hooks/useIsEditable.js +3 -3
- package/dist/esm/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js +6 -3
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +14 -4
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +37 -30
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +16 -11
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +14 -10
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/esm/components/form/legacy-select/context/SelectContext.js +5 -5
- package/dist/esm/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/esm/components/form/legacy-select/index.js +1 -1
- package/dist/esm/components/form/legacy-select/index.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +4 -2
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +2 -2
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +2 -2
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js +4 -2
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/esm/components/form/select/styles/default.js +18 -18
- package/dist/esm/components/form/select/styles/default.js.map +1 -1
- package/dist/esm/components/form/select/styles/inline.js +2 -2
- package/dist/esm/components/form/select/styles/inline.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/esm/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/esm/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +9 -6
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +3 -3
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +25 -17
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +21 -20
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +15 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +8 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +9 -6
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/esm/components/form/utils.js +2 -4
- package/dist/esm/components/form/utils.js.map +1 -1
- package/dist/esm/components/grid/MrlCol/MrlCol.js +31 -44
- package/dist/esm/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/esm/components/layout/MrlMain/MrlMain.js +4 -2
- package/dist/esm/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/esm/components/layout/MrlPage/MrlPage.js +4 -2
- package/dist/esm/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +19 -11
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js +5 -2
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/esm/components/layout/context/LayoutContext.js +4 -4
- package/dist/esm/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/esm/components/layout/utils.js +2 -2
- package/dist/esm/components/layout/utils.js.map +1 -1
- package/dist/esm/components/link/MrlLink/MrlLink.js +8 -3
- package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +9 -11
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js +5 -9
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js +9 -3
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js +11 -3
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js +56 -62
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/esm/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -17
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +2 -2
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js +14 -14
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/esm/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -22
- package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js +5 -5
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js +7 -4
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js +7 -5
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +6 -2
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +18 -15
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js +11 -5
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/esm/components/notification/MrlToast/MrlToast.js +14 -9
- package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js +14 -10
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js +2 -2
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js +71 -71
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +19 -21
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/esm/components/portal/MrlPortal.js +2 -2
- package/dist/esm/components/portal/MrlPortal.js.map +1 -1
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +235 -262
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js +6 -4
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +7 -5
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js +7 -11
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +8 -8
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +71 -94
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js +2 -2
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js +7 -2
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js +8 -2
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +7 -5
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/esm/components/table/utils.js +4 -10
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js +11 -8
- package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js +7 -4
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js +8 -10
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +11 -8
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js +11 -9
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/esm/components/text/MrlText/MrlText.js +8 -3
- package/dist/esm/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js +9 -3
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js +12 -7
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +31 -34
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +8 -3
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/index.js +15 -17
- package/dist/esm/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/esm/components/tooltip/utils.js +3 -3
- package/dist/esm/components/tooltip/utils.js.map +1 -1
- package/dist/esm/hooks/useAutoClose/useAutoClose.js +4 -4
- package/dist/esm/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/index.js +5 -5
- package/dist/esm/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/index.js +4 -4
- package/dist/esm/hooks/useClickOutside/index.js.map +1 -1
- package/dist/esm/hooks/useCoordinate/index.js +20 -29
- package/dist/esm/hooks/useCoordinate/index.js.map +1 -1
- package/dist/esm/hooks/useElementDimensions/index.js +19 -32
- package/dist/esm/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/esm/hooks/useHasFocusableDescendant/index.js +4 -6
- package/dist/esm/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/esm/hooks/useScrollbarInfo/index.js +8 -8
- package/dist/esm/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/index.js +14 -20
- package/dist/esm/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/esm/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/esm/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/esm/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/esm/utils/frameDebounce/index.js +28 -29
- package/dist/esm/utils/frameDebounce/index.js.map +1 -1
- package/dist/esm/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/esm/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/esm/utils/isElementScrollable/index.js +1 -1
- package/dist/esm/utils/isElementScrollable/index.js.map +1 -1
- package/dist/esm/utils/isImagePath/index.js +1 -1
- package/dist/esm/utils/isImagePath/index.js.map +1 -1
- package/dist/esm/utils/isImageUri/index.js +1 -1
- package/dist/esm/utils/isImageUri/index.js.map +1 -1
- package/dist/esm/utils/isObject/isObject.js +1 -1
- package/dist/esm/utils/isObject/isObject.js.map +1 -1
- package/dist/esm/utils/isTouch/index.js +1 -1
- package/dist/esm/utils/isTouch/index.js.map +1 -1
- package/dist/esm/utils/layers/index.js +1 -1
- package/dist/esm/utils/layers/index.js.map +1 -1
- package/dist/esm/utils/noop/index.js +1 -1
- package/dist/esm/utils/noop/index.js.map +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/esm/utils/setAttributes/setAttributes.js +7 -5
- package/dist/esm/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/esm/utils/trapFocus/index.js +9 -11
- package/dist/esm/utils/trapFocus/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
|
|
5
|
-
function
|
|
5
|
+
function _interopNamespace(e) {
|
|
6
|
+
if (e && e.__esModule) return e;
|
|
6
7
|
var n = Object.create(null);
|
|
7
8
|
if (e) {
|
|
8
9
|
Object.keys(e).forEach(function (k) {
|
|
@@ -19,7 +20,7 @@ function _interopNamespaceDefault(e) {
|
|
|
19
20
|
return Object.freeze(n);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
var React__namespace = /*#__PURE__*/
|
|
23
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Adds context for the MrlMenu component
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlMenuContext.js","sources":["../../../../../src/components/menu/context/MrlMenuContext.ts"],"sourcesContent":["import * as React from 'react';\n\ntype MrlMenuContext = {\n\t/**\n\t * Close menu is shared in context to allow for closing the menu from a child component\n\t *\n\t * @returns {void}\n\t */\n\tcloseMenu: (shouldCloseParent?: boolean) => void;\n\n\t/**\n\t * Close parent is shared in context to allow for closing the parent menu from a submenu\n\t *\n\t * @returns {void}\n\t */\n\tcloseParent?: () => void;\n\n\t/**\n\t * Reference to the menu trigger button for focus restoration\n\t */\n\ttriggerRef?: React.RefObject<HTMLElement>;\n};\n\n/**\n * Adds context for the MrlMenu component\n */\nexport const MrlMenuContext = React.createContext<MrlMenuContext | undefined>(undefined);\n"],"names":["MrlMenuContext","React","createContext","undefined"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MrlMenuContext.js","sources":["../../../../../src/components/menu/context/MrlMenuContext.ts"],"sourcesContent":["import * as React from 'react';\n\ntype MrlMenuContext = {\n\t/**\n\t * Close menu is shared in context to allow for closing the menu from a child component\n\t *\n\t * @returns {void}\n\t */\n\tcloseMenu: (shouldCloseParent?: boolean) => void;\n\n\t/**\n\t * Close parent is shared in context to allow for closing the parent menu from a submenu\n\t *\n\t * @returns {void}\n\t */\n\tcloseParent?: () => void;\n\n\t/**\n\t * Reference to the menu trigger button for focus restoration\n\t */\n\ttriggerRef?: React.RefObject<HTMLElement>;\n};\n\n/**\n * Adds context for the MrlMenu component\n */\nexport const MrlMenuContext = React.createContext<MrlMenuContext | undefined>(undefined);\n"],"names":["MrlMenuContext","React","createContext","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuBA;AACA;AACA;AACO,IAAMA,cAAc,gBAAGC,gBAAK,CAACC,aAAa,CAA6BC,SAAS;;;;"}
|
|
@@ -4,6 +4,10 @@ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHel
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var debounce = require('lodash.debounce');
|
|
6
6
|
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var debounce__default = /*#__PURE__*/_interopDefault(debounce);
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
12
|
* useBrowserEdgeScroll hook
|
|
9
13
|
*
|
|
@@ -31,7 +35,7 @@ var useBrowserEdgeScroll = function useBrowserEdgeScroll(elementRef) {
|
|
|
31
35
|
|
|
32
36
|
// Use a ref to store the initial dimensions of the menu
|
|
33
37
|
var menuRectSizeRef = React.useRef(null);
|
|
34
|
-
var updateMenuStyle = React.useCallback(
|
|
38
|
+
var updateMenuStyle = React.useCallback(() => {
|
|
35
39
|
if (disable || !elementRef.current || elementPosition === 'static') return;
|
|
36
40
|
if (elementRef.current) {
|
|
37
41
|
if (!menuRectSizeRef.current) {
|
|
@@ -49,8 +53,8 @@ var useBrowserEdgeScroll = function useBrowserEdgeScroll(elementRef) {
|
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
}, [disable, elementRef, elementAlign, elementPosition]);
|
|
52
|
-
var updateMenuStyleDebounced =
|
|
53
|
-
React.useLayoutEffect(
|
|
56
|
+
var updateMenuStyleDebounced = debounce__default.default(updateMenuStyle, 10);
|
|
57
|
+
React.useLayoutEffect(() => {
|
|
54
58
|
if (disable || !elementRef.current || elementPosition === 'static') return;
|
|
55
59
|
|
|
56
60
|
/**
|
|
@@ -64,7 +68,7 @@ var useBrowserEdgeScroll = function useBrowserEdgeScroll(elementRef) {
|
|
|
64
68
|
if (elementRef.current) {
|
|
65
69
|
updateMenuStyle();
|
|
66
70
|
}
|
|
67
|
-
return
|
|
71
|
+
return () => {
|
|
68
72
|
observer.disconnect();
|
|
69
73
|
window.removeEventListener('resize', updateMenuStyleDebounced);
|
|
70
74
|
menuRectSizeRef.current = null;
|
|
@@ -76,7 +80,7 @@ var useBrowserEdgeScroll = function useBrowserEdgeScroll(elementRef) {
|
|
|
76
80
|
// is allowing the menu to wait before initializing the menu style without a setTimeout
|
|
77
81
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
78
82
|
}, [elementRef.current, elementPosition, updateMenuStyle]);
|
|
79
|
-
var updateOnImageLoad =
|
|
83
|
+
var updateOnImageLoad = () => {
|
|
80
84
|
var _elementRef$current;
|
|
81
85
|
var elementRect = (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.getBoundingClientRect();
|
|
82
86
|
if (elementRect) {
|
|
@@ -88,17 +92,17 @@ var useBrowserEdgeScroll = function useBrowserEdgeScroll(elementRef) {
|
|
|
88
92
|
/**
|
|
89
93
|
* Listen for image additions to the element and update the menu style when they load
|
|
90
94
|
*/
|
|
91
|
-
React.useEffect(
|
|
95
|
+
React.useEffect(() => {
|
|
92
96
|
var _elementRef$current2;
|
|
93
97
|
var images = (_elementRef$current2 = elementRef.current) === null || _elementRef$current2 === void 0 ? void 0 : _elementRef$current2.querySelectorAll('img');
|
|
94
98
|
if (images) {
|
|
95
|
-
images.forEach(
|
|
99
|
+
images.forEach(img => {
|
|
96
100
|
img.addEventListener('load', updateOnImageLoad);
|
|
97
101
|
});
|
|
98
102
|
}
|
|
99
|
-
return
|
|
103
|
+
return () => {
|
|
100
104
|
if (images) {
|
|
101
|
-
images.forEach(
|
|
105
|
+
images.forEach(img => {
|
|
102
106
|
img.removeEventListener('load', updateOnImageLoad);
|
|
103
107
|
});
|
|
104
108
|
}
|
|
@@ -106,7 +110,7 @@ var useBrowserEdgeScroll = function useBrowserEdgeScroll(elementRef) {
|
|
|
106
110
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
107
111
|
}, [elementRef.current, updateMenuStyleDebounced]);
|
|
108
112
|
return {
|
|
109
|
-
isScrolling
|
|
113
|
+
isScrolling,
|
|
110
114
|
styles: heightStyle
|
|
111
115
|
};
|
|
112
116
|
};
|
|
@@ -121,7 +125,7 @@ var useBrowserEdgeScroll = function useBrowserEdgeScroll(elementRef) {
|
|
|
121
125
|
* @param viewportHeight - the height of the viewport
|
|
122
126
|
* @returns {string} - the new max height of the menu
|
|
123
127
|
*/
|
|
124
|
-
var calculateNewMaxHeight =
|
|
128
|
+
var calculateNewMaxHeight = (elementPosition, elementAlign, elementRef, menuRect, viewportHeight) => {
|
|
125
129
|
var scrollBuffer = 35;
|
|
126
130
|
var scrollThreshold = 20;
|
|
127
131
|
switch (elementPosition) {
|
|
@@ -138,7 +142,7 @@ var calculateNewMaxHeight = function calculateNewMaxHeight(elementPosition, elem
|
|
|
138
142
|
return null;
|
|
139
143
|
}
|
|
140
144
|
};
|
|
141
|
-
var calculateBottomAlignment =
|
|
145
|
+
var calculateBottomAlignment = (menuRect, viewportHeight, scrollBuffer, scrollThreshold) => {
|
|
142
146
|
// Evaluate from the bottom of the viewport to the top of the menu
|
|
143
147
|
if (menuRect.bottom > viewportHeight - scrollThreshold) {
|
|
144
148
|
var calculatedHeight = Math.max(0, viewportHeight - menuRect.top - scrollBuffer);
|
|
@@ -146,7 +150,7 @@ var calculateBottomAlignment = function calculateBottomAlignment(menuRect, viewp
|
|
|
146
150
|
}
|
|
147
151
|
return null;
|
|
148
152
|
};
|
|
149
|
-
var calculateTopAlignment =
|
|
153
|
+
var calculateTopAlignment = (menuRect, elementRef, scrollBuffer, scrollThreshold) => {
|
|
150
154
|
var _elementRef$current3;
|
|
151
155
|
var currentRect = (_elementRef$current3 = elementRef.current) === null || _elementRef$current3 === void 0 ? void 0 : _elementRef$current3.getBoundingClientRect();
|
|
152
156
|
// Evaluate distance from the top of the viewport to the bottom of the menu
|
|
@@ -156,7 +160,7 @@ var calculateTopAlignment = function calculateTopAlignment(menuRect, elementRef,
|
|
|
156
160
|
}
|
|
157
161
|
return null;
|
|
158
162
|
};
|
|
159
|
-
var calculateSideAlignment =
|
|
163
|
+
var calculateSideAlignment = (elementAlign, menuRect, viewportHeight, scrollThreshold, scrollBuffer) => {
|
|
160
164
|
// Evaluate distance from the top of the viewport to the bottom of the menu
|
|
161
165
|
if (elementAlign === 'end' && menuRect.top < scrollThreshold) {
|
|
162
166
|
var calculatedHeight = Math.max(0, menuRect.bottom - scrollBuffer);
|
|
@@ -170,7 +174,7 @@ var calculateSideAlignment = function calculateSideAlignment(elementAlign, menuR
|
|
|
170
174
|
}
|
|
171
175
|
return null;
|
|
172
176
|
};
|
|
173
|
-
var checkElementIsScrolling =
|
|
177
|
+
var checkElementIsScrolling = elementRef => {
|
|
174
178
|
var el = elementRef.current;
|
|
175
179
|
if (el && el.scrollTop > 0) {
|
|
176
180
|
return 'scrolling';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBrowserEdgeScroll.js","sources":["../../../../../src/components/menu/hooks/useBrowserEdgeScroll.ts"],"sourcesContent":["import { useState, useLayoutEffect, useCallback, useRef, useEffect } from 'react';\nimport { MenuAlignment, MenuPosition } from '../constants';\nimport debounce from 'lodash.debounce';\n\ninterface ElementScrollStyles {\n\tisScrolling: boolean;\n\tstyles: AdjustedElementStyle;\n}\n\nexport interface AdjustedElementStyle {\n\tmaxHeight?: string;\n}\n\n/**\n * useBrowserEdgeScroll hook\n *\n * This hook will calculate if an element's top or bottom edge bleed over the viewport edge\n * and will provide a max height value for the element to allow it to scroll instead of bleed over\n *\n * @param elementRef - reference to the DOM element that is the menu\n * @param elementPosition - the position of the menu\n * @param elementAlign - the alignment of the menu\n * @param disable - disable the hook from running\n * @returns AdjustedElementStyle - returns the new updated style for scrolling the menu\n */\nexport const useBrowserEdgeScroll = (\n\telementRef: React.RefObject<HTMLElement>,\n\telementPosition: MenuPosition = 'bottom',\n\telementAlign: MenuAlignment,\n\tdisable?: boolean\n): ElementScrollStyles | null => {\n\tconst [heightStyle, setHeightStyle] = useState<AdjustedElementStyle>({});\n\n\tconst [isScrolling, setIsScrolling] = useState<boolean>(false);\n\n\t// Use a ref to store the initial dimensions of the menu\n\tconst menuRectSizeRef = useRef<DOMRect | null>(null);\n\n\tconst updateMenuStyle = useCallback(() => {\n\t\tif (disable || !elementRef.current || elementPosition === 'static') return;\n\n\t\tif (elementRef.current) {\n\t\t\tif (!menuRectSizeRef.current) {\n\t\t\t\tmenuRectSizeRef.current = elementRef.current.getBoundingClientRect();\n\t\t\t}\n\n\t\t\tconst newMaxHeight = calculateNewMaxHeight(\n\t\t\t\telementPosition,\n\t\t\t\telementAlign,\n\t\t\t\telementRef,\n\t\t\t\tmenuRectSizeRef.current,\n\t\t\t\twindow.innerHeight\n\t\t\t);\n\n\t\t\tif (newMaxHeight !== null) {\n\t\t\t\tsetIsScrolling(true);\n\t\t\t\tsetHeightStyle({ maxHeight: newMaxHeight });\n\t\t\t} else {\n\t\t\t\tsetIsScrolling(false);\n\t\t\t\tsetHeightStyle({});\n\t\t\t}\n\t\t}\n\t}, [\n\t\tdisable,\n\t\telementRef,\n\t\telementAlign,\n\t\telementPosition\n\t]);\n\n\tconst updateMenuStyleDebounced = debounce(updateMenuStyle, 10);\n\n\tuseLayoutEffect(() => {\n\t\tif (disable || !elementRef.current || elementPosition === 'static') return;\n\n\t\t/**\n\t\t * Resize observer is setup to watch for changes in the element's size or position\n\t\t *\n\t\t * If a resize is detected, the element's style will be updated to allow for scrolling if necessary\n\t\t */\n\t\tconst observer = new ResizeObserver(updateMenuStyleDebounced);\n\t\tobserver.observe(elementRef.current);\n\n\t\twindow.addEventListener('resize', updateMenuStyleDebounced);\n\n\t\tif (elementRef.current) {\n\t\t\tupdateMenuStyle();\n\t\t}\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t\twindow.removeEventListener('resize', updateMenuStyleDebounced);\n\t\t\tmenuRectSizeRef.current = null;\n\t\t};\n\n\t\t// Passing a ref in shouldn't make things work, but in this scenario\n\t\t// it's the only way to get the menu to update when it's ref becomes available\n\t\t// this is used for when the menu initializes, the ref may not be available so this\n\t\t// is allowing the menu to wait before initializing the menu style without a setTimeout\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [elementRef.current, elementPosition, updateMenuStyle]);\n\n\tconst updateOnImageLoad = () => {\n\t\tconst elementRect = elementRef.current?.getBoundingClientRect();\n\t\tif (elementRect) {\n\t\t\tmenuRectSizeRef.current = elementRect;\n\t\t\tupdateMenuStyleDebounced();\n\t\t}\n\t};\n\n\t/**\n\t * Listen for image additions to the element and update the menu style when they load\n\t */\n\tuseEffect(() => {\n\t\tconst images = elementRef.current?.querySelectorAll('img');\n\t\tif (images) {\n\t\t\timages.forEach((img) => {\n\t\t\t\timg.addEventListener('load', updateOnImageLoad);\n\t\t\t});\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (images) {\n\t\t\t\timages.forEach((img) => {\n\t\t\t\t\timg.removeEventListener('load', updateOnImageLoad);\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}, [elementRef.current, updateMenuStyleDebounced]);\n\n\treturn { isScrolling, styles: heightStyle };\n};\n\n/**\n * Calculates the new max height of the menu based on the menu alignment and the viewport height\n *\n * @param elementPosition - the alignment of the menu\n * @param elementAlign - the alignment of the menu\n * @param elementRef - reference to the DOM element that is the menu\n * @param menuRect - the bounding client rect of the menu\n * @param viewportHeight - the height of the viewport\n * @returns {string} - the new max height of the menu\n */\nconst calculateNewMaxHeight = (\n\telementPosition: MenuPosition,\n\telementAlign: MenuAlignment,\n\telementRef: React.RefObject<HTMLElement>,\n\tmenuRect: DOMRect,\n\tviewportHeight: number\n): string | null => {\n\tconst scrollBuffer = 35;\n\tconst scrollThreshold = 20;\n\n\tswitch (elementPosition) {\n\tcase 'bottom':\n\t\treturn calculateBottomAlignment(menuRect, viewportHeight, scrollBuffer, scrollThreshold);\n\tcase 'top':\n\t\treturn calculateTopAlignment(menuRect, elementRef, scrollBuffer, scrollThreshold);\n\tcase 'left':\n\tcase 'right':\n\t\treturn calculateSideAlignment(\n\t\t\telementAlign,\n\t\t\tmenuRect,\n\t\t\tviewportHeight,\n\t\t\tscrollThreshold,\n\t\t\tscrollBuffer\n\t\t);\n\tcase 'ignore':\n\t\treturn checkElementIsScrolling(elementRef);\n\tdefault:\n\t\treturn null;\n\t}\n};\n\nconst calculateBottomAlignment = (\n\tmenuRect: DOMRect,\n\tviewportHeight: number,\n\tscrollBuffer: number,\n\tscrollThreshold: number\n): string | null => {\n\t// Evaluate from the bottom of the viewport to the top of the menu\n\tif (menuRect.bottom > viewportHeight - scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, viewportHeight - menuRect.top - scrollBuffer);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\treturn null;\n};\n\nconst calculateTopAlignment = (\n\tmenuRect: DOMRect,\n\telementRef: React.RefObject<HTMLElement>,\n\tscrollBuffer: number,\n\tscrollThreshold: number\n): string | null => {\n\tconst currentRect = elementRef.current?.getBoundingClientRect();\n\t// Evaluate distance from the top of the viewport to the bottom of the menu\n\tif (currentRect && currentRect.top <= scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, currentRect.bottom - scrollThreshold);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\treturn null;\n};\n\nconst calculateSideAlignment = (\n\telementAlign: MenuAlignment,\n\tmenuRect: DOMRect,\n\tviewportHeight: number,\n\tscrollThreshold: number,\n\tscrollBuffer: number\n): string | null => {\n\t// Evaluate distance from the top of the viewport to the bottom of the menu\n\tif (elementAlign === 'end' && menuRect.top < scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, menuRect.bottom - scrollBuffer);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\n\t// Evaluate from the bottom of the viewport to the top of the menu\n\tif (elementAlign === 'start' && menuRect.bottom > viewportHeight - scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, viewportHeight - menuRect.top - scrollBuffer);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\n\treturn null;\n};\n\nconst checkElementIsScrolling = (elementRef: React.RefObject<HTMLElement>): string | null => {\n\tconst el = elementRef.current;\n\n\tif (el && el.scrollTop > 0) {\n\t\treturn 'scrolling';\n\t}\n\n\treturn null;\n};\n"],"names":["useBrowserEdgeScroll","elementRef","elementPosition","arguments","length","undefined","elementAlign","disable","_useState","useState","_useState2","_slicedToArray","heightStyle","setHeightStyle","_useState3","_useState4","isScrolling","setIsScrolling","menuRectSizeRef","useRef","updateMenuStyle","useCallback","current","getBoundingClientRect","newMaxHeight","calculateNewMaxHeight","window","innerHeight","maxHeight","updateMenuStyleDebounced","debounce","useLayoutEffect","observer","ResizeObserver","observe","addEventListener","disconnect","removeEventListener","updateOnImageLoad","_elementRef$current","elementRect","useEffect","_elementRef$current2","images","querySelectorAll","forEach","img","styles","menuRect","viewportHeight","scrollBuffer","scrollThreshold","calculateBottomAlignment","calculateTopAlignment","calculateSideAlignment","checkElementIsScrolling","bottom","calculatedHeight","Math","max","top","concat","floor","_elementRef$current3","currentRect","el","scrollTop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useBrowserEdgeScroll.js","sources":["../../../../../src/components/menu/hooks/useBrowserEdgeScroll.ts"],"sourcesContent":["import { useState, useLayoutEffect, useCallback, useRef, useEffect } from 'react';\nimport { MenuAlignment, MenuPosition } from '../constants';\nimport debounce from 'lodash.debounce';\n\ninterface ElementScrollStyles {\n\tisScrolling: boolean;\n\tstyles: AdjustedElementStyle;\n}\n\nexport interface AdjustedElementStyle {\n\tmaxHeight?: string;\n}\n\n/**\n * useBrowserEdgeScroll hook\n *\n * This hook will calculate if an element's top or bottom edge bleed over the viewport edge\n * and will provide a max height value for the element to allow it to scroll instead of bleed over\n *\n * @param elementRef - reference to the DOM element that is the menu\n * @param elementPosition - the position of the menu\n * @param elementAlign - the alignment of the menu\n * @param disable - disable the hook from running\n * @returns AdjustedElementStyle - returns the new updated style for scrolling the menu\n */\nexport const useBrowserEdgeScroll = (\n\telementRef: React.RefObject<HTMLElement>,\n\telementPosition: MenuPosition = 'bottom',\n\telementAlign: MenuAlignment,\n\tdisable?: boolean\n): ElementScrollStyles | null => {\n\tconst [heightStyle, setHeightStyle] = useState<AdjustedElementStyle>({});\n\n\tconst [isScrolling, setIsScrolling] = useState<boolean>(false);\n\n\t// Use a ref to store the initial dimensions of the menu\n\tconst menuRectSizeRef = useRef<DOMRect | null>(null);\n\n\tconst updateMenuStyle = useCallback(() => {\n\t\tif (disable || !elementRef.current || elementPosition === 'static') return;\n\n\t\tif (elementRef.current) {\n\t\t\tif (!menuRectSizeRef.current) {\n\t\t\t\tmenuRectSizeRef.current = elementRef.current.getBoundingClientRect();\n\t\t\t}\n\n\t\t\tconst newMaxHeight = calculateNewMaxHeight(\n\t\t\t\telementPosition,\n\t\t\t\telementAlign,\n\t\t\t\telementRef,\n\t\t\t\tmenuRectSizeRef.current,\n\t\t\t\twindow.innerHeight\n\t\t\t);\n\n\t\t\tif (newMaxHeight !== null) {\n\t\t\t\tsetIsScrolling(true);\n\t\t\t\tsetHeightStyle({ maxHeight: newMaxHeight });\n\t\t\t} else {\n\t\t\t\tsetIsScrolling(false);\n\t\t\t\tsetHeightStyle({});\n\t\t\t}\n\t\t}\n\t}, [\n\t\tdisable,\n\t\telementRef,\n\t\telementAlign,\n\t\telementPosition\n\t]);\n\n\tconst updateMenuStyleDebounced = debounce(updateMenuStyle, 10);\n\n\tuseLayoutEffect(() => {\n\t\tif (disable || !elementRef.current || elementPosition === 'static') return;\n\n\t\t/**\n\t\t * Resize observer is setup to watch for changes in the element's size or position\n\t\t *\n\t\t * If a resize is detected, the element's style will be updated to allow for scrolling if necessary\n\t\t */\n\t\tconst observer = new ResizeObserver(updateMenuStyleDebounced);\n\t\tobserver.observe(elementRef.current);\n\n\t\twindow.addEventListener('resize', updateMenuStyleDebounced);\n\n\t\tif (elementRef.current) {\n\t\t\tupdateMenuStyle();\n\t\t}\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t\twindow.removeEventListener('resize', updateMenuStyleDebounced);\n\t\t\tmenuRectSizeRef.current = null;\n\t\t};\n\n\t\t// Passing a ref in shouldn't make things work, but in this scenario\n\t\t// it's the only way to get the menu to update when it's ref becomes available\n\t\t// this is used for when the menu initializes, the ref may not be available so this\n\t\t// is allowing the menu to wait before initializing the menu style without a setTimeout\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [elementRef.current, elementPosition, updateMenuStyle]);\n\n\tconst updateOnImageLoad = () => {\n\t\tconst elementRect = elementRef.current?.getBoundingClientRect();\n\t\tif (elementRect) {\n\t\t\tmenuRectSizeRef.current = elementRect;\n\t\t\tupdateMenuStyleDebounced();\n\t\t}\n\t};\n\n\t/**\n\t * Listen for image additions to the element and update the menu style when they load\n\t */\n\tuseEffect(() => {\n\t\tconst images = elementRef.current?.querySelectorAll('img');\n\t\tif (images) {\n\t\t\timages.forEach((img) => {\n\t\t\t\timg.addEventListener('load', updateOnImageLoad);\n\t\t\t});\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (images) {\n\t\t\t\timages.forEach((img) => {\n\t\t\t\t\timg.removeEventListener('load', updateOnImageLoad);\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}, [elementRef.current, updateMenuStyleDebounced]);\n\n\treturn { isScrolling, styles: heightStyle };\n};\n\n/**\n * Calculates the new max height of the menu based on the menu alignment and the viewport height\n *\n * @param elementPosition - the alignment of the menu\n * @param elementAlign - the alignment of the menu\n * @param elementRef - reference to the DOM element that is the menu\n * @param menuRect - the bounding client rect of the menu\n * @param viewportHeight - the height of the viewport\n * @returns {string} - the new max height of the menu\n */\nconst calculateNewMaxHeight = (\n\telementPosition: MenuPosition,\n\telementAlign: MenuAlignment,\n\telementRef: React.RefObject<HTMLElement>,\n\tmenuRect: DOMRect,\n\tviewportHeight: number\n): string | null => {\n\tconst scrollBuffer = 35;\n\tconst scrollThreshold = 20;\n\n\tswitch (elementPosition) {\n\tcase 'bottom':\n\t\treturn calculateBottomAlignment(menuRect, viewportHeight, scrollBuffer, scrollThreshold);\n\tcase 'top':\n\t\treturn calculateTopAlignment(menuRect, elementRef, scrollBuffer, scrollThreshold);\n\tcase 'left':\n\tcase 'right':\n\t\treturn calculateSideAlignment(\n\t\t\telementAlign,\n\t\t\tmenuRect,\n\t\t\tviewportHeight,\n\t\t\tscrollThreshold,\n\t\t\tscrollBuffer\n\t\t);\n\tcase 'ignore':\n\t\treturn checkElementIsScrolling(elementRef);\n\tdefault:\n\t\treturn null;\n\t}\n};\n\nconst calculateBottomAlignment = (\n\tmenuRect: DOMRect,\n\tviewportHeight: number,\n\tscrollBuffer: number,\n\tscrollThreshold: number\n): string | null => {\n\t// Evaluate from the bottom of the viewport to the top of the menu\n\tif (menuRect.bottom > viewportHeight - scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, viewportHeight - menuRect.top - scrollBuffer);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\treturn null;\n};\n\nconst calculateTopAlignment = (\n\tmenuRect: DOMRect,\n\telementRef: React.RefObject<HTMLElement>,\n\tscrollBuffer: number,\n\tscrollThreshold: number\n): string | null => {\n\tconst currentRect = elementRef.current?.getBoundingClientRect();\n\t// Evaluate distance from the top of the viewport to the bottom of the menu\n\tif (currentRect && currentRect.top <= scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, currentRect.bottom - scrollThreshold);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\treturn null;\n};\n\nconst calculateSideAlignment = (\n\telementAlign: MenuAlignment,\n\tmenuRect: DOMRect,\n\tviewportHeight: number,\n\tscrollThreshold: number,\n\tscrollBuffer: number\n): string | null => {\n\t// Evaluate distance from the top of the viewport to the bottom of the menu\n\tif (elementAlign === 'end' && menuRect.top < scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, menuRect.bottom - scrollBuffer);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\n\t// Evaluate from the bottom of the viewport to the top of the menu\n\tif (elementAlign === 'start' && menuRect.bottom > viewportHeight - scrollThreshold) {\n\t\tconst calculatedHeight = Math.max(0, viewportHeight - menuRect.top - scrollBuffer);\n\t\treturn `${Math.floor(calculatedHeight)}px`;\n\t}\n\n\treturn null;\n};\n\nconst checkElementIsScrolling = (elementRef: React.RefObject<HTMLElement>): string | null => {\n\tconst el = elementRef.current;\n\n\tif (el && el.scrollTop > 0) {\n\t\treturn 'scrolling';\n\t}\n\n\treturn null;\n};\n"],"names":["useBrowserEdgeScroll","elementRef","elementPosition","arguments","length","undefined","elementAlign","disable","_useState","useState","_useState2","_slicedToArray","heightStyle","setHeightStyle","_useState3","_useState4","isScrolling","setIsScrolling","menuRectSizeRef","useRef","updateMenuStyle","useCallback","current","getBoundingClientRect","newMaxHeight","calculateNewMaxHeight","window","innerHeight","maxHeight","updateMenuStyleDebounced","debounce","useLayoutEffect","observer","ResizeObserver","observe","addEventListener","disconnect","removeEventListener","updateOnImageLoad","_elementRef$current","elementRect","useEffect","_elementRef$current2","images","querySelectorAll","forEach","img","styles","menuRect","viewportHeight","scrollBuffer","scrollThreshold","calculateBottomAlignment","calculateTopAlignment","calculateSideAlignment","checkElementIsScrolling","bottom","calculatedHeight","Math","max","top","concat","floor","_elementRef$current3","currentRect","el","scrollTop"],"mappings":"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"}
|
|
@@ -39,15 +39,15 @@ var DEFAULT_SCROLL_STATE = {
|
|
|
39
39
|
* @param disable - Whether to disable the hook entirely
|
|
40
40
|
* @returns An object with `maxHeight` (inline style value) and `isScrolling` (class toggle)
|
|
41
41
|
*/
|
|
42
|
-
var useMenuScroll =
|
|
42
|
+
var useMenuScroll = (triggerRef, listRef, position, menuOffset, isOpen, disable) => {
|
|
43
43
|
var _useState = React.useState(DEFAULT_SCROLL_STATE),
|
|
44
44
|
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
|
45
45
|
scrollState = _useState2[0],
|
|
46
46
|
setScrollState = _useState2[1];
|
|
47
|
-
var calculateScroll = React.useCallback(
|
|
47
|
+
var calculateScroll = React.useCallback(() => {
|
|
48
48
|
// Reset scroll constraints when the menu closes or refs aren't available.
|
|
49
49
|
if (!isOpen || disable || !(triggerRef !== null && triggerRef !== void 0 && triggerRef.current) || !listRef.current) {
|
|
50
|
-
setScrollState(
|
|
50
|
+
setScrollState(prev => {
|
|
51
51
|
if (prev.maxHeight === undefined && !prev.isScrolling) return prev;
|
|
52
52
|
return DEFAULT_SCROLL_STATE;
|
|
53
53
|
});
|
|
@@ -96,10 +96,10 @@ var useMenuScroll = function useMenuScroll(triggerRef, listRef, position, menuOf
|
|
|
96
96
|
* cause the element being positioned to flip between flipped/unflipped states.
|
|
97
97
|
*/
|
|
98
98
|
var safeMaxHeight = maxHeight !== undefined ? Math.floor(maxHeight) - 1 : undefined;
|
|
99
|
-
setScrollState(
|
|
99
|
+
setScrollState(prev => {
|
|
100
100
|
if (prev.maxHeight === safeMaxHeight && prev.isScrolling === isScrolling) return prev;
|
|
101
101
|
return {
|
|
102
|
-
isScrolling
|
|
102
|
+
isScrolling,
|
|
103
103
|
maxHeight: safeMaxHeight
|
|
104
104
|
};
|
|
105
105
|
});
|
|
@@ -110,7 +110,7 @@ var useMenuScroll = function useMenuScroll(triggerRef, listRef, position, menuOf
|
|
|
110
110
|
* This ensures maxHeight is applied to the DOM before useTriggerPosition's
|
|
111
111
|
* requestAnimationFrame fires, so it measures the constrained height on its first pass.
|
|
112
112
|
*/
|
|
113
|
-
React.useLayoutEffect(
|
|
113
|
+
React.useLayoutEffect(() => {
|
|
114
114
|
if (isOpen && !disable) {
|
|
115
115
|
calculateScroll();
|
|
116
116
|
}
|
|
@@ -120,7 +120,7 @@ var useMenuScroll = function useMenuScroll(triggerRef, listRef, position, menuOf
|
|
|
120
120
|
* Respond to window resize and content size changes (e.g. images loading,
|
|
121
121
|
* lazy content, dynamically added items).
|
|
122
122
|
*/
|
|
123
|
-
React.useEffect(
|
|
123
|
+
React.useEffect(() => {
|
|
124
124
|
if (!isOpen || disable) return;
|
|
125
125
|
window.addEventListener('resize', calculateScroll);
|
|
126
126
|
var listElement = listRef.current;
|
|
@@ -129,7 +129,7 @@ var useMenuScroll = function useMenuScroll(triggerRef, listRef, position, menuOf
|
|
|
129
129
|
resizeObserver = new ResizeObserver(calculateScroll);
|
|
130
130
|
resizeObserver.observe(listElement);
|
|
131
131
|
}
|
|
132
|
-
return
|
|
132
|
+
return () => {
|
|
133
133
|
var _resizeObserver;
|
|
134
134
|
window.removeEventListener('resize', calculateScroll);
|
|
135
135
|
(_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.disconnect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuScroll.js","sources":["../../../../../src/components/menu/hooks/useMenuScroll.ts"],"sourcesContent":["import { useState, useCallback, useEffect, useLayoutEffect, RefObject } from 'react';\nimport { MenuPosition } from '../constants';\n\nconst SCREEN_OFFSET = 16;\n\ninterface UseMenuScrollResult {\n\t/** The constrained max height for the menu list when scrolling is active */\n\tmaxHeight: number | undefined;\n\t/** Whether the menu content exceeds available space and requires internal scrolling */\n\tisScrolling: boolean;\n}\n\nconst DEFAULT_SCROLL_STATE: UseMenuScrollResult = {\n\tisScrolling: false,\n\tmaxHeight: undefined\n};\n\n/**\n * useMenuScroll hook\n *\n * Detects when a menu cannot fit on screen in either its preferred or flipped position,\n * and constrains its height to enable internal scrolling.\n *\n * Behavior by position:\n * - **top/bottom**: If the menu doesn't fit in the preferred direction AND doesn't fit\n * in the opposite direction (flip), it reverts to the original position and constrains\n * the height to the space between the trigger edge and the viewport edge.\n * - **left/right**: Only checks vertical overflow. If the menu is taller than the viewport,\n * it constrains the height to the available vertical space.\n *\n * Uses `scrollHeight` on the list element to determine the natural (unconstrained) content\n * height. This value remains stable even when `maxHeight` is applied, preventing feedback\n * loops with external positioning hooks that use ResizeObserver.\n *\n * Uses `useLayoutEffect` for the initial calculation so that `maxHeight` is applied\n * synchronously before the browser paints. This prevents visible flicker when the menu\n * opens in a constrained space, because the positioning hook (useTriggerPosition) will\n * see the already-constrained height on its first measurement via requestAnimationFrame.\n *\n * @param triggerRef - Reference to the trigger element that opens the menu\n * @param listRef - Reference to the ul element inside the menu (the scrollable container)\n * @param position - The preferred menu position relative to the trigger\n * @param menuOffset - The gap between the trigger and the menu in pixels\n * @param isOpen - Whether the menu is currently open\n * @param disable - Whether to disable the hook entirely\n * @returns An object with `maxHeight` (inline style value) and `isScrolling` (class toggle)\n */\nexport const useMenuScroll = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\tlistRef: RefObject<HTMLUListElement>,\n\tposition: MenuPosition,\n\tmenuOffset: number,\n\tisOpen: boolean,\n\tdisable: boolean\n): UseMenuScrollResult => {\n\tconst [scrollState, setScrollState] = useState<UseMenuScrollResult>(DEFAULT_SCROLL_STATE);\n\n\tconst calculateScroll = useCallback(() => {\n\t\t// Reset scroll constraints when the menu closes or refs aren't available.\n\t\tif (!isOpen || disable || !triggerRef?.current || !listRef.current) {\n\t\t\tsetScrollState((prev) => {\n\t\t\t\tif (prev.maxHeight === undefined && !prev.isScrolling) return prev;\n\t\t\t\treturn DEFAULT_SCROLL_STATE;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst triggerRect = triggerRef.current.getBoundingClientRect();\n\t\tconst naturalHeight = listRef.current.scrollHeight;\n\t\tconst viewportHeight = window.innerHeight;\n\n\t\tlet maxHeight: number | undefined;\n\t\tlet isScrolling = false;\n\n\t\tswitch (position) {\n\t\t\tcase 'bottom': {\n\t\t\t\tconst availableBelow = viewportHeight - triggerRect.bottom - menuOffset - SCREEN_OFFSET;\n\t\t\t\tconst availableAbove = triggerRect.top - menuOffset - SCREEN_OFFSET;\n\n\t\t\t\tif (naturalHeight > availableBelow && naturalHeight > availableAbove) {\n\t\t\t\t\tisScrolling = true;\n\t\t\t\t\tmaxHeight = availableBelow;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'top': {\n\t\t\t\tconst availableAbove = triggerRect.top - menuOffset - SCREEN_OFFSET;\n\t\t\t\tconst availableBelow = viewportHeight - triggerRect.bottom - menuOffset - SCREEN_OFFSET;\n\n\t\t\t\tif (naturalHeight > availableAbove && naturalHeight > availableBelow) {\n\t\t\t\t\tisScrolling = true;\n\t\t\t\t\tmaxHeight = availableAbove;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'left':\n\t\t\tcase 'right': {\n\t\t\t\tconst availableVertical = viewportHeight - 2 * SCREEN_OFFSET;\n\n\t\t\t\tif (naturalHeight > availableVertical) {\n\t\t\t\t\tisScrolling = true;\n\t\t\t\t\tmaxHeight = availableVertical;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Floor the maxHeight and subtract 1px to avoid sub-pixel rounding that can\n\t\t * cause the element being positioned to flip between flipped/unflipped states.\n\t\t */\n\t\tconst safeMaxHeight = maxHeight !== undefined ? Math.floor(maxHeight) - 1 : undefined;\n\n\t\tsetScrollState((prev) => {\n\t\t\tif (prev.maxHeight === safeMaxHeight && prev.isScrolling === isScrolling) return prev;\n\t\t\treturn { isScrolling, maxHeight: safeMaxHeight };\n\t\t});\n\t}, [isOpen, disable, triggerRef, listRef, position, menuOffset]);\n\n\t/**\n\t * Calculate synchronously before paint to prevent flicker.\n\t * This ensures maxHeight is applied to the DOM before useTriggerPosition's\n\t * requestAnimationFrame fires, so it measures the constrained height on its first pass.\n\t */\n\tuseLayoutEffect(() => {\n\t\tif (isOpen && !disable) {\n\t\t\tcalculateScroll();\n\t\t}\n\t}, [isOpen, disable, calculateScroll]);\n\n\t/**\n\t * Respond to window resize and content size changes (e.g. images loading,\n\t * lazy content, dynamically added items).\n\t */\n\tuseEffect(() => {\n\t\tif (!isOpen || disable) return;\n\n\t\twindow.addEventListener('resize', calculateScroll);\n\n\t\tconst listElement = listRef.current;\n\t\tlet resizeObserver: ResizeObserver | undefined;\n\n\t\tif (listElement) {\n\t\t\tresizeObserver = new ResizeObserver(calculateScroll);\n\t\t\tresizeObserver.observe(listElement);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', calculateScroll);\n\t\t\tresizeObserver?.disconnect();\n\t\t};\n\t}, [isOpen, disable, calculateScroll, listRef]);\n\n\treturn scrollState;\n};\n"],"names":["SCREEN_OFFSET","DEFAULT_SCROLL_STATE","isScrolling","maxHeight","undefined","useMenuScroll","triggerRef","listRef","position","menuOffset","isOpen","disable","_useState","useState","_useState2","_slicedToArray","scrollState","setScrollState","calculateScroll","useCallback","current","prev","triggerRect","getBoundingClientRect","naturalHeight","scrollHeight","viewportHeight","window","innerHeight","availableBelow","bottom","availableAbove","top","availableVertical","safeMaxHeight","Math","floor","useLayoutEffect","useEffect","addEventListener","listElement","resizeObserver","ResizeObserver","observe","_resizeObserver","removeEventListener","disconnect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useMenuScroll.js","sources":["../../../../../src/components/menu/hooks/useMenuScroll.ts"],"sourcesContent":["import { useState, useCallback, useEffect, useLayoutEffect, RefObject } from 'react';\nimport { MenuPosition } from '../constants';\n\nconst SCREEN_OFFSET = 16;\n\ninterface UseMenuScrollResult {\n\t/** The constrained max height for the menu list when scrolling is active */\n\tmaxHeight: number | undefined;\n\t/** Whether the menu content exceeds available space and requires internal scrolling */\n\tisScrolling: boolean;\n}\n\nconst DEFAULT_SCROLL_STATE: UseMenuScrollResult = {\n\tisScrolling: false,\n\tmaxHeight: undefined\n};\n\n/**\n * useMenuScroll hook\n *\n * Detects when a menu cannot fit on screen in either its preferred or flipped position,\n * and constrains its height to enable internal scrolling.\n *\n * Behavior by position:\n * - **top/bottom**: If the menu doesn't fit in the preferred direction AND doesn't fit\n * in the opposite direction (flip), it reverts to the original position and constrains\n * the height to the space between the trigger edge and the viewport edge.\n * - **left/right**: Only checks vertical overflow. If the menu is taller than the viewport,\n * it constrains the height to the available vertical space.\n *\n * Uses `scrollHeight` on the list element to determine the natural (unconstrained) content\n * height. This value remains stable even when `maxHeight` is applied, preventing feedback\n * loops with external positioning hooks that use ResizeObserver.\n *\n * Uses `useLayoutEffect` for the initial calculation so that `maxHeight` is applied\n * synchronously before the browser paints. This prevents visible flicker when the menu\n * opens in a constrained space, because the positioning hook (useTriggerPosition) will\n * see the already-constrained height on its first measurement via requestAnimationFrame.\n *\n * @param triggerRef - Reference to the trigger element that opens the menu\n * @param listRef - Reference to the ul element inside the menu (the scrollable container)\n * @param position - The preferred menu position relative to the trigger\n * @param menuOffset - The gap between the trigger and the menu in pixels\n * @param isOpen - Whether the menu is currently open\n * @param disable - Whether to disable the hook entirely\n * @returns An object with `maxHeight` (inline style value) and `isScrolling` (class toggle)\n */\nexport const useMenuScroll = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\tlistRef: RefObject<HTMLUListElement>,\n\tposition: MenuPosition,\n\tmenuOffset: number,\n\tisOpen: boolean,\n\tdisable: boolean\n): UseMenuScrollResult => {\n\tconst [scrollState, setScrollState] = useState<UseMenuScrollResult>(DEFAULT_SCROLL_STATE);\n\n\tconst calculateScroll = useCallback(() => {\n\t\t// Reset scroll constraints when the menu closes or refs aren't available.\n\t\tif (!isOpen || disable || !triggerRef?.current || !listRef.current) {\n\t\t\tsetScrollState((prev) => {\n\t\t\t\tif (prev.maxHeight === undefined && !prev.isScrolling) return prev;\n\t\t\t\treturn DEFAULT_SCROLL_STATE;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst triggerRect = triggerRef.current.getBoundingClientRect();\n\t\tconst naturalHeight = listRef.current.scrollHeight;\n\t\tconst viewportHeight = window.innerHeight;\n\n\t\tlet maxHeight: number | undefined;\n\t\tlet isScrolling = false;\n\n\t\tswitch (position) {\n\t\t\tcase 'bottom': {\n\t\t\t\tconst availableBelow = viewportHeight - triggerRect.bottom - menuOffset - SCREEN_OFFSET;\n\t\t\t\tconst availableAbove = triggerRect.top - menuOffset - SCREEN_OFFSET;\n\n\t\t\t\tif (naturalHeight > availableBelow && naturalHeight > availableAbove) {\n\t\t\t\t\tisScrolling = true;\n\t\t\t\t\tmaxHeight = availableBelow;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'top': {\n\t\t\t\tconst availableAbove = triggerRect.top - menuOffset - SCREEN_OFFSET;\n\t\t\t\tconst availableBelow = viewportHeight - triggerRect.bottom - menuOffset - SCREEN_OFFSET;\n\n\t\t\t\tif (naturalHeight > availableAbove && naturalHeight > availableBelow) {\n\t\t\t\t\tisScrolling = true;\n\t\t\t\t\tmaxHeight = availableAbove;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'left':\n\t\t\tcase 'right': {\n\t\t\t\tconst availableVertical = viewportHeight - 2 * SCREEN_OFFSET;\n\n\t\t\t\tif (naturalHeight > availableVertical) {\n\t\t\t\t\tisScrolling = true;\n\t\t\t\t\tmaxHeight = availableVertical;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Floor the maxHeight and subtract 1px to avoid sub-pixel rounding that can\n\t\t * cause the element being positioned to flip between flipped/unflipped states.\n\t\t */\n\t\tconst safeMaxHeight = maxHeight !== undefined ? Math.floor(maxHeight) - 1 : undefined;\n\n\t\tsetScrollState((prev) => {\n\t\t\tif (prev.maxHeight === safeMaxHeight && prev.isScrolling === isScrolling) return prev;\n\t\t\treturn { isScrolling, maxHeight: safeMaxHeight };\n\t\t});\n\t}, [isOpen, disable, triggerRef, listRef, position, menuOffset]);\n\n\t/**\n\t * Calculate synchronously before paint to prevent flicker.\n\t * This ensures maxHeight is applied to the DOM before useTriggerPosition's\n\t * requestAnimationFrame fires, so it measures the constrained height on its first pass.\n\t */\n\tuseLayoutEffect(() => {\n\t\tif (isOpen && !disable) {\n\t\t\tcalculateScroll();\n\t\t}\n\t}, [isOpen, disable, calculateScroll]);\n\n\t/**\n\t * Respond to window resize and content size changes (e.g. images loading,\n\t * lazy content, dynamically added items).\n\t */\n\tuseEffect(() => {\n\t\tif (!isOpen || disable) return;\n\n\t\twindow.addEventListener('resize', calculateScroll);\n\n\t\tconst listElement = listRef.current;\n\t\tlet resizeObserver: ResizeObserver | undefined;\n\n\t\tif (listElement) {\n\t\t\tresizeObserver = new ResizeObserver(calculateScroll);\n\t\t\tresizeObserver.observe(listElement);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', calculateScroll);\n\t\t\tresizeObserver?.disconnect();\n\t\t};\n\t}, [isOpen, disable, calculateScroll, listRef]);\n\n\treturn scrollState;\n};\n"],"names":["SCREEN_OFFSET","DEFAULT_SCROLL_STATE","isScrolling","maxHeight","undefined","useMenuScroll","triggerRef","listRef","position","menuOffset","isOpen","disable","_useState","useState","_useState2","_slicedToArray","scrollState","setScrollState","calculateScroll","useCallback","current","prev","triggerRect","getBoundingClientRect","naturalHeight","scrollHeight","viewportHeight","window","innerHeight","availableBelow","bottom","availableAbove","top","availableVertical","safeMaxHeight","Math","floor","useLayoutEffect","useEffect","addEventListener","listElement","resizeObserver","ResizeObserver","observe","_resizeObserver","removeEventListener","disconnect"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ var utilities = require('../MrlMenu/utilities.js');
|
|
|
15
15
|
* @param disable - Should the menu be disabled
|
|
16
16
|
* @returns The sub menu position
|
|
17
17
|
*/
|
|
18
|
-
var useSubMenuElementPosition =
|
|
18
|
+
var useSubMenuElementPosition = (triggerRef, menuRef, isSubMenu, isOpen, originalMenuRect, disable) => {
|
|
19
19
|
var _useState = React.useState({
|
|
20
20
|
left: 'calc(100% - 5px)',
|
|
21
21
|
top: ''
|
|
@@ -27,12 +27,12 @@ var useSubMenuElementPosition = function useSubMenuElementPosition(triggerRef, m
|
|
|
27
27
|
_useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
|
|
28
28
|
menuRect = _useState4[0],
|
|
29
29
|
setMenuRect = _useState4[1];
|
|
30
|
-
React.useEffect(
|
|
30
|
+
React.useEffect(() => {
|
|
31
31
|
if (!disable && isOpen && menuRef.current && !originalMenuRect) {
|
|
32
32
|
setMenuRect(menuRef.current.getBoundingClientRect());
|
|
33
33
|
}
|
|
34
34
|
}, [disable, isOpen, menuRef, originalMenuRect]);
|
|
35
|
-
React.useEffect(
|
|
35
|
+
React.useEffect(() => {
|
|
36
36
|
if (disable || !(triggerRef !== null && triggerRef !== void 0 && triggerRef.current) || !menuRef.current || !isSubMenu || !isOpen || !menuRect || !isSubMenu) return;
|
|
37
37
|
var parentMenu = utilities.findClosestMenuParent(triggerRef.current);
|
|
38
38
|
var triggerRect = triggerRef.current.getBoundingClientRect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubMenuElementPosition.js","sources":["../../../../../src/components/menu/hooks/useSubMenuElementPosition.ts"],"sourcesContent":["import { useState, useEffect, RefObject } from 'react';\nimport {\n\tfindClosestMenuParent,\n\tcalculateLeftPosition,\n\tcalculateTopPosition\n} from '../MrlMenu/utilities';\n\ninterface SubMenuPosition {\n\tleft: string;\n\ttop: string;\n}\n\n/**\n * Calculates the position of the sub menu element\n *\n * @param triggerRef - The trigger element ref\n * @param menuRef - The menu element ref\n * @param isSubMenu - Is the menu a sub menu\n * @param isOpen - Is the element visible\n * @param originalMenuRect - The menu element rect\n * @param disable - Should the menu be disabled\n * @returns The sub menu position\n */\nexport const useSubMenuElementPosition = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\tmenuRef: RefObject<HTMLDivElement>,\n\tisSubMenu: boolean,\n\tisOpen: boolean,\n\toriginalMenuRect: DOMRect | null,\n\tdisable?: boolean\n): SubMenuPosition => {\n\tconst [subMenuPosition, setSubMenuPosition] = useState<SubMenuPosition>({\n\t\tleft: 'calc(100% - 5px)',\n\t\ttop: ''\n\t});\n\n\tconst [menuRect, setMenuRect] = useState<DOMRect | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!disable && isOpen && menuRef.current && !originalMenuRect) {\n\t\t\tsetMenuRect(menuRef.current.getBoundingClientRect());\n\t\t}\n\t}, [\n\t\tdisable,\n\t\tisOpen,\n\t\tmenuRef,\n\t\toriginalMenuRect\n\t]);\n\n\tuseEffect(() => {\n\t\tif (\n\t\t\tdisable ||\n\t\t\t!triggerRef?.current ||\n\t\t\t!menuRef.current ||\n\t\t\t!isSubMenu ||\n\t\t\t!isOpen ||\n\t\t\t!menuRect ||\n\t\t\t!isSubMenu\n\t\t)\n\t\t\treturn;\n\n\t\tconst parentMenu = findClosestMenuParent(triggerRef.current);\n\t\tconst triggerRect = triggerRef.current.getBoundingClientRect();\n\n\t\tif (!parentMenu?.parentElement) return;\n\n\t\tconst parentMenuRect = parentMenu.getBoundingClientRect();\n\t\tconst menuHeight = menuRef.current.getBoundingClientRect().height;\n\n\t\tconst overlapsRight = window.innerWidth < menuRect.right;\n\t\tconst overlapsLeft = triggerRect.left - menuRect.width < menuRect.width;\n\n\t\tconst newLeft = calculateLeftPosition(overlapsRight, overlapsLeft, menuRect, triggerRef);\n\n\t\tlet newTop = calculateTopPosition(\n\t\t\toverlapsRight,\n\t\t\toverlapsLeft,\n\t\t\ttriggerRef,\n\t\t\tmenuRect,\n\t\t\tparentMenu,\n\t\t\ttriggerRect\n\t\t);\n\n\t\t// if the submenu height is smaller than the menu height, we want to top align the submenu so it doesn't go off\n\t\t// of the top of the screen\n\t\tif (menuHeight > parentMenuRect.height) {\n\t\t\tnewTop = `0px`;\n\t\t}\n\n\t\tsetSubMenuPosition({ left: newLeft, top: newTop });\n\t}, [\n\t\tdisable,\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tmenuRect,\n\t\tisSubMenu,\n\t\tisOpen\n\t]);\n\n\treturn subMenuPosition;\n};\n"],"names":["useSubMenuElementPosition","triggerRef","menuRef","isSubMenu","isOpen","originalMenuRect","disable","_useState","useState","left","top","_useState2","_slicedToArray","subMenuPosition","setSubMenuPosition","_useState3","_useState4","menuRect","setMenuRect","useEffect","current","getBoundingClientRect","parentMenu","findClosestMenuParent","triggerRect","parentElement","parentMenuRect","menuHeight","height","overlapsRight","window","innerWidth","right","overlapsLeft","width","newLeft","calculateLeftPosition","newTop","calculateTopPosition"],"mappings":";;;;;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"useSubMenuElementPosition.js","sources":["../../../../../src/components/menu/hooks/useSubMenuElementPosition.ts"],"sourcesContent":["import { useState, useEffect, RefObject } from 'react';\nimport {\n\tfindClosestMenuParent,\n\tcalculateLeftPosition,\n\tcalculateTopPosition\n} from '../MrlMenu/utilities';\n\ninterface SubMenuPosition {\n\tleft: string;\n\ttop: string;\n}\n\n/**\n * Calculates the position of the sub menu element\n *\n * @param triggerRef - The trigger element ref\n * @param menuRef - The menu element ref\n * @param isSubMenu - Is the menu a sub menu\n * @param isOpen - Is the element visible\n * @param originalMenuRect - The menu element rect\n * @param disable - Should the menu be disabled\n * @returns The sub menu position\n */\nexport const useSubMenuElementPosition = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\tmenuRef: RefObject<HTMLDivElement>,\n\tisSubMenu: boolean,\n\tisOpen: boolean,\n\toriginalMenuRect: DOMRect | null,\n\tdisable?: boolean\n): SubMenuPosition => {\n\tconst [subMenuPosition, setSubMenuPosition] = useState<SubMenuPosition>({\n\t\tleft: 'calc(100% - 5px)',\n\t\ttop: ''\n\t});\n\n\tconst [menuRect, setMenuRect] = useState<DOMRect | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!disable && isOpen && menuRef.current && !originalMenuRect) {\n\t\t\tsetMenuRect(menuRef.current.getBoundingClientRect());\n\t\t}\n\t}, [\n\t\tdisable,\n\t\tisOpen,\n\t\tmenuRef,\n\t\toriginalMenuRect\n\t]);\n\n\tuseEffect(() => {\n\t\tif (\n\t\t\tdisable ||\n\t\t\t!triggerRef?.current ||\n\t\t\t!menuRef.current ||\n\t\t\t!isSubMenu ||\n\t\t\t!isOpen ||\n\t\t\t!menuRect ||\n\t\t\t!isSubMenu\n\t\t)\n\t\t\treturn;\n\n\t\tconst parentMenu = findClosestMenuParent(triggerRef.current);\n\t\tconst triggerRect = triggerRef.current.getBoundingClientRect();\n\n\t\tif (!parentMenu?.parentElement) return;\n\n\t\tconst parentMenuRect = parentMenu.getBoundingClientRect();\n\t\tconst menuHeight = menuRef.current.getBoundingClientRect().height;\n\n\t\tconst overlapsRight = window.innerWidth < menuRect.right;\n\t\tconst overlapsLeft = triggerRect.left - menuRect.width < menuRect.width;\n\n\t\tconst newLeft = calculateLeftPosition(overlapsRight, overlapsLeft, menuRect, triggerRef);\n\n\t\tlet newTop = calculateTopPosition(\n\t\t\toverlapsRight,\n\t\t\toverlapsLeft,\n\t\t\ttriggerRef,\n\t\t\tmenuRect,\n\t\t\tparentMenu,\n\t\t\ttriggerRect\n\t\t);\n\n\t\t// if the submenu height is smaller than the menu height, we want to top align the submenu so it doesn't go off\n\t\t// of the top of the screen\n\t\tif (menuHeight > parentMenuRect.height) {\n\t\t\tnewTop = `0px`;\n\t\t}\n\n\t\tsetSubMenuPosition({ left: newLeft, top: newTop });\n\t}, [\n\t\tdisable,\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tmenuRect,\n\t\tisSubMenu,\n\t\tisOpen\n\t]);\n\n\treturn subMenuPosition;\n};\n"],"names":["useSubMenuElementPosition","triggerRef","menuRef","isSubMenu","isOpen","originalMenuRect","disable","_useState","useState","left","top","_useState2","_slicedToArray","subMenuPosition","setSubMenuPosition","_useState3","_useState4","menuRect","setMenuRect","useEffect","current","getBoundingClientRect","parentMenu","findClosestMenuParent","triggerRect","parentElement","parentMenuRect","menuHeight","height","overlapsRight","window","innerWidth","right","overlapsLeft","width","newLeft","calculateLeftPosition","newTop","calculateTopPosition"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @param pos - The position to flip. Can be 'left', 'right', 'top', or 'bottom'.
|
|
7
7
|
* @returns The flipped position. Will be 'right' for 'left', 'left' for 'right', 'bottom' for 'top', and 'top' for 'bottom'.
|
|
8
8
|
*/
|
|
9
|
-
var flipPosition =
|
|
9
|
+
var flipPosition = pos => {
|
|
10
10
|
switch (pos) {
|
|
11
11
|
case 'left':
|
|
12
12
|
return 'right';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flip-position.js","sources":["../../../../../src/components/menu/utilities/flip-position.ts"],"sourcesContent":["import { MenuPosition } from '../constants';\n\n/**\n * Flips the given position to its opposite.\n *\n * @param pos - The position to flip. Can be 'left', 'right', 'top', or 'bottom'.\n * @returns The flipped position. Will be 'right' for 'left', 'left' for 'right', 'bottom' for 'top', and 'top' for 'bottom'.\n */\nexport const flipPosition = (pos: MenuPosition): MenuPosition => {\n\tswitch (pos) {\n\t\tcase 'left':\n\t\t\treturn 'right';\n\t\tcase 'right':\n\t\t\treturn 'left';\n\t\tcase 'top':\n\t\t\treturn 'bottom';\n\t\tcase 'bottom':\n\t\t\treturn 'top';\n\t}\n\treturn pos;\n};\n"],"names":["flipPosition","pos"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"flip-position.js","sources":["../../../../../src/components/menu/utilities/flip-position.ts"],"sourcesContent":["import { MenuPosition } from '../constants';\n\n/**\n * Flips the given position to its opposite.\n *\n * @param pos - The position to flip. Can be 'left', 'right', 'top', or 'bottom'.\n * @returns The flipped position. Will be 'right' for 'left', 'left' for 'right', 'bottom' for 'top', and 'top' for 'bottom'.\n */\nexport const flipPosition = (pos: MenuPosition): MenuPosition => {\n\tswitch (pos) {\n\t\tcase 'left':\n\t\t\treturn 'right';\n\t\tcase 'right':\n\t\t\treturn 'left';\n\t\tcase 'top':\n\t\t\treturn 'bottom';\n\t\tcase 'bottom':\n\t\t\treturn 'top';\n\t}\n\treturn pos;\n};\n"],"names":["flipPosition","pos"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,YAAY,GAAIC,GAAiB,IAAmB;AAChE,EAAA,QAAQA,GAAG;AACV,IAAA,KAAK,MAAM;AACV,MAAA,OAAO,OAAO;AACf,IAAA,KAAK,OAAO;AACX,MAAA,OAAO,MAAM;AACd,IAAA,KAAK,KAAK;AACT,MAAA,OAAO,QAAQ;AAChB,IAAA,KAAK,QAAQ;AACZ,MAAA,OAAO,KAAK;AACd;AACA,EAAA,OAAOA,GAAG;AACX;;;;"}
|
|
@@ -13,7 +13,10 @@ var MrlFocusTrap = require('../../focus-trap/MrlFocusTrap/MrlFocusTrap.js');
|
|
|
13
13
|
var MrlIconButton = require('../../button/MrlIconButton/MrlIconButton.js');
|
|
14
14
|
var MrlSvg = require('../../svg/MrlSvg/MrlSvg.js');
|
|
15
15
|
|
|
16
|
-
function
|
|
16
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
|
|
18
|
+
function _interopNamespace(e) {
|
|
19
|
+
if (e && e.__esModule) return e;
|
|
17
20
|
var n = Object.create(null);
|
|
18
21
|
if (e) {
|
|
19
22
|
Object.keys(e).forEach(function (k) {
|
|
@@ -30,7 +33,8 @@ function _interopNamespaceDefault(e) {
|
|
|
30
33
|
return Object.freeze(n);
|
|
31
34
|
}
|
|
32
35
|
|
|
33
|
-
var React__namespace = /*#__PURE__*/
|
|
36
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
37
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
34
38
|
|
|
35
39
|
var _excluded = ["ariaLabel", "children", "className", "closable", "loading", "size", "state", "hookClose", "preventBackgroundScroll", "attrs"];
|
|
36
40
|
/**
|
|
@@ -66,7 +70,7 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
66
70
|
* Reference to the modal
|
|
67
71
|
*/
|
|
68
72
|
var modal = React__namespace.useRef(null);
|
|
69
|
-
React__namespace.useImperativeHandle(ref,
|
|
73
|
+
React__namespace.useImperativeHandle(ref, () => {
|
|
70
74
|
return modalContainer.current;
|
|
71
75
|
});
|
|
72
76
|
|
|
@@ -83,9 +87,7 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
83
87
|
/**
|
|
84
88
|
* Open/Closed state of the modal
|
|
85
89
|
*/
|
|
86
|
-
var _React$useState = React__namespace.useState(
|
|
87
|
-
return state;
|
|
88
|
-
}),
|
|
90
|
+
var _React$useState = React__namespace.useState(() => state),
|
|
89
91
|
_React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
|
|
90
92
|
modalState = _React$useState2[0],
|
|
91
93
|
setModalState = _React$useState2[1];
|
|
@@ -146,7 +148,7 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
146
148
|
* Handles when the user clicks on the overlay to close the modal
|
|
147
149
|
* @param {React.KeyEvent} e - key event data
|
|
148
150
|
*/
|
|
149
|
-
var handleKeyDismiss =
|
|
151
|
+
var handleKeyDismiss = e => {
|
|
150
152
|
if (e.key === 'Escape') setModalState('close');
|
|
151
153
|
};
|
|
152
154
|
|
|
@@ -154,7 +156,7 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
154
156
|
* Handles when the user clicks on the overlay to close the modal
|
|
155
157
|
* @param {MouseEvent} e - mouse event data
|
|
156
158
|
*/
|
|
157
|
-
var handleDismiss =
|
|
159
|
+
var handleDismiss = e => {
|
|
158
160
|
if (modalContainer.current !== e.target) return;
|
|
159
161
|
handleClose();
|
|
160
162
|
};
|
|
@@ -162,14 +164,14 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
162
164
|
/**
|
|
163
165
|
* Handler logic for closing the modal
|
|
164
166
|
*/
|
|
165
|
-
var handleClose = React__namespace.useCallback(
|
|
167
|
+
var handleClose = React__namespace.useCallback(() => {
|
|
166
168
|
setFadeState(MrlModal_module.default['fade-out']);
|
|
167
169
|
|
|
168
170
|
/**
|
|
169
171
|
* Set timeout to allow for fade out animation to complete
|
|
170
172
|
* before we hide the modal from the DOM and call the close hook
|
|
171
173
|
*/
|
|
172
|
-
var timeoutId = setTimeout(
|
|
174
|
+
var timeoutId = setTimeout(() => {
|
|
173
175
|
if (modal.current) {
|
|
174
176
|
setDisplayState(MrlModal_module.default['hide']);
|
|
175
177
|
}
|
|
@@ -178,7 +180,7 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
178
180
|
if (preventBackgroundScroll) document.body.style.overflow = prevOverflow;
|
|
179
181
|
|
|
180
182
|
// cleanup setTimeout
|
|
181
|
-
return
|
|
183
|
+
return () => {
|
|
182
184
|
clearTimeout(timeoutId);
|
|
183
185
|
};
|
|
184
186
|
}, [hookClose, prevOverflow, preventBackgroundScroll]);
|
|
@@ -186,7 +188,7 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
186
188
|
/**
|
|
187
189
|
* Handler logic for opening the modal
|
|
188
190
|
*/
|
|
189
|
-
var handleOpen = React__namespace.useCallback(
|
|
191
|
+
var handleOpen = React__namespace.useCallback(() => {
|
|
190
192
|
setDisplayState(MrlModal_module.default['display']);
|
|
191
193
|
setFadeState(MrlModal_module.default['fade-in']);
|
|
192
194
|
if (preventBackgroundScroll) {
|
|
@@ -198,7 +200,7 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
198
200
|
/**
|
|
199
201
|
* Sets the open/close state of the UI
|
|
200
202
|
*/
|
|
201
|
-
React__namespace.useEffect(
|
|
203
|
+
React__namespace.useEffect(() => {
|
|
202
204
|
if (modalState === 'open') {
|
|
203
205
|
handleOpen();
|
|
204
206
|
} else if (modalState === 'close') {
|
|
@@ -213,14 +215,14 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
213
215
|
/**
|
|
214
216
|
* Sets modal state when the state prop changes
|
|
215
217
|
*/
|
|
216
|
-
React__namespace.useEffect(
|
|
218
|
+
React__namespace.useEffect(() => {
|
|
217
219
|
setModalState(state);
|
|
218
220
|
}, [state]);
|
|
219
221
|
|
|
220
222
|
/**
|
|
221
223
|
* ComponentDidLoad
|
|
222
224
|
*/
|
|
223
|
-
React__namespace.useEffect(
|
|
225
|
+
React__namespace.useEffect(() => {
|
|
224
226
|
var el = modalContainer.current;
|
|
225
227
|
if (el) {
|
|
226
228
|
/**
|
|
@@ -243,14 +245,16 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
243
245
|
/**
|
|
244
246
|
* Cleanup overflow hidden when component unmounts
|
|
245
247
|
*/
|
|
246
|
-
React__namespace.useEffect(
|
|
247
|
-
return
|
|
248
|
+
React__namespace.useEffect(() => {
|
|
249
|
+
return () => {
|
|
248
250
|
document.body.style.overflow = '';
|
|
249
251
|
};
|
|
250
252
|
}, []);
|
|
251
|
-
var containerClasses =
|
|
252
|
-
var modalClasses =
|
|
253
|
-
|
|
253
|
+
var containerClasses = classnames__default.default('mrl-modal-container', 'mrl-modal-backdrop', className, MrlModal_module.default['mrl-modal-backdrop'], fadeState, displayState);
|
|
254
|
+
var modalClasses = classnames__default.default('mrl-modal', MrlModal_module.default['mrl-modal'], attrs.class || attrs.className, {
|
|
255
|
+
["mrl-modal--".concat(size)]: size !== constants.defaults.size
|
|
256
|
+
});
|
|
257
|
+
var closeClasses = classnames__default.default('mrl-modal-close', MrlModal_module.default['mrl-modal-close']);
|
|
254
258
|
var attrConfig = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({
|
|
255
259
|
'aria-hidden': (modalState === 'close').toString()
|
|
256
260
|
}, ariaLabel ? {
|
|
@@ -263,15 +267,15 @@ var MrlModal = /*#__PURE__*/React__namespace.forwardRef(function MrlModal(props,
|
|
|
263
267
|
'aria-modal': 'true',
|
|
264
268
|
role: 'dialog'
|
|
265
269
|
});
|
|
266
|
-
delete attrs
|
|
270
|
+
delete attrs.class;
|
|
267
271
|
delete attrs.className;
|
|
268
272
|
var attributes = setAttributes.setAttributes(attrs, attrConfig);
|
|
269
273
|
return /*#__PURE__*/React__namespace.createElement(MrlModalContext.MrlModalContext.Provider, {
|
|
270
274
|
value: {
|
|
271
|
-
scrollableContent
|
|
272
|
-
setScrollableContent
|
|
273
|
-
setTitle
|
|
274
|
-
title
|
|
275
|
+
scrollableContent,
|
|
276
|
+
setScrollableContent,
|
|
277
|
+
setTitle,
|
|
278
|
+
title
|
|
275
279
|
}
|
|
276
280
|
}, /*#__PURE__*/React__namespace.createElement(MrlFocusTrap.MrlFocusTrap, {
|
|
277
281
|
disabled: loading,
|