@arbor-education/design-system.components 0.15.0 → 0.16.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 (304) hide show
  1. package/.gather/skills/write-stories/SKILL.md +207 -271
  2. package/.storybook/preview.ts +5 -0
  3. package/CHANGELOG.md +23 -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 +3 -0
  131. package/dist/components/table/Table.stories.d.ts.map +1 -1
  132. package/dist/components/table/Table.stories.js +384 -5
  133. package/dist/components/table/Table.stories.js.map +1 -1
  134. package/dist/components/table/Table.test.js +30 -0
  135. package/dist/components/table/Table.test.js.map +1 -1
  136. package/dist/components/table/TableFooter.stories.d.ts +49 -0
  137. package/dist/components/table/TableFooter.stories.d.ts.map +1 -0
  138. package/dist/components/table/TableFooter.stories.js +137 -0
  139. package/dist/components/table/TableFooter.stories.js.map +1 -0
  140. package/dist/components/table/TableHeader.stories.d.ts +93 -0
  141. package/dist/components/table/TableHeader.stories.d.ts.map +1 -0
  142. package/dist/components/table/TableHeader.stories.js +176 -0
  143. package/dist/components/table/TableHeader.stories.js.map +1 -0
  144. package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts +44 -0
  145. package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts.map +1 -0
  146. package/dist/components/table/cellEditors/DateCellEditor.stories.js +186 -0
  147. package/dist/components/table/cellEditors/DateCellEditor.stories.js.map +1 -0
  148. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts +40 -0
  149. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts.map +1 -0
  150. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js +209 -0
  151. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js.map +1 -0
  152. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts +48 -0
  153. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts.map +1 -0
  154. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js +244 -0
  155. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js.map +1 -0
  156. package/dist/components/table/cellRenderers/CheckboxCellRenderer.d.ts.map +1 -1
  157. package/dist/components/table/cellRenderers/CheckboxCellRenderer.js +3 -1
  158. package/dist/components/table/cellRenderers/CheckboxCellRenderer.js.map +1 -1
  159. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts +64 -0
  160. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts.map +1 -0
  161. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js +241 -0
  162. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js.map +1 -0
  163. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.d.ts +55 -0
  164. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.d.ts.map +1 -0
  165. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.js +245 -0
  166. package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.js.map +1 -0
  167. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts +67 -0
  168. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts.map +1 -0
  169. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js +221 -0
  170. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js.map +1 -0
  171. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts +75 -0
  172. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts.map +1 -0
  173. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js +270 -0
  174. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js.map +1 -0
  175. package/dist/components/table/columnFilters/BooleanFilter.stories.d.ts +57 -0
  176. package/dist/components/table/columnFilters/BooleanFilter.stories.d.ts.map +1 -0
  177. package/dist/components/table/columnFilters/BooleanFilter.stories.js +198 -0
  178. package/dist/components/table/columnFilters/BooleanFilter.stories.js.map +1 -0
  179. package/dist/components/table/columnFilters/TimeFilter.stories.d.ts +58 -0
  180. package/dist/components/table/columnFilters/TimeFilter.stories.d.ts.map +1 -0
  181. package/dist/components/table/columnFilters/TimeFilter.stories.js +207 -0
  182. package/dist/components/table/columnFilters/TimeFilter.stories.js.map +1 -0
  183. package/dist/components/table/pagination/PaginationPanel.stories.d.ts +113 -0
  184. package/dist/components/table/pagination/PaginationPanel.stories.d.ts.map +1 -0
  185. package/dist/components/table/pagination/PaginationPanel.stories.js +272 -0
  186. package/dist/components/table/pagination/PaginationPanel.stories.js.map +1 -0
  187. package/dist/components/table/tableControls/HideColumnsDropdown.d.ts.map +1 -1
  188. package/dist/components/table/tableControls/HideColumnsDropdown.js +9 -3
  189. package/dist/components/table/tableControls/HideColumnsDropdown.js.map +1 -1
  190. package/dist/components/table/tableControls/TableControls.stories.d.ts +151 -0
  191. package/dist/components/table/tableControls/TableControls.stories.d.ts.map +1 -0
  192. package/dist/components/table/tableControls/TableControls.stories.js +356 -0
  193. package/dist/components/table/tableControls/TableControls.stories.js.map +1 -0
  194. package/dist/components/table/tableControls/TableSettingsDropdown.d.ts +27 -1
  195. package/dist/components/table/tableControls/TableSettingsDropdown.d.ts.map +1 -1
  196. package/dist/components/table/tableControls/TableSettingsDropdown.js +53 -26
  197. package/dist/components/table/tableControls/TableSettingsDropdown.js.map +1 -1
  198. package/dist/components/table/tableControls/TableSettingsDropdown.test.d.ts +2 -0
  199. package/dist/components/table/tableControls/TableSettingsDropdown.test.d.ts.map +1 -0
  200. package/dist/components/table/tableControls/TableSettingsDropdown.test.js +178 -0
  201. package/dist/components/table/tableControls/TableSettingsDropdown.test.js.map +1 -0
  202. package/dist/components/tabs/Tabs.stories.d.ts +22 -4
  203. package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
  204. package/dist/components/tabs/Tabs.stories.js +398 -22
  205. package/dist/components/tabs/Tabs.stories.js.map +1 -1
  206. package/dist/components/tabs/TabsItem.stories.d.ts +54 -1
  207. package/dist/components/tabs/TabsItem.stories.d.ts.map +1 -1
  208. package/dist/components/tabs/TabsItem.stories.js +61 -9
  209. package/dist/components/tabs/TabsItem.stories.js.map +1 -1
  210. package/dist/components/toast/Toast.stories.d.ts +103 -10
  211. package/dist/components/toast/Toast.stories.d.ts.map +1 -1
  212. package/dist/components/toast/Toast.stories.js +409 -47
  213. package/dist/components/toast/Toast.stories.js.map +1 -1
  214. package/dist/components/toggle/Toggle.stories.d.ts +61 -46
  215. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
  216. package/dist/components/toggle/Toggle.stories.js +311 -122
  217. package/dist/components/toggle/Toggle.stories.js.map +1 -1
  218. package/dist/components/tooltip/Tooltip.stories.d.ts +78 -6
  219. package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
  220. package/dist/components/tooltip/Tooltip.stories.js +413 -7
  221. package/dist/components/tooltip/Tooltip.stories.js.map +1 -1
  222. package/dist/components/tooltip/TooltipWrapper.stories.d.ts +71 -7
  223. package/dist/components/tooltip/TooltipWrapper.stories.d.ts.map +1 -1
  224. package/dist/components/tooltip/TooltipWrapper.stories.js +238 -10
  225. package/dist/components/tooltip/TooltipWrapper.stories.js.map +1 -1
  226. package/dist/index.css +8 -0
  227. package/dist/index.css.map +1 -1
  228. package/dist/utils/PopupParentContext.stories.d.ts +17 -0
  229. package/dist/utils/PopupParentContext.stories.d.ts.map +1 -0
  230. package/dist/utils/PopupParentContext.stories.js +266 -0
  231. package/dist/utils/PopupParentContext.stories.js.map +1 -0
  232. package/dist/utils/getDefaultPopupParent.d.ts.map +1 -1
  233. package/dist/utils/getDefaultPopupParent.js +6 -0
  234. package/dist/utils/getDefaultPopupParent.js.map +1 -1
  235. package/package.json +1 -1
  236. package/src/components/articleCard/ArticleCard.stories.tsx +524 -111
  237. package/src/components/avatar/Avatar.stories.tsx +504 -59
  238. package/src/components/avatarGroup/AvatarGroup.stories.tsx +977 -175
  239. package/src/components/banner/Banner.stories.tsx +7 -3
  240. package/src/components/card/Card.stories.tsx +466 -36
  241. package/src/components/combobox/Combobox.stories.tsx +867 -260
  242. package/src/components/datePicker/DatePicker.stories.tsx +777 -60
  243. package/src/components/dateTimePicker/DateTimePicker.stories.tsx +910 -132
  244. package/src/components/editableText/EditableText.stories.tsx +567 -91
  245. package/src/components/formField/FormField.test.tsx +6 -0
  246. package/src/components/formField/FormField.tsx +5 -0
  247. package/src/components/formField/fieldset/Fieldset.stories.tsx +761 -51
  248. package/src/components/formField/inputs/checkbox/CheckboxGroup.tsx +1 -1
  249. package/src/components/formField/inputs/checkbox/CheckboxInput.tsx +1 -1
  250. package/src/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.tsx +504 -11
  251. package/src/components/formField/inputs/radio/RadioButtonGroup.tsx +17 -4
  252. package/src/components/formField/inputs/radio/RadioButtonInput.stories.tsx +71 -59
  253. package/src/components/formField/inputs/selectDropdown/SelectDropdown.stories.tsx +1079 -168
  254. package/src/components/formField/inputs/time/TimeInput.stories.tsx +1140 -104
  255. package/src/components/formField/label/Label.stories.tsx +317 -8
  256. package/src/components/icoText/IcoText.stories.tsx +442 -31
  257. package/src/components/kpiCard/KPICard.stories.tsx +475 -30
  258. package/src/components/kvpList/KVPList.stories.tsx +593 -26
  259. package/src/components/modal/Modal.stories.tsx +963 -26
  260. package/src/components/modal/modalManager/ModalManager.stories.tsx +612 -454
  261. package/src/components/pill/Pill.stories.tsx +11 -13
  262. package/src/components/pill/Pill.tsx +1 -0
  263. package/src/components/row/Row.stories.tsx +474 -58
  264. package/src/components/searchBar/SearchBar.stories.tsx +570 -38
  265. package/src/components/section/Section.stories.tsx +723 -70
  266. package/src/components/singleUser/SingleUser.stories.tsx +393 -34
  267. package/src/components/slideoverManager/SlideoverManager.stories.tsx +572 -342
  268. package/src/components/table/DSDefaultColDef.ts +25 -5
  269. package/src/components/table/Table.stories.tsx +460 -5
  270. package/src/components/table/Table.test.tsx +53 -0
  271. package/src/components/table/Table.tsx +9 -2
  272. package/src/components/table/TableFooter.stories.tsx +196 -0
  273. package/src/components/table/TableHeader.stories.tsx +251 -0
  274. package/src/components/table/cellEditors/DateCellEditor.stories.tsx +245 -0
  275. package/src/components/table/cellRenderers/BooleanCellRenderer.stories.tsx +278 -0
  276. package/src/components/table/cellRenderers/ButtonCellRenderer.stories.tsx +333 -0
  277. package/src/components/table/cellRenderers/CheckboxCellRenderer.stories.tsx +337 -0
  278. package/src/components/table/cellRenderers/CheckboxCellRenderer.tsx +5 -1
  279. package/src/components/table/cellRenderers/DefaultCellRenderer.stories.tsx +342 -0
  280. package/src/components/table/cellRenderers/InlineTextCellRenderer.stories.tsx +292 -0
  281. package/src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx +369 -0
  282. package/src/components/table/columnFilters/BooleanFilter.stories.tsx +268 -0
  283. package/src/components/table/columnFilters/TimeFilter.stories.tsx +281 -0
  284. package/src/components/table/pagination/PaginationPanel.stories.tsx +327 -0
  285. package/src/components/table/tableControls/HideColumnsDropdown.tsx +11 -2
  286. package/src/components/table/tableControls/TableControls.stories.tsx +415 -0
  287. package/src/components/table/tableControls/TableSettingsDropdown.test.tsx +207 -0
  288. package/src/components/table/tableControls/TableSettingsDropdown.tsx +103 -39
  289. package/src/components/tabs/Tabs.stories.tsx +540 -60
  290. package/src/components/tabs/TabsItem.stories.tsx +82 -8
  291. package/src/components/toast/Toast.stories.tsx +539 -77
  292. package/src/components/toggle/Toggle.stories.tsx +371 -135
  293. package/src/components/tooltip/Tooltip.stories.tsx +606 -15
  294. package/src/components/tooltip/TooltipWrapper.stories.tsx +348 -12
  295. package/src/docs/Contributing.mdx +241 -0
  296. package/src/docs/UsingComponents.mdx +93 -0
  297. package/src/docs/Welcome.mdx +68 -0
  298. package/src/global.scss +7 -0
  299. package/src/utils/PopupParentContext.stories.tsx +367 -0
  300. package/src/utils/getDefaultPopupParent.ts +6 -0
  301. package/.ralph/storybook-upgrade/knowledge.md +0 -308
  302. package/.ralph/storybook-upgrade/prd.json +0 -777
  303. package/.ralph/storybook-upgrade/progress.md +0 -342
  304. package/src/components/table/TableWIP.mdx +0 -3
@@ -0,0 +1,327 @@
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';
11
+ import { fn } from 'storybook/test';
12
+ import { PaginationPanel } from './PaginationPanel';
13
+
14
+ // ---------------------------------------------------------------------------
15
+ // Docs page content
16
+ // ---------------------------------------------------------------------------
17
+
18
+ const DESCRIPTION_INTRO = [
19
+ '`PaginationPanel` is the pre-composed footer slot for the Arbor data table.',
20
+ 'It renders a three-part `<nav>`: a **row count** (how many rows are visible),',
21
+ '**page controls** (first / prev / page-number input / next / last), and a **page-size selector** dropdown.',
22
+ '',
23
+ 'Every part is opt-in — only pass the props for the sections you need.',
24
+ 'Pass the entire `<PaginationPanel />` element as the `footerContent` prop of `<Table />`.',
25
+ ].join('\n');
26
+
27
+ const USAGE_GUIDANCE = [
28
+ '### When to use',
29
+ '',
30
+ '- As the `footerContent` of a `<Table />` to give it standard pagination controls',
31
+ '- When you need a page-size selector alongside page navigation in a single composable component',
32
+ '- When implementing server-side pagination (pass `totalPages` + `onPageChange` + `onPageSizeChange`)',
33
+ '',
34
+ '---',
35
+ '',
36
+ '### When NOT to use',
37
+ '',
38
+ '| Situation | Alternative |',
39
+ '|---|---|',
40
+ '| You only need page navigation | Use `PaginationControls` directly |',
41
+ '| You only need a page-size selector | Use `PageSizeSelector` directly |',
42
+ '| The table has no pagination | Omit `footerContent` entirely |',
43
+ '',
44
+ '---',
45
+ '',
46
+ '### Sub-component summary',
47
+ '',
48
+ '| Sub-component | Key props | Notes |',
49
+ '|---|---|---|',
50
+ '| `RowCountInfo` | `totalRows` | Returns `null` when used outside a `<Table />` — it reads row count from `GridApiContext` |',
51
+ '| `PaginationControls` | `totalPages`, `onPageChange` | Works standalone; falls back to `GridApiContext` when no props are passed |',
52
+ '| `PageSizeSelector` | `availableSizes`, `initialPageSize`, `onPageSizeChange` | Works standalone; falls back to `GridApiContext` when no props are passed |',
53
+ ].join('\n');
54
+
55
+ const DEVELOPER_NOTES = [
56
+ '### Wiring into `<Table />`',
57
+ '',
58
+ '```tsx',
59
+ "import { Table, PaginationPanel } from '@arbor-education/design-system.components';",
60
+ '',
61
+ 'function MyTable() {',
62
+ ' return (',
63
+ ' <Table',
64
+ ' rowData={rows}',
65
+ ' columnDefs={colDefs}',
66
+ ' footerContent={(',
67
+ ' <PaginationPanel',
68
+ ' availableSizes={[10, 25, 50, 100]}',
69
+ ' initialPageSize={25}',
70
+ ' onPageSizeChange={setPageSize}',
71
+ ' />',
72
+ ' )}',
73
+ ' />',
74
+ ' );',
75
+ '}',
76
+ '```',
77
+ '',
78
+ '---',
79
+ '',
80
+ '### Server-side pagination',
81
+ '',
82
+ 'When your data is fetched page-by-page from an API, pass `totalPages` and `onPageChange`:',
83
+ '',
84
+ '```tsx',
85
+ 'function ServerTable() {',
86
+ ' const [page, setPage] = useState(0);',
87
+ ' const [pageSize, setPageSize] = useState(25);',
88
+ ' const { data, totalPages } = useMyApiQuery({ page, pageSize });',
89
+ '',
90
+ ' return (',
91
+ ' <Table',
92
+ ' rowData={data}',
93
+ ' columnDefs={colDefs}',
94
+ ' footerContent={(',
95
+ ' <PaginationPanel',
96
+ ' totalPages={totalPages}',
97
+ ' onPageChange={setPage}',
98
+ ' availableSizes={[10, 25, 50]}',
99
+ ' initialPageSize={pageSize}',
100
+ ' onPageSizeChange={setPageSize}',
101
+ ' />',
102
+ ' )}',
103
+ ' />',
104
+ ' );',
105
+ '}',
106
+ '```',
107
+ '',
108
+ '---',
109
+ '',
110
+ '### `RowCountInfo` and `GridApiContext`',
111
+ '',
112
+ '`RowCountInfo` reads the displayed row count from `GridApiContext` — this context is provided',
113
+ 'automatically by `<Table />`. When `PaginationPanel` is rendered outside a `<Table />`',
114
+ '(as in these Storybook stories), `RowCountInfo` returns `null` and the row-count text is not shown.',
115
+ 'Pass `totalRows` to supply a value manually in server-side scenarios.',
116
+ '',
117
+ '---',
118
+ '',
119
+ '### TypeScript types',
120
+ '',
121
+ '```ts',
122
+ "import { PaginationPanel } from '@arbor-education/design-system.components';",
123
+ "import type { PaginationControlsProps, PageSizeSelectorProps, RowCountInfoProps } from '@arbor-education/design-system.components';",
124
+ '```',
125
+ ].join('\n');
126
+
127
+ const RELATED_COMPONENTS = [
128
+ '## Related components',
129
+ '',
130
+ '[Table](?path=/docs/components-table--docs) · [TableControls](?path=/docs/components-table-tablecontrols--docs) · [Button](?path=/docs/components-button--docs)',
131
+ ].join('\n');
132
+
133
+ const PROPS_INTRO = 'The preview below is wired to the **Controls** panel — toggle props to see the panel update in real time. Note that `RowCountInfo` (the row-count text on the left) only displays inside a `<Table />`; it returns `null` in this standalone preview.';
134
+
135
+ // ---------------------------------------------------------------------------
136
+ // Custom DocsPage
137
+ // ---------------------------------------------------------------------------
138
+
139
+ function PaginationPanelDocsPage() {
140
+ return (
141
+ <>
142
+ <Title />
143
+ <Subtitle />
144
+ <Markdown>{DESCRIPTION_INTRO}</Markdown>
145
+ <DocHeading>Interactive example</DocHeading>
146
+ <Markdown>{PROPS_INTRO}</Markdown>
147
+ <DocPrimary />
148
+ <Controls />
149
+ <DocHeading>Usage guidance</DocHeading>
150
+ <Markdown>{USAGE_GUIDANCE}</Markdown>
151
+ <DocHeading>Developer notes</DocHeading>
152
+ <Markdown>{DEVELOPER_NOTES}</Markdown>
153
+ <DocHeading>Examples</DocHeading>
154
+ <Stories title="" />
155
+ <Markdown>{RELATED_COMPONENTS}</Markdown>
156
+ </>
157
+ );
158
+ }
159
+
160
+ // ---------------------------------------------------------------------------
161
+ // Meta
162
+ // ---------------------------------------------------------------------------
163
+
164
+ const meta = {
165
+ title: 'Components/Table/PaginationPanel',
166
+ component: PaginationPanel,
167
+ tags: ['autodocs'],
168
+ parameters: {
169
+ layout: 'padded',
170
+ docs: { page: PaginationPanelDocsPage },
171
+ },
172
+ argTypes: {
173
+ totalRows: {
174
+ description: 'Total number of rows in the dataset. Passed to `RowCountInfo` for the "Showing X of Y results" label. Only relevant when used outside a `<Table />` (which provides this automatically via `GridApiContext`).',
175
+ control: 'number',
176
+ table: { type: { summary: 'number' }, defaultValue: { summary: 'undefined' } },
177
+ },
178
+ totalPages: {
179
+ description: 'Total number of pages. Passed to `PaginationControls`. Required for server-side pagination; when omitted the control reads from `GridApiContext`.',
180
+ control: 'number',
181
+ table: { type: { summary: 'number' }, defaultValue: { summary: 'undefined' } },
182
+ },
183
+ onPageChange: {
184
+ description: 'Called with the zero-indexed new page number when the user navigates. Required for server-side pagination; when omitted the control drives the AG Grid API directly.',
185
+ control: false,
186
+ table: { type: { summary: '(newPage: number) => void' }, defaultValue: { summary: 'undefined' } },
187
+ },
188
+ availableSizes: {
189
+ description: 'Array of page sizes shown in the `PageSizeSelector` dropdown. Defaults to `[10, 20, 30, 50, 100, 200, 300, 500, 1000, "All"]`.',
190
+ control: false,
191
+ table: { type: { summary: '(number | "All")[]' }, defaultValue: { summary: 'undefined' } },
192
+ },
193
+ initialPageSize: {
194
+ description: 'The initially selected page size in the `PageSizeSelector`.',
195
+ control: 'number',
196
+ table: { type: { summary: 'number | "All"' }, defaultValue: { summary: 'undefined' } },
197
+ },
198
+ onPageSizeChange: {
199
+ description: 'Called with the newly selected page size when the user changes it. Required for server-side pagination; when omitted the control drives the AG Grid API directly.',
200
+ control: false,
201
+ table: { type: { summary: '(newPageSize: number | "All") => void' }, defaultValue: { summary: 'undefined' } },
202
+ },
203
+ className: {
204
+ description: 'Additional CSS class name(s) to apply to the root `<nav>` element.',
205
+ control: 'text',
206
+ table: { type: { summary: 'string' }, defaultValue: { summary: 'undefined' } },
207
+ },
208
+ },
209
+ args: {
210
+ onPageChange: fn(),
211
+ onPageSizeChange: fn(),
212
+ },
213
+ } satisfies Meta<typeof PaginationPanel>;
214
+
215
+ export default meta;
216
+ type Story = StoryObj<typeof PaginationPanel>;
217
+
218
+ // ---------------------------------------------------------------------------
219
+ // Helper
220
+ // ---------------------------------------------------------------------------
221
+
222
+ const withDescription = (story: Story, description: string): Story => ({
223
+ ...story,
224
+ parameters: {
225
+ ...story.parameters,
226
+ docs: { ...story.parameters?.docs, description: { story: description } },
227
+ },
228
+ });
229
+
230
+ // ---------------------------------------------------------------------------
231
+ // Stories
232
+ // ---------------------------------------------------------------------------
233
+
234
+ export const Default: Story = withDescription(
235
+ {
236
+ args: {
237
+ totalPages: 10,
238
+ onPageChange: fn(),
239
+ availableSizes: [10, 25, 50, 100],
240
+ initialPageSize: 25,
241
+ onPageSizeChange: fn(),
242
+ },
243
+ },
244
+ 'The interactive canvas — all three sections visible: row count (hidden outside a `<Table />`), '
245
+ + 'page navigation controls, and a page-size selector. '
246
+ + 'Use the Controls panel to adjust `totalPages` and `initialPageSize`.',
247
+ );
248
+
249
+ export const PageNavigationOnly: Story = withDescription(
250
+ {
251
+ parameters: { controls: { disable: true } },
252
+ args: {
253
+ totalPages: 5,
254
+ onPageChange: fn(),
255
+ },
256
+ },
257
+ 'Only `PaginationControls` — first, previous, page input, next, and last buttons. '
258
+ + '`totalPages` drives the upper bound; `onPageChange` receives the zero-indexed new page number. '
259
+ + 'No `PageSizeSelector` props are passed so that section is omitted.',
260
+ );
261
+
262
+ export const PageSizeSelectorOnly: Story = withDescription(
263
+ {
264
+ parameters: { controls: { disable: true } },
265
+ args: {
266
+ availableSizes: [10, 25, 50, 100, 'All'],
267
+ initialPageSize: 25,
268
+ onPageSizeChange: fn(),
269
+ },
270
+ },
271
+ 'Only `PageSizeSelector` — a dropdown listing the available page sizes. '
272
+ + 'No `totalPages` / `onPageChange` props are passed so the page-navigation section is omitted. '
273
+ + 'When used inside a `<Table />` without `onPageSizeChange`, selecting a size updates the AG Grid pagination automatically.',
274
+ );
275
+
276
+ export const ServerSidePagination: Story = withDescription(
277
+ {
278
+ parameters: {
279
+ controls: { disable: true },
280
+ docs: {
281
+ source: {
282
+ language: 'tsx',
283
+ code: `
284
+ import { useState } from 'react';
285
+ import { Table, PaginationPanel } from '@arbor-education/design-system.components';
286
+
287
+ function ServerTable() {
288
+ const [page, setPage] = useState(0);
289
+ const [pageSize, setPageSize] = useState(25);
290
+ const { data, totalPages, totalRows } = useMyApiQuery({ page, pageSize });
291
+
292
+ return (
293
+ <Table
294
+ rowData={data}
295
+ columnDefs={colDefs}
296
+ footerContent={(
297
+ <PaginationPanel
298
+ totalRows={totalRows}
299
+ totalPages={totalPages}
300
+ onPageChange={setPage}
301
+ availableSizes={[10, 25, 50, 100]}
302
+ initialPageSize={pageSize}
303
+ onPageSizeChange={setPageSize}
304
+ />
305
+ )}
306
+ />
307
+ );
308
+ }
309
+ export default ServerTable;
310
+ `.trim(),
311
+ },
312
+ },
313
+ },
314
+ args: {
315
+ totalRows: 347,
316
+ totalPages: 14,
317
+ onPageChange: fn(),
318
+ availableSizes: [10, 25, 50, 100],
319
+ initialPageSize: 25,
320
+ onPageSizeChange: fn(),
321
+ },
322
+ },
323
+ 'Server-side pagination pattern — `totalPages` and `onPageChange` are controlled externally by your data-fetching layer. '
324
+ + '`totalRows` is provided manually (not derived from the grid). '
325
+ + 'In this standalone preview `RowCountInfo` still returns `null` (no `GridApiContext`), '
326
+ + 'but the code example shows the full wiring pattern.',
327
+ );
@@ -1,5 +1,5 @@
1
1
  import { SelectDropdown } from 'Components/formField/inputs/selectDropdown/SelectDropdown';
2
- import { useContext, useState } from 'react';
2
+ import { useContext, useEffect, useState } from 'react';
3
3
  import { GridApiContext } from '../GridApiContext';
4
4
  import type { Column } from 'ag-grid-community';
5
5
 
@@ -9,6 +9,10 @@ export type HideColumnsDropdownProps = {
9
9
  overrideColumnHiding?: boolean;
10
10
  };
11
11
 
12
+ const getHiddenColumnIds = (columns?: Column[] | null) => columns
13
+ ?.filter(column => !column.isVisible())
14
+ .map(column => column.getColId()) ?? [];
15
+
12
16
  export const HideColumnsDropdown = (props: HideColumnsDropdownProps) => {
13
17
  const {
14
18
  columns: rawColumns,
@@ -18,7 +22,11 @@ export const HideColumnsDropdown = (props: HideColumnsDropdownProps) => {
18
22
 
19
23
  const gridApi = useContext(GridApiContext);
20
24
  const currentColumns = rawColumns || gridApi?.getColumns();
21
- const [hiddenColumns, setHiddenColumns] = useState<string[]>([]);
25
+ const [hiddenColumns, setHiddenColumns] = useState<string[]>(() => getHiddenColumnIds(rawColumns));
26
+
27
+ useEffect(() => {
28
+ setHiddenColumns(getHiddenColumnIds(currentColumns));
29
+ }, [currentColumns]);
22
30
 
23
31
  if (!currentColumns || currentColumns.length === 0) return null;
24
32
 
@@ -50,6 +58,7 @@ export const HideColumnsDropdown = (props: HideColumnsDropdownProps) => {
50
58
  multiple
51
59
  placeholder={placeholderText}
52
60
  options={options}
61
+ selectedValues={hiddenColumns}
53
62
  onSelectionChange={handleVisibilityChange}
54
63
  alwaysShowPlaceholder
55
64
  />