@arbor-education/design-system.components 0.15.0 → 0.16.0

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 (297) hide show
  1. package/.gather/skills/write-stories/SKILL.md +207 -271
  2. package/.storybook/preview.ts +5 -0
  3. package/CHANGELOG.md +17 -0
  4. package/README.md +8 -0
  5. package/component-library.md +144 -13
  6. package/dist/components/articleCard/ArticleCard.stories.d.ts +137 -11
  7. package/dist/components/articleCard/ArticleCard.stories.d.ts.map +1 -1
  8. package/dist/components/articleCard/ArticleCard.stories.js +358 -91
  9. package/dist/components/articleCard/ArticleCard.stories.js.map +1 -1
  10. package/dist/components/avatar/Avatar.stories.d.ts +6 -6
  11. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  12. package/dist/components/avatar/Avatar.stories.js +393 -49
  13. package/dist/components/avatar/Avatar.stories.js.map +1 -1
  14. package/dist/components/avatarGroup/AvatarGroup.stories.d.ts +9 -7
  15. package/dist/components/avatarGroup/AvatarGroup.stories.d.ts.map +1 -1
  16. package/dist/components/avatarGroup/AvatarGroup.stories.js +688 -65
  17. package/dist/components/avatarGroup/AvatarGroup.stories.js.map +1 -1
  18. package/dist/components/banner/Banner.stories.d.ts.map +1 -1
  19. package/dist/components/banner/Banner.stories.js +7 -3
  20. package/dist/components/banner/Banner.stories.js.map +1 -1
  21. package/dist/components/card/Card.stories.d.ts +105 -4
  22. package/dist/components/card/Card.stories.d.ts.map +1 -1
  23. package/dist/components/card/Card.stories.js +336 -18
  24. package/dist/components/card/Card.stories.js.map +1 -1
  25. package/dist/components/combobox/Combobox.stories.d.ts +134 -21
  26. package/dist/components/combobox/Combobox.stories.d.ts.map +1 -1
  27. package/dist/components/combobox/Combobox.stories.js +676 -175
  28. package/dist/components/combobox/Combobox.stories.js.map +1 -1
  29. package/dist/components/datePicker/DatePicker.stories.d.ts +119 -27
  30. package/dist/components/datePicker/DatePicker.stories.d.ts.map +1 -1
  31. package/dist/components/datePicker/DatePicker.stories.js +575 -47
  32. package/dist/components/datePicker/DatePicker.stories.js.map +1 -1
  33. package/dist/components/dateTimePicker/DateTimePicker.stories.d.ts +155 -39
  34. package/dist/components/dateTimePicker/DateTimePicker.stories.d.ts.map +1 -1
  35. package/dist/components/dateTimePicker/DateTimePicker.stories.js +674 -103
  36. package/dist/components/dateTimePicker/DateTimePicker.stories.js.map +1 -1
  37. package/dist/components/editableText/EditableText.stories.d.ts +53 -12
  38. package/dist/components/editableText/EditableText.stories.d.ts.map +1 -1
  39. package/dist/components/editableText/EditableText.stories.js +401 -64
  40. package/dist/components/editableText/EditableText.stories.js.map +1 -1
  41. package/dist/components/formField/FormField.d.ts +4 -0
  42. package/dist/components/formField/FormField.d.ts.map +1 -1
  43. package/dist/components/formField/FormField.js +2 -1
  44. package/dist/components/formField/FormField.js.map +1 -1
  45. package/dist/components/formField/FormField.test.js +5 -0
  46. package/dist/components/formField/FormField.test.js.map +1 -1
  47. package/dist/components/formField/fieldset/Fieldset.stories.d.ts +56 -4
  48. package/dist/components/formField/fieldset/Fieldset.stories.d.ts.map +1 -1
  49. package/dist/components/formField/fieldset/Fieldset.stories.js +534 -28
  50. package/dist/components/formField/fieldset/Fieldset.stories.js.map +1 -1
  51. package/dist/components/formField/inputs/checkbox/CheckboxGroup.d.ts +3 -1
  52. package/dist/components/formField/inputs/checkbox/CheckboxGroup.d.ts.map +1 -1
  53. package/dist/components/formField/inputs/checkbox/CheckboxInput.js +1 -1
  54. package/dist/components/formField/inputs/checkbox/CheckboxInput.js.map +1 -1
  55. package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.d.ts +95 -1
  56. package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.d.ts.map +1 -1
  57. package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.js +386 -9
  58. package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.js.map +1 -1
  59. package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts +6 -2
  60. package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts.map +1 -1
  61. package/dist/components/formField/inputs/radio/RadioButtonGroup.js.map +1 -1
  62. package/dist/components/formField/inputs/radio/RadioButtonInput.stories.d.ts.map +1 -1
  63. package/dist/components/formField/inputs/radio/RadioButtonInput.stories.js +61 -49
  64. package/dist/components/formField/inputs/radio/RadioButtonInput.stories.js.map +1 -1
  65. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.d.ts +188 -166
  66. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.d.ts.map +1 -1
  67. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.js +821 -160
  68. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.js.map +1 -1
  69. package/dist/components/formField/inputs/time/TimeInput.stories.d.ts +176 -22
  70. package/dist/components/formField/inputs/time/TimeInput.stories.d.ts.map +1 -1
  71. package/dist/components/formField/inputs/time/TimeInput.stories.js +851 -92
  72. package/dist/components/formField/inputs/time/TimeInput.stories.js.map +1 -1
  73. package/dist/components/formField/label/Label.stories.d.ts +54 -5
  74. package/dist/components/formField/label/Label.stories.d.ts.map +1 -1
  75. package/dist/components/formField/label/Label.stories.js +238 -4
  76. package/dist/components/formField/label/Label.stories.js.map +1 -1
  77. package/dist/components/icoText/IcoText.stories.d.ts +32 -6
  78. package/dist/components/icoText/IcoText.stories.d.ts.map +1 -1
  79. package/dist/components/icoText/IcoText.stories.js +309 -14
  80. package/dist/components/icoText/IcoText.stories.js.map +1 -1
  81. package/dist/components/kpiCard/KPICard.stories.d.ts +100 -2
  82. package/dist/components/kpiCard/KPICard.stories.d.ts.map +1 -1
  83. package/dist/components/kpiCard/KPICard.stories.js +354 -10
  84. package/dist/components/kpiCard/KPICard.stories.js.map +1 -1
  85. package/dist/components/kvpList/KVPList.stories.d.ts +57 -4
  86. package/dist/components/kvpList/KVPList.stories.d.ts.map +1 -1
  87. package/dist/components/kvpList/KVPList.stories.js +403 -10
  88. package/dist/components/kvpList/KVPList.stories.js.map +1 -1
  89. package/dist/components/modal/Modal.stories.d.ts +113 -9
  90. package/dist/components/modal/Modal.stories.d.ts.map +1 -1
  91. package/dist/components/modal/Modal.stories.js +633 -13
  92. package/dist/components/modal/Modal.stories.js.map +1 -1
  93. package/dist/components/modal/modalManager/ModalManager.stories.d.ts +34 -10
  94. package/dist/components/modal/modalManager/ModalManager.stories.d.ts.map +1 -1
  95. package/dist/components/modal/modalManager/ModalManager.stories.js +463 -85
  96. package/dist/components/modal/modalManager/ModalManager.stories.js.map +1 -1
  97. package/dist/components/pill/Pill.d.ts.map +1 -1
  98. package/dist/components/pill/Pill.js +1 -1
  99. package/dist/components/pill/Pill.js.map +1 -1
  100. package/dist/components/pill/Pill.stories.d.ts.map +1 -1
  101. package/dist/components/pill/Pill.stories.js +11 -13
  102. package/dist/components/pill/Pill.stories.js.map +1 -1
  103. package/dist/components/row/Row.stories.d.ts +1 -2
  104. package/dist/components/row/Row.stories.d.ts.map +1 -1
  105. package/dist/components/row/Row.stories.js +360 -50
  106. package/dist/components/row/Row.stories.js.map +1 -1
  107. package/dist/components/searchBar/SearchBar.stories.d.ts +52 -4
  108. package/dist/components/searchBar/SearchBar.stories.d.ts.map +1 -1
  109. package/dist/components/searchBar/SearchBar.stories.js +428 -36
  110. package/dist/components/searchBar/SearchBar.stories.js.map +1 -1
  111. package/dist/components/section/Section.stories.d.ts +11 -41
  112. package/dist/components/section/Section.stories.d.ts.map +1 -1
  113. package/dist/components/section/Section.stories.js +494 -56
  114. package/dist/components/section/Section.stories.js.map +1 -1
  115. package/dist/components/singleUser/SingleUser.stories.d.ts +5 -4
  116. package/dist/components/singleUser/SingleUser.stories.d.ts.map +1 -1
  117. package/dist/components/singleUser/SingleUser.stories.js +303 -31
  118. package/dist/components/singleUser/SingleUser.stories.js.map +1 -1
  119. package/dist/components/slideoverManager/SlideoverManager.stories.d.ts +32 -11
  120. package/dist/components/slideoverManager/SlideoverManager.stories.d.ts.map +1 -1
  121. package/dist/components/slideoverManager/SlideoverManager.stories.js +380 -84
  122. package/dist/components/slideoverManager/SlideoverManager.stories.js.map +1 -1
  123. package/dist/components/table/DSDefaultColDef.d.ts.map +1 -1
  124. package/dist/components/table/DSDefaultColDef.js +4 -3
  125. package/dist/components/table/DSDefaultColDef.js.map +1 -1
  126. package/dist/components/table/Table.d.ts +6 -1
  127. package/dist/components/table/Table.d.ts.map +1 -1
  128. package/dist/components/table/Table.js +8 -3
  129. package/dist/components/table/Table.js.map +1 -1
  130. package/dist/components/table/Table.stories.d.ts +2 -0
  131. package/dist/components/table/Table.stories.d.ts.map +1 -1
  132. package/dist/components/table/Table.stories.js +357 -3
  133. package/dist/components/table/Table.stories.js.map +1 -1
  134. package/dist/components/table/TableFooter.stories.d.ts +49 -0
  135. package/dist/components/table/TableFooter.stories.d.ts.map +1 -0
  136. package/dist/components/table/TableFooter.stories.js +137 -0
  137. package/dist/components/table/TableFooter.stories.js.map +1 -0
  138. package/dist/components/table/TableHeader.stories.d.ts +93 -0
  139. package/dist/components/table/TableHeader.stories.d.ts.map +1 -0
  140. package/dist/components/table/TableHeader.stories.js +176 -0
  141. package/dist/components/table/TableHeader.stories.js.map +1 -0
  142. package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts +44 -0
  143. package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts.map +1 -0
  144. package/dist/components/table/cellEditors/DateCellEditor.stories.js +186 -0
  145. package/dist/components/table/cellEditors/DateCellEditor.stories.js.map +1 -0
  146. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts +40 -0
  147. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts.map +1 -0
  148. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js +209 -0
  149. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js.map +1 -0
  150. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts +48 -0
  151. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts.map +1 -0
  152. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js +244 -0
  153. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js.map +1 -0
  154. package/dist/components/table/cellRenderers/CheckboxCellRenderer.d.ts.map +1 -1
  155. package/dist/components/table/cellRenderers/CheckboxCellRenderer.js +3 -1
  156. package/dist/components/table/cellRenderers/CheckboxCellRenderer.js.map +1 -1
  157. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts +64 -0
  158. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts.map +1 -0
  159. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js +241 -0
  160. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js.map +1 -0
  161. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.d.ts +55 -0
  162. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.d.ts.map +1 -0
  163. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.js +245 -0
  164. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.js.map +1 -0
  165. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts +67 -0
  166. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts.map +1 -0
  167. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js +221 -0
  168. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js.map +1 -0
  169. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts +75 -0
  170. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts.map +1 -0
  171. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js +270 -0
  172. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js.map +1 -0
  173. package/dist/components/table/columnFilters/BooleanFilter.stories.d.ts +57 -0
  174. package/dist/components/table/columnFilters/BooleanFilter.stories.d.ts.map +1 -0
  175. package/dist/components/table/columnFilters/BooleanFilter.stories.js +198 -0
  176. package/dist/components/table/columnFilters/BooleanFilter.stories.js.map +1 -0
  177. package/dist/components/table/columnFilters/TimeFilter.stories.d.ts +58 -0
  178. package/dist/components/table/columnFilters/TimeFilter.stories.d.ts.map +1 -0
  179. package/dist/components/table/columnFilters/TimeFilter.stories.js +207 -0
  180. package/dist/components/table/columnFilters/TimeFilter.stories.js.map +1 -0
  181. package/dist/components/table/pagination/PaginationPanel.stories.d.ts +113 -0
  182. package/dist/components/table/pagination/PaginationPanel.stories.d.ts.map +1 -0
  183. package/dist/components/table/pagination/PaginationPanel.stories.js +272 -0
  184. package/dist/components/table/pagination/PaginationPanel.stories.js.map +1 -0
  185. package/dist/components/table/tableControls/TableControls.stories.d.ts +151 -0
  186. package/dist/components/table/tableControls/TableControls.stories.d.ts.map +1 -0
  187. package/dist/components/table/tableControls/TableControls.stories.js +356 -0
  188. package/dist/components/table/tableControls/TableControls.stories.js.map +1 -0
  189. package/dist/components/table/tableControls/TableSettingsDropdown.d.ts +27 -1
  190. package/dist/components/table/tableControls/TableSettingsDropdown.d.ts.map +1 -1
  191. package/dist/components/table/tableControls/TableSettingsDropdown.js +53 -26
  192. package/dist/components/table/tableControls/TableSettingsDropdown.js.map +1 -1
  193. package/dist/components/table/tableControls/TableSettingsDropdown.test.d.ts +2 -0
  194. package/dist/components/table/tableControls/TableSettingsDropdown.test.d.ts.map +1 -0
  195. package/dist/components/table/tableControls/TableSettingsDropdown.test.js +178 -0
  196. package/dist/components/table/tableControls/TableSettingsDropdown.test.js.map +1 -0
  197. package/dist/components/tabs/Tabs.stories.d.ts +22 -4
  198. package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
  199. package/dist/components/tabs/Tabs.stories.js +398 -22
  200. package/dist/components/tabs/Tabs.stories.js.map +1 -1
  201. package/dist/components/tabs/TabsItem.stories.d.ts +54 -1
  202. package/dist/components/tabs/TabsItem.stories.d.ts.map +1 -1
  203. package/dist/components/tabs/TabsItem.stories.js +61 -9
  204. package/dist/components/tabs/TabsItem.stories.js.map +1 -1
  205. package/dist/components/toast/Toast.stories.d.ts +103 -10
  206. package/dist/components/toast/Toast.stories.d.ts.map +1 -1
  207. package/dist/components/toast/Toast.stories.js +409 -47
  208. package/dist/components/toast/Toast.stories.js.map +1 -1
  209. package/dist/components/toggle/Toggle.stories.d.ts +61 -46
  210. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
  211. package/dist/components/toggle/Toggle.stories.js +311 -122
  212. package/dist/components/toggle/Toggle.stories.js.map +1 -1
  213. package/dist/components/tooltip/Tooltip.stories.d.ts +78 -6
  214. package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
  215. package/dist/components/tooltip/Tooltip.stories.js +413 -7
  216. package/dist/components/tooltip/Tooltip.stories.js.map +1 -1
  217. package/dist/components/tooltip/TooltipWrapper.stories.d.ts +71 -7
  218. package/dist/components/tooltip/TooltipWrapper.stories.d.ts.map +1 -1
  219. package/dist/components/tooltip/TooltipWrapper.stories.js +238 -10
  220. package/dist/components/tooltip/TooltipWrapper.stories.js.map +1 -1
  221. package/dist/index.css +8 -0
  222. package/dist/index.css.map +1 -1
  223. package/dist/utils/PopupParentContext.stories.d.ts +17 -0
  224. package/dist/utils/PopupParentContext.stories.d.ts.map +1 -0
  225. package/dist/utils/PopupParentContext.stories.js +266 -0
  226. package/dist/utils/PopupParentContext.stories.js.map +1 -0
  227. package/dist/utils/getDefaultPopupParent.d.ts.map +1 -1
  228. package/dist/utils/getDefaultPopupParent.js +6 -0
  229. package/dist/utils/getDefaultPopupParent.js.map +1 -1
  230. package/package.json +1 -1
  231. package/src/components/articleCard/ArticleCard.stories.tsx +524 -111
  232. package/src/components/avatar/Avatar.stories.tsx +504 -59
  233. package/src/components/avatarGroup/AvatarGroup.stories.tsx +977 -175
  234. package/src/components/banner/Banner.stories.tsx +7 -3
  235. package/src/components/card/Card.stories.tsx +466 -36
  236. package/src/components/combobox/Combobox.stories.tsx +867 -260
  237. package/src/components/datePicker/DatePicker.stories.tsx +777 -60
  238. package/src/components/dateTimePicker/DateTimePicker.stories.tsx +910 -132
  239. package/src/components/editableText/EditableText.stories.tsx +567 -91
  240. package/src/components/formField/FormField.test.tsx +6 -0
  241. package/src/components/formField/FormField.tsx +5 -0
  242. package/src/components/formField/fieldset/Fieldset.stories.tsx +761 -51
  243. package/src/components/formField/inputs/checkbox/CheckboxGroup.tsx +1 -1
  244. package/src/components/formField/inputs/checkbox/CheckboxInput.tsx +1 -1
  245. package/src/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.tsx +504 -11
  246. package/src/components/formField/inputs/radio/RadioButtonGroup.tsx +17 -4
  247. package/src/components/formField/inputs/radio/RadioButtonInput.stories.tsx +71 -59
  248. package/src/components/formField/inputs/selectDropdown/SelectDropdown.stories.tsx +1079 -168
  249. package/src/components/formField/inputs/time/TimeInput.stories.tsx +1140 -104
  250. package/src/components/formField/label/Label.stories.tsx +317 -8
  251. package/src/components/icoText/IcoText.stories.tsx +442 -31
  252. package/src/components/kpiCard/KPICard.stories.tsx +475 -30
  253. package/src/components/kvpList/KVPList.stories.tsx +593 -26
  254. package/src/components/modal/Modal.stories.tsx +963 -26
  255. package/src/components/modal/modalManager/ModalManager.stories.tsx +612 -454
  256. package/src/components/pill/Pill.stories.tsx +11 -13
  257. package/src/components/pill/Pill.tsx +1 -0
  258. package/src/components/row/Row.stories.tsx +474 -58
  259. package/src/components/searchBar/SearchBar.stories.tsx +570 -38
  260. package/src/components/section/Section.stories.tsx +723 -70
  261. package/src/components/singleUser/SingleUser.stories.tsx +393 -34
  262. package/src/components/slideoverManager/SlideoverManager.stories.tsx +572 -342
  263. package/src/components/table/DSDefaultColDef.ts +25 -5
  264. package/src/components/table/Table.stories.tsx +411 -3
  265. package/src/components/table/Table.tsx +9 -2
  266. package/src/components/table/TableFooter.stories.tsx +196 -0
  267. package/src/components/table/TableHeader.stories.tsx +251 -0
  268. package/src/components/table/cellEditors/DateCellEditor.stories.tsx +245 -0
  269. package/src/components/table/cellRenderers/BooleanCellRenderer.stories.tsx +278 -0
  270. package/src/components/table/cellRenderers/ButtonCellRenderer.stories.tsx +333 -0
  271. package/src/components/table/cellRenderers/CheckboxCellRenderer.stories.tsx +337 -0
  272. package/src/components/table/cellRenderers/CheckboxCellRenderer.tsx +5 -1
  273. package/src/components/table/cellRenderers/DefaultCellRenderer.stories.tsx +342 -0
  274. package/src/components/table/cellRenderers/InlineTextCellRenderer.stories.tsx +292 -0
  275. package/src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx +369 -0
  276. package/src/components/table/columnFilters/BooleanFilter.stories.tsx +268 -0
  277. package/src/components/table/columnFilters/TimeFilter.stories.tsx +281 -0
  278. package/src/components/table/pagination/PaginationPanel.stories.tsx +327 -0
  279. package/src/components/table/tableControls/TableControls.stories.tsx +415 -0
  280. package/src/components/table/tableControls/TableSettingsDropdown.test.tsx +207 -0
  281. package/src/components/table/tableControls/TableSettingsDropdown.tsx +103 -39
  282. package/src/components/tabs/Tabs.stories.tsx +540 -60
  283. package/src/components/tabs/TabsItem.stories.tsx +82 -8
  284. package/src/components/toast/Toast.stories.tsx +539 -77
  285. package/src/components/toggle/Toggle.stories.tsx +371 -135
  286. package/src/components/tooltip/Tooltip.stories.tsx +606 -15
  287. package/src/components/tooltip/TooltipWrapper.stories.tsx +348 -12
  288. package/src/docs/Contributing.mdx +241 -0
  289. package/src/docs/UsingComponents.mdx +93 -0
  290. package/src/docs/Welcome.mdx +68 -0
  291. package/src/global.scss +7 -0
  292. package/src/utils/PopupParentContext.stories.tsx +367 -0
  293. package/src/utils/getDefaultPopupParent.ts +6 -0
  294. package/.ralph/storybook-upgrade/knowledge.md +0 -308
  295. package/.ralph/storybook-upgrade/prd.json +0 -777
  296. package/.ralph/storybook-upgrade/progress.md +0 -342
  297. package/src/components/table/TableWIP.mdx +0 -3
@@ -1,4 +1,10 @@
1
- import type { CellClassParams, CellFocusedParams, ColDef, SuppressMouseEventHandlingParams, ValueFormatterFunc } from 'ag-grid-community';
1
+ import type {
2
+ CellClassParams,
3
+ CellFocusedParams,
4
+ ColDef,
5
+ SuppressMouseEventHandlingParams,
6
+ ValueFormatterFunc,
7
+ } from 'ag-grid-community';
2
8
  import { cellColorStyles } from './cellColorStyles';
3
9
 
4
10
  // checks if the value is wrapped in a object with a value property
@@ -15,17 +21,28 @@ export const defaultValueFormatter: ValueFormatterFunc = (params) => {
15
21
  return value;
16
22
  };
17
23
 
18
- export const shouldSuppressFocus = (params: SuppressMouseEventHandlingParams | CellClassParams | CellFocusedParams) => {
24
+ export const shouldSuppressFocus = (
25
+ params:
26
+ | SuppressMouseEventHandlingParams
27
+ | CellClassParams
28
+ | CellFocusedParams,
29
+ ) => {
19
30
  if (typeof params.column !== 'object') {
20
31
  return false;
21
32
  }
22
- return params.column?.getColDef().cellRendererParams.suppressCellFocusAndFocusFirstElement ?? false;
33
+ return (
34
+ params.column?.getColDef()?.cellRendererParams
35
+ ?.suppressCellFocusAndFocusFirstElement ?? false
36
+ );
23
37
  };
24
38
 
25
39
  export const DSDefaultColDef: ColDef = {
26
40
  cellStyle: cellColorStyles,
27
41
  valueGetter: (params) => {
28
- const { data, colDef: { field } } = params;
42
+ const {
43
+ data,
44
+ colDef: { field },
45
+ } = params;
29
46
  if (data == null || field == null) {
30
47
  return undefined;
31
48
  }
@@ -33,7 +50,10 @@ export const DSDefaultColDef: ColDef = {
33
50
  },
34
51
  valueFormatter: defaultValueFormatter,
35
52
  filterValueGetter: (params) => {
36
- const { data, colDef: { field } } = params;
53
+ const {
54
+ data,
55
+ colDef: { field },
56
+ } = params;
37
57
  if (data == null || field == null) {
38
58
  return undefined;
39
59
  }
@@ -1,4 +1,13 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import {
3
+ Controls,
4
+ Heading as DocHeading,
5
+ Markdown,
6
+ Primary as DocPrimary,
7
+ Stories,
8
+ Subtitle,
9
+ Title,
10
+ } from '@storybook/addon-docs/blocks';
2
11
  import { type Column, type ColDef, type ColGroupDef } from 'ag-grid-enterprise';
3
12
  import { Table } from './Table';
4
13
  import { Button } from 'Components/button/Button';
@@ -24,15 +33,344 @@ import type { CustomCellRendererProps } from 'ag-grid-react';
24
33
 
25
34
  type TableProps = ComponentProps<typeof Table>;
26
35
 
36
+ // ---------------------------------------------------------------------------
37
+ // Content strings for the custom DocsPage
38
+ // ---------------------------------------------------------------------------
39
+
40
+ const DESCRIPTION_INTRO = [
41
+ '`Table` is an enterprise-grade data table built on top of [AG Grid React](https://www.ag-grid.com/react-data-grid/).',
42
+ 'It wraps `AgGridReact` with Arbor design tokens, a custom theme, built-in search, pagination, bulk actions,',
43
+ 'hide-columns, and a suite of custom cell renderers and column filters.',
44
+ 'All AG Grid props pass through via `...rest`, so the full AG Grid API is available.',
45
+ ].join(' ');
46
+
47
+ const PROPS_INTRO
48
+ = 'The preview below is wired to the **Controls** panel — tweak any DS-specific prop to see the story update in real time.';
49
+
50
+ const USAGE_GUIDANCE = [
51
+ '### When to use',
52
+ '',
53
+ '- Displaying large, structured datasets where users need to sort, filter, search, or paginate.',
54
+ '- Any screen in Arbor that renders rows of records (pupil lists, staff registers, attendance grids, marksheets).',
55
+ '- When cells need interactive controls — buttons, dropdowns, checkboxes, date pickers.',
56
+ '- When column visibility, row selection, and bulk actions are required.',
57
+ '',
58
+ '---',
59
+ '',
60
+ '### When NOT to use',
61
+ '',
62
+ '| Situation | Use instead |',
63
+ '|---|---|',
64
+ '| A small read-only list of key–value pairs | [`Section`](?path=/docs/components-section--docs) with [`Row`](?path=/docs/components-row--docs) components |',
65
+ '| A two-column data summary (label + value) | [`Row`](?path=/docs/components-row--docs) inside a `Section` |',
66
+ '| Simple static HTML tables | Native `<table>` with semantic markup |',
67
+ '| A handful of rows that never change | Native `<table>` — AG Grid has overhead |',
68
+ ].join('\n');
69
+
70
+ const DEVELOPER_NOTES = [
71
+ '### AG Grid license',
72
+ '',
73
+ '`setAgGridLicenseKey()` is called automatically inside the `Table` component.',
74
+ 'You do **not** need to call it yourself.',
75
+ '',
76
+ '---',
77
+ '',
78
+ '### Registered cell renderers',
79
+ '',
80
+ 'These string keys are pre-registered and available in any `cellRenderer` or `cellRendererParams`:',
81
+ '',
82
+ '| Key | Component | Purpose |',
83
+ '|---|---|---|',
84
+ '| `dsButtonCellRenderer` | `Table.ButtonCellRenderer` | Renders a `Button` inside a cell |',
85
+ '| `dsInlineTextCellRenderer` | `Table.InlineTextCellRenderer` | Inline text editing with expand/collapse support |',
86
+ '| `dsSelectDropdownCellRenderer` | `Table.SelectDropdownCellRenderer` | Renders a `SelectDropdown` in a cell |',
87
+ '| `dsBooleanCellRenderer` | `Table.BooleanCellRenderer` | Read-only boolean display |',
88
+ '| `dsCheckboxCellRenderer` | `Table.CheckboxCellRenderer` | Editable boolean checkbox |',
89
+ '| `dsDateCellEditor` | `Table.DateCellEditor` | Date picker cell editor |',
90
+ '',
91
+ '---',
92
+ '',
93
+ '### Registered column filters',
94
+ '',
95
+ '| Import | `doesFilterPass` helper | Use case |',
96
+ '|---|---|---|',
97
+ '| `BooleanFilter` | `doesBooleanFilterPass` | Filtering boolean / active columns |',
98
+ '| `TimeFilter` | `doesTimeFilterPass` | Filtering time string columns |',
99
+ '',
100
+ '---',
101
+ '',
102
+ '### Header and footer slots',
103
+ '',
104
+ '- `headerContent` — pass any `ReactNode` here; the `<TableHeader>` wraps it with a built-in search bar.',
105
+ ' Use `Table.TableControls` for the standard toolbar (bulk actions, hide columns, settings, download, help, expand).',
106
+ '- `hasSearch` (default `true`) — controls whether the search bar is rendered inside the header.',
107
+ ' Set to `false` when the header has no search functionality.',
108
+ '- `footerContent` — pass any `ReactNode` here; the `<TableFooter>` wraps it.',
109
+ ' Use `Table.PaginationPanel` for standard pagination.',
110
+ '',
111
+ '---',
112
+ '',
113
+ '### TableSettingsDropdown customisation',
114
+ '',
115
+ '`Table.TableSettingsDropdown` accepts an optional `items` prop to control which controls are shown and in what order.',
116
+ 'Omit `items` (or omit any key) to hide that control entirely.',
117
+ '',
118
+ '```tsx',
119
+ '// Built-in keys — use any subset in any order:',
120
+ '<Table.TableSettingsDropdown items={[\'tableSpacing\', \'separator\', \'style\']} />',
121
+ '',
122
+ '// Custom checkbox group:',
123
+ '<Table.TableSettingsDropdown items={[',
124
+ ' \'tableSpacing\',',
125
+ ' { type: \'checkboxGroup\', legend: \'View options\', options: [',
126
+ ' { label: \'Show inactive\', checked: showInactive, onChange: setShowInactive },',
127
+ ' ] },',
128
+ ']} />',
129
+ '',
130
+ '// Custom radio group:',
131
+ '<Table.TableSettingsDropdown items={[',
132
+ ' { type: \'radioGroup\', legend: \'Display\', name: \'display\', checkedValue: view, onChange: setView,',
133
+ ' options: [{ label: \'Compact\', value: \'compact\' }, { label: \'Default\', value: \'default\' }] },',
134
+ ']} />',
135
+ '```',
136
+ '',
137
+ 'Use `Table.SettingsItems` to access the default items array and extend it:',
138
+ '',
139
+ '```tsx',
140
+ 'const myItems = [...Table.SettingsItems, { type: \'checkboxGroup\', options: [...] }];',
141
+ '<Table.TableSettingsDropdown items={myItems} />',
142
+ '```',
143
+ '',
144
+ 'Use `onTableSettingsReset` on `Table` to reset your custom state when the reset button is clicked.',
145
+ '',
146
+ '---',
147
+ '',
148
+ '### Themes',
149
+ '',
150
+ '| Value | Description |',
151
+ '|---|---|',
152
+ '| _(omit)_ | Default Arbor table theme with full spacing and borders |',
153
+ '| `"tidy"` | Compact theme for dense layouts like marksheets. Suppresses expand/collapse icons. |',
154
+ '',
155
+ '---',
156
+ '',
157
+ '### Table spacing',
158
+ '',
159
+ 'Use `Table.Spacing` (enum `TABLE_SPACING`) when handling `onTableSpacingChanged`:',
160
+ '',
161
+ '```ts',
162
+ "import { Table } from '@arbor-education/design-system.components';",
163
+ '',
164
+ '// Table.Spacing values:',
165
+ '// Table.Spacing.XS → 0',
166
+ '// Table.Spacing.S → var(--spacing-xsmall)',
167
+ '// Table.Spacing.M → var(--spacing-small) ← default',
168
+ '// Table.Spacing.L → var(--spacing-medium)',
169
+ '```',
170
+ '',
171
+ '---',
172
+ '',
173
+ '### GridApiContext',
174
+ '',
175
+ 'Child components that need the AG Grid `GridApi` can consume `Table.GridApiContext`:',
176
+ '',
177
+ '```tsx',
178
+ "import { useContext } from 'react';",
179
+ "import { Table } from '@arbor-education/design-system.components';",
180
+ '',
181
+ 'function MyTableChild() {',
182
+ ' const gridApi = useContext(Table.GridApiContext);',
183
+ ' return <button onClick={() => gridApi?.exportDataAsCsv()}>Export</button>;',
184
+ '}',
185
+ '```',
186
+ '',
187
+ '---',
188
+ '',
189
+ '### DefaultColDef and DefaultValueFormatter',
190
+ '',
191
+ '`Table.DefaultColDef` contains Arbor defaults (editable, sortable, resizable, min-width, flex).',
192
+ 'Spread it into your `defaultColDef` and add overrides:',
193
+ '',
194
+ '```ts',
195
+ 'const defaultColDef = {',
196
+ ' ...Table.DefaultColDef,',
197
+ ' editable: false, // override',
198
+ '};',
199
+ '```',
200
+ '',
201
+ '`Table.DefaultValueFormatter` handles the `{ value: string }` cell data shape.',
202
+ 'Any column using the object cell shape (`{ value, backgroundColor, foregroundColor, semanticColor }`) **must** use this formatter.',
203
+ '',
204
+ '---',
205
+ '',
206
+ '### TypeScript types',
207
+ '',
208
+ '```ts',
209
+ "import { Table } from '@arbor-education/design-system.components';",
210
+ "import type { TableProps, TableControlsProps, BulkAction, HideColumnsProps } from '@arbor-education/design-system.components';",
211
+ '',
212
+ '// or via namespace:',
213
+ 'type MyTableProps = Table.Props;',
214
+ 'type MyControlsProps = Table.ControlsProps;',
215
+ 'type MyBulkAction = Table.BulkAction;',
216
+ 'type MySpacing = Table.Spacing;',
217
+ '',
218
+ '// Table.SettingsItems — the default settings items array (spread to extend):',
219
+ 'const myItems = [...Table.SettingsItems, { type: \'checkboxGroup\' as const, options: [] }];',
220
+ '```',
221
+ ].join('\n');
222
+
223
+ const RELATED_COMPONENTS = [
224
+ '## Related components',
225
+ '',
226
+ '[Section](?path=/docs/components-section--docs) · [Row](?path=/docs/components-row--docs) · [Button](?path=/docs/components-button--docs) · [SelectDropdown](?path=/docs/components-selectdropdown--docs)',
227
+ ].join('\n');
228
+
229
+ // ---------------------------------------------------------------------------
230
+ // Custom DocsPage
231
+ // ---------------------------------------------------------------------------
232
+
233
+ function TableDocsPage() {
234
+ return (
235
+ <>
236
+ <Title />
237
+ <Subtitle />
238
+ <Markdown>{DESCRIPTION_INTRO}</Markdown>
239
+ <DocHeading>Interactive example</DocHeading>
240
+ <Markdown>{PROPS_INTRO}</Markdown>
241
+ <DocPrimary />
242
+ <Controls />
243
+ <DocHeading>Usage guidance</DocHeading>
244
+ <Markdown>{USAGE_GUIDANCE}</Markdown>
245
+ <DocHeading>Developer notes</DocHeading>
246
+ <Markdown>{DEVELOPER_NOTES}</Markdown>
247
+ <DocHeading>Examples</DocHeading>
248
+ <Stories title="" />
249
+ <Markdown>{RELATED_COMPONENTS}</Markdown>
250
+ </>
251
+ );
252
+ }
253
+
254
+ // ---------------------------------------------------------------------------
255
+ // Meta
256
+ // ---------------------------------------------------------------------------
257
+
27
258
  const meta: Meta<TableProps> = {
28
259
  title: 'Components/Table',
29
260
  component: Table,
30
261
  tags: ['autodocs'],
31
262
  parameters: {
263
+ layout: 'padded',
32
264
  docs: {
33
- description: {
34
- component:
35
- 'The Table component is a wrapper around the ag-grid-react component. It provides a set of props that can be used to configure the table.',
265
+ page: TableDocsPage,
266
+ },
267
+ },
268
+ argTypes: {
269
+ wrapperClassName: {
270
+ description: 'Additional CSS class names applied to the root `<section>` wrapper.',
271
+ control: 'text',
272
+ table: {
273
+ type: { summary: 'string' },
274
+ defaultValue: { summary: 'undefined' },
275
+ },
276
+ },
277
+ hasSearch: {
278
+ description: [
279
+ 'When `true` (the default) a quick-filter search bar is rendered inside the header area.',
280
+ 'Set to `false` when using `headerContent` without a search requirement,',
281
+ 'or when you want to suppress the search bar entirely.',
282
+ ].join(' '),
283
+ control: 'boolean',
284
+ table: {
285
+ type: { summary: 'boolean' },
286
+ defaultValue: { summary: 'true' },
287
+ },
288
+ },
289
+ headerContent: {
290
+ description: [
291
+ 'ReactNode rendered inside the `<TableHeader>` above the grid.',
292
+ 'Use `Table.TableControls` for the standard composed toolbar.',
293
+ 'The built-in search bar appears here when `hasSearch` is `true`.',
294
+ ].join(' '),
295
+ control: false,
296
+ table: {
297
+ type: { summary: 'ReactNode' },
298
+ defaultValue: { summary: 'undefined' },
299
+ },
300
+ },
301
+ footerContent: {
302
+ description: [
303
+ 'ReactNode rendered inside the `<TableFooter>` below the grid.',
304
+ 'Use `Table.PaginationPanel` for standard client-side or server-side pagination.',
305
+ ].join(' '),
306
+ control: false,
307
+ table: {
308
+ type: { summary: 'ReactNode' },
309
+ defaultValue: { summary: 'undefined' },
310
+ },
311
+ },
312
+ tableTheme: {
313
+ description: [
314
+ 'Visual theme for the grid.',
315
+ 'Pass `"tidy"` for the compact marksheet-style theme.',
316
+ 'Omit (or pass `undefined`) for the default Arbor table theme.',
317
+ ].join(' '),
318
+ control: 'select',
319
+ options: [undefined, 'tidy'],
320
+ table: {
321
+ type: { summary: "'tidy' | undefined" },
322
+ defaultValue: { summary: 'undefined' },
323
+ },
324
+ },
325
+ enableSimultaneousRangeAndRowSelection: {
326
+ description: [
327
+ 'When `true`, allows both cell-range selection and row selection to be active at the same time.',
328
+ 'Default `false` — drag selection clears row selection.',
329
+ ].join(' '),
330
+ control: 'boolean',
331
+ table: {
332
+ type: { summary: 'boolean' },
333
+ defaultValue: { summary: 'false' },
334
+ },
335
+ },
336
+ disableDragSelect: {
337
+ description: 'When `true`, disables drag-to-select behaviour on cell range selection.',
338
+ control: 'boolean',
339
+ table: {
340
+ type: { summary: 'boolean' },
341
+ defaultValue: { summary: 'false' },
342
+ },
343
+ },
344
+ onTableSettingsChanged: {
345
+ description: 'Fired when the user changes table settings (column borders, spacing, cell colours) via the settings dropdown.',
346
+ control: false,
347
+ table: {
348
+ type: { summary: '(settings: TableSettings) => void' },
349
+ defaultValue: { summary: 'undefined' },
350
+ },
351
+ },
352
+ onTableSpacingChanged: {
353
+ description: 'Fired when the user changes row spacing. Receives a `Table.Spacing` (TABLE_SPACING) enum value.',
354
+ control: false,
355
+ table: {
356
+ type: { summary: '(val: TABLE_SPACING) => void' },
357
+ defaultValue: { summary: 'undefined' },
358
+ },
359
+ },
360
+ onColumnBordersChanged: {
361
+ description: 'Fired when the user toggles column borders on or off via the settings dropdown.',
362
+ control: false,
363
+ table: {
364
+ type: { summary: '(hasBorders: boolean) => void' },
365
+ defaultValue: { summary: 'undefined' },
366
+ },
367
+ },
368
+ onTableSettingsReset: {
369
+ description: 'Fired when the user resets all table settings to their defaults.',
370
+ control: false,
371
+ table: {
372
+ type: { summary: '() => void' },
373
+ defaultValue: { summary: 'undefined' },
36
374
  },
37
375
  },
38
376
  },
@@ -1754,6 +2092,76 @@ const checkboxColumnDefs: ColDef[] = [
1754
2092
  },
1755
2093
  ];
1756
2094
 
2095
+ export const WithTableSettingsDropdownItems: Story = {
2096
+ parameters: {
2097
+ docs: {
2098
+ description: {
2099
+ story:
2100
+ 'Pass an `items` array to control exactly which controls appear. Only the items you include will be shown. Available keys: `tableSpacing`, `separator`, `style`.',
2101
+ },
2102
+ },
2103
+ },
2104
+ args: {
2105
+ rowData: sampleData,
2106
+ columnDefs: sampleColumnDefs,
2107
+ defaultColDef,
2108
+ domLayout: 'autoHeight',
2109
+ headerContent: (
2110
+ <Table.TableSettingsDropdown
2111
+ items={['tableSpacing']}
2112
+ />
2113
+ ),
2114
+ },
2115
+ };
2116
+
2117
+ export const WithTableSettingsDropdownCustomItems: Story = {
2118
+ parameters: {
2119
+ docs: {
2120
+ description: {
2121
+ story:
2122
+ 'Pass an `items` array with any mix of built-in keys and custom item objects in any order. Built-in keys: `tableSpacing`, `separator`, `style`. For custom items, use `{ type: "checkboxGroup", legend?, options }` for a group of toggles or `{ type: "radioGroup", legend?, name, checkedValue, onChange, options }` for mutually exclusive options. Custom item state is managed externally. Use `onTableSettingsReset` on the Table to reset custom state when the reset button is clicked.',
2123
+ },
2124
+ },
2125
+ },
2126
+ args: {
2127
+ rowData: sampleData,
2128
+ columnDefs: sampleColumnDefs,
2129
+ defaultColDef,
2130
+ domLayout: 'autoHeight',
2131
+ },
2132
+ render: (args) => {
2133
+ const [showInactive, setShowInactive] = useState(false);
2134
+ const filteredData = showInactive
2135
+ ? args.rowData
2136
+ : args.rowData?.filter((row: RowData) => row.active);
2137
+
2138
+ return (
2139
+ <Table
2140
+ {...args}
2141
+ rowData={filteredData}
2142
+ onTableSettingsReset={() => setShowInactive(false)}
2143
+ headerContent={(
2144
+ <Table.TableSettingsDropdown
2145
+ items={[
2146
+ 'tableSpacing',
2147
+ 'separator',
2148
+ 'style',
2149
+ 'separator',
2150
+ {
2151
+ type: 'checkboxGroup',
2152
+ legend: 'View options',
2153
+ options: [
2154
+ { label: 'Show inactive users', checked: showInactive, onChange: setShowInactive },
2155
+ ],
2156
+ },
2157
+ ]}
2158
+ />
2159
+ )}
2160
+ />
2161
+ );
2162
+ },
2163
+ };
2164
+
1757
2165
  export const WithCheckboxCellRenderer: Story = {
1758
2166
  parameters: {
1759
2167
  docs: {
@@ -2,7 +2,7 @@ import { AllEnterpriseModule, ModuleRegistry, type GridApi } from 'ag-grid-enter
2
2
  import { AgGridReact, type AgGridReactProps } from 'ag-grid-react';
3
3
  import { defaultTheme } from './theme/defaultTheme';
4
4
  import classNames from 'classnames';
5
- import { useRef, useState, type ReactNode } from 'react';
5
+ import { useContext, useRef, useState, type ReactNode } from 'react';
6
6
  import { TableFooter } from './TableFooter';
7
7
  import { TableHeader } from './TableHeader';
8
8
  import { GridApiContext } from './GridApiContext';
@@ -14,6 +14,7 @@ import { BulkActionsDropdown } from './tableControls/BulkActionsDropdown';
14
14
  import { HideColumnsDropdown } from './tableControls/HideColumnsDropdown';
15
15
  import { useTableSettings, type UseTableSettingsParams } from './useTableSettings';
16
16
  import { setAgGridLicenseKey } from 'Utils/setAgGridLicenseKey';
17
+ import { PopupParentContext } from 'Utils/PopupParentContext';
17
18
  import { toggleRowSelectionInCurrentRange } from './toggleRowSelectionInCurrentRange';
18
19
  import { defaultValueFormatter, DSDefaultColDef, shouldSuppressFocus } from './DSDefaultColDef';
19
20
  import { NumberCellEditor } from './cellEditors/NumberCellEditor';
@@ -25,7 +26,7 @@ import { focusFirstFocusableElement } from 'Utils/focusFirstFocusableElement';
25
26
  import { BooleanFilter } from './columnFilters/BooleanFilter/BooleanFilter';
26
27
  import { TimeFilter } from './columnFilters/TimeFilter/TimeFilter';
27
28
  import { DateCellEditor } from './cellEditors/DateCellEditor';
28
- import { TableSettingsDropdown } from './tableControls/TableSettingsDropdown';
29
+ import { TableSettingsDropdown, TABLE_SETTINGS_ITEMS } from './tableControls/TableSettingsDropdown';
29
30
  import { TableControls, type TableControlsProps, type BulkAction as BulkActionType } from './tableControls/TableControls';
30
31
  import type { HideColumnsDropdownProps } from './tableControls/HideColumnsDropdown';
31
32
  import { TABLE_SPACING } from './tableConsts';
@@ -87,6 +88,8 @@ export const Table = (props: TableProps) => {
87
88
 
88
89
  const [searchValue, setSearchValue] = useState('');
89
90
 
91
+ const popupParentRef = useContext(PopupParentContext);
92
+
90
93
  const {
91
94
  settings,
92
95
  resetSettings,
@@ -150,6 +153,7 @@ export const Table = (props: TableProps) => {
150
153
  )}
151
154
  <AgGridReact
152
155
  theme={getTheme()}
156
+ popupParent={popupParentRef.current}
153
157
  onGridReady={(event) => {
154
158
  const { api } = event;
155
159
  setGridApi(api);
@@ -217,6 +221,8 @@ Table.RowCountInfo = RowCountInfo;
217
221
  Table.BulkActionsDropdown = BulkActionsDropdown;
218
222
  Table.HideColumnsDropdown = HideColumnsDropdown;
219
223
  Table.ButtonCellRenderer = ButtonCellRenderer;
224
+ Table.InlineTextCellRenderer = InlineTextCellRenderer;
225
+ Table.SelectDropdownCellRenderer = SelectDropdownCellRenderer;
220
226
  Table.BooleanCellRenderer = BooleanCellRenderer;
221
227
  Table.DefaultCellRenderer = DefaultCellRenderer;
222
228
  Table.DateCellEditor = DateCellEditor;
@@ -228,6 +234,7 @@ Table.TableSettingsDropdown = TableSettingsDropdown;
228
234
  Table.TableControls = TableControls;
229
235
 
230
236
  Table.Spacing = TABLE_SPACING;
237
+ Table.SettingsItems = TABLE_SETTINGS_ITEMS;
231
238
 
232
239
  export namespace Table {
233
240
  // eslint-disable-next-line @typescript-eslint/no-explicit-any