@muraldevkit/ui-toolkit 4.68.0-dev-NFbt.1 → 4.68.0-dev-nPeA.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -250
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js +17 -11
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +27 -25
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js +11 -5
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +12 -4
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +13 -6
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js +7 -3
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +24 -28
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +20 -20
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js +21 -21
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +20 -22
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +14 -10
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/actions.js +11 -16
- package/dist/cjs/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/cjs/components/button/helpers.js +4 -6
- package/dist/cjs/components/button/helpers.js.map +1 -1
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +8 -9
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js +14 -7
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js +18 -6
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/cjs/components/empty/default/MrlEmpty.js +8 -4
- package/dist/cjs/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js +8 -4
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js +30 -38
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +7 -3
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js +8 -7
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +9 -3
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +6 -5
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +13 -4
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +11 -7
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js +21 -14
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js +8 -4
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/cjs/components/form/hooks/useActiveColor.js +2 -2
- package/dist/cjs/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/cjs/components/form/hooks/useIsEditable.js +3 -3
- package/dist/cjs/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js +12 -5
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +19 -5
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +42 -31
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +21 -12
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +19 -11
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js +8 -7
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/index.js +4 -3
- package/dist/cjs/components/form/legacy-select/index.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +7 -3
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +11 -5
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js +3 -2
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js.map +1 -1
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js +9 -3
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectOption.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectOption.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js.map +1 -1
- package/dist/cjs/components/form/select/styles/default.js +18 -18
- package/dist/cjs/components/form/select/styles/default.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inline.js +2 -2
- package/dist/cjs/components/form/select/styles/inline.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/cjs/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -7
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +13 -9
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +31 -19
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +28 -23
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -16
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +14 -17
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +16 -9
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/cjs/components/form/utils.js +2 -4
- package/dist/cjs/components/form/utils.js.map +1 -1
- package/dist/cjs/components/grid/MrlCol/MrlCol.js +37 -46
- package/dist/cjs/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js +7 -3
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js.map +1 -1
- package/dist/cjs/components/grid/MrlRow/MrlRow.js +7 -3
- package/dist/cjs/components/grid/MrlRow/MrlRow.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js.map +1 -1
- package/dist/cjs/components/layout/MrlMain/MrlMain.js +9 -3
- package/dist/cjs/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/MrlPage.js +9 -3
- package/dist/cjs/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/index.js +3 -2
- package/dist/cjs/components/layout/MrlPage/index.js.map +1 -1
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +27 -15
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js +10 -3
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/cjs/components/layout/context/LayoutContext.js +7 -6
- package/dist/cjs/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +18 -14
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +13 -9
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/cjs/components/layout/utils.js +2 -2
- package/dist/cjs/components/layout/utils.js.map +1 -1
- package/dist/cjs/components/link/MrlLink/MrlLink.js +13 -4
- package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +16 -14
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js +13 -12
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js +16 -6
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js +16 -4
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +61 -63
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/cjs/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js +4 -3
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +24 -19
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -6
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/cjs/components/menu/context/MrlMenuContext.js +3 -2
- package/dist/cjs/components/menu/context/MrlMenuContext.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js +19 -15
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/cjs/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js +29 -25
- package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js +12 -8
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js +4 -3
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js +13 -6
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js +12 -6
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js +7 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +11 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +26 -19
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js +17 -7
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/cjs/components/notification/MrlToast/MrlToast.js +18 -9
- package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js +7 -3
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +7 -3
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js +8 -4
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +25 -17
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js +3 -2
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js +9 -5
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +8 -4
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +77 -73
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +22 -23
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/cjs/components/portal/MrlPortal.js +5 -4
- package/dist/cjs/components/portal/MrlPortal.js.map +1 -1
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +237 -263
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js +11 -5
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +12 -6
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js +17 -17
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +20 -15
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +78 -96
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js +5 -4
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/cjs/components/table/MrlTable/MrlTable.js +7 -3
- package/dist/cjs/components/table/MrlTable/MrlTable.js.map +1 -1
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js +7 -3
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js.map +1 -1
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js +12 -3
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js +13 -3
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js +7 -3
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js.map +1 -1
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js +7 -3
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js.map +1 -1
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -7
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/cjs/components/table/utils.js +4 -10
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js +16 -9
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js +12 -5
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js +15 -13
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +16 -9
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js +16 -10
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/cjs/components/text/MrlText/MrlText.js +14 -5
- package/dist/cjs/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js +14 -4
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js +17 -8
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +7 -3
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +37 -36
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +13 -4
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js +21 -19
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/cjs/components/tooltip/utils.js +3 -3
- package/dist/cjs/components/tooltip/utils.js.map +1 -1
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js +7 -6
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/cjs/hooks/useBreakpoint/index.js +5 -5
- package/dist/cjs/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/cjs/hooks/useClickOutside/index.js +4 -4
- package/dist/cjs/hooks/useClickOutside/index.js.map +1 -1
- package/dist/cjs/hooks/useCoordinate/index.js +19 -28
- package/dist/cjs/hooks/useCoordinate/index.js.map +1 -1
- package/dist/cjs/hooks/useElementDimensions/index.js +21 -33
- package/dist/cjs/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js +7 -8
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/cjs/hooks/useScrollbarInfo/index.js +11 -10
- package/dist/cjs/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/index.js +20 -22
- package/dist/cjs/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/cjs/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/cjs/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/cjs/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/cjs/utils/frameDebounce/index.js +27 -28
- package/dist/cjs/utils/frameDebounce/index.js.map +1 -1
- package/dist/cjs/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/cjs/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js.map +1 -1
- package/dist/cjs/utils/isImagePath/index.js +4 -3
- package/dist/cjs/utils/isImagePath/index.js.map +1 -1
- package/dist/cjs/utils/isImageUri/index.js +1 -1
- package/dist/cjs/utils/isImageUri/index.js.map +1 -1
- package/dist/cjs/utils/isObject/isObject.js +1 -1
- package/dist/cjs/utils/isObject/isObject.js.map +1 -1
- package/dist/cjs/utils/isTouch/index.js +1 -1
- package/dist/cjs/utils/isTouch/index.js.map +1 -1
- package/dist/cjs/utils/layers/index.js +1 -1
- package/dist/cjs/utils/layers/index.js.map +1 -1
- package/dist/cjs/utils/noop/index.js +1 -1
- package/dist/cjs/utils/noop/index.js.map +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/cjs/utils/setAttributes/setAttributes.js +11 -5
- package/dist/cjs/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/cjs/utils/trapFocus/index.js +9 -11
- package/dist/cjs/utils/trapFocus/index.js.map +1 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -234
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js +12 -10
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +22 -24
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js +6 -4
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +7 -3
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +7 -4
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +18 -26
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +14 -18
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js +16 -20
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +14 -20
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +7 -7
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/actions.js +12 -17
- package/dist/esm/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/esm/components/button/helpers.js +4 -6
- package/dist/esm/components/button/helpers.js.map +1 -1
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js +5 -7
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/esm/components/container/MrlContainer/MrlContainer.js +7 -4
- package/dist/esm/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js +13 -5
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js +28 -37
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js +5 -5
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +4 -2
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +3 -3
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +8 -3
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +2 -2
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/esm/components/form/date-picker/MrlDatePicker.js +15 -12
- package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js +2 -2
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/esm/components/form/hooks/useActiveColor.js +2 -2
- package/dist/esm/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/esm/components/form/hooks/useIsEditable.js +3 -3
- package/dist/esm/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js +6 -3
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +14 -4
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +37 -30
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +16 -11
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +14 -10
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/esm/components/form/legacy-select/context/SelectContext.js +5 -5
- package/dist/esm/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/esm/components/form/legacy-select/index.js +1 -1
- package/dist/esm/components/form/legacy-select/index.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +4 -2
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +2 -2
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +2 -2
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js +4 -2
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/esm/components/form/select/styles/default.js +18 -18
- package/dist/esm/components/form/select/styles/default.js.map +1 -1
- package/dist/esm/components/form/select/styles/inline.js +2 -2
- package/dist/esm/components/form/select/styles/inline.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/esm/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/esm/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +9 -6
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +3 -3
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +25 -17
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +21 -20
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +15 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +8 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +9 -6
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/esm/components/form/utils.js +2 -4
- package/dist/esm/components/form/utils.js.map +1 -1
- package/dist/esm/components/grid/MrlCol/MrlCol.js +31 -44
- package/dist/esm/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/esm/components/layout/MrlMain/MrlMain.js +4 -2
- package/dist/esm/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/esm/components/layout/MrlPage/MrlPage.js +4 -2
- package/dist/esm/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +19 -11
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js +5 -2
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/esm/components/layout/context/LayoutContext.js +4 -4
- package/dist/esm/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/esm/components/layout/utils.js +2 -2
- package/dist/esm/components/layout/utils.js.map +1 -1
- package/dist/esm/components/link/MrlLink/MrlLink.js +8 -3
- package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +9 -11
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js +5 -9
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js +9 -3
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js +11 -3
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js +56 -62
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/esm/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -17
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +2 -2
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js +14 -14
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/esm/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -22
- package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js +5 -5
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js +7 -4
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js +7 -5
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +6 -2
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +18 -15
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js +11 -5
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/esm/components/notification/MrlToast/MrlToast.js +14 -9
- package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js +14 -10
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js +2 -2
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js +71 -71
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +19 -21
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/esm/components/portal/MrlPortal.js +2 -2
- package/dist/esm/components/portal/MrlPortal.js.map +1 -1
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +235 -262
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js +6 -4
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +7 -5
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js +7 -11
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +8 -8
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +71 -94
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js +2 -2
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js +7 -2
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js +8 -2
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +7 -5
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/esm/components/table/utils.js +4 -10
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js +11 -8
- package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js +7 -4
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js +8 -10
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +11 -8
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js +11 -9
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/esm/components/text/MrlText/MrlText.js +8 -3
- package/dist/esm/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js +9 -3
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js +12 -7
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +31 -34
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +8 -3
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/index.js +15 -17
- package/dist/esm/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/esm/components/tooltip/utils.js +3 -3
- package/dist/esm/components/tooltip/utils.js.map +1 -1
- package/dist/esm/hooks/useAutoClose/useAutoClose.js +4 -4
- package/dist/esm/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/index.js +5 -5
- package/dist/esm/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/index.js +4 -4
- package/dist/esm/hooks/useClickOutside/index.js.map +1 -1
- package/dist/esm/hooks/useCoordinate/index.js +20 -29
- package/dist/esm/hooks/useCoordinate/index.js.map +1 -1
- package/dist/esm/hooks/useElementDimensions/index.js +19 -32
- package/dist/esm/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/esm/hooks/useHasFocusableDescendant/index.js +4 -6
- package/dist/esm/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/esm/hooks/useScrollbarInfo/index.js +8 -8
- package/dist/esm/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/index.js +14 -20
- package/dist/esm/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/esm/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/esm/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/esm/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/esm/utils/frameDebounce/index.js +28 -29
- package/dist/esm/utils/frameDebounce/index.js.map +1 -1
- package/dist/esm/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/esm/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/esm/utils/isElementScrollable/index.js +1 -1
- package/dist/esm/utils/isElementScrollable/index.js.map +1 -1
- package/dist/esm/utils/isImagePath/index.js +1 -1
- package/dist/esm/utils/isImagePath/index.js.map +1 -1
- package/dist/esm/utils/isImageUri/index.js +1 -1
- package/dist/esm/utils/isImageUri/index.js.map +1 -1
- package/dist/esm/utils/isObject/isObject.js +1 -1
- package/dist/esm/utils/isObject/isObject.js.map +1 -1
- package/dist/esm/utils/isTouch/index.js +1 -1
- package/dist/esm/utils/isTouch/index.js.map +1 -1
- package/dist/esm/utils/layers/index.js +1 -1
- package/dist/esm/utils/layers/index.js.map +1 -1
- package/dist/esm/utils/noop/index.js +1 -1
- package/dist/esm/utils/noop/index.js.map +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/esm/utils/setAttributes/setAttributes.js +7 -5
- package/dist/esm/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/esm/utils/trapFocus/index.js +9 -11
- package/dist/esm/utils/trapFocus/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useElementDimensions/index.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Represents the dimensions of an element's border box.\n */\nexport type ElementDimensions = {\n\theight: number | null;\n\twidth: number | null;\n};\n\n/**\n * Calculates the dimensions of an element using the ResizeObserver API.\n *\n * @template T - The type of the element or HTMLElement.\n * @param ref - The ref object that references the element.\n * @returns {ElementDimensions} - The dimensions of the element.\n */\nexport function useElementDimensions<T>(\n\tref: React.RefObject<T extends HTMLElement ? T : HTMLElement>\n): ElementDimensions {\n\tconst [dimensions, setDimensions] = React.useState<ElementDimensions>(() => ({\n\t\theight: null,\n\t\twidth: null\n\t}));\n\n\tReact.useEffect(() => {\n\t\tif(!ref.current) return;\n\n\t\tconst expectedWidths = new WeakMap();\n\t\tconst expectedHeights = new WeakMap();\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tconst expectedWidth = expectedWidths.get(entry.target);\n\t\t\t\t\tconst expectedHeight = expectedHeights.get(entry.target);\n\t\t\t\t\tif(entry.borderBoxSize[0].inlineSize === expectedWidth &&\n\t\t\t\t\t\tentry.borderBoxSize[0].blockSize === expectedHeight) continue;\n\t\t\t\t\t\n\t\t\t\t\texpectedWidths.set(entry.target, entry.borderBoxSize[0].inlineSize);\n\t\t\t\t\texpectedHeights.set(entry.target, entry.borderBoxSize[0].blockSize);\n\t\t\t\t\tsetDimensions({\n\t\t\t\t\t\theight: entry.borderBoxSize[0].blockSize, \n\t\t\t\t\t\twidth: entry.borderBoxSize[0].inlineSize\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tobserver.observe(ref.current);\n\n\t\treturn () => observer.disconnect();\n\t// ref won't trigger a re-render, so it's safe to exclude it from the dependencies array\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n \n\treturn dimensions;\n}\n"],"names":["useElementDimensions","ref","_React$useState","React","useState","height","width","_React$useState2","_slicedToArray","dimensions","setDimensions","useEffect","current","expectedWidths","WeakMap","expectedHeights","observer","ResizeObserver","entries","requestAnimationFrame","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useElementDimensions/index.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Represents the dimensions of an element's border box.\n */\nexport type ElementDimensions = {\n\theight: number | null;\n\twidth: number | null;\n};\n\n/**\n * Calculates the dimensions of an element using the ResizeObserver API.\n *\n * @template T - The type of the element or HTMLElement.\n * @param ref - The ref object that references the element.\n * @returns {ElementDimensions} - The dimensions of the element.\n */\nexport function useElementDimensions<T>(\n\tref: React.RefObject<T extends HTMLElement ? T : HTMLElement>\n): ElementDimensions {\n\tconst [dimensions, setDimensions] = React.useState<ElementDimensions>(() => ({\n\t\theight: null,\n\t\twidth: null\n\t}));\n\n\tReact.useEffect(() => {\n\t\tif(!ref.current) return;\n\n\t\tconst expectedWidths = new WeakMap();\n\t\tconst expectedHeights = new WeakMap();\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tconst expectedWidth = expectedWidths.get(entry.target);\n\t\t\t\t\tconst expectedHeight = expectedHeights.get(entry.target);\n\t\t\t\t\tif(entry.borderBoxSize[0].inlineSize === expectedWidth &&\n\t\t\t\t\t\tentry.borderBoxSize[0].blockSize === expectedHeight) continue;\n\t\t\t\t\t\n\t\t\t\t\texpectedWidths.set(entry.target, entry.borderBoxSize[0].inlineSize);\n\t\t\t\t\texpectedHeights.set(entry.target, entry.borderBoxSize[0].blockSize);\n\t\t\t\t\tsetDimensions({\n\t\t\t\t\t\theight: entry.borderBoxSize[0].blockSize, \n\t\t\t\t\t\twidth: entry.borderBoxSize[0].inlineSize\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tobserver.observe(ref.current);\n\n\t\treturn () => observer.disconnect();\n\t// ref won't trigger a re-render, so it's safe to exclude it from the dependencies array\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n \n\treturn dimensions;\n}\n"],"names":["useElementDimensions","ref","_React$useState","React","useState","height","width","_React$useState2","_slicedToArray","dimensions","setDimensions","useEffect","current","expectedWidths","WeakMap","expectedHeights","observer","ResizeObserver","entries","requestAnimationFrame","entry","expectedWidth","get","target","expectedHeight","borderBoxSize","inlineSize","blockSize","set","observe","disconnect"],"mappings":";;;AAEA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,oBAAoBA,CACnCC,GAA6D,EACzC;AACpB,EAAA,IAAAC,eAAA,GAAoCC,KAAK,CAACC,QAAQ,CAAoB,OAAO;AAC5EC,MAAAA,MAAM,EAAE,IAAI;AACZC,MAAAA,KAAK,EAAE;AACR,KAAC,CAAC,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAN,eAAA,EAAA,CAAA,CAAA;AAHIO,IAAAA,UAAU,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,gBAAA,CAAA,CAAA,CAAA;EAKhCJ,KAAK,CAACQ,SAAS,CAAC,MAAM;AACrB,IAAA,IAAG,CAACV,GAAG,CAACW,OAAO,EAAE;AAEjB,IAAA,IAAMC,cAAc,GAAG,IAAIC,OAAO,EAAE;AACpC,IAAA,IAAMC,eAAe,GAAG,IAAID,OAAO,EAAE;AAErC,IAAA,IAAME,QAAQ,GAAG,IAAIC,cAAc,CAAEC,OAAO,IAAK;AAChDC,MAAAA,qBAAqB,CAAC,MAAM;AAC3B,QAAA,KAAK,IAAMC,KAAK,IAAIF,OAAO,EAAE;UAC5B,IAAMG,aAAa,GAAGR,cAAc,CAACS,GAAG,CAACF,KAAK,CAACG,MAAM,CAAC;UACtD,IAAMC,cAAc,GAAGT,eAAe,CAACO,GAAG,CAACF,KAAK,CAACG,MAAM,CAAC;UACxD,IAAGH,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACC,UAAU,KAAKL,aAAa,IACrDD,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACE,SAAS,KAAKH,cAAc,EAAE;AAEtDX,UAAAA,cAAc,CAACe,GAAG,CAACR,KAAK,CAACG,MAAM,EAAEH,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACC,UAAU,CAAC;AACnEX,UAAAA,eAAe,CAACa,GAAG,CAACR,KAAK,CAACG,MAAM,EAAEH,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACE,SAAS,CAAC;AACnEjB,UAAAA,aAAa,CAAC;YACbL,MAAM,EAAEe,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACE,SAAS;AACxCrB,YAAAA,KAAK,EAAEc,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACC;AAC/B,WAAC,CAAC;AACH,QAAA;AACD,MAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AAEFV,IAAAA,QAAQ,CAACa,OAAO,CAAC5B,GAAG,CAACW,OAAO,CAAC;AAE7B,IAAA,OAAO,MAAMI,QAAQ,CAACc,UAAU,EAAE;AACnC;AACA;EACA,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,OAAOrB,UAAU;AAClB;;;;"}
|
|
@@ -28,14 +28,12 @@ function useHasFocusableDescendant(ref) {
|
|
|
28
28
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
29
29
|
hasFocusableDescendant = _React$useState2[0],
|
|
30
30
|
setHasFocusableDescendant = _React$useState2[1];
|
|
31
|
-
React.useLayoutEffect(
|
|
31
|
+
React.useLayoutEffect(() => {
|
|
32
32
|
var element = ref.current;
|
|
33
33
|
if (!element) return;
|
|
34
|
-
var measure =
|
|
34
|
+
var measure = () => {
|
|
35
35
|
var next = element.querySelector(FOCUSABLE_ELEMENTS_SELECTOR) !== null;
|
|
36
|
-
setHasFocusableDescendant(
|
|
37
|
-
return prev === next ? prev : next;
|
|
38
|
-
});
|
|
36
|
+
setHasFocusableDescendant(prev => prev === next ? prev : next);
|
|
39
37
|
};
|
|
40
38
|
measure();
|
|
41
39
|
var observer = new MutationObserver(measure);
|
|
@@ -45,7 +43,7 @@ function useHasFocusableDescendant(ref) {
|
|
|
45
43
|
childList: true,
|
|
46
44
|
subtree: true
|
|
47
45
|
});
|
|
48
|
-
return
|
|
46
|
+
return () => {
|
|
49
47
|
observer.disconnect();
|
|
50
48
|
};
|
|
51
49
|
}, [ref]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useHasFocusableDescendant/index.ts"],"sourcesContent":["import * as React from 'react';\nimport { FOCUSABLE_ELEMENTS_SELECTOR } from '../../utils/trapFocus';\n\n/**\n * Tracks whether the subtree of the given ref contains at least one element\n * that participates in sequential focus navigation.\n *\n * Used by scrollable wrapper components (`MrlPanel`, `MrlModalContent`) to\n * decide whether the wrapper itself needs `tabindex=\"0\"`. Per ACT rule\n * 0ssw9k (https://www.w3.org/WAI/standards-guidelines/act/rules/0ssw9k/) a\n * scrollable region passes WCAG 2.1.1 Keyboard either by being focusable\n * itself or by having a focusable descendant. When focusable descendants\n * already exist, adding `tabindex=\"0\"` to the wrapper produces a\n * \"meaningless tab stop\" finding from manual auditors.\n *\n * The default return value is `true` so that, on the very first render\n * (before the layout effect has measured the DOM), components err on the\n * side of NOT adding a tab stop. The MutationObserver flips it to `false`\n * synchronously inside the layout effect if the wrapper is genuinely\n * empty of focusable descendants.\n *\n * @param {React.RefObject<HTMLElement | null>} ref - Ref pointing at the container whose subtree should be observed.\n * @returns {boolean} `true` while the subtree contains at least one focusable element, `false` otherwise.\n */\nexport function useHasFocusableDescendant(ref: React.RefObject<HTMLElement | null>): boolean {\n\tconst [hasFocusableDescendant, setHasFocusableDescendant] = React.useState(true);\n\n\tReact.useLayoutEffect(() => {\n\t\tconst element = ref.current;\n\t\tif (!element) return;\n\n\t\tconst measure = () => {\n\t\t\tconst next = element.querySelector(FOCUSABLE_ELEMENTS_SELECTOR) !== null;\n\t\t\tsetHasFocusableDescendant((prev) => (prev === next ? prev : next));\n\t\t};\n\n\t\tmeasure();\n\n\t\tconst observer = new MutationObserver(measure);\n\t\tobserver.observe(element, {\n\t\t\tattributeFilter: ['aria-disabled', 'disabled', 'hidden', 'tabindex', 'type'],\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tsubtree: true\n\t\t});\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [ref]);\n\n\treturn hasFocusableDescendant;\n}\n"],"names":["useHasFocusableDescendant","ref","_React$useState","React","useState","_React$useState2","_slicedToArray","hasFocusableDescendant","setHasFocusableDescendant","useLayoutEffect","element","current","measure","next","querySelector","FOCUSABLE_ELEMENTS_SELECTOR","prev","observer","MutationObserver","observe","attributeFilter","attributes","childList","subtree","disconnect"],"mappings":";;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,yBAAyBA,CAACC,GAAwC,EAAW;AAC5F,EAAA,IAAAC,eAAA,GAA4DC,KAAK,CAACC,QAAQ,CAAC,IAAI,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAAzEK,IAAAA,sBAAsB,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,yBAAyB,GAAAH,gBAAA,CAAA,CAAA,CAAA;EAExDF,KAAK,CAACM,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useHasFocusableDescendant/index.ts"],"sourcesContent":["import * as React from 'react';\nimport { FOCUSABLE_ELEMENTS_SELECTOR } from '../../utils/trapFocus';\n\n/**\n * Tracks whether the subtree of the given ref contains at least one element\n * that participates in sequential focus navigation.\n *\n * Used by scrollable wrapper components (`MrlPanel`, `MrlModalContent`) to\n * decide whether the wrapper itself needs `tabindex=\"0\"`. Per ACT rule\n * 0ssw9k (https://www.w3.org/WAI/standards-guidelines/act/rules/0ssw9k/) a\n * scrollable region passes WCAG 2.1.1 Keyboard either by being focusable\n * itself or by having a focusable descendant. When focusable descendants\n * already exist, adding `tabindex=\"0\"` to the wrapper produces a\n * \"meaningless tab stop\" finding from manual auditors.\n *\n * The default return value is `true` so that, on the very first render\n * (before the layout effect has measured the DOM), components err on the\n * side of NOT adding a tab stop. The MutationObserver flips it to `false`\n * synchronously inside the layout effect if the wrapper is genuinely\n * empty of focusable descendants.\n *\n * @param {React.RefObject<HTMLElement | null>} ref - Ref pointing at the container whose subtree should be observed.\n * @returns {boolean} `true` while the subtree contains at least one focusable element, `false` otherwise.\n */\nexport function useHasFocusableDescendant(ref: React.RefObject<HTMLElement | null>): boolean {\n\tconst [hasFocusableDescendant, setHasFocusableDescendant] = React.useState(true);\n\n\tReact.useLayoutEffect(() => {\n\t\tconst element = ref.current;\n\t\tif (!element) return;\n\n\t\tconst measure = () => {\n\t\t\tconst next = element.querySelector(FOCUSABLE_ELEMENTS_SELECTOR) !== null;\n\t\t\tsetHasFocusableDescendant((prev) => (prev === next ? prev : next));\n\t\t};\n\n\t\tmeasure();\n\n\t\tconst observer = new MutationObserver(measure);\n\t\tobserver.observe(element, {\n\t\t\tattributeFilter: ['aria-disabled', 'disabled', 'hidden', 'tabindex', 'type'],\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tsubtree: true\n\t\t});\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [ref]);\n\n\treturn hasFocusableDescendant;\n}\n"],"names":["useHasFocusableDescendant","ref","_React$useState","React","useState","_React$useState2","_slicedToArray","hasFocusableDescendant","setHasFocusableDescendant","useLayoutEffect","element","current","measure","next","querySelector","FOCUSABLE_ELEMENTS_SELECTOR","prev","observer","MutationObserver","observe","attributeFilter","attributes","childList","subtree","disconnect"],"mappings":";;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,yBAAyBA,CAACC,GAAwC,EAAW;AAC5F,EAAA,IAAAC,eAAA,GAA4DC,KAAK,CAACC,QAAQ,CAAC,IAAI,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAAzEK,IAAAA,sBAAsB,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,yBAAyB,GAAAH,gBAAA,CAAA,CAAA,CAAA;EAExDF,KAAK,CAACM,eAAe,CAAC,MAAM;AAC3B,IAAA,IAAMC,OAAO,GAAGT,GAAG,CAACU,OAAO;IAC3B,IAAI,CAACD,OAAO,EAAE;IAEd,IAAME,OAAO,GAAGA,MAAM;MACrB,IAAMC,IAAI,GAAGH,OAAO,CAACI,aAAa,CAACC,2BAA2B,CAAC,KAAK,IAAI;MACxEP,yBAAyB,CAAEQ,IAAI,IAAMA,IAAI,KAAKH,IAAI,GAAGG,IAAI,GAAGH,IAAK,CAAC;IACnE,CAAC;AAEDD,IAAAA,OAAO,EAAE;AAET,IAAA,IAAMK,QAAQ,GAAG,IAAIC,gBAAgB,CAACN,OAAO,CAAC;AAC9CK,IAAAA,QAAQ,CAACE,OAAO,CAACT,OAAO,EAAE;MACzBU,eAAe,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;AAC5EC,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,SAAS,EAAE,IAAI;AACfC,MAAAA,OAAO,EAAE;AACV,KAAC,CAAC;AAEF,IAAA,OAAO,MAAM;MACZN,QAAQ,CAACO,UAAU,EAAE;IACtB,CAAC;AACF,EAAA,CAAC,EAAE,CAACvB,GAAG,CAAC,CAAC;AAET,EAAA,OAAOM,sBAAsB;AAC9B;;;;"}
|
|
@@ -22,9 +22,9 @@ function useScrollbarInfo() {
|
|
|
22
22
|
scrollbarInfo = _React$useState2[0],
|
|
23
23
|
setScrollbarInfo = _React$useState2[1];
|
|
24
24
|
var scrollableContainerRef = React.useRef(null);
|
|
25
|
-
React.useLayoutEffect(
|
|
25
|
+
React.useLayoutEffect(() => {
|
|
26
26
|
if (!scrollableContainerRef.current) return;
|
|
27
|
-
var observer = new ResizeObserver(
|
|
27
|
+
var observer = new ResizeObserver(_ref => {
|
|
28
28
|
var _ref2 = _slicedToArray(_ref, 1),
|
|
29
29
|
entry = _ref2[0];
|
|
30
30
|
if (!entry) return;
|
|
@@ -42,19 +42,19 @@ function useScrollbarInfo() {
|
|
|
42
42
|
// Horizontal scrollbar height: difference between offsetHeight and clientHeight
|
|
43
43
|
var horizontalScrollbarHeight = target.offsetHeight - target.clientHeight;
|
|
44
44
|
setScrollbarInfo({
|
|
45
|
-
hasHorizontalScrollbar
|
|
46
|
-
hasVerticalScrollbar
|
|
47
|
-
horizontalScrollbarHeight
|
|
48
|
-
verticalScrollbarWidth
|
|
45
|
+
hasHorizontalScrollbar,
|
|
46
|
+
hasVerticalScrollbar,
|
|
47
|
+
horizontalScrollbarHeight,
|
|
48
|
+
verticalScrollbarWidth
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
observer.observe(scrollableContainerRef.current);
|
|
52
|
-
return
|
|
52
|
+
return () => {
|
|
53
53
|
observer.disconnect();
|
|
54
54
|
};
|
|
55
55
|
}, []);
|
|
56
56
|
return _objectSpread2(_objectSpread2({}, scrollbarInfo), {}, {
|
|
57
|
-
scrollableContainerRef
|
|
57
|
+
scrollableContainerRef
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useScrollbarInfo/index.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type ScrollbarInfo = {\n\t/** Indicates if a horizontal scrollbar is present */\n\thasHorizontalScrollbar: boolean;\n\t/** Indicates if a vertical scrollbar is present */\n\thasVerticalScrollbar: boolean;\n\t/** Width in pixels of the vertical scrollbar (0 for overlay scrollbars) */\n\tverticalScrollbarWidth: number;\n\t/** Height in pixels of the horizontal scrollbar (0 for overlay scrollbars) */\n\thorizontalScrollbarHeight: number;\n};\n\n/**\n * Return type for the `useScrollbarInfo` hook.\n */\nexport type UseScrollbarInfoReturn<T extends HTMLElement> = ScrollbarInfo & {\n\tscrollableContainerRef: React.MutableRefObject<T | null>;\n};\n\n/**\n * Custom hook that provides information about the presence and dimensions of vertical and horizontal scrollbars\n * in a scrollable container.\n *\n * @returns {UseScrollbarInfoReturn} Returns the scrollbar information and a ref to attach to the scrollable container\n */\nexport function useScrollbarInfo<T extends HTMLElement>(): UseScrollbarInfoReturn<T> {\n\tconst [scrollbarInfo, setScrollbarInfo] = React.useState<ScrollbarInfo>({\n\t\thasHorizontalScrollbar: false,\n\t\thasVerticalScrollbar: false,\n\t\thorizontalScrollbarHeight: 0,\n\t\tverticalScrollbarWidth: 0\n\t});\n\n\tconst scrollableContainerRef = React.useRef<T | null>(null);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!scrollableContainerRef.current) return;\n\n\t\tconst observer = new ResizeObserver(([entry]) => {\n\t\t\tif (!entry) return;\n\t\t\tconst target = entry.target as HTMLElement;\n\n\t\t\t// Detects if scrollbars exist (works for both classic and overlay scrollbars)\n\t\t\t// Vertical scrollbar exists when content height exceeds visible height\n\t\t\tconst hasVerticalScrollbar = target.scrollHeight > target.clientHeight;\n\t\t\t// Horizontal scrollbar exists when content width exceeds visible width\n\t\t\tconst hasHorizontalScrollbar = target.scrollWidth > target.clientWidth;\n\n\t\t\t// Gets dimensions only for classic scrollbars that take up layout space\n\t\t\t// Vertical scrollbar width: difference between offsetWidth and clientWidth\n\t\t\tconst verticalScrollbarWidth = target.offsetWidth - target.clientWidth;\n\t\t\t// Horizontal scrollbar height: difference between offsetHeight and clientHeight\n\t\t\tconst horizontalScrollbarHeight = target.offsetHeight - target.clientHeight;\n\n\t\t\tsetScrollbarInfo({\n\t\t\t\thasHorizontalScrollbar,\n\t\t\t\thasVerticalScrollbar,\n\t\t\t\thorizontalScrollbarHeight,\n\t\t\t\tverticalScrollbarWidth\n\t\t\t});\n\t\t});\n\n\t\tobserver.observe(scrollableContainerRef.current);\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, []);\n\n\treturn {\n\t\t...scrollbarInfo,\n\t\tscrollableContainerRef\n\t};\n}\n"],"names":["useScrollbarInfo","_React$useState","React","useState","hasHorizontalScrollbar","hasVerticalScrollbar","horizontalScrollbarHeight","verticalScrollbarWidth","_React$useState2","_slicedToArray","scrollbarInfo","setScrollbarInfo","scrollableContainerRef","useRef","useLayoutEffect","current","observer","ResizeObserver","_ref","_ref2","entry","target","scrollHeight","clientHeight","scrollWidth","clientWidth","offsetWidth","offsetHeight","observe","disconnect","_objectSpread"],"mappings":";;;AAaA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAgBA,GAAqD;AACpF,EAAA,IAAAC,eAAA,GAA0CC,KAAK,CAACC,QAAQ,CAAgB;AACvEC,MAAAA,sBAAsB,EAAE,KAAK;AAC7BC,MAAAA,oBAAoB,EAAE,KAAK;AAC3BC,MAAAA,yBAAyB,EAAE,CAAC;AAC5BC,MAAAA,sBAAsB,EAAE;AACzB,KAAC,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAR,eAAA,EAAA,CAAA,CAAA;AALKS,IAAAA,aAAa,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,gBAAgB,GAAAH,gBAAA,CAAA,CAAA,CAAA;AAOtC,EAAA,IAAMI,sBAAsB,GAAGV,KAAK,CAACW,MAAM,CAAW,IAAI,CAAC;EAE3DX,KAAK,CAACY,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useScrollbarInfo/index.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type ScrollbarInfo = {\n\t/** Indicates if a horizontal scrollbar is present */\n\thasHorizontalScrollbar: boolean;\n\t/** Indicates if a vertical scrollbar is present */\n\thasVerticalScrollbar: boolean;\n\t/** Width in pixels of the vertical scrollbar (0 for overlay scrollbars) */\n\tverticalScrollbarWidth: number;\n\t/** Height in pixels of the horizontal scrollbar (0 for overlay scrollbars) */\n\thorizontalScrollbarHeight: number;\n};\n\n/**\n * Return type for the `useScrollbarInfo` hook.\n */\nexport type UseScrollbarInfoReturn<T extends HTMLElement> = ScrollbarInfo & {\n\tscrollableContainerRef: React.MutableRefObject<T | null>;\n};\n\n/**\n * Custom hook that provides information about the presence and dimensions of vertical and horizontal scrollbars\n * in a scrollable container.\n *\n * @returns {UseScrollbarInfoReturn} Returns the scrollbar information and a ref to attach to the scrollable container\n */\nexport function useScrollbarInfo<T extends HTMLElement>(): UseScrollbarInfoReturn<T> {\n\tconst [scrollbarInfo, setScrollbarInfo] = React.useState<ScrollbarInfo>({\n\t\thasHorizontalScrollbar: false,\n\t\thasVerticalScrollbar: false,\n\t\thorizontalScrollbarHeight: 0,\n\t\tverticalScrollbarWidth: 0\n\t});\n\n\tconst scrollableContainerRef = React.useRef<T | null>(null);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!scrollableContainerRef.current) return;\n\n\t\tconst observer = new ResizeObserver(([entry]) => {\n\t\t\tif (!entry) return;\n\t\t\tconst target = entry.target as HTMLElement;\n\n\t\t\t// Detects if scrollbars exist (works for both classic and overlay scrollbars)\n\t\t\t// Vertical scrollbar exists when content height exceeds visible height\n\t\t\tconst hasVerticalScrollbar = target.scrollHeight > target.clientHeight;\n\t\t\t// Horizontal scrollbar exists when content width exceeds visible width\n\t\t\tconst hasHorizontalScrollbar = target.scrollWidth > target.clientWidth;\n\n\t\t\t// Gets dimensions only for classic scrollbars that take up layout space\n\t\t\t// Vertical scrollbar width: difference between offsetWidth and clientWidth\n\t\t\tconst verticalScrollbarWidth = target.offsetWidth - target.clientWidth;\n\t\t\t// Horizontal scrollbar height: difference between offsetHeight and clientHeight\n\t\t\tconst horizontalScrollbarHeight = target.offsetHeight - target.clientHeight;\n\n\t\t\tsetScrollbarInfo({\n\t\t\t\thasHorizontalScrollbar,\n\t\t\t\thasVerticalScrollbar,\n\t\t\t\thorizontalScrollbarHeight,\n\t\t\t\tverticalScrollbarWidth\n\t\t\t});\n\t\t});\n\n\t\tobserver.observe(scrollableContainerRef.current);\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, []);\n\n\treturn {\n\t\t...scrollbarInfo,\n\t\tscrollableContainerRef\n\t};\n}\n"],"names":["useScrollbarInfo","_React$useState","React","useState","hasHorizontalScrollbar","hasVerticalScrollbar","horizontalScrollbarHeight","verticalScrollbarWidth","_React$useState2","_slicedToArray","scrollbarInfo","setScrollbarInfo","scrollableContainerRef","useRef","useLayoutEffect","current","observer","ResizeObserver","_ref","_ref2","entry","target","scrollHeight","clientHeight","scrollWidth","clientWidth","offsetWidth","offsetHeight","observe","disconnect","_objectSpread"],"mappings":";;;AAaA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAgBA,GAAqD;AACpF,EAAA,IAAAC,eAAA,GAA0CC,KAAK,CAACC,QAAQ,CAAgB;AACvEC,MAAAA,sBAAsB,EAAE,KAAK;AAC7BC,MAAAA,oBAAoB,EAAE,KAAK;AAC3BC,MAAAA,yBAAyB,EAAE,CAAC;AAC5BC,MAAAA,sBAAsB,EAAE;AACzB,KAAC,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAR,eAAA,EAAA,CAAA,CAAA;AALKS,IAAAA,aAAa,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,gBAAgB,GAAAH,gBAAA,CAAA,CAAA,CAAA;AAOtC,EAAA,IAAMI,sBAAsB,GAAGV,KAAK,CAACW,MAAM,CAAW,IAAI,CAAC;EAE3DX,KAAK,CAACY,eAAe,CAAC,MAAM;AAC3B,IAAA,IAAI,CAACF,sBAAsB,CAACG,OAAO,EAAE;AAErC,IAAA,IAAMC,QAAQ,GAAG,IAAIC,cAAc,CAACC,IAAA,IAAa;AAAA,MAAA,IAAAC,KAAA,GAAAV,cAAA,CAAAS,IAAA,EAAA,CAAA,CAAA;AAAXE,QAAAA,KAAK,GAAAD,KAAA,CAAA,CAAA,CAAA;MAC1C,IAAI,CAACC,KAAK,EAAE;AACZ,MAAA,IAAMC,MAAM,GAAGD,KAAK,CAACC,MAAqB;;AAE1C;AACA;MACA,IAAMhB,oBAAoB,GAAGgB,MAAM,CAACC,YAAY,GAAGD,MAAM,CAACE,YAAY;AACtE;MACA,IAAMnB,sBAAsB,GAAGiB,MAAM,CAACG,WAAW,GAAGH,MAAM,CAACI,WAAW;;AAEtE;AACA;MACA,IAAMlB,sBAAsB,GAAGc,MAAM,CAACK,WAAW,GAAGL,MAAM,CAACI,WAAW;AACtE;MACA,IAAMnB,yBAAyB,GAAGe,MAAM,CAACM,YAAY,GAAGN,MAAM,CAACE,YAAY;AAE3EZ,MAAAA,gBAAgB,CAAC;QAChBP,sBAAsB;QACtBC,oBAAoB;QACpBC,yBAAyB;AACzBC,QAAAA;AACD,OAAC,CAAC;AACH,IAAA,CAAC,CAAC;AAEFS,IAAAA,QAAQ,CAACY,OAAO,CAAChB,sBAAsB,CAACG,OAAO,CAAC;AAEhD,IAAA,OAAO,MAAM;MACZC,QAAQ,CAACa,UAAU,EAAE;IACtB,CAAC;EACF,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,OAAAC,cAAA,CAAAA,cAAA,CAAA,EAAA,EACIpB,aAAa,CAAA,EAAA,EAAA,EAAA;AAChBE,IAAAA;AAAsB,GAAA,CAAA;AAExB;;;;"}
|
|
@@ -35,21 +35,19 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
35
35
|
setMenuPosition = _useState2[1];
|
|
36
36
|
|
|
37
37
|
// Memoize alignment so it only recalculates when specific props change
|
|
38
|
-
var alignment = useMemo(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
}, [menuAlign.align, menuAlign.position, menuAlign.customPosition]);
|
|
38
|
+
var alignment = useMemo(() => ({
|
|
39
|
+
align: menuAlign.align,
|
|
40
|
+
customPosition: menuAlign.customPosition,
|
|
41
|
+
position: menuAlign.position
|
|
42
|
+
}), [menuAlign.align, menuAlign.position, menuAlign.customPosition]);
|
|
45
43
|
|
|
46
44
|
/**
|
|
47
45
|
* Calculates and updates the menu position relative to the trigger.
|
|
48
46
|
* Uses requestAnimationFrame to ensure layout is stable before measuring.
|
|
49
47
|
*/
|
|
50
|
-
var updatePosition = useCallback(
|
|
48
|
+
var updatePosition = useCallback(() => {
|
|
51
49
|
if (!elementRef.current || !isElementVisible) return;
|
|
52
|
-
requestAnimationFrame(
|
|
50
|
+
requestAnimationFrame(() => {
|
|
53
51
|
var _triggerRef$current, _elementRef$current;
|
|
54
52
|
var triggerRect = triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getBoundingClientRect();
|
|
55
53
|
var elementRect = (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.getBoundingClientRect();
|
|
@@ -59,7 +57,7 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
59
57
|
var newPosition = getPosition(alignment, offset, elementRect, triggerRect, disableFlipping);
|
|
60
58
|
|
|
61
59
|
// Only update state if the position has changed
|
|
62
|
-
setMenuPosition(
|
|
60
|
+
setMenuPosition(prevPosition => {
|
|
63
61
|
if (prevPosition.left !== newPosition.left || prevPosition.top !== newPosition.top) {
|
|
64
62
|
return newPosition;
|
|
65
63
|
}
|
|
@@ -72,10 +70,8 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
72
70
|
* Debounced version of the updatePosition function used for scroll and resize events.
|
|
73
71
|
* 5ms debounce gives a balance between performance and responsiveness.
|
|
74
72
|
*/
|
|
75
|
-
var debouncedUpdatePosition = useMemo(
|
|
76
|
-
|
|
77
|
-
}, [updatePosition]);
|
|
78
|
-
useEffect(function () {
|
|
73
|
+
var debouncedUpdatePosition = useMemo(() => debounce(updatePosition, 5), [updatePosition]);
|
|
74
|
+
useEffect(() => {
|
|
79
75
|
if (disable) return;
|
|
80
76
|
var currentElement = elementRef.current;
|
|
81
77
|
|
|
@@ -109,7 +105,7 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
109
105
|
}
|
|
110
106
|
|
|
111
107
|
// Cleanup observers and listeners on unmount or re-render
|
|
112
|
-
return
|
|
108
|
+
return () => {
|
|
113
109
|
if (currentElement) {
|
|
114
110
|
resizeObserver.unobserve(currentElement);
|
|
115
111
|
mutationObserver.disconnect();
|
|
@@ -124,12 +120,10 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
124
120
|
* but its size is not immediately available in the first frame.
|
|
125
121
|
* A short timeout ensures we recalculate the position once layout stabilizes.
|
|
126
122
|
*/
|
|
127
|
-
useEffect(
|
|
123
|
+
useEffect(() => {
|
|
128
124
|
if (!disable && isElementVisible) {
|
|
129
125
|
var timeoutId = setTimeout(updatePosition, 10);
|
|
130
|
-
return
|
|
131
|
-
return clearTimeout(timeoutId);
|
|
132
|
-
};
|
|
126
|
+
return () => clearTimeout(timeoutId);
|
|
133
127
|
}
|
|
134
128
|
}, [isElementVisible, disable, updatePosition]);
|
|
135
129
|
|
|
@@ -137,7 +131,7 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
137
131
|
* useLayoutEffect ensures the position is recalculated during the layout phase,
|
|
138
132
|
* just after DOM mutations but before the browser paints.
|
|
139
133
|
*/
|
|
140
|
-
useLayoutEffect(
|
|
134
|
+
useLayoutEffect(() => {
|
|
141
135
|
if (!disable && isElementVisible && elementRef.current && triggerRef !== null && triggerRef !== void 0 && triggerRef.current) {
|
|
142
136
|
updatePosition();
|
|
143
137
|
requestAnimationFrame(updatePosition);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useTriggerPosition/index.tsx"],"sourcesContent":["import { useMemo, useState, RefObject, useEffect, useCallback, useLayoutEffect } from 'react';\nimport { Alignment, Position } from './constants';\nimport { getPosition } from './utilities';\nimport debounce from 'lodash.debounce';\n\n/**\n * useTriggerPosition hook.\n *\n * Calculates the position of a menu element based on the alignment settings relative to a trigger element.\n *\n * @param triggerRef - Reference to the DOM element that triggers the menu.\n * @param elementRef - Reference to the DOM element that is the menu.\n * @param menuAlign - The alignment configuration of the menu.\n * @param isElementVisible - Tells the hook if the element is visible. If false, the hook will not calculate the position.\n * @param menuOffset - The offset of the menu from the trigger element.\n * @param disable - Whether to disable the hook.\n * @param disableFlipping - Whether to disable flipping logic when the menu overflows the screen.\n * @returns {Position} The calculated position of the menu element.\n */\nexport const useTriggerPosition = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\telementRef: RefObject<HTMLElement>,\n\tmenuAlign: Alignment,\n\tisElementVisible: boolean = true,\n\tmenuOffset: number = 10,\n\tdisable = false,\n\tdisableFlipping = false\n): Position => {\n\tconst offset = menuOffset;\n\n\t// Holds the current calculated position of the menu\n\tconst [menuPosition, setMenuPosition] = useState<Position>({ flipped: false, left: 0, top: 0 });\n\n\t// Memoize alignment so it only recalculates when specific props change\n\tconst alignment = useMemo(\n\t\t() => ({\n\t\t\talign: menuAlign.align,\n\t\t\tcustomPosition: menuAlign.customPosition,\n\t\t\tposition: menuAlign.position\n\t\t}),\n\t\t[menuAlign.align, menuAlign.position, menuAlign.customPosition]\n\t);\n\n\t/**\n\t * Calculates and updates the menu position relative to the trigger.\n\t * Uses requestAnimationFrame to ensure layout is stable before measuring.\n\t */\n\tconst updatePosition = useCallback(() => {\n\t\tif (!elementRef.current || !isElementVisible) return;\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst triggerRect = triggerRef?.current?.getBoundingClientRect();\n\t\t\tconst elementRect = elementRef.current?.getBoundingClientRect();\n\n\t\t\t// Don't update if the element is not visible/rendered\n\t\t\tif (!elementRect || elementRect.height === 0 || elementRect.width === 0) return;\n\n\t\t\tconst newPosition = getPosition(alignment, offset, elementRect, triggerRect, disableFlipping);\n\n\t\t\t// Only update state if the position has changed\n\t\t\tsetMenuPosition((prevPosition) => {\n\t\t\t\tif (prevPosition.left !== newPosition.left || prevPosition.top !== newPosition.top) {\n\t\t\t\t\treturn newPosition;\n\t\t\t\t}\n\t\t\t\treturn prevPosition;\n\t\t\t});\n\t\t});\n\t}, [alignment, elementRef, isElementVisible, offset, triggerRef, disableFlipping]);\n\n\t/**\n\t * Debounced version of the updatePosition function used for scroll and resize events.\n\t * 5ms debounce gives a balance between performance and responsiveness.\n\t */\n\tconst debouncedUpdatePosition = useMemo(() => debounce(updatePosition, 5), [updatePosition]);\n\n\tuseEffect(() => {\n\t\tif (disable) return;\n\n\t\tconst currentElement = elementRef.current;\n\n\t\t/**\n\t\t * We need to debounce the resize observer to prevent \"resize loops\"\n\t\t * There are instances where the ResizeObserver will trigger a resize event\n\t\t * before the browser has painted, which causes a loop of resize events\n\t\t * and can throw errors or performance issues.\n\t\t *\n\t\t * The observers are purposefully using a different debounce than the event listeners.\n\t\t * Observers need to be more aggressively debounced to prevent loops,\n\t\t * while event listeners (resize/scroll) should update positioning more responsively.\n\t\t */\n\t\tconst resizeObserver = new ResizeObserver(debounce(updatePosition));\n\t\tconst mutationObserver = new MutationObserver(debounce(updatePosition));\n\n\t\t// Observe changes in size and style/className\n\t\tif (currentElement) {\n\t\t\tresizeObserver.observe(currentElement);\n\t\t\tmutationObserver.observe(currentElement, {\n\t\t\t\tattributeFilter: ['style', 'class'],\n\t\t\t\tattributes: true\n\t\t\t});\n\t\t}\n\n\t\t// Add listeners on open to respond to browser resizing and scrolling\n\t\tif (isElementVisible) {\n\t\t\tupdatePosition();\n\t\t\twindow.addEventListener('resize', debouncedUpdatePosition);\n\t\t\twindow.addEventListener('scroll', debouncedUpdatePosition);\n\t\t}\n\n\t\t// Cleanup observers and listeners on unmount or re-render\n\t\treturn () => {\n\t\t\tif (currentElement) {\n\t\t\t\tresizeObserver.unobserve(currentElement);\n\t\t\t\tmutationObserver.disconnect();\n\t\t\t}\n\t\t\twindow.removeEventListener('resize', debouncedUpdatePosition);\n\t\t\twindow.removeEventListener('scroll', debouncedUpdatePosition);\n\t\t};\n\t}, [\n\t\tdisable,\n\t\ttriggerRef,\n\t\telementRef,\n\t\talignment,\n\t\toffset,\n\t\tisElementVisible,\n\t\tupdatePosition,\n\t\tdebouncedUpdatePosition\n\t]);\n\n\t/**\n\t * This effect handles an edge case where the menu is rendered,\n\t * but its size is not immediately available in the first frame.\n\t * A short timeout ensures we recalculate the position once layout stabilizes.\n\t */\n\tuseEffect(() => {\n\t\tif (!disable && isElementVisible) {\n\t\t\tconst timeoutId = setTimeout(updatePosition, 10);\n\n\t\t\treturn () => clearTimeout(timeoutId);\n\t\t}\n\t}, [isElementVisible, disable, updatePosition]);\n\n\t/**\n\t * useLayoutEffect ensures the position is recalculated during the layout phase,\n\t * just after DOM mutations but before the browser paints.\n\t */\n\tuseLayoutEffect(() => {\n\t\tif (!disable && isElementVisible && elementRef.current && triggerRef?.current) {\n\t\t\tupdatePosition();\n\t\t\trequestAnimationFrame(updatePosition);\n\t\t}\n\t}, [isElementVisible, updatePosition, disable, elementRef, triggerRef]);\n\n\treturn menuPosition;\n};\n"],"names":["useTriggerPosition","triggerRef","elementRef","menuAlign","isElementVisible","arguments","length","undefined","menuOffset","disable","disableFlipping","offset","_useState","useState","flipped","left","top","_useState2","_slicedToArray","menuPosition","setMenuPosition","alignment","useMemo","align","customPosition","position","updatePosition","useCallback","current","requestAnimationFrame","_triggerRef$current","_elementRef$current","triggerRect","getBoundingClientRect","elementRect","height","width","newPosition","getPosition","prevPosition","debouncedUpdatePosition","debounce","useEffect","currentElement","resizeObserver","ResizeObserver","mutationObserver","MutationObserver","observe","attributeFilter","attributes","window","addEventListener","unobserve","disconnect","removeEventListener","timeoutId","setTimeout","clearTimeout","useLayoutEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useTriggerPosition/index.tsx"],"sourcesContent":["import { useMemo, useState, RefObject, useEffect, useCallback, useLayoutEffect } from 'react';\nimport { Alignment, Position } from './constants';\nimport { getPosition } from './utilities';\nimport debounce from 'lodash.debounce';\n\n/**\n * useTriggerPosition hook.\n *\n * Calculates the position of a menu element based on the alignment settings relative to a trigger element.\n *\n * @param triggerRef - Reference to the DOM element that triggers the menu.\n * @param elementRef - Reference to the DOM element that is the menu.\n * @param menuAlign - The alignment configuration of the menu.\n * @param isElementVisible - Tells the hook if the element is visible. If false, the hook will not calculate the position.\n * @param menuOffset - The offset of the menu from the trigger element.\n * @param disable - Whether to disable the hook.\n * @param disableFlipping - Whether to disable flipping logic when the menu overflows the screen.\n * @returns {Position} The calculated position of the menu element.\n */\nexport const useTriggerPosition = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\telementRef: RefObject<HTMLElement>,\n\tmenuAlign: Alignment,\n\tisElementVisible: boolean = true,\n\tmenuOffset: number = 10,\n\tdisable = false,\n\tdisableFlipping = false\n): Position => {\n\tconst offset = menuOffset;\n\n\t// Holds the current calculated position of the menu\n\tconst [menuPosition, setMenuPosition] = useState<Position>({ flipped: false, left: 0, top: 0 });\n\n\t// Memoize alignment so it only recalculates when specific props change\n\tconst alignment = useMemo(\n\t\t() => ({\n\t\t\talign: menuAlign.align,\n\t\t\tcustomPosition: menuAlign.customPosition,\n\t\t\tposition: menuAlign.position\n\t\t}),\n\t\t[menuAlign.align, menuAlign.position, menuAlign.customPosition]\n\t);\n\n\t/**\n\t * Calculates and updates the menu position relative to the trigger.\n\t * Uses requestAnimationFrame to ensure layout is stable before measuring.\n\t */\n\tconst updatePosition = useCallback(() => {\n\t\tif (!elementRef.current || !isElementVisible) return;\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst triggerRect = triggerRef?.current?.getBoundingClientRect();\n\t\t\tconst elementRect = elementRef.current?.getBoundingClientRect();\n\n\t\t\t// Don't update if the element is not visible/rendered\n\t\t\tif (!elementRect || elementRect.height === 0 || elementRect.width === 0) return;\n\n\t\t\tconst newPosition = getPosition(alignment, offset, elementRect, triggerRect, disableFlipping);\n\n\t\t\t// Only update state if the position has changed\n\t\t\tsetMenuPosition((prevPosition) => {\n\t\t\t\tif (prevPosition.left !== newPosition.left || prevPosition.top !== newPosition.top) {\n\t\t\t\t\treturn newPosition;\n\t\t\t\t}\n\t\t\t\treturn prevPosition;\n\t\t\t});\n\t\t});\n\t}, [alignment, elementRef, isElementVisible, offset, triggerRef, disableFlipping]);\n\n\t/**\n\t * Debounced version of the updatePosition function used for scroll and resize events.\n\t * 5ms debounce gives a balance between performance and responsiveness.\n\t */\n\tconst debouncedUpdatePosition = useMemo(() => debounce(updatePosition, 5), [updatePosition]);\n\n\tuseEffect(() => {\n\t\tif (disable) return;\n\n\t\tconst currentElement = elementRef.current;\n\n\t\t/**\n\t\t * We need to debounce the resize observer to prevent \"resize loops\"\n\t\t * There are instances where the ResizeObserver will trigger a resize event\n\t\t * before the browser has painted, which causes a loop of resize events\n\t\t * and can throw errors or performance issues.\n\t\t *\n\t\t * The observers are purposefully using a different debounce than the event listeners.\n\t\t * Observers need to be more aggressively debounced to prevent loops,\n\t\t * while event listeners (resize/scroll) should update positioning more responsively.\n\t\t */\n\t\tconst resizeObserver = new ResizeObserver(debounce(updatePosition));\n\t\tconst mutationObserver = new MutationObserver(debounce(updatePosition));\n\n\t\t// Observe changes in size and style/className\n\t\tif (currentElement) {\n\t\t\tresizeObserver.observe(currentElement);\n\t\t\tmutationObserver.observe(currentElement, {\n\t\t\t\tattributeFilter: ['style', 'class'],\n\t\t\t\tattributes: true\n\t\t\t});\n\t\t}\n\n\t\t// Add listeners on open to respond to browser resizing and scrolling\n\t\tif (isElementVisible) {\n\t\t\tupdatePosition();\n\t\t\twindow.addEventListener('resize', debouncedUpdatePosition);\n\t\t\twindow.addEventListener('scroll', debouncedUpdatePosition);\n\t\t}\n\n\t\t// Cleanup observers and listeners on unmount or re-render\n\t\treturn () => {\n\t\t\tif (currentElement) {\n\t\t\t\tresizeObserver.unobserve(currentElement);\n\t\t\t\tmutationObserver.disconnect();\n\t\t\t}\n\t\t\twindow.removeEventListener('resize', debouncedUpdatePosition);\n\t\t\twindow.removeEventListener('scroll', debouncedUpdatePosition);\n\t\t};\n\t}, [\n\t\tdisable,\n\t\ttriggerRef,\n\t\telementRef,\n\t\talignment,\n\t\toffset,\n\t\tisElementVisible,\n\t\tupdatePosition,\n\t\tdebouncedUpdatePosition\n\t]);\n\n\t/**\n\t * This effect handles an edge case where the menu is rendered,\n\t * but its size is not immediately available in the first frame.\n\t * A short timeout ensures we recalculate the position once layout stabilizes.\n\t */\n\tuseEffect(() => {\n\t\tif (!disable && isElementVisible) {\n\t\t\tconst timeoutId = setTimeout(updatePosition, 10);\n\n\t\t\treturn () => clearTimeout(timeoutId);\n\t\t}\n\t}, [isElementVisible, disable, updatePosition]);\n\n\t/**\n\t * useLayoutEffect ensures the position is recalculated during the layout phase,\n\t * just after DOM mutations but before the browser paints.\n\t */\n\tuseLayoutEffect(() => {\n\t\tif (!disable && isElementVisible && elementRef.current && triggerRef?.current) {\n\t\t\tupdatePosition();\n\t\t\trequestAnimationFrame(updatePosition);\n\t\t}\n\t}, [isElementVisible, updatePosition, disable, elementRef, triggerRef]);\n\n\treturn menuPosition;\n};\n"],"names":["useTriggerPosition","triggerRef","elementRef","menuAlign","isElementVisible","arguments","length","undefined","menuOffset","disable","disableFlipping","offset","_useState","useState","flipped","left","top","_useState2","_slicedToArray","menuPosition","setMenuPosition","alignment","useMemo","align","customPosition","position","updatePosition","useCallback","current","requestAnimationFrame","_triggerRef$current","_elementRef$current","triggerRect","getBoundingClientRect","elementRect","height","width","newPosition","getPosition","prevPosition","debouncedUpdatePosition","debounce","useEffect","currentElement","resizeObserver","ResizeObserver","mutationObserver","MutationObserver","observe","attributeFilter","attributes","window","addEventListener","unobserve","disconnect","removeEventListener","timeoutId","setTimeout","clearTimeout","useLayoutEffect"],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ var getPosition = function getPosition(menuAlign, offset, elementRect, triggerRe
|
|
|
48
48
|
* @param {boolean} disableFlipping - Whether to disable flipping logic.
|
|
49
49
|
* @returns {Position} The calculated position of the menu.
|
|
50
50
|
*/
|
|
51
|
-
var positionHorizontal =
|
|
51
|
+
var positionHorizontal = (position, align, offset, elementRect, triggerRect, screenWidth, screenHeight, disableFlipping) => {
|
|
52
52
|
var isLeft = position === 'left';
|
|
53
53
|
var flipped = false;
|
|
54
54
|
var containerSide = isLeft ? triggerRect.left - elementRect.width - offset : triggerRect.right + offset;
|
|
@@ -74,9 +74,9 @@ var positionHorizontal = function positionHorizontal(position, align, offset, el
|
|
|
74
74
|
var top = calculateVerticalPosition(triggerRect, elementRect, align);
|
|
75
75
|
top = adjustForVerticalBounds(top, elementRect, screenHeight);
|
|
76
76
|
return {
|
|
77
|
-
flipped
|
|
77
|
+
flipped,
|
|
78
78
|
left: containerSide,
|
|
79
|
-
top
|
|
79
|
+
top
|
|
80
80
|
};
|
|
81
81
|
};
|
|
82
82
|
|
|
@@ -94,7 +94,7 @@ var positionHorizontal = function positionHorizontal(position, align, offset, el
|
|
|
94
94
|
* @param {boolean} disableFlipping - Whether to disable flipping logic.
|
|
95
95
|
* @returns {Position} The calculated position of the menu.
|
|
96
96
|
*/
|
|
97
|
-
var positionVertical =
|
|
97
|
+
var positionVertical = (position, align, offset, elementRect, triggerRect, screenWidth, screenHeight, disableFlipping) => {
|
|
98
98
|
var isTop = position === 'top';
|
|
99
99
|
var flipped = false;
|
|
100
100
|
var containerSide = isTop ? triggerRect.top - elementRect.height - offset : triggerRect.bottom + offset;
|
|
@@ -119,8 +119,8 @@ var positionVertical = function positionVertical(position, align, offset, elemen
|
|
|
119
119
|
}
|
|
120
120
|
var left = calculateHorizontalPosition(triggerRect, elementRect, align, screenWidth);
|
|
121
121
|
return {
|
|
122
|
-
flipped
|
|
123
|
-
left
|
|
122
|
+
flipped,
|
|
123
|
+
left,
|
|
124
124
|
top: containerSide
|
|
125
125
|
};
|
|
126
126
|
};
|
|
@@ -134,7 +134,7 @@ var positionVertical = function positionVertical(position, align, offset, elemen
|
|
|
134
134
|
* @param {number} screenWidth - The width of the viewport.
|
|
135
135
|
* @returns {number} The calculated horizontal position.
|
|
136
136
|
*/
|
|
137
|
-
var calculateHorizontalPosition =
|
|
137
|
+
var calculateHorizontalPosition = (triggerRect, elementRect, align, screenWidth) => {
|
|
138
138
|
var position;
|
|
139
139
|
switch (align) {
|
|
140
140
|
case 'start':
|
|
@@ -164,7 +164,7 @@ var calculateHorizontalPosition = function calculateHorizontalPosition(triggerRe
|
|
|
164
164
|
* @param {'start' | 'end' | 'center'} align - The vertical alignment.
|
|
165
165
|
* @returns {number} The calculated vertical position.
|
|
166
166
|
*/
|
|
167
|
-
var calculateVerticalPosition =
|
|
167
|
+
var calculateVerticalPosition = (triggerRect, elementRect, align) => {
|
|
168
168
|
switch (align) {
|
|
169
169
|
case 'start':
|
|
170
170
|
return triggerRect.top;
|
|
@@ -182,7 +182,7 @@ var calculateVerticalPosition = function calculateVerticalPosition(triggerRect,
|
|
|
182
182
|
* @param {Alignment} menuAlign - The alignment configuration for the menu.
|
|
183
183
|
* @returns {Position} The calculated custom position of the menu.
|
|
184
184
|
*/
|
|
185
|
-
var calculateCustomPosition =
|
|
185
|
+
var calculateCustomPosition = (elementRect, menuAlign) => {
|
|
186
186
|
var _menuAlign$customPosi, _menuAlign$customPosi2, _menuAlign$customPosi3, _menuAlign$customPosi4;
|
|
187
187
|
var screenHeight = window.innerHeight;
|
|
188
188
|
var screenWidth = window.innerWidth;
|
|
@@ -202,7 +202,7 @@ var calculateCustomPosition = function calculateCustomPosition(elementRect, menu
|
|
|
202
202
|
* @param {number} screenHeight - The height of the viewport.
|
|
203
203
|
* @returns {number} The adjusted vertical position.
|
|
204
204
|
*/
|
|
205
|
-
var adjustForVerticalBounds =
|
|
205
|
+
var adjustForVerticalBounds = (top, elementRect, screenHeight) => {
|
|
206
206
|
var adjustedTop = top;
|
|
207
207
|
if (isOverflowingTop(adjustedTop)) {
|
|
208
208
|
adjustedTop = screenOffset;
|
|
@@ -228,7 +228,7 @@ var adjustForVerticalBounds = function adjustForVerticalBounds(top, elementRect,
|
|
|
228
228
|
* @param {number} screenHeight - The height of the viewport.
|
|
229
229
|
* @returns {Position} The adjusted position of the menu.
|
|
230
230
|
*/
|
|
231
|
-
var adjustCustomScreenBounds =
|
|
231
|
+
var adjustCustomScreenBounds = (left, top, elementRect, screenWidth, screenHeight) => {
|
|
232
232
|
var adjustedLeft = Math.min(Math.max(left, screenOffset), screenWidth - elementRect.width - screenOffset);
|
|
233
233
|
var adjustedTop = Math.max(top, screenOffset);
|
|
234
234
|
if (adjustedTop + elementRect.height > screenHeight - screenOffset) {
|
|
@@ -247,9 +247,7 @@ var adjustCustomScreenBounds = function adjustCustomScreenBounds(left, top, elem
|
|
|
247
247
|
* @param {number} left - The left position of the menu.
|
|
248
248
|
* @returns {boolean} True if the menu overflows the left side, false otherwise.
|
|
249
249
|
*/
|
|
250
|
-
var isOverflowingLeft =
|
|
251
|
-
return left < screenOffset;
|
|
252
|
-
};
|
|
250
|
+
var isOverflowingLeft = left => left < screenOffset;
|
|
253
251
|
|
|
254
252
|
/**
|
|
255
253
|
* Checks if the menu overflows the right side of the screen.
|
|
@@ -259,9 +257,7 @@ var isOverflowingLeft = function isOverflowingLeft(left) {
|
|
|
259
257
|
* @param {number} screenWidth - The width of the viewport.
|
|
260
258
|
* @returns {boolean} True if the menu overflows the right side, false otherwise.
|
|
261
259
|
*/
|
|
262
|
-
var isOverflowingRight =
|
|
263
|
-
return left + width > screenWidth - screenOffset;
|
|
264
|
-
};
|
|
260
|
+
var isOverflowingRight = (left, width, screenWidth) => left + width > screenWidth - screenOffset;
|
|
265
261
|
|
|
266
262
|
/**
|
|
267
263
|
* Checks if the menu overflows the top side of the screen.
|
|
@@ -269,9 +265,7 @@ var isOverflowingRight = function isOverflowingRight(left, width, screenWidth) {
|
|
|
269
265
|
* @param {number} top - The top position of the menu.
|
|
270
266
|
* @returns {boolean} True if the menu overflows the top side, false otherwise.
|
|
271
267
|
*/
|
|
272
|
-
var isOverflowingTop =
|
|
273
|
-
return top < screenOffset;
|
|
274
|
-
};
|
|
268
|
+
var isOverflowingTop = top => top < screenOffset;
|
|
275
269
|
|
|
276
270
|
/**
|
|
277
271
|
* Checks if the menu overflows the bottom side of the screen.
|
|
@@ -281,9 +275,7 @@ var isOverflowingTop = function isOverflowingTop(top) {
|
|
|
281
275
|
* @param {number} screenHeight - The height of the viewport.
|
|
282
276
|
* @returns {boolean} True if the menu overflows the bottom side, false otherwise.
|
|
283
277
|
*/
|
|
284
|
-
var isOverflowingBottom =
|
|
285
|
-
return top + height > screenHeight - screenOffset;
|
|
286
|
-
};
|
|
278
|
+
var isOverflowingBottom = (top, height, screenHeight) => top + height > screenHeight - screenOffset;
|
|
287
279
|
|
|
288
280
|
export { getPosition };
|
|
289
281
|
//# sourceMappingURL=utilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sources":["../../../../src/hooks/useTriggerPosition/utilities.ts"],"sourcesContent":["import { Alignment, Position } from './constants';\n\nconst screenOffset = 16;\n\n/**\n * Calculates the position of the menu based on alignment and viewport constraints.\n *\n * @param {Alignment} menuAlign - The alignment configuration for the menu.\n * @param {number} offset - The offset distance between the menu and the trigger.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {DOMRect} [triggerRect] - The bounding rectangle of the trigger element.\n * @param {boolean} [disableFlipping] - If true, prevents flipping to the opposite side when overflowing.\n * @returns {Position} The calculated position of the menu.\n */\nexport const getPosition = (\n\tmenuAlign: Alignment,\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect?: DOMRect,\n\tdisableFlipping = false\n): Position => {\n\tconst screenWidth = window.innerWidth;\n\tconst screenHeight = window.innerHeight;\n\n\tif (!triggerRect) {\n\t\treturn calculateCustomPosition(elementRect, menuAlign);\n\t}\n\n\tconst position = menuAlign.position;\n\tconst align = menuAlign.align ?? 'center';\n\n\tswitch (position) {\n\t\tcase 'left':\n\t\tcase 'right':\n\t\t\treturn positionHorizontal(\n\t\t\t\tposition,\n\t\t\t\talign,\n\t\t\t\toffset,\n\t\t\t\telementRect,\n\t\t\t\ttriggerRect,\n\t\t\t\tscreenWidth,\n\t\t\t\tscreenHeight,\n\t\t\t\tdisableFlipping\n\t\t\t);\n\t\tcase 'top':\n\t\tcase 'bottom':\n\t\t\treturn positionVertical(\n\t\t\t\tposition,\n\t\t\t\talign,\n\t\t\t\toffset,\n\t\t\t\telementRect,\n\t\t\t\ttriggerRect,\n\t\t\t\tscreenWidth,\n\t\t\t\tscreenHeight,\n\t\t\t\tdisableFlipping\n\t\t\t);\n\t\tdefault:\n\t\t\treturn calculateCustomPosition(elementRect, menuAlign);\n\t}\n};\n\n/**\n * Calculates left/right placement with vertical alignment and screen overflow checks.\n * Flips the menu to the opposite side if it overflows the screen, unless flipping is disabled.\n *\n * @param {'left' | 'right'} position - The horizontal position ('left' or 'right').\n * @param {Alignment['align']} align - The vertical alignment ('start', 'end', or 'center').\n * @param {number} offset - The offset distance between the menu and the trigger.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {number} screenWidth - The width of the viewport.\n * @param {number} screenHeight - The height of the viewport.\n * @param {boolean} disableFlipping - Whether to disable flipping logic.\n * @returns {Position} The calculated position of the menu.\n */\nconst positionHorizontal = (\n\tposition: 'left' | 'right',\n\talign: Alignment['align'],\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect: DOMRect,\n\tscreenWidth: number,\n\tscreenHeight: number,\n\tdisableFlipping: boolean\n): Position => {\n\tconst isLeft = position === 'left';\n\tlet flipped = false;\n\n\tlet containerSide = isLeft\n\t\t? triggerRect.left - elementRect.width - offset\n\t\t: triggerRect.right + offset;\n\n\tconst overflowsLeft = isOverflowingLeft(containerSide);\n\tconst overflowsRight = isOverflowingRight(containerSide, elementRect.width, screenWidth);\n\n\t// Flip to opposite side if menu overflows but fits on the other side\n\tif (!disableFlipping) {\n\t\tif (isLeft && overflowsLeft) {\n\t\t\tconst rightSide = triggerRect.right + offset;\n\t\t\tif (!isOverflowingRight(rightSide, elementRect.width, screenWidth)) {\n\t\t\t\tcontainerSide = rightSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t} else if (!isLeft && overflowsRight) {\n\t\t\tconst leftSide = triggerRect.left - elementRect.width - offset;\n\t\t\tif (!isOverflowingLeft(leftSide)) {\n\t\t\t\tcontainerSide = leftSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tlet top = calculateVerticalPosition(triggerRect, elementRect, align);\n\ttop = adjustForVerticalBounds(top, elementRect, screenHeight);\n\n\treturn { flipped, left: containerSide, top };\n};\n\n/**\n * Calculates top/bottom placement with horizontal alignment and screen overflow checks.\n * Flips the menu to the opposite side if it overflows the screen, unless flipping is disabled.\n *\n * @param {'top' | 'bottom'} position - The vertical position ('top' or 'bottom').\n * @param {Alignment['align']} align - The horizontal alignment ('start', 'end', or 'center').\n * @param {number} offset - The offset distance between the menu and the trigger.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {number} screenWidth - The width of the viewport.\n * @param {number} screenHeight - The height of the viewport.\n * @param {boolean} disableFlipping - Whether to disable flipping logic.\n * @returns {Position} The calculated position of the menu.\n */\nconst positionVertical = (\n\tposition: 'top' | 'bottom',\n\talign: Alignment['align'],\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect: DOMRect,\n\tscreenWidth: number,\n\tscreenHeight: number,\n\tdisableFlipping: boolean\n): Position => {\n\tconst isTop = position === 'top';\n\tlet flipped = false;\n\n\tlet containerSide = isTop\n\t\t? triggerRect.top - elementRect.height - offset\n\t\t: triggerRect.bottom + offset;\n\n\tconst overflowsTop = isOverflowingTop(containerSide);\n\tconst overflowsBottom = isOverflowingBottom(containerSide, elementRect.height, screenHeight);\n\n\t// Flip to opposite side if menu overflows but fits on the other side\n\tif (!disableFlipping) {\n\t\tif (isTop && overflowsTop) {\n\t\t\tconst bottomSide = triggerRect.bottom + offset;\n\t\t\tif (!isOverflowingBottom(bottomSide, elementRect.height, screenHeight)) {\n\t\t\t\tcontainerSide = bottomSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t} else if (!isTop && overflowsBottom) {\n\t\t\tconst topSide = triggerRect.top - elementRect.height - offset;\n\t\t\tif (!isOverflowingTop(topSide)) {\n\t\t\t\tcontainerSide = topSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst left = calculateHorizontalPosition(triggerRect, elementRect, align, screenWidth);\n\n\treturn { flipped, left, top: containerSide };\n};\n\n/**\n * Aligns menu horizontally (used when menu is vertically positioned).\n *\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {'start' | 'end' | 'center'} align - The horizontal alignment.\n * @param {number} screenWidth - The width of the viewport.\n * @returns {number} The calculated horizontal position.\n */\nconst calculateHorizontalPosition = (\n\ttriggerRect: DOMRect,\n\telementRect: DOMRect,\n\talign: 'start' | 'end' | 'center',\n\tscreenWidth: number\n): number => {\n\tlet position: number;\n\n\tswitch (align) {\n\t\tcase 'start':\n\t\t\tposition = triggerRect.left;\n\t\t\tbreak;\n\t\tcase 'end':\n\t\t\tposition = triggerRect.right - elementRect.width;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tposition = triggerRect.left + (triggerRect.width - elementRect.width) / 2;\n\t\t\tbreak;\n\t}\n\n\t// Clamp within screen\n\tif (position < screenOffset) return screenOffset;\n\tif (position + elementRect.width > screenWidth - screenOffset) {\n\t\treturn screenWidth - elementRect.width - screenOffset;\n\t}\n\treturn position;\n};\n\n/**\n * Aligns menu vertically (used when menu is horizontally positioned).\n *\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {'start' | 'end' | 'center'} align - The vertical alignment.\n * @returns {number} The calculated vertical position.\n */\nconst calculateVerticalPosition = (\n\ttriggerRect: DOMRect,\n\telementRect: DOMRect,\n\talign: 'start' | 'end' | 'center'\n): number => {\n\tswitch (align) {\n\t\tcase 'start':\n\t\t\treturn triggerRect.top;\n\t\tcase 'end':\n\t\t\treturn triggerRect.bottom - elementRect.height;\n\t\tdefault:\n\t\t\treturn triggerRect.top + (triggerRect.height - elementRect.height) / 2;\n\t}\n};\n\n/**\n * Calculates position for a menu that uses an explicit custom position.\n *\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {Alignment} menuAlign - The alignment configuration for the menu.\n * @returns {Position} The calculated custom position of the menu.\n */\nconst calculateCustomPosition = (elementRect: DOMRect, menuAlign: Alignment): Position => {\n\tconst screenHeight = window.innerHeight;\n\tconst screenWidth = window.innerWidth;\n\n\tconst left = menuAlign.customPosition?.left ?? 0;\n\tconst top = menuAlign.customPosition?.top ?? 0;\n\n\tconst adjusted = adjustCustomScreenBounds(left, top, elementRect, screenWidth, screenHeight);\n\treturn { ...adjusted, flipped: false };\n};\n\n/**\n * Adjusts vertical position to stay within screen height.\n *\n * @param {number} top - The initial vertical position.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {number} screenHeight - The height of the viewport.\n * @returns {number} The adjusted vertical position.\n */\nconst adjustForVerticalBounds = (\n\ttop: number,\n\telementRect: DOMRect,\n\tscreenHeight: number\n): number => {\n\tlet adjustedTop = top;\n\n\tif (isOverflowingTop(adjustedTop)) {\n\t\tadjustedTop = screenOffset;\n\t}\n\n\tif (isOverflowingBottom(adjustedTop, elementRect.height, screenHeight)) {\n\t\tadjustedTop = screenHeight - elementRect.height - screenOffset;\n\t}\n\n\t// If the menu is taller than the screen height minus offset, pin it to the top offset\n\tif (elementRect.height + 2 * screenOffset > screenHeight) {\n\t\tadjustedTop = screenOffset;\n\t}\n\n\treturn adjustedTop;\n};\n\n/**\n * Ensures menu position stays within screen bounds.\n *\n * @param {number} left - The initial horizontal position.\n * @param {number} top - The initial vertical position.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {number} screenWidth - The width of the viewport.\n * @param {number} screenHeight - The height of the viewport.\n * @returns {Position} The adjusted position of the menu.\n */\nconst adjustCustomScreenBounds = (\n\tleft: number,\n\ttop: number,\n\telementRect: DOMRect,\n\tscreenWidth: number,\n\tscreenHeight: number\n): { left: number; top: number } => {\n\tconst adjustedLeft = Math.min(\n\t\tMath.max(left, screenOffset),\n\t\tscreenWidth - elementRect.width - screenOffset\n\t);\n\n\tlet adjustedTop = Math.max(top, screenOffset);\n\tif (adjustedTop + elementRect.height > screenHeight - screenOffset) {\n\t\tadjustedTop = screenHeight - elementRect.height - screenOffset;\n\t}\n\n\tif (elementRect.height + 2 * screenOffset > screenHeight) adjustedTop = screenOffset;\n\n\treturn { left: adjustedLeft, top: adjustedTop };\n};\n\n/**\n * Checks if the menu overflows the left side of the screen.\n *\n * @param {number} left - The left position of the menu.\n * @returns {boolean} True if the menu overflows the left side, false otherwise.\n */\nconst isOverflowingLeft = (left: number): boolean => left < screenOffset;\n\n/**\n * Checks if the menu overflows the right side of the screen.\n *\n * @param {number} left - The left position of the menu.\n * @param {number} width - The width of the menu.\n * @param {number} screenWidth - The width of the viewport.\n * @returns {boolean} True if the menu overflows the right side, false otherwise.\n */\nconst isOverflowingRight = (left: number, width: number, screenWidth: number): boolean =>\n\tleft + width > screenWidth - screenOffset;\n\n/**\n * Checks if the menu overflows the top side of the screen.\n *\n * @param {number} top - The top position of the menu.\n * @returns {boolean} True if the menu overflows the top side, false otherwise.\n */\nconst isOverflowingTop = (top: number): boolean => top < screenOffset;\n\n/**\n * Checks if the menu overflows the bottom side of the screen.\n *\n * @param {number} top - The top position of the menu.\n * @param {number} height - The height of the menu.\n * @param {number} screenHeight - The height of the viewport.\n * @returns {boolean} True if the menu overflows the bottom side, false otherwise.\n */\nconst isOverflowingBottom = (top: number, height: number, screenHeight: number): boolean =>\n\ttop + height > screenHeight - screenOffset;\n"],"names":["screenOffset","getPosition","menuAlign","offset","elementRect","triggerRect","_menuAlign$align","disableFlipping","arguments","length","undefined","screenWidth","window","innerWidth","screenHeight","innerHeight","calculateCustomPosition","position","align","positionHorizontal","positionVertical","isLeft","flipped","containerSide","left","width","right","overflowsLeft","isOverflowingLeft","overflowsRight","isOverflowingRight","rightSide","leftSide","top","calculateVerticalPosition","adjustForVerticalBounds","isTop","height","bottom","overflowsTop","isOverflowingTop","overflowsBottom","isOverflowingBottom","bottomSide","topSide","calculateHorizontalPosition","_menuAlign$customPosi","_menuAlign$customPosi2","_menuAlign$customPosi3","_menuAlign$customPosi4","customPosition","adjusted","adjustCustomScreenBounds","_objectSpread","adjustedTop","adjustedLeft","Math","min","max"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utilities.js","sources":["../../../../src/hooks/useTriggerPosition/utilities.ts"],"sourcesContent":["import { Alignment, Position } from './constants';\n\nconst screenOffset = 16;\n\n/**\n * Calculates the position of the menu based on alignment and viewport constraints.\n *\n * @param {Alignment} menuAlign - The alignment configuration for the menu.\n * @param {number} offset - The offset distance between the menu and the trigger.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {DOMRect} [triggerRect] - The bounding rectangle of the trigger element.\n * @param {boolean} [disableFlipping] - If true, prevents flipping to the opposite side when overflowing.\n * @returns {Position} The calculated position of the menu.\n */\nexport const getPosition = (\n\tmenuAlign: Alignment,\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect?: DOMRect,\n\tdisableFlipping = false\n): Position => {\n\tconst screenWidth = window.innerWidth;\n\tconst screenHeight = window.innerHeight;\n\n\tif (!triggerRect) {\n\t\treturn calculateCustomPosition(elementRect, menuAlign);\n\t}\n\n\tconst position = menuAlign.position;\n\tconst align = menuAlign.align ?? 'center';\n\n\tswitch (position) {\n\t\tcase 'left':\n\t\tcase 'right':\n\t\t\treturn positionHorizontal(\n\t\t\t\tposition,\n\t\t\t\talign,\n\t\t\t\toffset,\n\t\t\t\telementRect,\n\t\t\t\ttriggerRect,\n\t\t\t\tscreenWidth,\n\t\t\t\tscreenHeight,\n\t\t\t\tdisableFlipping\n\t\t\t);\n\t\tcase 'top':\n\t\tcase 'bottom':\n\t\t\treturn positionVertical(\n\t\t\t\tposition,\n\t\t\t\talign,\n\t\t\t\toffset,\n\t\t\t\telementRect,\n\t\t\t\ttriggerRect,\n\t\t\t\tscreenWidth,\n\t\t\t\tscreenHeight,\n\t\t\t\tdisableFlipping\n\t\t\t);\n\t\tdefault:\n\t\t\treturn calculateCustomPosition(elementRect, menuAlign);\n\t}\n};\n\n/**\n * Calculates left/right placement with vertical alignment and screen overflow checks.\n * Flips the menu to the opposite side if it overflows the screen, unless flipping is disabled.\n *\n * @param {'left' | 'right'} position - The horizontal position ('left' or 'right').\n * @param {Alignment['align']} align - The vertical alignment ('start', 'end', or 'center').\n * @param {number} offset - The offset distance between the menu and the trigger.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {number} screenWidth - The width of the viewport.\n * @param {number} screenHeight - The height of the viewport.\n * @param {boolean} disableFlipping - Whether to disable flipping logic.\n * @returns {Position} The calculated position of the menu.\n */\nconst positionHorizontal = (\n\tposition: 'left' | 'right',\n\talign: Alignment['align'],\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect: DOMRect,\n\tscreenWidth: number,\n\tscreenHeight: number,\n\tdisableFlipping: boolean\n): Position => {\n\tconst isLeft = position === 'left';\n\tlet flipped = false;\n\n\tlet containerSide = isLeft\n\t\t? triggerRect.left - elementRect.width - offset\n\t\t: triggerRect.right + offset;\n\n\tconst overflowsLeft = isOverflowingLeft(containerSide);\n\tconst overflowsRight = isOverflowingRight(containerSide, elementRect.width, screenWidth);\n\n\t// Flip to opposite side if menu overflows but fits on the other side\n\tif (!disableFlipping) {\n\t\tif (isLeft && overflowsLeft) {\n\t\t\tconst rightSide = triggerRect.right + offset;\n\t\t\tif (!isOverflowingRight(rightSide, elementRect.width, screenWidth)) {\n\t\t\t\tcontainerSide = rightSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t} else if (!isLeft && overflowsRight) {\n\t\t\tconst leftSide = triggerRect.left - elementRect.width - offset;\n\t\t\tif (!isOverflowingLeft(leftSide)) {\n\t\t\t\tcontainerSide = leftSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tlet top = calculateVerticalPosition(triggerRect, elementRect, align);\n\ttop = adjustForVerticalBounds(top, elementRect, screenHeight);\n\n\treturn { flipped, left: containerSide, top };\n};\n\n/**\n * Calculates top/bottom placement with horizontal alignment and screen overflow checks.\n * Flips the menu to the opposite side if it overflows the screen, unless flipping is disabled.\n *\n * @param {'top' | 'bottom'} position - The vertical position ('top' or 'bottom').\n * @param {Alignment['align']} align - The horizontal alignment ('start', 'end', or 'center').\n * @param {number} offset - The offset distance between the menu and the trigger.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {number} screenWidth - The width of the viewport.\n * @param {number} screenHeight - The height of the viewport.\n * @param {boolean} disableFlipping - Whether to disable flipping logic.\n * @returns {Position} The calculated position of the menu.\n */\nconst positionVertical = (\n\tposition: 'top' | 'bottom',\n\talign: Alignment['align'],\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect: DOMRect,\n\tscreenWidth: number,\n\tscreenHeight: number,\n\tdisableFlipping: boolean\n): Position => {\n\tconst isTop = position === 'top';\n\tlet flipped = false;\n\n\tlet containerSide = isTop\n\t\t? triggerRect.top - elementRect.height - offset\n\t\t: triggerRect.bottom + offset;\n\n\tconst overflowsTop = isOverflowingTop(containerSide);\n\tconst overflowsBottom = isOverflowingBottom(containerSide, elementRect.height, screenHeight);\n\n\t// Flip to opposite side if menu overflows but fits on the other side\n\tif (!disableFlipping) {\n\t\tif (isTop && overflowsTop) {\n\t\t\tconst bottomSide = triggerRect.bottom + offset;\n\t\t\tif (!isOverflowingBottom(bottomSide, elementRect.height, screenHeight)) {\n\t\t\t\tcontainerSide = bottomSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t} else if (!isTop && overflowsBottom) {\n\t\t\tconst topSide = triggerRect.top - elementRect.height - offset;\n\t\t\tif (!isOverflowingTop(topSide)) {\n\t\t\t\tcontainerSide = topSide;\n\t\t\t\tflipped = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst left = calculateHorizontalPosition(triggerRect, elementRect, align, screenWidth);\n\n\treturn { flipped, left, top: containerSide };\n};\n\n/**\n * Aligns menu horizontally (used when menu is vertically positioned).\n *\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {'start' | 'end' | 'center'} align - The horizontal alignment.\n * @param {number} screenWidth - The width of the viewport.\n * @returns {number} The calculated horizontal position.\n */\nconst calculateHorizontalPosition = (\n\ttriggerRect: DOMRect,\n\telementRect: DOMRect,\n\talign: 'start' | 'end' | 'center',\n\tscreenWidth: number\n): number => {\n\tlet position: number;\n\n\tswitch (align) {\n\t\tcase 'start':\n\t\t\tposition = triggerRect.left;\n\t\t\tbreak;\n\t\tcase 'end':\n\t\t\tposition = triggerRect.right - elementRect.width;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tposition = triggerRect.left + (triggerRect.width - elementRect.width) / 2;\n\t\t\tbreak;\n\t}\n\n\t// Clamp within screen\n\tif (position < screenOffset) return screenOffset;\n\tif (position + elementRect.width > screenWidth - screenOffset) {\n\t\treturn screenWidth - elementRect.width - screenOffset;\n\t}\n\treturn position;\n};\n\n/**\n * Aligns menu vertically (used when menu is horizontally positioned).\n *\n * @param {DOMRect} triggerRect - The bounding rectangle of the trigger element.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {'start' | 'end' | 'center'} align - The vertical alignment.\n * @returns {number} The calculated vertical position.\n */\nconst calculateVerticalPosition = (\n\ttriggerRect: DOMRect,\n\telementRect: DOMRect,\n\talign: 'start' | 'end' | 'center'\n): number => {\n\tswitch (align) {\n\t\tcase 'start':\n\t\t\treturn triggerRect.top;\n\t\tcase 'end':\n\t\t\treturn triggerRect.bottom - elementRect.height;\n\t\tdefault:\n\t\t\treturn triggerRect.top + (triggerRect.height - elementRect.height) / 2;\n\t}\n};\n\n/**\n * Calculates position for a menu that uses an explicit custom position.\n *\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {Alignment} menuAlign - The alignment configuration for the menu.\n * @returns {Position} The calculated custom position of the menu.\n */\nconst calculateCustomPosition = (elementRect: DOMRect, menuAlign: Alignment): Position => {\n\tconst screenHeight = window.innerHeight;\n\tconst screenWidth = window.innerWidth;\n\n\tconst left = menuAlign.customPosition?.left ?? 0;\n\tconst top = menuAlign.customPosition?.top ?? 0;\n\n\tconst adjusted = adjustCustomScreenBounds(left, top, elementRect, screenWidth, screenHeight);\n\treturn { ...adjusted, flipped: false };\n};\n\n/**\n * Adjusts vertical position to stay within screen height.\n *\n * @param {number} top - The initial vertical position.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {number} screenHeight - The height of the viewport.\n * @returns {number} The adjusted vertical position.\n */\nconst adjustForVerticalBounds = (\n\ttop: number,\n\telementRect: DOMRect,\n\tscreenHeight: number\n): number => {\n\tlet adjustedTop = top;\n\n\tif (isOverflowingTop(adjustedTop)) {\n\t\tadjustedTop = screenOffset;\n\t}\n\n\tif (isOverflowingBottom(adjustedTop, elementRect.height, screenHeight)) {\n\t\tadjustedTop = screenHeight - elementRect.height - screenOffset;\n\t}\n\n\t// If the menu is taller than the screen height minus offset, pin it to the top offset\n\tif (elementRect.height + 2 * screenOffset > screenHeight) {\n\t\tadjustedTop = screenOffset;\n\t}\n\n\treturn adjustedTop;\n};\n\n/**\n * Ensures menu position stays within screen bounds.\n *\n * @param {number} left - The initial horizontal position.\n * @param {number} top - The initial vertical position.\n * @param {DOMRect} elementRect - The bounding rectangle of the menu element.\n * @param {number} screenWidth - The width of the viewport.\n * @param {number} screenHeight - The height of the viewport.\n * @returns {Position} The adjusted position of the menu.\n */\nconst adjustCustomScreenBounds = (\n\tleft: number,\n\ttop: number,\n\telementRect: DOMRect,\n\tscreenWidth: number,\n\tscreenHeight: number\n): { left: number; top: number } => {\n\tconst adjustedLeft = Math.min(\n\t\tMath.max(left, screenOffset),\n\t\tscreenWidth - elementRect.width - screenOffset\n\t);\n\n\tlet adjustedTop = Math.max(top, screenOffset);\n\tif (adjustedTop + elementRect.height > screenHeight - screenOffset) {\n\t\tadjustedTop = screenHeight - elementRect.height - screenOffset;\n\t}\n\n\tif (elementRect.height + 2 * screenOffset > screenHeight) adjustedTop = screenOffset;\n\n\treturn { left: adjustedLeft, top: adjustedTop };\n};\n\n/**\n * Checks if the menu overflows the left side of the screen.\n *\n * @param {number} left - The left position of the menu.\n * @returns {boolean} True if the menu overflows the left side, false otherwise.\n */\nconst isOverflowingLeft = (left: number): boolean => left < screenOffset;\n\n/**\n * Checks if the menu overflows the right side of the screen.\n *\n * @param {number} left - The left position of the menu.\n * @param {number} width - The width of the menu.\n * @param {number} screenWidth - The width of the viewport.\n * @returns {boolean} True if the menu overflows the right side, false otherwise.\n */\nconst isOverflowingRight = (left: number, width: number, screenWidth: number): boolean =>\n\tleft + width > screenWidth - screenOffset;\n\n/**\n * Checks if the menu overflows the top side of the screen.\n *\n * @param {number} top - The top position of the menu.\n * @returns {boolean} True if the menu overflows the top side, false otherwise.\n */\nconst isOverflowingTop = (top: number): boolean => top < screenOffset;\n\n/**\n * Checks if the menu overflows the bottom side of the screen.\n *\n * @param {number} top - The top position of the menu.\n * @param {number} height - The height of the menu.\n * @param {number} screenHeight - The height of the viewport.\n * @returns {boolean} True if the menu overflows the bottom side, false otherwise.\n */\nconst isOverflowingBottom = (top: number, height: number, screenHeight: number): boolean =>\n\ttop + height > screenHeight - screenOffset;\n"],"names":["screenOffset","getPosition","menuAlign","offset","elementRect","triggerRect","_menuAlign$align","disableFlipping","arguments","length","undefined","screenWidth","window","innerWidth","screenHeight","innerHeight","calculateCustomPosition","position","align","positionHorizontal","positionVertical","isLeft","flipped","containerSide","left","width","right","overflowsLeft","isOverflowingLeft","overflowsRight","isOverflowingRight","rightSide","leftSide","top","calculateVerticalPosition","adjustForVerticalBounds","isTop","height","bottom","overflowsTop","isOverflowingTop","overflowsBottom","isOverflowingBottom","bottomSide","topSide","calculateHorizontalPosition","_menuAlign$customPosi","_menuAlign$customPosi2","_menuAlign$customPosi3","_menuAlign$customPosi4","customPosition","adjusted","adjustCustomScreenBounds","_objectSpread","adjustedTop","adjustedLeft","Math","min","max"],"mappings":"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"}
|
|
@@ -5,13 +5,11 @@ var NOT_ALLOWED = ['class', 'className', 'style'];
|
|
|
5
5
|
*
|
|
6
6
|
* @param {AttrsObject} attrs - attrs object from a component
|
|
7
7
|
*/
|
|
8
|
-
var checkInvalidAttributes =
|
|
8
|
+
var checkInvalidAttributes = attrs => {
|
|
9
9
|
if (!attrs) return;
|
|
10
10
|
var isLocal = window.location.hostname === 'localhost' || window.location.hostname.includes('localhost');
|
|
11
11
|
if (isLocal) {
|
|
12
|
-
var found = Object.keys(attrs).filter(
|
|
13
|
-
return NOT_ALLOWED.includes(prop);
|
|
14
|
-
});
|
|
12
|
+
var found = Object.keys(attrs).filter(prop => NOT_ALLOWED.includes(prop));
|
|
15
13
|
if (found.length > 0) {
|
|
16
14
|
var message = "UI Toolkit Warning: The following properties are not allowed in the attrs object: ".concat(found.join(', '), ". Please use the appropriate component prop instead.");
|
|
17
15
|
console.warn(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/utils/checkInvalidAttributes/index.ts"],"sourcesContent":["import { AttrsObject } from '../setAttributes';\n\nconst NOT_ALLOWED = ['class', 'className', 'style'];\n\n/**\n * Checks attrs object for invalid properties and provides a warning\n *\n * @param {AttrsObject} attrs - attrs object from a component\n */\nexport const checkInvalidAttributes = (attrs: AttrsObject | undefined): void => {\n\tif (!attrs) return;\n\n\tconst isLocal =\n\t\twindow.location.hostname === 'localhost' || window.location.hostname.includes('localhost');\n\n\tif (isLocal) {\n\t\tconst found = Object.keys(attrs).filter((prop) => NOT_ALLOWED.includes(prop));\n\n\t\tif (found.length > 0) {\n\t\t\tconst message = `UI Toolkit Warning: The following properties are not allowed in the attrs object: ${found.join(\n\t\t\t\t', '\n\t\t\t)}. Please use the appropriate component prop instead.`;\n\n\t\t\tconsole.warn(message);\n\t\t}\n\t}\n};\n"],"names":["NOT_ALLOWED","checkInvalidAttributes","attrs","isLocal","window","location","hostname","includes","found","Object","keys","filter","prop","length","message","concat","join","console","warn"],"mappings":"AAEA,IAAMA,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;;AAEnD;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/utils/checkInvalidAttributes/index.ts"],"sourcesContent":["import { AttrsObject } from '../setAttributes';\n\nconst NOT_ALLOWED = ['class', 'className', 'style'];\n\n/**\n * Checks attrs object for invalid properties and provides a warning\n *\n * @param {AttrsObject} attrs - attrs object from a component\n */\nexport const checkInvalidAttributes = (attrs: AttrsObject | undefined): void => {\n\tif (!attrs) return;\n\n\tconst isLocal =\n\t\twindow.location.hostname === 'localhost' || window.location.hostname.includes('localhost');\n\n\tif (isLocal) {\n\t\tconst found = Object.keys(attrs).filter((prop) => NOT_ALLOWED.includes(prop));\n\n\t\tif (found.length > 0) {\n\t\t\tconst message = `UI Toolkit Warning: The following properties are not allowed in the attrs object: ${found.join(\n\t\t\t\t', '\n\t\t\t)}. Please use the appropriate component prop instead.`;\n\n\t\t\tconsole.warn(message);\n\t\t}\n\t}\n};\n"],"names":["NOT_ALLOWED","checkInvalidAttributes","attrs","isLocal","window","location","hostname","includes","found","Object","keys","filter","prop","length","message","concat","join","console","warn"],"mappings":"AAEA,IAAMA,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;;AAEnD;AACA;AACA;AACA;AACA;AACO,IAAMC,sBAAsB,GAAIC,KAA8B,IAAW;EAC/E,IAAI,CAACA,KAAK,EAAE;AAEZ,EAAA,IAAMC,OAAO,GACZC,MAAM,CAACC,QAAQ,CAACC,QAAQ,KAAK,WAAW,IAAIF,MAAM,CAACC,QAAQ,CAACC,QAAQ,CAACC,QAAQ,CAAC,WAAW,CAAC;AAE3F,EAAA,IAAIJ,OAAO,EAAE;AACZ,IAAA,IAAMK,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACR,KAAK,CAAC,CAACS,MAAM,CAAEC,IAAI,IAAKZ,WAAW,CAACO,QAAQ,CAACK,IAAI,CAAC,CAAC;AAE7E,IAAA,IAAIJ,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;MACrB,IAAMC,OAAO,GAAA,oFAAA,CAAAC,MAAA,CAAwFP,KAAK,CAACQ,IAAI,CAC9G,IACD,CAAC,EAAA,sDAAA,CAAsD;AAEvDC,MAAAA,OAAO,CAACC,IAAI,CAACJ,OAAO,CAAC;AACtB,IAAA;AACD,EAAA;AACD;;;;"}
|
|
@@ -1,40 +1,39 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineProperty as _defineProperty } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @description Creates a wrapper for request animation frame that helps a little with performance this helps us only animate current frame reducing in jumps/tearing on slow devices.
|
|
5
5
|
*/
|
|
6
|
-
var FrameDebounce =
|
|
7
|
-
/**
|
|
8
|
-
* constructor FrameDebounce
|
|
9
|
-
*/
|
|
10
|
-
function FrameDebounce() {
|
|
11
|
-
var _this = this;
|
|
12
|
-
_classCallCheck(this, FrameDebounce);
|
|
13
|
-
_defineProperty(this, "frame", void 0);
|
|
6
|
+
var FrameDebounce = class FrameDebounce {
|
|
14
7
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @param callback callback to call after frame runs
|
|
8
|
+
* constructor FrameDebounce
|
|
18
9
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
constructor() {
|
|
11
|
+
_defineProperty(this, "frame", void 0);
|
|
12
|
+
/**
|
|
13
|
+
* debounce a callback wrapped in animation frame.
|
|
14
|
+
*
|
|
15
|
+
* @param callback callback to call after frame runs
|
|
16
|
+
*/
|
|
17
|
+
_defineProperty(this, "debounce", callback => {
|
|
18
|
+
if (this.frame) this.cancel();
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
// only animate current frame near complete reduction in jumps/tearing on slow devices.
|
|
21
|
+
this.frame = requestAnimationFrame(() => {
|
|
22
|
+
this.frame = null;
|
|
23
|
+
callback === null || callback === void 0 ? void 0 : callback();
|
|
24
|
+
});
|
|
26
25
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
26
|
+
/**
|
|
27
|
+
* cancel our frame.
|
|
28
|
+
*/
|
|
29
|
+
_defineProperty(this, "cancel", () => {
|
|
30
|
+
if (this.frame) {
|
|
31
|
+
cancelAnimationFrame(this.frame);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
this.frame = null;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
38
37
|
|
|
39
38
|
export { FrameDebounce };
|
|
40
39
|
//# sourceMappingURL=index.js.map
|