@muraldevkit/ui-toolkit 4.72.0 → 4.73.0-dev-t0WE.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/components/avatar/MrlAvatarButton/MrlAvatarButton.js +8 -1
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +14 -4
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +8 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js +3 -3
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +8 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +21 -2
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +36 -3
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +18 -2
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +11 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +17 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +24 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js +17 -2
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +11 -2
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +8 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +19 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +19 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +42 -2
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +42 -2
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +34 -2
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +34 -2
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -2
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +10 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +20 -3
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +20 -3
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -3
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +38 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +12 -2
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/cjs/components/link/MrlLink/MrlLink.js +21 -2
- package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +12 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +20 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +18 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js +22 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +27 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/cjs/components/notification/MrlToast/MrlToast.js +28 -3
- package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +18 -2
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +24 -4
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +18 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +31 -2
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -3
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js +10 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +10 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +19 -3
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +23 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js +7 -7
- package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/components/avatar/MrlAvatarButton/MrlAvatarButton.d.ts +6 -1
- package/dist/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.d.ts +5 -0
- package/dist/components/button/MrlButton/MrlButton.d.ts +1 -1
- package/dist/components/button/MrlIconButton/MrlIconButton.d.ts +5 -0
- package/dist/components/callout/MrlCallout/MrlCallout.d.ts +7 -0
- package/dist/components/filter/MrlFilter/MrlFilter.d.ts +7 -0
- package/dist/components/filter/MrlFilterItem/MrlFilterItem.d.ts +7 -0
- package/dist/components/form/checkbox/MrlCheckbox/MrlCheckbox.d.ts +6 -1
- package/dist/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.d.ts +6 -1
- package/dist/components/form/date-picker/MrlDatePicker.d.ts +7 -0
- package/dist/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.d.ts +6 -1
- package/dist/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.d.ts +8 -1
- package/dist/components/form/radio/MrlRadioButton/MrlRadioButton.d.ts +6 -1
- package/dist/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.d.ts +6 -1
- package/dist/components/form/select/MrlCreatableSelect/MrlCreatableSelect.d.ts +7 -0
- package/dist/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.d.ts +7 -0
- package/dist/components/form/select/MrlMultiSelect/MrlMultiSelect.d.ts +7 -0
- package/dist/components/form/select/MrlSelect/MrlSelect.d.ts +7 -0
- package/dist/components/form/switch/MrlSwitch/MrlSwitch.d.ts +6 -1
- package/dist/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.d.ts +6 -1
- package/dist/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.d.ts +8 -0
- package/dist/components/form/text-input/MrlTextInput/MrlTextInput.d.ts +8 -0
- package/dist/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.d.ts +8 -0
- package/dist/components/form/textarea/MrlTextarea/MrlTextarea.d.ts +9 -1
- package/dist/components/layout/MrlSidebar/MrlSidebar.d.ts +8 -1
- package/dist/components/link/MrlLink/MrlLink.d.ts +6 -1
- package/dist/components/link/MrlLinkButton/MrlLinkButton.d.ts +5 -0
- package/dist/components/menu/MrlMenu/MrlMenu.d.ts +6 -1
- package/dist/components/menu/MrlMenuItem/MrlMenuItem.d.ts +6 -1
- package/dist/components/menu/MrlMenuItemLink/MrlMenuItemLink.d.ts +6 -1
- package/dist/components/modal/MrlModal/MrlModal.d.ts +5 -0
- package/dist/components/notification/MrlBlockNotification/MrlBlockNotification.d.ts +7 -0
- package/dist/components/notification/MrlToast/MrlToast.d.ts +8 -1
- package/dist/components/pagination/MrlPaginationButton/MrlPaginationButton.d.ts +6 -1
- package/dist/components/panel/MrlPanel/MrlPanel.d.ts +8 -0
- package/dist/components/popover/MrlPopover/MrlPopover.d.ts +6 -1
- package/dist/components/table/MrlSmartTable/MrlSmartTable.d.ts +7 -0
- package/dist/components/table/MrlTableRow/MrlTableRow.d.ts +7 -0
- package/dist/components/tabs/MrlTab/MrlTab.d.ts +6 -1
- package/dist/components/tabs/MrlTabLink/MrlTabLink.d.ts +6 -1
- package/dist/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +5 -0
- package/dist/components/tooltip/MrlTooltip/MrlTooltip.d.ts +8 -0
- package/dist/contexts/MrlAnalyticsContext/types.d.ts +1 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +8 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +14 -4
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +8 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js +3 -3
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +8 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +21 -2
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js +36 -3
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/esm/components/filter/MrlFilter/MrlFilter.js +18 -2
- package/dist/esm/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +11 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +17 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +24 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/esm/components/form/date-picker/MrlDatePicker.js +17 -2
- package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +11 -2
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +8 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButton/MrlRadioButton.js +19 -1
- package/dist/esm/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +19 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +42 -2
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +42 -2
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +34 -2
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +34 -2
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +14 -2
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +10 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +20 -3
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +20 -3
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -3
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +38 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +12 -2
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/esm/components/link/MrlLink/MrlLink.js +21 -2
- package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +12 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js +20 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +27 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/esm/components/notification/MrlToast/MrlToast.js +28 -3
- package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/esm/components/pagination/MrlPaginationButton/MrlPaginationButton.js +18 -2
- package/dist/esm/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js +24 -4
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js +18 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +31 -2
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +13 -3
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js +10 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +10 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +19 -3
- package/dist/esm/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +23 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js +7 -7
- package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +4 -4
- package/dist/types/components/avatar/MrlAvatarButton/MrlAvatarButton.d.ts +6 -1
- package/dist/types/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.d.ts +5 -0
- package/dist/types/components/button/MrlButton/MrlButton.d.ts +1 -1
- package/dist/types/components/button/MrlIconButton/MrlIconButton.d.ts +5 -0
- package/dist/types/components/callout/MrlCallout/MrlCallout.d.ts +7 -0
- package/dist/types/components/filter/MrlFilter/MrlFilter.d.ts +7 -0
- package/dist/types/components/filter/MrlFilterItem/MrlFilterItem.d.ts +7 -0
- package/dist/types/components/form/checkbox/MrlCheckbox/MrlCheckbox.d.ts +6 -1
- package/dist/types/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.d.ts +6 -1
- package/dist/types/components/form/date-picker/MrlDatePicker.d.ts +7 -0
- package/dist/types/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.d.ts +6 -1
- package/dist/types/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.d.ts +8 -1
- package/dist/types/components/form/radio/MrlRadioButton/MrlRadioButton.d.ts +6 -1
- package/dist/types/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.d.ts +6 -1
- package/dist/types/components/form/select/MrlCreatableSelect/MrlCreatableSelect.d.ts +7 -0
- package/dist/types/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.d.ts +7 -0
- package/dist/types/components/form/select/MrlMultiSelect/MrlMultiSelect.d.ts +7 -0
- package/dist/types/components/form/select/MrlSelect/MrlSelect.d.ts +7 -0
- package/dist/types/components/form/switch/MrlSwitch/MrlSwitch.d.ts +6 -1
- package/dist/types/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.d.ts +6 -1
- package/dist/types/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.d.ts +8 -0
- package/dist/types/components/form/text-input/MrlTextInput/MrlTextInput.d.ts +8 -0
- package/dist/types/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.d.ts +8 -0
- package/dist/types/components/form/textarea/MrlTextarea/MrlTextarea.d.ts +9 -1
- package/dist/types/components/layout/MrlSidebar/MrlSidebar.d.ts +8 -1
- package/dist/types/components/link/MrlLink/MrlLink.d.ts +6 -1
- package/dist/types/components/link/MrlLinkButton/MrlLinkButton.d.ts +5 -0
- package/dist/types/components/menu/MrlMenu/MrlMenu.d.ts +6 -1
- package/dist/types/components/menu/MrlMenuItem/MrlMenuItem.d.ts +6 -1
- package/dist/types/components/menu/MrlMenuItemLink/MrlMenuItemLink.d.ts +6 -1
- package/dist/types/components/modal/MrlModal/MrlModal.d.ts +5 -0
- package/dist/types/components/notification/MrlBlockNotification/MrlBlockNotification.d.ts +7 -0
- package/dist/types/components/notification/MrlToast/MrlToast.d.ts +8 -1
- package/dist/types/components/pagination/MrlPaginationButton/MrlPaginationButton.d.ts +6 -1
- package/dist/types/components/panel/MrlPanel/MrlPanel.d.ts +8 -0
- package/dist/types/components/popover/MrlPopover/MrlPopover.d.ts +6 -1
- package/dist/types/components/table/MrlSmartTable/MrlSmartTable.d.ts +7 -0
- package/dist/types/components/table/MrlTableRow/MrlTableRow.d.ts +7 -0
- package/dist/types/components/tabs/MrlTab/MrlTab.d.ts +6 -1
- package/dist/types/components/tabs/MrlTabLink/MrlTabLink.d.ts +6 -1
- package/dist/types/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +5 -0
- package/dist/types/components/tooltip/MrlTooltip/MrlTooltip.d.ts +8 -0
- package/dist/types/contexts/MrlAnalyticsContext/types.d.ts +1 -1
- package/dist/types/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +4 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlPanel.js","sources":["../../../../../src/components/panel/MrlPanel/MrlPanel.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport styles from './MrlPanel.module.scss';\nimport { MrlIconButton } from '../../button';\nimport { MrlSvg } from '../../svg';\nimport { close } from '@muraldevkit/ds-icons';\nimport { MrlFocusTrap } from '../../focus-trap';\nimport { MrlText, MrlTextHeading } from '../../text';\nimport { MrlDivider } from '../../divider';\nimport { MrlPanelContext } from '../MrlPanelContext';\nimport { useHasFocusableDescendant } from '../../../hooks/useHasFocusableDescendant';\nimport { useScrollbarInfo } from '../../../hooks/useScrollbarInfo';\nimport { getUniqueId } from '../../../utils';\n\n/**\n * Props for the MrlPanel component.\n */\ninterface MrlPanelProps extends React.ComponentPropsWithRef<'div'> {\n\t/**\n\t * A string value used for data-qa attribute.\n\t */\n\t['data-qa']?: string;\n\n\t/**\n\t * Callback function that is called when the panel is closed.\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * The custom header element to be rendered in the panel.\n\t * When a custom header is used developers need to provide th aria-label and aria-describedby.\n\t */\n\theader?: React.ReactNode;\n\n\t/**\n\t * The custom top actions to be rendered in the panel header.\n\t * By default top actions are rendered on the right side of the title and include a MrlDivider at the end.\n\t * The close button should not be included as part of the top actions.\n\t */\n\ttopActions?: React.ReactNode;\n\n\t/**\n\t * The title of the panel.\n\t */\n\ttitle?: string;\n\n\t/**\n\t * The description of the panel.\n\t */\n\tdescription?: string;\n\n\t/**\n\t * Specifies whether to disable autofocus on the panel.\n\t */\n\tdisableAutofocus?: boolean;\n\n\t/**\n\t * Specifies whether the panel has a sticky header to adjust styles.\n\t */\n\thasStickyHeader?: boolean;\n\n\t/**\n\t * hasDataScrollAnchor is required to enable infinite scroll\n\t */\n\thasDataScrollAnchor?: boolean;\n}\n\n/**\n * MrlPanel component.\n *\n * @param props The MrlPanel component properties.\n * @returns The MrlPanel component.\n */\nexport const MrlPanel = React.forwardRef<HTMLDivElement, MrlPanelProps>(\n\tfunction MrlPanel(props, ref): JSX.Element {\n\t\tconst {\n\t\t\tclassName,\n\t\t\ttitle,\n\t\t\tid,\n\t\t\tchildren,\n\t\t\thasStickyHeader,\n\t\t\theader,\n\t\t\tdescription,\n\t\t\tdisableAutofocus,\n\t\t\ttopActions,\n\t\t\thasDataScrollAnchor,\n\t\t\tonClose,\n\t\t\t['data-qa']: qa = 'panel',\n\t\t\t...rest\n\t\t} = props;\n\n\t\tconst panelRef = React.useRef<HTMLDivElement>(null);\n\n\t\t// Unique ID for aria-describedby\n\t\tconst descriptionIdRef = React.useRef<string>(\n\t\t\tdescription ? getUniqueId('mrl-panel-description') : ''\n\t\t);\n\n\t\tconst {\n\t\t\tscrollableContainerRef,\n\t\t\thasVerticalScrollbar,\n\t\t\thasHorizontalScrollbar,\n\t\t\thorizontalScrollbarHeight,\n\t\t\tverticalScrollbarWidth\n\t\t} = useScrollbarInfo<HTMLDivElement>();\n\n\t\tconst hasFocusableDescendant = useHasFocusableDescendant(scrollableContainerRef);\n\n\t\tReact.useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(ref, () => {\n\t\t\treturn panelRef.current;\n\t\t});\n\n\t\tconst handleKeyDown = React.useCallback(\n\t\t\t(e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\t\tif (e.key === 'Escape' && typeof onClose === 'function') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tonClose();\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onClose]\n\t\t);\n\n\t\tconst panelClasses = classnames(styles['MrlPanel'], 'MrlPanel', className);\n\n\t\treturn (\n\t\t\t<MrlPanelContext.Provider\n\t\t\t\tvalue={{\n\t\t\t\t\thasHorizontalScrollbar,\n\t\t\t\t\thasVerticalScrollbar,\n\t\t\t\t\thorizontalScrollbarHeight,\n\t\t\t\t\tverticalScrollbarWidth\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n\t\t\t\t<div\n\t\t\t\t\t{...rest}\n\t\t\t\t\tclassName={panelClasses}\n\t\t\t\t\taria-describedby={descriptionIdRef.current || props['aria-describedby']}\n\t\t\t\t\taria-label={title || props['aria-label']}\n\t\t\t\t\taria-modal=\"false\"\n\t\t\t\t\tdata-qa={qa}\n\t\t\t\t\tid={id}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\trole=\"dialog\"\n\t\t\t\t\tref={panelRef}\n\t\t\t\t>\n\t\t\t\t\t<MrlFocusTrap containerRef={panelRef} disableAutofocus={disableAutofocus}>\n\t\t\t\t\t\t<header className={classnames(styles['MrlPanel--header'], 'MrlPanel--header')}>\n\t\t\t\t\t\t\t{!header && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t\tstyles['MrlPanel--header-content'],\n\t\t\t\t\t\t\t\t\t\t'MrlPanel--header-content',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t[styles['MrlPanel--header-content-description']]: !!description\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MrlTextHeading\n\t\t\t\t\t\t\t\t\t\tclassName={styles['MrlPanel--title']}\n\t\t\t\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\t\t\t\t'data-qa': `${qa}-header-title`,\n\t\t\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\thierarchy=\"primary\"\n\t\t\t\t\t\t\t\t\t\tkind=\"title\"\n\t\t\t\t\t\t\t\t\t\tlevel=\"2\"\n\t\t\t\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\t\t\t\ttext={title}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{topActions && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyles['MrlPanel--top-actions'],\n\t\t\t\t\t\t\t\t\t\t\t\t\t'MrlPanel--top-actions'\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{topActions}\n\t\t\t\t\t\t\t\t\t\t\t\t<MrlDivider\n\t\t\t\t\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tlength=\"var(--mrl-spacing-06)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyles['MrlPanel--top-actions-divider'],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'MrlPanel--top-actions-divider'\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\tdata-qa={`${qa}-close-button`}\n\t\t\t\t\t\t\t\twrapperClassName={classnames(styles['MrlPanel--close'], 'MrlPanel--close')}\n\t\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</header>\n\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t * Scrollable container — includes description, sticky header and main\n\t\t\t\t\t\t * content. Per ACT rule 0ssw9k a scrollable element passes WCAG 2.1.1\n\t\t\t\t\t\t * Keyboard if it is itself focusable OR has a focusable descendant. We\n\t\t\t\t\t\t * therefore expose `tabindex=\"0\"` only when the wrapper has no focusable\n\t\t\t\t\t\t * descendants, which avoids the \"meaningless tab stop\" finding for\n\t\t\t\t\t\t * panels filled with interactive controls while still making text-only\n\t\t\t\t\t\t * panels keyboard-scrollable. The labeled `role=\"region\"` is preserved\n\t\t\t\t\t\t * whenever the panel overflows so screen-reader users get a landmark.\n\t\t\t\t\t\t * https://www.w3.org/WAI/standards-guidelines/act/rules/0ssw9k/\n\t\t\t\t\t\t */}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={scrollableContainerRef}\n\t\t\t\t\t\t\tdata-scroll-anchor={hasDataScrollAnchor}\n\t\t\t\t\t\t\tdata-qa={`${qa}-scrollable`}\n\t\t\t\t\t\t\tclassName={classnames(styles['MrlPanel--scrollable'], 'MrlPanel--scrollable', {\n\t\t\t\t\t\t\t\t[styles['MrlPanel--scrollable-has-sticky-header']]: hasStickyHeader\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t{...(verticalScrollbarWidth > 0 && {\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\tpaddingRight: `calc(var(--mrl-spacing-06) - ${verticalScrollbarWidth}px)`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t{...(hasVerticalScrollbar && {\n\t\t\t\t\t\t\t\t'aria-label': title\n\t\t\t\t\t\t\t\t\t? `${title} panel scrollable content`\n\t\t\t\t\t\t\t\t\t: 'Panel scrollable content',\n\t\t\t\t\t\t\t\trole: 'region',\n\t\t\t\t\t\t\t\t...(!hasFocusableDescendant && {\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n\t\t\t\t\t\t\t\t\ttabIndex: 0\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{description && (\n\t\t\t\t\t\t\t\t<MrlText\n\t\t\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\t\t\tclassName: classnames(styles['MrlPanel--description'], 'MrlPanel--description'),\n\t\t\t\t\t\t\t\t\t\tid: descriptionIdRef.current\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\t\t\ttext={description}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</MrlFocusTrap>\n\t\t\t\t</div>\n\t\t\t</MrlPanelContext.Provider>\n\t\t);\n\t}\n);\n"],"names":["MrlPanel","React","forwardRef","props","ref","className","title","id","children","hasStickyHeader","header","description","disableAutofocus","topActions","hasDataScrollAnchor","onClose","_props$dataQa","qa","rest","_objectWithoutProperties","_excluded","panelRef","useRef","descriptionIdRef","getUniqueId","_useScrollbarInfo","useScrollbarInfo","scrollableContainerRef","hasVerticalScrollbar","hasHorizontalScrollbar","horizontalScrollbarHeight","verticalScrollbarWidth","hasFocusableDescendant","useHasFocusableDescendant","useImperativeHandle","current","handleKeyDown","useCallback","e","key","preventDefault","stopPropagation","panelClasses","classnames","styles","createElement","MrlPanelContext","Provider","value","_extends","onKeyDown","role","MrlFocusTrap","containerRef","MrlTextHeading","attrs","concat","hierarchy","kind","level","size","text","Fragment","MrlDivider","orientation","spacing","length","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","close","onClick","state","position","tipAnchor","style","paddingRight","_objectSpread","tabIndex","MrlText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlPanel.js","sources":["../../../../../src/components/panel/MrlPanel/MrlPanel.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport styles from './MrlPanel.module.scss';\nimport { MrlIconButton } from '../../button';\nimport { MrlSvg } from '../../svg';\nimport { close } from '@muraldevkit/ds-icons';\nimport { MrlFocusTrap } from '../../focus-trap';\nimport { MrlText, MrlTextHeading } from '../../text';\nimport { MrlDivider } from '../../divider';\nimport { MrlPanelContext } from '../MrlPanelContext';\nimport { useHasFocusableDescendant } from '../../../hooks/useHasFocusableDescendant';\nimport { useScrollbarInfo } from '../../../hooks/useScrollbarInfo';\nimport { getUniqueId } from '../../../utils';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\n/**\n * Props for the MrlPanel component.\n */\ninterface MrlPanelProps extends React.ComponentPropsWithRef<'div'> {\n\t/**\n\t * A string value used for data-qa attribute.\n\t */\n\t['data-qa']?: string;\n\n\t/**\n\t * Callback function that is called when the panel is closed.\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * The custom header element to be rendered in the panel.\n\t * When a custom header is used developers need to provide th aria-label and aria-describedby.\n\t */\n\theader?: React.ReactNode;\n\n\t/**\n\t * The custom top actions to be rendered in the panel header.\n\t * By default top actions are rendered on the right side of the title and include a MrlDivider at the end.\n\t * The close button should not be included as part of the top actions.\n\t */\n\ttopActions?: React.ReactNode;\n\n\t/**\n\t * The title of the panel.\n\t */\n\ttitle?: string;\n\n\t/**\n\t * The description of the panel.\n\t */\n\tdescription?: string;\n\n\t/**\n\t * Specifies whether to disable autofocus on the panel.\n\t */\n\tdisableAutofocus?: boolean;\n\n\t/**\n\t * Specifies whether the panel has a sticky header to adjust styles.\n\t */\n\thasStickyHeader?: boolean;\n\n\t/**\n\t * hasDataScrollAnchor is required to enable infinite scroll\n\t */\n\thasDataScrollAnchor?: boolean;\n\n\t/**\n\t * Enables interaction tracking for this panel. Provide a stable, non-PII id\n\t * (e.g. 'comments-panel'). When omitted, the panel emits no analytics.\n\t *\n\t * `open` is emitted when the panel mounts, since consumers control the panel's\n\t * presence by rendering it.\n\t */\n\teventId?: string;\n}\n\n/**\n * MrlPanel component.\n *\n * @param props The MrlPanel component properties.\n * @returns The MrlPanel component.\n */\nexport const MrlPanel = React.forwardRef<HTMLDivElement, MrlPanelProps>(\n\tfunction MrlPanel(props, ref): JSX.Element {\n\t\tconst {\n\t\t\tclassName,\n\t\t\ttitle,\n\t\t\tid,\n\t\t\tchildren,\n\t\t\thasStickyHeader,\n\t\t\theader,\n\t\t\tdescription,\n\t\t\tdisableAutofocus,\n\t\t\ttopActions,\n\t\t\thasDataScrollAnchor,\n\t\t\tonClose,\n\t\t\teventId,\n\t\t\t['data-qa']: qa = 'panel',\n\t\t\t...rest\n\t\t} = props;\n\n\t\tconst panelRef = React.useRef<HTMLDivElement>(null);\n\n\t\tconst trackInteraction = useMrlTrackInteraction('MrlPanel', eventId);\n\n\t\tReact.useEffect(() => {\n\t\t\ttrackInteraction({ action: 'open' });\n\t\t\t// the panel is open for as long as the consumer renders it\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, []);\n\n\t\t/**\n\t\t * Handles closing the panel from both the close button and the escape key.\n\t\t */\n\t\tconst handleClose = React.useCallback(() => {\n\t\t\ttrackInteraction({ action: 'close' });\n\n\t\t\tonClose?.();\n\t\t}, [onClose, trackInteraction]);\n\n\t\t// Unique ID for aria-describedby\n\t\tconst descriptionIdRef = React.useRef<string>(\n\t\t\tdescription ? getUniqueId('mrl-panel-description') : ''\n\t\t);\n\n\t\tconst {\n\t\t\tscrollableContainerRef,\n\t\t\thasVerticalScrollbar,\n\t\t\thasHorizontalScrollbar,\n\t\t\thorizontalScrollbarHeight,\n\t\t\tverticalScrollbarWidth\n\t\t} = useScrollbarInfo<HTMLDivElement>();\n\n\t\tconst hasFocusableDescendant = useHasFocusableDescendant(scrollableContainerRef);\n\n\t\tReact.useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(ref, () => {\n\t\t\treturn panelRef.current;\n\t\t});\n\n\t\tconst handleKeyDown = React.useCallback(\n\t\t\t(e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\t\tif (e.key === 'Escape' && typeof onClose === 'function') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\thandleClose();\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onClose, handleClose]\n\t\t);\n\n\t\tconst panelClasses = classnames(styles['MrlPanel'], 'MrlPanel', className);\n\n\t\treturn (\n\t\t\t<MrlPanelContext.Provider\n\t\t\t\tvalue={{\n\t\t\t\t\thasHorizontalScrollbar,\n\t\t\t\t\thasVerticalScrollbar,\n\t\t\t\t\thorizontalScrollbarHeight,\n\t\t\t\t\tverticalScrollbarWidth\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n\t\t\t\t<div\n\t\t\t\t\t{...rest}\n\t\t\t\t\tclassName={panelClasses}\n\t\t\t\t\taria-describedby={descriptionIdRef.current || props['aria-describedby']}\n\t\t\t\t\taria-label={title || props['aria-label']}\n\t\t\t\t\taria-modal=\"false\"\n\t\t\t\t\tdata-qa={qa}\n\t\t\t\t\tid={id}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\trole=\"dialog\"\n\t\t\t\t\tref={panelRef}\n\t\t\t\t>\n\t\t\t\t\t<MrlFocusTrap containerRef={panelRef} disableAutofocus={disableAutofocus}>\n\t\t\t\t\t\t<header className={classnames(styles['MrlPanel--header'], 'MrlPanel--header')}>\n\t\t\t\t\t\t\t{!header && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t\tstyles['MrlPanel--header-content'],\n\t\t\t\t\t\t\t\t\t\t'MrlPanel--header-content',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t[styles['MrlPanel--header-content-description']]: !!description\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MrlTextHeading\n\t\t\t\t\t\t\t\t\t\tclassName={styles['MrlPanel--title']}\n\t\t\t\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\t\t\t\t'data-qa': `${qa}-header-title`,\n\t\t\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\thierarchy=\"primary\"\n\t\t\t\t\t\t\t\t\t\tkind=\"title\"\n\t\t\t\t\t\t\t\t\t\tlevel=\"2\"\n\t\t\t\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\t\t\t\ttext={title}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{topActions && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyles['MrlPanel--top-actions'],\n\t\t\t\t\t\t\t\t\t\t\t\t\t'MrlPanel--top-actions'\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{topActions}\n\t\t\t\t\t\t\t\t\t\t\t\t<MrlDivider\n\t\t\t\t\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tspacing=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tlength=\"var(--mrl-spacing-06)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyles['MrlPanel--top-actions-divider'],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'MrlPanel--top-actions-divider'\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\tdata-qa={`${qa}-close-button`}\n\t\t\t\t\t\t\t\twrapperClassName={classnames(styles['MrlPanel--close'], 'MrlPanel--close')}\n\t\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\t\tonClick={handleClose}\n\t\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</header>\n\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t * Scrollable container — includes description, sticky header and main\n\t\t\t\t\t\t * content. Per ACT rule 0ssw9k a scrollable element passes WCAG 2.1.1\n\t\t\t\t\t\t * Keyboard if it is itself focusable OR has a focusable descendant. We\n\t\t\t\t\t\t * therefore expose `tabindex=\"0\"` only when the wrapper has no focusable\n\t\t\t\t\t\t * descendants, which avoids the \"meaningless tab stop\" finding for\n\t\t\t\t\t\t * panels filled with interactive controls while still making text-only\n\t\t\t\t\t\t * panels keyboard-scrollable. The labeled `role=\"region\"` is preserved\n\t\t\t\t\t\t * whenever the panel overflows so screen-reader users get a landmark.\n\t\t\t\t\t\t * https://www.w3.org/WAI/standards-guidelines/act/rules/0ssw9k/\n\t\t\t\t\t\t */}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={scrollableContainerRef}\n\t\t\t\t\t\t\tdata-scroll-anchor={hasDataScrollAnchor}\n\t\t\t\t\t\t\tdata-qa={`${qa}-scrollable`}\n\t\t\t\t\t\t\tclassName={classnames(styles['MrlPanel--scrollable'], 'MrlPanel--scrollable', {\n\t\t\t\t\t\t\t\t[styles['MrlPanel--scrollable-has-sticky-header']]: hasStickyHeader\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t{...(verticalScrollbarWidth > 0 && {\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\tpaddingRight: `calc(var(--mrl-spacing-06) - ${verticalScrollbarWidth}px)`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t{...(hasVerticalScrollbar && {\n\t\t\t\t\t\t\t\t'aria-label': title\n\t\t\t\t\t\t\t\t\t? `${title} panel scrollable content`\n\t\t\t\t\t\t\t\t\t: 'Panel scrollable content',\n\t\t\t\t\t\t\t\trole: 'region',\n\t\t\t\t\t\t\t\t...(!hasFocusableDescendant && {\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n\t\t\t\t\t\t\t\t\ttabIndex: 0\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{description && (\n\t\t\t\t\t\t\t\t<MrlText\n\t\t\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\t\t\tclassName: classnames(styles['MrlPanel--description'], 'MrlPanel--description'),\n\t\t\t\t\t\t\t\t\t\tid: descriptionIdRef.current\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\t\t\ttext={description}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</MrlFocusTrap>\n\t\t\t\t</div>\n\t\t\t</MrlPanelContext.Provider>\n\t\t);\n\t}\n);\n"],"names":["MrlPanel","React","forwardRef","props","ref","className","title","id","children","hasStickyHeader","header","description","disableAutofocus","topActions","hasDataScrollAnchor","onClose","eventId","_props$dataQa","qa","rest","_objectWithoutProperties","_excluded","panelRef","useRef","trackInteraction","useMrlTrackInteraction","useEffect","action","handleClose","useCallback","descriptionIdRef","getUniqueId","_useScrollbarInfo","useScrollbarInfo","scrollableContainerRef","hasVerticalScrollbar","hasHorizontalScrollbar","horizontalScrollbarHeight","verticalScrollbarWidth","hasFocusableDescendant","useHasFocusableDescendant","useImperativeHandle","current","handleKeyDown","e","key","preventDefault","stopPropagation","panelClasses","classnames","styles","createElement","MrlPanelContext","Provider","value","_extends","onKeyDown","role","MrlFocusTrap","containerRef","MrlTextHeading","attrs","concat","hierarchy","kind","level","size","text","Fragment","MrlDivider","orientation","spacing","length","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","close","onClick","state","position","tipAnchor","style","paddingRight","_objectSpread","tabIndex","MrlText"],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ import { getOffset } from './utilities/get-offset.js';
|
|
|
17
17
|
import { useMrlPopoverEventHandlers } from './hooks/use-mrl-popover-event-handlers.js';
|
|
18
18
|
import { MrlPopoverContext } from './context/MrlPopoverContext.js';
|
|
19
19
|
import { MrlPopoverScrollContainer } from './MrlPopoverScrollContainer.js';
|
|
20
|
+
import { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics/useMrlAnalytics.js';
|
|
20
21
|
import { getFocusableElementsInsideElement } from '../../../utils/trapFocus/index.js';
|
|
21
22
|
import { MrlFocusTrap } from '../../focus-trap/MrlFocusTrap/MrlFocusTrap.js';
|
|
22
23
|
import { isElementAriaDisabled } from '../../../utils/isElementAriaDisabled/isElementAriaDisabled.js';
|
|
@@ -26,7 +27,7 @@ import { MrlPortal } from '../../portal/MrlPortal.js';
|
|
|
26
27
|
import { MrlIconButton } from '../../button/MrlIconButton/MrlIconButton.js';
|
|
27
28
|
import { MrlSvg } from '../../svg/MrlSvg/MrlSvg.js';
|
|
28
29
|
|
|
29
|
-
var _excluded = ["alignment", "ariaLabel", "ariaLabelledBy", "children", "className", "customPosition", "disableClickToOpen", "disableClickOutside", "disableFlipping", "disableFocusTrap", "hasCloseButton", "spacing", "id", "isSubMenu", "actionState", "position", "point", "portalProps", "kind", "offset", "onClose", "onOpen", "triggerRef"];
|
|
30
|
+
var _excluded = ["alignment", "ariaLabel", "ariaLabelledBy", "children", "className", "customPosition", "disableClickToOpen", "disableClickOutside", "disableFlipping", "disableFocusTrap", "hasCloseButton", "spacing", "id", "isSubMenu", "actionState", "position", "point", "portalProps", "kind", "offset", "onClose", "onOpen", "eventId", "triggerRef"];
|
|
30
31
|
var POPOVER_CLICKOUTSIDE_WHITELIST = ['#mrl-select-portal', '#mrl-popover-menu-portal', ".".concat(SELECT_MENU_LIST_CLASS_NAME), ".".concat(MULTI_SELECT_MENU_LIST_CLASS_NAME)];
|
|
31
32
|
/**
|
|
32
33
|
* MrlPopover
|
|
@@ -76,6 +77,7 @@ function MrlPopover(_ref) {
|
|
|
76
77
|
offset = _ref.offset,
|
|
77
78
|
onClose = _ref.onClose,
|
|
78
79
|
onOpen = _ref.onOpen,
|
|
80
|
+
eventId = _ref.eventId,
|
|
79
81
|
triggerRef = _ref.triggerRef,
|
|
80
82
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
81
83
|
var _React$useState = React.useState({
|
|
@@ -85,6 +87,21 @@ function MrlPopover(_ref) {
|
|
|
85
87
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
86
88
|
state = _React$useState2[0],
|
|
87
89
|
setState = _React$useState2[1];
|
|
90
|
+
var trackInteraction = useMrlTrackInteraction('MrlPopover', eventId);
|
|
91
|
+
// the popover opens and closes from several paths (trigger click, keyboard, click
|
|
92
|
+
// outside, close button), so open/close is emitted from the resulting state.
|
|
93
|
+
var wasOpenRef = React.useRef(actionState.isOpen || false);
|
|
94
|
+
React.useEffect(() => {
|
|
95
|
+
if (wasOpenRef.current === state.isOpen) return;
|
|
96
|
+
wasOpenRef.current = state.isOpen;
|
|
97
|
+
trackInteraction({
|
|
98
|
+
action: state.isOpen ? 'open' : 'close',
|
|
99
|
+
metadata: {
|
|
100
|
+
isSubMenu
|
|
101
|
+
},
|
|
102
|
+
variant: position
|
|
103
|
+
});
|
|
104
|
+
}, [state.isOpen, isSubMenu, position, trackInteraction]);
|
|
88
105
|
|
|
89
106
|
// stores all of the interactive elements in the popover for focus management
|
|
90
107
|
var _React$useState3 = React.useState([]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlPopover.js","sources":["../../../../../src/components/popover/MrlPopover/MrlPopover.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { close } from '@muraldevkit/ds-icons';\nimport { MrlFocusTrap, MrlIconButton, MrlPortal, MrlSvg, PortalProps } from '../../';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useBrowserEdgeScroll } from '../../menu/hooks/useBrowserEdgeScroll';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../../menu/hooks/useSubMenuElementPosition';\nimport { MenuPosition, MenuAlignment, ActionState, CustomMenuPosition } from '../../menu/constants';\nimport {\n\tpreventDefault,\n\tgetFocusableElementsInsideElement,\n\tfindAdjacentInteractiveElement,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport { useTransition, animated } from '@react-spring/web';\nimport { SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlSelect/MrlSelect';\nimport { MULTI_SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlMultiSelect/MrlMultiSelect';\nimport styles from './MrlPopover.module.scss';\nimport { flipPosition } from '../../menu/utilities/flip-position';\nimport { getDataPoint } from './utilities/get-data-point';\nimport { getOffset } from './utilities/get-offset';\nimport { useMrlPopoverEventHandlers } from './hooks/use-mrl-popover-event-handlers';\nimport { MrlPopoverContext } from './context/MrlPopoverContext';\nimport { MrlPopoverScrollContainer } from './MrlPopoverScrollContainer';\n\nconst POPOVER_CLICKOUTSIDE_WHITELIST = [\n\t'#mrl-select-portal',\n\t'#mrl-popover-menu-portal',\n\t`.${SELECT_MENU_LIST_CLASS_NAME}`,\n\t`.${MULTI_SELECT_MENU_LIST_CLASS_NAME}`\n];\n\ntype RenderPropFn = ({ closeMenu }: { closeMenu: () => void }) => JSX.Element;\n\nexport interface MrlPopoverProps {\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/** Label for the popover */\n\tariaLabel?: string;\n\n\t/** ID of element to associate a label */\n\tariaLabelledBy?: string;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode | RenderPropFn;\n\n\t/** Custom class names for the popover */\n\tclassName?: string;\n\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/**\n\t * If the popover should disable click to open\n\t *\n\t * Example usage: if you do not want your component opened via click, set to true\n\t */\n\tdisableClickToOpen?: boolean;\n\n\t/**\n\t * If the popover should close when clicking outside of the menu\n\t *\n\t * Example usage: MrlCallout component should not close when clicking outside, so it's set to true\n\t */\n\tdisableClickOutside?: boolean;\n\n\t/**\n\t * Disable flipping of the popover when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/**\n\t * If the popover should disable focus trap\n\t *\n\t * The impact of enabling or disabling focus trap:\n\t * - enabled : focus will remain trapped in the popover until a user closes the popover\n\t * - disabled : focus will move to the next interactive element in the DOM when the user\n\t * tabs out of the popover. Focus will move to the trigger when the user shift+tabs out of the popover\n\t *\n\t * Additional scenarios to consider with focus trap is disabled. When hasCloseButton is set to true/false:\n\t * - true : if a user shows the close button, the popover will stay open until explicitly dismissed\n\t * - false : if a user hides the close button, the popover will close when a user tabs out of it from the beginning or end\n\t */\n\tdisableFocusTrap?: boolean;\n\n\t/** If the popover should have a close button */\n\thasCloseButton?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/** If the menu is a submenu */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t *\n\t * This does not impact submenus\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Alignment of the popover along the axis perpendicular to its position\n\t * - For position 'top'/'bottom': 'start' = left, 'end' = right, 'center' = center horizontally\n\t * - For position 'left'/'right': 'start' = top, 'end' = bottom, 'center' = center vertically\n\t *\n\t * @default 'center'\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * spacing of menu\n\t * - 'default' has 16px padding\n\t * - 'compact' has 12px padding\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLElement>;\n\n\t/**\n\t * If the menu should be rendered with the inverse theme\n\t * @default 'primary'\n\t */\n\tkind?: 'primary' | 'inverse';\n\n\t/**\n\t * If the menu should have a pointer element\n\t * @default false\n\t */\n\tpoint?: boolean;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Offset in pixels for the popover\n\t *\n\t * The popover automatically calculates the proper offset based on the position and alignment\n\t * this prop will override those values.\n\t */\n\toffset?: number;\n\n\t/**\n\t * Callback to be called when the menu is opened\n\t */\n\tonOpen?: () => void;\n\n\t/**\n\t * Callback to be called when the menu is closed\n\t * @param type - type of close event\n\t */\n\tonClose?: (type?: string) => void;\n\n\t/**\n\t * data-qa attribute for the popover\n\t */\n\t['data-qa']?: string;\n}\n\n/**\n * MrlPopover\n *\n * Renders a popover component with position and alignment relative to a trigger element\n * @param {MrlPopoverProps} props - The props for the MrlPopover component\n * @returns {Element} - rendered MrlPopover component\n */\nexport function MrlPopover({\n\talignment = 'center',\n\tariaLabel,\n\tariaLabelledBy,\n\tchildren,\n\tclassName,\n\tcustomPosition,\n\tdisableClickToOpen = false,\n\tdisableClickOutside = false,\n\tdisableFlipping = false,\n\tdisableFocusTrap = false,\n\thasCloseButton = false,\n\tspacing = 'default',\n\tid,\n\tisSubMenu = false,\n\tactionState = { actionType: null, isOpen: false },\n\tposition = 'bottom',\n\tpoint = true,\n\tportalProps = { id: PORTAL_LAYERS.POPOVER.name },\n\tkind = 'primary',\n\toffset,\n\tonClose,\n\tonOpen,\n\ttriggerRef,\n\t...rest\n}: MrlPopoverProps): JSX.Element {\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: actionState.isOpen || false\n\t} as ActionState);\n\n\t// stores all of the interactive elements in the popover for focus management\n\tconst [interactiveElements, setInteractiveElements] = React.useState<HTMLElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\t/** Snapshot of trigger `aria-expanded` before we manage it; restored on popover unmount only. */\n\tconst triggerExpandedRestoreRef = React.useRef<{\n\t\tel: HTMLElement;\n\t\tvalue: string | null;\n\t} | null>(null);\n\n\t/**\n\t * Checks if the trigger element is disabled\n\t * @returns {boolean} - true if the trigger element is disabled, false otherwise\n\t */\n\tconst isTriggerDisabled = React.useCallback((): boolean => {\n\t\treturn isElementAriaDisabled(triggerRef?.current);\n\t}, [triggerRef]);\n\n\t/**\n\t * Opening and closing the menu\n\t */\n\tconst closeMenu = React.useCallback(() => {\n\t\tsetState({ actionType: null, isOpen: false });\n\t\tonClose?.();\n\t}, [onClose]);\n\n\tconst {\n\t\thandleClose,\n\t\thandleMenuKey,\n\t\thideMenuHover,\n\t\thandleTriggerSiblingKey,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\tshowMenuHover\n\t} = useMrlPopoverEventHandlers({\n\t\tcloseMenu,\n\t\tdisableClickToOpen,\n\t\tdisableFocusTrap,\n\t\thasCloseButton,\n\t\tinteractiveElements,\n\t\tisSubMenu,\n\t\tisTriggerDisabled,\n\t\tmenuRef,\n\t\tsetState,\n\t\tstate,\n\t\ttriggerRef\n\t});\n\n\tuseClickOutside(\n\t\tmenuRef,\n\t\ttriggerRef,\n\t\t'mouseup',\n\t\tcloseMenu,\n\t\tdisableClickOutside || !state.isOpen,\n\t\tPOPOVER_CLICKOUTSIDE_WHITELIST\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isTriggerDisabled()) return;\n\n\t\tif (!isSubMenu) {\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isSubMenu, actionState.actionType, actionState.isOpen]);\n\n\t// This use effect handles storing the rect in state for positioning calculations\n\tReact.useLayoutEffect(() => {\n\t\tif (!state.isOpen) return;\n\n\t\t// For consistent calculations, we are storing the menu rect in state\n\t\t// Anytime we need to use the menu rect, we want to make sure the values are based\n\t\t// on the original state of the menu for proper transformations\n\t\tif (!menuRect && menuRef.current) {\n\t\t\tconst newRect = menuRef.current?.getBoundingClientRect();\n\t\t\tsetMenuRect(newRect || null);\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, isSubMenu]);\n\n\t// This use effect handles getting and setting the interactive elements in the popover.\n\t// These elements are used for focus management when focus trap is not enabled to ensure\n\t// that our tab order matches the visual order of the page\n\tReact.useEffect(() => {\n\t\tif (state.isOpen && !isSubMenu && menuRef.current) {\n\t\t\tif (disableFocusTrap) {\n\t\t\t\t// set the interactive elements so we can track focus location\n\t\t\t\tconst elements = getFocusableElementsInsideElement(menuRef.current as HTMLElement);\n\t\t\t\tsetInteractiveElements(elements);\n\n\t\t\t\t// without focus trap enabled, we want to focus the first interactive element\n\t\t\t\telements[0].focus();\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRef.current]);\n\n\t// This use effect handles setting all of the event handlers for different parts of the component.\n\t// - trigger event handlers\n\t// - submenu event handlers\n\t// - menu event handlers\n\t// - \"next element\" event handlers, which are event handlers attached to the next interactive element after the trigger\n\t//\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef, 'next');\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', (e) => e.stopPropagation());\n\t\t\ttriggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\tif (nextElement) nextElement.addEventListener('keydown', handleTriggerSiblingKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\tconst menuElement = menuRef?.current;\n\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\n\n\t\t\t\tif (menuElement) {\n\t\t\t\t\tmenuElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\t\tmenuElement.addEventListener('mouseout', hideMenuHover);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\ttriggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (nextElement) nextElement.removeEventListener('keydown', handleTriggerSiblingKey);\n\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\ttriggerElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\ttriggerElement.removeEventListener('mouseout', hideMenuHover);\n\n\t\t\t\t\tif (menuElement) {\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseout', hideMenuHover);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\tcloseMenu,\n\t\tisSubMenu,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\ttriggerRef?.current,\n\t\thideMenuHover,\n\t\tshowMenuHover,\n\t\thasCloseButton,\n\t\thandleClose\n\t]);\n\n\t/**\n\t * Popover triggers are not necessarily modal dialogs; use the generic 'true' (see ARIA in HTML).\n\t * Restore the previous DOM value when the trigger changes or this popover unmounts so host-owned\n\t * ARIA (e.g. aria-haspopup=\"menu\") is not left stale after a callout dismisses.\n\t */\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\tconst previousValue = el.getAttribute('aria-haspopup');\n\t\tel.setAttribute('aria-haspopup', 'true');\n\n\t\t// Restore the previous value of the aria-haspopup attribute when the callout is removed from the DOM\n\t\treturn () => {\n\t\t\tif (previousValue === null) {\n\t\t\t\tel.removeAttribute('aria-haspopup');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-haspopup', previousValue);\n\t\t\t}\n\t\t};\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [triggerRef?.current]);\n\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\t// Store the previous value of the aria-expanded attribute when the callout is added to the DOM\n\t\tif (!triggerExpandedRestoreRef.current || triggerExpandedRestoreRef.current.el !== el) {\n\t\t\ttriggerExpandedRestoreRef.current = {\n\t\t\t\tel,\n\t\t\t\tvalue: el.hasAttribute('aria-expanded') ? el.getAttribute('aria-expanded') : null\n\t\t\t};\n\t\t}\n\n\t\t// Set the aria-expanded attribute to the current state of the popover\n\t\tel.setAttribute('aria-expanded', state.isOpen.toString());\n\n\t\tif (state.isOpen) onOpen?.();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, onOpen, triggerRef?.current]);\n\n\t/**\n\t * Restore the previous value of the aria-expanded attribute when the callout is removed from the DOM\n\t */\n\tReact.useEffect(() => {\n\t\treturn () => {\n\t\t\tconst snap = triggerExpandedRestoreRef.current;\n\t\t\tif (!snap) return;\n\t\t\tconst { el, value } = snap;\n\n\t\t\tif (!document?.documentElement?.contains(el)) return;\n\n\t\t\tif (value === null) {\n\t\t\t\tel.removeAttribute('aria-expanded');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-expanded', value);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\t/**\n\t * Setup positioning styles, submenu positioning styles, scroll styles, and transition.\n\t */\n\tconst memoizedCustomPosition = React.useMemo(() => customPosition, [customPosition]);\n\tconst customPopoverPosition = memoizedCustomPosition || { left: 0, top: 0 };\n\n\tconst menuPosition = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPopoverPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\toffset || getOffset(position, point),\n\t\tisSubMenu,\n\t\tdisableFlipping\n\t);\n\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t!isSubMenu\n\t);\n\n\tconst menuPositionState = menuPosition.flipped ? flipPosition(position) : position;\n\tconst scrollStyles = useBrowserEdgeScroll(menuRef, menuPositionState, alignment);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPosition.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPosition.top\n\t\t},\n\t\tsubmenu: {\n\t\t\tleft: subMenuPosition.left,\n\t\t\ttop: subMenuPosition.top\n\t\t}\n\t};\n\n\t/**\n\t * React Spring transitions for the menu\n\t */\n\tconst transitions = useTransition(state.isOpen, {\n\t\tconfig: { duration: 150 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' },\n\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\tleave: { opacity: 0, transform: 'translateY(4px)' }\n\t});\n\n\tconst menuClasses = classnames(\n\t\tstyles['MrlPopover'],\n\t\t'MrlPopover',\n\t\tstyles['MrlPopover--scrolling'],\n\t\tclassName,\n\t\t{\n\t\t\t[styles['MrlPopover--submenu']]: isSubMenu,\n\t\t\t[styles['inverse']]: kind === 'inverse',\n\t\t\t[styles['primary']]: kind === 'primary',\n\t\t\t[styles['compact']]: spacing === 'compact',\n\t\t\t[styles['default']]: spacing === 'default'\n\t\t}\n\t);\n\n\tconst positionStyles = isSubMenu ? inlineStyles.submenu : inlineStyles.menu;\n\n\tconst renderMenu = () => {\n\t\tconst inlineScrollStyles = isSubMenu ? {} : scrollStyles ? scrollStyles.styles : {};\n\t\tconst scrollClasses = classnames(\n\t\t\tstyles['MrlPopover--content'],\n\t\t\tstyles['MrlPopover--scrolling--content']\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{transitions(\n\t\t\t\t\t(style, item) =>\n\t\t\t\t\t\titem && (\n\t\t\t\t\t\t\t<MrlFocusTrap disabled={disableFocusTrap} containerRef={menuRef}>\n\t\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MrlPopoverScrollContainer className={scrollClasses} style={inlineScrollStyles}>\n\t\t\t\t\t\t\t\t\t\t{typeof children === 'function' && children({ closeMenu })}\n\t\t\t\t\t\t\t\t\t\t{typeof children !== 'function' && children}\n\t\t\t\t\t\t\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\t\t\t\t\tdata-qa=\"popover-close-button\"\n\t\t\t\t\t\t\t\t\t\t\t\twrapperClassName={styles['MrlPopover--close']}\n\t\t\t\t\t\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\t\t\t\t\t\tkind={kind === 'inverse' ? 'ghost-inverse' : 'ghost'}\n\t\t\t\t\t\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t\t\t\t\t\tposition=\"right\"\n\t\t\t\t\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseUp={closeMenu}\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={handleClose}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{point && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={styles['MrlPopover--point']}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-point={getDataPoint(menuPositionState, alignment)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</MrlPopoverScrollContainer>\n\t\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t\t</MrlFocusTrap>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t/* eslint-disable */\n\treturn (\n\t\t<MrlPopoverContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.POPOVER} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlPopoverContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlPopover.componentType = 'Popover';\n"],"names":["POPOVER_CLICKOUTSIDE_WHITELIST","concat","SELECT_MENU_LIST_CLASS_NAME","MULTI_SELECT_MENU_LIST_CLASS_NAME","MrlPopover","_ref","_ref$alignment","alignment","ariaLabel","ariaLabelledBy","children","className","customPosition","_ref$disableClickToOp","disableClickToOpen","_ref$disableClickOuts","disableClickOutside","_ref$disableFlipping","disableFlipping","_ref$disableFocusTrap","disableFocusTrap","_ref$hasCloseButton","hasCloseButton","_ref$spacing","spacing","id","_ref$isSubMenu","isSubMenu","_ref$actionState","actionState","actionType","isOpen","_ref$position","position","_ref$point","point","_ref$portalProps","portalProps","PORTAL_LAYERS","POPOVER","name","_ref$kind","kind","offset","onClose","onOpen","triggerRef","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","_React$useState3","_React$useState4","interactiveElements","setInteractiveElements","_React$useState5","_React$useState6","menuRect","setMenuRect","menuRef","useRef","triggerExpandedRestoreRef","isTriggerDisabled","useCallback","isElementAriaDisabled","current","closeMenu","_useMrlPopoverEventHa","useMrlPopoverEventHandlers","handleClose","handleMenuKey","hideMenuHover","handleTriggerSiblingKey","toggleMenuKey","toggleMenuTrigger","showMenuHover","useClickOutside","useEffect","useLayoutEffect","_menuRef$current","newRect","getBoundingClientRect","elements","getFocusableElementsInsideElement","focus","triggerElement","menuElement","nextElement","findAdjacentInteractiveElement","addEventListener","e","stopPropagation","removeEventListener","preventDefault","el","previousValue","getAttribute","setAttribute","removeAttribute","value","hasAttribute","toString","_document","_document$documentEle","snap","document","documentElement","contains","memoizedCustomPosition","useMemo","customPopoverPosition","left","top","menuPosition","useTriggerPosition","align","getOffset","subMenuPosition","useSubMenuElementPosition","menuPositionState","flipped","flipPosition","scrollStyles","useBrowserEdgeScroll","inlineStyles","menu","submenu","transitions","useTransition","config","duration","enter","opacity","transform","from","leave","menuClasses","classnames","styles","positionStyles","renderMenu","inlineScrollStyles","scrollClasses","createElement","Fragment","style","item","MrlFocusTrap","disabled","containerRef","animated","div","_extends","tabIndex","_objectSpread","onKeyDown","ref","MrlPopoverScrollContainer","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","close","text","tipAnchor","onMouseUp","size","getDataPoint","MrlPopoverContext","Provider","MrlPortal","layer","componentType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlPopover.js","sources":["../../../../../src/components/popover/MrlPopover/MrlPopover.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { close } from '@muraldevkit/ds-icons';\nimport { MrlFocusTrap, MrlIconButton, MrlPortal, MrlSvg, PortalProps } from '../../';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useBrowserEdgeScroll } from '../../menu/hooks/useBrowserEdgeScroll';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../../menu/hooks/useSubMenuElementPosition';\nimport { MenuPosition, MenuAlignment, ActionState, CustomMenuPosition } from '../../menu/constants';\nimport {\n\tpreventDefault,\n\tgetFocusableElementsInsideElement,\n\tfindAdjacentInteractiveElement,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport { useTransition, animated } from '@react-spring/web';\nimport { SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlSelect/MrlSelect';\nimport { MULTI_SELECT_MENU_LIST_CLASS_NAME } from '../../form/select/MrlMultiSelect/MrlMultiSelect';\nimport styles from './MrlPopover.module.scss';\nimport { flipPosition } from '../../menu/utilities/flip-position';\nimport { getDataPoint } from './utilities/get-data-point';\nimport { getOffset } from './utilities/get-offset';\nimport { useMrlPopoverEventHandlers } from './hooks/use-mrl-popover-event-handlers';\nimport { MrlPopoverContext } from './context/MrlPopoverContext';\nimport { MrlPopoverScrollContainer } from './MrlPopoverScrollContainer';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nconst POPOVER_CLICKOUTSIDE_WHITELIST = [\n\t'#mrl-select-portal',\n\t'#mrl-popover-menu-portal',\n\t`.${SELECT_MENU_LIST_CLASS_NAME}`,\n\t`.${MULTI_SELECT_MENU_LIST_CLASS_NAME}`\n];\n\ntype RenderPropFn = ({ closeMenu }: { closeMenu: () => void }) => JSX.Element;\n\nexport interface MrlPopoverProps {\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/** Label for the popover */\n\tariaLabel?: string;\n\n\t/** ID of element to associate a label */\n\tariaLabelledBy?: string;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode | RenderPropFn;\n\n\t/** Custom class names for the popover */\n\tclassName?: string;\n\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/**\n\t * If the popover should disable click to open\n\t *\n\t * Example usage: if you do not want your component opened via click, set to true\n\t */\n\tdisableClickToOpen?: boolean;\n\n\t/**\n\t * If the popover should close when clicking outside of the menu\n\t *\n\t * Example usage: MrlCallout component should not close when clicking outside, so it's set to true\n\t */\n\tdisableClickOutside?: boolean;\n\n\t/**\n\t * Disable flipping of the popover when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/**\n\t * If the popover should disable focus trap\n\t *\n\t * The impact of enabling or disabling focus trap:\n\t * - enabled : focus will remain trapped in the popover until a user closes the popover\n\t * - disabled : focus will move to the next interactive element in the DOM when the user\n\t * tabs out of the popover. Focus will move to the trigger when the user shift+tabs out of the popover\n\t *\n\t * Additional scenarios to consider with focus trap is disabled. When hasCloseButton is set to true/false:\n\t * - true : if a user shows the close button, the popover will stay open until explicitly dismissed\n\t * - false : if a user hides the close button, the popover will close when a user tabs out of it from the beginning or end\n\t */\n\tdisableFocusTrap?: boolean;\n\n\t/** If the popover should have a close button */\n\thasCloseButton?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/** If the menu is a submenu */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t *\n\t * This does not impact submenus\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Alignment of the popover along the axis perpendicular to its position\n\t * - For position 'top'/'bottom': 'start' = left, 'end' = right, 'center' = center horizontally\n\t * - For position 'left'/'right': 'start' = top, 'end' = bottom, 'center' = center vertically\n\t *\n\t * @default 'center'\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * spacing of menu\n\t * - 'default' has 16px padding\n\t * - 'compact' has 12px padding\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLElement>;\n\n\t/**\n\t * If the menu should be rendered with the inverse theme\n\t * @default 'primary'\n\t */\n\tkind?: 'primary' | 'inverse';\n\n\t/**\n\t * If the menu should have a pointer element\n\t * @default false\n\t */\n\tpoint?: boolean;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Offset in pixels for the popover\n\t *\n\t * The popover automatically calculates the proper offset based on the position and alignment\n\t * this prop will override those values.\n\t */\n\toffset?: number;\n\n\t/**\n\t * Callback to be called when the menu is opened\n\t */\n\tonOpen?: () => void;\n\n\t/**\n\t * Callback to be called when the menu is closed\n\t * @param type - type of close event\n\t */\n\tonClose?: (type?: string) => void;\n\n\t/**\n\t * data-qa attribute for the popover\n\t */\n\t['data-qa']?: string;\n\n\t/**\n\t * Enables interaction tracking for this popover. Provide a stable, non-PII id\n\t * (e.g. 'sticky-note-color-picker'). When omitted, the popover emits no analytics.\n\t */\n\teventId?: string;\n}\n\n/**\n * MrlPopover\n *\n * Renders a popover component with position and alignment relative to a trigger element\n * @param {MrlPopoverProps} props - The props for the MrlPopover component\n * @returns {Element} - rendered MrlPopover component\n */\nexport function MrlPopover({\n\talignment = 'center',\n\tariaLabel,\n\tariaLabelledBy,\n\tchildren,\n\tclassName,\n\tcustomPosition,\n\tdisableClickToOpen = false,\n\tdisableClickOutside = false,\n\tdisableFlipping = false,\n\tdisableFocusTrap = false,\n\thasCloseButton = false,\n\tspacing = 'default',\n\tid,\n\tisSubMenu = false,\n\tactionState = { actionType: null, isOpen: false },\n\tposition = 'bottom',\n\tpoint = true,\n\tportalProps = { id: PORTAL_LAYERS.POPOVER.name },\n\tkind = 'primary',\n\toffset,\n\tonClose,\n\tonOpen,\n\teventId,\n\ttriggerRef,\n\t...rest\n}: MrlPopoverProps): JSX.Element {\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: actionState.isOpen || false\n\t} as ActionState);\n\n\tconst trackInteraction = useMrlTrackInteraction('MrlPopover', eventId);\n\t// the popover opens and closes from several paths (trigger click, keyboard, click\n\t// outside, close button), so open/close is emitted from the resulting state.\n\tconst wasOpenRef = React.useRef(actionState.isOpen || false);\n\n\tReact.useEffect(() => {\n\t\tif (wasOpenRef.current === state.isOpen) return;\n\n\t\twasOpenRef.current = state.isOpen;\n\n\t\ttrackInteraction({\n\t\t\taction: state.isOpen ? 'open' : 'close',\n\t\t\tmetadata: { isSubMenu },\n\t\t\tvariant: position\n\t\t});\n\t}, [state.isOpen, isSubMenu, position, trackInteraction]);\n\n\t// stores all of the interactive elements in the popover for focus management\n\tconst [interactiveElements, setInteractiveElements] = React.useState<HTMLElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\t/** Snapshot of trigger `aria-expanded` before we manage it; restored on popover unmount only. */\n\tconst triggerExpandedRestoreRef = React.useRef<{\n\t\tel: HTMLElement;\n\t\tvalue: string | null;\n\t} | null>(null);\n\n\t/**\n\t * Checks if the trigger element is disabled\n\t * @returns {boolean} - true if the trigger element is disabled, false otherwise\n\t */\n\tconst isTriggerDisabled = React.useCallback((): boolean => {\n\t\treturn isElementAriaDisabled(triggerRef?.current);\n\t}, [triggerRef]);\n\n\t/**\n\t * Opening and closing the menu\n\t */\n\tconst closeMenu = React.useCallback(() => {\n\t\tsetState({ actionType: null, isOpen: false });\n\t\tonClose?.();\n\t}, [onClose]);\n\n\tconst {\n\t\thandleClose,\n\t\thandleMenuKey,\n\t\thideMenuHover,\n\t\thandleTriggerSiblingKey,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\tshowMenuHover\n\t} = useMrlPopoverEventHandlers({\n\t\tcloseMenu,\n\t\tdisableClickToOpen,\n\t\tdisableFocusTrap,\n\t\thasCloseButton,\n\t\tinteractiveElements,\n\t\tisSubMenu,\n\t\tisTriggerDisabled,\n\t\tmenuRef,\n\t\tsetState,\n\t\tstate,\n\t\ttriggerRef\n\t});\n\n\tuseClickOutside(\n\t\tmenuRef,\n\t\ttriggerRef,\n\t\t'mouseup',\n\t\tcloseMenu,\n\t\tdisableClickOutside || !state.isOpen,\n\t\tPOPOVER_CLICKOUTSIDE_WHITELIST\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isTriggerDisabled()) return;\n\n\t\tif (!isSubMenu) {\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isSubMenu, actionState.actionType, actionState.isOpen]);\n\n\t// This use effect handles storing the rect in state for positioning calculations\n\tReact.useLayoutEffect(() => {\n\t\tif (!state.isOpen) return;\n\n\t\t// For consistent calculations, we are storing the menu rect in state\n\t\t// Anytime we need to use the menu rect, we want to make sure the values are based\n\t\t// on the original state of the menu for proper transformations\n\t\tif (!menuRect && menuRef.current) {\n\t\t\tconst newRect = menuRef.current?.getBoundingClientRect();\n\t\t\tsetMenuRect(newRect || null);\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, isSubMenu]);\n\n\t// This use effect handles getting and setting the interactive elements in the popover.\n\t// These elements are used for focus management when focus trap is not enabled to ensure\n\t// that our tab order matches the visual order of the page\n\tReact.useEffect(() => {\n\t\tif (state.isOpen && !isSubMenu && menuRef.current) {\n\t\t\tif (disableFocusTrap) {\n\t\t\t\t// set the interactive elements so we can track focus location\n\t\t\t\tconst elements = getFocusableElementsInsideElement(menuRef.current as HTMLElement);\n\t\t\t\tsetInteractiveElements(elements);\n\n\t\t\t\t// without focus trap enabled, we want to focus the first interactive element\n\t\t\t\telements[0].focus();\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRef.current]);\n\n\t// This use effect handles setting all of the event handlers for different parts of the component.\n\t// - trigger event handlers\n\t// - submenu event handlers\n\t// - menu event handlers\n\t// - \"next element\" event handlers, which are event handlers attached to the next interactive element after the trigger\n\t//\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef, 'next');\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', (e) => e.stopPropagation());\n\t\t\ttriggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\tif (nextElement) nextElement.addEventListener('keydown', handleTriggerSiblingKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\tconst menuElement = menuRef?.current;\n\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\n\n\t\t\t\tif (menuElement) {\n\t\t\t\t\tmenuElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\t\tmenuElement.addEventListener('mouseout', hideMenuHover);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\ttriggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (nextElement) nextElement.removeEventListener('keydown', handleTriggerSiblingKey);\n\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\ttriggerElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\ttriggerElement.removeEventListener('mouseout', hideMenuHover);\n\n\t\t\t\t\tif (menuElement) {\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseout', hideMenuHover);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\tcloseMenu,\n\t\tisSubMenu,\n\t\ttoggleMenuKey,\n\t\ttoggleMenuTrigger,\n\t\ttriggerRef?.current,\n\t\thideMenuHover,\n\t\tshowMenuHover,\n\t\thasCloseButton,\n\t\thandleClose\n\t]);\n\n\t/**\n\t * Popover triggers are not necessarily modal dialogs; use the generic 'true' (see ARIA in HTML).\n\t * Restore the previous DOM value when the trigger changes or this popover unmounts so host-owned\n\t * ARIA (e.g. aria-haspopup=\"menu\") is not left stale after a callout dismisses.\n\t */\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\tconst previousValue = el.getAttribute('aria-haspopup');\n\t\tel.setAttribute('aria-haspopup', 'true');\n\n\t\t// Restore the previous value of the aria-haspopup attribute when the callout is removed from the DOM\n\t\treturn () => {\n\t\t\tif (previousValue === null) {\n\t\t\t\tel.removeAttribute('aria-haspopup');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-haspopup', previousValue);\n\t\t\t}\n\t\t};\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [triggerRef?.current]);\n\n\tReact.useEffect(() => {\n\t\tconst el = triggerRef?.current;\n\t\tif (!el) return;\n\n\t\t// Store the previous value of the aria-expanded attribute when the callout is added to the DOM\n\t\tif (!triggerExpandedRestoreRef.current || triggerExpandedRestoreRef.current.el !== el) {\n\t\t\ttriggerExpandedRestoreRef.current = {\n\t\t\t\tel,\n\t\t\t\tvalue: el.hasAttribute('aria-expanded') ? el.getAttribute('aria-expanded') : null\n\t\t\t};\n\t\t}\n\n\t\t// Set the aria-expanded attribute to the current state of the popover\n\t\tel.setAttribute('aria-expanded', state.isOpen.toString());\n\n\t\tif (state.isOpen) onOpen?.();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, onOpen, triggerRef?.current]);\n\n\t/**\n\t * Restore the previous value of the aria-expanded attribute when the callout is removed from the DOM\n\t */\n\tReact.useEffect(() => {\n\t\treturn () => {\n\t\t\tconst snap = triggerExpandedRestoreRef.current;\n\t\t\tif (!snap) return;\n\t\t\tconst { el, value } = snap;\n\n\t\t\tif (!document?.documentElement?.contains(el)) return;\n\n\t\t\tif (value === null) {\n\t\t\t\tel.removeAttribute('aria-expanded');\n\t\t\t} else {\n\t\t\t\tel.setAttribute('aria-expanded', value);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\t/**\n\t * Setup positioning styles, submenu positioning styles, scroll styles, and transition.\n\t */\n\tconst memoizedCustomPosition = React.useMemo(() => customPosition, [customPosition]);\n\tconst customPopoverPosition = memoizedCustomPosition || { left: 0, top: 0 };\n\n\tconst menuPosition = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPopoverPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\toffset || getOffset(position, point),\n\t\tisSubMenu,\n\t\tdisableFlipping\n\t);\n\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t!isSubMenu\n\t);\n\n\tconst menuPositionState = menuPosition.flipped ? flipPosition(position) : position;\n\tconst scrollStyles = useBrowserEdgeScroll(menuRef, menuPositionState, alignment);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPosition.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPosition.top\n\t\t},\n\t\tsubmenu: {\n\t\t\tleft: subMenuPosition.left,\n\t\t\ttop: subMenuPosition.top\n\t\t}\n\t};\n\n\t/**\n\t * React Spring transitions for the menu\n\t */\n\tconst transitions = useTransition(state.isOpen, {\n\t\tconfig: { duration: 150 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' },\n\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\tleave: { opacity: 0, transform: 'translateY(4px)' }\n\t});\n\n\tconst menuClasses = classnames(\n\t\tstyles['MrlPopover'],\n\t\t'MrlPopover',\n\t\tstyles['MrlPopover--scrolling'],\n\t\tclassName,\n\t\t{\n\t\t\t[styles['MrlPopover--submenu']]: isSubMenu,\n\t\t\t[styles['inverse']]: kind === 'inverse',\n\t\t\t[styles['primary']]: kind === 'primary',\n\t\t\t[styles['compact']]: spacing === 'compact',\n\t\t\t[styles['default']]: spacing === 'default'\n\t\t}\n\t);\n\n\tconst positionStyles = isSubMenu ? inlineStyles.submenu : inlineStyles.menu;\n\n\tconst renderMenu = () => {\n\t\tconst inlineScrollStyles = isSubMenu ? {} : scrollStyles ? scrollStyles.styles : {};\n\t\tconst scrollClasses = classnames(\n\t\t\tstyles['MrlPopover--content'],\n\t\t\tstyles['MrlPopover--scrolling--content']\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{transitions(\n\t\t\t\t\t(style, item) =>\n\t\t\t\t\t\titem && (\n\t\t\t\t\t\t\t<MrlFocusTrap disabled={disableFocusTrap} containerRef={menuRef}>\n\t\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MrlPopoverScrollContainer className={scrollClasses} style={inlineScrollStyles}>\n\t\t\t\t\t\t\t\t\t\t{typeof children === 'function' && children({ closeMenu })}\n\t\t\t\t\t\t\t\t\t\t{typeof children !== 'function' && children}\n\t\t\t\t\t\t\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\t\t\t\t\tdata-qa=\"popover-close-button\"\n\t\t\t\t\t\t\t\t\t\t\t\twrapperClassName={styles['MrlPopover--close']}\n\t\t\t\t\t\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\t\t\t\t\t\tkind={kind === 'inverse' ? 'ghost-inverse' : 'ghost'}\n\t\t\t\t\t\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t\t\t\t\t\tposition=\"right\"\n\t\t\t\t\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseUp={closeMenu}\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={handleClose}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{point && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={styles['MrlPopover--point']}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-point={getDataPoint(menuPositionState, alignment)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</MrlPopoverScrollContainer>\n\t\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t\t</MrlFocusTrap>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t/* eslint-disable */\n\treturn (\n\t\t<MrlPopoverContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.POPOVER} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlPopoverContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlPopover.componentType = 'Popover';\n"],"names":["POPOVER_CLICKOUTSIDE_WHITELIST","concat","SELECT_MENU_LIST_CLASS_NAME","MULTI_SELECT_MENU_LIST_CLASS_NAME","MrlPopover","_ref","_ref$alignment","alignment","ariaLabel","ariaLabelledBy","children","className","customPosition","_ref$disableClickToOp","disableClickToOpen","_ref$disableClickOuts","disableClickOutside","_ref$disableFlipping","disableFlipping","_ref$disableFocusTrap","disableFocusTrap","_ref$hasCloseButton","hasCloseButton","_ref$spacing","spacing","id","_ref$isSubMenu","isSubMenu","_ref$actionState","actionState","actionType","isOpen","_ref$position","position","_ref$point","point","_ref$portalProps","portalProps","PORTAL_LAYERS","POPOVER","name","_ref$kind","kind","offset","onClose","onOpen","eventId","triggerRef","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","trackInteraction","useMrlTrackInteraction","wasOpenRef","useRef","useEffect","current","action","metadata","variant","_React$useState3","_React$useState4","interactiveElements","setInteractiveElements","_React$useState5","_React$useState6","menuRect","setMenuRect","menuRef","triggerExpandedRestoreRef","isTriggerDisabled","useCallback","isElementAriaDisabled","closeMenu","_useMrlPopoverEventHa","useMrlPopoverEventHandlers","handleClose","handleMenuKey","hideMenuHover","handleTriggerSiblingKey","toggleMenuKey","toggleMenuTrigger","showMenuHover","useClickOutside","useLayoutEffect","_menuRef$current","newRect","getBoundingClientRect","elements","getFocusableElementsInsideElement","focus","triggerElement","menuElement","nextElement","findAdjacentInteractiveElement","addEventListener","e","stopPropagation","removeEventListener","preventDefault","el","previousValue","getAttribute","setAttribute","removeAttribute","value","hasAttribute","toString","_document","_document$documentEle","snap","document","documentElement","contains","memoizedCustomPosition","useMemo","customPopoverPosition","left","top","menuPosition","useTriggerPosition","align","getOffset","subMenuPosition","useSubMenuElementPosition","menuPositionState","flipped","flipPosition","scrollStyles","useBrowserEdgeScroll","inlineStyles","menu","submenu","transitions","useTransition","config","duration","enter","opacity","transform","from","leave","menuClasses","classnames","styles","positionStyles","renderMenu","inlineScrollStyles","scrollClasses","createElement","Fragment","style","item","MrlFocusTrap","disabled","containerRef","animated","div","_extends","tabIndex","_objectSpread","onKeyDown","ref","MrlPopoverScrollContainer","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","close","text","tipAnchor","onMouseUp","size","getDataPoint","MrlPopoverContext","Provider","MrlPortal","layer","componentType"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import styles from './MrlSmartTable.module.scss.js';
|
|
|
9
9
|
import { getScrollableContainer } from '../../../utils/getScrollableContainer/getScrollableContainer.js';
|
|
10
10
|
import { hasHorizontalScroll } from '../../../utils/hasHorizontalScroll/hasHorizontalScroll.js';
|
|
11
11
|
import { MemoizedDefaultCellContent } from './components/DefaultCellContent.js';
|
|
12
|
+
import { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics/useMrlAnalytics.js';
|
|
12
13
|
import { getUniqueId } from '../../../utils/setAttributes/setAttributes.js';
|
|
13
14
|
import { MrlTableColumn } from '../MrlTableColumn/MrlTableColumn.js';
|
|
14
15
|
import { MrlCheckboxStandalone } from '../../form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js';
|
|
@@ -23,7 +24,7 @@ import { MrlTooltip } from '../../tooltip/MrlTooltip/MrlTooltip.js';
|
|
|
23
24
|
import { MrlSvg } from '../../svg/MrlSvg/MrlSvg.js';
|
|
24
25
|
|
|
25
26
|
var _excluded = ["horizontalAlign"],
|
|
26
|
-
_excluded2 = ["columns", "dataQaPrefix", "emptyStateText", "emptyState", "id", "items", "selectionOptions", "defaultSortDescriptor", "customSortItems", "enableVirtualization"];
|
|
27
|
+
_excluded2 = ["columns", "dataQaPrefix", "emptyStateText", "emptyState", "id", "items", "selectionOptions", "defaultSortDescriptor", "customSortItems", "enableVirtualization", "eventId"];
|
|
27
28
|
var ROW_HEIGHT_PX = 48;
|
|
28
29
|
var sortItems = (columns, items, sortDescriptor) => {
|
|
29
30
|
var sortColumn = columns.find(col => col.id === sortDescriptor.column);
|
|
@@ -160,7 +161,9 @@ function MrlSmartTable(props) {
|
|
|
160
161
|
customSortItems = props.customSortItems,
|
|
161
162
|
_props$enableVirtuali = props.enableVirtualization,
|
|
162
163
|
enableVirtualization = _props$enableVirtuali === void 0 ? false : _props$enableVirtuali,
|
|
164
|
+
eventId = props.eventId,
|
|
163
165
|
ariaProps = _objectWithoutProperties(props, _excluded2);
|
|
166
|
+
var trackInteraction = useMrlTrackInteraction('MrlSmartTable', eventId);
|
|
164
167
|
var idRef = React.useRef(id || getUniqueId('mrl-smart-table'));
|
|
165
168
|
var tableRef = React.useRef(null);
|
|
166
169
|
var _React$useState = React.useState(null),
|
|
@@ -216,6 +219,15 @@ function MrlSmartTable(props) {
|
|
|
216
219
|
var direction = sortDescriptor.direction,
|
|
217
220
|
name = sortDescriptor.name,
|
|
218
221
|
column = sortDescriptor.column;
|
|
222
|
+
|
|
223
|
+
// the column id is a developer-defined key; the column's data is never emitted.
|
|
224
|
+
trackInteraction({
|
|
225
|
+
action: 'sort',
|
|
226
|
+
metadata: {
|
|
227
|
+
column: String(column),
|
|
228
|
+
direction
|
|
229
|
+
}
|
|
230
|
+
});
|
|
219
231
|
if (customSortItems) {
|
|
220
232
|
var sortColumn = columns.find(col => col.id === column);
|
|
221
233
|
if (!sortColumn) {
|
|
@@ -264,8 +276,25 @@ function MrlSmartTable(props) {
|
|
|
264
276
|
keys.delete(itemId);
|
|
265
277
|
onSelectionChange(keys);
|
|
266
278
|
};
|
|
267
|
-
var onSelectAllClick = () =>
|
|
279
|
+
var onSelectAllClick = () => {
|
|
280
|
+
// row content is never emitted — only the scope of the selection.
|
|
281
|
+
trackInteraction({
|
|
282
|
+
action: 'select',
|
|
283
|
+
metadata: {
|
|
284
|
+
scope: isAnySelected ? 'none' : 'all'
|
|
285
|
+
},
|
|
286
|
+
variant: mode
|
|
287
|
+
});
|
|
288
|
+
isAnySelected ? selectNone() : selectAll();
|
|
289
|
+
};
|
|
268
290
|
var onSelectClick = itemId => {
|
|
291
|
+
trackInteraction({
|
|
292
|
+
action: 'select',
|
|
293
|
+
metadata: {
|
|
294
|
+
scope: selectedKeys.has(itemId) ? 'deselect-row' : 'select-row'
|
|
295
|
+
},
|
|
296
|
+
variant: mode
|
|
297
|
+
});
|
|
269
298
|
if (mode === 'multiple') {
|
|
270
299
|
selectedKeys.has(itemId) ? selectRemove(itemId) : selectAdd(itemId);
|
|
271
300
|
} else if (mode === 'single') {
|