@muraldevkit/ui-toolkit 4.72.0 → 4.73.0-dev-t0WE.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MrlSmartTable.js","sources":["../../../../../src/components/table/MrlSmartTable/MrlSmartTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport {\n\tMrlCheckboxStandalone,\n\tMrlLiveRegion,\n\tMrlSvg,\n\tMrlTable,\n\tMrlTableBody,\n\tMrlTableCell,\n\tMrlTableColumn,\n\tMrlTableHeader,\n\tMrlTableRow,\n\tMrlTooltip\n} from '../../';\nimport { MrlTableProps } from '../MrlTable';\nimport { MrlTableEmptyState } from '../MrlTableEmptyState';\nimport {\n\tMrlSortDirection,\n\tMrlTableCellHorizontalAlign,\n\tMrlTableColumnId,\n\tMrlTableColumnSortDescriptor,\n\tMrlTableItemId,\n\tMrlTableSelectionMode\n} from '../constants';\nimport { getUniqueId } from '../../../utils';\nimport {\n\tkeyFor,\n\tnextSortDirection,\n\tsortAlphabeticallyAsCoercedStrings,\n\tsortIcon,\n\tsortText\n} from '../utils';\nimport { info } from '@muraldevkit/ds-icons';\n\nimport styles from './MrlSmartTable.module.scss';\nimport { getScrollableContainer } from '../../../utils/getScrollableContainer/getScrollableContainer';\nimport { hasHorizontalScroll } from '../../../utils/hasHorizontalScroll/hasHorizontalScroll';\nimport { MemoizedDefaultCellContent } from './components/DefaultCellContent';\n\nconst ROW_HEIGHT_PX = 48;\n\nconst sortItems = (\n\tcolumns: MrlSmartTableColumn[],\n\titems: MrlTableItem[],\n\tsortDescriptor: MrlTableColumnSortDescriptor\n): MrlTableItem[] => {\n\tconst sortColumn = columns.find((col) => col.id === sortDescriptor.column);\n\tif (!sortColumn) {\n\t\tconsole.error(`No column found for sort descriptor key: ${sortDescriptor.column}`);\n\t\treturn items;\n\t}\n\n\tconst { sortByRowContext, sortBy } = sortColumn;\n\n\tif (sortByRowContext) {\n\t\treturn [...items].sort((a, b) => sortByRowContext(a, b) * sortDescriptor.direction);\n\t}\n\n\tconst sortComparator = sortBy || sortAlphabeticallyAsCoercedStrings;\n\n\treturn [...items].sort((a, b) => {\n\t\tconst aSortValue = a[sortColumn.id];\n\t\tconst bSortValue = b[sortColumn.id];\n\t\treturn sortComparator(aSortValue, bSortValue) * sortDescriptor.direction;\n\t});\n};\n\nfunction EmptyStateWrapper({\n\tchildren,\n\tvisibleColumnCount\n}: {\n\tchildren: React.ReactNode;\n\tvisibleColumnCount: number;\n}): JSX.Element {\n\treturn (\n\t\t<tr role=\"row\">\n\t\t\t<td role=\"gridcell\" colSpan={visibleColumnCount}>\n\t\t\t\t{children}\n\t\t\t</td>\n\t\t</tr>\n\t);\n}\n\ninterface VisuallyHiddenAccessibleButtonProps extends React.HTMLProps<HTMLButtonElement> {\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nconst VisuallyHiddenAccessibleButton = (props: VisuallyHiddenAccessibleButtonProps) => {\n\tconst { horizontalAlign, ...rest } = props;\n\n\treturn (\n\t\t<button\n\t\t\t{...rest}\n\t\t\ttype=\"button\"\n\t\t\tclassName={classNames(styles['MrlSmartTable--accessible-visually-hidden-button'], {\n\t\t\t\t[styles['align-right']]: horizontalAlign === 'right'\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport interface MrlSmartColumnRendererProps {\n\t/**\n\t * The column being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * A function to change current sort descriptor.\n\t */\n\thandleSortClick: ({\n\t\tcolumn,\n\t\tdirection,\n\t\tname\n\t}: {\n\t\tcolumn: MrlSmartTableColumn['id'];\n\t\tdirection: MrlSortDirection;\n\t\tname: string;\n\t}) => void;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\t/**\n\t * The current sort descriptor.\n\t */\n\tsortDescriptor?: MrlTableColumnSortDescriptor;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nexport interface MrlSmartCellRendererProps {\n\t/**\n\t * The item for the cell being rendered.\n\t */\n\titem: MrlTableItem;\n\t/**\n\t * The column for the cell being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n}\n\nconst DefaultColumnContent = ({\n\tcolumn,\n\tdataQaPrefix,\n\ttableElementId,\n\thandleSortClick,\n\tsortDescriptor,\n\thasScrollShadowLeft,\n\thasScrollShadowRight\n}: MrlSmartColumnRendererProps) => {\n\tconst { allowsSorting, horizontalAlign, id, name, sticky, tooltip } = column;\n\tconst elementId = keyFor(tableElementId, 'column', id);\n\tconst dataQa = keyFor(dataQaPrefix, 'column', id);\n\tconst columnProps = {\n\t\t'data-qa': dataQa,\n\t\thasScrollShadowLeft,\n\t\thasScrollShadowRight,\n\t\thorizontalAlign,\n\t\tid: elementId,\n\t\tscope: 'col',\n\t\tsticky\n\t};\n\n\tconst memoizedTooltip = React.useMemo(\n\t\t() => (\n\t\t\t<MrlTooltip\n\t\t\t\tanchor=\"center\"\n\t\t\t\tdataQa={`${dataQa}-tooltip`}\n\t\t\t\tposition=\"bottom\"\n\t\t\t\ttext={tooltip || ''}\n\t\t\t>\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n\t\t\t\t<span data-qa={`${dataQa}-tooltip-trigger`} tabIndex={0}>\n\t\t\t\t\t<MrlSvg className=\"MrlTableColumn--tooltip\" svg={info} size=\"small\" />\n\t\t\t\t</span>\n\t\t\t</MrlTooltip>\n\t\t),\n\t\t[dataQa, tooltip]\n\t);\n\n\tconst tooltipContent = tooltip ? memoizedTooltip : undefined;\n\n\tif (!allowsSorting) {\n\t\treturn (\n\t\t\t<MrlTableColumn {...columnProps}>\n\t\t\t\t{name}\n\t\t\t\t{tooltipContent}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t}\n\n\tconst currentDirection = sortDescriptor?.column === id ? sortDescriptor.direction : undefined;\n\tconst nextDirection = nextSortDirection(currentDirection);\n\tconst onSortClick = () => {\n\t\thandleSortClick({ column: id, direction: nextDirection, name: name });\n\t};\n\n\treturn (\n\t\t<MrlTableColumn onClick={onSortClick} {...columnProps}>\n\t\t\t<VisuallyHiddenAccessibleButton\n\t\t\t\taria-label={`Sort ${sortText(nextDirection)} by ${name}`}\n\t\t\t\thorizontalAlign={horizontalAlign}\n\t\t\t\tonClick={onSortClick}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(styles['allowsSorting'], {\n\t\t\t\t\t\t[styles['align-right']]: horizontalAlign === 'right',\n\t\t\t\t\t\t[styles['noSortSelected']]: horizontalAlign === 'right' && !currentDirection\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{name}\n\t\t\t\t\t{tooltipContent}\n\t\t\t\t\t{currentDirection ? (\n\t\t\t\t\t\t<MrlSvg\n\t\t\t\t\t\t\tclassName=\"MrlTableColumn--sort-indicator\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tsvg={sortIcon(currentDirection)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\thorizontalAlign !== 'right' && <span className={styles['empty-icon-space']}></span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</VisuallyHiddenAccessibleButton>\n\t\t</MrlTableColumn>\n\t);\n};\n\nexport interface MrlTableItem extends Record<string, unknown> {\n\t/**\n\t * A unique identifier for the row item.\n\t */\n\tid: MrlTableItemId;\n\t/**\n\t * This makes the row item not selectable.\n\t */\n\tisSelectable?: boolean;\n\t/**\n\t * This makes the row item visually disabled.\n\t */\n\tisDisabled?: boolean;\n\t/**\n\t * A ref to the table row element\n\t * The ref is an object where the key is the item id and the value is the table row element\n\t */\n\trowRef?: React.MutableRefObject<Record<MrlTableItemId, HTMLTableRowElement>>;\n}\n\nexport type MrlTableColumnSticky = 'left' | 'right';\n\nexport interface MrlSmartTableColumn {\n\t/**\n\t * The key used to retrieve the cell value from the item object,\n\t * e.g. `item[key]`.\n\t */\n\tid: MrlTableColumnId;\n\t/**\n\t * The display name of the column.\n\t */\n\tname: string;\n\t/**\n\t * The horizontal alignment of the column content.\n\t * If not provided, the default alignment is left.\n\t */\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n\t/**\n\t * A component used to override rendering for each column cell. The\n\t * component is expected to render a MrlTableColumn.\n\t */\n\trenderColumn?: (props: MrlSmartColumnRendererProps) => JSX.Element;\n\t/**\n\t * A component used to override rendering for each row cell. The\n\t * component is expected to render a MrlTableCell.\n\t */\n\trenderCell?: (props: MrlSmartCellRendererProps) => JSX.Element;\n\t/**\n\t * Whether the column allows sorting.\n\t */\n\tallowsSorting?: boolean;\n\t/**\n\t * A sort comparator function for the column.\n\t *\n\t * @default sortAlphabeticallyAsCoercedStrings\n\t */\n\tsortBy?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * A sort comparator function for the column that receives the entire\n\t * row context. Will override the `sortBy` function (if provided).\n\t *\n\t * @param aValue\n\t * @param bValue\n\t * @returns number\n\t */\n\tsortByRowContext?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * Whether the column is sticky\n\t * the sticky effect will only work on the first or last column.\n\t * Set to 'left' for the first column and 'right' for the last column\n\t *\n\t * @example The container of the table will need overflow:scroll/auto\n\t * and the width will need to be constrained in order for\n\t * the columns to be 'sticky'\n\t */\n\tsticky?: MrlTableColumnSticky;\n\t/**\n\t * A tooltip to display on the column header.\n\t */\n\ttooltip?: string;\n}\n\n/**\n * A set of item ids.\n */\nexport type MrlTableSelection = Set<MrlTableItemId>;\n\nexport interface MrlSmartTableSelectionOptions {\n\t/**\n\t * The type of selection that is allowed in the collection.\n\t *\n\t * @default none\n\t */\n\tmode: MrlTableSelectionMode;\n\t/**\n\t * The currently selected keys in the collection (controlled).\n\t */\n\tselectedKeys: MrlTableSelection;\n\t/**\n\t * Handler that is called when the selection changes.\n\t */\n\tonSelectionChange: (keys: MrlTableSelection) => void;\n}\n\nexport interface MrlTableColumnSortOptions {\n\t/**\n\t * The column to sort by.\n\t */\n\tsortColumn: MrlSmartTableColumn;\n\t/**\n\t * The details of the sort.\n\t */\n\tsortDescriptor: MrlTableColumnSortDescriptor;\n}\n\nexport interface MrlSmartTableProps\n\textends Partial<\n\t\tPick<MrlTableProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'>\n\t> {\n\t/**\n\t * A list of table columns.\n\t */\n\tcolumns: MrlSmartTableColumn[];\n\t/**\n\t * A list of items to populate the table.\n\t */\n\titems: MrlTableItem[];\n\t/**\n\t * When provided, enables and controls table selection.\n\t */\n\tselectionOptions?: MrlSmartTableSelectionOptions;\n\t/**\n\t * A prefix applied to each data-qa element within the table.\n\t *\n\t * @default \"mrl-smart-table\"\n\t */\n\tdataQaPrefix?: string;\n\t/**\n\t * Text to be displayed when there are no rows in the table.\n\t * Will be ignored if `emptyState` is provided.\n\t *\n\t * @default \"There's no data available to be displayed in this table.\"\n\t */\n\temptyStateText?: string;\n\t/**\n\t * Provides content to display when there are no rows in the table.\n\t *\n\t * @default MrlTableEmptyState\n\t */\n\temptyState?: JSX.Element;\n\t/**\n\t * An element id (and if not provided, a unique value decorated\n\t * to prevent conflict with aria controls will be generated).\n\t *\n\t * @default ${id}-mrl-smart-table\n\t */\n\tid?: string;\n\t/**\n\t * A function to override the default sort items when a sort descriptor is set.\n\t */\n\tcustomSortItems?: ({ sortColumn, sortDescriptor }: MrlTableColumnSortOptions) => void;\n\t/**\n\t * Provides information on how the table should be sorted on initialization.\n\t */\n\tdefaultSortDescriptor?: MrlTableColumnSortDescriptor;\n\t/**\n\t * Enables row virtualization using @tanstack/react-virtual. The table must live\n\t * inside a container with a fixed height and vertical scroll for virtualization\n\t * to function correctly.\n\t *\n\t * @default false\n\t */\n\tenableVirtualization?: boolean;\n}\n\n/**\n * MrlSmartTable Component\n *\n * @param {MrlSmartTableProps} props - MrlSmartTable component props\n * @returns a table\n */\nexport function MrlSmartTable(props: MrlSmartTableProps): JSX.Element {\n\tconst {\n\t\tcolumns,\n\t\tdataQaPrefix = 'mrl-smart-table',\n\t\temptyStateText,\n\t\temptyState = <MrlTableEmptyState text={emptyStateText} />,\n\t\tid,\n\t\titems,\n\t\tselectionOptions,\n\t\tdefaultSortDescriptor,\n\t\tcustomSortItems,\n\t\tenableVirtualization = false,\n\t\t...ariaProps\n\t} = props;\n\tconst idRef = React.useRef<string>(id || getUniqueId('mrl-smart-table'));\n\tconst tableRef = React.useRef<HTMLTableElement>(null);\n\tconst [scrollContainer, setScrollContainer] = React.useState<HTMLElement | null>(null);\n\tconst tableElementId = idRef.current;\n\tconst [srContent, setSrContent] = React.useState<string>('');\n\tconst [scrollShadowLeft, setScrollShadowLeft] = React.useState<boolean>(false);\n\tconst [scrollShadowRight, setScrollShadowRight] = React.useState<boolean>(false);\n\n\tconst hasStickyLeftColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'left'),\n\t\t[columns]\n\t);\n\n\tconst hasStickyRightColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'right'),\n\t\t[columns]\n\t);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current) return;\n\t\tconst container = getScrollableContainer(tableRef.current);\n\t\tsetScrollContainer(container);\n\t}, []);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current || !scrollContainer) return;\n\t\tif (!hasStickyLeftColumn && !hasStickyRightColumn) return;\n\n\t\tfunction scrollHandler() {\n\t\t\tif (!tableRef.current || !scrollContainer) return;\n\t\t\tconst { hasScrollLeft, hasScrollRight } = hasHorizontalScroll(scrollContainer);\n\t\t\tsetScrollShadowLeft(hasScrollLeft);\n\t\t\tsetScrollShadowRight(hasScrollRight);\n\t\t}\n\t\tconst debouncedScrollHandler = debounce(scrollHandler, 25);\n\n\t\tconst observer = new ResizeObserver(scrollHandler);\n\t\tobserver.observe(tableRef.current);\n\n\t\tdocument.addEventListener('scroll', debouncedScrollHandler, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('scroll', debouncedScrollHandler, true);\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [hasStickyLeftColumn, hasStickyRightColumn, scrollContainer]);\n\n\tconst visibleColumnCount = columns.length + (selectionOptions ? 1 : 0);\n\tconst [sortDescriptor, setSortDescriptor] = React.useState<\n\t\tMrlTableColumnSortDescriptor | undefined\n\t>(defaultSortDescriptor);\n\n\tconst handleSortClick = (sortDescriptor: MrlTableColumnSortDescriptor) => {\n\t\tconst { direction, name, column } = sortDescriptor;\n\n\t\tif (customSortItems) {\n\t\t\tconst sortColumn = columns.find((col) => col.id === column);\n\t\t\tif (!sortColumn) {\n\t\t\t\tconsole.error(`No column found for sort descriptor key: ${column}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcustomSortItems({ sortColumn, sortDescriptor });\n\t\t}\n\t\tsetSortDescriptor(sortDescriptor);\n\n\t\tconst announcement = `Now sorting ${sortText(direction)} by ${name}`;\n\t\tsetSrContent(announcement);\n\t};\n\n\tconst memoizedItems = React.useMemo(() => {\n\t\t// sort items if sort descriptor is set and custom sort items functions is not provided\n\t\treturn !customSortItems && sortDescriptor ? sortItems(columns, items, sortDescriptor) : items;\n\t}, [columns, customSortItems, items, sortDescriptor]);\n\n\tconst rowVirtualizer = useVirtualizer({\n\t\tcount: memoizedItems.length,\n\t\tenabled: enableVirtualization,\n\t\testimateSize: () => ROW_HEIGHT_PX,\n\t\tgetItemKey: React.useCallback(\n\t\t\t(index: number) => {\n\t\t\t\treturn keyFor(tableElementId, 'row', memoizedItems[index].id);\n\t\t\t},\n\t\t\t[tableElementId, memoizedItems]\n\t\t),\n\t\tgetScrollElement: () => scrollContainer,\n\t\toverscan: 6,\n\t\tuseAnimationFrameWithResizeObserver: true\n\t});\n\n\tlet tableHeaderSelectionColumn: JSX.Element | undefined;\n\tlet rowItemSelectionCell: ((item: MrlTableItem) => JSX.Element) | undefined;\n\n\tif (selectionOptions) {\n\t\tconst { mode, onSelectionChange, selectedKeys } = selectionOptions;\n\t\tconst isAnySelected = memoizedItems.length > 0 && selectedKeys.size > 0;\n\t\tconst isAllSelected = isAnySelected && selectedKeys.size === memoizedItems.length;\n\n\t\tconst selectionColumnStickyValue = hasStickyLeftColumn ? 'left' : undefined;\n\t\tconst selectNone = () => onSelectionChange(new Set());\n\t\tconst selectAll = () =>\n\t\t\tonSelectionChange(\n\t\t\t\tnew Set(memoizedItems.filter((item) => item.isSelectable !== false).map((item) => item.id))\n\t\t\t);\n\t\tconst selectOne = (itemId: MrlTableItemId) => onSelectionChange(new Set([itemId]));\n\t\tconst selectAdd = (itemId: MrlTableItemId) =>\n\t\t\tonSelectionChange(new Set([...selectedKeys, itemId]));\n\t\tconst selectRemove = (itemId: MrlTableItemId) => {\n\t\t\tconst keys = new Set(selectedKeys);\n\t\t\tkeys.delete(itemId);\n\t\t\tonSelectionChange(keys);\n\t\t};\n\n\t\tconst onSelectAllClick = (): void => (isAnySelected ? selectNone() : selectAll());\n\t\tconst onSelectClick = (itemId: MrlTableItemId): void => {\n\t\t\tif (mode === 'multiple') {\n\t\t\t\tselectedKeys.has(itemId) ? selectRemove(itemId) : selectAdd(itemId);\n\t\t\t} else if (mode === 'single') {\n\t\t\t\tselectedKeys.has(itemId) ? selectNone() : selectOne(itemId);\n\t\t\t}\n\t\t};\n\n\t\ttableHeaderSelectionColumn = (\n\t\t\t<MrlTableColumn\n\t\t\t\tid={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection')}\n\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tscope=\"col\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t>\n\t\t\t\t{selectionOptions.mode === 'multiple' && (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': 'Select all rows',\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'column', 'selection-select-all-checkbox'),\n\t\t\t\t\t\t\tonChange: onSelectAllClick\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tselected={isAllSelected ? 'checked' : isAnySelected ? 'indeterminate' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t\trowItemSelectionCell = ({ id, isSelectable = true }: MrlTableItem) => (\n\t\t\t<MrlTableCell\n\t\t\t\tid={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row-cell', 'selection', id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t>\n\t\t\t\t{isSelectable ? (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': `Select row with id: ${id}`,\n\t\t\t\t\t\t\t'data-qa': keyFor(dataQaPrefix, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tonChange: () => onSelectClick(id)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox')}\n\t\t\t\t\t\tselected={selectionOptions.selectedKeys.has(id) ? 'checked' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</MrlTableCell>\n\t\t);\n\t}\n\n\tconst tableHeaderContent = (\n\t\t<>\n\t\t\t{tableHeaderSelectionColumn}\n\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\tconst { id, renderColumn } = column;\n\t\t\t\tconst ColumnContent = renderColumn ? renderColumn : DefaultColumnContent;\n\t\t\t\treturn (\n\t\t\t\t\t<ColumnContent\n\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', id)}\n\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\thandleSortClick={handleSortClick}\n\t\t\t\t\t\tsortDescriptor={sortDescriptor}\n\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n\n\tlet tableBodyContent: React.JSX.Element | React.JSX.Element[];\n\n\tif (enableVirtualization) {\n\t\tconst virtualRows = rowVirtualizer.getVirtualItems();\n\t\tconst paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;\n\t\tconst paddingBottom =\n\t\t\tvirtualRows.length > 0\n\t\t\t\t? rowVirtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end\n\t\t\t\t: 0;\n\n\t\ttableBodyContent = (\n\t\t\t<>\n\t\t\t\t{paddingTop > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingTop }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t\t{virtualRows.map((virtualRow) => {\n\t\t\t\t\tconst item = memoizedItems[virtualRow.index];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MrlTableRow\n\t\t\t\t\t\t\tclassName={classNames({\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\t\t\t\titemId={item.id}\n\t\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\t\t\t\tkey={virtualRow.key}\n\t\t\t\t\t\t\tstyle={{ height: virtualRow.size }}\n\t\t\t\t\t\t\tref={item.rowRef}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\t\t\t\tconst CellContent = column.renderCell\n\t\t\t\t\t\t\t\t\t? column.renderCell\n\t\t\t\t\t\t\t\t\t: MemoizedDefaultCellContent;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\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})}\n\t\t\t\t\t\t</MrlTableRow>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{paddingBottom > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingBottom }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t} else {\n\t\ttableBodyContent = memoizedItems.map((item) => (\n\t\t\t<MrlTableRow\n\t\t\t\tclassName={classNames({\n\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t})}\n\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\titemId={item.id}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\tref={item.rowRef}\n\t\t\t>\n\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\tconst CellContent = column.renderCell ? column.renderCell : MemoizedDefaultCellContent;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</MrlTableRow>\n\t\t));\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MrlTable data-qa={dataQaPrefix} id={tableElementId} ref={tableRef} {...ariaProps}>\n\t\t\t\t<MrlTableHeader\n\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'header')}\n\t\t\t\t\tid={keyFor(tableElementId, 'header')}\n\t\t\t\t>\n\t\t\t\t\t{tableHeaderContent}\n\t\t\t\t</MrlTableHeader>\n\t\t\t\t<MrlTableBody data-qa={keyFor(dataQaPrefix, 'body')} id={keyFor(tableElementId, 'body')}>\n\t\t\t\t\t{memoizedItems.length === 0 ? (\n\t\t\t\t\t\t<EmptyStateWrapper visibleColumnCount={visibleColumnCount}>\n\t\t\t\t\t\t\t{emptyState}\n\t\t\t\t\t\t</EmptyStateWrapper>\n\t\t\t\t\t) : (\n\t\t\t\t\t\ttableBodyContent\n\t\t\t\t\t)}\n\t\t\t\t</MrlTableBody>\n\t\t\t</MrlTable>\n\t\t\t<MrlLiveRegion\n\t\t\t\tariaLive=\"assertive\"\n\t\t\t\tvisible={false}\n\t\t\t\tsrContent={srContent}\n\t\t\t\tshouldClearContent={true}\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"names":["ROW_HEIGHT_PX","sortItems","columns","items","sortDescriptor","sortColumn","find","col","id","column","console","error","concat","sortByRowContext","sortBy","sort","a","b","direction","sortComparator","sortAlphabeticallyAsCoercedStrings","aSortValue","bSortValue","EmptyStateWrapper","_ref","children","visibleColumnCount","React","createElement","role","colSpan","VisuallyHiddenAccessibleButton","props","horizontalAlign","rest","_objectWithoutProperties","_excluded","_extends","type","className","classNames","styles","DefaultColumnContent","_ref2","dataQaPrefix","tableElementId","handleSortClick","hasScrollShadowLeft","hasScrollShadowRight","allowsSorting","name","sticky","tooltip","elementId","keyFor","dataQa","columnProps","scope","memoizedTooltip","useMemo","MrlTooltip","anchor","position","text","tabIndex","MrlSvg","svg","info","size","tooltipContent","undefined","MrlTableColumn","currentDirection","nextDirection","nextSortDirection","onSortClick","onClick","sortText","sortIcon","MrlSmartTable","_props$dataQaPrefix","emptyStateText","_props$emptyState","emptyState","MrlTableEmptyState","selectionOptions","defaultSortDescriptor","customSortItems","_props$enableVirtuali","enableVirtualization","ariaProps","_excluded2","idRef","useRef","getUniqueId","tableRef","_React$useState","useState","_React$useState2","_slicedToArray","scrollContainer","setScrollContainer","current","_React$useState3","_React$useState4","srContent","setSrContent","_React$useState5","_React$useState6","scrollShadowLeft","setScrollShadowLeft","_React$useState7","_React$useState8","scrollShadowRight","setScrollShadowRight","hasStickyLeftColumn","some","hasStickyRightColumn","useLayoutEffect","container","getScrollableContainer","scrollHandler","_hasHorizontalScroll","hasHorizontalScroll","hasScrollLeft","hasScrollRight","debouncedScrollHandler","debounce","observer","ResizeObserver","observe","document","addEventListener","removeEventListener","disconnect","length","_React$useState9","_React$useState0","setSortDescriptor","announcement","memoizedItems","rowVirtualizer","useVirtualizer","count","enabled","estimateSize","getItemKey","useCallback","index","getScrollElement","overscan","useAnimationFrameWithResizeObserver","tableHeaderSelectionColumn","rowItemSelectionCell","mode","onSelectionChange","selectedKeys","isAnySelected","isAllSelected","selectionColumnStickyValue","selectNone","Set","selectAll","filter","item","isSelectable","map","selectOne","itemId","selectAdd","selectRemove","keys","delete","onSelectAllClick","onSelectClick","has","key","MrlCheckboxStandalone","attrs","onChange","selected","_ref3","_ref3$isSelectable","MrlTableCell","tableHeaderContent","Fragment","renderColumn","ColumnContent","tableBodyContent","virtualRows","getVirtualItems","paddingTop","start","paddingBottom","getTotalSize","end","style","height","virtualRow","_rowItemSelectionCell","MrlTableRow","isDisabled","ref","rowRef","CellContent","renderCell","MemoizedDefaultCellContent","_rowItemSelectionCell2","MrlTable","MrlTableHeader","MrlTableBody","MrlLiveRegion","ariaLive","visible","shouldClearContent"],"mappings":"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"}
1
+ {"version":3,"file":"MrlSmartTable.js","sources":["../../../../../src/components/table/MrlSmartTable/MrlSmartTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport {\n\tMrlCheckboxStandalone,\n\tMrlLiveRegion,\n\tMrlSvg,\n\tMrlTable,\n\tMrlTableBody,\n\tMrlTableCell,\n\tMrlTableColumn,\n\tMrlTableHeader,\n\tMrlTableRow,\n\tMrlTooltip\n} from '../../';\nimport { MrlTableProps } from '../MrlTable';\nimport { MrlTableEmptyState } from '../MrlTableEmptyState';\nimport {\n\tMrlSortDirection,\n\tMrlTableCellHorizontalAlign,\n\tMrlTableColumnId,\n\tMrlTableColumnSortDescriptor,\n\tMrlTableItemId,\n\tMrlTableSelectionMode\n} from '../constants';\nimport { getUniqueId } from '../../../utils';\nimport {\n\tkeyFor,\n\tnextSortDirection,\n\tsortAlphabeticallyAsCoercedStrings,\n\tsortIcon,\n\tsortText\n} from '../utils';\nimport { info } from '@muraldevkit/ds-icons';\n\nimport styles from './MrlSmartTable.module.scss';\nimport { getScrollableContainer } from '../../../utils/getScrollableContainer/getScrollableContainer';\nimport { hasHorizontalScroll } from '../../../utils/hasHorizontalScroll/hasHorizontalScroll';\nimport { MemoizedDefaultCellContent } from './components/DefaultCellContent';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nconst ROW_HEIGHT_PX = 48;\n\nconst sortItems = (\n\tcolumns: MrlSmartTableColumn[],\n\titems: MrlTableItem[],\n\tsortDescriptor: MrlTableColumnSortDescriptor\n): MrlTableItem[] => {\n\tconst sortColumn = columns.find((col) => col.id === sortDescriptor.column);\n\tif (!sortColumn) {\n\t\tconsole.error(`No column found for sort descriptor key: ${sortDescriptor.column}`);\n\t\treturn items;\n\t}\n\n\tconst { sortByRowContext, sortBy } = sortColumn;\n\n\tif (sortByRowContext) {\n\t\treturn [...items].sort((a, b) => sortByRowContext(a, b) * sortDescriptor.direction);\n\t}\n\n\tconst sortComparator = sortBy || sortAlphabeticallyAsCoercedStrings;\n\n\treturn [...items].sort((a, b) => {\n\t\tconst aSortValue = a[sortColumn.id];\n\t\tconst bSortValue = b[sortColumn.id];\n\t\treturn sortComparator(aSortValue, bSortValue) * sortDescriptor.direction;\n\t});\n};\n\nfunction EmptyStateWrapper({\n\tchildren,\n\tvisibleColumnCount\n}: {\n\tchildren: React.ReactNode;\n\tvisibleColumnCount: number;\n}): JSX.Element {\n\treturn (\n\t\t<tr role=\"row\">\n\t\t\t<td role=\"gridcell\" colSpan={visibleColumnCount}>\n\t\t\t\t{children}\n\t\t\t</td>\n\t\t</tr>\n\t);\n}\n\ninterface VisuallyHiddenAccessibleButtonProps extends React.HTMLProps<HTMLButtonElement> {\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nconst VisuallyHiddenAccessibleButton = (props: VisuallyHiddenAccessibleButtonProps) => {\n\tconst { horizontalAlign, ...rest } = props;\n\n\treturn (\n\t\t<button\n\t\t\t{...rest}\n\t\t\ttype=\"button\"\n\t\t\tclassName={classNames(styles['MrlSmartTable--accessible-visually-hidden-button'], {\n\t\t\t\t[styles['align-right']]: horizontalAlign === 'right'\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport interface MrlSmartColumnRendererProps {\n\t/**\n\t * The column being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * A function to change current sort descriptor.\n\t */\n\thandleSortClick: ({\n\t\tcolumn,\n\t\tdirection,\n\t\tname\n\t}: {\n\t\tcolumn: MrlSmartTableColumn['id'];\n\t\tdirection: MrlSortDirection;\n\t\tname: string;\n\t}) => void;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\t/**\n\t * The current sort descriptor.\n\t */\n\tsortDescriptor?: MrlTableColumnSortDescriptor;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nexport interface MrlSmartCellRendererProps {\n\t/**\n\t * The item for the cell being rendered.\n\t */\n\titem: MrlTableItem;\n\t/**\n\t * The column for the cell being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n}\n\nconst DefaultColumnContent = ({\n\tcolumn,\n\tdataQaPrefix,\n\ttableElementId,\n\thandleSortClick,\n\tsortDescriptor,\n\thasScrollShadowLeft,\n\thasScrollShadowRight\n}: MrlSmartColumnRendererProps) => {\n\tconst { allowsSorting, horizontalAlign, id, name, sticky, tooltip } = column;\n\tconst elementId = keyFor(tableElementId, 'column', id);\n\tconst dataQa = keyFor(dataQaPrefix, 'column', id);\n\tconst columnProps = {\n\t\t'data-qa': dataQa,\n\t\thasScrollShadowLeft,\n\t\thasScrollShadowRight,\n\t\thorizontalAlign,\n\t\tid: elementId,\n\t\tscope: 'col',\n\t\tsticky\n\t};\n\n\tconst memoizedTooltip = React.useMemo(\n\t\t() => (\n\t\t\t<MrlTooltip\n\t\t\t\tanchor=\"center\"\n\t\t\t\tdataQa={`${dataQa}-tooltip`}\n\t\t\t\tposition=\"bottom\"\n\t\t\t\ttext={tooltip || ''}\n\t\t\t>\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n\t\t\t\t<span data-qa={`${dataQa}-tooltip-trigger`} tabIndex={0}>\n\t\t\t\t\t<MrlSvg className=\"MrlTableColumn--tooltip\" svg={info} size=\"small\" />\n\t\t\t\t</span>\n\t\t\t</MrlTooltip>\n\t\t),\n\t\t[dataQa, tooltip]\n\t);\n\n\tconst tooltipContent = tooltip ? memoizedTooltip : undefined;\n\n\tif (!allowsSorting) {\n\t\treturn (\n\t\t\t<MrlTableColumn {...columnProps}>\n\t\t\t\t{name}\n\t\t\t\t{tooltipContent}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t}\n\n\tconst currentDirection = sortDescriptor?.column === id ? sortDescriptor.direction : undefined;\n\tconst nextDirection = nextSortDirection(currentDirection);\n\tconst onSortClick = () => {\n\t\thandleSortClick({ column: id, direction: nextDirection, name: name });\n\t};\n\n\treturn (\n\t\t<MrlTableColumn onClick={onSortClick} {...columnProps}>\n\t\t\t<VisuallyHiddenAccessibleButton\n\t\t\t\taria-label={`Sort ${sortText(nextDirection)} by ${name}`}\n\t\t\t\thorizontalAlign={horizontalAlign}\n\t\t\t\tonClick={onSortClick}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(styles['allowsSorting'], {\n\t\t\t\t\t\t[styles['align-right']]: horizontalAlign === 'right',\n\t\t\t\t\t\t[styles['noSortSelected']]: horizontalAlign === 'right' && !currentDirection\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{name}\n\t\t\t\t\t{tooltipContent}\n\t\t\t\t\t{currentDirection ? (\n\t\t\t\t\t\t<MrlSvg\n\t\t\t\t\t\t\tclassName=\"MrlTableColumn--sort-indicator\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tsvg={sortIcon(currentDirection)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\thorizontalAlign !== 'right' && <span className={styles['empty-icon-space']}></span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</VisuallyHiddenAccessibleButton>\n\t\t</MrlTableColumn>\n\t);\n};\n\nexport interface MrlTableItem extends Record<string, unknown> {\n\t/**\n\t * A unique identifier for the row item.\n\t */\n\tid: MrlTableItemId;\n\t/**\n\t * This makes the row item not selectable.\n\t */\n\tisSelectable?: boolean;\n\t/**\n\t * This makes the row item visually disabled.\n\t */\n\tisDisabled?: boolean;\n\t/**\n\t * A ref to the table row element\n\t * The ref is an object where the key is the item id and the value is the table row element\n\t */\n\trowRef?: React.MutableRefObject<Record<MrlTableItemId, HTMLTableRowElement>>;\n}\n\nexport type MrlTableColumnSticky = 'left' | 'right';\n\nexport interface MrlSmartTableColumn {\n\t/**\n\t * The key used to retrieve the cell value from the item object,\n\t * e.g. `item[key]`.\n\t */\n\tid: MrlTableColumnId;\n\t/**\n\t * The display name of the column.\n\t */\n\tname: string;\n\t/**\n\t * The horizontal alignment of the column content.\n\t * If not provided, the default alignment is left.\n\t */\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n\t/**\n\t * A component used to override rendering for each column cell. The\n\t * component is expected to render a MrlTableColumn.\n\t */\n\trenderColumn?: (props: MrlSmartColumnRendererProps) => JSX.Element;\n\t/**\n\t * A component used to override rendering for each row cell. The\n\t * component is expected to render a MrlTableCell.\n\t */\n\trenderCell?: (props: MrlSmartCellRendererProps) => JSX.Element;\n\t/**\n\t * Whether the column allows sorting.\n\t */\n\tallowsSorting?: boolean;\n\t/**\n\t * A sort comparator function for the column.\n\t *\n\t * @default sortAlphabeticallyAsCoercedStrings\n\t */\n\tsortBy?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * A sort comparator function for the column that receives the entire\n\t * row context. Will override the `sortBy` function (if provided).\n\t *\n\t * @param aValue\n\t * @param bValue\n\t * @returns number\n\t */\n\tsortByRowContext?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * Whether the column is sticky\n\t * the sticky effect will only work on the first or last column.\n\t * Set to 'left' for the first column and 'right' for the last column\n\t *\n\t * @example The container of the table will need overflow:scroll/auto\n\t * and the width will need to be constrained in order for\n\t * the columns to be 'sticky'\n\t */\n\tsticky?: MrlTableColumnSticky;\n\t/**\n\t * A tooltip to display on the column header.\n\t */\n\ttooltip?: string;\n}\n\n/**\n * A set of item ids.\n */\nexport type MrlTableSelection = Set<MrlTableItemId>;\n\nexport interface MrlSmartTableSelectionOptions {\n\t/**\n\t * The type of selection that is allowed in the collection.\n\t *\n\t * @default none\n\t */\n\tmode: MrlTableSelectionMode;\n\t/**\n\t * The currently selected keys in the collection (controlled).\n\t */\n\tselectedKeys: MrlTableSelection;\n\t/**\n\t * Handler that is called when the selection changes.\n\t */\n\tonSelectionChange: (keys: MrlTableSelection) => void;\n}\n\nexport interface MrlTableColumnSortOptions {\n\t/**\n\t * The column to sort by.\n\t */\n\tsortColumn: MrlSmartTableColumn;\n\t/**\n\t * The details of the sort.\n\t */\n\tsortDescriptor: MrlTableColumnSortDescriptor;\n}\n\nexport interface MrlSmartTableProps\n\textends Partial<\n\t\tPick<MrlTableProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'>\n\t> {\n\t/**\n\t * A list of table columns.\n\t */\n\tcolumns: MrlSmartTableColumn[];\n\t/**\n\t * A list of items to populate the table.\n\t */\n\titems: MrlTableItem[];\n\t/**\n\t * When provided, enables and controls table selection.\n\t */\n\tselectionOptions?: MrlSmartTableSelectionOptions;\n\t/**\n\t * A prefix applied to each data-qa element within the table.\n\t *\n\t * @default \"mrl-smart-table\"\n\t */\n\tdataQaPrefix?: string;\n\t/**\n\t * Text to be displayed when there are no rows in the table.\n\t * Will be ignored if `emptyState` is provided.\n\t *\n\t * @default \"There's no data available to be displayed in this table.\"\n\t */\n\temptyStateText?: string;\n\t/**\n\t * Provides content to display when there are no rows in the table.\n\t *\n\t * @default MrlTableEmptyState\n\t */\n\temptyState?: JSX.Element;\n\t/**\n\t * An element id (and if not provided, a unique value decorated\n\t * to prevent conflict with aria controls will be generated).\n\t *\n\t * @default ${id}-mrl-smart-table\n\t */\n\tid?: string;\n\t/**\n\t * A function to override the default sort items when a sort descriptor is set.\n\t */\n\tcustomSortItems?: ({ sortColumn, sortDescriptor }: MrlTableColumnSortOptions) => void;\n\t/**\n\t * Provides information on how the table should be sorted on initialization.\n\t */\n\tdefaultSortDescriptor?: MrlTableColumnSortDescriptor;\n\t/**\n\t * Enables row virtualization using @tanstack/react-virtual. The table must live\n\t * inside a container with a fixed height and vertical scroll for virtualization\n\t * to function correctly.\n\t *\n\t * @default false\n\t */\n\tenableVirtualization?: boolean;\n\t/**\n\t * Enables interaction tracking for this table. Provide a stable, non-PII id\n\t * (e.g. 'workspace-members-table'). When omitted, the table emits no analytics.\n\t *\n\t * Note: row content is never emitted — selection events carry counts only.\n\t */\n\teventId?: string;\n}\n\n/**\n * MrlSmartTable Component\n *\n * @param {MrlSmartTableProps} props - MrlSmartTable component props\n * @returns a table\n */\nexport function MrlSmartTable(props: MrlSmartTableProps): JSX.Element {\n\tconst {\n\t\tcolumns,\n\t\tdataQaPrefix = 'mrl-smart-table',\n\t\temptyStateText,\n\t\temptyState = <MrlTableEmptyState text={emptyStateText} />,\n\t\tid,\n\t\titems,\n\t\tselectionOptions,\n\t\tdefaultSortDescriptor,\n\t\tcustomSortItems,\n\t\tenableVirtualization = false,\n\t\teventId,\n\t\t...ariaProps\n\t} = props;\n\tconst trackInteraction = useMrlTrackInteraction('MrlSmartTable', eventId);\n\tconst idRef = React.useRef<string>(id || getUniqueId('mrl-smart-table'));\n\tconst tableRef = React.useRef<HTMLTableElement>(null);\n\tconst [scrollContainer, setScrollContainer] = React.useState<HTMLElement | null>(null);\n\tconst tableElementId = idRef.current;\n\tconst [srContent, setSrContent] = React.useState<string>('');\n\tconst [scrollShadowLeft, setScrollShadowLeft] = React.useState<boolean>(false);\n\tconst [scrollShadowRight, setScrollShadowRight] = React.useState<boolean>(false);\n\n\tconst hasStickyLeftColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'left'),\n\t\t[columns]\n\t);\n\n\tconst hasStickyRightColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'right'),\n\t\t[columns]\n\t);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current) return;\n\t\tconst container = getScrollableContainer(tableRef.current);\n\t\tsetScrollContainer(container);\n\t}, []);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current || !scrollContainer) return;\n\t\tif (!hasStickyLeftColumn && !hasStickyRightColumn) return;\n\n\t\tfunction scrollHandler() {\n\t\t\tif (!tableRef.current || !scrollContainer) return;\n\t\t\tconst { hasScrollLeft, hasScrollRight } = hasHorizontalScroll(scrollContainer);\n\t\t\tsetScrollShadowLeft(hasScrollLeft);\n\t\t\tsetScrollShadowRight(hasScrollRight);\n\t\t}\n\t\tconst debouncedScrollHandler = debounce(scrollHandler, 25);\n\n\t\tconst observer = new ResizeObserver(scrollHandler);\n\t\tobserver.observe(tableRef.current);\n\n\t\tdocument.addEventListener('scroll', debouncedScrollHandler, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('scroll', debouncedScrollHandler, true);\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [hasStickyLeftColumn, hasStickyRightColumn, scrollContainer]);\n\n\tconst visibleColumnCount = columns.length + (selectionOptions ? 1 : 0);\n\tconst [sortDescriptor, setSortDescriptor] = React.useState<\n\t\tMrlTableColumnSortDescriptor | undefined\n\t>(defaultSortDescriptor);\n\n\tconst handleSortClick = (sortDescriptor: MrlTableColumnSortDescriptor) => {\n\t\tconst { direction, name, column } = sortDescriptor;\n\n\t\t// the column id is a developer-defined key; the column's data is never emitted.\n\t\ttrackInteraction({ action: 'sort', metadata: { column: String(column), direction } });\n\n\t\tif (customSortItems) {\n\t\t\tconst sortColumn = columns.find((col) => col.id === column);\n\t\t\tif (!sortColumn) {\n\t\t\t\tconsole.error(`No column found for sort descriptor key: ${column}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcustomSortItems({ sortColumn, sortDescriptor });\n\t\t}\n\t\tsetSortDescriptor(sortDescriptor);\n\n\t\tconst announcement = `Now sorting ${sortText(direction)} by ${name}`;\n\t\tsetSrContent(announcement);\n\t};\n\n\tconst memoizedItems = React.useMemo(() => {\n\t\t// sort items if sort descriptor is set and custom sort items functions is not provided\n\t\treturn !customSortItems && sortDescriptor ? sortItems(columns, items, sortDescriptor) : items;\n\t}, [columns, customSortItems, items, sortDescriptor]);\n\n\tconst rowVirtualizer = useVirtualizer({\n\t\tcount: memoizedItems.length,\n\t\tenabled: enableVirtualization,\n\t\testimateSize: () => ROW_HEIGHT_PX,\n\t\tgetItemKey: React.useCallback(\n\t\t\t(index: number) => {\n\t\t\t\treturn keyFor(tableElementId, 'row', memoizedItems[index].id);\n\t\t\t},\n\t\t\t[tableElementId, memoizedItems]\n\t\t),\n\t\tgetScrollElement: () => scrollContainer,\n\t\toverscan: 6,\n\t\tuseAnimationFrameWithResizeObserver: true\n\t});\n\n\tlet tableHeaderSelectionColumn: JSX.Element | undefined;\n\tlet rowItemSelectionCell: ((item: MrlTableItem) => JSX.Element) | undefined;\n\n\tif (selectionOptions) {\n\t\tconst { mode, onSelectionChange, selectedKeys } = selectionOptions;\n\t\tconst isAnySelected = memoizedItems.length > 0 && selectedKeys.size > 0;\n\t\tconst isAllSelected = isAnySelected && selectedKeys.size === memoizedItems.length;\n\n\t\tconst selectionColumnStickyValue = hasStickyLeftColumn ? 'left' : undefined;\n\t\tconst selectNone = () => onSelectionChange(new Set());\n\t\tconst selectAll = () =>\n\t\t\tonSelectionChange(\n\t\t\t\tnew Set(memoizedItems.filter((item) => item.isSelectable !== false).map((item) => item.id))\n\t\t\t);\n\t\tconst selectOne = (itemId: MrlTableItemId) => onSelectionChange(new Set([itemId]));\n\t\tconst selectAdd = (itemId: MrlTableItemId) =>\n\t\t\tonSelectionChange(new Set([...selectedKeys, itemId]));\n\t\tconst selectRemove = (itemId: MrlTableItemId) => {\n\t\t\tconst keys = new Set(selectedKeys);\n\t\t\tkeys.delete(itemId);\n\t\t\tonSelectionChange(keys);\n\t\t};\n\n\t\tconst onSelectAllClick = (): void => {\n\t\t\t// row content is never emitted — only the scope of the selection.\n\t\t\ttrackInteraction({\n\t\t\t\taction: 'select',\n\t\t\t\tmetadata: { scope: isAnySelected ? 'none' : 'all' },\n\t\t\t\tvariant: mode\n\t\t\t});\n\n\t\t\tisAnySelected ? selectNone() : selectAll();\n\t\t};\n\t\tconst onSelectClick = (itemId: MrlTableItemId): void => {\n\t\t\ttrackInteraction({\n\t\t\t\taction: 'select',\n\t\t\t\tmetadata: { scope: selectedKeys.has(itemId) ? 'deselect-row' : 'select-row' },\n\t\t\t\tvariant: mode\n\t\t\t});\n\n\t\t\tif (mode === 'multiple') {\n\t\t\t\tselectedKeys.has(itemId) ? selectRemove(itemId) : selectAdd(itemId);\n\t\t\t} else if (mode === 'single') {\n\t\t\t\tselectedKeys.has(itemId) ? selectNone() : selectOne(itemId);\n\t\t\t}\n\t\t};\n\n\t\ttableHeaderSelectionColumn = (\n\t\t\t<MrlTableColumn\n\t\t\t\tid={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection')}\n\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tscope=\"col\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t>\n\t\t\t\t{selectionOptions.mode === 'multiple' && (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': 'Select all rows',\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'column', 'selection-select-all-checkbox'),\n\t\t\t\t\t\t\tonChange: onSelectAllClick\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tselected={isAllSelected ? 'checked' : isAnySelected ? 'indeterminate' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t\trowItemSelectionCell = ({ id, isSelectable = true }: MrlTableItem) => (\n\t\t\t<MrlTableCell\n\t\t\t\tid={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row-cell', 'selection', id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t>\n\t\t\t\t{isSelectable ? (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': `Select row with id: ${id}`,\n\t\t\t\t\t\t\t'data-qa': keyFor(dataQaPrefix, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tonChange: () => onSelectClick(id)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox')}\n\t\t\t\t\t\tselected={selectionOptions.selectedKeys.has(id) ? 'checked' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</MrlTableCell>\n\t\t);\n\t}\n\n\tconst tableHeaderContent = (\n\t\t<>\n\t\t\t{tableHeaderSelectionColumn}\n\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\tconst { id, renderColumn } = column;\n\t\t\t\tconst ColumnContent = renderColumn ? renderColumn : DefaultColumnContent;\n\t\t\t\treturn (\n\t\t\t\t\t<ColumnContent\n\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', id)}\n\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\thandleSortClick={handleSortClick}\n\t\t\t\t\t\tsortDescriptor={sortDescriptor}\n\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n\n\tlet tableBodyContent: React.JSX.Element | React.JSX.Element[];\n\n\tif (enableVirtualization) {\n\t\tconst virtualRows = rowVirtualizer.getVirtualItems();\n\t\tconst paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;\n\t\tconst paddingBottom =\n\t\t\tvirtualRows.length > 0\n\t\t\t\t? rowVirtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end\n\t\t\t\t: 0;\n\n\t\ttableBodyContent = (\n\t\t\t<>\n\t\t\t\t{paddingTop > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingTop }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t\t{virtualRows.map((virtualRow) => {\n\t\t\t\t\tconst item = memoizedItems[virtualRow.index];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MrlTableRow\n\t\t\t\t\t\t\tclassName={classNames({\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\t\t\t\titemId={item.id}\n\t\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\t\t\t\tkey={virtualRow.key}\n\t\t\t\t\t\t\tstyle={{ height: virtualRow.size }}\n\t\t\t\t\t\t\tref={item.rowRef}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\t\t\t\tconst CellContent = column.renderCell\n\t\t\t\t\t\t\t\t\t? column.renderCell\n\t\t\t\t\t\t\t\t\t: MemoizedDefaultCellContent;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\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})}\n\t\t\t\t\t\t</MrlTableRow>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{paddingBottom > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingBottom }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t} else {\n\t\ttableBodyContent = memoizedItems.map((item) => (\n\t\t\t<MrlTableRow\n\t\t\t\tclassName={classNames({\n\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t})}\n\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\titemId={item.id}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\tref={item.rowRef}\n\t\t\t>\n\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\tconst CellContent = column.renderCell ? column.renderCell : MemoizedDefaultCellContent;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</MrlTableRow>\n\t\t));\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MrlTable data-qa={dataQaPrefix} id={tableElementId} ref={tableRef} {...ariaProps}>\n\t\t\t\t<MrlTableHeader\n\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'header')}\n\t\t\t\t\tid={keyFor(tableElementId, 'header')}\n\t\t\t\t>\n\t\t\t\t\t{tableHeaderContent}\n\t\t\t\t</MrlTableHeader>\n\t\t\t\t<MrlTableBody data-qa={keyFor(dataQaPrefix, 'body')} id={keyFor(tableElementId, 'body')}>\n\t\t\t\t\t{memoizedItems.length === 0 ? (\n\t\t\t\t\t\t<EmptyStateWrapper visibleColumnCount={visibleColumnCount}>\n\t\t\t\t\t\t\t{emptyState}\n\t\t\t\t\t\t</EmptyStateWrapper>\n\t\t\t\t\t) : (\n\t\t\t\t\t\ttableBodyContent\n\t\t\t\t\t)}\n\t\t\t\t</MrlTableBody>\n\t\t\t</MrlTable>\n\t\t\t<MrlLiveRegion\n\t\t\t\tariaLive=\"assertive\"\n\t\t\t\tvisible={false}\n\t\t\t\tsrContent={srContent}\n\t\t\t\tshouldClearContent={true}\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"names":["ROW_HEIGHT_PX","sortItems","columns","items","sortDescriptor","sortColumn","find","col","id","column","console","error","concat","sortByRowContext","sortBy","sort","a","b","direction","sortComparator","sortAlphabeticallyAsCoercedStrings","aSortValue","bSortValue","EmptyStateWrapper","_ref","children","visibleColumnCount","React","createElement","role","colSpan","VisuallyHiddenAccessibleButton","props","horizontalAlign","rest","_objectWithoutProperties","_excluded","_extends","type","className","classNames","styles","DefaultColumnContent","_ref2","dataQaPrefix","tableElementId","handleSortClick","hasScrollShadowLeft","hasScrollShadowRight","allowsSorting","name","sticky","tooltip","elementId","keyFor","dataQa","columnProps","scope","memoizedTooltip","useMemo","MrlTooltip","anchor","position","text","tabIndex","MrlSvg","svg","info","size","tooltipContent","undefined","MrlTableColumn","currentDirection","nextDirection","nextSortDirection","onSortClick","onClick","sortText","sortIcon","MrlSmartTable","_props$dataQaPrefix","emptyStateText","_props$emptyState","emptyState","MrlTableEmptyState","selectionOptions","defaultSortDescriptor","customSortItems","_props$enableVirtuali","enableVirtualization","eventId","ariaProps","_excluded2","trackInteraction","useMrlTrackInteraction","idRef","useRef","getUniqueId","tableRef","_React$useState","useState","_React$useState2","_slicedToArray","scrollContainer","setScrollContainer","current","_React$useState3","_React$useState4","srContent","setSrContent","_React$useState5","_React$useState6","scrollShadowLeft","setScrollShadowLeft","_React$useState7","_React$useState8","scrollShadowRight","setScrollShadowRight","hasStickyLeftColumn","some","hasStickyRightColumn","useLayoutEffect","container","getScrollableContainer","scrollHandler","_hasHorizontalScroll","hasHorizontalScroll","hasScrollLeft","hasScrollRight","debouncedScrollHandler","debounce","observer","ResizeObserver","observe","document","addEventListener","removeEventListener","disconnect","length","_React$useState9","_React$useState0","setSortDescriptor","action","metadata","String","announcement","memoizedItems","rowVirtualizer","useVirtualizer","count","enabled","estimateSize","getItemKey","useCallback","index","getScrollElement","overscan","useAnimationFrameWithResizeObserver","tableHeaderSelectionColumn","rowItemSelectionCell","mode","onSelectionChange","selectedKeys","isAnySelected","isAllSelected","selectionColumnStickyValue","selectNone","Set","selectAll","filter","item","isSelectable","map","selectOne","itemId","selectAdd","selectRemove","keys","delete","onSelectAllClick","variant","onSelectClick","has","key","MrlCheckboxStandalone","attrs","onChange","selected","_ref3","_ref3$isSelectable","MrlTableCell","tableHeaderContent","Fragment","renderColumn","ColumnContent","tableBodyContent","virtualRows","getVirtualItems","paddingTop","start","paddingBottom","getTotalSize","end","style","height","virtualRow","_rowItemSelectionCell","MrlTableRow","isDisabled","ref","rowRef","CellContent","renderCell","MemoizedDefaultCellContent","_rowItemSelectionCell2","MrlTable","MrlTableHeader","MrlTableBody","MrlLiveRegion","ariaLive","visible","shouldClearContent"],"mappings":"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"}
@@ -3,8 +3,9 @@ import * as React from 'react';
3
3
  import classnames from 'classnames';
4
4
  import styles from './MrlTableRow.module.scss.js';
5
5
  import { getUniqueId } from '../../../utils/setAttributes/setAttributes.js';
6
+ import { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics/useMrlAnalytics.js';
6
7
 
7
- var _excluded = ["className", "itemId", "onClick"];
8
+ var _excluded = ["className", "itemId", "onClick", "eventId"];
8
9
  var COMPONENT_NAME = 'MrlTableRow';
9
10
  /**
10
11
  * MrlTableRow Component
@@ -16,13 +17,22 @@ var MrlTableRow = /*#__PURE__*/React.forwardRef(function MrlTableRow(_ref, ref)
16
17
  var className = _ref.className,
17
18
  itemId = _ref.itemId,
18
19
  onClick = _ref.onClick,
20
+ eventId = _ref.eventId,
19
21
  rest = _objectWithoutProperties(_ref, _excluded);
20
22
  var id = rest.id;
21
23
  var idRef = React.useRef(id || getUniqueId('mrl-table-row'));
22
24
  var classes = classnames(className, COMPONENT_NAME, styles[COMPONENT_NAME]);
25
+ var trackInteraction = useMrlTrackInteraction(COMPONENT_NAME, eventId);
26
+ var handleClick = e => {
27
+ // row content is consumer data and is never emitted.
28
+ trackInteraction({
29
+ action: 'click'
30
+ });
31
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
32
+ };
23
33
  var handleKeyDown = e => {
24
34
  if (e.key === 'Enter' && onClick) {
25
- onClick(e);
35
+ handleClick(e);
26
36
  }
27
37
  };
28
38
  var getRef = element => {
@@ -41,7 +51,7 @@ var MrlTableRow = /*#__PURE__*/React.forwardRef(function MrlTableRow(_ref, ref)
41
51
  id: idRef.current,
42
52
  ref: getRef
43
53
  }, onClick && {
44
- onClick,
54
+ onClick: handleClick,
45
55
  onKeyDown: handleKeyDown,
46
56
  tabIndex: 0
47
57
  }, rest));
@@ -1 +1 @@
1
- {"version":3,"file":"MrlTableRow.js","sources":["../../../../../src/components/table/MrlTableRow/MrlTableRow.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { getUniqueId } from '../../../utils';\n\nimport styles from './MrlTableRow.module.scss';\n\nconst COMPONENT_NAME = 'MrlTableRow';\n\nexport interface MrlTableRowProps extends React.ComponentPropsWithoutRef<'tr'> {\n\t/**\n\t * An element id (and if not provided, a unique value decorated\n\t * to prevent conflict with aria controls will be generated).\n\t *\n\t * @default `${id}-mrl-table-row`\n\t */\n\tid?: string;\n\t/**\n\t * Id of the MrlTableItem associated with the table row\n\t */\n\titemId?: string;\n\t/**\n\t *\n\t * Custom click handler to be used for mouse and keyboard selection of table row\n\t */\n\tonClick?: (e: React.MouseEvent<HTMLElement> | React.KeyboardEvent) => void;\n}\n\n/**\n * MrlTableRow Component\n *\n * @param {MrlTableRowProps} props - MrlTableRow component props\n * @returns a table row element\n */\nexport const MrlTableRow = React.forwardRef<Record<string, HTMLTableRowElement>, MrlTableRowProps>(\n\tfunction MrlTableRow(\n\t\t{ className, itemId, onClick, ...rest }: MrlTableRowProps,\n\t\tref\n\t): JSX.Element {\n\t\tconst { id } = rest;\n\t\tconst idRef = React.useRef<string>(id || getUniqueId('mrl-table-row'));\n\t\tconst classes = classnames(className, COMPONENT_NAME, styles[COMPONENT_NAME]);\n\n\t\tconst handleKeyDown = (e: React.KeyboardEvent) => {\n\t\t\tif (e.key === 'Enter' && onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t};\n\n\t\tconst getRef = (element: HTMLTableRowElement | null) => {\n\t\t\tif (element && itemId) {\n\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\tref({ [itemId]: element });\n\t\t\t\t} else if (ref?.current) {\n\t\t\t\t\tref.current[itemId] = element;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<tr\n\t\t\t\tclassName={classes}\n\t\t\t\tid={idRef.current}\n\t\t\t\tref={getRef}\n\t\t\t\t{...(onClick && { onClick, onKeyDown: handleKeyDown, tabIndex: 0 })}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t}\n);\n"],"names":["COMPONENT_NAME","MrlTableRow","React","forwardRef","_ref","ref","className","itemId","onClick","rest","_objectWithoutProperties","_excluded","id","idRef","useRef","getUniqueId","classes","classnames","styles","handleKeyDown","e","key","getRef","element","current","createElement","_extends","onKeyDown","tabIndex"],"mappings":";;;;;;;AAMA,IAAMA,cAAc,GAAG,aAAa;AAqBpC;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,WAAW,gBAAGC,KAAK,CAACC,UAAU,CAC1C,SAASF,WAAWA,CAAAG,IAAA,EAEnBC,GAAG,EACW;AAAA,EAAA,IAFZC,SAAS,GAAAF,IAAA,CAATE,SAAS;IAAEC,MAAM,GAAAH,IAAA,CAANG,MAAM;IAAEC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;AAAKC,IAAAA,IAAI,GAAAC,wBAAA,CAAAN,IAAA,EAAAO,SAAA,CAAA;AAGrC,EAAA,IAAQC,EAAE,GAAKH,IAAI,CAAXG,EAAE;AACV,EAAA,IAAMC,KAAK,GAAGX,KAAK,CAACY,MAAM,CAASF,EAAE,IAAIG,WAAW,CAAC,eAAe,CAAC,CAAC;AACtE,EAAA,IAAMC,OAAO,GAAGC,UAAU,CAACX,SAAS,EAAEN,cAAc,EAAEkB,MAAM,CAAClB,cAAc,CAAC,CAAC;EAE7E,IAAMmB,aAAa,GAAIC,CAAsB,IAAK;AACjD,IAAA,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,IAAIb,OAAO,EAAE;MACjCA,OAAO,CAACY,CAAC,CAAC;AACX,IAAA;EACD,CAAC;EAED,IAAME,MAAM,GAAIC,OAAmC,IAAK;IACvD,IAAIA,OAAO,IAAIhB,MAAM,EAAE;AACtB,MAAA,IAAI,OAAOF,GAAG,KAAK,UAAU,EAAE;AAC9BA,QAAAA,GAAG,CAAC;AAAE,UAAA,CAACE,MAAM,GAAGgB;AAAQ,SAAC,CAAC;MAC3B,CAAC,MAAM,IAAIlB,GAAG,KAAA,IAAA,IAAHA,GAAG,KAAA,MAAA,IAAHA,GAAG,CAAEmB,OAAO,EAAE;AACxBnB,QAAAA,GAAG,CAACmB,OAAO,CAACjB,MAAM,CAAC,GAAGgB,OAAO;AAC9B,MAAA;AACD,IAAA;EACD,CAAC;AAED,EAAA,oBACCrB,KAAA,CAAAuB,aAAA,CAAA,IAAA,EAAAC,QAAA,CAAA;AACCpB,IAAAA,SAAS,EAAEU,OAAQ;IACnBJ,EAAE,EAAEC,KAAK,CAACW,OAAQ;AAClBnB,IAAAA,GAAG,EAAEiB;AAAO,GAAA,EACPd,OAAO,IAAI;IAAEA,OAAO;AAAEmB,IAAAA,SAAS,EAAER,aAAa;AAAES,IAAAA,QAAQ,EAAE;GAAG,EAC9DnB,IAAI,CACR,CAAC;AAEJ,CACD;;;;"}
1
+ {"version":3,"file":"MrlTableRow.js","sources":["../../../../../src/components/table/MrlTableRow/MrlTableRow.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { getUniqueId } from '../../../utils';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nimport styles from './MrlTableRow.module.scss';\n\nconst COMPONENT_NAME = 'MrlTableRow';\n\nexport interface MrlTableRowProps extends React.ComponentPropsWithoutRef<'tr'> {\n\t/**\n\t * An element id (and if not provided, a unique value decorated\n\t * to prevent conflict with aria controls will be generated).\n\t *\n\t * @default `${id}-mrl-table-row`\n\t */\n\tid?: string;\n\t/**\n\t * Id of the MrlTableItem associated with the table row\n\t */\n\titemId?: string;\n\t/**\n\t *\n\t * Custom click handler to be used for mouse and keyboard selection of table row\n\t */\n\tonClick?: (e: React.MouseEvent<HTMLElement> | React.KeyboardEvent) => void;\n\t/**\n\t * Enables interaction tracking for this row. Provide a stable, non-PII id\n\t * (e.g. 'members-table-row'). When omitted, the row emits no analytics.\n\t *\n\t * Note: row content is never emitted.\n\t */\n\teventId?: string;\n}\n\n/**\n * MrlTableRow Component\n *\n * @param {MrlTableRowProps} props - MrlTableRow component props\n * @returns a table row element\n */\nexport const MrlTableRow = React.forwardRef<Record<string, HTMLTableRowElement>, MrlTableRowProps>(\n\tfunction MrlTableRow(\n\t\t{ className, itemId, onClick, eventId, ...rest }: MrlTableRowProps,\n\t\tref\n\t): JSX.Element {\n\t\tconst { id } = rest;\n\t\tconst idRef = React.useRef<string>(id || getUniqueId('mrl-table-row'));\n\t\tconst classes = classnames(className, COMPONENT_NAME, styles[COMPONENT_NAME]);\n\n\t\tconst trackInteraction = useMrlTrackInteraction(COMPONENT_NAME, eventId);\n\n\t\tconst handleClick = (e: React.MouseEvent<HTMLElement> | React.KeyboardEvent) => {\n\t\t\t// row content is consumer data and is never emitted.\n\t\t\ttrackInteraction({ action: 'click' });\n\n\t\t\tonClick?.(e);\n\t\t};\n\n\t\tconst handleKeyDown = (e: React.KeyboardEvent) => {\n\t\t\tif (e.key === 'Enter' && onClick) {\n\t\t\t\thandleClick(e);\n\t\t\t}\n\t\t};\n\n\t\tconst getRef = (element: HTMLTableRowElement | null) => {\n\t\t\tif (element && itemId) {\n\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\tref({ [itemId]: element });\n\t\t\t\t} else if (ref?.current) {\n\t\t\t\t\tref.current[itemId] = element;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<tr\n\t\t\t\tclassName={classes}\n\t\t\t\tid={idRef.current}\n\t\t\t\tref={getRef}\n\t\t\t\t{...(onClick && { onClick: handleClick, onKeyDown: handleKeyDown, tabIndex: 0 })}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t}\n);\n"],"names":["COMPONENT_NAME","MrlTableRow","React","forwardRef","_ref","ref","className","itemId","onClick","eventId","rest","_objectWithoutProperties","_excluded","id","idRef","useRef","getUniqueId","classes","classnames","styles","trackInteraction","useMrlTrackInteraction","handleClick","e","action","handleKeyDown","key","getRef","element","current","createElement","_extends","onKeyDown","tabIndex"],"mappings":";;;;;;;;AAOA,IAAMA,cAAc,GAAG,aAAa;AA4BpC;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,WAAW,gBAAGC,KAAK,CAACC,UAAU,CAC1C,SAASF,WAAWA,CAAAG,IAAA,EAEnBC,GAAG,EACW;AAAA,EAAA,IAFZC,SAAS,GAAAF,IAAA,CAATE,SAAS;IAAEC,MAAM,GAAAH,IAAA,CAANG,MAAM;IAAEC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;IAAEC,OAAO,GAAAL,IAAA,CAAPK,OAAO;AAAKC,IAAAA,IAAI,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,CAAA;AAG9C,EAAA,IAAQC,EAAE,GAAKH,IAAI,CAAXG,EAAE;AACV,EAAA,IAAMC,KAAK,GAAGZ,KAAK,CAACa,MAAM,CAASF,EAAE,IAAIG,WAAW,CAAC,eAAe,CAAC,CAAC;AACtE,EAAA,IAAMC,OAAO,GAAGC,UAAU,CAACZ,SAAS,EAAEN,cAAc,EAAEmB,MAAM,CAACnB,cAAc,CAAC,CAAC;AAE7E,EAAA,IAAMoB,gBAAgB,GAAGC,sBAAsB,CAACrB,cAAc,EAAES,OAAO,CAAC;EAExE,IAAMa,WAAW,GAAIC,CAAsD,IAAK;AAC/E;AACAH,IAAAA,gBAAgB,CAAC;AAAEI,MAAAA,MAAM,EAAE;AAAQ,KAAC,CAAC;AAErChB,IAAAA,OAAO,aAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAGe,CAAC,CAAC;EACb,CAAC;EAED,IAAME,aAAa,GAAIF,CAAsB,IAAK;AACjD,IAAA,IAAIA,CAAC,CAACG,GAAG,KAAK,OAAO,IAAIlB,OAAO,EAAE;MACjCc,WAAW,CAACC,CAAC,CAAC;AACf,IAAA;EACD,CAAC;EAED,IAAMI,MAAM,GAAIC,OAAmC,IAAK;IACvD,IAAIA,OAAO,IAAIrB,MAAM,EAAE;AACtB,MAAA,IAAI,OAAOF,GAAG,KAAK,UAAU,EAAE;AAC9BA,QAAAA,GAAG,CAAC;AAAE,UAAA,CAACE,MAAM,GAAGqB;AAAQ,SAAC,CAAC;MAC3B,CAAC,MAAM,IAAIvB,GAAG,KAAA,IAAA,IAAHA,GAAG,KAAA,MAAA,IAAHA,GAAG,CAAEwB,OAAO,EAAE;AACxBxB,QAAAA,GAAG,CAACwB,OAAO,CAACtB,MAAM,CAAC,GAAGqB,OAAO;AAC9B,MAAA;AACD,IAAA;EACD,CAAC;AAED,EAAA,oBACC1B,KAAA,CAAA4B,aAAA,CAAA,IAAA,EAAAC,QAAA,CAAA;AACCzB,IAAAA,SAAS,EAAEW,OAAQ;IACnBJ,EAAE,EAAEC,KAAK,CAACe,OAAQ;AAClBxB,IAAAA,GAAG,EAAEsB;AAAO,GAAA,EACPnB,OAAO,IAAI;AAAEA,IAAAA,OAAO,EAAEc,WAAW;AAAEU,IAAAA,SAAS,EAAEP,aAAa;AAAEQ,IAAAA,QAAQ,EAAE;GAAG,EAC3EvB,IAAI,CACR,CAAC;AAEJ,CACD;;;;"}
@@ -3,8 +3,9 @@ import * as React from 'react';
3
3
  import classnames from 'classnames';
4
4
  import styles from './MrlTab.module.scss.js';
5
5
  import { useMrlTabContext } from '../MrlTabs/MrlTabs.js';
6
+ import { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics/useMrlAnalytics.js';
6
7
 
7
- var _excluded = ["className", "icon", "id", "hookClick", "text"];
8
+ var _excluded = ["className", "icon", "id", "hookClick", "text", "eventId"];
8
9
  /**
9
10
  * Renders a tab component
10
11
  * @param {MrlTabProps} props the props for your MrlTab
@@ -16,10 +17,12 @@ var MrlTab = _ref => {
16
17
  id = _ref.id,
17
18
  hookClick = _ref.hookClick,
18
19
  text = _ref.text,
20
+ eventId = _ref.eventId,
19
21
  rest = _objectWithoutProperties(_ref, _excluded);
20
22
  var _useMrlTabContext = useMrlTabContext(),
21
23
  activeTab = _useMrlTabContext.activeTab,
22
24
  setActiveTab = _useMrlTabContext.setActiveTab;
25
+ var trackInteraction = useMrlTrackInteraction('MrlTab', eventId);
23
26
  var active = activeTab === id;
24
27
  var buttonClasses = classnames(className, 'mrl-tab', {
25
28
  [styles['MrlTab']]: true,
@@ -29,6 +32,12 @@ var MrlTab = _ref => {
29
32
  [styles['MrlTab-Text']]: true
30
33
  });
31
34
  var handleClick = id => {
35
+ trackInteraction({
36
+ action: 'select',
37
+ metadata: {
38
+ tabId: id
39
+ }
40
+ });
32
41
  if (hookClick) {
33
42
  hookClick();
34
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MrlTab.js","sources":["../../../../../src/components/tabs/MrlTab/MrlTab.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { useMrlTabContext } from '../../..';\n\n/** MrlTab and MrlTabLink share styles as they should look identical */\nimport styles from './MrlTab.module.scss';\n\nexport interface MrlTabProps extends React.ComponentProps<'button'> {\n\t/** Class to be applied to the button element of the MrlTab */\n\tclassName?: string;\n\ticon?: React.ReactElement;\n\t/**\n\t * The id that will be passed to the MrlTabContext to set the active state.\n\t * NOTE: This must match the `tabId` set on `MrlTabContent`!\n\t */\n\tid: string;\n\t/** An addition function to call when clicking on a tab */\n\thookClick?: () => void;\n\ttext: string;\n}\n\n/**\n * Renders a tab component\n * @param {MrlTabProps} props the props for your MrlTab\n * @returns {React.ReactElement} an a element containing the text you pass\n */\nexport const MrlTab = ({\n\tclassName,\n\ticon,\n\tid,\n\thookClick,\n\ttext,\n\t...rest\n}: MrlTabProps): React.ReactElement => {\n\tconst { activeTab, setActiveTab } = useMrlTabContext();\n\tconst active = activeTab === id;\n\tconst buttonClasses = classnames(className, 'mrl-tab', {\n\t\t[styles['MrlTab']]: true,\n\t\t[styles['MrlTab-selected']]: active\n\t});\n\n\tconst textClasses = classnames('mrl-tab--text', {\n\t\t[styles['MrlTab-Text']]: true\n\t});\n\n\tconst handleClick = (id: string) => {\n\t\tif (hookClick) {\n\t\t\thookClick();\n\t\t}\n\n\t\tsetActiveTab(id);\n\t};\n\n\treturn (\n\t\t<button\n\t\t\t{...rest}\n\t\t\taria-selected={active}\n\t\t\tclassName={buttonClasses}\n\t\t\tdata-qa={`${id}-tab`}\n\t\t\tdata-roving=\"true\"\n\t\t\tid={id}\n\t\t\tonClick={() => handleClick(id)}\n\t\t\trole=\"tab\"\n\t\t\ttabIndex={active ? 0 : -1}\n\t\t\ttype=\"button\"\n\t\t>\n\t\t\t{!!icon && <span className={styles['MrlTab-icon']}>{icon}</span>}\n\t\t\t<span className={textClasses}>{text}</span>\n\t\t</button>\n\t);\n};\n"],"names":["MrlTab","_ref","className","icon","id","hookClick","text","rest","_objectWithoutProperties","_excluded","_useMrlTabContext","useMrlTabContext","activeTab","setActiveTab","active","buttonClasses","classnames","styles","textClasses","handleClick","React","createElement","_extends","concat","onClick","role","tabIndex","type"],"mappings":";;;;;;;AAqBA;AACA;AACA;AACA;AACA;AACO,IAAMA,MAAM,GAAGC,IAAA,IAOiB;AAAA,EAAA,IANtCC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IACJC,EAAE,GAAAH,IAAA,CAAFG,EAAE;IACFC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IACTC,IAAI,GAAAL,IAAA,CAAJK,IAAI;AACDC,IAAAA,IAAI,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,CAAA;AAEP,EAAA,IAAAC,iBAAA,GAAoCC,gBAAgB,EAAE;IAA9CC,SAAS,GAAAF,iBAAA,CAATE,SAAS;IAAEC,YAAY,GAAAH,iBAAA,CAAZG,YAAY;AAC/B,EAAA,IAAMC,MAAM,GAAGF,SAAS,KAAKR,EAAE;AAC/B,EAAA,IAAMW,aAAa,GAAGC,UAAU,CAACd,SAAS,EAAE,SAAS,EAAE;AACtD,IAAA,CAACe,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;AACxB,IAAA,CAACA,MAAM,CAAC,iBAAiB,CAAC,GAAGH;AAC9B,GAAC,CAAC;AAEF,EAAA,IAAMI,WAAW,GAAGF,UAAU,CAAC,eAAe,EAAE;AAC/C,IAAA,CAACC,MAAM,CAAC,aAAa,CAAC,GAAG;AAC1B,GAAC,CAAC;EAEF,IAAME,WAAW,GAAIf,EAAU,IAAK;AACnC,IAAA,IAAIC,SAAS,EAAE;AACdA,MAAAA,SAAS,EAAE;AACZ,IAAA;IAEAQ,YAAY,CAACT,EAAE,CAAC;EACjB,CAAC;AAED,EAAA,oBACCgB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAAC,QAAA,KACKf,IAAI,EAAA;AACR,IAAA,eAAA,EAAeO,MAAO;AACtBZ,IAAAA,SAAS,EAAEa,aAAc;IACzB,SAAA,EAAA,EAAA,CAAAQ,MAAA,CAAYnB,EAAE,EAAA,MAAA,CAAO;AACrB,IAAA,aAAA,EAAY,MAAM;AAClBA,IAAAA,EAAE,EAAEA,EAAG;AACPoB,IAAAA,OAAO,EAAEA,MAAML,WAAW,CAACf,EAAE,CAAE;AAC/BqB,IAAAA,IAAI,EAAC,KAAK;AACVC,IAAAA,QAAQ,EAAEZ,MAAM,GAAG,CAAC,GAAG,EAAG;AAC1Ba,IAAAA,IAAI,EAAC;AAAQ,GAAA,CAAA,EAEZ,CAAC,CAACxB,IAAI,iBAAIiB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;IAAMnB,SAAS,EAAEe,MAAM,CAAC,aAAa;AAAE,GAAA,EAAEd,IAAW,CAAC,eAChEiB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMnB,IAAAA,SAAS,EAAEgB;GAAY,EAAEZ,IAAW,CACnC,CAAC;AAEX;;;;"}
1
+ {"version":3,"file":"MrlTab.js","sources":["../../../../../src/components/tabs/MrlTab/MrlTab.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { useMrlTabContext } from '../../..';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\n/** MrlTab and MrlTabLink share styles as they should look identical */\nimport styles from './MrlTab.module.scss';\n\nexport interface MrlTabProps extends React.ComponentProps<'button'> {\n\t/** Class to be applied to the button element of the MrlTab */\n\tclassName?: string;\n\ticon?: React.ReactElement;\n\t/**\n\t * The id that will be passed to the MrlTabContext to set the active state.\n\t * NOTE: This must match the `tabId` set on `MrlTabContent`!\n\t */\n\tid: string;\n\t/** An addition function to call when clicking on a tab */\n\thookClick?: () => void;\n\ttext: string;\n\t/**\n\t * Enables interaction tracking for this tab. Provide a stable, non-PII id\n\t * (e.g. 'settings-tabs'). When omitted, the tab emits no analytics.\n\t */\n\teventId?: string;\n}\n\n/**\n * Renders a tab component\n * @param {MrlTabProps} props the props for your MrlTab\n * @returns {React.ReactElement} an a element containing the text you pass\n */\nexport const MrlTab = ({\n\tclassName,\n\ticon,\n\tid,\n\thookClick,\n\ttext,\n\teventId,\n\t...rest\n}: MrlTabProps): React.ReactElement => {\n\tconst { activeTab, setActiveTab } = useMrlTabContext();\n\tconst trackInteraction = useMrlTrackInteraction('MrlTab', eventId);\n\tconst active = activeTab === id;\n\tconst buttonClasses = classnames(className, 'mrl-tab', {\n\t\t[styles['MrlTab']]: true,\n\t\t[styles['MrlTab-selected']]: active\n\t});\n\n\tconst textClasses = classnames('mrl-tab--text', {\n\t\t[styles['MrlTab-Text']]: true\n\t});\n\n\tconst handleClick = (id: string) => {\n\t\ttrackInteraction({ action: 'select', metadata: { tabId: id } });\n\n\t\tif (hookClick) {\n\t\t\thookClick();\n\t\t}\n\n\t\tsetActiveTab(id);\n\t};\n\n\treturn (\n\t\t<button\n\t\t\t{...rest}\n\t\t\taria-selected={active}\n\t\t\tclassName={buttonClasses}\n\t\t\tdata-qa={`${id}-tab`}\n\t\t\tdata-roving=\"true\"\n\t\t\tid={id}\n\t\t\tonClick={() => handleClick(id)}\n\t\t\trole=\"tab\"\n\t\t\ttabIndex={active ? 0 : -1}\n\t\t\ttype=\"button\"\n\t\t>\n\t\t\t{!!icon && <span className={styles['MrlTab-icon']}>{icon}</span>}\n\t\t\t<span className={textClasses}>{text}</span>\n\t\t</button>\n\t);\n};\n"],"names":["MrlTab","_ref","className","icon","id","hookClick","text","eventId","rest","_objectWithoutProperties","_excluded","_useMrlTabContext","useMrlTabContext","activeTab","setActiveTab","trackInteraction","useMrlTrackInteraction","active","buttonClasses","classnames","styles","textClasses","handleClick","action","metadata","tabId","React","createElement","_extends","concat","onClick","role","tabIndex","type"],"mappings":";;;;;;;;AA2BA;AACA;AACA;AACA;AACA;AACO,IAAMA,MAAM,GAAGC,IAAA,IAQiB;AAAA,EAAA,IAPtCC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IACJC,EAAE,GAAAH,IAAA,CAAFG,EAAE;IACFC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IACTC,IAAI,GAAAL,IAAA,CAAJK,IAAI;IACJC,OAAO,GAAAN,IAAA,CAAPM,OAAO;AACJC,IAAAA,IAAI,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA,CAAA;AAEP,EAAA,IAAAC,iBAAA,GAAoCC,gBAAgB,EAAE;IAA9CC,SAAS,GAAAF,iBAAA,CAATE,SAAS;IAAEC,YAAY,GAAAH,iBAAA,CAAZG,YAAY;AAC/B,EAAA,IAAMC,gBAAgB,GAAGC,sBAAsB,CAAC,QAAQ,EAAET,OAAO,CAAC;AAClE,EAAA,IAAMU,MAAM,GAAGJ,SAAS,KAAKT,EAAE;AAC/B,EAAA,IAAMc,aAAa,GAAGC,UAAU,CAACjB,SAAS,EAAE,SAAS,EAAE;AACtD,IAAA,CAACkB,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;AACxB,IAAA,CAACA,MAAM,CAAC,iBAAiB,CAAC,GAAGH;AAC9B,GAAC,CAAC;AAEF,EAAA,IAAMI,WAAW,GAAGF,UAAU,CAAC,eAAe,EAAE;AAC/C,IAAA,CAACC,MAAM,CAAC,aAAa,CAAC,GAAG;AAC1B,GAAC,CAAC;EAEF,IAAME,WAAW,GAAIlB,EAAU,IAAK;AACnCW,IAAAA,gBAAgB,CAAC;AAAEQ,MAAAA,MAAM,EAAE,QAAQ;AAAEC,MAAAA,QAAQ,EAAE;AAAEC,QAAAA,KAAK,EAAErB;AAAG;AAAE,KAAC,CAAC;AAE/D,IAAA,IAAIC,SAAS,EAAE;AACdA,MAAAA,SAAS,EAAE;AACZ,IAAA;IAEAS,YAAY,CAACV,EAAE,CAAC;EACjB,CAAC;AAED,EAAA,oBACCsB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAAC,QAAA,KACKpB,IAAI,EAAA;AACR,IAAA,eAAA,EAAeS,MAAO;AACtBf,IAAAA,SAAS,EAAEgB,aAAc;IACzB,SAAA,EAAA,EAAA,CAAAW,MAAA,CAAYzB,EAAE,EAAA,MAAA,CAAO;AACrB,IAAA,aAAA,EAAY,MAAM;AAClBA,IAAAA,EAAE,EAAEA,EAAG;AACP0B,IAAAA,OAAO,EAAEA,MAAMR,WAAW,CAAClB,EAAE,CAAE;AAC/B2B,IAAAA,IAAI,EAAC,KAAK;AACVC,IAAAA,QAAQ,EAAEf,MAAM,GAAG,CAAC,GAAG,EAAG;AAC1BgB,IAAAA,IAAI,EAAC;AAAQ,GAAA,CAAA,EAEZ,CAAC,CAAC9B,IAAI,iBAAIuB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;IAAMzB,SAAS,EAAEkB,MAAM,CAAC,aAAa;AAAE,GAAA,EAAEjB,IAAW,CAAC,eAChEuB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMzB,IAAAA,SAAS,EAAEmB;GAAY,EAAEf,IAAW,CACnC,CAAC;AAEX;;;;"}
@@ -3,9 +3,10 @@ import * as React from 'react';
3
3
  import classnames from 'classnames';
4
4
  import { NavLink } from 'react-router-dom';
5
5
  import styles from '../MrlTab/MrlTab.module.scss.js';
6
+ import { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics/useMrlAnalytics.js';
6
7
  import { useMrlTabContext } from '../MrlTabs/MrlTabs.js';
7
8
 
8
- var _excluded = ["className", "children", "icon", "id", "hookClick", "text", "to"];
9
+ var _excluded = ["className", "children", "icon", "id", "hookClick", "text", "to", "eventId"];
9
10
  /**
10
11
  * Renders a tab component
11
12
  *
@@ -20,10 +21,12 @@ var MrlTabLink = _ref => {
20
21
  hookClick = _ref.hookClick,
21
22
  text = _ref.text,
22
23
  to = _ref.to,
24
+ eventId = _ref.eventId,
23
25
  remainingProps = _objectWithoutProperties(_ref, _excluded);
24
26
  var _useMrlTabContext = useMrlTabContext(),
25
27
  activeTab = _useMrlTabContext.activeTab,
26
28
  setActiveTab = _useMrlTabContext.setActiveTab;
29
+ var trackInteraction = useMrlTrackInteraction('MrlTabLink', eventId);
27
30
  var active = activeTab === id;
28
31
  var buttonClasses = classnames(className, 'mrl-tab', {
29
32
  [styles['MrlTab']]: true,
@@ -33,6 +36,12 @@ var MrlTabLink = _ref => {
33
36
  [styles['MrlTab-Text']]: true
34
37
  });
35
38
  var handleClick = id => {
39
+ trackInteraction({
40
+ action: 'select',
41
+ metadata: {
42
+ tabId: id
43
+ }
44
+ });
36
45
  if (hookClick) {
37
46
  hookClick();
38
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MrlTabLink.js","sources":["../../../../../src/components/tabs/MrlTabLink/MrlTabLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { NavLink, NavLinkProps } from 'react-router-dom';\nimport { useMrlTabContext } from '../../..';\n\n/** MrlTab and MrlTabLink share styles as they should look identical */\nimport styles from '../MrlTab/MrlTab.module.scss';\n\nexport interface MrlTabLinkProps extends NavLinkProps {\n\t/** Class to be applied to the NavLink element of the MrlTabLink */\n\tclassName?: string;\n\t/** Children to be rendered within the text component */\n\tchildren?: React.ReactNode;\n\ticon?: React.ReactElement;\n\t/**\n\t * The id that will be passed to the MrlTabContext to set the active state.\n\t * NOTE: This must match the `tabId` set on `MrlTabContent`!\n\t */\n\tid: string;\n\t/** An addition function to call when clicking on a tab */\n\thookClick?: () => void;\n\t/**\n\t * Textual content when it's a static string; if you have nested elements,\n\t * use children to provide content\n\t */\n\ttext?: string;\n}\n\n/**\n * Renders a tab component\n *\n * @param {MrlTabLinkProps} props the props for your MrlTabLink\n * @returns {React.ReactElement} an a element containing the text you pass\n */\nexport const MrlTabLink = ({\n\tclassName,\n\tchildren,\n\ticon,\n\tid,\n\thookClick,\n\ttext,\n\tto,\n\t...remainingProps\n}: MrlTabLinkProps): React.ReactElement => {\n\tconst { activeTab, setActiveTab } = useMrlTabContext();\n\tconst active = activeTab === id;\n\tconst buttonClasses = classnames(className, 'mrl-tab', {\n\t\t[styles['MrlTab']]: true,\n\t\t[styles['MrlTab-selected']]: active\n\t});\n\n\tconst textClasses = classnames('mrl-tab--text', {\n\t\t[styles['MrlTab-Text']]: true\n\t});\n\n\tconst handleClick = (id: string) => {\n\t\tif (hookClick) {\n\t\t\thookClick();\n\t\t}\n\n\t\tsetActiveTab(id);\n\t};\n\n\treturn (\n\t\t<NavLink\n\t\t\taria-selected={active}\n\t\t\tclassName={buttonClasses}\n\t\t\tdata-qa={`${id}-tab`}\n\t\t\tdata-roving=\"true\"\n\t\t\tid={id}\n\t\t\tonClick={() => handleClick(id)}\n\t\t\trole=\"tab\"\n\t\t\ttabIndex={active ? 0 : -1}\n\t\t\tto={to}\n\t\t\t{...remainingProps}\n\t\t>\n\t\t\t{!!icon && <span className={styles['MrlTab-icon']}>{icon}</span>}\n\t\t\t{!!text && <span className={textClasses}>{text}</span>}\n\t\t\t{!!children && <span className={textClasses}>{children}</span>}\n\t\t</NavLink>\n\t);\n};\n"],"names":["MrlTabLink","_ref","className","children","icon","id","hookClick","text","to","remainingProps","_objectWithoutProperties","_excluded","_useMrlTabContext","useMrlTabContext","activeTab","setActiveTab","active","buttonClasses","classnames","styles","textClasses","handleClick","React","createElement","NavLink","_extends","concat","onClick","role","tabIndex"],"mappings":";;;;;;;;AA4BA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,UAAU,GAAGC,IAAA,IASiB;AAAA,EAAA,IAR1CC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;IACFC,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,IAAI,GAAAN,IAAA,CAAJM,IAAI;IACJC,EAAE,GAAAP,IAAA,CAAFO,EAAE;AACCC,IAAAA,cAAc,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA,CAAA;AAEjB,EAAA,IAAAC,iBAAA,GAAoCC,gBAAgB,EAAE;IAA9CC,SAAS,GAAAF,iBAAA,CAATE,SAAS;IAAEC,YAAY,GAAAH,iBAAA,CAAZG,YAAY;AAC/B,EAAA,IAAMC,MAAM,GAAGF,SAAS,KAAKT,EAAE;AAC/B,EAAA,IAAMY,aAAa,GAAGC,UAAU,CAAChB,SAAS,EAAE,SAAS,EAAE;AACtD,IAAA,CAACiB,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;AACxB,IAAA,CAACA,MAAM,CAAC,iBAAiB,CAAC,GAAGH;AAC9B,GAAC,CAAC;AAEF,EAAA,IAAMI,WAAW,GAAGF,UAAU,CAAC,eAAe,EAAE;AAC/C,IAAA,CAACC,MAAM,CAAC,aAAa,CAAC,GAAG;AAC1B,GAAC,CAAC;EAEF,IAAME,WAAW,GAAIhB,EAAU,IAAK;AACnC,IAAA,IAAIC,SAAS,EAAE;AACdA,MAAAA,SAAS,EAAE;AACZ,IAAA;IAEAS,YAAY,CAACV,EAAE,CAAC;EACjB,CAAC;AAED,EAAA,oBACCiB,KAAA,CAAAC,aAAA,CAACC,OAAO,EAAAC,QAAA,CAAA;AACP,IAAA,eAAA,EAAeT,MAAO;AACtBd,IAAAA,SAAS,EAAEe,aAAc;IACzB,SAAA,EAAA,EAAA,CAAAS,MAAA,CAAYrB,EAAE,EAAA,MAAA,CAAO;AACrB,IAAA,aAAA,EAAY,MAAM;AAClBA,IAAAA,EAAE,EAAEA,EAAG;AACPsB,IAAAA,OAAO,EAAEA,MAAMN,WAAW,CAAChB,EAAE,CAAE;AAC/BuB,IAAAA,IAAI,EAAC,KAAK;AACVC,IAAAA,QAAQ,EAAEb,MAAM,GAAG,CAAC,GAAG,EAAG;AAC1BR,IAAAA,EAAE,EAAEA;GAAG,EACHC,cAAc,GAEjB,CAAC,CAACL,IAAI,iBAAIkB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;IAAMrB,SAAS,EAAEiB,MAAM,CAAC,aAAa;GAAE,EAAEf,IAAW,CAAC,EAC/D,CAAC,CAACG,IAAI,iBAAIe,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMrB,IAAAA,SAAS,EAAEkB;GAAY,EAAEb,IAAW,CAAC,EACrD,CAAC,CAACJ,QAAQ,iBAAImB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMrB,IAAAA,SAAS,EAAEkB;GAAY,EAAEjB,QAAe,CACrD,CAAC;AAEZ;;;;"}
1
+ {"version":3,"file":"MrlTabLink.js","sources":["../../../../../src/components/tabs/MrlTabLink/MrlTabLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { NavLink, NavLinkProps } from 'react-router-dom';\nimport { useMrlTabContext } from '../../..';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\n/** MrlTab and MrlTabLink share styles as they should look identical */\nimport styles from '../MrlTab/MrlTab.module.scss';\n\nexport interface MrlTabLinkProps extends NavLinkProps {\n\t/** Class to be applied to the NavLink element of the MrlTabLink */\n\tclassName?: string;\n\t/** Children to be rendered within the text component */\n\tchildren?: React.ReactNode;\n\ticon?: React.ReactElement;\n\t/**\n\t * The id that will be passed to the MrlTabContext to set the active state.\n\t * NOTE: This must match the `tabId` set on `MrlTabContent`!\n\t */\n\tid: string;\n\t/** An addition function to call when clicking on a tab */\n\thookClick?: () => void;\n\t/**\n\t * Textual content when it's a static string; if you have nested elements,\n\t * use children to provide content\n\t */\n\ttext?: string;\n\t/**\n\t * Enables interaction tracking for this tab. Provide a stable, non-PII id\n\t * (e.g. 'workspace-nav-tabs'). When omitted, the tab emits no analytics.\n\t */\n\teventId?: string;\n}\n\n/**\n * Renders a tab component\n *\n * @param {MrlTabLinkProps} props the props for your MrlTabLink\n * @returns {React.ReactElement} an a element containing the text you pass\n */\nexport const MrlTabLink = ({\n\tclassName,\n\tchildren,\n\ticon,\n\tid,\n\thookClick,\n\ttext,\n\tto,\n\teventId,\n\t...remainingProps\n}: MrlTabLinkProps): React.ReactElement => {\n\tconst { activeTab, setActiveTab } = useMrlTabContext();\n\tconst trackInteraction = useMrlTrackInteraction('MrlTabLink', eventId);\n\tconst active = activeTab === id;\n\tconst buttonClasses = classnames(className, 'mrl-tab', {\n\t\t[styles['MrlTab']]: true,\n\t\t[styles['MrlTab-selected']]: active\n\t});\n\n\tconst textClasses = classnames('mrl-tab--text', {\n\t\t[styles['MrlTab-Text']]: true\n\t});\n\n\tconst handleClick = (id: string) => {\n\t\ttrackInteraction({ action: 'select', metadata: { tabId: id } });\n\n\t\tif (hookClick) {\n\t\t\thookClick();\n\t\t}\n\n\t\tsetActiveTab(id);\n\t};\n\n\treturn (\n\t\t<NavLink\n\t\t\taria-selected={active}\n\t\t\tclassName={buttonClasses}\n\t\t\tdata-qa={`${id}-tab`}\n\t\t\tdata-roving=\"true\"\n\t\t\tid={id}\n\t\t\tonClick={() => handleClick(id)}\n\t\t\trole=\"tab\"\n\t\t\ttabIndex={active ? 0 : -1}\n\t\t\tto={to}\n\t\t\t{...remainingProps}\n\t\t>\n\t\t\t{!!icon && <span className={styles['MrlTab-icon']}>{icon}</span>}\n\t\t\t{!!text && <span className={textClasses}>{text}</span>}\n\t\t\t{!!children && <span className={textClasses}>{children}</span>}\n\t\t</NavLink>\n\t);\n};\n"],"names":["MrlTabLink","_ref","className","children","icon","id","hookClick","text","to","eventId","remainingProps","_objectWithoutProperties","_excluded","_useMrlTabContext","useMrlTabContext","activeTab","setActiveTab","trackInteraction","useMrlTrackInteraction","active","buttonClasses","classnames","styles","textClasses","handleClick","action","metadata","tabId","React","createElement","NavLink","_extends","concat","onClick","role","tabIndex"],"mappings":";;;;;;;;;AAkCA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,UAAU,GAAGC,IAAA,IAUiB;AAAA,EAAA,IAT1CC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;IACFC,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,IAAI,GAAAN,IAAA,CAAJM,IAAI;IACJC,EAAE,GAAAP,IAAA,CAAFO,EAAE;IACFC,OAAO,GAAAR,IAAA,CAAPQ,OAAO;AACJC,IAAAA,cAAc,GAAAC,wBAAA,CAAAV,IAAA,EAAAW,SAAA,CAAA;AAEjB,EAAA,IAAAC,iBAAA,GAAoCC,gBAAgB,EAAE;IAA9CC,SAAS,GAAAF,iBAAA,CAATE,SAAS;IAAEC,YAAY,GAAAH,iBAAA,CAAZG,YAAY;AAC/B,EAAA,IAAMC,gBAAgB,GAAGC,sBAAsB,CAAC,YAAY,EAAET,OAAO,CAAC;AACtE,EAAA,IAAMU,MAAM,GAAGJ,SAAS,KAAKV,EAAE;AAC/B,EAAA,IAAMe,aAAa,GAAGC,UAAU,CAACnB,SAAS,EAAE,SAAS,EAAE;AACtD,IAAA,CAACoB,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;AACxB,IAAA,CAACA,MAAM,CAAC,iBAAiB,CAAC,GAAGH;AAC9B,GAAC,CAAC;AAEF,EAAA,IAAMI,WAAW,GAAGF,UAAU,CAAC,eAAe,EAAE;AAC/C,IAAA,CAACC,MAAM,CAAC,aAAa,CAAC,GAAG;AAC1B,GAAC,CAAC;EAEF,IAAME,WAAW,GAAInB,EAAU,IAAK;AACnCY,IAAAA,gBAAgB,CAAC;AAAEQ,MAAAA,MAAM,EAAE,QAAQ;AAAEC,MAAAA,QAAQ,EAAE;AAAEC,QAAAA,KAAK,EAAEtB;AAAG;AAAE,KAAC,CAAC;AAE/D,IAAA,IAAIC,SAAS,EAAE;AACdA,MAAAA,SAAS,EAAE;AACZ,IAAA;IAEAU,YAAY,CAACX,EAAE,CAAC;EACjB,CAAC;AAED,EAAA,oBACCuB,KAAA,CAAAC,aAAA,CAACC,OAAO,EAAAC,QAAA,CAAA;AACP,IAAA,eAAA,EAAeZ,MAAO;AACtBjB,IAAAA,SAAS,EAAEkB,aAAc;IACzB,SAAA,EAAA,EAAA,CAAAY,MAAA,CAAY3B,EAAE,EAAA,MAAA,CAAO;AACrB,IAAA,aAAA,EAAY,MAAM;AAClBA,IAAAA,EAAE,EAAEA,EAAG;AACP4B,IAAAA,OAAO,EAAEA,MAAMT,WAAW,CAACnB,EAAE,CAAE;AAC/B6B,IAAAA,IAAI,EAAC,KAAK;AACVC,IAAAA,QAAQ,EAAEhB,MAAM,GAAG,CAAC,GAAG,EAAG;AAC1BX,IAAAA,EAAE,EAAEA;GAAG,EACHE,cAAc,GAEjB,CAAC,CAACN,IAAI,iBAAIwB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;IAAM3B,SAAS,EAAEoB,MAAM,CAAC,aAAa;GAAE,EAAElB,IAAW,CAAC,EAC/D,CAAC,CAACG,IAAI,iBAAIqB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM3B,IAAAA,SAAS,EAAEqB;GAAY,EAAEhB,IAAW,CAAC,EACrD,CAAC,CAACJ,QAAQ,iBAAIyB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM3B,IAAAA,SAAS,EAAEqB;GAAY,EAAEpB,QAAe,CACrD,CAAC;AAEZ;;;;"}
@@ -2,10 +2,11 @@ import { objectWithoutProperties as _objectWithoutProperties, extends as _extend
2
2
  import * as React from 'react';
3
3
  import styles from './MrlToolbarButton.module.scss.js';
4
4
  import classnames from 'classnames';
5
+ import { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics/useMrlAnalytics.js';
5
6
  import { MrlMenuItem } from '../../menu/MrlMenuItem/MrlMenuItem.js';
6
7
  import { MrlIconButton } from '../../button/MrlIconButton/MrlIconButton.js';
7
8
 
8
- var _excluded = ["className", "icon", "includeInRoving", "menuItemProps", "onClick", "qa", "renderInMenu", "text", "toolbarButtonProps"];
9
+ var _excluded = ["className", "icon", "includeInRoving", "menuItemProps", "onClick", "qa", "renderInMenu", "text", "toolbarButtonProps", "eventId"];
9
10
 
10
11
  /**
11
12
  * Props for the MrlToolbarButton component.
@@ -32,13 +33,28 @@ var MrlToolbarButton = /*#__PURE__*/React.forwardRef(function MrlToolbarButton(p
32
33
  size: 'small',
33
34
  state: 'default'
34
35
  } : _props$toolbarButtonP,
36
+ eventId = props.eventId,
35
37
  rest = _objectWithoutProperties(props, _excluded);
36
38
  var classes = classnames('MrlToolbarButton', className);
39
+ var trackInteraction = useMrlTrackInteraction('MrlToolbarButton', eventId);
40
+
41
+ /**
42
+ * Handle onClick events
43
+ *
44
+ * @param {React.MouseEvent<HTMLButtonElement>} e - mouse event
45
+ */
46
+ var handleOnClick = e => {
47
+ trackInteraction({
48
+ action: 'click',
49
+ variant: renderInMenu ? 'menu' : 'toolbar'
50
+ });
51
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
52
+ };
37
53
  if (renderInMenu) {
38
54
  return /*#__PURE__*/React.createElement(MrlMenuItem, _extends({}, menuItemProps, {
39
55
  className: classes,
40
56
  "data-qa": qa,
41
- onClick: onClick
57
+ onClick: handleOnClick
42
58
  }), /*#__PURE__*/React.createElement("span", {
43
59
  className: styles.MrlToolbarButtonIcon
44
60
  }, icon), text);
@@ -48,7 +64,7 @@ var MrlToolbarButton = /*#__PURE__*/React.forwardRef(function MrlToolbarButton(p
48
64
  "data-qa": qa,
49
65
  "data-roving": includeInRoving ? 'true' : undefined,
50
66
  icon: icon,
51
- onClick: onClick,
67
+ onClick: handleOnClick,
52
68
  ref: ref,
53
69
  text: text
54
70
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"MrlToolbarButton.js","sources":["../../../../../src/components/toolbar/MrlToolbarButton/MrlToolbarButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlIconButton, MrlIconButtonProps, MrlMenuItem, MrlMenuItemProps } from '../../../';\n\nimport styles from './MrlToolbarButton.module.scss';\nimport classnames from 'classnames';\n\n/**\n * Props for the MrlToolbarButton component.\n */\nexport interface MrlToolbarButtonProps {\n\t/** Additional class to add to the Toolbar button */\n\tclassName?: string;\n\t/**\n\t * The icon that will be rendered.\n\t */\n\ticon: React.ReactElement;\n\tincludeInRoving?: boolean;\n\t/**\n\t * A prop used to set a toolbar button to never move into the menu.\n\t */\n\tlockedInToolbar?: boolean;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n\t/**\n\t * Props used to control the display of the button in the menu.\n\t */\n\tmenuItemProps?: Omit<MrlMenuItemProps, 'onClick'>;\n\tqa?: string;\n\t/**\n\t * A prop used to render the item in the menu instead of the toolbar.\n\t */\n\trenderInMenu?: boolean;\n\ttext: string;\n\t/**\n\t * Props used to control the display of the button in the toolbar.\n\t */\n\ttoolbarButtonProps?: {\n\t\tbadge?: MrlIconButtonProps['badge'];\n\t\tdisableEvents?: MrlIconButtonProps['disableEvents'];\n\t\tkind?: MrlIconButtonProps['kind'];\n\t\tloading?: MrlIconButtonProps['loading'];\n\t\tloadingText?: MrlIconButtonProps['loadingText'];\n\t\tonKeyUp?: MrlIconButtonProps['onKeyUp'];\n\t\tonMouseUp?: MrlIconButtonProps['onMouseUp'];\n\t\tposition?: MrlIconButtonProps['position'];\n\t\tsize?: MrlIconButtonProps['size'];\n\t\tstate?: MrlIconButtonProps['state'];\n\t\ttipAnchor?: MrlIconButtonProps['tipAnchor'];\n\t\ttoggleAria?: MrlIconButtonProps['toggleAria'];\n\t\ttoggleStyle?: MrlIconButtonProps['toggleStyle'];\n\t};\n}\n\n/**\n * MrlToolbarButton component.\n * @param props The MrlToolbarButton component properties.\n * @returns The MrlToolbarButton component.\n */\nexport const MrlToolbarButton = React.forwardRef<HTMLButtonElement, MrlToolbarButtonProps>(\n\tfunction MrlToolbarButton(props, ref): JSX.Element {\n\t\tconst {\n\t\t\tclassName,\n\t\t\ticon,\n\t\t\tincludeInRoving = false,\n\t\t\tmenuItemProps,\n\t\t\tonClick,\n\t\t\tqa,\n\t\t\trenderInMenu,\n\t\t\ttext,\n\t\t\ttoolbarButtonProps = {\n\t\t\t\tposition: 'bottom',\n\t\t\t\tsize: 'small',\n\t\t\t\tstate: 'default'\n\t\t\t},\n\t\t\t...rest\n\t\t} = props;\n\t\tconst classes = classnames('MrlToolbarButton', className);\n\n\t\tif (renderInMenu) {\n\t\t\treturn (\n\t\t\t\t<MrlMenuItem {...menuItemProps} className={classes} data-qa={qa} onClick={onClick}>\n\t\t\t\t\t<span className={styles.MrlToolbarButtonIcon}>{icon}</span>\n\t\t\t\t\t{text}\n\t\t\t\t</MrlMenuItem>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<MrlIconButton\n\t\t\t\t{...rest}\n\t\t\t\t{...toolbarButtonProps}\n\t\t\t\tclassName={classes}\n\t\t\t\tdata-qa={qa}\n\t\t\t\tdata-roving={includeInRoving ? 'true' : undefined}\n\t\t\t\ticon={icon}\n\t\t\t\tonClick={onClick}\n\t\t\t\tref={ref}\n\t\t\t\ttext={text}\n\t\t\t/>\n\t\t);\n\t}\n);\n"],"names":["MrlToolbarButton","React","forwardRef","props","ref","className","icon","_props$includeInRovin","includeInRoving","menuItemProps","onClick","qa","renderInMenu","text","_props$toolbarButtonP","toolbarButtonProps","position","size","state","rest","_objectWithoutProperties","_excluded","classes","classnames","createElement","MrlMenuItem","_extends","styles","MrlToolbarButtonIcon","MrlIconButton","undefined"],"mappings":";;;;;;;;;AAMA;AACA;AACA;;AA+CA;AACA;AACA;AACA;AACA;AACO,IAAMA,gBAAgB,gBAAGC,KAAK,CAACC,UAAU,CAC/C,SAASF,gBAAgBA,CAACG,KAAK,EAAEC,GAAG,EAAe;AAClD,EAAA,IACCC,SAAS,GAcNF,KAAK,CAdRE,SAAS;IACTC,IAAI,GAaDH,KAAK,CAbRG,IAAI;IAAAC,qBAAA,GAaDJ,KAAK,CAZRK,eAAe;AAAfA,IAAAA,eAAe,GAAAD,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IACvBE,aAAa,GAWVN,KAAK,CAXRM,aAAa;IACbC,OAAO,GAUJP,KAAK,CAVRO,OAAO;IACPC,EAAE,GASCR,KAAK,CATRQ,EAAE;IACFC,YAAY,GAQTT,KAAK,CARRS,YAAY;IACZC,IAAI,GAODV,KAAK,CAPRU,IAAI;IAAAC,qBAAA,GAODX,KAAK,CANRY,kBAAkB;IAAlBA,kBAAkB,GAAAD,qBAAA,KAAA,MAAA,GAAG;AACpBE,MAAAA,QAAQ,EAAE,QAAQ;AAClBC,MAAAA,IAAI,EAAE,OAAO;AACbC,MAAAA,KAAK,EAAE;AACR,KAAC,GAAAJ,qBAAA;AACEK,IAAAA,IAAI,GAAAC,wBAAA,CACJjB,KAAK,EAAAkB,SAAA,CAAA;AACT,EAAA,IAAMC,OAAO,GAAGC,UAAU,CAAC,kBAAkB,EAAElB,SAAS,CAAC;AAEzD,EAAA,IAAIO,YAAY,EAAE;IACjB,oBACCX,KAAA,CAAAuB,aAAA,CAACC,WAAW,EAAAC,QAAA,KAAKjB,aAAa,EAAA;AAAEJ,MAAAA,SAAS,EAAEiB,OAAQ;AAAC,MAAA,SAAA,EAASX,EAAG;AAACD,MAAAA,OAAO,EAAEA;KAAQ,CAAA,eACjFT,KAAA,CAAAuB,aAAA,CAAA,MAAA,EAAA;MAAMnB,SAAS,EAAEsB,MAAM,CAACC;AAAqB,KAAA,EAAEtB,IAAW,CAAC,EAC1DO,IACW,CAAC;AAEhB,EAAA;EAEA,oBACCZ,KAAA,CAAAuB,aAAA,CAACK,aAAa,EAAAH,QAAA,CAAA,EAAA,EACTP,IAAI,EACJJ,kBAAkB,EAAA;AACtBV,IAAAA,SAAS,EAAEiB,OAAQ;AACnB,IAAA,SAAA,EAASX,EAAG;AACZ,IAAA,aAAA,EAAaH,eAAe,GAAG,MAAM,GAAGsB,SAAU;AAClDxB,IAAAA,IAAI,EAAEA,IAAK;AACXI,IAAAA,OAAO,EAAEA,OAAQ;AACjBN,IAAAA,GAAG,EAAEA,GAAI;AACTS,IAAAA,IAAI,EAAEA;AAAK,GAAA,CACX,CAAC;AAEJ,CACD;;;;"}
1
+ {"version":3,"file":"MrlToolbarButton.js","sources":["../../../../../src/components/toolbar/MrlToolbarButton/MrlToolbarButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlIconButton, MrlIconButtonProps, MrlMenuItem, MrlMenuItemProps } from '../../../';\n\nimport styles from './MrlToolbarButton.module.scss';\nimport classnames from 'classnames';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\n/**\n * Props for the MrlToolbarButton component.\n */\nexport interface MrlToolbarButtonProps {\n\t/** Additional class to add to the Toolbar button */\n\tclassName?: string;\n\t/**\n\t * The icon that will be rendered.\n\t */\n\ticon: React.ReactElement;\n\tincludeInRoving?: boolean;\n\t/**\n\t * A prop used to set a toolbar button to never move into the menu.\n\t */\n\tlockedInToolbar?: boolean;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n\t/**\n\t * Props used to control the display of the button in the menu.\n\t */\n\tmenuItemProps?: Omit<MrlMenuItemProps, 'onClick'>;\n\tqa?: string;\n\t/**\n\t * A prop used to render the item in the menu instead of the toolbar.\n\t */\n\trenderInMenu?: boolean;\n\ttext: string;\n\t/**\n\t * Enables interaction tracking for this button. Provide a stable, non-PII id\n\t * (e.g. 'canvas-toolbar-shapes'). When omitted, the button emits no analytics.\n\t */\n\teventId?: string;\n\t/**\n\t * Props used to control the display of the button in the toolbar.\n\t */\n\ttoolbarButtonProps?: {\n\t\tbadge?: MrlIconButtonProps['badge'];\n\t\tdisableEvents?: MrlIconButtonProps['disableEvents'];\n\t\tkind?: MrlIconButtonProps['kind'];\n\t\tloading?: MrlIconButtonProps['loading'];\n\t\tloadingText?: MrlIconButtonProps['loadingText'];\n\t\tonKeyUp?: MrlIconButtonProps['onKeyUp'];\n\t\tonMouseUp?: MrlIconButtonProps['onMouseUp'];\n\t\tposition?: MrlIconButtonProps['position'];\n\t\tsize?: MrlIconButtonProps['size'];\n\t\tstate?: MrlIconButtonProps['state'];\n\t\ttipAnchor?: MrlIconButtonProps['tipAnchor'];\n\t\ttoggleAria?: MrlIconButtonProps['toggleAria'];\n\t\ttoggleStyle?: MrlIconButtonProps['toggleStyle'];\n\t};\n}\n\n/**\n * MrlToolbarButton component.\n * @param props The MrlToolbarButton component properties.\n * @returns The MrlToolbarButton component.\n */\nexport const MrlToolbarButton = React.forwardRef<HTMLButtonElement, MrlToolbarButtonProps>(\n\tfunction MrlToolbarButton(props, ref): JSX.Element {\n\t\tconst {\n\t\t\tclassName,\n\t\t\ticon,\n\t\t\tincludeInRoving = false,\n\t\t\tmenuItemProps,\n\t\t\tonClick,\n\t\t\tqa,\n\t\t\trenderInMenu,\n\t\t\ttext,\n\t\t\ttoolbarButtonProps = {\n\t\t\t\tposition: 'bottom',\n\t\t\t\tsize: 'small',\n\t\t\t\tstate: 'default'\n\t\t\t},\n\t\t\t// pulled out of `rest` so the nested MrlIconButton/MrlMenuItem doesn't emit a\n\t\t\t// second, less specific event for the same interaction.\n\t\t\teventId,\n\t\t\t...rest\n\t\t} = props;\n\t\tconst classes = classnames('MrlToolbarButton', className);\n\n\t\tconst trackInteraction = useMrlTrackInteraction('MrlToolbarButton', eventId);\n\n\t\t/**\n\t\t * Handle onClick events\n\t\t *\n\t\t * @param {React.MouseEvent<HTMLButtonElement>} e - mouse event\n\t\t */\n\t\tconst handleOnClick = (e?: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\ttrackInteraction({\n\t\t\t\taction: 'click',\n\t\t\t\tvariant: renderInMenu ? 'menu' : 'toolbar'\n\t\t\t});\n\n\t\t\tonClick?.(e);\n\t\t};\n\n\t\tif (renderInMenu) {\n\t\t\treturn (\n\t\t\t\t<MrlMenuItem {...menuItemProps} className={classes} data-qa={qa} onClick={handleOnClick}>\n\t\t\t\t\t<span className={styles.MrlToolbarButtonIcon}>{icon}</span>\n\t\t\t\t\t{text}\n\t\t\t\t</MrlMenuItem>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<MrlIconButton\n\t\t\t\t{...rest}\n\t\t\t\t{...toolbarButtonProps}\n\t\t\t\tclassName={classes}\n\t\t\t\tdata-qa={qa}\n\t\t\t\tdata-roving={includeInRoving ? 'true' : undefined}\n\t\t\t\ticon={icon}\n\t\t\t\tonClick={handleOnClick}\n\t\t\t\tref={ref}\n\t\t\t\ttext={text}\n\t\t\t/>\n\t\t);\n\t}\n);\n"],"names":["MrlToolbarButton","React","forwardRef","props","ref","className","icon","_props$includeInRovin","includeInRoving","menuItemProps","onClick","qa","renderInMenu","text","_props$toolbarButtonP","toolbarButtonProps","position","size","state","eventId","rest","_objectWithoutProperties","_excluded","classes","classnames","trackInteraction","useMrlTrackInteraction","handleOnClick","e","action","variant","createElement","MrlMenuItem","_extends","styles","MrlToolbarButtonIcon","MrlIconButton","undefined"],"mappings":";;;;;;;;;;AAOA;AACA;AACA;;AAoDA;AACA;AACA;AACA;AACA;AACO,IAAMA,gBAAgB,gBAAGC,KAAK,CAACC,UAAU,CAC/C,SAASF,gBAAgBA,CAACG,KAAK,EAAEC,GAAG,EAAe;AAClD,EAAA,IACCC,SAAS,GAiBNF,KAAK,CAjBRE,SAAS;IACTC,IAAI,GAgBDH,KAAK,CAhBRG,IAAI;IAAAC,qBAAA,GAgBDJ,KAAK,CAfRK,eAAe;AAAfA,IAAAA,eAAe,GAAAD,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IACvBE,aAAa,GAcVN,KAAK,CAdRM,aAAa;IACbC,OAAO,GAaJP,KAAK,CAbRO,OAAO;IACPC,EAAE,GAYCR,KAAK,CAZRQ,EAAE;IACFC,YAAY,GAWTT,KAAK,CAXRS,YAAY;IACZC,IAAI,GAUDV,KAAK,CAVRU,IAAI;IAAAC,qBAAA,GAUDX,KAAK,CATRY,kBAAkB;IAAlBA,kBAAkB,GAAAD,qBAAA,KAAA,MAAA,GAAG;AACpBE,MAAAA,QAAQ,EAAE,QAAQ;AAClBC,MAAAA,IAAI,EAAE,OAAO;AACbC,MAAAA,KAAK,EAAE;AACR,KAAC,GAAAJ,qBAAA;IAGDK,OAAO,GAEJhB,KAAK,CAFRgB,OAAO;AACJC,IAAAA,IAAI,GAAAC,wBAAA,CACJlB,KAAK,EAAAmB,SAAA,CAAA;AACT,EAAA,IAAMC,OAAO,GAAGC,UAAU,CAAC,kBAAkB,EAAEnB,SAAS,CAAC;AAEzD,EAAA,IAAMoB,gBAAgB,GAAGC,sBAAsB,CAAC,kBAAkB,EAAEP,OAAO,CAAC;;AAE5E;AACF;AACA;AACA;AACA;EACE,IAAMQ,aAAa,GAAIC,CAAuC,IAAK;AAClEH,IAAAA,gBAAgB,CAAC;AAChBI,MAAAA,MAAM,EAAE,OAAO;AACfC,MAAAA,OAAO,EAAElB,YAAY,GAAG,MAAM,GAAG;AAClC,KAAC,CAAC;AAEFF,IAAAA,OAAO,aAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAGkB,CAAC,CAAC;EACb,CAAC;AAED,EAAA,IAAIhB,YAAY,EAAE;IACjB,oBACCX,KAAA,CAAA8B,aAAA,CAACC,WAAW,EAAAC,QAAA,KAAKxB,aAAa,EAAA;AAAEJ,MAAAA,SAAS,EAAEkB,OAAQ;AAAC,MAAA,SAAA,EAASZ,EAAG;AAACD,MAAAA,OAAO,EAAEiB;KAAc,CAAA,eACvF1B,KAAA,CAAA8B,aAAA,CAAA,MAAA,EAAA;MAAM1B,SAAS,EAAE6B,MAAM,CAACC;AAAqB,KAAA,EAAE7B,IAAW,CAAC,EAC1DO,IACW,CAAC;AAEhB,EAAA;EAEA,oBACCZ,KAAA,CAAA8B,aAAA,CAACK,aAAa,EAAAH,QAAA,CAAA,EAAA,EACTb,IAAI,EACJL,kBAAkB,EAAA;AACtBV,IAAAA,SAAS,EAAEkB,OAAQ;AACnB,IAAA,SAAA,EAASZ,EAAG;AACZ,IAAA,aAAA,EAAaH,eAAe,GAAG,MAAM,GAAG6B,SAAU;AAClD/B,IAAAA,IAAI,EAAEA,IAAK;AACXI,IAAAA,OAAO,EAAEiB,aAAc;AACvBvB,IAAAA,GAAG,EAAEA,GAAI;AACTS,IAAAA,IAAI,EAAEA;AAAK,GAAA,CACX,CAAC;AAEJ,CACD;;;;"}
@@ -7,10 +7,11 @@ import classnames from 'classnames';
7
7
  import { useTooltipPosition } from '../useTooltipPosition/index.js';
8
8
  import { useTransition, animated } from '@react-spring/web';
9
9
  import { PORTAL_LAYERS } from '../../../utils/layers/index.js';
10
+ import { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics/useMrlAnalytics.js';
10
11
  import { getUniqueId } from '../../../utils/setAttributes/setAttributes.js';
11
12
  import { MrlPortal } from '../../portal/MrlPortal.js';
12
13
 
13
- var _excluded = ["children", "clickToClose", "disableTooltipHover", "display", "text", "attrs", "dataQa", "position", "anchor", "srAnnouncement", "tooltipClass", "tooltipContentClass"],
14
+ var _excluded = ["children", "clickToClose", "disableTooltipHover", "display", "text", "attrs", "dataQa", "position", "anchor", "srAnnouncement", "tooltipClass", "tooltipContentClass", "eventId"],
14
15
  _excluded2 = ["className", "onBlur", "onFocus", "onKeyDown", "onMouseOver", "onMouseOut", "onMouseUp", "children"];
15
16
  /**
16
17
  * MrlTooltip Component
@@ -40,7 +41,9 @@ var MrlTooltip = /*#__PURE__*/React.memo(props => {
40
41
  srAnnouncement = _props$srAnnouncement === void 0 ? true : _props$srAnnouncement,
41
42
  tooltipClass = props.tooltipClass,
42
43
  tooltipContentClass = props.tooltipContentClass,
44
+ eventId = props.eventId,
43
45
  rest = _objectWithoutProperties(props, _excluded);
46
+ var trackInteraction = useMrlTrackInteraction('MrlTooltip', eventId);
44
47
  var _React$useState = React.useState('mouse'),
45
48
  _React$useState2 = _slicedToArray(_React$useState, 2),
46
49
  interaction = _React$useState2[0],
@@ -64,6 +67,25 @@ var MrlTooltip = /*#__PURE__*/React.memo(props => {
64
67
  id = _React$useState6[0],
65
68
  setId = _React$useState6[1];
66
69
 
70
+ /**
71
+ * The tooltip shows and hides from hover, focus and click, so open/close is emitted
72
+ * from the resulting display state rather than from each individual handler.
73
+ */
74
+ var previousDisplayRef = React.useRef(defaultDisplay);
75
+ React.useEffect(() => {
76
+ if (previousDisplayRef.current === display) return;
77
+ previousDisplayRef.current = display;
78
+ trackInteraction({
79
+ action: display === 'show' ? 'open' : 'close',
80
+ metadata: {
81
+ interaction
82
+ },
83
+ variant: position
84
+ });
85
+ // `interaction` only annotates the event; it must not re-trigger it
86
+ // eslint-disable-next-line react-hooks/exhaustive-deps
87
+ }, [display, position, trackInteraction]);
88
+
67
89
  /**
68
90
  * Event handler to show tooltip when the trigger is focused
69
91
  */