@muraldevkit/ui-toolkit 4.73.0-dev-NYDL.1 → 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.
Files changed (273) hide show
  1. package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +8 -1
  2. package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
  3. package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +14 -4
  4. package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
  5. package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +8 -1
  6. package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
  7. package/dist/cjs/components/button/MrlButton/MrlButton.js +3 -3
  8. package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
  9. package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +8 -1
  10. package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
  11. package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +21 -2
  12. package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
  13. package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +36 -3
  14. package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
  15. package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +18 -2
  16. package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
  17. package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +11 -1
  18. package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
  19. package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +17 -1
  20. package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
  21. package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +24 -1
  22. package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
  23. package/dist/cjs/components/form/date-picker/MrlDatePicker.js +17 -2
  24. package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
  25. package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +11 -2
  26. package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
  27. package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +8 -1
  28. package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
  29. package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +19 -1
  30. package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
  31. package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +19 -1
  32. package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
  33. package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +42 -2
  34. package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
  35. package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +42 -2
  36. package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
  37. package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +34 -2
  38. package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
  39. package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +34 -2
  40. package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
  41. package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -2
  42. package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
  43. package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +10 -1
  44. package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
  45. package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +20 -3
  46. package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
  47. package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +20 -3
  48. package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
  49. package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -3
  50. package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
  51. package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +38 -1
  52. package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
  53. package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +12 -2
  54. package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
  55. package/dist/cjs/components/link/MrlLink/MrlLink.js +21 -2
  56. package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
  57. package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +12 -1
  58. package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
  59. package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +20 -1
  60. package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
  61. package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +18 -1
  62. package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
  63. package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -1
  64. package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
  65. package/dist/cjs/components/modal/MrlModal/MrlModal.js +22 -1
  66. package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
  67. package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +27 -1
  68. package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
  69. package/dist/cjs/components/notification/MrlToast/MrlToast.js +28 -3
  70. package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
  71. package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +18 -2
  72. package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
  73. package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +24 -4
  74. package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
  75. package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +18 -1
  76. package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
  77. package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +31 -2
  78. package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
  79. package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -3
  80. package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
  81. package/dist/cjs/components/tabs/MrlTab/MrlTab.js +10 -1
  82. package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
  83. package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +10 -1
  84. package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
  85. package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +19 -3
  86. package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
  87. package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +23 -1
  88. package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
  89. package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js +7 -7
  90. package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -1
  91. package/dist/cjs/version.js +1 -1
  92. package/dist/cjs/version.js.map +1 -1
  93. package/dist/components/avatar/MrlAvatarButton/MrlAvatarButton.d.ts +6 -1
  94. package/dist/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.d.ts +5 -0
  95. package/dist/components/button/MrlButton/MrlButton.d.ts +1 -1
  96. package/dist/components/button/MrlIconButton/MrlIconButton.d.ts +5 -0
  97. package/dist/components/callout/MrlCallout/MrlCallout.d.ts +7 -0
  98. package/dist/components/filter/MrlFilter/MrlFilter.d.ts +7 -0
  99. package/dist/components/filter/MrlFilterItem/MrlFilterItem.d.ts +7 -0
  100. package/dist/components/form/checkbox/MrlCheckbox/MrlCheckbox.d.ts +6 -1
  101. package/dist/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.d.ts +6 -1
  102. package/dist/components/form/date-picker/MrlDatePicker.d.ts +7 -0
  103. package/dist/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.d.ts +6 -1
  104. package/dist/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.d.ts +8 -1
  105. package/dist/components/form/radio/MrlRadioButton/MrlRadioButton.d.ts +6 -1
  106. package/dist/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.d.ts +6 -1
  107. package/dist/components/form/select/MrlCreatableSelect/MrlCreatableSelect.d.ts +7 -0
  108. package/dist/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.d.ts +7 -0
  109. package/dist/components/form/select/MrlMultiSelect/MrlMultiSelect.d.ts +7 -0
  110. package/dist/components/form/select/MrlSelect/MrlSelect.d.ts +7 -0
  111. package/dist/components/form/switch/MrlSwitch/MrlSwitch.d.ts +6 -1
  112. package/dist/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.d.ts +6 -1
  113. package/dist/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.d.ts +8 -0
  114. package/dist/components/form/text-input/MrlTextInput/MrlTextInput.d.ts +8 -0
  115. package/dist/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.d.ts +8 -0
  116. package/dist/components/form/textarea/MrlTextarea/MrlTextarea.d.ts +9 -1
  117. package/dist/components/layout/MrlSidebar/MrlSidebar.d.ts +8 -1
  118. package/dist/components/link/MrlLink/MrlLink.d.ts +6 -1
  119. package/dist/components/link/MrlLinkButton/MrlLinkButton.d.ts +5 -0
  120. package/dist/components/menu/MrlMenu/MrlMenu.d.ts +6 -1
  121. package/dist/components/menu/MrlMenuItem/MrlMenuItem.d.ts +6 -1
  122. package/dist/components/menu/MrlMenuItemLink/MrlMenuItemLink.d.ts +6 -1
  123. package/dist/components/modal/MrlModal/MrlModal.d.ts +5 -0
  124. package/dist/components/notification/MrlBlockNotification/MrlBlockNotification.d.ts +7 -0
  125. package/dist/components/notification/MrlToast/MrlToast.d.ts +8 -1
  126. package/dist/components/pagination/MrlPaginationButton/MrlPaginationButton.d.ts +6 -1
  127. package/dist/components/panel/MrlPanel/MrlPanel.d.ts +8 -0
  128. package/dist/components/popover/MrlPopover/MrlPopover.d.ts +6 -1
  129. package/dist/components/table/MrlSmartTable/MrlSmartTable.d.ts +7 -0
  130. package/dist/components/table/MrlTableRow/MrlTableRow.d.ts +7 -0
  131. package/dist/components/tabs/MrlTab/MrlTab.d.ts +6 -1
  132. package/dist/components/tabs/MrlTabLink/MrlTabLink.d.ts +6 -1
  133. package/dist/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +5 -0
  134. package/dist/components/tooltip/MrlTooltip/MrlTooltip.d.ts +8 -0
  135. package/dist/contexts/MrlAnalyticsContext/types.d.ts +1 -1
  136. package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +8 -1
  137. package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
  138. package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +14 -4
  139. package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
  140. package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +8 -1
  141. package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
  142. package/dist/esm/components/button/MrlButton/MrlButton.js +3 -3
  143. package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
  144. package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +8 -1
  145. package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
  146. package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +21 -2
  147. package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
  148. package/dist/esm/components/callout/MrlCallout/MrlCallout.js +36 -3
  149. package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
  150. package/dist/esm/components/filter/MrlFilter/MrlFilter.js +18 -2
  151. package/dist/esm/components/filter/MrlFilter/MrlFilter.js.map +1 -1
  152. package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +11 -1
  153. package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
  154. package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +17 -1
  155. package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
  156. package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +24 -1
  157. package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
  158. package/dist/esm/components/form/date-picker/MrlDatePicker.js +17 -2
  159. package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
  160. package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +11 -2
  161. package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
  162. package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +8 -1
  163. package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
  164. package/dist/esm/components/form/radio/MrlRadioButton/MrlRadioButton.js +19 -1
  165. package/dist/esm/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
  166. package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +19 -1
  167. package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
  168. package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +42 -2
  169. package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
  170. package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +42 -2
  171. package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
  172. package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +34 -2
  173. package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
  174. package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +34 -2
  175. package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
  176. package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +14 -2
  177. package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
  178. package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +10 -1
  179. package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
  180. package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +20 -3
  181. package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
  182. package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +20 -3
  183. package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
  184. package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -3
  185. package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
  186. package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +38 -1
  187. package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
  188. package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +12 -2
  189. package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
  190. package/dist/esm/components/link/MrlLink/MrlLink.js +21 -2
  191. package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
  192. package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +12 -1
  193. package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
  194. package/dist/esm/components/menu/MrlMenu/MrlMenu.js +20 -1
  195. package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
  196. package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -1
  197. package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
  198. package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -1
  199. package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
  200. package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -1
  201. package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
  202. package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +27 -1
  203. package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
  204. package/dist/esm/components/notification/MrlToast/MrlToast.js +28 -3
  205. package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
  206. package/dist/esm/components/pagination/MrlPaginationButton/MrlPaginationButton.js +18 -2
  207. package/dist/esm/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
  208. package/dist/esm/components/panel/MrlPanel/MrlPanel.js +24 -4
  209. package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
  210. package/dist/esm/components/popover/MrlPopover/MrlPopover.js +18 -1
  211. package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
  212. package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +31 -2
  213. package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
  214. package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +13 -3
  215. package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
  216. package/dist/esm/components/tabs/MrlTab/MrlTab.js +10 -1
  217. package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
  218. package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +10 -1
  219. package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
  220. package/dist/esm/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +19 -3
  221. package/dist/esm/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
  222. package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +23 -1
  223. package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
  224. package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js +7 -7
  225. package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -1
  226. package/dist/esm/version.js +1 -1
  227. package/dist/esm/version.js.map +1 -1
  228. package/dist/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +4 -4
  229. package/dist/types/components/avatar/MrlAvatarButton/MrlAvatarButton.d.ts +6 -1
  230. package/dist/types/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.d.ts +5 -0
  231. package/dist/types/components/button/MrlButton/MrlButton.d.ts +1 -1
  232. package/dist/types/components/button/MrlIconButton/MrlIconButton.d.ts +5 -0
  233. package/dist/types/components/callout/MrlCallout/MrlCallout.d.ts +7 -0
  234. package/dist/types/components/filter/MrlFilter/MrlFilter.d.ts +7 -0
  235. package/dist/types/components/filter/MrlFilterItem/MrlFilterItem.d.ts +7 -0
  236. package/dist/types/components/form/checkbox/MrlCheckbox/MrlCheckbox.d.ts +6 -1
  237. package/dist/types/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.d.ts +6 -1
  238. package/dist/types/components/form/date-picker/MrlDatePicker.d.ts +7 -0
  239. package/dist/types/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.d.ts +6 -1
  240. package/dist/types/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.d.ts +8 -1
  241. package/dist/types/components/form/radio/MrlRadioButton/MrlRadioButton.d.ts +6 -1
  242. package/dist/types/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.d.ts +6 -1
  243. package/dist/types/components/form/select/MrlCreatableSelect/MrlCreatableSelect.d.ts +7 -0
  244. package/dist/types/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.d.ts +7 -0
  245. package/dist/types/components/form/select/MrlMultiSelect/MrlMultiSelect.d.ts +7 -0
  246. package/dist/types/components/form/select/MrlSelect/MrlSelect.d.ts +7 -0
  247. package/dist/types/components/form/switch/MrlSwitch/MrlSwitch.d.ts +6 -1
  248. package/dist/types/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.d.ts +6 -1
  249. package/dist/types/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.d.ts +8 -0
  250. package/dist/types/components/form/text-input/MrlTextInput/MrlTextInput.d.ts +8 -0
  251. package/dist/types/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.d.ts +8 -0
  252. package/dist/types/components/form/textarea/MrlTextarea/MrlTextarea.d.ts +9 -1
  253. package/dist/types/components/layout/MrlSidebar/MrlSidebar.d.ts +8 -1
  254. package/dist/types/components/link/MrlLink/MrlLink.d.ts +6 -1
  255. package/dist/types/components/link/MrlLinkButton/MrlLinkButton.d.ts +5 -0
  256. package/dist/types/components/menu/MrlMenu/MrlMenu.d.ts +6 -1
  257. package/dist/types/components/menu/MrlMenuItem/MrlMenuItem.d.ts +6 -1
  258. package/dist/types/components/menu/MrlMenuItemLink/MrlMenuItemLink.d.ts +6 -1
  259. package/dist/types/components/modal/MrlModal/MrlModal.d.ts +5 -0
  260. package/dist/types/components/notification/MrlBlockNotification/MrlBlockNotification.d.ts +7 -0
  261. package/dist/types/components/notification/MrlToast/MrlToast.d.ts +8 -1
  262. package/dist/types/components/pagination/MrlPaginationButton/MrlPaginationButton.d.ts +6 -1
  263. package/dist/types/components/panel/MrlPanel/MrlPanel.d.ts +8 -0
  264. package/dist/types/components/popover/MrlPopover/MrlPopover.d.ts +6 -1
  265. package/dist/types/components/table/MrlSmartTable/MrlSmartTable.d.ts +7 -0
  266. package/dist/types/components/table/MrlTableRow/MrlTableRow.d.ts +7 -0
  267. package/dist/types/components/tabs/MrlTab/MrlTab.d.ts +6 -1
  268. package/dist/types/components/tabs/MrlTabLink/MrlTabLink.d.ts +6 -1
  269. package/dist/types/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +5 -0
  270. package/dist/types/components/tooltip/MrlTooltip/MrlTooltip.d.ts +8 -0
  271. package/dist/types/contexts/MrlAnalyticsContext/types.d.ts +1 -1
  272. package/dist/types/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +4 -4
  273. package/package.json +4 -9
@@ -1 +1 @@
1
- {"version":3,"file":"MrlToast.js","sources":["../../../../../src/components/notification/MrlToast/MrlToast.tsx"],"sourcesContent":["import * as React from 'react';\nimport { check, close, error, info, lock, modePrivate, warning } from '@muraldevkit/ds-icons';\nimport { stickyTextColor } from '@tactivos/mural-shared/lib/colors';\nimport { MrlIconButton, MrlButton } from '../../button';\nimport { MrlLink } from '../../link';\nimport { MrlSvg, DSIconType } from '../../svg';\nimport { MrlAvatarPropTypes } from '../../avatar/MrlAvatar';\nimport styles from './MrlToast.module.scss';\nimport classNames from 'classnames';\nimport { NotificationKind } from '../constants';\nimport { PORTAL_LAYERS as layers } from '../../../utils/layers';\nimport { useAutoClose } from '../../../hooks/useAutoClose';\n\nexport type MrlToastKind = NotificationKind | 'collaborator' | 'general';\n\nexport type MrlToastPosition = 'bottom' | 'top';\n\nexport interface MrlToastCTA {\n\tonClick: () => void;\n\ttext: string;\n\tdataQa: string;\n}\n\nexport interface MrlToastLink {\n\ttext: string;\n\turl: string;\n}\n\nexport interface MrlToastProps {\n\t['data-qa']?: string;\n\t/**\n\t * Determines whether the Toast Notification should automatically close after the time specified in `closeAfterMs` (default 3000ms).\n\t *\n\t * Note: auto-closing is only possible when no interactive elements (e.g. close button & CTA's) exist on the toast notification\n\t */\n\tautoClose?: boolean;\n\t/**\n\t * A MrlAvatar component instance to display in the toast notification.\n\t *\n\t * Note: This is only applicable when `kind` is set to 'collaborator'. When provided, the avatar will be shown instead of the default icon.\n\t * The `showIcon` prop will be ignored when `avatar` is present.\n\t *\n\t * @example\n\t * ```tsx\n\t * <MrlToast\n\t * kind=\"collaborator\"\n\t * avatar={<MrlAvatar name=\"John Doe\" size=\"small\" avatarColor=\"#FF5733\" />}\n\t * primaryMessage=\"John Doe joined the mural\"\n\t * />\n\t * ```\n\t */\n\tavatar?: React.ReactElement<MrlAvatarPropTypes>;\n\t/**\n\t * Sets the background color of the toast notification.\n\t *\n\t * Note: this is only applicable when the `kind` is set to 'collaborator'.\n\t */\n\tbackgroundColor?: string;\n\tclassName?: string;\n\t/**\n\t * The time in milliseconds after which the toast notification should automatically close.\n\t */\n\tcloseAfterMs?: number;\n\tkind?: MrlToastKind;\n\tlink?: MrlToastLink;\n\tonClose?: () => void;\n\tprimaryCTA?: MrlToastCTA;\n\tprimaryMessage: string | JSX.Element;\n\tsecondaryCTA?: MrlToastCTA;\n\tsecondaryMessage?: string | JSX.Element;\n\t/** Determines whether the close icon button should be shown. */\n\tshowCloseButton?: boolean;\n\tshowIcon?: boolean;\n}\n\n/**\n * MrlToast component.\n * @param {MrlToastProps} props - The props for the MrlToast component.\n * @returns {React.ReactElement} The MrlToast component.\n */\nexport const MrlToast = ({\n\t['data-qa']: qa = 'toast-notification',\n\tautoClose = true,\n\tavatar,\n\tbackgroundColor,\n\tclassName,\n\tcloseAfterMs = 3000,\n\tkind = 'info',\n\tlink,\n\tonClose,\n\tprimaryCTA,\n\tprimaryMessage,\n\tsecondaryCTA,\n\tsecondaryMessage,\n\tshowCloseButton = false,\n\tshowIcon = true,\n\t...rest\n}: MrlToastProps): React.ReactElement => {\n\t// Set to true if any buttons exist on the toast, false otherwise\n\tconst hasInteractiveElements = showCloseButton || primaryCTA || secondaryCTA;\n\n\t// Allowing autoClose when there are interactive elements in the toast is an anti-pattern\n\t// and should be avoided. If autoClose is set to true and interactive elements exist, the\n\t// toast will not close automatically.\n\tconst shouldAutoClose = autoClose && !hasInteractiveElements;\n\n\t/* Boolean value tracking if the close timeout has been reached */\n\tconst [closed, setClosed] = useAutoClose(shouldAutoClose, closeAfterMs, onClose);\n\n\tconst handleClose = (): void => {\n\t\tsetClosed(true);\n\n\t\t// Slightly delay the onClose callback to allow the toast to animate out.\n\t\t// This will prevent the toast from disappearing abruptly depending on how\n\t\t// it is implemented within the application\n\t\tsetTimeout(() => {\n\t\t\tif (onClose) onClose();\n\t\t}, 500);\n\t};\n\n\tconst DEFAULT_ICONS: Partial<Record<MrlToastKind, DSIconType>> = {\n\t\tcollaborator: lock,\n\t\terror,\n\t\tinfo,\n\t\tprivate: modePrivate,\n\t\tsuccess: check,\n\t\twarning\n\t};\n\n\tconst hasAvatar = typeof avatar !== 'undefined' && kind === 'collaborator';\n\n\tconst darkCollaborator =\n\t\tkind === 'collaborator' &&\n\t\tbackgroundColor &&\n\t\tstickyTextColor(backgroundColor, 'light', 'dark') === 'light';\n\n\tconst classes = classNames(styles['MrlToast'], className, styles[`${kind}Notification`], {\n\t\t[styles.darkCollaborator]: !!darkCollaborator,\n\t\t[styles.closing]: closed,\n\t\t[styles['has-cta']]: !!hasInteractiveElements,\n\t\t[styles['has-avatar']]: hasAvatar\n\t});\n\n\tconst closeButtonkind = kind === 'warning' || darkCollaborator ? 'ghost' : 'ghost-inverse';\n\n\tconst customTextColor =\n\t\t!!backgroundColor && kind === 'collaborator'\n\t\t\t? stickyTextColor(backgroundColor, '#000000', '#ffffff')\n\t\t\t: undefined;\n\n\tconst primaryMessageClasses = classNames(styles.primaryMessage, 'MrlToast--primaryMessage');\n\tconst secondaryMessageClasses = classNames(styles.secondaryMessage, 'MrlToast--secondaryMessage');\n\n\treturn (\n\t\t<div\n\t\t\t{...rest}\n\t\t\tclassName={classes}\n\t\t\tdata-qa={qa}\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: kind === 'collaborator' ? backgroundColor : undefined,\n\t\t\t\tcolor: customTextColor,\n\t\t\t\tzIndex: layers.TOAST.zIndex\n\t\t\t}}\n\t\t>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{hasAvatar && <span className={styles.avatarWrapper}>{avatar}</span>}\n\t\t\t\t{!hasAvatar && showIcon && (\n\t\t\t\t\t<span className={styles.iconWrapper}>\n\t\t\t\t\t\t<MrlSvg size=\"small\" svg={DEFAULT_ICONS[kind] || info} />\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<span className={styles.textContent}>\n\t\t\t\t\t<span className={primaryMessageClasses} data-qa=\"toast-primary-content\">\n\t\t\t\t\t\t{primaryMessage}\n\t\t\t\t\t</span>{' '}\n\t\t\t\t\t<span className={secondaryMessageClasses}>{secondaryMessage}</span>\n\t\t\t\t\t{link && (\n\t\t\t\t\t\t<span className={styles.link}>\n\t\t\t\t\t\t\t<MrlLink\n\t\t\t\t\t\t\t\ttext={link.text}\n\t\t\t\t\t\t\t\thref={link.url}\n\t\t\t\t\t\t\t\tkind=\"simple\"\n\t\t\t\t\t\t\t\tstyle={{ color: 'inherit' }}\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t{hasInteractiveElements && (\n\t\t\t\t<div className={styles['cta-container']}>\n\t\t\t\t\t{secondaryCTA && (\n\t\t\t\t\t\t<MrlButton\n\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\tclassName: styles['cta--secondary']\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-qa={secondaryCTA.dataQa}\n\t\t\t\t\t\t\tkind=\"inverse\"\n\t\t\t\t\t\t\tonClick={secondaryCTA.onClick}\n\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\ttext={secondaryCTA.text}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{primaryCTA && (\n\t\t\t\t\t\t<MrlButton\n\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\tclassName: styles['cta--primary']\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-qa={primaryCTA.dataQa}\n\t\t\t\t\t\t\tkind=\"inverse\"\n\t\t\t\t\t\t\tonClick={primaryCTA.onClick}\n\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\ttext={primaryCTA.text}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\tclassName: styles['cta--close']\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-qa=\"mrl-toast-close-button\"\n\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\tkind={closeButtonkind}\n\t\t\t\t\t\t\tonClick={handleClose}\n\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["MrlToast","_ref","_ref$dataQa","qa","_ref$autoClose","autoClose","avatar","backgroundColor","className","_ref$closeAfterMs","closeAfterMs","_ref$kind","kind","link","onClose","primaryCTA","primaryMessage","secondaryCTA","secondaryMessage","_ref$showCloseButton","showCloseButton","_ref$showIcon","showIcon","rest","_objectWithoutProperties","_excluded","hasInteractiveElements","shouldAutoClose","_useAutoClose","useAutoClose","_useAutoClose2","_slicedToArray","closed","setClosed","handleClose","setTimeout","DEFAULT_ICONS","collaborator","lock","error","info","private","modePrivate","success","check","warning","hasAvatar","darkCollaborator","stickyTextColor","classes","classNames","styles","concat","closing","closeButtonkind","customTextColor","undefined","primaryMessageClasses","secondaryMessageClasses","React","createElement","_extends","style","color","zIndex","layers","TOAST","content","avatarWrapper","iconWrapper","MrlSvg","size","svg","textContent","MrlLink","text","href","url","MrlButton","attrs","dataQa","onClick","MrlIconButton","icon","close","state"],"mappings":"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"}
1
+ {"version":3,"file":"MrlToast.js","sources":["../../../../../src/components/notification/MrlToast/MrlToast.tsx"],"sourcesContent":["import * as React from 'react';\nimport { check, close, error, info, lock, modePrivate, warning } from '@muraldevkit/ds-icons';\nimport { stickyTextColor } from '@tactivos/mural-shared/lib/colors';\nimport { MrlIconButton, MrlButton } from '../../button';\nimport { MrlLink } from '../../link';\nimport { MrlSvg, DSIconType } from '../../svg';\nimport { MrlAvatarPropTypes } from '../../avatar/MrlAvatar';\nimport styles from './MrlToast.module.scss';\nimport classNames from 'classnames';\nimport { NotificationKind } from '../constants';\nimport { PORTAL_LAYERS as layers } from '../../../utils/layers';\nimport { useAutoClose } from '../../../hooks/useAutoClose';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nexport type MrlToastKind = NotificationKind | 'collaborator' | 'general';\n\nexport type MrlToastPosition = 'bottom' | 'top';\n\nexport interface MrlToastCTA {\n\tonClick: () => void;\n\ttext: string;\n\tdataQa: string;\n}\n\nexport interface MrlToastLink {\n\ttext: string;\n\turl: string;\n}\n\nexport interface MrlToastProps {\n\t['data-qa']?: string;\n\t/**\n\t * Determines whether the Toast Notification should automatically close after the time specified in `closeAfterMs` (default 3000ms).\n\t *\n\t * Note: auto-closing is only possible when no interactive elements (e.g. close button & CTA's) exist on the toast notification\n\t */\n\tautoClose?: boolean;\n\t/**\n\t * A MrlAvatar component instance to display in the toast notification.\n\t *\n\t * Note: This is only applicable when `kind` is set to 'collaborator'. When provided, the avatar will be shown instead of the default icon.\n\t * The `showIcon` prop will be ignored when `avatar` is present.\n\t *\n\t * @example\n\t * ```tsx\n\t * <MrlToast\n\t * kind=\"collaborator\"\n\t * avatar={<MrlAvatar name=\"John Doe\" size=\"small\" avatarColor=\"#FF5733\" />}\n\t * primaryMessage=\"John Doe joined the mural\"\n\t * />\n\t * ```\n\t */\n\tavatar?: React.ReactElement<MrlAvatarPropTypes>;\n\t/**\n\t * Sets the background color of the toast notification.\n\t *\n\t * Note: this is only applicable when the `kind` is set to 'collaborator'.\n\t */\n\tbackgroundColor?: string;\n\tclassName?: string;\n\t/**\n\t * The time in milliseconds after which the toast notification should automatically close.\n\t */\n\tcloseAfterMs?: number;\n\tkind?: MrlToastKind;\n\tlink?: MrlToastLink;\n\tonClose?: () => void;\n\tprimaryCTA?: MrlToastCTA;\n\tprimaryMessage: string | JSX.Element;\n\tsecondaryCTA?: MrlToastCTA;\n\tsecondaryMessage?: string | JSX.Element;\n\t/** Determines whether the close icon button should be shown. */\n\tshowCloseButton?: boolean;\n\tshowIcon?: boolean;\n\t/**\n\t * Enables interaction tracking for this toast. Provide a stable, non-PII id\n\t * (e.g. 'export-complete-toast'). When omitted, the toast emits no analytics.\n\t *\n\t * Note: message text is never emitted.\n\t */\n\teventId?: string;\n}\n\n/**\n * MrlToast component.\n * @param {MrlToastProps} props - The props for the MrlToast component.\n * @returns {React.ReactElement} The MrlToast component.\n */\nexport const MrlToast = ({\n\t['data-qa']: qa = 'toast-notification',\n\tautoClose = true,\n\tavatar,\n\tbackgroundColor,\n\tclassName,\n\tcloseAfterMs = 3000,\n\tkind = 'info',\n\tlink,\n\tonClose,\n\tprimaryCTA,\n\tprimaryMessage,\n\tsecondaryCTA,\n\tsecondaryMessage,\n\tshowCloseButton = false,\n\tshowIcon = true,\n\teventId,\n\t...rest\n}: MrlToastProps): React.ReactElement => {\n\tconst trackInteraction = useMrlTrackInteraction('MrlToast', eventId);\n\t// Set to true if any buttons exist on the toast, false otherwise\n\tconst hasInteractiveElements = showCloseButton || primaryCTA || secondaryCTA;\n\n\t// Allowing autoClose when there are interactive elements in the toast is an anti-pattern\n\t// and should be avoided. If autoClose is set to true and interactive elements exist, the\n\t// toast will not close automatically.\n\tconst shouldAutoClose = autoClose && !hasInteractiveElements;\n\n\t/* Boolean value tracking if the close timeout has been reached */\n\tconst [closed, setClosed] = useAutoClose(shouldAutoClose, closeAfterMs, onClose);\n\n\tconst handleClose = (): void => {\n\t\ttrackInteraction({ action: 'close', variant: kind });\n\n\t\tsetClosed(true);\n\n\t\t// Slightly delay the onClose callback to allow the toast to animate out.\n\t\t// This will prevent the toast from disappearing abruptly depending on how\n\t\t// it is implemented within the application\n\t\tsetTimeout(() => {\n\t\t\tif (onClose) onClose();\n\t\t}, 500);\n\t};\n\n\tconst DEFAULT_ICONS: Partial<Record<MrlToastKind, DSIconType>> = {\n\t\tcollaborator: lock,\n\t\terror,\n\t\tinfo,\n\t\tprivate: modePrivate,\n\t\tsuccess: check,\n\t\twarning\n\t};\n\n\tconst hasAvatar = typeof avatar !== 'undefined' && kind === 'collaborator';\n\n\tconst darkCollaborator =\n\t\tkind === 'collaborator' &&\n\t\tbackgroundColor &&\n\t\tstickyTextColor(backgroundColor, 'light', 'dark') === 'light';\n\n\tconst classes = classNames(styles['MrlToast'], className, styles[`${kind}Notification`], {\n\t\t[styles.darkCollaborator]: !!darkCollaborator,\n\t\t[styles.closing]: closed,\n\t\t[styles['has-cta']]: !!hasInteractiveElements,\n\t\t[styles['has-avatar']]: hasAvatar\n\t});\n\n\tconst closeButtonkind = kind === 'warning' || darkCollaborator ? 'ghost' : 'ghost-inverse';\n\n\tconst customTextColor =\n\t\t!!backgroundColor && kind === 'collaborator'\n\t\t\t? stickyTextColor(backgroundColor, '#000000', '#ffffff')\n\t\t\t: undefined;\n\n\tconst primaryMessageClasses = classNames(styles.primaryMessage, 'MrlToast--primaryMessage');\n\tconst secondaryMessageClasses = classNames(styles.secondaryMessage, 'MrlToast--secondaryMessage');\n\n\treturn (\n\t\t<div\n\t\t\t{...rest}\n\t\t\tclassName={classes}\n\t\t\tdata-qa={qa}\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: kind === 'collaborator' ? backgroundColor : undefined,\n\t\t\t\tcolor: customTextColor,\n\t\t\t\tzIndex: layers.TOAST.zIndex\n\t\t\t}}\n\t\t>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{hasAvatar && <span className={styles.avatarWrapper}>{avatar}</span>}\n\t\t\t\t{!hasAvatar && showIcon && (\n\t\t\t\t\t<span className={styles.iconWrapper}>\n\t\t\t\t\t\t<MrlSvg size=\"small\" svg={DEFAULT_ICONS[kind] || info} />\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<span className={styles.textContent}>\n\t\t\t\t\t<span className={primaryMessageClasses} data-qa=\"toast-primary-content\">\n\t\t\t\t\t\t{primaryMessage}\n\t\t\t\t\t</span>{' '}\n\t\t\t\t\t<span className={secondaryMessageClasses}>{secondaryMessage}</span>\n\t\t\t\t\t{link && (\n\t\t\t\t\t\t<span className={styles.link}>\n\t\t\t\t\t\t\t<MrlLink\n\t\t\t\t\t\t\t\ttext={link.text}\n\t\t\t\t\t\t\t\thref={link.url}\n\t\t\t\t\t\t\t\tkind=\"simple\"\n\t\t\t\t\t\t\t\tstyle={{ color: 'inherit' }}\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t{hasInteractiveElements && (\n\t\t\t\t<div className={styles['cta-container']}>\n\t\t\t\t\t{secondaryCTA && (\n\t\t\t\t\t\t<MrlButton\n\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\tclassName: styles['cta--secondary']\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-qa={secondaryCTA.dataQa}\n\t\t\t\t\t\t\tkind=\"inverse\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\ttrackInteraction({\n\t\t\t\t\t\t\t\t\taction: 'click',\n\t\t\t\t\t\t\t\t\tmetadata: { cta: 'secondary' },\n\t\t\t\t\t\t\t\t\tvariant: kind\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tsecondaryCTA.onClick();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\ttext={secondaryCTA.text}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{primaryCTA && (\n\t\t\t\t\t\t<MrlButton\n\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\tclassName: styles['cta--primary']\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-qa={primaryCTA.dataQa}\n\t\t\t\t\t\t\tkind=\"inverse\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\ttrackInteraction({ action: 'click', metadata: { cta: 'primary' }, variant: kind });\n\n\t\t\t\t\t\t\t\tprimaryCTA.onClick();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\ttext={primaryCTA.text}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t\tclassName: styles['cta--close']\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-qa=\"mrl-toast-close-button\"\n\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\tkind={closeButtonkind}\n\t\t\t\t\t\t\tonClick={handleClose}\n\t\t\t\t\t\t\tsize=\"xsmall\"\n\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["MrlToast","_ref","_ref$dataQa","qa","_ref$autoClose","autoClose","avatar","backgroundColor","className","_ref$closeAfterMs","closeAfterMs","_ref$kind","kind","link","onClose","primaryCTA","primaryMessage","secondaryCTA","secondaryMessage","_ref$showCloseButton","showCloseButton","_ref$showIcon","showIcon","eventId","rest","_objectWithoutProperties","_excluded","trackInteraction","useMrlTrackInteraction","hasInteractiveElements","shouldAutoClose","_useAutoClose","useAutoClose","_useAutoClose2","_slicedToArray","closed","setClosed","handleClose","action","variant","setTimeout","DEFAULT_ICONS","collaborator","lock","error","info","private","modePrivate","success","check","warning","hasAvatar","darkCollaborator","stickyTextColor","classes","classNames","styles","concat","closing","closeButtonkind","customTextColor","undefined","primaryMessageClasses","secondaryMessageClasses","React","createElement","_extends","style","color","zIndex","layers","TOAST","content","avatarWrapper","iconWrapper","MrlSvg","size","svg","textContent","MrlLink","text","href","url","MrlButton","attrs","dataQa","onClick","metadata","cta","MrlIconButton","icon","close","state"],"mappings":"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"}
@@ -6,6 +6,7 @@ var classnames = require('classnames');
6
6
  var dsIcons = require('@muraldevkit/ds-icons');
7
7
  var MrlPagination_module = require('../MrlPagination/MrlPagination.module.scss.js');
8
8
  var constants = require('../../tooltip/constants.js');
9
+ var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
9
10
  var MrlIconButton = require('../../button/MrlIconButton/MrlIconButton.js');
10
11
  var MrlSvg = require('../../svg/MrlSvg/MrlSvg.js');
11
12
 
@@ -32,7 +33,7 @@ function _interopNamespace(e) {
32
33
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
34
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
34
35
 
35
- var _excluded = ["buttonClass", "className", "disabled", "kind", "handleClick", "text", "tooltipAnchor", "tooltipPosition"];
36
+ var _excluded = ["buttonClass", "className", "disabled", "kind", "handleClick", "text", "tooltipAnchor", "tooltipPosition", "eventId"];
36
37
  /**
37
38
  * Pagination button component
38
39
  * @param {MrlPaginationButtonProps} props - the component props
@@ -49,7 +50,22 @@ function MrlPaginationButton(_ref) {
49
50
  tooltipAnchor = _ref$tooltipAnchor === void 0 ? constants.MrlTooltipDefaults.anchor : _ref$tooltipAnchor,
50
51
  _ref$tooltipPosition = _ref.tooltipPosition,
51
52
  tooltipPosition = _ref$tooltipPosition === void 0 ? 'top' : _ref$tooltipPosition,
53
+ eventId = _ref.eventId,
52
54
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
55
+ var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlPaginationButton', eventId);
56
+
57
+ /**
58
+ * Handle onClick events
59
+ *
60
+ * @param {React.SyntheticEvent<HTMLButtonElement>} e - click event
61
+ */
62
+ var handleOnClick = e => {
63
+ trackInteraction({
64
+ action: 'click',
65
+ variant: kind
66
+ });
67
+ handleClick === null || handleClick === void 0 ? void 0 : handleClick(e);
68
+ };
53
69
  var itemClasses = classnames__default.default(MrlPagination_module.default['MrlPaginationItem'], className);
54
70
  var icons = {
55
71
  first: dsIcons.chevronGoToFirst,
@@ -71,7 +87,7 @@ function MrlPaginationButton(_ref) {
71
87
  icon: /*#__PURE__*/React__namespace.createElement(MrlSvg.MrlSvg, {
72
88
  svg: icons[kind]
73
89
  }),
74
- onClick: handleClick,
90
+ onClick: handleOnClick,
75
91
  position: tooltipPosition,
76
92
  state: disabled ? 'disabled' : 'default',
77
93
  text: text || defaultText[kind],
@@ -1 +1 @@
1
- {"version":3,"file":"MrlPaginationButton.js","sources":["../../../../../src/components/pagination/MrlPaginationButton/MrlPaginationButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport {\n\tMrlIconButton,\n\tMrlSvg,\n\tMrlTooltipAnchor,\n\tMrlTooltipDefaults,\n\tMrlTooltipPosition\n} from '../..';\nimport { PaginationButtonType } from '../constants';\nimport {\n\tchevronGoToFirst,\n\tchevronGoToLast,\n\tchevronLeft,\n\tchevronRight\n} from '@muraldevkit/ds-icons';\n\nimport styles from '../MrlPagination/MrlPagination.module.scss';\n\ninterface MrlPaginationButtonProps {\n\t/** Additional class to add to the button element */\n\tbuttonClass?: string;\n\t/** Additional class to add to the container element */\n\tclassName?: string;\n\tdisabled?: boolean;\n\t/** The type of pagination item */\n\tkind: PaginationButtonType;\n\t/**\n\t * Click event for the button.\n\t */\n\thandleClick?: (e: React.SyntheticEvent<HTMLButtonElement>) => void;\n\t/** Pagination heading */\n\ttext?: string;\n\t/** The anchor of the tooltips on the buttons */\n\ttooltipAnchor?: MrlTooltipAnchor;\n\t/** The placement of the tooltips on the buttons */\n\ttooltipPosition?: MrlTooltipPosition;\n}\n\n/**\n * Pagination button component\n * @param {MrlPaginationButtonProps} props - the component props\n * @returns a pagintaion button\n */\nexport function MrlPaginationButton({\n\tbuttonClass,\n\tclassName,\n\tdisabled,\n\tkind,\n\thandleClick,\n\ttext,\n\ttooltipAnchor = MrlTooltipDefaults.anchor,\n\ttooltipPosition = 'top',\n\t...rest\n}: MrlPaginationButtonProps): JSX.Element {\n\tconst itemClasses = classnames(styles['MrlPaginationItem'], className);\n\tconst icons = {\n\t\tfirst: chevronGoToFirst,\n\t\tlast: chevronGoToLast,\n\t\tnext: chevronRight,\n\t\tprevious: chevronLeft\n\t};\n\tconst defaultText = {\n\t\tfirst: 'Beginning',\n\t\tlast: 'End',\n\t\tnext: 'Next',\n\t\tprevious: 'Previous'\n\t};\n\n\treturn (\n\t\t<li className={itemClasses}>\n\t\t\t<MrlIconButton\n\t\t\t\t{...rest}\n\t\t\t\tclassName={buttonClass}\n\t\t\t\tkind=\"ghost\"\n\t\t\t\ticon={<MrlSvg svg={icons[kind]} />}\n\t\t\t\tonClick={handleClick}\n\t\t\t\tposition={tooltipPosition}\n\t\t\t\tstate={disabled ? 'disabled' : 'default'}\n\t\t\t\ttext={text || defaultText[kind]}\n\t\t\t\tsize=\"xsmall\"\n\t\t\t\ttipAnchor={tooltipAnchor}\n\t\t\t/>\n\t\t</li>\n\t);\n}\n"],"names":["MrlPaginationButton","_ref","buttonClass","className","disabled","kind","handleClick","text","_ref$tooltipAnchor","tooltipAnchor","MrlTooltipDefaults","anchor","_ref$tooltipPosition","tooltipPosition","rest","_objectWithoutProperties","_excluded","itemClasses","classnames","styles","icons","first","chevronGoToFirst","last","chevronGoToLast","next","chevronRight","previous","chevronLeft","defaultText","React","createElement","MrlIconButton","_extends","icon","MrlSvg","svg","onClick","position","state","size","tipAnchor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAmBA,CAAAC,IAAA,EAUO;AAAA,EAAA,IATzCC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,IAAI,GAAAJ,IAAA,CAAJI,IAAI;IACJC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,IAAI,GAAAN,IAAA,CAAJM,IAAI;IAAAC,kBAAA,GAAAP,IAAA,CACJQ,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAGE,4BAAkB,CAACC,MAAM,GAAAH,kBAAA;IAAAI,oBAAA,GAAAX,IAAA,CACzCY,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;AACpBE,IAAAA,IAAI,GAAAC,iDAAA,CAAAd,IAAA,EAAAe,SAAA,CAAA;EAEP,IAAMC,WAAW,GAAGC,2BAAU,CAACC,4BAAM,CAAC,mBAAmB,CAAC,EAAEhB,SAAS,CAAC;AACtE,EAAA,IAAMiB,KAAK,GAAG;AACbC,IAAAA,KAAK,EAAEC,wBAAgB;AACvBC,IAAAA,IAAI,EAAEC,uBAAe;AACrBC,IAAAA,IAAI,EAAEC,oBAAY;AAClBC,IAAAA,QAAQ,EAAEC;GACV;AACD,EAAA,IAAMC,WAAW,GAAG;AACnBR,IAAAA,KAAK,EAAE,WAAW;AAClBE,IAAAA,IAAI,EAAE,KAAK;AACXE,IAAAA,IAAI,EAAE,MAAM;AACZE,IAAAA,QAAQ,EAAE;GACV;EAED,oBACCG,gBAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI5B,IAAAA,SAAS,EAAEc;GAAY,eAC1Ba,gBAAA,CAAAC,aAAA,CAACC,2BAAa,EAAAC,iCAAA,KACTnB,IAAI,EAAA;AACRX,IAAAA,SAAS,EAAED,WAAY;AACvBG,IAAAA,IAAI,EAAC,OAAO;AACZ6B,IAAAA,IAAI,eAAEJ,gBAAA,CAAAC,aAAA,CAACI,aAAM,EAAA;MAACC,GAAG,EAAEhB,KAAK,CAACf,IAAI;AAAE,KAAE,CAAE;AACnCgC,IAAAA,OAAO,EAAE/B,WAAY;AACrBgC,IAAAA,QAAQ,EAAEzB,eAAgB;AAC1B0B,IAAAA,KAAK,EAAEnC,QAAQ,GAAG,UAAU,GAAG,SAAU;AACzCG,IAAAA,IAAI,EAAEA,IAAI,IAAIsB,WAAW,CAACxB,IAAI,CAAE;AAChCmC,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,SAAS,EAAEhC;AAAc,GAAA,CACzB,CACE,CAAC;AAEP;;;;"}
1
+ {"version":3,"file":"MrlPaginationButton.js","sources":["../../../../../src/components/pagination/MrlPaginationButton/MrlPaginationButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport {\n\tMrlIconButton,\n\tMrlSvg,\n\tMrlTooltipAnchor,\n\tMrlTooltipDefaults,\n\tMrlTooltipPosition\n} from '../..';\nimport { PaginationButtonType } from '../constants';\nimport {\n\tchevronGoToFirst,\n\tchevronGoToLast,\n\tchevronLeft,\n\tchevronRight\n} from '@muraldevkit/ds-icons';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nimport styles from '../MrlPagination/MrlPagination.module.scss';\n\ninterface MrlPaginationButtonProps {\n\t/** Additional class to add to the button element */\n\tbuttonClass?: string;\n\t/** Additional class to add to the container element */\n\tclassName?: string;\n\tdisabled?: boolean;\n\t/** The type of pagination item */\n\tkind: PaginationButtonType;\n\t/**\n\t * Click event for the button.\n\t */\n\thandleClick?: (e: React.SyntheticEvent<HTMLButtonElement>) => void;\n\t/** Pagination heading */\n\ttext?: string;\n\t/**\n\t * Enables interaction tracking for this button. Provide a stable, non-PII id\n\t * (e.g. 'templates-pagination'). When omitted, the button emits no analytics.\n\t */\n\teventId?: string;\n\t/** The anchor of the tooltips on the buttons */\n\ttooltipAnchor?: MrlTooltipAnchor;\n\t/** The placement of the tooltips on the buttons */\n\ttooltipPosition?: MrlTooltipPosition;\n}\n\n/**\n * Pagination button component\n * @param {MrlPaginationButtonProps} props - the component props\n * @returns a pagintaion button\n */\nexport function MrlPaginationButton({\n\tbuttonClass,\n\tclassName,\n\tdisabled,\n\tkind,\n\thandleClick,\n\ttext,\n\ttooltipAnchor = MrlTooltipDefaults.anchor,\n\ttooltipPosition = 'top',\n\teventId,\n\t...rest\n}: MrlPaginationButtonProps): JSX.Element {\n\tconst trackInteraction = useMrlTrackInteraction('MrlPaginationButton', eventId);\n\n\t/**\n\t * Handle onClick events\n\t *\n\t * @param {React.SyntheticEvent<HTMLButtonElement>} e - click event\n\t */\n\tconst handleOnClick = (e: React.SyntheticEvent<HTMLButtonElement>) => {\n\t\ttrackInteraction({ action: 'click', variant: kind });\n\n\t\thandleClick?.(e);\n\t};\n\n\tconst itemClasses = classnames(styles['MrlPaginationItem'], className);\n\tconst icons = {\n\t\tfirst: chevronGoToFirst,\n\t\tlast: chevronGoToLast,\n\t\tnext: chevronRight,\n\t\tprevious: chevronLeft\n\t};\n\tconst defaultText = {\n\t\tfirst: 'Beginning',\n\t\tlast: 'End',\n\t\tnext: 'Next',\n\t\tprevious: 'Previous'\n\t};\n\n\treturn (\n\t\t<li className={itemClasses}>\n\t\t\t<MrlIconButton\n\t\t\t\t{...rest}\n\t\t\t\tclassName={buttonClass}\n\t\t\t\tkind=\"ghost\"\n\t\t\t\ticon={<MrlSvg svg={icons[kind]} />}\n\t\t\t\tonClick={handleOnClick}\n\t\t\t\tposition={tooltipPosition}\n\t\t\t\tstate={disabled ? 'disabled' : 'default'}\n\t\t\t\ttext={text || defaultText[kind]}\n\t\t\t\tsize=\"xsmall\"\n\t\t\t\ttipAnchor={tooltipAnchor}\n\t\t\t/>\n\t\t</li>\n\t);\n}\n"],"names":["MrlPaginationButton","_ref","buttonClass","className","disabled","kind","handleClick","text","_ref$tooltipAnchor","tooltipAnchor","MrlTooltipDefaults","anchor","_ref$tooltipPosition","tooltipPosition","eventId","rest","_objectWithoutProperties","_excluded","trackInteraction","useMrlTrackInteraction","handleOnClick","e","action","variant","itemClasses","classnames","styles","icons","first","chevronGoToFirst","last","chevronGoToLast","next","chevronRight","previous","chevronLeft","defaultText","React","createElement","MrlIconButton","_extends","icon","MrlSvg","svg","onClick","position","state","size","tipAnchor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAmBA,CAAAC,IAAA,EAWO;AAAA,EAAA,IAVzCC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,IAAI,GAAAJ,IAAA,CAAJI,IAAI;IACJC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,IAAI,GAAAN,IAAA,CAAJM,IAAI;IAAAC,kBAAA,GAAAP,IAAA,CACJQ,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAGE,4BAAkB,CAACC,MAAM,GAAAH,kBAAA;IAAAI,oBAAA,GAAAX,IAAA,CACzCY,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;IACvBE,OAAO,GAAAb,IAAA,CAAPa,OAAO;AACJC,IAAAA,IAAI,GAAAC,iDAAA,CAAAf,IAAA,EAAAgB,SAAA,CAAA;AAEP,EAAA,IAAMC,gBAAgB,GAAGC,sCAAsB,CAAC,qBAAqB,EAAEL,OAAO,CAAC;;AAE/E;AACD;AACA;AACA;AACA;EACC,IAAMM,aAAa,GAAIC,CAA0C,IAAK;AACrEH,IAAAA,gBAAgB,CAAC;AAAEI,MAAAA,MAAM,EAAE,OAAO;AAAEC,MAAAA,OAAO,EAAElB;AAAK,KAAC,CAAC;AAEpDC,IAAAA,WAAW,aAAXA,WAAW,KAAA,MAAA,GAAA,MAAA,GAAXA,WAAW,CAAGe,CAAC,CAAC;EACjB,CAAC;EAED,IAAMG,WAAW,GAAGC,2BAAU,CAACC,4BAAM,CAAC,mBAAmB,CAAC,EAAEvB,SAAS,CAAC;AACtE,EAAA,IAAMwB,KAAK,GAAG;AACbC,IAAAA,KAAK,EAAEC,wBAAgB;AACvBC,IAAAA,IAAI,EAAEC,uBAAe;AACrBC,IAAAA,IAAI,EAAEC,oBAAY;AAClBC,IAAAA,QAAQ,EAAEC;GACV;AACD,EAAA,IAAMC,WAAW,GAAG;AACnBR,IAAAA,KAAK,EAAE,WAAW;AAClBE,IAAAA,IAAI,EAAE,KAAK;AACXE,IAAAA,IAAI,EAAE,MAAM;AACZE,IAAAA,QAAQ,EAAE;GACV;EAED,oBACCG,gBAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAInC,IAAAA,SAAS,EAAEqB;GAAY,eAC1Ba,gBAAA,CAAAC,aAAA,CAACC,2BAAa,EAAAC,iCAAA,KACTzB,IAAI,EAAA;AACRZ,IAAAA,SAAS,EAAED,WAAY;AACvBG,IAAAA,IAAI,EAAC,OAAO;AACZoC,IAAAA,IAAI,eAAEJ,gBAAA,CAAAC,aAAA,CAACI,aAAM,EAAA;MAACC,GAAG,EAAEhB,KAAK,CAACtB,IAAI;AAAE,KAAE,CAAE;AACnCuC,IAAAA,OAAO,EAAExB,aAAc;AACvByB,IAAAA,QAAQ,EAAEhC,eAAgB;AAC1BiC,IAAAA,KAAK,EAAE1C,QAAQ,GAAG,UAAU,GAAG,SAAU;AACzCG,IAAAA,IAAI,EAAEA,IAAI,IAAI6B,WAAW,CAAC/B,IAAI,CAAE;AAChC0C,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,SAAS,EAAEvC;AAAc,GAAA,CACzB,CACE,CAAC;AAEP;;;;"}
@@ -7,6 +7,7 @@ var MrlPanel_module = require('./MrlPanel.module.scss.js');
7
7
  var dsIcons = require('@muraldevkit/ds-icons');
8
8
  var index$1 = require('../../../hooks/useHasFocusableDescendant/index.js');
9
9
  var index = require('../../../hooks/useScrollbarInfo/index.js');
10
+ var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
10
11
  var setAttributes = require('../../../utils/setAttributes/setAttributes.js');
11
12
  var MrlPanelContext = require('../MrlPanelContext/MrlPanelContext.js');
12
13
  var MrlFocusTrap = require('../../focus-trap/MrlFocusTrap/MrlFocusTrap.js');
@@ -39,7 +40,7 @@ function _interopNamespace(e) {
39
40
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
40
41
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
41
42
 
42
- var _excluded = ["className", "title", "id", "children", "hasStickyHeader", "header", "description", "disableAutofocus", "topActions", "hasDataScrollAnchor", "onClose", "data-qa"];
43
+ var _excluded = ["className", "title", "id", "children", "hasStickyHeader", "header", "description", "disableAutofocus", "topActions", "hasDataScrollAnchor", "onClose", "eventId", "data-qa"];
43
44
 
44
45
  /**
45
46
  * Props for the MrlPanel component.
@@ -63,10 +64,29 @@ var MrlPanel = /*#__PURE__*/React__namespace.forwardRef(function MrlPanel(props,
63
64
  topActions = props.topActions,
64
65
  hasDataScrollAnchor = props.hasDataScrollAnchor,
65
66
  onClose = props.onClose,
67
+ eventId = props.eventId,
66
68
  _props$dataQa = props['data-qa'],
67
69
  qa = _props$dataQa === void 0 ? 'panel' : _props$dataQa,
68
70
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
69
71
  var panelRef = React__namespace.useRef(null);
72
+ var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlPanel', eventId);
73
+ React__namespace.useEffect(() => {
74
+ trackInteraction({
75
+ action: 'open'
76
+ });
77
+ // the panel is open for as long as the consumer renders it
78
+ // eslint-disable-next-line react-hooks/exhaustive-deps
79
+ }, []);
80
+
81
+ /**
82
+ * Handles closing the panel from both the close button and the escape key.
83
+ */
84
+ var handleClose = React__namespace.useCallback(() => {
85
+ trackInteraction({
86
+ action: 'close'
87
+ });
88
+ onClose === null || onClose === void 0 ? void 0 : onClose();
89
+ }, [onClose, trackInteraction]);
70
90
 
71
91
  // Unique ID for aria-describedby
72
92
  var descriptionIdRef = React__namespace.useRef(description ? setAttributes.getUniqueId('mrl-panel-description') : '');
@@ -84,9 +104,9 @@ var MrlPanel = /*#__PURE__*/React__namespace.forwardRef(function MrlPanel(props,
84
104
  if (e.key === 'Escape' && typeof onClose === 'function') {
85
105
  e.preventDefault();
86
106
  e.stopPropagation();
87
- onClose();
107
+ handleClose();
88
108
  }
89
- }, [onClose]);
109
+ }, [onClose, handleClose]);
90
110
  var panelClasses = classnames__default.default(MrlPanel_module.default['MrlPanel'], 'MrlPanel', className);
91
111
  return /*#__PURE__*/React__namespace.createElement(MrlPanelContext.MrlPanelContext.Provider, {
92
112
  value: {
@@ -138,7 +158,7 @@ var MrlPanel = /*#__PURE__*/React__namespace.forwardRef(function MrlPanel(props,
138
158
  icon: /*#__PURE__*/React__namespace.createElement(MrlSvg.MrlSvg, {
139
159
  svg: dsIcons.close
140
160
  }),
141
- onClick: onClose,
161
+ onClick: handleClose,
142
162
  text: "Close",
143
163
  size: "small",
144
164
  state: "default",
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA;AACA;AACA;;AAmDA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,QAAQ,gBAAGC,gBAAK,CAACC,UAAU,CACvC,SAASF,QAAQA,CAACG,KAAK,EAAEC,GAAG,EAAe;AAC1C,EAAA,IACCC,SAAS,GAaNF,KAAK,CAbRE,SAAS;IACTC,KAAK,GAYFH,KAAK,CAZRG,KAAK;IACLC,EAAE,GAWCJ,KAAK,CAXRI,EAAE;IACFC,QAAQ,GAULL,KAAK,CAVRK,QAAQ;IACRC,eAAe,GASZN,KAAK,CATRM,eAAe;IACfC,MAAM,GAQHP,KAAK,CARRO,MAAM;IACNC,WAAW,GAORR,KAAK,CAPRQ,WAAW;IACXC,gBAAgB,GAMbT,KAAK,CANRS,gBAAgB;IAChBC,UAAU,GAKPV,KAAK,CALRU,UAAU;IACVC,mBAAmB,GAIhBX,KAAK,CAJRW,mBAAmB;IACnBC,OAAO,GAGJZ,KAAK,CAHRY,OAAO;IAAAC,aAAA,GAGJb,KAAK,CAFP,SAAS,CAAA;AAAGc,IAAAA,EAAE,GAAAD,aAAA,KAAA,MAAA,GAAG,OAAO,GAAAA,aAAA;AACtBE,IAAAA,IAAI,GAAAC,iDAAA,CACJhB,KAAK,EAAAiB,SAAA,CAAA;AAET,EAAA,IAAMC,QAAQ,GAAGpB,gBAAK,CAACqB,MAAM,CAAiB,IAAI,CAAC;;AAEnD;AACA,EAAA,IAAMC,gBAAgB,GAAGtB,gBAAK,CAACqB,MAAM,CACpCX,WAAW,GAAGa,yBAAW,CAAC,uBAAuB,CAAC,GAAG,EACtD,CAAC;AAED,EAAA,IAAAC,iBAAA,GAMIC,sBAAgB,EAAkB;IALrCC,sBAAsB,GAAAF,iBAAA,CAAtBE,sBAAsB;IACtBC,oBAAoB,GAAAH,iBAAA,CAApBG,oBAAoB;IACpBC,sBAAsB,GAAAJ,iBAAA,CAAtBI,sBAAsB;IACtBC,yBAAyB,GAAAL,iBAAA,CAAzBK,yBAAyB;IACzBC,sBAAsB,GAAAN,iBAAA,CAAtBM,sBAAsB;AAGvB,EAAA,IAAMC,sBAAsB,GAAGC,iCAAyB,CAACN,sBAAsB,CAAC;AAEhF1B,EAAAA,gBAAK,CAACiC,mBAAmB,CAA+C9B,GAAG,EAAE,MAAM;IAClF,OAAOiB,QAAQ,CAACc,OAAO;AACxB,EAAA,CAAC,CAAC;AAEF,EAAA,IAAMC,aAAa,GAAGnC,gBAAK,CAACoC,WAAW,CACrCC,CAAsC,IAAK;IAC3C,IAAIA,CAAC,CAACC,GAAG,KAAK,QAAQ,IAAI,OAAOxB,OAAO,KAAK,UAAU,EAAE;MACxDuB,CAAC,CAACE,cAAc,EAAE;MAClBF,CAAC,CAACG,eAAe,EAAE;AACnB1B,MAAAA,OAAO,EAAE;AACV,IAAA;AACD,EAAA,CAAC,EACD,CAACA,OAAO,CACT,CAAC;AAED,EAAA,IAAM2B,YAAY,GAAGC,2BAAU,CAACC,uBAAM,CAAC,UAAU,CAAC,EAAE,UAAU,EAAEvC,SAAS,CAAC;AAE1E,EAAA,oBACCJ,gBAAA,CAAA4C,aAAA,CAACC,+BAAe,CAACC,QAAQ,EAAA;AACxBC,IAAAA,KAAK,EAAE;MACNnB,sBAAsB;MACtBD,oBAAoB;MACpBE,yBAAyB;AACzBC,MAAAA;AACD;AAAE,GAAA,eAGF9B,gBAAA,CAAA4C,aAAA,CAAA,KAAA,EAAAI,iCAAA,KACK/B,IAAI,EAAA;AACRb,IAAAA,SAAS,EAAEqC,YAAa;AACxB,IAAA,kBAAA,EAAkBnB,gBAAgB,CAACY,OAAO,IAAIhC,KAAK,CAAC,kBAAkB,CAAE;AACxE,IAAA,YAAA,EAAYG,KAAK,IAAIH,KAAK,CAAC,YAAY,CAAE;AACzC,IAAA,YAAA,EAAW,OAAO;AAClB,IAAA,SAAA,EAASc,EAAG;AACZV,IAAAA,EAAE,EAAEA,EAAG;AACP2C,IAAAA,SAAS,EAAEd,aAAc;AACzBe,IAAAA,IAAI,EAAC,QAAQ;AACb/C,IAAAA,GAAG,EAAEiB;AAAS,GAAA,CAAA,eAEdpB,gBAAA,CAAA4C,aAAA,CAACO,yBAAY,EAAA;AAACC,IAAAA,YAAY,EAAEhC,QAAS;AAACT,IAAAA,gBAAgB,EAAEA;GAAiB,eACxEX,gBAAA,CAAA4C,aAAA,CAAA,QAAA,EAAA;IAAQxC,SAAS,EAAEsC,2BAAU,CAACC,uBAAM,CAAC,kBAAkB,CAAC,EAAE,kBAAkB;AAAE,GAAA,EAC5E,CAAClC,MAAM,iBACPT,gBAAA,CAAA4C,aAAA,CAAA,KAAA,EAAA;IACCxC,SAAS,EAAEsC,2BAAU,CACpBC,uBAAM,CAAC,0BAA0B,CAAC,EAClC,0BAA0B,EAC1B;AACC,MAAA,CAACA,uBAAM,CAAC,sCAAsC,CAAC,GAAG,CAAC,CAACjC;KAEtD;AAAE,GAAA,eAEFV,gBAAA,CAAA4C,aAAA,CAACS,6BAAc,EAAA;AACdjD,IAAAA,SAAS,EAAEuC,uBAAM,CAAC,iBAAiB,CAAE;AACrCW,IAAAA,KAAK,EAAE;AACN,MAAA,SAAS,EAAA,EAAA,CAAAC,MAAA,CAAKvC,EAAE,EAAA,eAAA,CAAe;AAC/BV,MAAAA;KACC;AACFkD,IAAAA,SAAS,EAAC,SAAS;AACnBC,IAAAA,IAAI,EAAC,OAAO;AACZC,IAAAA,KAAK,EAAC,GAAG;AACTC,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,IAAI,EAAEvD;AAAM,GACZ,CAAC,EACDO,UAAU,iBACVZ,gBAAA,CAAA4C,aAAA,CAAA5C,gBAAA,CAAA6D,QAAA,EAAA,IAAA,eACC7D,gBAAA,CAAA4C,aAAA,CAAA,KAAA,EAAA;IACCxC,SAAS,EAAEsC,2BAAU,CACpBC,uBAAM,CAAC,uBAAuB,CAAC,EAC/B,uBACD;AAAE,GAAA,EAED/B,UAAU,eACXZ,gBAAA,CAAA4C,aAAA,CAACkB,qBAAU,EAAA;AACVC,IAAAA,WAAW,EAAC,UAAU;AACtBC,IAAAA,OAAO,EAAC,OAAO;AACfC,IAAAA,MAAM,EAAC,uBAAuB;IAC9B7D,SAAS,EAAEsC,2BAAU,CACpBC,uBAAM,CAAC,+BAA+B,CAAC,EACvC,+BACD;GACA,CACG,CACJ,CAEC,CACL,EACAlC,MAAM,eACPT,gBAAA,CAAA4C,aAAA,CAACsB,2BAAa,EAAA;IACb,SAAA,EAAA,EAAA,CAAAX,MAAA,CAAYvC,EAAE,EAAA,eAAA,CAAgB;IAC9BmD,gBAAgB,EAAEzB,2BAAU,CAACC,uBAAM,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAE;AAC3EyB,IAAAA,IAAI,eAAEpE,gBAAA,CAAA4C,aAAA,CAACyB,aAAM,EAAA;AAACC,MAAAA,GAAG,EAAEC;AAAM,KAAE,CAAE;AAC7BC,IAAAA,OAAO,EAAE1D,OAAQ;AACjB8C,IAAAA,IAAI,EAAC,OAAO;AACZD,IAAAA,IAAI,EAAC,OAAO;AACZc,IAAAA,KAAK,EAAC,SAAS;AACfC,IAAAA,QAAQ,EAAC,QAAQ;AACjBC,IAAAA,SAAS,EAAC,QAAQ;AAClBlB,IAAAA,IAAI,EAAC;AAAO,GACZ,CACM,CAAC,eAaTzD,gBAAA,CAAA4C,aAAA,QAAAI,iCAAA,CAAA;AACC7C,IAAAA,GAAG,EAAEuB,sBAAuB;AAC5B,IAAA,oBAAA,EAAoBb,mBAAoB;IACxC,SAAA,EAAA,EAAA,CAAA0C,MAAA,CAAYvC,EAAE,EAAA,aAAA,CAAc;IAC5BZ,SAAS,EAAEsC,2BAAU,CAACC,uBAAM,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,EAAE;AAC7E,MAAA,CAACA,uBAAM,CAAC,wCAAwC,CAAC,GAAGnC;KACpD;GAAE,EACEsB,sBAAsB,GAAG,CAAC,IAAI;AAClC8C,IAAAA,KAAK,EAAE;MACNC,YAAY,EAAA,+BAAA,CAAAtB,MAAA,CAAkCzB,sBAAsB,EAAA,KAAA;AACrE;GACA,EACIH,oBAAoB,IAAAmD,uCAAA,CAAA;AACxB,IAAA,YAAY,EAAEzE,KAAK,GAAA,EAAA,CAAAkD,MAAA,CACblD,KAAK,iCACR,0BAA0B;AAC7B6C,IAAAA,IAAI,EAAE;GAAQ,EACV,CAACnB,sBAAsB,IAAI;AAC9B;AACAgD,IAAAA,QAAQ,EAAE;GACV,CACD,GAEArE,WAAW,iBACXV,gBAAA,CAAA4C,aAAA,CAACoC,eAAO,EAAA;AACP1B,IAAAA,KAAK,EAAE;MACNlD,SAAS,EAAEsC,2BAAU,CAACC,uBAAM,CAAC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;MAC/ErC,EAAE,EAAEgB,gBAAgB,CAACY;KACpB;AACFyB,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,IAAI,EAAElD;AAAY,GAClB,CACD,EACAH,QACG,CACQ,CACV,CACoB,CAAC;AAE7B,CACD;;;;"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA;AACA;AACA;;AA4DA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,QAAQ,gBAAGC,gBAAK,CAACC,UAAU,CACvC,SAASF,QAAQA,CAACG,KAAK,EAAEC,GAAG,EAAe;AAC1C,EAAA,IACCC,SAAS,GAcNF,KAAK,CAdRE,SAAS;IACTC,KAAK,GAaFH,KAAK,CAbRG,KAAK;IACLC,EAAE,GAYCJ,KAAK,CAZRI,EAAE;IACFC,QAAQ,GAWLL,KAAK,CAXRK,QAAQ;IACRC,eAAe,GAUZN,KAAK,CAVRM,eAAe;IACfC,MAAM,GASHP,KAAK,CATRO,MAAM;IACNC,WAAW,GAQRR,KAAK,CARRQ,WAAW;IACXC,gBAAgB,GAObT,KAAK,CAPRS,gBAAgB;IAChBC,UAAU,GAMPV,KAAK,CANRU,UAAU;IACVC,mBAAmB,GAKhBX,KAAK,CALRW,mBAAmB;IACnBC,OAAO,GAIJZ,KAAK,CAJRY,OAAO;IACPC,OAAO,GAGJb,KAAK,CAHRa,OAAO;IAAAC,aAAA,GAGJd,KAAK,CAFP,SAAS,CAAA;AAAGe,IAAAA,EAAE,GAAAD,aAAA,KAAA,MAAA,GAAG,OAAO,GAAAA,aAAA;AACtBE,IAAAA,IAAI,GAAAC,iDAAA,CACJjB,KAAK,EAAAkB,SAAA,CAAA;AAET,EAAA,IAAMC,QAAQ,GAAGrB,gBAAK,CAACsB,MAAM,CAAiB,IAAI,CAAC;AAEnD,EAAA,IAAMC,gBAAgB,GAAGC,sCAAsB,CAAC,UAAU,EAAET,OAAO,CAAC;EAEpEf,gBAAK,CAACyB,SAAS,CAAC,MAAM;AACrBF,IAAAA,gBAAgB,CAAC;AAAEG,MAAAA,MAAM,EAAE;AAAO,KAAC,CAAC;AACpC;AACA;EACD,CAAC,EAAE,EAAE,CAAC;;AAEN;AACF;AACA;AACE,EAAA,IAAMC,WAAW,GAAG3B,gBAAK,CAAC4B,WAAW,CAAC,MAAM;AAC3CL,IAAAA,gBAAgB,CAAC;AAAEG,MAAAA,MAAM,EAAE;AAAQ,KAAC,CAAC;AAErCZ,IAAAA,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,EAAI;AACZ,EAAA,CAAC,EAAE,CAACA,OAAO,EAAES,gBAAgB,CAAC,CAAC;;AAE/B;AACA,EAAA,IAAMM,gBAAgB,GAAG7B,gBAAK,CAACsB,MAAM,CACpCZ,WAAW,GAAGoB,yBAAW,CAAC,uBAAuB,CAAC,GAAG,EACtD,CAAC;AAED,EAAA,IAAAC,iBAAA,GAMIC,sBAAgB,EAAkB;IALrCC,sBAAsB,GAAAF,iBAAA,CAAtBE,sBAAsB;IACtBC,oBAAoB,GAAAH,iBAAA,CAApBG,oBAAoB;IACpBC,sBAAsB,GAAAJ,iBAAA,CAAtBI,sBAAsB;IACtBC,yBAAyB,GAAAL,iBAAA,CAAzBK,yBAAyB;IACzBC,sBAAsB,GAAAN,iBAAA,CAAtBM,sBAAsB;AAGvB,EAAA,IAAMC,sBAAsB,GAAGC,iCAAyB,CAACN,sBAAsB,CAAC;AAEhFjC,EAAAA,gBAAK,CAACwC,mBAAmB,CAA+CrC,GAAG,EAAE,MAAM;IAClF,OAAOkB,QAAQ,CAACoB,OAAO;AACxB,EAAA,CAAC,CAAC;AAEF,EAAA,IAAMC,aAAa,GAAG1C,gBAAK,CAAC4B,WAAW,CACrCe,CAAsC,IAAK;IAC3C,IAAIA,CAAC,CAACC,GAAG,KAAK,QAAQ,IAAI,OAAO9B,OAAO,KAAK,UAAU,EAAE;MACxD6B,CAAC,CAACE,cAAc,EAAE;MAClBF,CAAC,CAACG,eAAe,EAAE;AACnBnB,MAAAA,WAAW,EAAE;AACd,IAAA;AACD,EAAA,CAAC,EACD,CAACb,OAAO,EAAEa,WAAW,CACtB,CAAC;AAED,EAAA,IAAMoB,YAAY,GAAGC,2BAAU,CAACC,uBAAM,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE7C,SAAS,CAAC;AAE1E,EAAA,oBACCJ,gBAAA,CAAAkD,aAAA,CAACC,+BAAe,CAACC,QAAQ,EAAA;AACxBC,IAAAA,KAAK,EAAE;MACNlB,sBAAsB;MACtBD,oBAAoB;MACpBE,yBAAyB;AACzBC,MAAAA;AACD;AAAE,GAAA,eAGFrC,gBAAA,CAAAkD,aAAA,CAAA,KAAA,EAAAI,iCAAA,KACKpC,IAAI,EAAA;AACRd,IAAAA,SAAS,EAAE2C,YAAa;AACxB,IAAA,kBAAA,EAAkBlB,gBAAgB,CAACY,OAAO,IAAIvC,KAAK,CAAC,kBAAkB,CAAE;AACxE,IAAA,YAAA,EAAYG,KAAK,IAAIH,KAAK,CAAC,YAAY,CAAE;AACzC,IAAA,YAAA,EAAW,OAAO;AAClB,IAAA,SAAA,EAASe,EAAG;AACZX,IAAAA,EAAE,EAAEA,EAAG;AACPiD,IAAAA,SAAS,EAAEb,aAAc;AACzBc,IAAAA,IAAI,EAAC,QAAQ;AACbrD,IAAAA,GAAG,EAAEkB;AAAS,GAAA,CAAA,eAEdrB,gBAAA,CAAAkD,aAAA,CAACO,yBAAY,EAAA;AAACC,IAAAA,YAAY,EAAErC,QAAS;AAACV,IAAAA,gBAAgB,EAAEA;GAAiB,eACxEX,gBAAA,CAAAkD,aAAA,CAAA,QAAA,EAAA;IAAQ9C,SAAS,EAAE4C,2BAAU,CAACC,uBAAM,CAAC,kBAAkB,CAAC,EAAE,kBAAkB;AAAE,GAAA,EAC5E,CAACxC,MAAM,iBACPT,gBAAA,CAAAkD,aAAA,CAAA,KAAA,EAAA;IACC9C,SAAS,EAAE4C,2BAAU,CACpBC,uBAAM,CAAC,0BAA0B,CAAC,EAClC,0BAA0B,EAC1B;AACC,MAAA,CAACA,uBAAM,CAAC,sCAAsC,CAAC,GAAG,CAAC,CAACvC;KAEtD;AAAE,GAAA,eAEFV,gBAAA,CAAAkD,aAAA,CAACS,6BAAc,EAAA;AACdvD,IAAAA,SAAS,EAAE6C,uBAAM,CAAC,iBAAiB,CAAE;AACrCW,IAAAA,KAAK,EAAE;AACN,MAAA,SAAS,EAAA,EAAA,CAAAC,MAAA,CAAK5C,EAAE,EAAA,eAAA,CAAe;AAC/BX,MAAAA;KACC;AACFwD,IAAAA,SAAS,EAAC,SAAS;AACnBC,IAAAA,IAAI,EAAC,OAAO;AACZC,IAAAA,KAAK,EAAC,GAAG;AACTC,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,IAAI,EAAE7D;AAAM,GACZ,CAAC,EACDO,UAAU,iBACVZ,gBAAA,CAAAkD,aAAA,CAAAlD,gBAAA,CAAAmE,QAAA,EAAA,IAAA,eACCnE,gBAAA,CAAAkD,aAAA,CAAA,KAAA,EAAA;IACC9C,SAAS,EAAE4C,2BAAU,CACpBC,uBAAM,CAAC,uBAAuB,CAAC,EAC/B,uBACD;AAAE,GAAA,EAEDrC,UAAU,eACXZ,gBAAA,CAAAkD,aAAA,CAACkB,qBAAU,EAAA;AACVC,IAAAA,WAAW,EAAC,UAAU;AACtBC,IAAAA,OAAO,EAAC,OAAO;AACfC,IAAAA,MAAM,EAAC,uBAAuB;IAC9BnE,SAAS,EAAE4C,2BAAU,CACpBC,uBAAM,CAAC,+BAA+B,CAAC,EACvC,+BACD;GACA,CACG,CACJ,CAEC,CACL,EACAxC,MAAM,eACPT,gBAAA,CAAAkD,aAAA,CAACsB,2BAAa,EAAA;IACb,SAAA,EAAA,EAAA,CAAAX,MAAA,CAAY5C,EAAE,EAAA,eAAA,CAAgB;IAC9BwD,gBAAgB,EAAEzB,2BAAU,CAACC,uBAAM,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAE;AAC3EyB,IAAAA,IAAI,eAAE1E,gBAAA,CAAAkD,aAAA,CAACyB,aAAM,EAAA;AAACC,MAAAA,GAAG,EAAEC;AAAM,KAAE,CAAE;AAC7BC,IAAAA,OAAO,EAAEnD,WAAY;AACrBuC,IAAAA,IAAI,EAAC,OAAO;AACZD,IAAAA,IAAI,EAAC,OAAO;AACZc,IAAAA,KAAK,EAAC,SAAS;AACfC,IAAAA,QAAQ,EAAC,QAAQ;AACjBC,IAAAA,SAAS,EAAC,QAAQ;AAClBlB,IAAAA,IAAI,EAAC;AAAO,GACZ,CACM,CAAC,eAaT/D,gBAAA,CAAAkD,aAAA,QAAAI,iCAAA,CAAA;AACCnD,IAAAA,GAAG,EAAE8B,sBAAuB;AAC5B,IAAA,oBAAA,EAAoBpB,mBAAoB;IACxC,SAAA,EAAA,EAAA,CAAAgD,MAAA,CAAY5C,EAAE,EAAA,aAAA,CAAc;IAC5Bb,SAAS,EAAE4C,2BAAU,CAACC,uBAAM,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,EAAE;AAC7E,MAAA,CAACA,uBAAM,CAAC,wCAAwC,CAAC,GAAGzC;KACpD;GAAE,EACE6B,sBAAsB,GAAG,CAAC,IAAI;AAClC6C,IAAAA,KAAK,EAAE;MACNC,YAAY,EAAA,+BAAA,CAAAtB,MAAA,CAAkCxB,sBAAsB,EAAA,KAAA;AACrE;GACA,EACIH,oBAAoB,IAAAkD,uCAAA,CAAA;AACxB,IAAA,YAAY,EAAE/E,KAAK,GAAA,EAAA,CAAAwD,MAAA,CACbxD,KAAK,iCACR,0BAA0B;AAC7BmD,IAAAA,IAAI,EAAE;GAAQ,EACV,CAAClB,sBAAsB,IAAI;AAC9B;AACA+C,IAAAA,QAAQ,EAAE;GACV,CACD,GAEA3E,WAAW,iBACXV,gBAAA,CAAAkD,aAAA,CAACoC,eAAO,EAAA;AACP1B,IAAAA,KAAK,EAAE;MACNxD,SAAS,EAAE4C,2BAAU,CAACC,uBAAM,CAAC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;MAC/E3C,EAAE,EAAEuB,gBAAgB,CAACY;KACpB;AACFwB,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,IAAI,EAAExD;AAAY,GAClB,CACD,EACAH,QACG,CACQ,CACV,CACoB,CAAC;AAE7B,CACD;;;;"}
@@ -19,6 +19,7 @@ var getOffset = require('./utilities/get-offset.js');
19
19
  var useMrlPopoverEventHandlers = require('./hooks/use-mrl-popover-event-handlers.js');
20
20
  var MrlPopoverContext = require('./context/MrlPopoverContext.js');
21
21
  var MrlPopoverScrollContainer = require('./MrlPopoverScrollContainer.js');
22
+ var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
22
23
  var index$2 = require('../../../utils/trapFocus/index.js');
23
24
  var MrlFocusTrap = require('../../focus-trap/MrlFocusTrap/MrlFocusTrap.js');
24
25
  var isElementAriaDisabled = require('../../../utils/isElementAriaDisabled/isElementAriaDisabled.js');
@@ -51,7 +52,7 @@ function _interopNamespace(e) {
51
52
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
52
53
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
53
54
 
54
- 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"];
55
+ 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"];
55
56
  var POPOVER_CLICKOUTSIDE_WHITELIST = ['#mrl-select-portal', '#mrl-popover-menu-portal', ".".concat(MrlSelect.SELECT_MENU_LIST_CLASS_NAME), ".".concat(MrlMultiSelect.MULTI_SELECT_MENU_LIST_CLASS_NAME)];
56
57
  /**
57
58
  * MrlPopover
@@ -101,6 +102,7 @@ function MrlPopover(_ref) {
101
102
  offset = _ref.offset,
102
103
  onClose = _ref.onClose,
103
104
  onOpen = _ref.onOpen,
105
+ eventId = _ref.eventId,
104
106
  triggerRef = _ref.triggerRef,
105
107
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
106
108
  var _React$useState = React__namespace.useState({
@@ -110,6 +112,21 @@ function MrlPopover(_ref) {
110
112
  _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
111
113
  state = _React$useState2[0],
112
114
  setState = _React$useState2[1];
115
+ var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlPopover', eventId);
116
+ // the popover opens and closes from several paths (trigger click, keyboard, click
117
+ // outside, close button), so open/close is emitted from the resulting state.
118
+ var wasOpenRef = React__namespace.useRef(actionState.isOpen || false);
119
+ React__namespace.useEffect(() => {
120
+ if (wasOpenRef.current === state.isOpen) return;
121
+ wasOpenRef.current = state.isOpen;
122
+ trackInteraction({
123
+ action: state.isOpen ? 'open' : 'close',
124
+ metadata: {
125
+ isSubMenu
126
+ },
127
+ variant: position
128
+ });
129
+ }, [state.isOpen, isSubMenu, position, trackInteraction]);
113
130
 
114
131
  // stores all of the interactive elements in the popover for focus management
115
132
  var _React$useState3 = React__namespace.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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"}