@muraldevkit/ui-toolkit 4.68.0-dev-NFbt.1 → 4.68.0-dev-5W5E.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -250
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js +17 -11
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +27 -25
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js +11 -5
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +12 -4
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +13 -6
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js +7 -3
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +24 -28
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +20 -20
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js +21 -21
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +20 -22
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +14 -10
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/actions.js +11 -16
- package/dist/cjs/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/cjs/components/button/helpers.js +4 -6
- package/dist/cjs/components/button/helpers.js.map +1 -1
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +8 -9
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js +14 -7
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js +18 -6
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/cjs/components/empty/default/MrlEmpty.js +8 -4
- package/dist/cjs/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js +8 -4
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js +30 -38
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +7 -3
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js +8 -7
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +9 -3
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +6 -5
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +13 -4
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +11 -7
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js +21 -14
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js +8 -4
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/cjs/components/form/hooks/useActiveColor.js +2 -2
- package/dist/cjs/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/cjs/components/form/hooks/useIsEditable.js +3 -3
- package/dist/cjs/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js +12 -5
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +19 -5
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +42 -31
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +21 -12
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +19 -11
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js +8 -7
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/index.js +4 -3
- package/dist/cjs/components/form/legacy-select/index.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +7 -3
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +11 -5
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js +3 -2
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js.map +1 -1
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js +9 -3
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectOption.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectOption.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js.map +1 -1
- package/dist/cjs/components/form/select/styles/default.js +18 -18
- package/dist/cjs/components/form/select/styles/default.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inline.js +2 -2
- package/dist/cjs/components/form/select/styles/inline.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/cjs/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -7
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +13 -9
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +31 -19
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +28 -23
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -16
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +14 -17
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +16 -9
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/cjs/components/form/utils.js +2 -4
- package/dist/cjs/components/form/utils.js.map +1 -1
- package/dist/cjs/components/grid/MrlCol/MrlCol.js +37 -46
- package/dist/cjs/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js +7 -3
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js.map +1 -1
- package/dist/cjs/components/grid/MrlRow/MrlRow.js +7 -3
- package/dist/cjs/components/grid/MrlRow/MrlRow.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js.map +1 -1
- package/dist/cjs/components/layout/MrlMain/MrlMain.js +9 -3
- package/dist/cjs/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/MrlPage.js +9 -3
- package/dist/cjs/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/index.js +3 -2
- package/dist/cjs/components/layout/MrlPage/index.js.map +1 -1
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +27 -15
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js +10 -3
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/cjs/components/layout/context/LayoutContext.js +7 -6
- package/dist/cjs/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +18 -14
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +13 -9
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/cjs/components/layout/utils.js +2 -2
- package/dist/cjs/components/layout/utils.js.map +1 -1
- package/dist/cjs/components/link/MrlLink/MrlLink.js +13 -4
- package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +16 -14
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js +13 -12
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js +16 -6
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js +16 -4
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +61 -63
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/cjs/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js +4 -3
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +24 -19
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -6
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/cjs/components/menu/context/MrlMenuContext.js +3 -2
- package/dist/cjs/components/menu/context/MrlMenuContext.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js +19 -15
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/cjs/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js +29 -25
- package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js +12 -8
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js +4 -3
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js +13 -6
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js +12 -6
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js +7 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +11 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +26 -19
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js +17 -7
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/cjs/components/notification/MrlToast/MrlToast.js +18 -9
- package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js +7 -3
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +7 -3
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js +8 -4
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +25 -17
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js +3 -2
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js +9 -5
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +8 -4
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +77 -73
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +22 -23
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/cjs/components/portal/MrlPortal.js +5 -4
- package/dist/cjs/components/portal/MrlPortal.js.map +1 -1
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +237 -263
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js +11 -5
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +12 -6
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js +17 -17
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +20 -15
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +78 -96
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js +5 -4
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/cjs/components/table/MrlTable/MrlTable.js +7 -3
- package/dist/cjs/components/table/MrlTable/MrlTable.js.map +1 -1
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js +7 -3
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js.map +1 -1
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js +12 -3
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js +13 -3
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js +7 -3
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js.map +1 -1
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js +7 -3
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js.map +1 -1
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -7
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/cjs/components/table/utils.js +4 -10
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js +16 -9
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js +12 -5
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js +15 -13
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +16 -9
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js +16 -10
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/cjs/components/text/MrlText/MrlText.js +14 -5
- package/dist/cjs/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js +14 -4
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js +17 -8
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +7 -3
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +37 -36
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +13 -4
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js +21 -19
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/cjs/components/tooltip/utils.js +3 -3
- package/dist/cjs/components/tooltip/utils.js.map +1 -1
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js +7 -6
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/cjs/hooks/useBreakpoint/index.js +5 -5
- package/dist/cjs/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/cjs/hooks/useClickOutside/index.js +4 -4
- package/dist/cjs/hooks/useClickOutside/index.js.map +1 -1
- package/dist/cjs/hooks/useCoordinate/index.js +19 -28
- package/dist/cjs/hooks/useCoordinate/index.js.map +1 -1
- package/dist/cjs/hooks/useElementDimensions/index.js +21 -33
- package/dist/cjs/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js +7 -8
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/cjs/hooks/useScrollbarInfo/index.js +11 -10
- package/dist/cjs/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/index.js +20 -22
- package/dist/cjs/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/cjs/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/cjs/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/cjs/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/cjs/utils/frameDebounce/index.js +27 -28
- package/dist/cjs/utils/frameDebounce/index.js.map +1 -1
- package/dist/cjs/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/cjs/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js.map +1 -1
- package/dist/cjs/utils/isImagePath/index.js +4 -3
- package/dist/cjs/utils/isImagePath/index.js.map +1 -1
- package/dist/cjs/utils/isImageUri/index.js +1 -1
- package/dist/cjs/utils/isImageUri/index.js.map +1 -1
- package/dist/cjs/utils/isObject/isObject.js +1 -1
- package/dist/cjs/utils/isObject/isObject.js.map +1 -1
- package/dist/cjs/utils/isTouch/index.js +1 -1
- package/dist/cjs/utils/isTouch/index.js.map +1 -1
- package/dist/cjs/utils/layers/index.js +1 -1
- package/dist/cjs/utils/layers/index.js.map +1 -1
- package/dist/cjs/utils/noop/index.js +1 -1
- package/dist/cjs/utils/noop/index.js.map +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/cjs/utils/setAttributes/setAttributes.js +11 -5
- package/dist/cjs/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/cjs/utils/trapFocus/index.js +9 -11
- package/dist/cjs/utils/trapFocus/index.js.map +1 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -234
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js +12 -10
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +22 -24
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js +6 -4
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +7 -3
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +7 -4
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +18 -26
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +14 -18
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js +16 -20
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +14 -20
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +7 -7
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/actions.js +12 -17
- package/dist/esm/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/esm/components/button/helpers.js +4 -6
- package/dist/esm/components/button/helpers.js.map +1 -1
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js +5 -7
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/esm/components/container/MrlContainer/MrlContainer.js +7 -4
- package/dist/esm/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js +13 -5
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js +28 -37
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js +5 -5
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +4 -2
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +3 -3
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +8 -3
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +2 -2
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/esm/components/form/date-picker/MrlDatePicker.js +15 -12
- package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js +2 -2
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/esm/components/form/hooks/useActiveColor.js +2 -2
- package/dist/esm/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/esm/components/form/hooks/useIsEditable.js +3 -3
- package/dist/esm/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js +6 -3
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +14 -4
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +37 -30
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +16 -11
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +14 -10
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/esm/components/form/legacy-select/context/SelectContext.js +5 -5
- package/dist/esm/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/esm/components/form/legacy-select/index.js +1 -1
- package/dist/esm/components/form/legacy-select/index.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +4 -2
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +2 -2
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +2 -2
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js +4 -2
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/esm/components/form/select/styles/default.js +18 -18
- package/dist/esm/components/form/select/styles/default.js.map +1 -1
- package/dist/esm/components/form/select/styles/inline.js +2 -2
- package/dist/esm/components/form/select/styles/inline.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/esm/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/esm/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +9 -6
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +3 -3
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +25 -17
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +21 -20
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +15 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +8 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +9 -6
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/esm/components/form/utils.js +2 -4
- package/dist/esm/components/form/utils.js.map +1 -1
- package/dist/esm/components/grid/MrlCol/MrlCol.js +31 -44
- package/dist/esm/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/esm/components/layout/MrlMain/MrlMain.js +4 -2
- package/dist/esm/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/esm/components/layout/MrlPage/MrlPage.js +4 -2
- package/dist/esm/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +19 -11
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js +5 -2
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/esm/components/layout/context/LayoutContext.js +4 -4
- package/dist/esm/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/esm/components/layout/utils.js +2 -2
- package/dist/esm/components/layout/utils.js.map +1 -1
- package/dist/esm/components/link/MrlLink/MrlLink.js +8 -3
- package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +9 -11
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js +5 -9
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js +9 -3
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js +11 -3
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js +56 -62
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/esm/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -17
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +2 -2
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js +14 -14
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/esm/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -22
- package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js +5 -5
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js +7 -4
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js +7 -5
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +6 -2
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +18 -15
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js +11 -5
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/esm/components/notification/MrlToast/MrlToast.js +14 -9
- package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js +14 -10
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js +2 -2
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js +71 -71
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +19 -21
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/esm/components/portal/MrlPortal.js +2 -2
- package/dist/esm/components/portal/MrlPortal.js.map +1 -1
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +235 -262
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js +6 -4
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +7 -5
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js +7 -11
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +8 -8
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +71 -94
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js +2 -2
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js +7 -2
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js +8 -2
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +7 -5
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/esm/components/table/utils.js +4 -10
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js +11 -8
- package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js +7 -4
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js +8 -10
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +11 -8
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js +11 -9
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/esm/components/text/MrlText/MrlText.js +8 -3
- package/dist/esm/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js +9 -3
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js +12 -7
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +31 -34
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +8 -3
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/index.js +15 -17
- package/dist/esm/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/esm/components/tooltip/utils.js +3 -3
- package/dist/esm/components/tooltip/utils.js.map +1 -1
- package/dist/esm/hooks/useAutoClose/useAutoClose.js +4 -4
- package/dist/esm/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/index.js +5 -5
- package/dist/esm/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/index.js +4 -4
- package/dist/esm/hooks/useClickOutside/index.js.map +1 -1
- package/dist/esm/hooks/useCoordinate/index.js +20 -29
- package/dist/esm/hooks/useCoordinate/index.js.map +1 -1
- package/dist/esm/hooks/useElementDimensions/index.js +19 -32
- package/dist/esm/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/esm/hooks/useHasFocusableDescendant/index.js +4 -6
- package/dist/esm/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/esm/hooks/useScrollbarInfo/index.js +8 -8
- package/dist/esm/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/index.js +14 -20
- package/dist/esm/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/esm/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/esm/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/esm/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/esm/utils/frameDebounce/index.js +28 -29
- package/dist/esm/utils/frameDebounce/index.js.map +1 -1
- package/dist/esm/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/esm/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/esm/utils/isElementScrollable/index.js +1 -1
- package/dist/esm/utils/isElementScrollable/index.js.map +1 -1
- package/dist/esm/utils/isImagePath/index.js +1 -1
- package/dist/esm/utils/isImagePath/index.js.map +1 -1
- package/dist/esm/utils/isImageUri/index.js +1 -1
- package/dist/esm/utils/isImageUri/index.js.map +1 -1
- package/dist/esm/utils/isObject/isObject.js +1 -1
- package/dist/esm/utils/isObject/isObject.js.map +1 -1
- package/dist/esm/utils/isTouch/index.js +1 -1
- package/dist/esm/utils/isTouch/index.js.map +1 -1
- package/dist/esm/utils/layers/index.js +1 -1
- package/dist/esm/utils/layers/index.js.map +1 -1
- package/dist/esm/utils/noop/index.js +1 -1
- package/dist/esm/utils/noop/index.js.map +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/esm/utils/setAttributes/setAttributes.js +7 -5
- package/dist/esm/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/esm/utils/trapFocus/index.js +9 -11
- package/dist/esm/utils/trapFocus/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,8 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var index = require('../../utils/trapFocus/index.js');
|
|
6
6
|
|
|
7
|
-
function
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
8
9
|
var n = Object.create(null);
|
|
9
10
|
if (e) {
|
|
10
11
|
Object.keys(e).forEach(function (k) {
|
|
@@ -21,7 +22,7 @@ function _interopNamespaceDefault(e) {
|
|
|
21
22
|
return Object.freeze(n);
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
var React__namespace = /*#__PURE__*/
|
|
25
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Tracks whether the subtree of the given ref contains at least one element
|
|
@@ -49,14 +50,12 @@ function useHasFocusableDescendant(ref) {
|
|
|
49
50
|
_React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
|
|
50
51
|
hasFocusableDescendant = _React$useState2[0],
|
|
51
52
|
setHasFocusableDescendant = _React$useState2[1];
|
|
52
|
-
React__namespace.useLayoutEffect(
|
|
53
|
+
React__namespace.useLayoutEffect(() => {
|
|
53
54
|
var element = ref.current;
|
|
54
55
|
if (!element) return;
|
|
55
|
-
var measure =
|
|
56
|
+
var measure = () => {
|
|
56
57
|
var next = element.querySelector(index.FOCUSABLE_ELEMENTS_SELECTOR) !== null;
|
|
57
|
-
setHasFocusableDescendant(
|
|
58
|
-
return prev === next ? prev : next;
|
|
59
|
-
});
|
|
58
|
+
setHasFocusableDescendant(prev => prev === next ? prev : next);
|
|
60
59
|
};
|
|
61
60
|
measure();
|
|
62
61
|
var observer = new MutationObserver(measure);
|
|
@@ -66,7 +65,7 @@ function useHasFocusableDescendant(ref) {
|
|
|
66
65
|
childList: true,
|
|
67
66
|
subtree: true
|
|
68
67
|
});
|
|
69
|
-
return
|
|
68
|
+
return () => {
|
|
70
69
|
observer.disconnect();
|
|
71
70
|
};
|
|
72
71
|
}, [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":"
|
|
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,gBAAK,CAACC,QAAQ,CAAC,IAAI,CAAC;IAAAC,gBAAA,GAAAC,uCAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAAzEK,IAAAA,sBAAsB,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,yBAAyB,GAAAH,gBAAA,CAAA,CAAA,CAAA;EAExDF,gBAAK,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,iCAA2B,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;;;;"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function _interopNamespace(e) {
|
|
7
|
+
if (e && e.__esModule) return e;
|
|
7
8
|
var n = Object.create(null);
|
|
8
9
|
if (e) {
|
|
9
10
|
Object.keys(e).forEach(function (k) {
|
|
@@ -20,7 +21,7 @@ function _interopNamespaceDefault(e) {
|
|
|
20
21
|
return Object.freeze(n);
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
var React__namespace = /*#__PURE__*/
|
|
24
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Return type for the `useScrollbarInfo` hook.
|
|
@@ -43,9 +44,9 @@ function useScrollbarInfo() {
|
|
|
43
44
|
scrollbarInfo = _React$useState2[0],
|
|
44
45
|
setScrollbarInfo = _React$useState2[1];
|
|
45
46
|
var scrollableContainerRef = React__namespace.useRef(null);
|
|
46
|
-
React__namespace.useLayoutEffect(
|
|
47
|
+
React__namespace.useLayoutEffect(() => {
|
|
47
48
|
if (!scrollableContainerRef.current) return;
|
|
48
|
-
var observer = new ResizeObserver(
|
|
49
|
+
var observer = new ResizeObserver(_ref => {
|
|
49
50
|
var _ref2 = _rollupPluginBabelHelpers.slicedToArray(_ref, 1),
|
|
50
51
|
entry = _ref2[0];
|
|
51
52
|
if (!entry) return;
|
|
@@ -63,19 +64,19 @@ function useScrollbarInfo() {
|
|
|
63
64
|
// Horizontal scrollbar height: difference between offsetHeight and clientHeight
|
|
64
65
|
var horizontalScrollbarHeight = target.offsetHeight - target.clientHeight;
|
|
65
66
|
setScrollbarInfo({
|
|
66
|
-
hasHorizontalScrollbar
|
|
67
|
-
hasVerticalScrollbar
|
|
68
|
-
horizontalScrollbarHeight
|
|
69
|
-
verticalScrollbarWidth
|
|
67
|
+
hasHorizontalScrollbar,
|
|
68
|
+
hasVerticalScrollbar,
|
|
69
|
+
horizontalScrollbarHeight,
|
|
70
|
+
verticalScrollbarWidth
|
|
70
71
|
});
|
|
71
72
|
});
|
|
72
73
|
observer.observe(scrollableContainerRef.current);
|
|
73
|
-
return
|
|
74
|
+
return () => {
|
|
74
75
|
observer.disconnect();
|
|
75
76
|
};
|
|
76
77
|
}, []);
|
|
77
78
|
return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, scrollbarInfo), {}, {
|
|
78
|
-
scrollableContainerRef
|
|
79
|
+
scrollableContainerRef
|
|
79
80
|
});
|
|
80
81
|
}
|
|
81
82
|
|
|
@@ -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":"
|
|
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,gBAAK,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,uCAAA,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,gBAAK,CAACW,MAAM,CAAW,IAAI,CAAC;EAE3DX,gBAAK,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,uCAAA,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,uCAAA,CAAAA,uCAAA,CAAA,EAAA,EACIpB,aAAa,CAAA,EAAA,EAAA,EAAA;AAChBE,IAAAA;AAAsB,GAAA,CAAA;AAExB;;;;"}
|
|
@@ -5,6 +5,10 @@ var React = require('react');
|
|
|
5
5
|
var utilities = require('./utilities.js');
|
|
6
6
|
var debounce = require('lodash.debounce');
|
|
7
7
|
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var debounce__default = /*#__PURE__*/_interopDefault(debounce);
|
|
11
|
+
|
|
8
12
|
/**
|
|
9
13
|
* useTriggerPosition hook.
|
|
10
14
|
*
|
|
@@ -37,21 +41,19 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
37
41
|
setMenuPosition = _useState2[1];
|
|
38
42
|
|
|
39
43
|
// Memoize alignment so it only recalculates when specific props change
|
|
40
|
-
var alignment = React.useMemo(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
};
|
|
46
|
-
}, [menuAlign.align, menuAlign.position, menuAlign.customPosition]);
|
|
44
|
+
var alignment = React.useMemo(() => ({
|
|
45
|
+
align: menuAlign.align,
|
|
46
|
+
customPosition: menuAlign.customPosition,
|
|
47
|
+
position: menuAlign.position
|
|
48
|
+
}), [menuAlign.align, menuAlign.position, menuAlign.customPosition]);
|
|
47
49
|
|
|
48
50
|
/**
|
|
49
51
|
* Calculates and updates the menu position relative to the trigger.
|
|
50
52
|
* Uses requestAnimationFrame to ensure layout is stable before measuring.
|
|
51
53
|
*/
|
|
52
|
-
var updatePosition = React.useCallback(
|
|
54
|
+
var updatePosition = React.useCallback(() => {
|
|
53
55
|
if (!elementRef.current || !isElementVisible) return;
|
|
54
|
-
requestAnimationFrame(
|
|
56
|
+
requestAnimationFrame(() => {
|
|
55
57
|
var _triggerRef$current, _elementRef$current;
|
|
56
58
|
var triggerRect = triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getBoundingClientRect();
|
|
57
59
|
var elementRect = (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.getBoundingClientRect();
|
|
@@ -61,7 +63,7 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
61
63
|
var newPosition = utilities.getPosition(alignment, offset, elementRect, triggerRect, disableFlipping);
|
|
62
64
|
|
|
63
65
|
// Only update state if the position has changed
|
|
64
|
-
setMenuPosition(
|
|
66
|
+
setMenuPosition(prevPosition => {
|
|
65
67
|
if (prevPosition.left !== newPosition.left || prevPosition.top !== newPosition.top) {
|
|
66
68
|
return newPosition;
|
|
67
69
|
}
|
|
@@ -74,10 +76,8 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
74
76
|
* Debounced version of the updatePosition function used for scroll and resize events.
|
|
75
77
|
* 5ms debounce gives a balance between performance and responsiveness.
|
|
76
78
|
*/
|
|
77
|
-
var debouncedUpdatePosition = React.useMemo(
|
|
78
|
-
|
|
79
|
-
}, [updatePosition]);
|
|
80
|
-
React.useEffect(function () {
|
|
79
|
+
var debouncedUpdatePosition = React.useMemo(() => debounce__default.default(updatePosition, 5), [updatePosition]);
|
|
80
|
+
React.useEffect(() => {
|
|
81
81
|
if (disable) return;
|
|
82
82
|
var currentElement = elementRef.current;
|
|
83
83
|
|
|
@@ -91,8 +91,8 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
91
91
|
* Observers need to be more aggressively debounced to prevent loops,
|
|
92
92
|
* while event listeners (resize/scroll) should update positioning more responsively.
|
|
93
93
|
*/
|
|
94
|
-
var resizeObserver = new ResizeObserver(
|
|
95
|
-
var mutationObserver = new MutationObserver(
|
|
94
|
+
var resizeObserver = new ResizeObserver(debounce__default.default(updatePosition));
|
|
95
|
+
var mutationObserver = new MutationObserver(debounce__default.default(updatePosition));
|
|
96
96
|
|
|
97
97
|
// Observe changes in size and style/className
|
|
98
98
|
if (currentElement) {
|
|
@@ -111,7 +111,7 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
// Cleanup observers and listeners on unmount or re-render
|
|
114
|
-
return
|
|
114
|
+
return () => {
|
|
115
115
|
if (currentElement) {
|
|
116
116
|
resizeObserver.unobserve(currentElement);
|
|
117
117
|
mutationObserver.disconnect();
|
|
@@ -126,12 +126,10 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
126
126
|
* but its size is not immediately available in the first frame.
|
|
127
127
|
* A short timeout ensures we recalculate the position once layout stabilizes.
|
|
128
128
|
*/
|
|
129
|
-
React.useEffect(
|
|
129
|
+
React.useEffect(() => {
|
|
130
130
|
if (!disable && isElementVisible) {
|
|
131
131
|
var timeoutId = setTimeout(updatePosition, 10);
|
|
132
|
-
return
|
|
133
|
-
return clearTimeout(timeoutId);
|
|
134
|
-
};
|
|
132
|
+
return () => clearTimeout(timeoutId);
|
|
135
133
|
}
|
|
136
134
|
}, [isElementVisible, disable, updatePosition]);
|
|
137
135
|
|
|
@@ -139,7 +137,7 @@ var useTriggerPosition = function useTriggerPosition(triggerRef, elementRef, men
|
|
|
139
137
|
* useLayoutEffect ensures the position is recalculated during the layout phase,
|
|
140
138
|
* just after DOM mutations but before the browser paints.
|
|
141
139
|
*/
|
|
142
|
-
React.useLayoutEffect(
|
|
140
|
+
React.useLayoutEffect(() => {
|
|
143
141
|
if (!disable && isElementVisible && elementRef.current && triggerRef !== null && triggerRef !== void 0 && triggerRef.current) {
|
|
144
142
|
updatePosition();
|
|
145
143
|
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":";;;;;;;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkBA,CAC9BC,UAA8C,EAC9CC,UAAkC,EAClCC,SAAoB,EAKN;AAAA,EAAA,IAJdC,gBAAyB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI;AAAA,EAAA,IAChCG,UAAkB,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAAA,EAAA,IACvBI,OAAO,GAAAJ,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;AAAA,EAAA,IACfK,eAAe,GAAAL,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;EAEvB,IAAMM,MAAM,GAAGH,UAAU;;AAEzB;EACA,IAAAI,SAAA,GAAwCC,cAAQ,CAAW;AAAEC,MAAAA,OAAO,EAAE,KAAK;AAAEC,MAAAA,IAAI,EAAE,CAAC;AAAEC,MAAAA,GAAG,EAAE;AAAE,KAAC,CAAC;IAAAC,UAAA,GAAAC,uCAAA,CAAAN,SAAA,EAAA,CAAA,CAAA;AAAxFO,IAAAA,YAAY,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,eAAe,GAAAH,UAAA,CAAA,CAAA,CAAA;;AAEpC;AACA,EAAA,IAAMI,SAAS,GAAGC,aAAO,CACxB,OAAO;IACNC,KAAK,EAAEpB,SAAS,CAACoB,KAAK;IACtBC,cAAc,EAAErB,SAAS,CAACqB,cAAc;IACxCC,QAAQ,EAAEtB,SAAS,CAACsB;AACrB,GAAC,CAAC,EACF,CAACtB,SAAS,CAACoB,KAAK,EAAEpB,SAAS,CAACsB,QAAQ,EAAEtB,SAAS,CAACqB,cAAc,CAC/D,CAAC;;AAED;AACD;AACA;AACA;AACC,EAAA,IAAME,cAAc,GAAGC,iBAAW,CAAC,MAAM;AACxC,IAAA,IAAI,CAACzB,UAAU,CAAC0B,OAAO,IAAI,CAACxB,gBAAgB,EAAE;AAE9CyB,IAAAA,qBAAqB,CAAC,MAAM;MAAA,IAAAC,mBAAA,EAAAC,mBAAA;AAC3B,MAAA,IAAMC,WAAW,GAAG/B,UAAU,aAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAA,CAAA6B,mBAAA,GAAV7B,UAAU,CAAE2B,OAAO,cAAAE,mBAAA,KAAA,MAAA,GAAA,MAAA,GAAnBA,mBAAA,CAAqBG,qBAAqB,EAAE;AAChE,MAAA,IAAMC,WAAW,GAAA,CAAAH,mBAAA,GAAG7B,UAAU,CAAC0B,OAAO,MAAA,IAAA,IAAAG,mBAAA,KAAA,MAAA,GAAA,MAAA,GAAlBA,mBAAA,CAAoBE,qBAAqB,EAAE;;AAE/D;AACA,MAAA,IAAI,CAACC,WAAW,IAAIA,WAAW,CAACC,MAAM,KAAK,CAAC,IAAID,WAAW,CAACE,KAAK,KAAK,CAAC,EAAE;AAEzE,MAAA,IAAMC,WAAW,GAAGC,qBAAW,CAACjB,SAAS,EAAEV,MAAM,EAAEuB,WAAW,EAAEF,WAAW,EAAEtB,eAAe,CAAC;;AAE7F;MACAU,eAAe,CAAEmB,YAAY,IAAK;AACjC,QAAA,IAAIA,YAAY,CAACxB,IAAI,KAAKsB,WAAW,CAACtB,IAAI,IAAIwB,YAAY,CAACvB,GAAG,KAAKqB,WAAW,CAACrB,GAAG,EAAE;AACnF,UAAA,OAAOqB,WAAW;AACnB,QAAA;AACA,QAAA,OAAOE,YAAY;AACpB,MAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AACH,EAAA,CAAC,EAAE,CAAClB,SAAS,EAAEnB,UAAU,EAAEE,gBAAgB,EAAEO,MAAM,EAAEV,UAAU,EAAES,eAAe,CAAC,CAAC;;AAElF;AACD;AACA;AACA;AACC,EAAA,IAAM8B,uBAAuB,GAAGlB,aAAO,CAAC,MAAMmB,yBAAQ,CAACf,cAAc,EAAE,CAAC,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;AAE5FgB,EAAAA,eAAS,CAAC,MAAM;AACf,IAAA,IAAIjC,OAAO,EAAE;AAEb,IAAA,IAAMkC,cAAc,GAAGzC,UAAU,CAAC0B,OAAO;;AAEzC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,IAAMgB,cAAc,GAAG,IAAIC,cAAc,CAACJ,yBAAQ,CAACf,cAAc,CAAC,CAAC;IACnE,IAAMoB,gBAAgB,GAAG,IAAIC,gBAAgB,CAACN,yBAAQ,CAACf,cAAc,CAAC,CAAC;;AAEvE;AACA,IAAA,IAAIiB,cAAc,EAAE;AACnBC,MAAAA,cAAc,CAACI,OAAO,CAACL,cAAc,CAAC;AACtCG,MAAAA,gBAAgB,CAACE,OAAO,CAACL,cAAc,EAAE;AACxCM,QAAAA,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACnCC,QAAAA,UAAU,EAAE;AACb,OAAC,CAAC;AACH,IAAA;;AAEA;AACA,IAAA,IAAI9C,gBAAgB,EAAE;AACrBsB,MAAAA,cAAc,EAAE;AAChByB,MAAAA,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC;AAC1DW,MAAAA,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC;AAC3D,IAAA;;AAEA;AACA,IAAA,OAAO,MAAM;AACZ,MAAA,IAAIG,cAAc,EAAE;AACnBC,QAAAA,cAAc,CAACS,SAAS,CAACV,cAAc,CAAC;QACxCG,gBAAgB,CAACQ,UAAU,EAAE;AAC9B,MAAA;AACAH,MAAAA,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEf,uBAAuB,CAAC;AAC7DW,MAAAA,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEf,uBAAuB,CAAC;IAC9D,CAAC;AACF,EAAA,CAAC,EAAE,CACF/B,OAAO,EACPR,UAAU,EACVC,UAAU,EACVmB,SAAS,EACTV,MAAM,EACNP,gBAAgB,EAChBsB,cAAc,EACdc,uBAAuB,CACvB,CAAC;;AAEF;AACD;AACA;AACA;AACA;AACCE,EAAAA,eAAS,CAAC,MAAM;AACf,IAAA,IAAI,CAACjC,OAAO,IAAIL,gBAAgB,EAAE;AACjC,MAAA,IAAMoD,SAAS,GAAGC,UAAU,CAAC/B,cAAc,EAAE,EAAE,CAAC;AAEhD,MAAA,OAAO,MAAMgC,YAAY,CAACF,SAAS,CAAC;AACrC,IAAA;EACD,CAAC,EAAE,CAACpD,gBAAgB,EAAEK,OAAO,EAAEiB,cAAc,CAAC,CAAC;;AAE/C;AACD;AACA;AACA;AACCiC,EAAAA,qBAAe,CAAC,MAAM;AACrB,IAAA,IAAI,CAAClD,OAAO,IAAIL,gBAAgB,IAAIF,UAAU,CAAC0B,OAAO,IAAI3B,UAAU,aAAVA,UAAU,KAAA,MAAA,IAAVA,UAAU,CAAE2B,OAAO,EAAE;AAC9EF,MAAAA,cAAc,EAAE;MAChBG,qBAAqB,CAACH,cAAc,CAAC;AACtC,IAAA;AACD,EAAA,CAAC,EAAE,CAACtB,gBAAgB,EAAEsB,cAAc,EAAEjB,OAAO,EAAEP,UAAU,EAAED,UAAU,CAAC,CAAC;AAEvE,EAAA,OAAOkB,YAAY;AACpB;;;;"}
|
|
@@ -50,7 +50,7 @@ var getPosition = function getPosition(menuAlign, offset, elementRect, triggerRe
|
|
|
50
50
|
* @param {boolean} disableFlipping - Whether to disable flipping logic.
|
|
51
51
|
* @returns {Position} The calculated position of the menu.
|
|
52
52
|
*/
|
|
53
|
-
var positionHorizontal =
|
|
53
|
+
var positionHorizontal = (position, align, offset, elementRect, triggerRect, screenWidth, screenHeight, disableFlipping) => {
|
|
54
54
|
var isLeft = position === 'left';
|
|
55
55
|
var flipped = false;
|
|
56
56
|
var containerSide = isLeft ? triggerRect.left - elementRect.width - offset : triggerRect.right + offset;
|
|
@@ -76,9 +76,9 @@ var positionHorizontal = function positionHorizontal(position, align, offset, el
|
|
|
76
76
|
var top = calculateVerticalPosition(triggerRect, elementRect, align);
|
|
77
77
|
top = adjustForVerticalBounds(top, elementRect, screenHeight);
|
|
78
78
|
return {
|
|
79
|
-
flipped
|
|
79
|
+
flipped,
|
|
80
80
|
left: containerSide,
|
|
81
|
-
top
|
|
81
|
+
top
|
|
82
82
|
};
|
|
83
83
|
};
|
|
84
84
|
|
|
@@ -96,7 +96,7 @@ var positionHorizontal = function positionHorizontal(position, align, offset, el
|
|
|
96
96
|
* @param {boolean} disableFlipping - Whether to disable flipping logic.
|
|
97
97
|
* @returns {Position} The calculated position of the menu.
|
|
98
98
|
*/
|
|
99
|
-
var positionVertical =
|
|
99
|
+
var positionVertical = (position, align, offset, elementRect, triggerRect, screenWidth, screenHeight, disableFlipping) => {
|
|
100
100
|
var isTop = position === 'top';
|
|
101
101
|
var flipped = false;
|
|
102
102
|
var containerSide = isTop ? triggerRect.top - elementRect.height - offset : triggerRect.bottom + offset;
|
|
@@ -121,8 +121,8 @@ var positionVertical = function positionVertical(position, align, offset, elemen
|
|
|
121
121
|
}
|
|
122
122
|
var left = calculateHorizontalPosition(triggerRect, elementRect, align, screenWidth);
|
|
123
123
|
return {
|
|
124
|
-
flipped
|
|
125
|
-
left
|
|
124
|
+
flipped,
|
|
125
|
+
left,
|
|
126
126
|
top: containerSide
|
|
127
127
|
};
|
|
128
128
|
};
|
|
@@ -136,7 +136,7 @@ var positionVertical = function positionVertical(position, align, offset, elemen
|
|
|
136
136
|
* @param {number} screenWidth - The width of the viewport.
|
|
137
137
|
* @returns {number} The calculated horizontal position.
|
|
138
138
|
*/
|
|
139
|
-
var calculateHorizontalPosition =
|
|
139
|
+
var calculateHorizontalPosition = (triggerRect, elementRect, align, screenWidth) => {
|
|
140
140
|
var position;
|
|
141
141
|
switch (align) {
|
|
142
142
|
case 'start':
|
|
@@ -166,7 +166,7 @@ var calculateHorizontalPosition = function calculateHorizontalPosition(triggerRe
|
|
|
166
166
|
* @param {'start' | 'end' | 'center'} align - The vertical alignment.
|
|
167
167
|
* @returns {number} The calculated vertical position.
|
|
168
168
|
*/
|
|
169
|
-
var calculateVerticalPosition =
|
|
169
|
+
var calculateVerticalPosition = (triggerRect, elementRect, align) => {
|
|
170
170
|
switch (align) {
|
|
171
171
|
case 'start':
|
|
172
172
|
return triggerRect.top;
|
|
@@ -184,7 +184,7 @@ var calculateVerticalPosition = function calculateVerticalPosition(triggerRect,
|
|
|
184
184
|
* @param {Alignment} menuAlign - The alignment configuration for the menu.
|
|
185
185
|
* @returns {Position} The calculated custom position of the menu.
|
|
186
186
|
*/
|
|
187
|
-
var calculateCustomPosition =
|
|
187
|
+
var calculateCustomPosition = (elementRect, menuAlign) => {
|
|
188
188
|
var _menuAlign$customPosi, _menuAlign$customPosi2, _menuAlign$customPosi3, _menuAlign$customPosi4;
|
|
189
189
|
var screenHeight = window.innerHeight;
|
|
190
190
|
var screenWidth = window.innerWidth;
|
|
@@ -204,7 +204,7 @@ var calculateCustomPosition = function calculateCustomPosition(elementRect, menu
|
|
|
204
204
|
* @param {number} screenHeight - The height of the viewport.
|
|
205
205
|
* @returns {number} The adjusted vertical position.
|
|
206
206
|
*/
|
|
207
|
-
var adjustForVerticalBounds =
|
|
207
|
+
var adjustForVerticalBounds = (top, elementRect, screenHeight) => {
|
|
208
208
|
var adjustedTop = top;
|
|
209
209
|
if (isOverflowingTop(adjustedTop)) {
|
|
210
210
|
adjustedTop = screenOffset;
|
|
@@ -230,7 +230,7 @@ var adjustForVerticalBounds = function adjustForVerticalBounds(top, elementRect,
|
|
|
230
230
|
* @param {number} screenHeight - The height of the viewport.
|
|
231
231
|
* @returns {Position} The adjusted position of the menu.
|
|
232
232
|
*/
|
|
233
|
-
var adjustCustomScreenBounds =
|
|
233
|
+
var adjustCustomScreenBounds = (left, top, elementRect, screenWidth, screenHeight) => {
|
|
234
234
|
var adjustedLeft = Math.min(Math.max(left, screenOffset), screenWidth - elementRect.width - screenOffset);
|
|
235
235
|
var adjustedTop = Math.max(top, screenOffset);
|
|
236
236
|
if (adjustedTop + elementRect.height > screenHeight - screenOffset) {
|
|
@@ -249,9 +249,7 @@ var adjustCustomScreenBounds = function adjustCustomScreenBounds(left, top, elem
|
|
|
249
249
|
* @param {number} left - The left position of the menu.
|
|
250
250
|
* @returns {boolean} True if the menu overflows the left side, false otherwise.
|
|
251
251
|
*/
|
|
252
|
-
var isOverflowingLeft =
|
|
253
|
-
return left < screenOffset;
|
|
254
|
-
};
|
|
252
|
+
var isOverflowingLeft = left => left < screenOffset;
|
|
255
253
|
|
|
256
254
|
/**
|
|
257
255
|
* Checks if the menu overflows the right side of the screen.
|
|
@@ -261,9 +259,7 @@ var isOverflowingLeft = function isOverflowingLeft(left) {
|
|
|
261
259
|
* @param {number} screenWidth - The width of the viewport.
|
|
262
260
|
* @returns {boolean} True if the menu overflows the right side, false otherwise.
|
|
263
261
|
*/
|
|
264
|
-
var isOverflowingRight =
|
|
265
|
-
return left + width > screenWidth - screenOffset;
|
|
266
|
-
};
|
|
262
|
+
var isOverflowingRight = (left, width, screenWidth) => left + width > screenWidth - screenOffset;
|
|
267
263
|
|
|
268
264
|
/**
|
|
269
265
|
* Checks if the menu overflows the top side of the screen.
|
|
@@ -271,9 +267,7 @@ var isOverflowingRight = function isOverflowingRight(left, width, screenWidth) {
|
|
|
271
267
|
* @param {number} top - The top position of the menu.
|
|
272
268
|
* @returns {boolean} True if the menu overflows the top side, false otherwise.
|
|
273
269
|
*/
|
|
274
|
-
var isOverflowingTop =
|
|
275
|
-
return top < screenOffset;
|
|
276
|
-
};
|
|
270
|
+
var isOverflowingTop = top => top < screenOffset;
|
|
277
271
|
|
|
278
272
|
/**
|
|
279
273
|
* Checks if the menu overflows the bottom side of the screen.
|
|
@@ -283,9 +277,7 @@ var isOverflowingTop = function isOverflowingTop(top) {
|
|
|
283
277
|
* @param {number} screenHeight - The height of the viewport.
|
|
284
278
|
* @returns {boolean} True if the menu overflows the bottom side, false otherwise.
|
|
285
279
|
*/
|
|
286
|
-
var isOverflowingBottom =
|
|
287
|
-
return top + height > screenHeight - screenOffset;
|
|
288
|
-
};
|
|
280
|
+
var isOverflowingBottom = (top, height, screenHeight) => top + height > screenHeight - screenOffset;
|
|
289
281
|
|
|
290
282
|
exports.getPosition = getPosition;
|
|
291
283
|
//# 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":";;;;AAEA,IAAMA,YAAY,GAAG,EAAE;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CACvBC,SAAoB,EACpBC,MAAc,EACdC,WAAoB,EACpBC,WAAqB,EAEP;AAAA,EAAA,IAAAC,gBAAA;AAAA,EAAA,IADdC,eAAe,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;AAEvB,EAAA,IAAMG,WAAW,GAAGC,MAAM,CAACC,UAAU;AACrC,EAAA,IAAMC,YAAY,GAAGF,MAAM,CAACG,WAAW;EAEvC,IAAI,CAACV,WAAW,EAAE;AACjB,IAAA,OAAOW,uBAAuB,CAACZ,WAAW,EAAEF,SAAS,CAAC;AACvD,EAAA;AAEA,EAAA,IAAMe,QAAQ,GAAGf,SAAS,CAACe,QAAQ;AACnC,EAAA,IAAMC,KAAK,GAAA,CAAAZ,gBAAA,GAAGJ,SAAS,CAACgB,KAAK,MAAA,IAAA,IAAAZ,gBAAA,KAAA,MAAA,GAAAA,gBAAA,GAAI,QAAQ;AAEzC,EAAA,QAAQW,QAAQ;AACf,IAAA,KAAK,MAAM;AACX,IAAA,KAAK,OAAO;AACX,MAAA,OAAOE,kBAAkB,CACxBF,QAAQ,EACRC,KAAK,EACLf,MAAM,EACNC,WAAW,EACXC,WAAW,EACXM,WAAW,EACXG,YAAY,EACZP,eACD,CAAC;AACF,IAAA,KAAK,KAAK;AACV,IAAA,KAAK,QAAQ;AACZ,MAAA,OAAOa,gBAAgB,CACtBH,QAAQ,EACRC,KAAK,EACLf,MAAM,EACNC,WAAW,EACXC,WAAW,EACXM,WAAW,EACXG,YAAY,EACZP,eACD,CAAC;AACF,IAAA;AACC,MAAA,OAAOS,uBAAuB,CAACZ,WAAW,EAAEF,SAAS,CAAC;AACxD;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMiB,kBAAkB,GAAG,SAArBA,kBAAkBA,CACvBF,QAA0B,EAC1BC,KAAyB,EACzBf,MAAc,EACdC,WAAoB,EACpBC,WAAoB,EACpBM,WAAmB,EACnBG,YAAoB,EACpBP,eAAwB,EACV;AACd,EAAA,IAAMc,MAAM,GAAGJ,QAAQ,KAAK,MAAM;EAClC,IAAIK,OAAO,GAAG,KAAK;AAEnB,EAAA,IAAIC,aAAa,GAAGF,MAAM,GACvBhB,WAAW,CAACmB,IAAI,GAAGpB,WAAW,CAACqB,KAAK,GAAGtB,MAAM,GAC7CE,WAAW,CAACqB,KAAK,GAAGvB,MAAM;AAE7B,EAAA,IAAMwB,aAAa,GAAGC,iBAAiB,CAACL,aAAa,CAAC;EACtD,IAAMM,cAAc,GAAGC,kBAAkB,CAACP,aAAa,EAAEnB,WAAW,CAACqB,KAAK,EAAEd,WAAW,CAAC;;AAExF;EACA,IAAI,CAACJ,eAAe,EAAE;IACrB,IAAIc,MAAM,IAAIM,aAAa,EAAE;AAC5B,MAAA,IAAMI,SAAS,GAAG1B,WAAW,CAACqB,KAAK,GAAGvB,MAAM;MAC5C,IAAI,CAAC2B,kBAAkB,CAACC,SAAS,EAAE3B,WAAW,CAACqB,KAAK,EAAEd,WAAW,CAAC,EAAE;AACnEY,QAAAA,aAAa,GAAGQ,SAAS;AACzBT,QAAAA,OAAO,GAAG,IAAI;AACf,MAAA;AACD,IAAA,CAAC,MAAM,IAAI,CAACD,MAAM,IAAIQ,cAAc,EAAE;MACrC,IAAMG,QAAQ,GAAG3B,WAAW,CAACmB,IAAI,GAAGpB,WAAW,CAACqB,KAAK,GAAGtB,MAAM;AAC9D,MAAA,IAAI,CAACyB,iBAAiB,CAACI,QAAQ,CAAC,EAAE;AACjCT,QAAAA,aAAa,GAAGS,QAAQ;AACxBV,QAAAA,OAAO,GAAG,IAAI;AACf,MAAA;AACD,IAAA;AACD,EAAA;EAEA,IAAIW,GAAG,GAAGC,yBAAyB,CAAC7B,WAAW,EAAED,WAAW,EAAEc,KAAK,CAAC;EACpEe,GAAG,GAAGE,uBAAuB,CAACF,GAAG,EAAE7B,WAAW,EAAEU,YAAY,CAAC;EAE7D,OAAO;AAAEQ,IAAAA,OAAO,EAAPA,OAAO;AAAEE,IAAAA,IAAI,EAAED,aAAa;AAAEU,IAAAA,GAAG,EAAHA;GAAK;AAC7C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMb,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACrBH,QAA0B,EAC1BC,KAAyB,EACzBf,MAAc,EACdC,WAAoB,EACpBC,WAAoB,EACpBM,WAAmB,EACnBG,YAAoB,EACpBP,eAAwB,EACV;AACd,EAAA,IAAM6B,KAAK,GAAGnB,QAAQ,KAAK,KAAK;EAChC,IAAIK,OAAO,GAAG,KAAK;AAEnB,EAAA,IAAIC,aAAa,GAAGa,KAAK,GACtB/B,WAAW,CAAC4B,GAAG,GAAG7B,WAAW,CAACiC,MAAM,GAAGlC,MAAM,GAC7CE,WAAW,CAACiC,MAAM,GAAGnC,MAAM;AAE9B,EAAA,IAAMoC,YAAY,GAAGC,gBAAgB,CAACjB,aAAa,CAAC;EACpD,IAAMkB,eAAe,GAAGC,mBAAmB,CAACnB,aAAa,EAAEnB,WAAW,CAACiC,MAAM,EAAEvB,YAAY,CAAC;;AAE5F;EACA,IAAI,CAACP,eAAe,EAAE;IACrB,IAAI6B,KAAK,IAAIG,YAAY,EAAE;AAC1B,MAAA,IAAMI,UAAU,GAAGtC,WAAW,CAACiC,MAAM,GAAGnC,MAAM;MAC9C,IAAI,CAACuC,mBAAmB,CAACC,UAAU,EAAEvC,WAAW,CAACiC,MAAM,EAAEvB,YAAY,CAAC,EAAE;AACvES,QAAAA,aAAa,GAAGoB,UAAU;AAC1BrB,QAAAA,OAAO,GAAG,IAAI;AACf,MAAA;AACD,IAAA,CAAC,MAAM,IAAI,CAACc,KAAK,IAAIK,eAAe,EAAE;MACrC,IAAMG,OAAO,GAAGvC,WAAW,CAAC4B,GAAG,GAAG7B,WAAW,CAACiC,MAAM,GAAGlC,MAAM;AAC7D,MAAA,IAAI,CAACqC,gBAAgB,CAACI,OAAO,CAAC,EAAE;AAC/BrB,QAAAA,aAAa,GAAGqB,OAAO;AACvBtB,QAAAA,OAAO,GAAG,IAAI;AACf,MAAA;AACD,IAAA;AACD,EAAA;EAEA,IAAME,IAAI,GAAGqB,2BAA2B,CAACxC,WAAW,EAAED,WAAW,EAAEc,KAAK,EAAEP,WAAW,CAAC;EAEtF,OAAO;AAAEW,IAAAA,OAAO,EAAPA,OAAO;AAAEE,IAAAA,IAAI,EAAJA,IAAI;AAAES,IAAAA,GAAG,EAAEV;GAAe;AAC7C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMsB,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAChCxC,WAAoB,EACpBD,WAAoB,EACpBc,KAAiC,EACjCP,WAAmB,EACP;AACZ,EAAA,IAAIM,QAAgB;AAEpB,EAAA,QAAQC,KAAK;AACZ,IAAA,KAAK,OAAO;MACXD,QAAQ,GAAGZ,WAAW,CAACmB,IAAI;AAC3B,MAAA;AACD,IAAA,KAAK,KAAK;AACTP,MAAAA,QAAQ,GAAGZ,WAAW,CAACqB,KAAK,GAAGtB,WAAW,CAACqB,KAAK;AAChD,MAAA;AACD,IAAA;AACCR,MAAAA,QAAQ,GAAGZ,WAAW,CAACmB,IAAI,GAAG,CAACnB,WAAW,CAACoB,KAAK,GAAGrB,WAAW,CAACqB,KAAK,IAAI,CAAC;AACzE,MAAA;AACF;;AAEA;AACA,EAAA,IAAIR,QAAQ,GAAGjB,YAAY,EAAE,OAAOA,YAAY;EAChD,IAAIiB,QAAQ,GAAGb,WAAW,CAACqB,KAAK,GAAGd,WAAW,GAAGX,YAAY,EAAE;AAC9D,IAAA,OAAOW,WAAW,GAAGP,WAAW,CAACqB,KAAK,GAAGzB,YAAY;AACtD,EAAA;AACA,EAAA,OAAOiB,QAAQ;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMiB,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAC9B7B,WAAoB,EACpBD,WAAoB,EACpBc,KAAiC,EACrB;AACZ,EAAA,QAAQA,KAAK;AACZ,IAAA,KAAK,OAAO;MACX,OAAOb,WAAW,CAAC4B,GAAG;AACvB,IAAA,KAAK,KAAK;AACT,MAAA,OAAO5B,WAAW,CAACiC,MAAM,GAAGlC,WAAW,CAACiC,MAAM;AAC/C,IAAA;AACC,MAAA,OAAOhC,WAAW,CAAC4B,GAAG,GAAG,CAAC5B,WAAW,CAACgC,MAAM,GAAGjC,WAAW,CAACiC,MAAM,IAAI,CAAC;AACxE;AACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMrB,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIZ,WAAoB,EAAEF,SAAoB,EAAe;AAAA,EAAA,IAAA4C,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;AACzF,EAAA,IAAMnC,YAAY,GAAGF,MAAM,CAACG,WAAW;AACvC,EAAA,IAAMJ,WAAW,GAAGC,MAAM,CAACC,UAAU;EAErC,IAAMW,IAAI,IAAAsB,qBAAA,GAAA,CAAAC,sBAAA,GAAG7C,SAAS,CAACgD,cAAc,MAAA,IAAA,IAAAH,sBAAA,KAAA,MAAA,GAAA,MAAA,GAAxBA,sBAAA,CAA0BvB,IAAI,MAAA,IAAA,IAAAsB,qBAAA,KAAA,MAAA,GAAAA,qBAAA,GAAI,CAAC;EAChD,IAAMb,GAAG,IAAAe,sBAAA,GAAA,CAAAC,sBAAA,GAAG/C,SAAS,CAACgD,cAAc,MAAA,IAAA,IAAAD,sBAAA,KAAA,MAAA,GAAA,MAAA,GAAxBA,sBAAA,CAA0BhB,GAAG,MAAA,IAAA,IAAAe,sBAAA,KAAA,MAAA,GAAAA,sBAAA,GAAI,CAAC;AAE9C,EAAA,IAAMG,QAAQ,GAAGC,wBAAwB,CAAC5B,IAAI,EAAES,GAAG,EAAE7B,WAAW,EAAEO,WAAW,EAAEG,YAAY,CAAC;AAC5F,EAAA,OAAAuC,uCAAA,CAAAA,uCAAA,CAAA,EAAA,EAAYF,QAAQ,CAAA,EAAA,EAAA,EAAA;AAAE7B,IAAAA,OAAO,EAAE;AAAK,GAAA,CAAA;AACrC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMa,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAC5BF,GAAW,EACX7B,WAAoB,EACpBU,YAAoB,EACR;EACZ,IAAIwC,WAAW,GAAGrB,GAAG;AAErB,EAAA,IAAIO,gBAAgB,CAACc,WAAW,CAAC,EAAE;AAClCA,IAAAA,WAAW,GAAGtD,YAAY;AAC3B,EAAA;EAEA,IAAI0C,mBAAmB,CAACY,WAAW,EAAElD,WAAW,CAACiC,MAAM,EAAEvB,YAAY,CAAC,EAAE;AACvEwC,IAAAA,WAAW,GAAGxC,YAAY,GAAGV,WAAW,CAACiC,MAAM,GAAGrC,YAAY;AAC/D,EAAA;;AAEA;EACA,IAAII,WAAW,CAACiC,MAAM,GAAG,CAAC,GAAGrC,YAAY,GAAGc,YAAY,EAAE;AACzDwC,IAAAA,WAAW,GAAGtD,YAAY;AAC3B,EAAA;AAEA,EAAA,OAAOsD,WAAW;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMF,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAC7B5B,IAAY,EACZS,GAAW,EACX7B,WAAoB,EACpBO,WAAmB,EACnBG,YAAoB,EACe;EACnC,IAAMyC,YAAY,GAAGC,IAAI,CAACC,GAAG,CAC5BD,IAAI,CAACE,GAAG,CAAClC,IAAI,EAAExB,YAAY,CAAC,EAC5BW,WAAW,GAAGP,WAAW,CAACqB,KAAK,GAAGzB,YACnC,CAAC;EAED,IAAIsD,WAAW,GAAGE,IAAI,CAACE,GAAG,CAACzB,GAAG,EAAEjC,YAAY,CAAC;EAC7C,IAAIsD,WAAW,GAAGlD,WAAW,CAACiC,MAAM,GAAGvB,YAAY,GAAGd,YAAY,EAAE;AACnEsD,IAAAA,WAAW,GAAGxC,YAAY,GAAGV,WAAW,CAACiC,MAAM,GAAGrC,YAAY;AAC/D,EAAA;AAEA,EAAA,IAAII,WAAW,CAACiC,MAAM,GAAG,CAAC,GAAGrC,YAAY,GAAGc,YAAY,EAAEwC,WAAW,GAAGtD,YAAY;EAEpF,OAAO;AAAEwB,IAAAA,IAAI,EAAE+B,YAAY;AAAEtB,IAAAA,GAAG,EAAEqB;GAAa;AAChD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAM1B,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIJ,IAAY,EAAA;EAAA,OAAcA,IAAI,GAAGxB,YAAY;AAAA,CAAA;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM8B,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIN,IAAY,EAAEC,KAAa,EAAEd,WAAmB,EAAA;AAAA,EAAA,OAC3Ea,IAAI,GAAGC,KAAK,GAAGd,WAAW,GAAGX,YAAY;AAAA,CAAA;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,IAAMwC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIP,GAAW,EAAA;EAAA,OAAcA,GAAG,GAAGjC,YAAY;AAAA,CAAA;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM0C,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIT,GAAW,EAAEI,MAAc,EAAEvB,YAAoB,EAAA;AAAA,EAAA,OAC7EmB,GAAG,GAAGI,MAAM,GAAGvB,YAAY,GAAGd,YAAY;AAAA,CAAA;;;;"}
|
|
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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"}
|
|
@@ -7,13 +7,11 @@ var NOT_ALLOWED = ['class', 'className', 'style'];
|
|
|
7
7
|
*
|
|
8
8
|
* @param {AttrsObject} attrs - attrs object from a component
|
|
9
9
|
*/
|
|
10
|
-
var checkInvalidAttributes =
|
|
10
|
+
var checkInvalidAttributes = attrs => {
|
|
11
11
|
if (!attrs) return;
|
|
12
12
|
var isLocal = window.location.hostname === 'localhost' || window.location.hostname.includes('localhost');
|
|
13
13
|
if (isLocal) {
|
|
14
|
-
var found = Object.keys(attrs).filter(
|
|
15
|
-
return NOT_ALLOWED.includes(prop);
|
|
16
|
-
});
|
|
14
|
+
var found = Object.keys(attrs).filter(prop => NOT_ALLOWED.includes(prop));
|
|
17
15
|
if (found.length > 0) {
|
|
18
16
|
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.");
|
|
19
17
|
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;;;;"}
|