@muraldevkit/ui-toolkit 4.68.0-dev-NFbt.1 → 4.68.0-dev-nPeA.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -250
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js +17 -11
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +27 -25
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js +11 -5
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +12 -4
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +13 -6
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js +7 -3
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +24 -28
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +20 -20
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js +21 -21
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +20 -22
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +14 -10
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/actions.js +11 -16
- package/dist/cjs/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/cjs/components/button/helpers.js +4 -6
- package/dist/cjs/components/button/helpers.js.map +1 -1
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +8 -9
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js +14 -7
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js +18 -6
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/cjs/components/empty/default/MrlEmpty.js +8 -4
- package/dist/cjs/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js +8 -4
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js +30 -38
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +7 -3
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js +8 -7
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +9 -3
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +6 -5
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +13 -4
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +11 -7
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js +21 -14
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js +8 -4
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/cjs/components/form/hooks/useActiveColor.js +2 -2
- package/dist/cjs/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/cjs/components/form/hooks/useIsEditable.js +3 -3
- package/dist/cjs/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js +12 -5
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +19 -5
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +42 -31
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +21 -12
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +19 -11
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js +8 -7
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/index.js +4 -3
- package/dist/cjs/components/form/legacy-select/index.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +7 -3
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +11 -5
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js +3 -2
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js.map +1 -1
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js +9 -3
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectOption.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectOption.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js.map +1 -1
- package/dist/cjs/components/form/select/styles/default.js +18 -18
- package/dist/cjs/components/form/select/styles/default.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inline.js +2 -2
- package/dist/cjs/components/form/select/styles/inline.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/cjs/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -7
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +13 -9
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +31 -19
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +28 -23
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -16
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +14 -17
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +16 -9
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/cjs/components/form/utils.js +2 -4
- package/dist/cjs/components/form/utils.js.map +1 -1
- package/dist/cjs/components/grid/MrlCol/MrlCol.js +37 -46
- package/dist/cjs/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js +7 -3
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js.map +1 -1
- package/dist/cjs/components/grid/MrlRow/MrlRow.js +7 -3
- package/dist/cjs/components/grid/MrlRow/MrlRow.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js.map +1 -1
- package/dist/cjs/components/layout/MrlMain/MrlMain.js +9 -3
- package/dist/cjs/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/MrlPage.js +9 -3
- package/dist/cjs/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/index.js +3 -2
- package/dist/cjs/components/layout/MrlPage/index.js.map +1 -1
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +27 -15
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js +10 -3
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/cjs/components/layout/context/LayoutContext.js +7 -6
- package/dist/cjs/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +18 -14
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +13 -9
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/cjs/components/layout/utils.js +2 -2
- package/dist/cjs/components/layout/utils.js.map +1 -1
- package/dist/cjs/components/link/MrlLink/MrlLink.js +13 -4
- package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +16 -14
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js +13 -12
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js +16 -6
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js +16 -4
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +61 -63
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/cjs/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js +4 -3
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +24 -19
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -6
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/cjs/components/menu/context/MrlMenuContext.js +3 -2
- package/dist/cjs/components/menu/context/MrlMenuContext.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js +19 -15
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/cjs/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js +29 -25
- package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js +12 -8
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js +4 -3
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js +13 -6
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js +12 -6
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js +7 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +11 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +26 -19
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js +17 -7
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/cjs/components/notification/MrlToast/MrlToast.js +18 -9
- package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js +7 -3
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +7 -3
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js +8 -4
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +25 -17
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js +3 -2
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js +9 -5
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +8 -4
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +77 -73
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +22 -23
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/cjs/components/portal/MrlPortal.js +5 -4
- package/dist/cjs/components/portal/MrlPortal.js.map +1 -1
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +237 -263
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js +11 -5
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +12 -6
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js +17 -17
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +20 -15
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +78 -96
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js +5 -4
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/cjs/components/table/MrlTable/MrlTable.js +7 -3
- package/dist/cjs/components/table/MrlTable/MrlTable.js.map +1 -1
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js +7 -3
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js.map +1 -1
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js +12 -3
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js +13 -3
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js +7 -3
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js.map +1 -1
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js +7 -3
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js.map +1 -1
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -7
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/cjs/components/table/utils.js +4 -10
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js +16 -9
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js +12 -5
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js +15 -13
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +16 -9
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js +16 -10
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/cjs/components/text/MrlText/MrlText.js +14 -5
- package/dist/cjs/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js +14 -4
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js +17 -8
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +7 -3
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +37 -36
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +13 -4
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js +21 -19
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/cjs/components/tooltip/utils.js +3 -3
- package/dist/cjs/components/tooltip/utils.js.map +1 -1
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js +7 -6
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/cjs/hooks/useBreakpoint/index.js +5 -5
- package/dist/cjs/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/cjs/hooks/useClickOutside/index.js +4 -4
- package/dist/cjs/hooks/useClickOutside/index.js.map +1 -1
- package/dist/cjs/hooks/useCoordinate/index.js +19 -28
- package/dist/cjs/hooks/useCoordinate/index.js.map +1 -1
- package/dist/cjs/hooks/useElementDimensions/index.js +21 -33
- package/dist/cjs/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js +7 -8
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/cjs/hooks/useScrollbarInfo/index.js +11 -10
- package/dist/cjs/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/index.js +20 -22
- package/dist/cjs/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/cjs/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/cjs/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/cjs/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/cjs/utils/frameDebounce/index.js +27 -28
- package/dist/cjs/utils/frameDebounce/index.js.map +1 -1
- package/dist/cjs/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/cjs/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js.map +1 -1
- package/dist/cjs/utils/isImagePath/index.js +4 -3
- package/dist/cjs/utils/isImagePath/index.js.map +1 -1
- package/dist/cjs/utils/isImageUri/index.js +1 -1
- package/dist/cjs/utils/isImageUri/index.js.map +1 -1
- package/dist/cjs/utils/isObject/isObject.js +1 -1
- package/dist/cjs/utils/isObject/isObject.js.map +1 -1
- package/dist/cjs/utils/isTouch/index.js +1 -1
- package/dist/cjs/utils/isTouch/index.js.map +1 -1
- package/dist/cjs/utils/layers/index.js +1 -1
- package/dist/cjs/utils/layers/index.js.map +1 -1
- package/dist/cjs/utils/noop/index.js +1 -1
- package/dist/cjs/utils/noop/index.js.map +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/cjs/utils/setAttributes/setAttributes.js +11 -5
- package/dist/cjs/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/cjs/utils/trapFocus/index.js +9 -11
- package/dist/cjs/utils/trapFocus/index.js.map +1 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -234
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js +12 -10
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +22 -24
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js +6 -4
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +7 -3
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +7 -4
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +18 -26
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +14 -18
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js +16 -20
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +14 -20
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +7 -7
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/actions.js +12 -17
- package/dist/esm/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/esm/components/button/helpers.js +4 -6
- package/dist/esm/components/button/helpers.js.map +1 -1
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js +5 -7
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/esm/components/container/MrlContainer/MrlContainer.js +7 -4
- package/dist/esm/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js +13 -5
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js +28 -37
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js +5 -5
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +4 -2
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +3 -3
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +8 -3
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +2 -2
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/esm/components/form/date-picker/MrlDatePicker.js +15 -12
- package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js +2 -2
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/esm/components/form/hooks/useActiveColor.js +2 -2
- package/dist/esm/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/esm/components/form/hooks/useIsEditable.js +3 -3
- package/dist/esm/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js +6 -3
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +14 -4
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +37 -30
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +16 -11
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +14 -10
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/esm/components/form/legacy-select/context/SelectContext.js +5 -5
- package/dist/esm/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/esm/components/form/legacy-select/index.js +1 -1
- package/dist/esm/components/form/legacy-select/index.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +4 -2
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +2 -2
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +2 -2
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js +4 -2
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/esm/components/form/select/styles/default.js +18 -18
- package/dist/esm/components/form/select/styles/default.js.map +1 -1
- package/dist/esm/components/form/select/styles/inline.js +2 -2
- package/dist/esm/components/form/select/styles/inline.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/esm/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/esm/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +9 -6
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +3 -3
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +25 -17
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +21 -20
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +15 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +8 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +9 -6
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/esm/components/form/utils.js +2 -4
- package/dist/esm/components/form/utils.js.map +1 -1
- package/dist/esm/components/grid/MrlCol/MrlCol.js +31 -44
- package/dist/esm/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/esm/components/layout/MrlMain/MrlMain.js +4 -2
- package/dist/esm/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/esm/components/layout/MrlPage/MrlPage.js +4 -2
- package/dist/esm/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +19 -11
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js +5 -2
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/esm/components/layout/context/LayoutContext.js +4 -4
- package/dist/esm/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/esm/components/layout/utils.js +2 -2
- package/dist/esm/components/layout/utils.js.map +1 -1
- package/dist/esm/components/link/MrlLink/MrlLink.js +8 -3
- package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +9 -11
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js +5 -9
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js +9 -3
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js +11 -3
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js +56 -62
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/esm/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -17
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +2 -2
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js +14 -14
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/esm/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -22
- package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js +5 -5
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js +7 -4
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js +7 -5
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +6 -2
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +18 -15
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js +11 -5
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/esm/components/notification/MrlToast/MrlToast.js +14 -9
- package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js +14 -10
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js +2 -2
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js +71 -71
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +19 -21
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/esm/components/portal/MrlPortal.js +2 -2
- package/dist/esm/components/portal/MrlPortal.js.map +1 -1
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +235 -262
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js +6 -4
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +7 -5
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js +7 -11
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +8 -8
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +71 -94
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js +2 -2
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js +7 -2
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js +8 -2
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +7 -5
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/esm/components/table/utils.js +4 -10
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js +11 -8
- package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js +7 -4
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js +8 -10
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +11 -8
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js +11 -9
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/esm/components/text/MrlText/MrlText.js +8 -3
- package/dist/esm/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js +9 -3
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js +12 -7
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +31 -34
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +8 -3
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/index.js +15 -17
- package/dist/esm/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/esm/components/tooltip/utils.js +3 -3
- package/dist/esm/components/tooltip/utils.js.map +1 -1
- package/dist/esm/hooks/useAutoClose/useAutoClose.js +4 -4
- package/dist/esm/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/index.js +5 -5
- package/dist/esm/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/index.js +4 -4
- package/dist/esm/hooks/useClickOutside/index.js.map +1 -1
- package/dist/esm/hooks/useCoordinate/index.js +20 -29
- package/dist/esm/hooks/useCoordinate/index.js.map +1 -1
- package/dist/esm/hooks/useElementDimensions/index.js +19 -32
- package/dist/esm/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/esm/hooks/useHasFocusableDescendant/index.js +4 -6
- package/dist/esm/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/esm/hooks/useScrollbarInfo/index.js +8 -8
- package/dist/esm/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/index.js +14 -20
- package/dist/esm/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/esm/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/esm/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/esm/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/esm/utils/frameDebounce/index.js +28 -29
- package/dist/esm/utils/frameDebounce/index.js.map +1 -1
- package/dist/esm/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/esm/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/esm/utils/isElementScrollable/index.js +1 -1
- package/dist/esm/utils/isElementScrollable/index.js.map +1 -1
- package/dist/esm/utils/isImagePath/index.js +1 -1
- package/dist/esm/utils/isImagePath/index.js.map +1 -1
- package/dist/esm/utils/isImageUri/index.js +1 -1
- package/dist/esm/utils/isImageUri/index.js.map +1 -1
- package/dist/esm/utils/isObject/isObject.js +1 -1
- package/dist/esm/utils/isObject/isObject.js.map +1 -1
- package/dist/esm/utils/isTouch/index.js +1 -1
- package/dist/esm/utils/isTouch/index.js.map +1 -1
- package/dist/esm/utils/layers/index.js +1 -1
- package/dist/esm/utils/layers/index.js.map +1 -1
- package/dist/esm/utils/noop/index.js +1 -1
- package/dist/esm/utils/noop/index.js.map +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/esm/utils/setAttributes/setAttributes.js +7 -5
- package/dist/esm/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/esm/utils/trapFocus/index.js +9 -11
- package/dist/esm/utils/trapFocus/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlRovingTabindex.js","sources":["../../../../../src/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.tsx"],"sourcesContent":["import * as React from 'react';\n\ntype RefType = HTMLElement | HTMLDivElement | null;\n\n/**\n * Gets tabbable elements in a given bit of the DOM, excluding disabled elements\n * @param {RefType} ref - the ref of the container\n * @param {string} selector - the selector to query (should already exclude disabled elements)\n * @returns {HTMLElement[]} - an array of tabbable HTML elements\n */\nexport const getTabbableElements = (ref: RefType, selector: string): HTMLElement[] => {\n\tconst elements = ref?.querySelectorAll(selector);\n\tif (!elements) return [];\n\treturn Array.prototype.slice.call(elements);\n};\n\nconst arraysEqual = (a: (Element | null)[], b: (Element | null)[]): boolean =>\n\ta.length === b.length && a.every((el, i) => el === b[i]);\n\nexport type FocusOnInitPosition = 'first' | 'last';\nexport interface RovingPropTypes {\n\tactiveSelector?: string;\n\t/**\n\t * If true, disabled elements (with disabled attribute or aria-disabled=\"true\")\n\t * will be included in the roving tabindex. Defaults to true (disabled elements are included).\n\t */\n\tallowDisabled?: boolean;\n\tchildren: React.ReactNode;\n\t/**\n\t * delayMount is used to apply a delay to the mounting\n\t * of the RovingTabindex component. This can be helpful in\n\t * the event that a component's children have not been fully\n\t * rendered by the time the componentDidMount function is triggered\n\t */\n\tdelayMount?: number;\n\tfocusOnInit?: FocusOnInitPosition;\n\tfocusWithShortcut?: boolean;\n\tforceUpdate?: boolean;\n\thasChildRoving?: boolean;\n\tignoreElements?: string;\n\tisFocused?: boolean;\n\tonBlur?: () => void;\n\tonRefocus?: (shouldRefocus: boolean) => void;\n\torientation?: RovingOrientation;\n\tqa?: string;\n}\n\ntype RovingOrientation = 'horizontal' | 'vertical';\ntype NavigationDirection = 'forward' | 'back';\n\n/**\n * Default value for allowDisabled prop.\n * When true, disabled elements are included in the roving tabindex navigation.\n */\nconst DEFAULT_ALLOW_DISABLED = true;\n\n/**\n * CSS selector to exclude disabled elements.\n * Excludes both native disabled attribute and ARIA-compliant disabled elements.\n */\nconst DISABLED_EXCLUSION = ':not([disabled]):not([aria-disabled=\"true\"])';\n\n/**\n * CSS selector suffix to exclude nested roving tabindex elements.\n * Prevents deeply nested elements from being included in parent roving tabindex.\n */\nconst NESTED_ROVING_EXCLUSION =\n\t':not(.helpers-roving-tabindex-container .helpers-roving-tabindex-container [data-roving])';\n\n/**\n * Builds the appropriate CSS selector based on configuration.\n * @param allowDisabled - Whether to include disabled elements in the roving tabindex\n * @param hasChildRoving - Whether nested roving tabindex containers should be excluded\n * @returns CSS selector string for querying roving elements\n */\nconst buildSelector = (allowDisabled: boolean, hasChildRoving: boolean): string => {\n\tconst disabledPart = allowDisabled ? '' : DISABLED_EXCLUSION;\n\tconst nestedPart = hasChildRoving ? NESTED_ROVING_EXCLUSION : '';\n\treturn `[data-roving]${disabledPart}${nestedPart}`;\n};\n\n/**\n * Component to create a Roving Tabindex in the DOM\n * @returns {HTMLDivElement}\n */\nclass MrlRovingTabindex extends React.Component<RovingPropTypes> {\n\telements: Array<Element | null>;\n\torientation: RovingOrientation;\n\tref!: HTMLDivElement | null;\n\tselector: string;\n\n\t/**\n\t * MrlRovingTabindex class constructor\n\t * @param props - the MrlRovingTabindex props\n\t * @returns new instance\n\t */\n\tconstructor(props: RovingPropTypes) {\n\t\tsuper(props);\n\n\t\tconst { allowDisabled = DEFAULT_ALLOW_DISABLED, hasChildRoving = false, orientation } = props;\n\n\t\tthis.elements = [];\n\t\tthis.orientation = orientation || 'horizontal';\n\t\tthis.selector = buildSelector(allowDisabled, hasChildRoving);\n\t}\n\n\t/**\n\t * Runs when the MrlRovingTabindex component mounts\n\t */\n\tcomponentDidMount(): void {\n\t\tconst { delayMount } = this.props;\n\t\tif (delayMount) {\n\t\t\tsetTimeout(() => this.mount(), delayMount);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.mount();\n\t}\n\n\t/**\n\t * Runs when the MrlRovingTabindex component unmounts\n\t */\n\tcomponentWillUnmount(): void {\n\t\t// Remove focus event listener\n\t\tif (this.ref) {\n\t\t\tthis.ref.removeEventListener('focusout', this.handleFocusOut);\n\t\t}\n\t}\n\n\t/**\n\t * Runs when the MrlRovingTabindex component updates\n\t * @param {RovingPropTypes} prevProps - the props before the component updated\n\t */\n\tcomponentDidUpdate(prevProps: RovingPropTypes): void {\n\t\tconst {\n\t\t\tallowDisabled = DEFAULT_ALLOW_DISABLED,\n\t\t\tchildren,\n\t\t\tfocusWithShortcut,\n\t\t\thasChildRoving = false,\n\t\t\tisFocused,\n\t\t\tonBlur,\n\t\t\tonRefocus\n\t\t} = this.props;\n\n\t\t/**\n\t\t * If allowDisabled or hasChildRoving prop changes, rebuild the selector\n\t\t * and re-scan for elements to reflect the new configuration.\n\t\t */\n\t\tif (prevProps.allowDisabled !== allowDisabled || prevProps.hasChildRoving !== hasChildRoving) {\n\t\t\tthis.selector = buildSelector(allowDisabled, hasChildRoving);\n\t\t\tthis.setElements();\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t}\n\n\t\t/**\n\t\t * If focus is programatically moved to the MrlRovingTabindex\n\t\t * component from outside of the MrlRovingTabindex, passing\n\t\t * the prop of `onRefocus` will cause the component to go\n\t\t * through and make sure that only the active element\n\t\t * has a tabindex set to 0.\n\t\t */\n\t\tif (onRefocus) {\n\t\t\tthis.handleRefocus();\n\t\t}\n\n\t\t/**\n\t\t * When children change, re-scan for elements and update tabindex values.\n\t\t * This ensures that dynamically added/removed buttons are properly managed.\n\t\t */\n\t\tif (prevProps.children !== children && !focusWithShortcut) {\n\t\t\tthis.setElements();\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t}\n\n\t\tif (focusWithShortcut) {\n\t\t\t/**\n\t\t\t * If the component within MrlRovingTabindex shows on the page before it should\n\t\t\t * be reached with a keyboard the prop `focusWithiShortcut` can be used to\n\t\t\t * achieve that. The conditions below handle the various states that a\n\t\t\t * component can experience under this scenario.\n\t\t\t */\n\t\t\tif (!isFocused && !prevProps.isFocused) {\n\t\t\t\t/**\n\t\t\t\t * The component was not focus before and is not ready to be focused on\n\t\t\t\t */\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t}\n\n\t\t\tif (prevProps.isFocused && !isFocused) {\n\t\t\t\t/**\n\t\t\t\t * The component was focused but is not focused anymore\n\t\t\t\t */\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t\t// Only call onBlur if focus has truly left the container\n\t\t\t\tif (this.ref && !this.ref.contains(document.activeElement)) {\n\t\t\t\t\tonBlur?.();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!prevProps.isFocused && isFocused) {\n\t\t\t\t/**\n\t\t\t\t * The component was not focused before and is ready to be focused\n\t\t\t\t */\n\t\t\t\tthis.setElements();\n\t\t\t\tthis.setElementFocus(this.getActiveElement());\n\t\t\t}\n\n\t\t\tif (prevProps.children !== children && !isFocused && !prevProps.isFocused) {\n\t\t\t\t/**\n\t\t\t\t * Children changed but component is not focused\n\t\t\t\t * Ensure all new elements have tabindex=-1 to prevent Tab key access\n\t\t\t\t */\n\t\t\t\tthis.setElements();\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tprevProps.children !== children &&\n\t\t\t\tprevProps.isFocused &&\n\t\t\t\tisFocused &&\n\t\t\t\t!this.ref?.contains(document.activeElement)\n\t\t\t) {\n\t\t\t\t/**\n\t\t\t\t * While the component was focused an action was performed that\n\t\t\t\t * changed the elements of the component and focus was moved to\n\t\t\t\t * a different element on the page\n\t\t\t\t */\n\t\t\t\tthis.setElements();\n\t\t\t\tthis.setActiveElement(this.getActiveElement());\n\n\t\t\t\tif (this.getActiveElement()) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The active element is still within the roving tabindex so focus\n\t\t\t\t\t * on the element that should receive focus\n\t\t\t\t\t */\n\t\t\t\t\tthis.setElementFocus(this.getActiveElement());\n\t\t\t\t} else {\n\t\t\t\t\t/**\n\t\t\t\t\t * The active element has been moved outside of the MrlRovingTabindex\n\t\t\t\t\t * component so reset the component\n\t\t\t\t\t */\n\t\t\t\t\t// Only call onBlur if focus has truly left the container\n\t\t\t\t\tif (this.ref && !this.ref.contains(document.activeElement)) {\n\t\t\t\t\t\tonBlur?.();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\thandleRef = (ref: HTMLDivElement): HTMLDivElement => {\n\t\tthis.ref = ref;\n\t\t// Set up focus listener when ref becomes available\n\t\tif (ref) {\n\t\t\tref.addEventListener('focusout', this.handleFocusOut);\n\t\t}\n\t\treturn ref;\n\t};\n\n\t/**\n\t * Handles focus out events to detect when focus leaves the roving tabindex container\n\t * @param {FocusEvent} event - the focus out event\n\t * @returns {void}\n\t */\n\thandleFocusOut = (event: FocusEvent): void => {\n\t\tconst { onBlur } = this.props;\n\t\tconst relatedTarget = (event as FocusEvent & { relatedTarget?: HTMLElement }).relatedTarget;\n\n\t\t// Check if focus is moving to an element outside the container\n\t\tif (relatedTarget && !this.ref?.contains(relatedTarget)) {\n\t\t\t// Focus has moved from inside the container to outside\n\t\t\tonBlur?.();\n\t\t}\n\t};\n\n\t/**\n\t * Sets component array of elements\n\t * @returns {void}\n\t */\n\tsetElements = (): void => {\n\t\tif (!this.ref) return;\n\t\tthis.elements = getTabbableElements(this.ref, this.selector);\n\t};\n\n\t/**\n\t * Queries for a single element matching the selector within the container.\n\t * @param selector - CSS selector to query\n\t * @returns The matching element or null\n\t */\n\tqueryElement = (selector: string): HTMLElement | null => {\n\t\treturn this.ref?.querySelector(selector) as HTMLElement | null;\n\t};\n\n\t/**\n\t * Gets the active element based on priority order:\n\t * 1. Element matching the custom `activeSelector` prop (e.g., custom radio elements)\n\t * 2. Element with `data-roving-active` attribute (programmatically set active)\n\t * 3. First element with `data-roving` attribute (default fallback)\n\t *\n\t * Disabled elements are excluded unless `allowDisabled` is true.\n\t * @returns The active HTML element, or undefined if none found\n\t */\n\tgetActiveElement = (): HTMLElement | undefined => {\n\t\tconst { activeSelector, allowDisabled = DEFAULT_ALLOW_DISABLED } = this.props;\n\t\tconst disabledFilter = allowDisabled ? '' : DISABLED_EXCLUSION;\n\n\t\t// Priority 1: Custom active selector (e.g., for radio button groups)\n\t\t// An element with the matching activeSelector prop (example usage: custom radio elements)\n\t\tif (activeSelector) {\n\t\t\tconst customActiveElement = this.queryElement(\n\t\t\t\t`${activeSelector}[data-roving]${disabledFilter}`\n\t\t\t);\n\t\t\tif (customActiveElement) return customActiveElement;\n\t\t}\n\n\t\t// Priority 2: Programmatically marked active element\n\t\t// An element with a `data-roving-active` attribute, indicating the current active element\n\t\tconst markedActiveElement = this.queryElement(\n\t\t\t`[data-roving][data-roving-active]${disabledFilter}`\n\t\t);\n\t\tif (markedActiveElement) return markedActiveElement;\n\n\t\t// Priority 3: First roving element (uses pre-built selector with disabled handling)\n\t\t// If no active element is found, the first instance of an element with `data-roving=\"true\"`\n\t\tconst firstRovingElement = this.ref?.querySelectorAll(this.selector)[0];\n\t\treturn firstRovingElement as HTMLElement | undefined;\n\t};\n\n\t/**\n\t * Sets an element to `tabindex=0` and sets all other elements to `tabindex=-1`\n\t * @param {HTMLElement | undefined} el - the element to set as active\n\t * @returns {void}\n\t */\n\tsetActiveElement = (el: HTMLElement | undefined): void => {\n\t\tif (!el) return;\n\n\t\tthis.unsetTabbableElements();\n\t\tel.setAttribute('tabindex', '0');\n\t};\n\n\t/**\n\t * Sets focus to a specific element\n\t * @param {HTMLElement | undefined} el - the element to set in focus\n\t * @returns {void}\n\t */\n\tsetElementFocus = (el: HTMLElement | undefined): void => {\n\t\tif (!el) return;\n\n\t\t/**\n\t\t * Why data-roving-active?\n\t\t *\n\t\t * We only want to set data-roving-active when 'setElementFocus' is triggered because we don't want [tabindex=0] to be mutally exclusive with\n\t\t * [data-roving-active]. An item with [data-roving-active] can exist without having [tabindex=0] and vice versa. We only want to set [data-roving-active]\n\t\t * intentionally when a user action has occured to change it. Such as a keyboard event or moving focus manually with Javascript.\n\t\t */\n\t\tconst current = this.getActiveElement();\n\t\tif (current) current.removeAttribute('data-roving-active');\n\t\tel.setAttribute('data-roving-active', 'true');\n\n\t\tthis.setActiveElement(el);\n\t\tel.focus();\n\t};\n\n\t/**\n\t * Sets focus to an element based on a direction (`forward` or `back`)\n\t * Disabled elements are already excluded from this.elements via CSS selector\n\t * @param {NavigationDirection} direction 'forward' | 'back'\n\t * @returns {void}\n\t */\n\tsetFocusByDirection = (direction: NavigationDirection): void => {\n\t\tconst itemsLen = this.elements.length;\n\n\t\tif (itemsLen > 0) {\n\t\t\tconst currentIndex = this.elements.indexOf(document.activeElement);\n\n\t\t\tconst directionSum = direction === 'back' ? -1 : 1;\n\t\t\tlet nextIndex = currentIndex + directionSum;\n\n\t\t\tif (direction === 'back') {\n\t\t\t\tnextIndex = nextIndex < 0 ? itemsLen - 1 : nextIndex;\n\t\t\t}\n\n\t\t\tif (direction === 'forward') {\n\t\t\t\tnextIndex = nextIndex >= itemsLen ? 0 : nextIndex;\n\t\t\t}\n\n\t\t\tthis.setElementFocus(this.elements[nextIndex] as HTMLElement);\n\t\t}\n\t};\n\n\t/**\n\t * Sets all tabindex for elements of this component to -1\n\t * Also ensures disabled elements (excluded from roving tabindex) have tabindex=-1\n\t * @returns {void}\n\t */\n\tunsetTabbableElements = (): void => {\n\t\tif (!this.elements) return;\n\n\t\t// Set tabindex=-1 for all roving tabindex elements\n\t\tthis.elements.forEach((el: Element | null) => {\n\t\t\tel && el.setAttribute('tabindex', '-1');\n\t\t});\n\n\t\t// Also set tabindex=-1 for disabled elements that are excluded from roving tabindex\n\t\t// This ensures disabled elements are not tabbable even though they're not in the navigation order\n\t\tif (!this.ref || this.props.allowDisabled) return;\n\n\t\tconst disabledElements = this.ref.querySelectorAll(\n\t\t\t`[data-roving][disabled], [data-roving][aria-disabled=\"true\"]`\n\t\t);\n\t\tdisabledElements.forEach((el) => {\n\t\t\tel.setAttribute('tabindex', '-1');\n\t\t});\n\t};\n\n\t/**\n\t * Will return `false` if the orientation param matches the\n\t * orientation of the component and the actively focused element has a menu or select\n\t * @param orientation : 'horizontal' | 'vertical'\n\t * @returns boolean\n\t */\n\tcanUseArrows = (orientation: RovingOrientation): boolean => {\n\t\tconst { activeElement } = document;\n\t\tconst role = activeElement?.getAttribute('role');\n\t\tconst hasMenuOrSelect =\n\t\t\tactiveElement?.getAttribute('aria-haspopup') === 'true' ||\n\t\t\trole === 'combobox' ||\n\t\t\trole === 'option' ||\n\t\t\trole === 'listbox';\n\n\t\treturn !(this.orientation === orientation && hasMenuOrSelect);\n\t};\n\n\thandleKeyUp = (e: React.KeyboardEvent): void => {\n\t\tconst { ignoreElements } = this.props;\n\t\tconst allowKeyPress = !ignoreElements ? true : !document.activeElement?.closest(ignoreElements);\n\n\t\tconst modifierPressed = e.ctrlKey || e.metaKey || e.shiftKey;\n\n\t\tif (modifierPressed) return;\n\n\t\t/**\n\t\t * If elements within MrlRovingTabindex are added after the component mounts\n\t\t * they will not automatically be a `part of this.elements`. This checks if\n\t\t * `this.elements` contains all elements that MrlRovingTabindex should be aware\n\t\t * of and will update `this.elements` if neccessary.\n\t\t */\n\t\tconst knownTabbableElements = this.elements;\n\t\tconst allTabbableElements = getTabbableElements(this.ref, this.selector);\n\n\t\tif (\n\t\t\tknownTabbableElements.length !== allTabbableElements.length ||\n\t\t\t!arraysEqual(knownTabbableElements, allTabbableElements)\n\t\t) {\n\t\t\tthis.setElements();\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t}\n\n\t\tconst isActiveRoving = this.getActiveElement() === document.activeElement;\n\n\t\tif (allowKeyPress && isActiveRoving) {\n\t\t\te.stopPropagation();\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tif (this.canUseArrows('horizontal')) this.setFocusByDirection('forward');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tif (this.canUseArrows('horizontal')) this.setFocusByDirection('back');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tif (this.canUseArrows('vertical')) this.setFocusByDirection('forward');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tif (this.canUseArrows('vertical')) this.setFocusByDirection('back');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tthis.handleFocusedLast();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tthis.handleFocusedFirst();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\thandleFocusedFirst = (): void => this.setElementFocus(this.elements[0] as HTMLElement);\n\n\thandleFocusedLast = (): void =>\n\t\tthis.setElementFocus(this.elements[this.elements.length - 1] as HTMLElement);\n\n\thandleRefocus = (): void => {\n\t\tthis.setActiveElement(document.activeElement as HTMLElement);\n\t\tthis.props.onRefocus?.(false);\n\t};\n\n\t/**\n\t * Mounts the MrlRovingTabindex component\n\t * @returns {void}\n\t */\n\tmount(): void {\n\t\tconst { focusOnInit, focusWithShortcut, isFocused } = this.props;\n\n\t\tif (!focusWithShortcut) {\n\t\t\t// get initial set of elements for the component\n\t\t\tthis.setElements();\n\n\t\t\t// sets the first element of the component to tabindex=0 but does not move focus\n\t\t\t// this allows users to tab to the component naturally based on tab order\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t} else {\n\t\t\t// When focusWithShortcut is true, we need to set up elements\n\t\t\t// but only set tabindex values based on isFocused state\n\t\t\tthis.setElements();\n\n\t\t\tif (!isFocused) {\n\t\t\t\t// If not focused initially, set all elements to tabindex=-1\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t} else {\n\t\t\t\t// If focused initially, set the active element properly\n\t\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t\t}\n\t\t}\n\n\t\tif (focusOnInit && this.elements.length > 0) {\n\t\t\tif (focusOnInit === 'first') {\n\t\t\t\tthis.handleFocusedFirst();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.handleFocusedLast();\n\t\t}\n\t}\n\n\t/**\n\t * Renders the MrlRovingTabindex component\n\t * @returns {HTMLDivElement} - the rendered MrlRovingTabindex component\n\t */\n\trender(): JSX.Element {\n\t\t/* eslint-disable @typescript-eslint/no-unused-vars */\n\t\t// Destructure component-specific props to prevent them from being spread to the DOM\n\t\tconst {\n\t\t\tactiveSelector,\n\t\t\tallowDisabled,\n\t\t\tchildren,\n\t\t\tdelayMount,\n\t\t\tfocusOnInit,\n\t\t\tfocusWithShortcut,\n\t\t\tforceUpdate,\n\t\t\thasChildRoving,\n\t\t\tignoreElements,\n\t\t\tisFocused,\n\t\t\tonBlur,\n\t\t\tonRefocus,\n\t\t\torientation,\n\t\t\tqa,\n\t\t\t...rest\n\t\t} = this.props;\n\t\t/* eslint-enable @typescript-eslint/no-unused-vars */\n\n\t\tconst dataQa = `${qa || 'generic'}-roving`;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\t{...rest}\n\t\t\t\tclassName=\"helpers-roving-tabindex-container\"\n\t\t\t\tdata-qa={dataQa}\n\t\t\t\tonKeyUp={this.handleKeyUp}\n\t\t\t\tref={this.handleRef}\n\t\t\t\trole=\"presentation\"\n\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n\t\t\t\ttabIndex={-1}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport { MrlRovingTabindex };\n"],"names":["getTabbableElements","ref","selector","elements","querySelectorAll","Array","prototype","slice","call","arraysEqual","a","b","length","every","el","i","DEFAULT_ALLOW_DISABLED","DISABLED_EXCLUSION","NESTED_ROVING_EXCLUSION","buildSelector","allowDisabled","hasChildRoving","disabledPart","nestedPart","concat","MrlRovingTabindex","_React$Component","props","_this","_classCallCheck","_callSuper","_defineProperty","addEventListener","handleFocusOut","event","_this$ref","onBlur","relatedTarget","contains","_this$ref2","querySelector","_this$ref3","_this$props","activeSelector","_this$props$allowDisa","disabledFilter","customActiveElement","queryElement","markedActiveElement","firstRovingElement","unsetTabbableElements","setAttribute","current","getActiveElement","removeAttribute","setActiveElement","focus","direction","itemsLen","currentIndex","indexOf","document","activeElement","directionSum","nextIndex","setElementFocus","forEach","disabledElements","orientation","_document","role","getAttribute","hasMenuOrSelect","e","_document$activeEleme","ignoreElements","allowKeyPress","closest","modifierPressed","ctrlKey","metaKey","shiftKey","knownTabbableElements","allTabbableElements","setElements","isActiveRoving","stopPropagation","key","canUseArrows","setFocusByDirection","handleFocusedLast","handleFocusedFirst","_this$props$onRefocus","_this$props2","onRefocus","_props$allowDisabled","_props$hasChildRoving","_inherits","_createClass","value","componentDidMount","_this2","delayMount","setTimeout","mount","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","_this$props3","_this$props3$allowDis","children","focusWithShortcut","_this$props3$hasChild","isFocused","handleRefocus","_this$ref4","_this$props4","focusOnInit","render","_this$props5","forceUpdate","qa","rest","_objectWithoutProperties","_excluded","dataQa","React","createElement","_extends","className","onKeyUp","handleKeyUp","handleRef","tabIndex","Component"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlRovingTabindex.js","sources":["../../../../../src/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.tsx"],"sourcesContent":["import * as React from 'react';\n\ntype RefType = HTMLElement | HTMLDivElement | null;\n\n/**\n * Gets tabbable elements in a given bit of the DOM, excluding disabled elements\n * @param {RefType} ref - the ref of the container\n * @param {string} selector - the selector to query (should already exclude disabled elements)\n * @returns {HTMLElement[]} - an array of tabbable HTML elements\n */\nexport const getTabbableElements = (ref: RefType, selector: string): HTMLElement[] => {\n\tconst elements = ref?.querySelectorAll(selector);\n\tif (!elements) return [];\n\treturn Array.prototype.slice.call(elements);\n};\n\nconst arraysEqual = (a: (Element | null)[], b: (Element | null)[]): boolean =>\n\ta.length === b.length && a.every((el, i) => el === b[i]);\n\nexport type FocusOnInitPosition = 'first' | 'last';\nexport interface RovingPropTypes {\n\tactiveSelector?: string;\n\t/**\n\t * If true, disabled elements (with disabled attribute or aria-disabled=\"true\")\n\t * will be included in the roving tabindex. Defaults to true (disabled elements are included).\n\t */\n\tallowDisabled?: boolean;\n\tchildren: React.ReactNode;\n\t/**\n\t * delayMount is used to apply a delay to the mounting\n\t * of the RovingTabindex component. This can be helpful in\n\t * the event that a component's children have not been fully\n\t * rendered by the time the componentDidMount function is triggered\n\t */\n\tdelayMount?: number;\n\tfocusOnInit?: FocusOnInitPosition;\n\tfocusWithShortcut?: boolean;\n\tforceUpdate?: boolean;\n\thasChildRoving?: boolean;\n\tignoreElements?: string;\n\tisFocused?: boolean;\n\tonBlur?: () => void;\n\tonRefocus?: (shouldRefocus: boolean) => void;\n\torientation?: RovingOrientation;\n\tqa?: string;\n}\n\ntype RovingOrientation = 'horizontal' | 'vertical';\ntype NavigationDirection = 'forward' | 'back';\n\n/**\n * Default value for allowDisabled prop.\n * When true, disabled elements are included in the roving tabindex navigation.\n */\nconst DEFAULT_ALLOW_DISABLED = true;\n\n/**\n * CSS selector to exclude disabled elements.\n * Excludes both native disabled attribute and ARIA-compliant disabled elements.\n */\nconst DISABLED_EXCLUSION = ':not([disabled]):not([aria-disabled=\"true\"])';\n\n/**\n * CSS selector suffix to exclude nested roving tabindex elements.\n * Prevents deeply nested elements from being included in parent roving tabindex.\n */\nconst NESTED_ROVING_EXCLUSION =\n\t':not(.helpers-roving-tabindex-container .helpers-roving-tabindex-container [data-roving])';\n\n/**\n * Builds the appropriate CSS selector based on configuration.\n * @param allowDisabled - Whether to include disabled elements in the roving tabindex\n * @param hasChildRoving - Whether nested roving tabindex containers should be excluded\n * @returns CSS selector string for querying roving elements\n */\nconst buildSelector = (allowDisabled: boolean, hasChildRoving: boolean): string => {\n\tconst disabledPart = allowDisabled ? '' : DISABLED_EXCLUSION;\n\tconst nestedPart = hasChildRoving ? NESTED_ROVING_EXCLUSION : '';\n\treturn `[data-roving]${disabledPart}${nestedPart}`;\n};\n\n/**\n * Component to create a Roving Tabindex in the DOM\n * @returns {HTMLDivElement}\n */\nclass MrlRovingTabindex extends React.Component<RovingPropTypes> {\n\telements: Array<Element | null>;\n\torientation: RovingOrientation;\n\tref!: HTMLDivElement | null;\n\tselector: string;\n\n\t/**\n\t * MrlRovingTabindex class constructor\n\t * @param props - the MrlRovingTabindex props\n\t * @returns new instance\n\t */\n\tconstructor(props: RovingPropTypes) {\n\t\tsuper(props);\n\n\t\tconst { allowDisabled = DEFAULT_ALLOW_DISABLED, hasChildRoving = false, orientation } = props;\n\n\t\tthis.elements = [];\n\t\tthis.orientation = orientation || 'horizontal';\n\t\tthis.selector = buildSelector(allowDisabled, hasChildRoving);\n\t}\n\n\t/**\n\t * Runs when the MrlRovingTabindex component mounts\n\t */\n\tcomponentDidMount(): void {\n\t\tconst { delayMount } = this.props;\n\t\tif (delayMount) {\n\t\t\tsetTimeout(() => this.mount(), delayMount);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.mount();\n\t}\n\n\t/**\n\t * Runs when the MrlRovingTabindex component unmounts\n\t */\n\tcomponentWillUnmount(): void {\n\t\t// Remove focus event listener\n\t\tif (this.ref) {\n\t\t\tthis.ref.removeEventListener('focusout', this.handleFocusOut);\n\t\t}\n\t}\n\n\t/**\n\t * Runs when the MrlRovingTabindex component updates\n\t * @param {RovingPropTypes} prevProps - the props before the component updated\n\t */\n\tcomponentDidUpdate(prevProps: RovingPropTypes): void {\n\t\tconst {\n\t\t\tallowDisabled = DEFAULT_ALLOW_DISABLED,\n\t\t\tchildren,\n\t\t\tfocusWithShortcut,\n\t\t\thasChildRoving = false,\n\t\t\tisFocused,\n\t\t\tonBlur,\n\t\t\tonRefocus\n\t\t} = this.props;\n\n\t\t/**\n\t\t * If allowDisabled or hasChildRoving prop changes, rebuild the selector\n\t\t * and re-scan for elements to reflect the new configuration.\n\t\t */\n\t\tif (prevProps.allowDisabled !== allowDisabled || prevProps.hasChildRoving !== hasChildRoving) {\n\t\t\tthis.selector = buildSelector(allowDisabled, hasChildRoving);\n\t\t\tthis.setElements();\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t}\n\n\t\t/**\n\t\t * If focus is programatically moved to the MrlRovingTabindex\n\t\t * component from outside of the MrlRovingTabindex, passing\n\t\t * the prop of `onRefocus` will cause the component to go\n\t\t * through and make sure that only the active element\n\t\t * has a tabindex set to 0.\n\t\t */\n\t\tif (onRefocus) {\n\t\t\tthis.handleRefocus();\n\t\t}\n\n\t\t/**\n\t\t * When children change, re-scan for elements and update tabindex values.\n\t\t * This ensures that dynamically added/removed buttons are properly managed.\n\t\t */\n\t\tif (prevProps.children !== children && !focusWithShortcut) {\n\t\t\tthis.setElements();\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t}\n\n\t\tif (focusWithShortcut) {\n\t\t\t/**\n\t\t\t * If the component within MrlRovingTabindex shows on the page before it should\n\t\t\t * be reached with a keyboard the prop `focusWithiShortcut` can be used to\n\t\t\t * achieve that. The conditions below handle the various states that a\n\t\t\t * component can experience under this scenario.\n\t\t\t */\n\t\t\tif (!isFocused && !prevProps.isFocused) {\n\t\t\t\t/**\n\t\t\t\t * The component was not focus before and is not ready to be focused on\n\t\t\t\t */\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t}\n\n\t\t\tif (prevProps.isFocused && !isFocused) {\n\t\t\t\t/**\n\t\t\t\t * The component was focused but is not focused anymore\n\t\t\t\t */\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t\t// Only call onBlur if focus has truly left the container\n\t\t\t\tif (this.ref && !this.ref.contains(document.activeElement)) {\n\t\t\t\t\tonBlur?.();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!prevProps.isFocused && isFocused) {\n\t\t\t\t/**\n\t\t\t\t * The component was not focused before and is ready to be focused\n\t\t\t\t */\n\t\t\t\tthis.setElements();\n\t\t\t\tthis.setElementFocus(this.getActiveElement());\n\t\t\t}\n\n\t\t\tif (prevProps.children !== children && !isFocused && !prevProps.isFocused) {\n\t\t\t\t/**\n\t\t\t\t * Children changed but component is not focused\n\t\t\t\t * Ensure all new elements have tabindex=-1 to prevent Tab key access\n\t\t\t\t */\n\t\t\t\tthis.setElements();\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tprevProps.children !== children &&\n\t\t\t\tprevProps.isFocused &&\n\t\t\t\tisFocused &&\n\t\t\t\t!this.ref?.contains(document.activeElement)\n\t\t\t) {\n\t\t\t\t/**\n\t\t\t\t * While the component was focused an action was performed that\n\t\t\t\t * changed the elements of the component and focus was moved to\n\t\t\t\t * a different element on the page\n\t\t\t\t */\n\t\t\t\tthis.setElements();\n\t\t\t\tthis.setActiveElement(this.getActiveElement());\n\n\t\t\t\tif (this.getActiveElement()) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The active element is still within the roving tabindex so focus\n\t\t\t\t\t * on the element that should receive focus\n\t\t\t\t\t */\n\t\t\t\t\tthis.setElementFocus(this.getActiveElement());\n\t\t\t\t} else {\n\t\t\t\t\t/**\n\t\t\t\t\t * The active element has been moved outside of the MrlRovingTabindex\n\t\t\t\t\t * component so reset the component\n\t\t\t\t\t */\n\t\t\t\t\t// Only call onBlur if focus has truly left the container\n\t\t\t\t\tif (this.ref && !this.ref.contains(document.activeElement)) {\n\t\t\t\t\t\tonBlur?.();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\thandleRef = (ref: HTMLDivElement): HTMLDivElement => {\n\t\tthis.ref = ref;\n\t\t// Set up focus listener when ref becomes available\n\t\tif (ref) {\n\t\t\tref.addEventListener('focusout', this.handleFocusOut);\n\t\t}\n\t\treturn ref;\n\t};\n\n\t/**\n\t * Handles focus out events to detect when focus leaves the roving tabindex container\n\t * @param {FocusEvent} event - the focus out event\n\t * @returns {void}\n\t */\n\thandleFocusOut = (event: FocusEvent): void => {\n\t\tconst { onBlur } = this.props;\n\t\tconst relatedTarget = (event as FocusEvent & { relatedTarget?: HTMLElement }).relatedTarget;\n\n\t\t// Check if focus is moving to an element outside the container\n\t\tif (relatedTarget && !this.ref?.contains(relatedTarget)) {\n\t\t\t// Focus has moved from inside the container to outside\n\t\t\tonBlur?.();\n\t\t}\n\t};\n\n\t/**\n\t * Sets component array of elements\n\t * @returns {void}\n\t */\n\tsetElements = (): void => {\n\t\tif (!this.ref) return;\n\t\tthis.elements = getTabbableElements(this.ref, this.selector);\n\t};\n\n\t/**\n\t * Queries for a single element matching the selector within the container.\n\t * @param selector - CSS selector to query\n\t * @returns The matching element or null\n\t */\n\tqueryElement = (selector: string): HTMLElement | null => {\n\t\treturn this.ref?.querySelector(selector) as HTMLElement | null;\n\t};\n\n\t/**\n\t * Gets the active element based on priority order:\n\t * 1. Element matching the custom `activeSelector` prop (e.g., custom radio elements)\n\t * 2. Element with `data-roving-active` attribute (programmatically set active)\n\t * 3. First element with `data-roving` attribute (default fallback)\n\t *\n\t * Disabled elements are excluded unless `allowDisabled` is true.\n\t * @returns The active HTML element, or undefined if none found\n\t */\n\tgetActiveElement = (): HTMLElement | undefined => {\n\t\tconst { activeSelector, allowDisabled = DEFAULT_ALLOW_DISABLED } = this.props;\n\t\tconst disabledFilter = allowDisabled ? '' : DISABLED_EXCLUSION;\n\n\t\t// Priority 1: Custom active selector (e.g., for radio button groups)\n\t\t// An element with the matching activeSelector prop (example usage: custom radio elements)\n\t\tif (activeSelector) {\n\t\t\tconst customActiveElement = this.queryElement(\n\t\t\t\t`${activeSelector}[data-roving]${disabledFilter}`\n\t\t\t);\n\t\t\tif (customActiveElement) return customActiveElement;\n\t\t}\n\n\t\t// Priority 2: Programmatically marked active element\n\t\t// An element with a `data-roving-active` attribute, indicating the current active element\n\t\tconst markedActiveElement = this.queryElement(\n\t\t\t`[data-roving][data-roving-active]${disabledFilter}`\n\t\t);\n\t\tif (markedActiveElement) return markedActiveElement;\n\n\t\t// Priority 3: First roving element (uses pre-built selector with disabled handling)\n\t\t// If no active element is found, the first instance of an element with `data-roving=\"true\"`\n\t\tconst firstRovingElement = this.ref?.querySelectorAll(this.selector)[0];\n\t\treturn firstRovingElement as HTMLElement | undefined;\n\t};\n\n\t/**\n\t * Sets an element to `tabindex=0` and sets all other elements to `tabindex=-1`\n\t * @param {HTMLElement | undefined} el - the element to set as active\n\t * @returns {void}\n\t */\n\tsetActiveElement = (el: HTMLElement | undefined): void => {\n\t\tif (!el) return;\n\n\t\tthis.unsetTabbableElements();\n\t\tel.setAttribute('tabindex', '0');\n\t};\n\n\t/**\n\t * Sets focus to a specific element\n\t * @param {HTMLElement | undefined} el - the element to set in focus\n\t * @returns {void}\n\t */\n\tsetElementFocus = (el: HTMLElement | undefined): void => {\n\t\tif (!el) return;\n\n\t\t/**\n\t\t * Why data-roving-active?\n\t\t *\n\t\t * We only want to set data-roving-active when 'setElementFocus' is triggered because we don't want [tabindex=0] to be mutally exclusive with\n\t\t * [data-roving-active]. An item with [data-roving-active] can exist without having [tabindex=0] and vice versa. We only want to set [data-roving-active]\n\t\t * intentionally when a user action has occured to change it. Such as a keyboard event or moving focus manually with Javascript.\n\t\t */\n\t\tconst current = this.getActiveElement();\n\t\tif (current) current.removeAttribute('data-roving-active');\n\t\tel.setAttribute('data-roving-active', 'true');\n\n\t\tthis.setActiveElement(el);\n\t\tel.focus();\n\t};\n\n\t/**\n\t * Sets focus to an element based on a direction (`forward` or `back`)\n\t * Disabled elements are already excluded from this.elements via CSS selector\n\t * @param {NavigationDirection} direction 'forward' | 'back'\n\t * @returns {void}\n\t */\n\tsetFocusByDirection = (direction: NavigationDirection): void => {\n\t\tconst itemsLen = this.elements.length;\n\n\t\tif (itemsLen > 0) {\n\t\t\tconst currentIndex = this.elements.indexOf(document.activeElement);\n\n\t\t\tconst directionSum = direction === 'back' ? -1 : 1;\n\t\t\tlet nextIndex = currentIndex + directionSum;\n\n\t\t\tif (direction === 'back') {\n\t\t\t\tnextIndex = nextIndex < 0 ? itemsLen - 1 : nextIndex;\n\t\t\t}\n\n\t\t\tif (direction === 'forward') {\n\t\t\t\tnextIndex = nextIndex >= itemsLen ? 0 : nextIndex;\n\t\t\t}\n\n\t\t\tthis.setElementFocus(this.elements[nextIndex] as HTMLElement);\n\t\t}\n\t};\n\n\t/**\n\t * Sets all tabindex for elements of this component to -1\n\t * Also ensures disabled elements (excluded from roving tabindex) have tabindex=-1\n\t * @returns {void}\n\t */\n\tunsetTabbableElements = (): void => {\n\t\tif (!this.elements) return;\n\n\t\t// Set tabindex=-1 for all roving tabindex elements\n\t\tthis.elements.forEach((el: Element | null) => {\n\t\t\tel && el.setAttribute('tabindex', '-1');\n\t\t});\n\n\t\t// Also set tabindex=-1 for disabled elements that are excluded from roving tabindex\n\t\t// This ensures disabled elements are not tabbable even though they're not in the navigation order\n\t\tif (!this.ref || this.props.allowDisabled) return;\n\n\t\tconst disabledElements = this.ref.querySelectorAll(\n\t\t\t`[data-roving][disabled], [data-roving][aria-disabled=\"true\"]`\n\t\t);\n\t\tdisabledElements.forEach((el) => {\n\t\t\tel.setAttribute('tabindex', '-1');\n\t\t});\n\t};\n\n\t/**\n\t * Will return `false` if the orientation param matches the\n\t * orientation of the component and the actively focused element has a menu or select\n\t * @param orientation : 'horizontal' | 'vertical'\n\t * @returns boolean\n\t */\n\tcanUseArrows = (orientation: RovingOrientation): boolean => {\n\t\tconst { activeElement } = document;\n\t\tconst role = activeElement?.getAttribute('role');\n\t\tconst hasMenuOrSelect =\n\t\t\tactiveElement?.getAttribute('aria-haspopup') === 'true' ||\n\t\t\trole === 'combobox' ||\n\t\t\trole === 'option' ||\n\t\t\trole === 'listbox';\n\n\t\treturn !(this.orientation === orientation && hasMenuOrSelect);\n\t};\n\n\thandleKeyUp = (e: React.KeyboardEvent): void => {\n\t\tconst { ignoreElements } = this.props;\n\t\tconst allowKeyPress = !ignoreElements ? true : !document.activeElement?.closest(ignoreElements);\n\n\t\tconst modifierPressed = e.ctrlKey || e.metaKey || e.shiftKey;\n\n\t\tif (modifierPressed) return;\n\n\t\t/**\n\t\t * If elements within MrlRovingTabindex are added after the component mounts\n\t\t * they will not automatically be a `part of this.elements`. This checks if\n\t\t * `this.elements` contains all elements that MrlRovingTabindex should be aware\n\t\t * of and will update `this.elements` if neccessary.\n\t\t */\n\t\tconst knownTabbableElements = this.elements;\n\t\tconst allTabbableElements = getTabbableElements(this.ref, this.selector);\n\n\t\tif (\n\t\t\tknownTabbableElements.length !== allTabbableElements.length ||\n\t\t\t!arraysEqual(knownTabbableElements, allTabbableElements)\n\t\t) {\n\t\t\tthis.setElements();\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t}\n\n\t\tconst isActiveRoving = this.getActiveElement() === document.activeElement;\n\n\t\tif (allowKeyPress && isActiveRoving) {\n\t\t\te.stopPropagation();\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tif (this.canUseArrows('horizontal')) this.setFocusByDirection('forward');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tif (this.canUseArrows('horizontal')) this.setFocusByDirection('back');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tif (this.canUseArrows('vertical')) this.setFocusByDirection('forward');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tif (this.canUseArrows('vertical')) this.setFocusByDirection('back');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tthis.handleFocusedLast();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tthis.handleFocusedFirst();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\thandleFocusedFirst = (): void => this.setElementFocus(this.elements[0] as HTMLElement);\n\n\thandleFocusedLast = (): void =>\n\t\tthis.setElementFocus(this.elements[this.elements.length - 1] as HTMLElement);\n\n\thandleRefocus = (): void => {\n\t\tthis.setActiveElement(document.activeElement as HTMLElement);\n\t\tthis.props.onRefocus?.(false);\n\t};\n\n\t/**\n\t * Mounts the MrlRovingTabindex component\n\t * @returns {void}\n\t */\n\tmount(): void {\n\t\tconst { focusOnInit, focusWithShortcut, isFocused } = this.props;\n\n\t\tif (!focusWithShortcut) {\n\t\t\t// get initial set of elements for the component\n\t\t\tthis.setElements();\n\n\t\t\t// sets the first element of the component to tabindex=0 but does not move focus\n\t\t\t// this allows users to tab to the component naturally based on tab order\n\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t} else {\n\t\t\t// When focusWithShortcut is true, we need to set up elements\n\t\t\t// but only set tabindex values based on isFocused state\n\t\t\tthis.setElements();\n\n\t\t\tif (!isFocused) {\n\t\t\t\t// If not focused initially, set all elements to tabindex=-1\n\t\t\t\tthis.unsetTabbableElements();\n\t\t\t} else {\n\t\t\t\t// If focused initially, set the active element properly\n\t\t\t\tthis.setActiveElement(this.getActiveElement());\n\t\t\t}\n\t\t}\n\n\t\tif (focusOnInit && this.elements.length > 0) {\n\t\t\tif (focusOnInit === 'first') {\n\t\t\t\tthis.handleFocusedFirst();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.handleFocusedLast();\n\t\t}\n\t}\n\n\t/**\n\t * Renders the MrlRovingTabindex component\n\t * @returns {HTMLDivElement} - the rendered MrlRovingTabindex component\n\t */\n\trender(): JSX.Element {\n\t\t/* eslint-disable @typescript-eslint/no-unused-vars */\n\t\t// Destructure component-specific props to prevent them from being spread to the DOM\n\t\tconst {\n\t\t\tactiveSelector,\n\t\t\tallowDisabled,\n\t\t\tchildren,\n\t\t\tdelayMount,\n\t\t\tfocusOnInit,\n\t\t\tfocusWithShortcut,\n\t\t\tforceUpdate,\n\t\t\thasChildRoving,\n\t\t\tignoreElements,\n\t\t\tisFocused,\n\t\t\tonBlur,\n\t\t\tonRefocus,\n\t\t\torientation,\n\t\t\tqa,\n\t\t\t...rest\n\t\t} = this.props;\n\t\t/* eslint-enable @typescript-eslint/no-unused-vars */\n\n\t\tconst dataQa = `${qa || 'generic'}-roving`;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\t{...rest}\n\t\t\t\tclassName=\"helpers-roving-tabindex-container\"\n\t\t\t\tdata-qa={dataQa}\n\t\t\t\tonKeyUp={this.handleKeyUp}\n\t\t\t\tref={this.handleRef}\n\t\t\t\trole=\"presentation\"\n\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n\t\t\t\ttabIndex={-1}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport { MrlRovingTabindex };\n"],"names":["getTabbableElements","ref","selector","elements","querySelectorAll","Array","prototype","slice","call","arraysEqual","a","b","length","every","el","i","DEFAULT_ALLOW_DISABLED","DISABLED_EXCLUSION","NESTED_ROVING_EXCLUSION","buildSelector","allowDisabled","hasChildRoving","disabledPart","nestedPart","concat","MrlRovingTabindex","React","Component","constructor","props","_defineProperty","addEventListener","handleFocusOut","event","_this$ref","onBlur","relatedTarget","contains","_this$ref2","querySelector","_this$ref3","_this$props","activeSelector","_this$props$allowDisa","disabledFilter","customActiveElement","queryElement","markedActiveElement","firstRovingElement","unsetTabbableElements","setAttribute","current","getActiveElement","removeAttribute","setActiveElement","focus","direction","itemsLen","currentIndex","indexOf","document","activeElement","directionSum","nextIndex","setElementFocus","forEach","disabledElements","orientation","_document","role","getAttribute","hasMenuOrSelect","e","_document$activeEleme","ignoreElements","allowKeyPress","closest","modifierPressed","ctrlKey","metaKey","shiftKey","knownTabbableElements","allTabbableElements","setElements","isActiveRoving","stopPropagation","key","canUseArrows","setFocusByDirection","handleFocusedLast","handleFocusedFirst","_this$props$onRefocus","_this$props2","onRefocus","_props$allowDisabled","_props$hasChildRoving","componentDidMount","delayMount","setTimeout","mount","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","_this$props3","_this$props3$allowDis","children","focusWithShortcut","_this$props3$hasChild","isFocused","handleRefocus","_this$ref4","_this$props4","focusOnInit","render","_this$props5","forceUpdate","qa","rest","_objectWithoutProperties","_excluded","dataQa","createElement","_extends","className","onKeyUp","handleKeyUp","handleRef","tabIndex"],"mappings":"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"}
|
|
@@ -5,7 +5,10 @@ var classnames = require('classnames');
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var MrlSkeleton_module = require('./MrlSkeleton.module.scss.js');
|
|
7
7
|
|
|
8
|
-
function
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
9
12
|
var n = Object.create(null);
|
|
10
13
|
if (e) {
|
|
11
14
|
Object.keys(e).forEach(function (k) {
|
|
@@ -22,7 +25,8 @@ function _interopNamespaceDefault(e) {
|
|
|
22
25
|
return Object.freeze(n);
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
var
|
|
28
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
29
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
26
30
|
|
|
27
31
|
var _excluded = ["height", "shape", "style", "width", "className"];
|
|
28
32
|
/**
|
|
@@ -40,10 +44,12 @@ function MrlSkeleton(_ref) {
|
|
|
40
44
|
width = _ref.width,
|
|
41
45
|
className = _ref.className,
|
|
42
46
|
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
|
43
|
-
var classes =
|
|
47
|
+
var classes = classnames__default.default(MrlSkeleton_module.default['MrlSkeleton'], {
|
|
48
|
+
[MrlSkeleton_module.default["MrlSkeleton-".concat(shape)]]: shape !== 'default'
|
|
49
|
+
}, className);
|
|
44
50
|
var skeletonStyle = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, style), {}, {
|
|
45
|
-
height
|
|
46
|
-
width
|
|
51
|
+
height,
|
|
52
|
+
width
|
|
47
53
|
}, shape === 'circle' && {
|
|
48
54
|
width: height
|
|
49
55
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlSkeleton.js","sources":["../../../../../src/components/skeleton/MrlSkeleton/MrlSkeleton.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './MrlSkeleton.module.scss';\n\nexport interface MrlSkeletonProps extends React.ComponentProps<'div'> {\n\t/** An object with CSS properties */\n\tstyle?: React.CSSProperties;\n\t/** MrlSkeleton wrapper class */\n\tclassName?: string;\n\t/** The height of the MrlSkeleton component */\n\theight?: React.CSSProperties['height'];\n\t/** The width of the MrlSkeleton component */\n\twidth?: React.CSSProperties['width'];\n\t/** The shape of the Skeleton component */\n\tshape?: 'circle' | 'default';\n}\n\n/**\n * MrlSkeleton React component.\n *\n * @param props {MrlSkeletonProps} - component props\n * @returns a MrlSkeleton React component.\n */\nexport function MrlSkeleton({\n\theight = 'var(--mrl-spacing-05)',\n\tshape = 'default',\n\tstyle,\n\twidth,\n\tclassName,\n\t...rest\n}: MrlSkeletonProps): JSX.Element {\n\tconst classes = classnames(\n\t\tstyles['MrlSkeleton'],\n\t\t{\n\t\t\t[styles[`MrlSkeleton-${shape}`]]: shape !== 'default'\n\t\t},\n\t\tclassName\n\t);\n\n\tconst skeletonStyle = {\n\t\t...style,\n\t\theight,\n\t\twidth,\n\t\t...(shape === 'circle' && { width: height })\n\t};\n\n\treturn <div aria-hidden=\"true\" className={classes} style={skeletonStyle}\n\t\t{...rest} />;\n}\n"],"names":["MrlSkeleton","_ref","_ref$height","height","_ref$shape","shape","style","width","className","rest","_objectWithoutProperties","_excluded","classes","classnames","styles","
|
|
1
|
+
{"version":3,"file":"MrlSkeleton.js","sources":["../../../../../src/components/skeleton/MrlSkeleton/MrlSkeleton.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './MrlSkeleton.module.scss';\n\nexport interface MrlSkeletonProps extends React.ComponentProps<'div'> {\n\t/** An object with CSS properties */\n\tstyle?: React.CSSProperties;\n\t/** MrlSkeleton wrapper class */\n\tclassName?: string;\n\t/** The height of the MrlSkeleton component */\n\theight?: React.CSSProperties['height'];\n\t/** The width of the MrlSkeleton component */\n\twidth?: React.CSSProperties['width'];\n\t/** The shape of the Skeleton component */\n\tshape?: 'circle' | 'default';\n}\n\n/**\n * MrlSkeleton React component.\n *\n * @param props {MrlSkeletonProps} - component props\n * @returns a MrlSkeleton React component.\n */\nexport function MrlSkeleton({\n\theight = 'var(--mrl-spacing-05)',\n\tshape = 'default',\n\tstyle,\n\twidth,\n\tclassName,\n\t...rest\n}: MrlSkeletonProps): JSX.Element {\n\tconst classes = classnames(\n\t\tstyles['MrlSkeleton'],\n\t\t{\n\t\t\t[styles[`MrlSkeleton-${shape}`]]: shape !== 'default'\n\t\t},\n\t\tclassName\n\t);\n\n\tconst skeletonStyle = {\n\t\t...style,\n\t\theight,\n\t\twidth,\n\t\t...(shape === 'circle' && { width: height })\n\t};\n\n\treturn <div aria-hidden=\"true\" className={classes} style={skeletonStyle}\n\t\t{...rest} />;\n}\n"],"names":["MrlSkeleton","_ref","_ref$height","height","_ref$shape","shape","style","width","className","rest","_objectWithoutProperties","_excluded","classes","classnames","styles","concat","skeletonStyle","_objectSpread","React","createElement","_extends"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,WAAWA,CAAAC,IAAA,EAOO;AAAA,EAAA,IAAAC,WAAA,GAAAD,IAAA,CANjCE,MAAM;AAANA,IAAAA,MAAM,GAAAD,WAAA,KAAA,MAAA,GAAG,uBAAuB,GAAAA,WAAA;IAAAE,UAAA,GAAAH,IAAA,CAChCI,KAAK;AAALA,IAAAA,KAAK,GAAAD,UAAA,KAAA,MAAA,GAAG,SAAS,GAAAA,UAAA;IACjBE,KAAK,GAAAL,IAAA,CAALK,KAAK;IACLC,KAAK,GAAAN,IAAA,CAALM,KAAK;IACLC,SAAS,GAAAP,IAAA,CAATO,SAAS;AACNC,IAAAA,IAAI,GAAAC,iDAAA,CAAAT,IAAA,EAAAU,SAAA,CAAA;EAEP,IAAMC,OAAO,GAAGC,2BAAU,CACzBC,0BAAM,CAAC,aAAa,CAAC,EACrB;IACC,CAACA,0BAAM,gBAAAC,MAAA,CAAgBV,KAAK,CAAA,CAAG,GAAGA,KAAK,KAAK;GAC5C,EACDG,SACD,CAAC;AAED,EAAA,IAAMQ,aAAa,GAAAC,uCAAA,CAAAA,uCAAA,KACfX,KAAK,CAAA,EAAA,EAAA,EAAA;IACRH,MAAM;AACNI,IAAAA;GAAK,EACDF,KAAK,KAAK,QAAQ,IAAI;AAAEE,IAAAA,KAAK,EAAEJ;AAAO,GAAC,CAC3C;AAED,EAAA,oBAAOe,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAAC,iCAAA,CAAA;AAAK,IAAA,aAAA,EAAY,MAAM;AAACZ,IAAAA,SAAS,EAAEI,OAAQ;AAACN,IAAAA,KAAK,EAAEU;GAAc,EACnEP,IAAI,CAAG,CAAC;AACd;;;;"}
|
|
@@ -6,7 +6,10 @@ var React = require('react');
|
|
|
6
6
|
var MrlSkeletonText_module = require('./MrlSkeletonText.module.scss.js');
|
|
7
7
|
var setAttributes = require('../../../utils/setAttributes/setAttributes.js');
|
|
8
8
|
|
|
9
|
-
function
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
function _interopNamespace(e) {
|
|
12
|
+
if (e && e.__esModule) return e;
|
|
10
13
|
var n = Object.create(null);
|
|
11
14
|
if (e) {
|
|
12
15
|
Object.keys(e).forEach(function (k) {
|
|
@@ -23,7 +26,8 @@ function _interopNamespaceDefault(e) {
|
|
|
23
26
|
return Object.freeze(n);
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
var
|
|
29
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
30
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
31
|
|
|
28
32
|
var _excluded = ["className", "style", "width", "lines", "size"];
|
|
29
33
|
/**
|
|
@@ -42,12 +46,14 @@ function MrlSkeletonText(_ref) {
|
|
|
42
46
|
_ref$size = _ref.size,
|
|
43
47
|
size = _ref$size === void 0 ? 'medium' : _ref$size,
|
|
44
48
|
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
|
45
|
-
var classes =
|
|
46
|
-
|
|
49
|
+
var classes = classnames__default.default(MrlSkeletonText_module.default['MrlSkeletonText'], {
|
|
50
|
+
[MrlSkeletonText_module.default["MrlSkeletonText-".concat(size)]]: !!size
|
|
51
|
+
}, className);
|
|
52
|
+
var skeletonTextLines = React__namespace.useMemo(() => {
|
|
47
53
|
var skeletonStyle = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, style), {}, {
|
|
48
|
-
width
|
|
54
|
+
width
|
|
49
55
|
});
|
|
50
|
-
return new Array(lines).fill(0).map(
|
|
56
|
+
return new Array(lines).fill(0).map(() => {
|
|
51
57
|
return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers.extends({
|
|
52
58
|
"aria-hidden": "true",
|
|
53
59
|
className: classes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlSkeletonText.js","sources":["../../../../../src/components/skeleton/MrlSkeletonText/MrlSkeletonText.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './MrlSkeletonText.module.scss';\nimport { getUniqueId } from '../../../utils';\nimport { TextSizes } from '../../text/constants';\n\nexport interface MrlSkeletonTextProps extends React.ComponentProps<'div'> {\n\t/** An object of CSS properties */\n\tstyle?: React.CSSProperties;\n\t/** MrlSkeletonText wrapper class */\n\tclassName?: string;\n\t/** The width of the MrlSkeletonText component */\n\twidth?: React.CSSProperties['width'];\n\t/** Number of lines to render */\n\tlines?: number;\n\t/** Size of the text which is the same as MrlText component */\n\tsize?: TextSizes;\n}\n\n/**\n * MrlSkeletonText React component. Used to create skeleton elements as placeholders\n * for the MrlText component. It supports the same text sizes as the MrlText component.\n *\n * @param props {MrlSkeletonTextProps} - component props\n * @returns a MrlSkeleton React component.\n */\nexport function MrlSkeletonText({\n\tclassName,\n\tstyle,\n\twidth,\n\tlines = 1,\n\tsize = 'medium',\n\t...rest\n}: MrlSkeletonTextProps): JSX.Element {\n\tconst classes = classnames(\n\t\tstyles['MrlSkeletonText'],\n\t\t{\n\t\t\t[styles[`MrlSkeletonText-${size}`]]: !!size\n\t\t},\n\t\tclassName\n\t);\n\n\tconst skeletonTextLines = React.useMemo(() => {\n\t\tconst skeletonStyle = {\n\t\t\t...style,\n\t\t\twidth\n\t\t};\n\n\t\treturn new Array(lines).fill(0).map(() => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={classes}\n\t\t\t\t\tkey={getUniqueId('MrlSkeletonText-line')}\n\t\t\t\t\tstyle={skeletonStyle}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t);\n\t\t});\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [lines]);\n\n\treturn <>{skeletonTextLines}</>;\n}\n"],"names":["MrlSkeletonText","_ref","className","style","width","_ref$lines","lines","_ref$size","size","rest","_objectWithoutProperties","_excluded","classes","classnames","styles","
|
|
1
|
+
{"version":3,"file":"MrlSkeletonText.js","sources":["../../../../../src/components/skeleton/MrlSkeletonText/MrlSkeletonText.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './MrlSkeletonText.module.scss';\nimport { getUniqueId } from '../../../utils';\nimport { TextSizes } from '../../text/constants';\n\nexport interface MrlSkeletonTextProps extends React.ComponentProps<'div'> {\n\t/** An object of CSS properties */\n\tstyle?: React.CSSProperties;\n\t/** MrlSkeletonText wrapper class */\n\tclassName?: string;\n\t/** The width of the MrlSkeletonText component */\n\twidth?: React.CSSProperties['width'];\n\t/** Number of lines to render */\n\tlines?: number;\n\t/** Size of the text which is the same as MrlText component */\n\tsize?: TextSizes;\n}\n\n/**\n * MrlSkeletonText React component. Used to create skeleton elements as placeholders\n * for the MrlText component. It supports the same text sizes as the MrlText component.\n *\n * @param props {MrlSkeletonTextProps} - component props\n * @returns a MrlSkeleton React component.\n */\nexport function MrlSkeletonText({\n\tclassName,\n\tstyle,\n\twidth,\n\tlines = 1,\n\tsize = 'medium',\n\t...rest\n}: MrlSkeletonTextProps): JSX.Element {\n\tconst classes = classnames(\n\t\tstyles['MrlSkeletonText'],\n\t\t{\n\t\t\t[styles[`MrlSkeletonText-${size}`]]: !!size\n\t\t},\n\t\tclassName\n\t);\n\n\tconst skeletonTextLines = React.useMemo(() => {\n\t\tconst skeletonStyle = {\n\t\t\t...style,\n\t\t\twidth\n\t\t};\n\n\t\treturn new Array(lines).fill(0).map(() => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={classes}\n\t\t\t\t\tkey={getUniqueId('MrlSkeletonText-line')}\n\t\t\t\t\tstyle={skeletonStyle}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t);\n\t\t});\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [lines]);\n\n\treturn <>{skeletonTextLines}</>;\n}\n"],"names":["MrlSkeletonText","_ref","className","style","width","_ref$lines","lines","_ref$size","size","rest","_objectWithoutProperties","_excluded","classes","classnames","styles","concat","skeletonTextLines","React","useMemo","skeletonStyle","_objectSpread","Array","fill","map","createElement","_extends","key","getUniqueId","Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,eAAeA,CAAAC,IAAA,EAOO;AAAA,EAAA,IANrCC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAAAC,UAAA,GAAAJ,IAAA,CACLK,KAAK;AAALA,IAAAA,KAAK,GAAAD,UAAA,KAAA,MAAA,GAAG,CAAC,GAAAA,UAAA;IAAAE,SAAA,GAAAN,IAAA,CACTO,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,SAAA;AACZE,IAAAA,IAAI,GAAAC,iDAAA,CAAAT,IAAA,EAAAU,SAAA,CAAA;EAEP,IAAMC,OAAO,GAAGC,2BAAU,CACzBC,8BAAM,CAAC,iBAAiB,CAAC,EACzB;IACC,CAACA,8BAAM,oBAAAC,MAAA,CAAoBP,IAAI,CAAA,CAAG,GAAG,CAAC,CAACA;GACvC,EACDN,SACD,CAAC;AAED,EAAA,IAAMc,iBAAiB,GAAGC,gBAAK,CAACC,OAAO,CAAC,MAAM;AAC7C,IAAA,IAAMC,aAAa,GAAAC,uCAAA,CAAAA,uCAAA,KACfjB,KAAK,CAAA,EAAA,EAAA,EAAA;AACRC,MAAAA;KAAK,CACL;AAED,IAAA,OAAO,IAAIiB,KAAK,CAACf,KAAK,CAAC,CAACgB,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC,MAAM;AACzC,MAAA,oBACCN,gBAAA,CAAAO,aAAA,CAAA,KAAA,EAAAC,iCAAA,CAAA;AACC,QAAA,aAAA,EAAY,MAAM;AAClBvB,QAAAA,SAAS,EAAEU,OAAQ;AACnBc,QAAAA,GAAG,EAAEC,yBAAW,CAAC,sBAAsB,CAAE;AACzCxB,QAAAA,KAAK,EAAEgB;OAAc,EACjBV,IAAI,CACR,CAAC;AAEJ,IAAA,CAAC,CAAC;AACF;AACD,EAAA,CAAC,EAAE,CAACH,KAAK,CAAC,CAAC;EAEX,oBAAOW,gBAAA,CAAAO,aAAA,CAAAP,gBAAA,CAAAW,QAAA,EAAA,IAAA,EAAGZ,iBAAoB,CAAC;AAChC;;;;"}
|
|
@@ -9,7 +9,10 @@ var setAttributes = require('../../../utils/setAttributes/setAttributes.js');
|
|
|
9
9
|
var isObject = require('../../../utils/isObject/isObject.js');
|
|
10
10
|
var getCamelCase = require('../../../utils/getCamelCase/getCamelCase.js');
|
|
11
11
|
|
|
12
|
-
function
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
function _interopNamespace(e) {
|
|
15
|
+
if (e && e.__esModule) return e;
|
|
13
16
|
var n = Object.create(null);
|
|
14
17
|
if (e) {
|
|
15
18
|
Object.keys(e).forEach(function (k) {
|
|
@@ -26,7 +29,8 @@ function _interopNamespaceDefault(e) {
|
|
|
26
29
|
return Object.freeze(n);
|
|
27
30
|
}
|
|
28
31
|
|
|
29
|
-
var React__namespace = /*#__PURE__*/
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
33
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
30
34
|
|
|
31
35
|
var _excluded = ["className", "size", "svg", "path", "attrs", "isClone", "lazyLoad"];
|
|
32
36
|
|
|
@@ -40,7 +44,7 @@ var _excluded = ["className", "size", "svg", "path", "attrs", "isClone", "lazyLo
|
|
|
40
44
|
* @param {SvgPropTypes} props the props for your MrlSvg
|
|
41
45
|
* @returns {React.ReactElement} a rendered SVG
|
|
42
46
|
*/
|
|
43
|
-
var MrlSvg = /*#__PURE__*/React__namespace.memo(
|
|
47
|
+
var MrlSvg = /*#__PURE__*/React__namespace.memo(props => {
|
|
44
48
|
var className = props.className,
|
|
45
49
|
_props$size = props.size,
|
|
46
50
|
size = _props$size === void 0 ? 'medium' : _props$size,
|
|
@@ -60,7 +64,7 @@ var MrlSvg = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
60
64
|
* @param {Record<string, unknown>} svgData - the SVG code
|
|
61
65
|
* @returns {boolean} - a boolean for whether or not the string is valid JSON
|
|
62
66
|
*/
|
|
63
|
-
var isValidJSON =
|
|
67
|
+
var isValidJSON = svgData => {
|
|
64
68
|
try {
|
|
65
69
|
isObject.isObject(svgData);
|
|
66
70
|
} catch (err) {
|
|
@@ -97,7 +101,7 @@ var MrlSvg = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
97
101
|
*
|
|
98
102
|
* @todo: Create react component for DS Icons and remove this code
|
|
99
103
|
*/
|
|
100
|
-
Object.keys(tagAttributes).forEach(
|
|
104
|
+
Object.keys(tagAttributes).forEach(key => {
|
|
101
105
|
var newKey = key;
|
|
102
106
|
if (key === 'class') {
|
|
103
107
|
newKey = 'className';
|
|
@@ -116,20 +120,16 @@ var MrlSvg = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
116
120
|
*/
|
|
117
121
|
if (Tag === 'svg') {
|
|
118
122
|
return /*#__PURE__*/React__namespace.createElement("span", {
|
|
119
|
-
className:
|
|
123
|
+
className: classnames__default.default(MrlSvg_module.default.MrlSvgContainer, MrlSvg_module.default["MrlSvgContainer--".concat(size)], 'MrlSvgContainer', classes),
|
|
120
124
|
slot: slot
|
|
121
125
|
}, /*#__PURE__*/React__namespace.createElement("svg", _rollupPluginBabelHelpers.extends({}, tagAttributes, userAttributes, remainingProps, {
|
|
122
|
-
className:
|
|
126
|
+
className: classnames__default.default(MrlSvg_module.default.MrlSvg, MrlSvg_module.default["MrlSvg--".concat(size)], 'mrl-svg'),
|
|
123
127
|
key: setAttributes.getUniqueId()
|
|
124
|
-
}), Array.isArray(svgObj.children) && svgObj.children.map(
|
|
125
|
-
return _parseSVG(child);
|
|
126
|
-
})));
|
|
128
|
+
}), Array.isArray(svgObj.children) && svgObj.children.map(child => _parseSVG(child))));
|
|
127
129
|
}
|
|
128
130
|
return /*#__PURE__*/React__namespace.createElement(Tag, _rollupPluginBabelHelpers.extends({}, tagAttributes, {
|
|
129
131
|
key: setAttributes.getUniqueId()
|
|
130
|
-
}), Array.isArray(svgObj.children) && svgObj.children.map(
|
|
131
|
-
return _parseSVG(child);
|
|
132
|
-
}));
|
|
132
|
+
}), Array.isArray(svgObj.children) && svgObj.children.map(child => _parseSVG(child)));
|
|
133
133
|
};
|
|
134
134
|
|
|
135
135
|
// We do not want to re-render the icon if it's a cloned version
|
|
@@ -151,12 +151,12 @@ var MrlSvg = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
151
151
|
// Handle path prop with img tag (only if svg is not provided)
|
|
152
152
|
if (path && !svg) {
|
|
153
153
|
return /*#__PURE__*/React__namespace.createElement("span", {
|
|
154
|
-
className:
|
|
154
|
+
className: classnames__default.default(MrlSvg_module.default.MrlSvgContainer, MrlSvg_module.default["MrlSvgContainer--".concat(size)], 'MrlSvgContainer', className)
|
|
155
155
|
}, /*#__PURE__*/React__namespace.createElement("img", {
|
|
156
156
|
src: path,
|
|
157
157
|
alt: "",
|
|
158
158
|
"aria-hidden": "true",
|
|
159
|
-
className:
|
|
159
|
+
className: classnames__default.default(MrlSvg_module.default.MrlSvg, MrlSvg_module.default["MrlSvg--".concat(size)], 'mrl-svg'),
|
|
160
160
|
loading: lazyLoad ? 'lazy' : 'eager'
|
|
161
161
|
}));
|
|
162
162
|
}
|
|
@@ -167,8 +167,8 @@ var MrlSvg = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
167
167
|
}
|
|
168
168
|
var slot = attrs.slot;
|
|
169
169
|
delete attrs.slot;
|
|
170
|
-
var allClasses =
|
|
171
|
-
delete attrs
|
|
170
|
+
var allClasses = classnames__default.default(attrs.class, attrs.className, className);
|
|
171
|
+
delete attrs.class;
|
|
172
172
|
delete attrs.className;
|
|
173
173
|
var attributes = setAttributes.setAttributes(attrs, constants.svgDefaults.attrs);
|
|
174
174
|
var isSvgString = typeof svg === 'string';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlSvg.js","sources":["../../../../../src/components/svg/MrlSvg/MrlSvg.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport {\n\tMrlComponentProps,\n\ttype AttrsObject,\n\tisObject,\n\tgetCamelCase,\n\tgetUniqueId,\n\tsetAttributes\n} from '../../../utils';\nimport { svgDefaults, SVGSize, SVGObject } from '../constants';\nimport styles from './MrlSvg.module.scss';\n\nexport type DSIcons = typeof import('@muraldevkit/ds-icons');\nexport type DSPictograms = typeof import('@muraldevkit/ds-pictograms');\nexport type DSIconType = DSIcons[keyof DSIcons] | DSPictograms[keyof DSPictograms];\n\n// If we dont omit style from MrlComponentProps and re-add it in SvgPropTypes, we get an error.\nexport interface SvgPropTypes\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tOmit<React.ComponentProps<'svg'>, 'ref'> {\n\t/** Any additional classes to style the SVG's container */\n\tclassName?: string;\n\t/**\n\t * URL path to a static SVG file. Must provide either path or svg prop.\n\t */\n\tpath?: string;\n\t/** Enable lazy loading when a path is provided. */\n\tlazyLoad?: boolean;\n\tisClone?: boolean;\n\t/** The size of an SVG Component */\n\tsize?: SVGSize;\n\t/**\n\t * A object of CSS properties. Please use style sparingly, and only in cases where your\n\t * needs can not be met by passing a class to the component.\n\t */\n\tstyle?: Record<string, unknown>;\n\t/** The SVG object to parse into an HTML SVG element. Must provide either path or svg prop. */\n\tsvg?: DSIconType;\n}\n\n/**\n * Creating and exporting component class for Mural SVG\n *\n * Supports both static SVG objects and dynamic URL loading.\n *\n * @param {SvgPropTypes} props the props for your MrlSvg\n * @returns {React.ReactElement} a rendered SVG\n */\nexport const MrlSvg = React.memo((props: SvgPropTypes): React.ReactElement => {\n\tconst {\n\t\tclassName,\n\t\tsize = 'medium',\n\t\tsvg,\n\t\tpath,\n\t\tattrs = {},\n\t\tisClone = false,\n\t\tlazyLoad,\n\t\t...remainingProps\n\t} = props;\n\n\tconst GENERIC_WARNING_MESSAGE = 'There has been an issue rendering your SVG!';\n\n\t/**\n\t * Checks to ensure a string is valid JSON before parsing\n\t *\n\t * @param {Record<string, unknown>} svgData - the SVG code\n\t * @returns {boolean} - a boolean for whether or not the string is valid JSON\n\t */\n\tconst isValidJSON = (svgData: Record<string, unknown>): boolean => {\n\t\ttry {\n\t\t\tisObject(svgData);\n\t\t} catch (err) {\n\t\t\t// This is not valid JSON\n\t\t\tconsole.warn(`${GENERIC_WARNING_MESSAGE} Invalid SVG code:`);\n\t\t\tconsole.warn(svgData);\n\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Parses a JS Object of SVG code into an SVG HTML Element\n\t *\n\t * @param {SVGObject} svgObj - a JS object of SVG code\n\t * @param {AttrsObject} userAttributes - an optional set of attributes to be applied to the SVG\n\t * @param {string} classes - an optional object of classes to be applied to the SVG\n\t * @param {string} slot - an optional slot attribute for use in web components\n\t * @returns {React.ReactElement} - an SVG HTML Element\n\t */\n\tconst parseSVG = (\n\t\tsvgObj: SVGObject,\n\t\tuserAttributes = {},\n\t\tclasses?: string,\n\t\tslot?: string\n\t): React.ReactElement => {\n\t\tif (svgObj.type === 'text') {\n\t\t\treturn svgObj.value;\n\t\t}\n\n\t\tconst Tag = svgObj.name;\n\t\tconst tagAttributes = svgObj.attributes || {};\n\n\t\t/**\n\t\t * Formats SVG attributes to from kebab case to camel case for React syntax\n\t\t * Note: this excudes `data-` attributes\n\t\t *\n\t\t * @todo: Create react component for DS Icons and remove this code\n\t\t */\n\t\tObject.keys(tagAttributes).forEach((key) => {\n\t\t\tlet newKey = key;\n\t\t\tif (key === 'class') {\n\t\t\t\tnewKey = 'className';\n\t\t\t} else if (key.slice(0, 5) !== 'data-') {\n\t\t\t\tnewKey = getCamelCase(key);\n\t\t\t}\n\n\t\t\ttagAttributes[newKey] = tagAttributes[key];\n\n\t\t\tif (key !== newKey) {\n\t\t\t\tdelete tagAttributes[key];\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * We render the `svg` element explicitly here to ensure that the user applied\n\t\t * attributes and classes only get applied to the `svg` element.\n\t\t */\n\t\tif (Tag === 'svg') {\n\t\t\treturn (\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tstyles.MrlSvgContainer,\n\t\t\t\t\t\tstyles[`MrlSvgContainer--${size}`],\n\t\t\t\t\t\t'MrlSvgContainer',\n\t\t\t\t\t\tclasses\n\t\t\t\t\t)}\n\t\t\t\t\tslot={slot}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\t{...tagAttributes}\n\t\t\t\t\t\t{...userAttributes}\n\t\t\t\t\t\t{...remainingProps}\n\t\t\t\t\t\tclassName={cn(styles.MrlSvg, styles[`MrlSvg--${size}`], 'mrl-svg')}\n\t\t\t\t\t\tkey={getUniqueId()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{Array.isArray(svgObj.children) &&\n\t\t\t\t\t\t\tsvgObj.children.map((child: Record<string, unknown>) => parseSVG(child))}\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Tag {...tagAttributes} key={getUniqueId()}>\n\t\t\t\t{Array.isArray(svgObj.children) &&\n\t\t\t\t\tsvgObj.children.map((child: Record<string, unknown>) => parseSVG(child))}\n\t\t\t</Tag>\n\t\t);\n\t};\n\n\t// We do not want to re-render the icon if it's a cloned version\n\tif (isClone) {\n\t\treturn <span></span>;\n\t}\n\n\t// Validation: must provide either path or svg\n\tif (!path && !svg) {\n\t\tconsole.warn(`${GENERIC_WARNING_MESSAGE} Must provide either \"path\" or \"svg\" prop`);\n\t\treturn <span></span>;\n\t}\n\n\t// Validation: cannot provide both path and svg\n\tif (path && svg) {\n\t\tconsole.warn(\n\t\t\t`${GENERIC_WARNING_MESSAGE} Cannot provide both \"path\" and \"svg\" props. Using \"svg\" prop.`\n\t\t);\n\t}\n\n\t// Handle path prop with img tag (only if svg is not provided)\n\tif (path && !svg) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\tstyles.MrlSvgContainer,\n\t\t\t\t\tstyles[`MrlSvgContainer--${size}`],\n\t\t\t\t\t'MrlSvgContainer',\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\tsrc={path}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={cn(styles.MrlSvg, styles[`MrlSvg--${size}`], 'mrl-svg')}\n\t\t\t\t\tloading={lazyLoad ? 'lazy' : 'eager'}\n\t\t\t\t/>\n\t\t\t</span>\n\t\t);\n\t}\n\n\t// don't render if SVG value is not defined\n\tif (!svg) {\n\t\treturn <span></span>;\n\t}\n\n\tconst slot = attrs.slot;\n\tdelete attrs.slot;\n\n\tconst allClasses = cn(attrs.class, attrs.className, className);\n\tdelete attrs.class;\n\tdelete attrs.className;\n\n\tconst attributes = setAttributes(attrs, svgDefaults.attrs);\n\n\tconst isSvgString = typeof svg === 'string';\n\n\tlet svgObject: SVGObject;\n\n\tif (isSvgString) {\n\t\ttry {\n\t\t\tconst parsedSvg = JSON.parse(svg);\n\t\t\tif (!isValidJSON(parsedSvg)) {\n\t\t\t\treturn <span></span>;\n\t\t\t}\n\t\t\tsvgObject = parsedSvg;\n\t\t} catch (err) {\n\t\t\tconsole.warn(`${GENERIC_WARNING_MESSAGE} Invalid JSON in svg prop:`, err);\n\t\t\treturn <span></span>;\n\t\t}\n\t} else {\n\t\tsvgObject = svg;\n\t}\n\n\treturn parseSVG(svgObject, attributes, allClasses, slot);\n});\n\nMrlSvg.displayName = 'MrlSvg';\n"],"names":["MrlSvg","React","memo","props","className","_props$size","size","svg","path","_props$attrs","attrs","_props$isClone","isClone","lazyLoad","remainingProps","_objectWithoutProperties","_excluded","GENERIC_WARNING_MESSAGE","isValidJSON","svgData","isObject","err","console","warn","concat","parseSVG","svgObj","userAttributes","arguments","length","undefined","classes","slot","type","value","Tag","name","tagAttributes","attributes","Object","keys","forEach","key","newKey","slice","getCamelCase","createElement","cn","styles","MrlSvgContainer","_extends","getUniqueId","Array","isArray","children","map","child","src","alt","loading","allClasses","setAttributes","svgDefaults","isSvgString","svgObject","parsedSvg","JSON","parse","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlSvg.js","sources":["../../../../../src/components/svg/MrlSvg/MrlSvg.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport {\n\tMrlComponentProps,\n\ttype AttrsObject,\n\tisObject,\n\tgetCamelCase,\n\tgetUniqueId,\n\tsetAttributes\n} from '../../../utils';\nimport { svgDefaults, SVGSize, SVGObject } from '../constants';\nimport styles from './MrlSvg.module.scss';\n\nexport type DSIcons = typeof import('@muraldevkit/ds-icons');\nexport type DSPictograms = typeof import('@muraldevkit/ds-pictograms');\nexport type DSIconType = DSIcons[keyof DSIcons] | DSPictograms[keyof DSPictograms];\n\n// If we dont omit style from MrlComponentProps and re-add it in SvgPropTypes, we get an error.\nexport interface SvgPropTypes\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tOmit<React.ComponentProps<'svg'>, 'ref'> {\n\t/** Any additional classes to style the SVG's container */\n\tclassName?: string;\n\t/**\n\t * URL path to a static SVG file. Must provide either path or svg prop.\n\t */\n\tpath?: string;\n\t/** Enable lazy loading when a path is provided. */\n\tlazyLoad?: boolean;\n\tisClone?: boolean;\n\t/** The size of an SVG Component */\n\tsize?: SVGSize;\n\t/**\n\t * A object of CSS properties. Please use style sparingly, and only in cases where your\n\t * needs can not be met by passing a class to the component.\n\t */\n\tstyle?: Record<string, unknown>;\n\t/** The SVG object to parse into an HTML SVG element. Must provide either path or svg prop. */\n\tsvg?: DSIconType;\n}\n\n/**\n * Creating and exporting component class for Mural SVG\n *\n * Supports both static SVG objects and dynamic URL loading.\n *\n * @param {SvgPropTypes} props the props for your MrlSvg\n * @returns {React.ReactElement} a rendered SVG\n */\nexport const MrlSvg = React.memo((props: SvgPropTypes): React.ReactElement => {\n\tconst {\n\t\tclassName,\n\t\tsize = 'medium',\n\t\tsvg,\n\t\tpath,\n\t\tattrs = {},\n\t\tisClone = false,\n\t\tlazyLoad,\n\t\t...remainingProps\n\t} = props;\n\n\tconst GENERIC_WARNING_MESSAGE = 'There has been an issue rendering your SVG!';\n\n\t/**\n\t * Checks to ensure a string is valid JSON before parsing\n\t *\n\t * @param {Record<string, unknown>} svgData - the SVG code\n\t * @returns {boolean} - a boolean for whether or not the string is valid JSON\n\t */\n\tconst isValidJSON = (svgData: Record<string, unknown>): boolean => {\n\t\ttry {\n\t\t\tisObject(svgData);\n\t\t} catch (err) {\n\t\t\t// This is not valid JSON\n\t\t\tconsole.warn(`${GENERIC_WARNING_MESSAGE} Invalid SVG code:`);\n\t\t\tconsole.warn(svgData);\n\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Parses a JS Object of SVG code into an SVG HTML Element\n\t *\n\t * @param {SVGObject} svgObj - a JS object of SVG code\n\t * @param {AttrsObject} userAttributes - an optional set of attributes to be applied to the SVG\n\t * @param {string} classes - an optional object of classes to be applied to the SVG\n\t * @param {string} slot - an optional slot attribute for use in web components\n\t * @returns {React.ReactElement} - an SVG HTML Element\n\t */\n\tconst parseSVG = (\n\t\tsvgObj: SVGObject,\n\t\tuserAttributes = {},\n\t\tclasses?: string,\n\t\tslot?: string\n\t): React.ReactElement => {\n\t\tif (svgObj.type === 'text') {\n\t\t\treturn svgObj.value;\n\t\t}\n\n\t\tconst Tag = svgObj.name;\n\t\tconst tagAttributes = svgObj.attributes || {};\n\n\t\t/**\n\t\t * Formats SVG attributes to from kebab case to camel case for React syntax\n\t\t * Note: this excudes `data-` attributes\n\t\t *\n\t\t * @todo: Create react component for DS Icons and remove this code\n\t\t */\n\t\tObject.keys(tagAttributes).forEach((key) => {\n\t\t\tlet newKey = key;\n\t\t\tif (key === 'class') {\n\t\t\t\tnewKey = 'className';\n\t\t\t} else if (key.slice(0, 5) !== 'data-') {\n\t\t\t\tnewKey = getCamelCase(key);\n\t\t\t}\n\n\t\t\ttagAttributes[newKey] = tagAttributes[key];\n\n\t\t\tif (key !== newKey) {\n\t\t\t\tdelete tagAttributes[key];\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * We render the `svg` element explicitly here to ensure that the user applied\n\t\t * attributes and classes only get applied to the `svg` element.\n\t\t */\n\t\tif (Tag === 'svg') {\n\t\t\treturn (\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tstyles.MrlSvgContainer,\n\t\t\t\t\t\tstyles[`MrlSvgContainer--${size}`],\n\t\t\t\t\t\t'MrlSvgContainer',\n\t\t\t\t\t\tclasses\n\t\t\t\t\t)}\n\t\t\t\t\tslot={slot}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\t{...tagAttributes}\n\t\t\t\t\t\t{...userAttributes}\n\t\t\t\t\t\t{...remainingProps}\n\t\t\t\t\t\tclassName={cn(styles.MrlSvg, styles[`MrlSvg--${size}`], 'mrl-svg')}\n\t\t\t\t\t\tkey={getUniqueId()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{Array.isArray(svgObj.children) &&\n\t\t\t\t\t\t\tsvgObj.children.map((child: Record<string, unknown>) => parseSVG(child))}\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Tag {...tagAttributes} key={getUniqueId()}>\n\t\t\t\t{Array.isArray(svgObj.children) &&\n\t\t\t\t\tsvgObj.children.map((child: Record<string, unknown>) => parseSVG(child))}\n\t\t\t</Tag>\n\t\t);\n\t};\n\n\t// We do not want to re-render the icon if it's a cloned version\n\tif (isClone) {\n\t\treturn <span></span>;\n\t}\n\n\t// Validation: must provide either path or svg\n\tif (!path && !svg) {\n\t\tconsole.warn(`${GENERIC_WARNING_MESSAGE} Must provide either \"path\" or \"svg\" prop`);\n\t\treturn <span></span>;\n\t}\n\n\t// Validation: cannot provide both path and svg\n\tif (path && svg) {\n\t\tconsole.warn(\n\t\t\t`${GENERIC_WARNING_MESSAGE} Cannot provide both \"path\" and \"svg\" props. Using \"svg\" prop.`\n\t\t);\n\t}\n\n\t// Handle path prop with img tag (only if svg is not provided)\n\tif (path && !svg) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\tstyles.MrlSvgContainer,\n\t\t\t\t\tstyles[`MrlSvgContainer--${size}`],\n\t\t\t\t\t'MrlSvgContainer',\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\tsrc={path}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={cn(styles.MrlSvg, styles[`MrlSvg--${size}`], 'mrl-svg')}\n\t\t\t\t\tloading={lazyLoad ? 'lazy' : 'eager'}\n\t\t\t\t/>\n\t\t\t</span>\n\t\t);\n\t}\n\n\t// don't render if SVG value is not defined\n\tif (!svg) {\n\t\treturn <span></span>;\n\t}\n\n\tconst slot = attrs.slot;\n\tdelete attrs.slot;\n\n\tconst allClasses = cn(attrs.class, attrs.className, className);\n\tdelete attrs.class;\n\tdelete attrs.className;\n\n\tconst attributes = setAttributes(attrs, svgDefaults.attrs);\n\n\tconst isSvgString = typeof svg === 'string';\n\n\tlet svgObject: SVGObject;\n\n\tif (isSvgString) {\n\t\ttry {\n\t\t\tconst parsedSvg = JSON.parse(svg);\n\t\t\tif (!isValidJSON(parsedSvg)) {\n\t\t\t\treturn <span></span>;\n\t\t\t}\n\t\t\tsvgObject = parsedSvg;\n\t\t} catch (err) {\n\t\t\tconsole.warn(`${GENERIC_WARNING_MESSAGE} Invalid JSON in svg prop:`, err);\n\t\t\treturn <span></span>;\n\t\t}\n\t} else {\n\t\tsvgObject = svg;\n\t}\n\n\treturn parseSVG(svgObject, attributes, allClasses, slot);\n});\n\nMrlSvg.displayName = 'MrlSvg';\n"],"names":["MrlSvg","React","memo","props","className","_props$size","size","svg","path","_props$attrs","attrs","_props$isClone","isClone","lazyLoad","remainingProps","_objectWithoutProperties","_excluded","GENERIC_WARNING_MESSAGE","isValidJSON","svgData","isObject","err","console","warn","concat","parseSVG","svgObj","userAttributes","arguments","length","undefined","classes","slot","type","value","Tag","name","tagAttributes","attributes","Object","keys","forEach","key","newKey","slice","getCamelCase","createElement","cn","styles","MrlSvgContainer","_extends","getUniqueId","Array","isArray","children","map","child","src","alt","loading","allClasses","class","setAttributes","svgDefaults","isSvgString","svgObject","parsedSvg","JSON","parse","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,MAAM,gBAAGC,gBAAK,CAACC,IAAI,CAAEC,KAAmB,IAAyB;AAC7E,EAAA,IACCC,SAAS,GAQND,KAAK,CARRC,SAAS;IAAAC,WAAA,GAQNF,KAAK,CAPRG,IAAI;AAAJA,IAAAA,IAAI,GAAAD,WAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,WAAA;IACfE,GAAG,GAMAJ,KAAK,CANRI,GAAG;IACHC,IAAI,GAKDL,KAAK,CALRK,IAAI;IAAAC,YAAA,GAKDN,KAAK,CAJRO,KAAK;AAALA,IAAAA,KAAK,GAAAD,YAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,YAAA;IAAAE,cAAA,GAIPR,KAAK,CAHRS,OAAO;AAAPA,IAAAA,OAAO,GAAAD,cAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,cAAA;IACfE,QAAQ,GAELV,KAAK,CAFRU,QAAQ;AACLC,IAAAA,cAAc,GAAAC,iDAAA,CACdZ,KAAK,EAAAa,SAAA,CAAA;EAET,IAAMC,uBAAuB,GAAG,6CAA6C;;AAE7E;AACD;AACA;AACA;AACA;AACA;EACC,IAAMC,WAAW,GAAIC,OAAgC,IAAc;IAClE,IAAI;MACHC,iBAAQ,CAACD,OAAO,CAAC;IAClB,CAAC,CAAC,OAAOE,GAAG,EAAE;AACb;AACAC,MAAAA,OAAO,CAACC,IAAI,CAAA,EAAA,CAAAC,MAAA,CAAIP,uBAAuB,uBAAoB,CAAC;AAC5DK,MAAAA,OAAO,CAACC,IAAI,CAACJ,OAAO,CAAC;AAErB,MAAA,OAAO,KAAK;AACb,IAAA;AAEA,IAAA,OAAO,IAAI;EACZ,CAAC;;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACC,EAAA,IAAMM,SAAQ,GAAG,SAAXA,QAAQA,CACbC,MAAiB,EAIO;AAAA,IAAA,IAHxBC,cAAc,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IAAA,IACnBG,OAAgB,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;IAAA,IAChBE,IAAa,GAAAJ,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;AAEb,IAAA,IAAIJ,MAAM,CAACO,IAAI,KAAK,MAAM,EAAE;MAC3B,OAAOP,MAAM,CAACQ,KAAK;AACpB,IAAA;AAEA,IAAA,IAAMC,GAAG,GAAGT,MAAM,CAACU,IAAI;AACvB,IAAA,IAAMC,aAAa,GAAGX,MAAM,CAACY,UAAU,IAAI,EAAE;;AAE7C;AACF;AACA;AACA;AACA;AACA;IACEC,MAAM,CAACC,IAAI,CAACH,aAAa,CAAC,CAACI,OAAO,CAAEC,GAAG,IAAK;MAC3C,IAAIC,MAAM,GAAGD,GAAG;MAChB,IAAIA,GAAG,KAAK,OAAO,EAAE;AACpBC,QAAAA,MAAM,GAAG,WAAW;AACrB,MAAA,CAAC,MAAM,IAAID,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAAE;AACvCD,QAAAA,MAAM,GAAGE,yBAAY,CAACH,GAAG,CAAC;AAC3B,MAAA;AAEAL,MAAAA,aAAa,CAACM,MAAM,CAAC,GAAGN,aAAa,CAACK,GAAG,CAAC;MAE1C,IAAIA,GAAG,KAAKC,MAAM,EAAE;QACnB,OAAON,aAAa,CAACK,GAAG,CAAC;AAC1B,MAAA;AACD,IAAA,CAAC,CAAC;;AAEF;AACF;AACA;AACA;IACE,IAAIP,GAAG,KAAK,KAAK,EAAE;MAClB,oBACClC,gBAAA,CAAA6C,aAAA,CAAA,MAAA,EAAA;AACC1C,QAAAA,SAAS,EAAE2C,2BAAE,CACZC,qBAAM,CAACC,eAAe,EACtBD,qBAAM,CAAA,mBAAA,CAAAxB,MAAA,CAAqBlB,IAAI,CAAA,CAAG,EAClC,iBAAiB,EACjByB,OACD,CAAE;AACFC,QAAAA,IAAI,EAAEA;OAAK,eAEX/B,gBAAA,CAAA6C,aAAA,CAAA,KAAA,EAAAI,iCAAA,KACKb,aAAa,EACbV,cAAc,EACdb,cAAc,EAAA;AAClBV,QAAAA,SAAS,EAAE2C,2BAAE,CAACC,qBAAM,CAAChD,MAAM,EAAEgD,qBAAM,CAAA,UAAA,CAAAxB,MAAA,CAAYlB,IAAI,CAAA,CAAG,EAAE,SAAS,CAAE;QACnEoC,GAAG,EAAES,yBAAW;OAAG,CAAA,EAElBC,KAAK,CAACC,OAAO,CAAC3B,MAAM,CAAC4B,QAAQ,CAAC,IAC9B5B,MAAM,CAAC4B,QAAQ,CAACC,GAAG,CAAEC,KAA8B,IAAK/B,SAAQ,CAAC+B,KAAK,CAAC,CACpE,CACA,CAAC;AAET,IAAA;IAEA,oBACCvD,gBAAA,CAAA6C,aAAA,CAACX,GAAG,EAAAe,iCAAA,KAAKb,aAAa,EAAA;MAAEK,GAAG,EAAES,yBAAW;KAAG,CAAA,EACzCC,KAAK,CAACC,OAAO,CAAC3B,MAAM,CAAC4B,QAAQ,CAAC,IAC9B5B,MAAM,CAAC4B,QAAQ,CAACC,GAAG,CAAEC,KAA8B,IAAK/B,SAAQ,CAAC+B,KAAK,CAAC,CACpE,CAAC;EAER,CAAC;;AAED;AACA,EAAA,IAAI5C,OAAO,EAAE;AACZ,IAAA,oBAAOX,gBAAA,CAAA6C,aAAA,CAAA,MAAA,EAAA,IAAY,CAAC;AACrB,EAAA;;AAEA;AACA,EAAA,IAAI,CAACtC,IAAI,IAAI,CAACD,GAAG,EAAE;AAClBe,IAAAA,OAAO,CAACC,IAAI,CAAA,EAAA,CAAAC,MAAA,CAAIP,uBAAuB,kDAA2C,CAAC;AACnF,IAAA,oBAAOhB,gBAAA,CAAA6C,aAAA,CAAA,MAAA,EAAA,IAAY,CAAC;AACrB,EAAA;;AAEA;EACA,IAAItC,IAAI,IAAID,GAAG,EAAE;AAChBe,IAAAA,OAAO,CAACC,IAAI,CAAA,EAAA,CAAAC,MAAA,CACRP,uBAAuB,yEAC3B,CAAC;AACF,EAAA;;AAEA;AACA,EAAA,IAAIT,IAAI,IAAI,CAACD,GAAG,EAAE;IACjB,oBACCN,gBAAA,CAAA6C,aAAA,CAAA,MAAA,EAAA;AACC1C,MAAAA,SAAS,EAAE2C,2BAAE,CACZC,qBAAM,CAACC,eAAe,EACtBD,qBAAM,CAAA,mBAAA,CAAAxB,MAAA,CAAqBlB,IAAI,CAAA,CAAG,EAClC,iBAAiB,EACjBF,SACD;KAAE,eAEFH,gBAAA,CAAA6C,aAAA,CAAA,KAAA,EAAA;AACCW,MAAAA,GAAG,EAAEjD,IAAK;AACVkD,MAAAA,GAAG,EAAC,EAAE;AACN,MAAA,aAAA,EAAY,MAAM;AAClBtD,MAAAA,SAAS,EAAE2C,2BAAE,CAACC,qBAAM,CAAChD,MAAM,EAAEgD,qBAAM,CAAA,UAAA,CAAAxB,MAAA,CAAYlB,IAAI,CAAA,CAAG,EAAE,SAAS,CAAE;AACnEqD,MAAAA,OAAO,EAAE9C,QAAQ,GAAG,MAAM,GAAG;AAAQ,KACrC,CACI,CAAC;AAET,EAAA;;AAEA;EACA,IAAI,CAACN,GAAG,EAAE;AACT,IAAA,oBAAON,gBAAA,CAAA6C,aAAA,CAAA,MAAA,EAAA,IAAY,CAAC;AACrB,EAAA;AAEA,EAAA,IAAMd,IAAI,GAAGtB,KAAK,CAACsB,IAAI;EACvB,OAAOtB,KAAK,CAACsB,IAAI;AAEjB,EAAA,IAAM4B,UAAU,GAAGb,2BAAE,CAACrC,KAAK,CAACmD,KAAK,EAAEnD,KAAK,CAACN,SAAS,EAAEA,SAAS,CAAC;EAC9D,OAAOM,KAAK,CAACmD,KAAK;EAClB,OAAOnD,KAAK,CAACN,SAAS;EAEtB,IAAMkC,UAAU,GAAGwB,2BAAa,CAACpD,KAAK,EAAEqD,qBAAW,CAACrD,KAAK,CAAC;AAE1D,EAAA,IAAMsD,WAAW,GAAG,OAAOzD,GAAG,KAAK,QAAQ;AAE3C,EAAA,IAAI0D,SAAoB;AAExB,EAAA,IAAID,WAAW,EAAE;IAChB,IAAI;AACH,MAAA,IAAME,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC7D,GAAG,CAAC;AACjC,MAAA,IAAI,CAACW,WAAW,CAACgD,SAAS,CAAC,EAAE;AAC5B,QAAA,oBAAOjE,gBAAA,CAAA6C,aAAA,CAAA,MAAA,EAAA,IAAY,CAAC;AACrB,MAAA;AACAmB,MAAAA,SAAS,GAAGC,SAAS;IACtB,CAAC,CAAC,OAAO7C,GAAG,EAAE;MACbC,OAAO,CAACC,IAAI,CAAA,EAAA,CAAAC,MAAA,CAAIP,uBAAuB,EAAA,4BAAA,CAAA,EAA8BI,GAAG,CAAC;AACzE,MAAA,oBAAOpB,gBAAA,CAAA6C,aAAA,CAAA,MAAA,EAAA,IAAY,CAAC;AACrB,IAAA;AACD,EAAA,CAAC,MAAM;AACNmB,IAAAA,SAAS,GAAG1D,GAAG;AAChB,EAAA;EAEA,OAAOkB,SAAQ,CAACwC,SAAS,EAAE3B,UAAU,EAAEsB,UAAU,EAAE5B,IAAI,CAAC;AACzD,CAAC;AAEDhC,MAAM,CAACqE,WAAW,GAAG,QAAQ;;;;"}
|
|
@@ -7,7 +7,10 @@ var lottie = require('lottie-web/build/player/lottie_light');
|
|
|
7
7
|
var constants = require('../constants.js');
|
|
8
8
|
var setAttributes = require('../../../utils/setAttributes/setAttributes.js');
|
|
9
9
|
|
|
10
|
-
function
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
function _interopNamespace(e) {
|
|
13
|
+
if (e && e.__esModule) return e;
|
|
11
14
|
var n = Object.create(null);
|
|
12
15
|
if (e) {
|
|
13
16
|
Object.keys(e).forEach(function (k) {
|
|
@@ -24,7 +27,9 @@ function _interopNamespaceDefault(e) {
|
|
|
24
27
|
return Object.freeze(n);
|
|
25
28
|
}
|
|
26
29
|
|
|
27
|
-
var React__namespace = /*#__PURE__*/
|
|
30
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
31
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
32
|
+
var lottie__default = /*#__PURE__*/_interopDefault(lottie);
|
|
28
33
|
|
|
29
34
|
var _excluded = ["cdnFile", "className", "config", "delay", "fullPath", "state", "svgData"];
|
|
30
35
|
|
|
@@ -39,7 +44,7 @@ var _excluded = ["cdnFile", "className", "config", "delay", "fullPath", "state",
|
|
|
39
44
|
* @param {MrlSvgAnimateProps} props - The properties for the MrlSvgAnimate component.
|
|
40
45
|
* @returns {React.ReactElement} - The rendered MrlSvgAnimate component.
|
|
41
46
|
*/
|
|
42
|
-
var MrlSvgAnimate =
|
|
47
|
+
var MrlSvgAnimate = _ref => {
|
|
43
48
|
var cdnFile = _ref.cdnFile,
|
|
44
49
|
className = _ref.className,
|
|
45
50
|
config = _ref.config,
|
|
@@ -62,7 +67,7 @@ var MrlSvgAnimate = function MrlSvgAnimate(_ref) {
|
|
|
62
67
|
* Construct Lottie options object to pass to loadAnimations method
|
|
63
68
|
* @returns {AnimationConfigWithData<'svg'>} - Lottie options object
|
|
64
69
|
*/
|
|
65
|
-
var getConfig = React__namespace.useCallback(
|
|
70
|
+
var getConfig = React__namespace.useCallback(() => {
|
|
66
71
|
var fullConfig = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, constants.baseLottieConfig), config && JSON.parse(config)), {}, {
|
|
67
72
|
animationData: svgData && JSON.parse(svgData),
|
|
68
73
|
container: animateRef.current,
|
|
@@ -81,40 +86,40 @@ var MrlSvgAnimate = function MrlSvgAnimate(_ref) {
|
|
|
81
86
|
/**
|
|
82
87
|
* Initialize Lottie animation
|
|
83
88
|
*/
|
|
84
|
-
React__namespace.useEffect(
|
|
89
|
+
React__namespace.useEffect(() => {
|
|
85
90
|
if (animateRef.current) {
|
|
86
|
-
|
|
91
|
+
lottie__default.default.loadAnimation(getConfig());
|
|
87
92
|
}
|
|
88
|
-
return
|
|
89
|
-
|
|
93
|
+
return () => {
|
|
94
|
+
lottie__default.default.destroy(animationId);
|
|
90
95
|
};
|
|
91
96
|
}, [getConfig, animationId, svgData]);
|
|
92
97
|
|
|
93
98
|
/**
|
|
94
99
|
* Control animation based on operating system reduced motion preference.
|
|
95
100
|
*/
|
|
96
|
-
React__namespace.useEffect(
|
|
101
|
+
React__namespace.useEffect(() => {
|
|
97
102
|
setHasReducedMotion(window.matchMedia('(prefers-reduced-motion: reduce)').matches);
|
|
98
103
|
}, []);
|
|
99
104
|
|
|
100
105
|
/**
|
|
101
106
|
* Delay start of animation
|
|
102
107
|
*/
|
|
103
|
-
React__namespace.useEffect(
|
|
108
|
+
React__namespace.useEffect(() => {
|
|
104
109
|
var timer;
|
|
105
110
|
if (state === 'play' && !hasReducedMotion) {
|
|
106
|
-
timer = setTimeout(
|
|
107
|
-
|
|
111
|
+
timer = setTimeout(() => {
|
|
112
|
+
lottie__default.default.play(animationId);
|
|
108
113
|
}, delay);
|
|
109
114
|
} else {
|
|
110
|
-
|
|
115
|
+
lottie__default.default.stop(animationId);
|
|
111
116
|
}
|
|
112
|
-
return
|
|
117
|
+
return () => {
|
|
113
118
|
clearTimeout(timer);
|
|
114
119
|
};
|
|
115
120
|
}, [delay, hasReducedMotion, state, animationId, svgData]);
|
|
116
121
|
return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers.extends({}, rest, {
|
|
117
|
-
className:
|
|
122
|
+
className: classnames__default.default(className, 'MrlSvgAnimate-container'),
|
|
118
123
|
ref: animateRef
|
|
119
124
|
}));
|
|
120
125
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlSvgAnimate.js","sources":["../../../../../src/components/svg/MrlSvgAnimate/MrlSvgAnimate.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport lottie from 'lottie-web/build/player/lottie_light';\nimport { AnimatedState, baseLottieConfig } from '../constants';\nimport { AnimationConfigWithData } from 'lottie-web';\nimport { getUniqueId } from '../../../utils';\n\n/**\n * Props for MrlSvgAnimate component\n */\nexport interface MrlSvgAnimateProps {\n\t/** Any additional classes to style the SVG's container */\n\tclassName?: string;\n\t/**\n\t * JSON file contents used by Lottie to generate an animated SVG to render.\n\t * This attribute is mutually exclusive with fullPath and cdnFile.\n\t * Note: When dynamically changing the svgData, if a configuration change\n\t * is required be sure to set any new values before changing the svgData.\n\t */\n\tsvgData?: string;\n\n\t/**\n\t * Path to a JSON file used by Lottie to generate an animated SVG to render.\n\t * This attribute is mutually exclusive with svgData and cdnFile.\n\t * Note: When dynamically changing the fullPath, if a configuration change\n\t * is required be sure to set any new values before changing the fullPath.\n\t */\n\tfullPath?: string;\n\n\t/**\n\t * File name of an animation hosted on Mural's CDN used by Lottie to generate\n\t * an animated SVG to render. This is the preferred usage of this component\n\t * in terms of performance. It supports any file located at `static/animations`.\n\t * This attribute is mutually exclusive with fullPath and svgData.\n\t * Note: When dynamically changing the cdnFile, if a configuration change\n\t * is required be sure to set any new values before changing the cdnFile.\n\t */\n\tcdnFile?: string;\n\n\t/** Icon animation state. */\n\tstate?: AnimatedState;\n\n\t/** Delay (in ms) before animation begins. */\n\tdelay?: number;\n\n\t/**\n\t * Optional [Lottie configuration object](http://airbnb.io/lottie/#/web) for the\n\t * loadAnimation method\n\t */\n\tconfig?: string;\n}\n\n/**\n * MrlSvgAnimate\n *\n * This is a React functional component used for SVGs with robust After Effects animations.\n * @param {MrlSvgAnimateProps} props - The properties for the MrlSvgAnimate component.\n * @returns {React.ReactElement} - The rendered MrlSvgAnimate component.\n */\nexport const MrlSvgAnimate: React.FC<MrlSvgAnimateProps> = ({\n\tcdnFile,\n\tclassName,\n\tconfig,\n\tdelay = 0,\n\tfullPath,\n\tstate = 'stop',\n\tsvgData,\n\t...rest\n}) => {\n\tconst [hasReducedMotion, setHasReducedMotion] = React.useState<boolean>(false);\n\n\tconst animateRef = React.useRef<HTMLDivElement>(null);\n\tconst { current: animationId } = React.useRef<string>(getUniqueId('lottie-animation'));\n\n\t/**\n\t * Construct Lottie options object to pass to loadAnimations method\n\t * @returns {AnimationConfigWithData<'svg'>} - Lottie options object\n\t */\n\tconst getConfig = React.useCallback((): AnimationConfigWithData<'svg'> => {\n\t\tconst fullConfig = {\n\t\t\t...baseLottieConfig,\n\t\t\t...(config && JSON.parse(config)),\n\t\t\tanimationData: svgData && JSON.parse(svgData),\n\t\t\tcontainer: animateRef.current,\n\t\t\tname: animationId,\n\t\t\tpath:\n\t\t\t\t(fullPath && fullPath) ||\n\t\t\t\t(cdnFile && `https://static.muralcdn.com/static/animations/${cdnFile}.json`)\n\t\t};\n\n\t\t// This setting is not configurable due to security\n\t\tif (typeof fullConfig.rendererSettings === 'undefined') {\n\t\t\tfullConfig.rendererSettings = {};\n\t\t}\n\n\t\tfullConfig.rendererSettings.runExpressions = false;\n\n\t\treturn fullConfig;\n\t}, [cdnFile, config, fullPath, svgData, animationId]);\n\n\t/**\n\t * Initialize Lottie animation\n\t */\n\tReact.useEffect(() => {\n\t\tif (animateRef.current) {\n\t\t\tlottie.loadAnimation(getConfig());\n\t\t}\n\n\t\treturn () => {\n\t\t\tlottie.destroy(animationId);\n\t\t};\n\t}, [getConfig, animationId, svgData]);\n\n\t/**\n\t * Control animation based on operating system reduced motion preference.\n\t */\n\tReact.useEffect(() => {\n\t\tsetHasReducedMotion(window.matchMedia('(prefers-reduced-motion: reduce)').matches);\n\t}, []);\n\n\t/**\n\t * Delay start of animation\n\t */\n\tReact.useEffect(() => {\n\t\tlet timer: ReturnType<typeof setTimeout>;\n\n\t\tif (state === 'play' && !hasReducedMotion) {\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tlottie.play(animationId);\n\t\t\t}, delay);\n\t\t} else {\n\t\t\tlottie.stop(animationId);\n\t\t}\n\n\t\treturn () => {\n\t\t\tclearTimeout(timer);\n\t\t};\n\t}, [delay, hasReducedMotion, state, animationId, svgData]);\n\n\treturn (\n\t\t<div\n\t\t\t{...rest}\n\t\t\tclassName={classnames(className, 'MrlSvgAnimate-container')}\n\t\t\tref={animateRef}\n\t\t></div>\n\t);\n};\n\nexport default MrlSvgAnimate;\n"],"names":["MrlSvgAnimate","_ref","cdnFile","className","config","_ref$delay","delay","fullPath","_ref$state","state","svgData","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","hasReducedMotion","setHasReducedMotion","animateRef","useRef","_React$useRef","getUniqueId","animationId","current","getConfig","useCallback","fullConfig","_objectSpread","baseLottieConfig","JSON","parse","animationData","container","name","path","concat","rendererSettings","runExpressions","useEffect","lottie","loadAnimation","destroy","window","matchMedia","matches","timer","setTimeout","play","stop","clearTimeout","createElement","_extends","classnames","ref"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MrlSvgAnimate.js","sources":["../../../../../src/components/svg/MrlSvgAnimate/MrlSvgAnimate.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport lottie from 'lottie-web/build/player/lottie_light';\nimport { AnimatedState, baseLottieConfig } from '../constants';\nimport { AnimationConfigWithData } from 'lottie-web';\nimport { getUniqueId } from '../../../utils';\n\n/**\n * Props for MrlSvgAnimate component\n */\nexport interface MrlSvgAnimateProps {\n\t/** Any additional classes to style the SVG's container */\n\tclassName?: string;\n\t/**\n\t * JSON file contents used by Lottie to generate an animated SVG to render.\n\t * This attribute is mutually exclusive with fullPath and cdnFile.\n\t * Note: When dynamically changing the svgData, if a configuration change\n\t * is required be sure to set any new values before changing the svgData.\n\t */\n\tsvgData?: string;\n\n\t/**\n\t * Path to a JSON file used by Lottie to generate an animated SVG to render.\n\t * This attribute is mutually exclusive with svgData and cdnFile.\n\t * Note: When dynamically changing the fullPath, if a configuration change\n\t * is required be sure to set any new values before changing the fullPath.\n\t */\n\tfullPath?: string;\n\n\t/**\n\t * File name of an animation hosted on Mural's CDN used by Lottie to generate\n\t * an animated SVG to render. This is the preferred usage of this component\n\t * in terms of performance. It supports any file located at `static/animations`.\n\t * This attribute is mutually exclusive with fullPath and svgData.\n\t * Note: When dynamically changing the cdnFile, if a configuration change\n\t * is required be sure to set any new values before changing the cdnFile.\n\t */\n\tcdnFile?: string;\n\n\t/** Icon animation state. */\n\tstate?: AnimatedState;\n\n\t/** Delay (in ms) before animation begins. */\n\tdelay?: number;\n\n\t/**\n\t * Optional [Lottie configuration object](http://airbnb.io/lottie/#/web) for the\n\t * loadAnimation method\n\t */\n\tconfig?: string;\n}\n\n/**\n * MrlSvgAnimate\n *\n * This is a React functional component used for SVGs with robust After Effects animations.\n * @param {MrlSvgAnimateProps} props - The properties for the MrlSvgAnimate component.\n * @returns {React.ReactElement} - The rendered MrlSvgAnimate component.\n */\nexport const MrlSvgAnimate: React.FC<MrlSvgAnimateProps> = ({\n\tcdnFile,\n\tclassName,\n\tconfig,\n\tdelay = 0,\n\tfullPath,\n\tstate = 'stop',\n\tsvgData,\n\t...rest\n}) => {\n\tconst [hasReducedMotion, setHasReducedMotion] = React.useState<boolean>(false);\n\n\tconst animateRef = React.useRef<HTMLDivElement>(null);\n\tconst { current: animationId } = React.useRef<string>(getUniqueId('lottie-animation'));\n\n\t/**\n\t * Construct Lottie options object to pass to loadAnimations method\n\t * @returns {AnimationConfigWithData<'svg'>} - Lottie options object\n\t */\n\tconst getConfig = React.useCallback((): AnimationConfigWithData<'svg'> => {\n\t\tconst fullConfig = {\n\t\t\t...baseLottieConfig,\n\t\t\t...(config && JSON.parse(config)),\n\t\t\tanimationData: svgData && JSON.parse(svgData),\n\t\t\tcontainer: animateRef.current,\n\t\t\tname: animationId,\n\t\t\tpath:\n\t\t\t\t(fullPath && fullPath) ||\n\t\t\t\t(cdnFile && `https://static.muralcdn.com/static/animations/${cdnFile}.json`)\n\t\t};\n\n\t\t// This setting is not configurable due to security\n\t\tif (typeof fullConfig.rendererSettings === 'undefined') {\n\t\t\tfullConfig.rendererSettings = {};\n\t\t}\n\n\t\tfullConfig.rendererSettings.runExpressions = false;\n\n\t\treturn fullConfig;\n\t}, [cdnFile, config, fullPath, svgData, animationId]);\n\n\t/**\n\t * Initialize Lottie animation\n\t */\n\tReact.useEffect(() => {\n\t\tif (animateRef.current) {\n\t\t\tlottie.loadAnimation(getConfig());\n\t\t}\n\n\t\treturn () => {\n\t\t\tlottie.destroy(animationId);\n\t\t};\n\t}, [getConfig, animationId, svgData]);\n\n\t/**\n\t * Control animation based on operating system reduced motion preference.\n\t */\n\tReact.useEffect(() => {\n\t\tsetHasReducedMotion(window.matchMedia('(prefers-reduced-motion: reduce)').matches);\n\t}, []);\n\n\t/**\n\t * Delay start of animation\n\t */\n\tReact.useEffect(() => {\n\t\tlet timer: ReturnType<typeof setTimeout>;\n\n\t\tif (state === 'play' && !hasReducedMotion) {\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tlottie.play(animationId);\n\t\t\t}, delay);\n\t\t} else {\n\t\t\tlottie.stop(animationId);\n\t\t}\n\n\t\treturn () => {\n\t\t\tclearTimeout(timer);\n\t\t};\n\t}, [delay, hasReducedMotion, state, animationId, svgData]);\n\n\treturn (\n\t\t<div\n\t\t\t{...rest}\n\t\t\tclassName={classnames(className, 'MrlSvgAnimate-container')}\n\t\t\tref={animateRef}\n\t\t></div>\n\t);\n};\n\nexport default MrlSvgAnimate;\n"],"names":["MrlSvgAnimate","_ref","cdnFile","className","config","_ref$delay","delay","fullPath","_ref$state","state","svgData","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","hasReducedMotion","setHasReducedMotion","animateRef","useRef","_React$useRef","getUniqueId","animationId","current","getConfig","useCallback","fullConfig","_objectSpread","baseLottieConfig","JSON","parse","animationData","container","name","path","concat","rendererSettings","runExpressions","useEffect","lottie","loadAnimation","destroy","window","matchMedia","matches","timer","setTimeout","play","stop","clearTimeout","createElement","_extends","classnames","ref"],"mappings":"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"}
|