@arbor-education/design-system.components 4.5.0 → 4.7.0-alpha.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 (312) hide show
  1. package/.changeset/twenty-groups-wonder.md +5 -0
  2. package/.changeset/yellow-falcons-search.md +5 -0
  3. package/CHANGELOG.md +12 -0
  4. package/dist/components/avatar/Avatar.js +2 -2
  5. package/dist/components/avatar/Avatar.js.map +1 -1
  6. package/dist/components/badge/Badge.stories.d.ts +0 -1
  7. package/dist/components/badge/Badge.stories.d.ts.map +1 -1
  8. package/dist/components/badge/Badge.stories.js +0 -69
  9. package/dist/components/badge/Badge.stories.js.map +1 -1
  10. package/dist/components/button/Button.story.d.ts +47 -0
  11. package/dist/components/button/Button.story.d.ts.map +1 -0
  12. package/dist/components/button/Button.story.js +123 -0
  13. package/dist/components/button/Button.story.js.map +1 -0
  14. package/dist/components/button/ButtonUsageExample.d.ts +2 -0
  15. package/dist/components/button/ButtonUsageExample.d.ts.map +1 -0
  16. package/dist/components/button/ButtonUsageExample.js +11 -0
  17. package/dist/components/button/ButtonUsageExample.js.map +1 -0
  18. package/dist/components/combobox/useElementWidth.d.ts +2 -0
  19. package/dist/components/combobox/useElementWidth.d.ts.map +1 -0
  20. package/dist/components/combobox/useElementWidth.js +31 -0
  21. package/dist/components/combobox/useElementWidth.js.map +1 -0
  22. package/dist/components/combobox/useVisibleChips.d.ts +21 -0
  23. package/dist/components/combobox/useVisibleChips.d.ts.map +1 -0
  24. package/dist/components/combobox/useVisibleChips.js +59 -0
  25. package/dist/components/combobox/useVisibleChips.js.map +1 -0
  26. package/dist/components/combobox/useVisibleChips.test.d.ts +2 -0
  27. package/dist/components/combobox/useVisibleChips.test.d.ts.map +1 -0
  28. package/dist/components/combobox/useVisibleChips.test.js +81 -0
  29. package/dist/components/combobox/useVisibleChips.test.js.map +1 -0
  30. package/dist/components/dot/Dot.d.ts.map +1 -1
  31. package/dist/components/dot/Dot.js +1 -1
  32. package/dist/components/dot/Dot.js.map +1 -1
  33. package/dist/components/formField/inputs/checkbox/CheckboxInput.d.ts +2 -2
  34. package/dist/components/formField/inputs/checkbox/CheckboxInput.d.ts.map +1 -1
  35. package/dist/components/formField/inputs/checkbox/CheckboxInput.js +1 -1
  36. package/dist/components/formField/inputs/checkbox/CheckboxInput.js.map +1 -1
  37. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.d.ts +2 -0
  38. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.d.ts.map +1 -1
  39. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.js +100 -0
  40. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.js.map +1 -1
  41. package/dist/components/formField/inputs/checkbox/CheckboxInput.test.js +17 -1
  42. package/dist/components/formField/inputs/checkbox/CheckboxInput.test.js.map +1 -1
  43. package/dist/components/heading/HeadingInnerContainer.d.ts +5 -0
  44. package/dist/components/heading/HeadingInnerContainer.d.ts.map +1 -0
  45. package/dist/components/heading/HeadingInnerContainer.js +7 -0
  46. package/dist/components/heading/HeadingInnerContainer.js.map +1 -0
  47. package/dist/components/icoText/IcoText.d.ts +37 -0
  48. package/dist/components/icoText/IcoText.d.ts.map +1 -0
  49. package/dist/components/icoText/IcoText.js +29 -0
  50. package/dist/components/icoText/IcoText.js.map +1 -0
  51. package/dist/components/icoText/IcoText.stories.d.ts +60 -0
  52. package/dist/components/icoText/IcoText.stories.d.ts.map +1 -0
  53. package/dist/components/icoText/IcoText.stories.js +319 -0
  54. package/dist/components/icoText/IcoText.stories.js.map +1 -0
  55. package/dist/components/icoText/IcoText.test.d.ts +2 -0
  56. package/dist/components/icoText/IcoText.test.d.ts.map +1 -0
  57. package/dist/components/icoText/IcoText.test.js +27 -0
  58. package/dist/components/icoText/IcoText.test.js.map +1 -0
  59. package/dist/components/pill/Pill.d.ts.map +1 -1
  60. package/dist/components/pill/Pill.js +1 -1
  61. package/dist/components/pill/Pill.js.map +1 -1
  62. package/dist/components/searchBar/SearchBar.d.ts.map +1 -1
  63. package/dist/components/searchBar/SearchBar.js +1 -1
  64. package/dist/components/searchBar/SearchBar.js.map +1 -1
  65. package/dist/components/searchBar/SearchBar.test.js +3 -3
  66. package/dist/components/searchBar/SearchBar.test.js.map +1 -1
  67. package/dist/components/sidebarNav/SidebarNav.d.ts +46 -0
  68. package/dist/components/sidebarNav/SidebarNav.d.ts.map +1 -0
  69. package/dist/components/sidebarNav/SidebarNav.js +102 -0
  70. package/dist/components/sidebarNav/SidebarNav.js.map +1 -0
  71. package/dist/components/sidebarNav/SidebarNav.stories.d.ts +61 -0
  72. package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +1 -0
  73. package/dist/components/sidebarNav/SidebarNav.stories.js +253 -0
  74. package/dist/components/sidebarNav/SidebarNav.stories.js.map +1 -0
  75. package/dist/components/sidebarNav/SidebarNav.test.d.ts +2 -0
  76. package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +1 -0
  77. package/dist/components/sidebarNav/SidebarNav.test.js +240 -0
  78. package/dist/components/sidebarNav/SidebarNav.test.js.map +1 -0
  79. package/dist/components/sidebarNav/SidebarNavContext.d.ts +13 -0
  80. package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +1 -0
  81. package/dist/components/sidebarNav/SidebarNavContext.js +15 -0
  82. package/dist/components/sidebarNav/SidebarNavContext.js.map +1 -0
  83. package/dist/components/sidebarNav/SidebarNavGroup.d.ts +10 -0
  84. package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +1 -0
  85. package/dist/components/sidebarNav/SidebarNavGroup.js +16 -0
  86. package/dist/components/sidebarNav/SidebarNavGroup.js.map +1 -0
  87. package/dist/components/sidebarNav/SidebarNavItem.d.ts +32 -0
  88. package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -0
  89. package/dist/components/sidebarNav/SidebarNavItem.js +44 -0
  90. package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -0
  91. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +8 -0
  92. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +1 -0
  93. package/dist/components/sidebarNav/SidebarNavItemFavourite.js +14 -0
  94. package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +1 -0
  95. package/dist/components/sidebarNav/SidebarNavPanel.d.ts +4 -0
  96. package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +1 -0
  97. package/dist/components/sidebarNav/SidebarNavPanel.js +9 -0
  98. package/dist/components/sidebarNav/SidebarNavPanel.js.map +1 -0
  99. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +10 -0
  100. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +1 -0
  101. package/dist/components/sidebarNav/SidebarNavPanelNav.js +21 -0
  102. package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +1 -0
  103. package/dist/components/sidebarNav/SidebarNavRail.d.ts +6 -0
  104. package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +1 -0
  105. package/dist/components/sidebarNav/SidebarNavRail.js +7 -0
  106. package/dist/components/sidebarNav/SidebarNavRail.js.map +1 -0
  107. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +10 -0
  108. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -0
  109. package/dist/components/sidebarNav/SidebarNavRailItem.js +25 -0
  110. package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -0
  111. package/dist/components/sidebarNav/SidebarNavRailList.d.ts +4 -0
  112. package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +1 -0
  113. package/dist/components/sidebarNav/SidebarNavRailList.js +7 -0
  114. package/dist/components/sidebarNav/SidebarNavRailList.js.map +1 -0
  115. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +6 -0
  116. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +1 -0
  117. package/dist/components/sidebarNav/SidebarNavRailSlot.js +7 -0
  118. package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +1 -0
  119. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +6 -0
  120. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +1 -0
  121. package/dist/components/sidebarNav/SidebarNavSeparator.js +8 -0
  122. package/dist/components/sidebarNav/SidebarNavSeparator.js.map +1 -0
  123. package/dist/components/sidebarNav/SidebarNavTitle.d.ts +4 -0
  124. package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +1 -0
  125. package/dist/components/sidebarNav/SidebarNavTitle.js +7 -0
  126. package/dist/components/sidebarNav/SidebarNavTitle.js.map +1 -0
  127. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +7 -0
  128. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +1 -0
  129. package/dist/components/sidebarNav/SidebarNavTooltip.js +9 -0
  130. package/dist/components/sidebarNav/SidebarNavTooltip.js.map +1 -0
  131. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +8 -0
  132. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +1 -0
  133. package/dist/components/sidebarNav/SidebarNavTrigger.js +15 -0
  134. package/dist/components/sidebarNav/SidebarNavTrigger.js.map +1 -0
  135. package/dist/components/sidebarNav/index.d.ts +4 -0
  136. package/dist/components/sidebarNav/index.d.ts.map +1 -0
  137. package/dist/components/sidebarNav/index.js +3 -0
  138. package/dist/components/sidebarNav/index.js.map +1 -0
  139. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +4 -0
  140. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +1 -0
  141. package/dist/components/sidebarNav/resolvePanelItemProps.js +43 -0
  142. package/dist/components/sidebarNav/resolvePanelItemProps.js.map +1 -0
  143. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts +2 -0
  144. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +1 -0
  145. package/dist/components/sidebarNav/resolvePanelItemProps.test.js +52 -0
  146. package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +1 -0
  147. package/dist/components/sidebarNav/types.d.ts +100 -0
  148. package/dist/components/sidebarNav/types.d.ts.map +1 -0
  149. package/dist/components/sidebarNav/types.js +4 -0
  150. package/dist/components/sidebarNav/types.js.map +1 -0
  151. package/dist/components/sidebarNav/useControllableBoolean.d.ts +9 -0
  152. package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -0
  153. package/dist/components/sidebarNav/useControllableBoolean.js +15 -0
  154. package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -0
  155. package/dist/components/slideover/Slideover.stories.d.ts +10 -0
  156. package/dist/components/slideover/Slideover.stories.d.ts.map +1 -0
  157. package/dist/components/slideover/Slideover.stories.js +12 -0
  158. package/dist/components/slideover/Slideover.stories.js.map +1 -0
  159. package/dist/components/table/BulkActionsDropdown.d.ts +12 -0
  160. package/dist/components/table/BulkActionsDropdown.d.ts.map +1 -0
  161. package/dist/components/table/BulkActionsDropdown.js +11 -0
  162. package/dist/components/table/BulkActionsDropdown.js.map +1 -0
  163. package/dist/components/table/HideColumnsDropdown.d.ts +9 -0
  164. package/dist/components/table/HideColumnsDropdown.d.ts.map +1 -0
  165. package/dist/components/table/HideColumnsDropdown.js +33 -0
  166. package/dist/components/table/HideColumnsDropdown.js.map +1 -0
  167. package/dist/components/table/Table.d.ts +1 -1
  168. package/dist/components/table/Table.stories.d.ts.map +1 -1
  169. package/dist/components/table/Table.stories.js +0 -5
  170. package/dist/components/table/Table.stories.js.map +1 -1
  171. package/dist/components/table/Table.test.js +0 -5
  172. package/dist/components/table/Table.test.js.map +1 -1
  173. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.d.ts +8 -0
  174. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.d.ts.map +1 -0
  175. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.js +19 -0
  176. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.js.map +1 -0
  177. package/dist/components/table/hooks/useHistory.d.ts +20 -0
  178. package/dist/components/table/hooks/useHistory.d.ts.map +1 -0
  179. package/dist/components/table/hooks/useHistory.js +73 -0
  180. package/dist/components/table/hooks/useHistory.js.map +1 -0
  181. package/dist/components/table/hooks/useTableHistory.d.ts +21 -0
  182. package/dist/components/table/hooks/useTableHistory.d.ts.map +1 -0
  183. package/dist/components/table/hooks/useTableHistory.js +88 -0
  184. package/dist/components/table/hooks/useTableHistory.js.map +1 -0
  185. package/dist/components/table/pagination/TableSettingsDropdown.d.ts +2 -0
  186. package/dist/components/table/pagination/TableSettingsDropdown.d.ts.map +1 -0
  187. package/dist/components/table/pagination/TableSettingsDropdown.js +42 -0
  188. package/dist/components/table/pagination/TableSettingsDropdown.js.map +1 -0
  189. package/dist/components/table/tableHeader/TableHeader.d.ts +14 -0
  190. package/dist/components/table/tableHeader/TableHeader.d.ts.map +1 -0
  191. package/dist/components/table/tableHeader/TableHeader.js +55 -0
  192. package/dist/components/table/tableHeader/TableHeader.js.map +1 -0
  193. package/dist/components/table/tableHeader/index.d.ts +2 -0
  194. package/dist/components/table/tableHeader/index.d.ts.map +1 -0
  195. package/dist/components/table/tableHeader/index.js +2 -0
  196. package/dist/components/table/tableHeader/index.js.map +1 -0
  197. package/dist/components/table/tableTheme.d.ts +2 -0
  198. package/dist/components/table/tableTheme.d.ts.map +1 -0
  199. package/dist/components/table/tableTheme.js +18 -0
  200. package/dist/components/table/tableTheme.js.map +1 -0
  201. package/dist/components/table/types.d.ts +169 -0
  202. package/dist/components/table/types.d.ts.map +1 -0
  203. package/dist/components/table/types.js +11 -0
  204. package/dist/components/table/types.js.map +1 -0
  205. package/dist/components/table/utils/setAgGridLicenseKey.d.ts +2 -0
  206. package/dist/components/table/utils/setAgGridLicenseKey.d.ts.map +1 -0
  207. package/dist/components/table/utils/setAgGridLicenseKey.js +11 -0
  208. package/dist/components/table/utils/setAgGridLicenseKey.js.map +1 -0
  209. package/dist/layoutTest.stories.d.ts +6 -0
  210. package/dist/layoutTest.stories.d.ts.map +1 -0
  211. package/dist/layoutTest.stories.js +9 -0
  212. package/dist/layoutTest.stories.js.map +1 -0
  213. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.d.ts +39 -0
  214. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.d.ts.map +1 -0
  215. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.js +112 -0
  216. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.js.map +1 -0
  217. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.d.ts +184 -0
  218. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.d.ts.map +1 -0
  219. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.js +317 -0
  220. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.js.map +1 -0
  221. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.d.ts +2 -0
  222. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.d.ts.map +1 -0
  223. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.js +160 -0
  224. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.js.map +1 -0
  225. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.d.ts +11 -0
  226. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.d.ts.map +1 -0
  227. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.js +13 -0
  228. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.js.map +1 -0
  229. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.d.ts +174 -0
  230. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.d.ts.map +1 -0
  231. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.js +212 -0
  232. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.js.map +1 -0
  233. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.d.ts +2 -0
  234. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.d.ts.map +1 -0
  235. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.js +84 -0
  236. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.js.map +1 -0
  237. package/dist/pages/assessmentsPage/AssessmentsPage.d.ts +16 -0
  238. package/dist/pages/assessmentsPage/AssessmentsPage.d.ts.map +1 -0
  239. package/dist/pages/assessmentsPage/AssessmentsPage.js +31 -0
  240. package/dist/pages/assessmentsPage/AssessmentsPage.js.map +1 -0
  241. package/dist/pages/assessmentsPage/AssessmentsPage.stories.d.ts +162 -0
  242. package/dist/pages/assessmentsPage/AssessmentsPage.stories.d.ts.map +1 -0
  243. package/dist/pages/assessmentsPage/AssessmentsPage.stories.js +290 -0
  244. package/dist/pages/assessmentsPage/AssessmentsPage.stories.js.map +1 -0
  245. package/dist/pages/assessmentsPage/AssessmentsPage.test.d.ts +2 -0
  246. package/dist/pages/assessmentsPage/AssessmentsPage.test.d.ts.map +1 -0
  247. package/dist/pages/assessmentsPage/AssessmentsPage.test.js +109 -0
  248. package/dist/pages/assessmentsPage/AssessmentsPage.test.js.map +1 -0
  249. package/dist/pages/customReportWriterPage/CustomReportWriterPage.d.ts +40 -0
  250. package/dist/pages/customReportWriterPage/CustomReportWriterPage.d.ts.map +1 -0
  251. package/dist/pages/customReportWriterPage/CustomReportWriterPage.js +156 -0
  252. package/dist/pages/customReportWriterPage/CustomReportWriterPage.js.map +1 -0
  253. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.d.ts +239 -0
  254. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.d.ts.map +1 -0
  255. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.js +318 -0
  256. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.js.map +1 -0
  257. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.d.ts +2 -0
  258. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.d.ts.map +1 -0
  259. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.js +183 -0
  260. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.js.map +1 -0
  261. package/dist/pages/gradeSetsPage/GradeSetsPage.d.ts +26 -0
  262. package/dist/pages/gradeSetsPage/GradeSetsPage.d.ts.map +1 -0
  263. package/dist/pages/gradeSetsPage/GradeSetsPage.js +33 -0
  264. package/dist/pages/gradeSetsPage/GradeSetsPage.js.map +1 -0
  265. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.d.ts +176 -0
  266. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.d.ts.map +1 -0
  267. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.js +237 -0
  268. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.js.map +1 -0
  269. package/dist/pages/gradeSetsPage/GradeSetsPage.test.d.ts +2 -0
  270. package/dist/pages/gradeSetsPage/GradeSetsPage.test.d.ts.map +1 -0
  271. package/dist/pages/gradeSetsPage/GradeSetsPage.test.js +91 -0
  272. package/dist/pages/gradeSetsPage/GradeSetsPage.test.js.map +1 -0
  273. package/dist/pages/studentProfilePage/StudentProfilePage.d.ts +48 -0
  274. package/dist/pages/studentProfilePage/StudentProfilePage.d.ts.map +1 -0
  275. package/dist/pages/studentProfilePage/StudentProfilePage.js +52 -0
  276. package/dist/pages/studentProfilePage/StudentProfilePage.js.map +1 -0
  277. package/dist/pages/studentProfilePage/StudentProfilePage.stories.d.ts +218 -0
  278. package/dist/pages/studentProfilePage/StudentProfilePage.stories.d.ts.map +1 -0
  279. package/dist/pages/studentProfilePage/StudentProfilePage.stories.js +273 -0
  280. package/dist/pages/studentProfilePage/StudentProfilePage.stories.js.map +1 -0
  281. package/dist/pages/studentProfilePage/StudentProfilePage.test.d.ts +2 -0
  282. package/dist/pages/studentProfilePage/StudentProfilePage.test.d.ts.map +1 -0
  283. package/dist/pages/studentProfilePage/StudentProfilePage.test.js +197 -0
  284. package/dist/pages/studentProfilePage/StudentProfilePage.test.js.map +1 -0
  285. package/dist/utils/PopupParentContext.d.ts +3 -0
  286. package/dist/utils/PopupParentContext.d.ts.map +1 -0
  287. package/dist/utils/PopupParentContext.js +6 -0
  288. package/dist/utils/PopupParentContext.js.map +1 -0
  289. package/dist/utils/PopupParentContext.stories.d.ts +17 -0
  290. package/dist/utils/PopupParentContext.stories.d.ts.map +1 -0
  291. package/dist/utils/PopupParentContext.stories.js +266 -0
  292. package/dist/utils/PopupParentContext.stories.js.map +1 -0
  293. package/dist/utils/getDefaultPopupParent.d.ts +2 -0
  294. package/dist/utils/getDefaultPopupParent.d.ts.map +1 -0
  295. package/dist/utils/getDefaultPopupParent.js +19 -0
  296. package/dist/utils/getDefaultPopupParent.js.map +1 -0
  297. package/dist/utils/popupParent/PopupParentContext.stories.d.ts.map +1 -1
  298. package/dist/utils/popupParent/PopupParentContext.stories.js +1 -1
  299. package/dist/utils/popupParent/PopupParentContext.stories.js.map +1 -1
  300. package/package.json +4 -4
  301. package/src/components/avatar/Avatar.tsx +2 -2
  302. package/src/components/badge/Badge.stories.tsx +0 -103
  303. package/src/components/dot/Dot.tsx +1 -0
  304. package/src/components/formField/inputs/checkbox/CheckboxInput.stories.tsx +178 -1
  305. package/src/components/formField/inputs/checkbox/CheckboxInput.test.tsx +58 -0
  306. package/src/components/formField/inputs/checkbox/CheckboxInput.tsx +3 -3
  307. package/src/components/pill/Pill.tsx +1 -0
  308. package/src/components/searchBar/SearchBar.test.tsx +3 -3
  309. package/src/components/searchBar/SearchBar.tsx +1 -0
  310. package/src/components/table/Table.stories.tsx +0 -5
  311. package/src/components/table/Table.test.tsx +0 -5
  312. package/src/utils/popupParent/PopupParentContext.stories.tsx +1 -0
@@ -0,0 +1,318 @@
1
+ import { fn } from 'storybook/test';
2
+ import { CustomReportWriterPage } from './CustomReportWriterPage.js';
3
+ /**
4
+ * Well, picture it: St. Olaf, 1989.
5
+ *
6
+ * Every year, the town hall would commission a big batch of reports - attendance
7
+ * of the yodeling classes, staff contracts for the eel wranglers, medical events
8
+ * from the annual lutefisk tasting incident. Old Sigrid Petersen was in charge
9
+ * of keeping track of them all, and she did it by stacking them in three different
10
+ * drawers: Active reports (currently useful), Archived reports (lovingly retired),
11
+ * and Expired reports (the ones that had gone stale because the student groups
12
+ * they referenced no longer existed). Every few months someone would open the
13
+ * Expired drawer and a warning note would fall out saying "Fix the filters, Sigrid!"
14
+ * It was very stressful. Poor Sigrid.
15
+ *
16
+ * The CustomReportWriterPage is the digital solution that would have saved Sigrid
17
+ * years of drawer-related anxiety. It is the main page for browsing and managing
18
+ * custom reports in the Arbor system - three clear tabs (Active, Archived, Expired),
19
+ * a warning banner about expired filters, a download dropdown, scheduling and
20
+ * duplication tooling, and a powerful AG Grid table showing all reports at a glance.
21
+ *
22
+ * **Features:**
23
+ * - Placeholder SVGs for TopNav and SideNav (app shell components not yet in library)
24
+ * - Composed breadcrumb navigation: School / Custom Report Writer
25
+ * - Page heading "Custom Report Writer - All Reports" with a "Create New Report" primary button
26
+ * - Placeholder SVG for Banner/Alert (no Banner component in library yet)
27
+ * - Tab navigation to switch between Active, Archived, and Expired views
28
+ * - AG Grid table with: checkbox selection, Title (text-link), Type (with icon), Created By,
29
+ * Context, Created Date, Modified Date, Accessed Date, and a row-actions dropdown (Duplicate / Edit)
30
+ * - Primary toolbar with: Download dropdown (CSV / PDF), Schedule, Duplicate, Edit buttons
31
+ * - Bulk actions toolbar with: BulkActionsDropdown, HideColumnsDropdown, Export, Settings, Help,
32
+ * and Expand Table icon buttons (all with tooltips)
33
+ * - Filter row footer with a funnel icon, live row count, and a "Change" text-link button
34
+ *
35
+ * **Tab behaviour:**
36
+ * - The Active tab is selected by default on first render
37
+ * - Tab state is managed internally via useState - no external wiring needed
38
+ * - All three tabs (Active, Archived, Expired) display the same `reports` array -
39
+ * the consuming application is responsible for passing the correct subset per tab
40
+ *
41
+ * **Placeholder SVG components:**
42
+ *
43
+ * | Placeholder | Reason |
44
+ * |------------------|---------------------------------------------------------------------|
45
+ * | TopNav | App shell component - not yet available in the design system library |
46
+ * | SideNavIcons | App shell component - not yet available in the design system library |
47
+ * | SideNavText | App shell component - not yet available in the design system library |
48
+ * | Banner | No Banner/Alert component in library yet |
49
+ *
50
+ * **Composed (not library) components:**
51
+ *
52
+ * | Interim pattern | Reason |
53
+ * |------------------|---------------------------------------------------------------------|
54
+ * | Breadcrumb nav | No Breadcrumbs component in library yet - composed with nav/ol/li |
55
+ *
56
+ * **Callbacks:**
57
+ * - `onCreateNewReport` - fired when the "Create New Report" header button is clicked
58
+ * - `onSchedule` - fired when the "Schedule" toolbar button is clicked
59
+ * - `onDuplicateSelected` - fired when the primary toolbar "Duplicate" button is clicked
60
+ * - `onEditSelected` - fired when the primary toolbar "Edit" button is clicked
61
+ * - `onDownloadCsv` - fired when "Download as CSV" is selected from the Download dropdown
62
+ * - `onDownloadPdf` - fired when "Download as PDF" is selected from the Download dropdown
63
+ * - `onChangeFilters` - fired when the "Change" text-link in the filter footer is clicked
64
+ * - `onOpenReport` - fired with the report id when a report title link in the table is clicked
65
+ * - `onDuplicateReport` - fired with the full ReportRow object when "Duplicate" is chosen in a row dropdown
66
+ * - `onEditReport` - fired with the full ReportRow object when "Edit" is chosen in a row dropdown
67
+ *
68
+ * **Accessibility:**
69
+ * - Breadcrumb uses `<nav aria-label="Breadcrumb">` with `aria-current="page"` on the current item
70
+ * - The separator chevrons have `aria-hidden="true"` so screen readers skip them
71
+ * - All icon-only buttons have `iconLeftScreenReaderText` for screen reader users
72
+ * - Tooltip wrappers provide visible labels for Export, Settings, Help, and Expand Table buttons
73
+ * - Page structure uses semantic `<main>`, `<header>`, and `<nav>` landmarks
74
+ * - All placeholder SVGs have `role="img"` with descriptive `aria-label` attributes
75
+ */
76
+ const meta = {
77
+ title: 'Pages/CustomReportWriterPage',
78
+ component: CustomReportWriterPage,
79
+ parameters: {
80
+ layout: 'fullscreen',
81
+ docs: {
82
+ description: {
83
+ component: 'The Custom Report Writer page for browsing and managing custom reports across Active, Archived, and Expired views. Features a warning banner for expired filters, a Download dropdown, scheduling and duplication tooling, and an AG Grid table with per-row actions. App shell components (TopNav, SideNav) are represented as placeholder SVGs pending their implementation. Back in St. Olaf, Sigrid Petersen kept all her custom reports in three separate drawers and a warning note kept falling out of the Expired one. This page fixes all of that.',
84
+ },
85
+ },
86
+ },
87
+ tags: ['autodocs'],
88
+ args: {
89
+ onCreateNewReport: fn(),
90
+ onSchedule: fn(),
91
+ onDuplicateSelected: fn(),
92
+ onEditSelected: fn(),
93
+ onDownloadCsv: fn(),
94
+ onDownloadPdf: fn(),
95
+ onChangeFilters: fn(),
96
+ onOpenReport: fn(),
97
+ onDuplicateReport: fn(),
98
+ onEditReport: fn(),
99
+ },
100
+ argTypes: {
101
+ reports: {
102
+ control: 'object',
103
+ description: 'The list of reports to display in the AG Grid table. Each report has an id, title, type, createdBy, context, createdDate, modifiedDate, and accessedDate. Defaults to a built-in set of six realistic example reports when not provided.',
104
+ },
105
+ bulkActions: {
106
+ control: 'object',
107
+ description: 'The list of bulk actions available in the BulkActionsDropdown toolbar. Each action has a displayName, a callback (receives the GridApi), and an optional disabled flag. Defaults to Archive and Delete actions.',
108
+ },
109
+ onCreateNewReport: {
110
+ description: 'Called when the "Create New Report" button in the page header is clicked. Wire this up to open a report creation form or navigate to a creation wizard.',
111
+ },
112
+ onSchedule: {
113
+ description: 'Called when the "Schedule" button in the primary toolbar is clicked. Use this to open a scheduling modal for the selected report(s).',
114
+ },
115
+ onDuplicateSelected: {
116
+ description: 'Called when the "Duplicate" button in the primary toolbar is clicked. Use this to duplicate the currently selected report row(s).',
117
+ },
118
+ onEditSelected: {
119
+ description: 'Called when the "Edit" button in the primary toolbar is clicked. Use this to open the edit form for the currently selected report row(s).',
120
+ },
121
+ onDownloadCsv: {
122
+ description: 'Called when "Download as CSV" is selected from the Download dropdown. Wire this up to trigger a CSV export of the current report data.',
123
+ },
124
+ onDownloadPdf: {
125
+ description: 'Called when "Download as PDF" is selected from the Download dropdown. Wire this up to trigger a PDF export of the current report data.',
126
+ },
127
+ onChangeFilters: {
128
+ description: 'Called when the "Change" text-link button in the filter footer row is clicked. Use this to open a filter configuration panel or modal.',
129
+ },
130
+ onOpenReport: {
131
+ description: 'Called with the report id (string) when a report title text-link is clicked in the table. Use this to navigate to the report detail or run the report.',
132
+ },
133
+ onDuplicateReport: {
134
+ description: 'Called with the full ReportRow object when "Duplicate" is selected from a row\'s actions dropdown (ellipsis menu). Use this to duplicate that specific report.',
135
+ },
136
+ onEditReport: {
137
+ description: 'Called with the full ReportRow object when "Edit" is selected from a row\'s actions dropdown (ellipsis menu). Use this to open the edit form for that specific report.',
138
+ },
139
+ className: {
140
+ control: 'text',
141
+ description: 'Optional additional CSS class name(s) to apply to the page root element.',
142
+ },
143
+ },
144
+ };
145
+ export default meta;
146
+ // ---------------------------------------------------------------------------
147
+ // Shared data fixtures - the finest custom reports this side of St. Olaf
148
+ // ---------------------------------------------------------------------------
149
+ /**
150
+ * A small, realistic set of reports spanning different types and contexts.
151
+ * Enough to show the table working without overwhelming the viewer.
152
+ */
153
+ const customReports = [
154
+ {
155
+ id: 'cr-1',
156
+ title: 'Year 11 Attendance Summary',
157
+ type: 'Student',
158
+ createdBy: 'Margaret Thornton',
159
+ context: 'Classes',
160
+ createdDate: '3rd Sep 2023',
161
+ modifiedDate: '14th Nov 2023',
162
+ accessedDate: '5th Feb 2026',
163
+ },
164
+ {
165
+ id: 'cr-2',
166
+ title: 'Staff Absence Overview',
167
+ type: 'Staff',
168
+ createdBy: 'David Hughes',
169
+ context: 'Staff Contract Port',
170
+ createdDate: '15th Jan 2024',
171
+ modifiedDate: '22nd Jan 2024',
172
+ accessedDate: '10th Feb 2026',
173
+ },
174
+ {
175
+ id: 'cr-3',
176
+ title: 'Whole School Behaviour Report',
177
+ type: 'School',
178
+ createdBy: 'Arbor Admin',
179
+ context: 'Single Group Staff',
180
+ createdDate: '1st Apr 2024',
181
+ modifiedDate: '1st Apr 2024',
182
+ accessedDate: '12th Jan 2026',
183
+ },
184
+ ];
185
+ /**
186
+ * Bulk actions wired to fn() so they appear in the Actions panel.
187
+ * In a real integration these would call into the application logic.
188
+ */
189
+ const customBulkActions = [
190
+ {
191
+ displayName: 'Archive',
192
+ callback: fn(),
193
+ },
194
+ {
195
+ displayName: 'Move to Folder',
196
+ callback: fn(),
197
+ },
198
+ {
199
+ displayName: 'Delete',
200
+ callback: fn(),
201
+ disabled: false,
202
+ },
203
+ ];
204
+ // ---------------------------------------------------------------------------
205
+ // Stories
206
+ // ---------------------------------------------------------------------------
207
+ /**
208
+ * The default state, using the component's built-in example reports.
209
+ *
210
+ * Oh, this is just like St. Olaf on a perfectly ordinary Tuesday! Everything
211
+ * is in its place, the reports are all there, the warning banner is kindly
212
+ * reminding you about those expired filters, and the three tabs are lined up
213
+ * waiting for you to choose: Active, Archived, or Expired.
214
+ *
215
+ * This story renders with no props at all (well, the callback `fn()` spies are
216
+ * there, but they come from the meta args). The component's own built-in default
217
+ * data takes over: six realistic example reports including attendance records,
218
+ * student contacts, school name stamps, aptitude reports, a staff contract port,
219
+ * and a medical events report. Just a lovely cross-section of school life.
220
+ *
221
+ * Things to try:
222
+ * - Click the "Active", "Archived", or "Expired" tabs to switch views
223
+ * - Click "Create New Report" to fire `onCreateNewReport` (see the Actions panel)
224
+ * - Click the "Download" dropdown to access CSV and PDF export options
225
+ * - Click any report title link to fire `onOpenReport` with that report's id
226
+ * - Click the ellipsis icon on any row to access "Duplicate" or "Edit" row actions
227
+ */
228
+ export const Default = {
229
+ name: 'Default (Built-in Data)',
230
+ };
231
+ /**
232
+ * The page loaded with a custom set of reports.
233
+ *
234
+ * You know, this reminds me of the time in St. Olaf when the new school
235
+ * secretary, Ingrid Bergsen, came in and said "I'm going to reorganise all
236
+ * the reports my way." And she did! Three beautiful new reports: an attendance
237
+ * summary for Year 11, a staff absence overview, and a whole-school behaviour
238
+ * report. Each one was relevant, well-named, and lovingly created by a real
239
+ * person (well, two real people and Arbor Admin, but that counts).
240
+ *
241
+ * This story demonstrates passing your own `reports` array to the component.
242
+ * Three reports of different types (Student, Staff, School) are shown, each
243
+ * with a different creator and context. The Type column correctly shows the
244
+ * matching icon for each type - a person icon for Student and Staff, a house
245
+ * for School.
246
+ *
247
+ * Click any report title to fire `onOpenReport`. Use the ellipsis row dropdown
248
+ * to fire `onDuplicateReport` or `onEditReport` with the full report object.
249
+ */
250
+ export const WithCustomReports = {
251
+ name: 'With Custom Reports',
252
+ args: {
253
+ reports: customReports,
254
+ },
255
+ };
256
+ /**
257
+ * The empty state - no reports have been created yet.
258
+ *
259
+ * Oh, this is like arriving at the St. Olaf town hall on the very first day
260
+ * before anyone has filed a single thing. The breadcrumbs are there, the header
261
+ * is gleaming, the three tabs are ready and waiting, the banner placeholder is still
262
+ * dutifully occupying its space (even though there are no expired filters yet,
263
+ * which is a little philosophical if you think about it), and the table
264
+ * is absolutely, beautifully empty. The AG Grid dutifully shows zero rows.
265
+ *
266
+ * This is your starting point. A fresh system with no custom reports yet.
267
+ * Click "Create New Report" to begin populating the list. The toolbar buttons
268
+ * and filter footer render correctly even with an empty table, so you can
269
+ * verify the overall page layout without needing any data.
270
+ *
271
+ * Notice that the warning banner still renders - in a real application you
272
+ * would likely hide it conditionally when there are no expired reports, but
273
+ * this story shows the full page chrome regardless so you can inspect every element.
274
+ */
275
+ export const EmptyState = {
276
+ name: 'Empty State (No Reports)',
277
+ args: {
278
+ reports: [],
279
+ },
280
+ };
281
+ /**
282
+ * All callbacks wired to Storybook action spies so you can watch them fire.
283
+ *
284
+ * Back in St. Olaf, when something important happened - say, someone opened
285
+ * a report or clicked "Create New Report" - we would ring the town bell so
286
+ * the whole village knew. In Storybook, we use the Actions panel at the bottom
287
+ * of the screen instead! It is very much like a town bell, only quieter and
288
+ * with more TypeScript.
289
+ *
290
+ * Since all callbacks are already wired via `fn()` in the meta `args` above,
291
+ * every story technically has them. But this story is named "With Callbacks
292
+ * Logged" so it is easy to find when you want to specifically focus on testing
293
+ * the interaction wiring. It uses the custom report set so there is something
294
+ * interesting to interact with.
295
+ *
296
+ * Open the "Actions" panel at the bottom of Storybook and try these interactions:
297
+ * - Click "Create New Report" --> `onCreateNewReport` fires
298
+ * - Open the Download dropdown and click "Download as CSV" --> `onDownloadCsv` fires
299
+ * - Open the Download dropdown and click "Download as PDF" --> `onDownloadPdf` fires
300
+ * - Click the "Schedule" button --> `onSchedule` fires
301
+ * - Click the primary toolbar "Duplicate" --> `onDuplicateSelected` fires
302
+ * - Click the primary toolbar "Edit" --> `onEditSelected` fires
303
+ * - Click the "Change" link in the filter footer --> `onChangeFilters` fires
304
+ * - Click a report title text-link --> `onOpenReport` fires with the report id
305
+ * - Click an ellipsis row button and choose "Duplicate" --> `onDuplicateReport` fires with the ReportRow
306
+ * - Click an ellipsis row button and choose "Edit" --> `onEditReport` fires with the ReportRow
307
+ *
308
+ * It is most excellent for verifying integration with parent components or
309
+ * application routing logic, hunni!
310
+ */
311
+ export const WithCallbacksLogged = {
312
+ name: 'With Callbacks Logged',
313
+ args: {
314
+ reports: customReports,
315
+ bulkActions: customBulkActions,
316
+ },
317
+ };
318
+ //# sourceMappingURL=CustomReportWriterPage.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomReportWriterPage.stories.js","sourceRoot":"","sources":["../../../src/pages/customReportWriterPage/CustomReportWriterPage.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ //# sourceMappingURL=CustomReportWriterPage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomReportWriterPage.test.d.ts","sourceRoot":"","sources":["../../../src/pages/customReportWriterPage/CustomReportWriterPage.test.tsx"],"names":[],"mappings":"AAEA,OAAO,kCAAkC,CAAC"}
@@ -0,0 +1,183 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { render, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
4
+ import '@testing-library/jest-dom/vitest';
5
+ import { describe, it, expect, vi } from 'vitest';
6
+ import { CustomReportWriterPage } from './CustomReportWriterPage.js';
7
+ // AG Grid requires a license key — mock Table to avoid license errors in tests.
8
+ // The factory must be self-contained (vi.mock is hoisted above imports).
9
+ vi.mock('Components/table/Table', () => {
10
+ const Table = ({ rowData, headerContent, footerContent, }) => (_jsxs("div", { children: [headerContent, _jsx("div", { role: "grid", "aria-label": "Reports table", children: rowData.map(row => (_jsxs("div", { role: "row", children: [_jsx("span", { children: row.title }), _jsx("span", { children: row.type }), _jsx("span", { children: row.createdBy })] }, row.id))) }), footerContent] }));
11
+ const BulkActionsDropdown = () => _jsx("div", {});
12
+ BulkActionsDropdown.displayName = 'Table.BulkActionsDropdown';
13
+ Table.BulkActionsDropdown = BulkActionsDropdown;
14
+ const HideColumnsDropdown = () => _jsx("div", {});
15
+ HideColumnsDropdown.displayName = 'Table.HideColumnsDropdown';
16
+ Table.HideColumnsDropdown = HideColumnsDropdown;
17
+ const RowCountInfo = () => _jsx("span", { children: "Showing results" });
18
+ RowCountInfo.displayName = 'Table.RowCountInfo';
19
+ Table.RowCountInfo = RowCountInfo;
20
+ return { Table };
21
+ });
22
+ describe('CustomReportWriterPage', () => {
23
+ describe('page structure', () => {
24
+ it('renders the page heading', () => {
25
+ render(_jsx(CustomReportWriterPage, {}));
26
+ expect(screen.getByRole('heading', { name: 'Custom Report Writer - All Reports' })).toBeInTheDocument();
27
+ });
28
+ it('renders placeholder SVGs for missing components', () => {
29
+ render(_jsx(CustomReportWriterPage, {}));
30
+ expect(screen.getByRole('img', { name: /TopNav placeholder/i })).toBeInTheDocument();
31
+ expect(screen.getByRole('img', { name: /SideNavIcons placeholder/i })).toBeInTheDocument();
32
+ expect(screen.getByRole('img', { name: /SideNavText placeholder/i })).toBeInTheDocument();
33
+ });
34
+ it('renders with a main landmark', () => {
35
+ render(_jsx(CustomReportWriterPage, {}));
36
+ expect(screen.getByRole('main')).toBeInTheDocument();
37
+ });
38
+ it('applies custom className to the root element', () => {
39
+ const { container } = render(_jsx(CustomReportWriterPage, { className: "my-custom-class" }));
40
+ expect(container.firstChild).toHaveClass('my-custom-class');
41
+ });
42
+ });
43
+ describe('breadcrumbs', () => {
44
+ it('renders breadcrumb navigation', () => {
45
+ render(_jsx(CustomReportWriterPage, {}));
46
+ expect(screen.getByRole('navigation', { name: /Breadcrumb/i })).toBeInTheDocument();
47
+ });
48
+ it('renders the School breadcrumb link', () => {
49
+ render(_jsx(CustomReportWriterPage, {}));
50
+ expect(screen.getByRole('button', { name: /School/i })).toBeInTheDocument();
51
+ });
52
+ it('renders the current page breadcrumb item', () => {
53
+ render(_jsx(CustomReportWriterPage, {}));
54
+ expect(screen.getByText('Custom Report Writer')).toBeInTheDocument();
55
+ });
56
+ });
57
+ describe('warning banner', () => {
58
+ it('renders the banner placeholder SVG', () => {
59
+ render(_jsx(CustomReportWriterPage, {}));
60
+ expect(screen.getByRole('img', { name: /Banner placeholder/i })).toBeInTheDocument();
61
+ });
62
+ });
63
+ describe('tabs', () => {
64
+ it('renders the Active, Archived, and Expired tabs', () => {
65
+ render(_jsx(CustomReportWriterPage, {}));
66
+ expect(screen.getByRole('tab', { name: /Active/i })).toBeInTheDocument();
67
+ expect(screen.getByRole('tab', { name: /Archived/i })).toBeInTheDocument();
68
+ expect(screen.getByRole('tab', { name: /Expired/i })).toBeInTheDocument();
69
+ });
70
+ it('renders Active tab as selected by default', () => {
71
+ render(_jsx(CustomReportWriterPage, {}));
72
+ expect(screen.getByRole('tab', { name: /Active/i })).toHaveAttribute('aria-selected', 'true');
73
+ });
74
+ it('switches to Archived tab when clicked', async () => {
75
+ const user = userEvent.setup();
76
+ render(_jsx(CustomReportWriterPage, {}));
77
+ await user.click(screen.getByRole('tab', { name: /Archived/i }));
78
+ expect(screen.getByRole('tab', { name: /Archived/i })).toHaveAttribute('aria-selected', 'true');
79
+ expect(screen.getByRole('tab', { name: /Active/i })).toHaveAttribute('aria-selected', 'false');
80
+ });
81
+ it('switches to Expired tab when clicked', async () => {
82
+ const user = userEvent.setup();
83
+ render(_jsx(CustomReportWriterPage, {}));
84
+ await user.click(screen.getByRole('tab', { name: /Expired/i }));
85
+ expect(screen.getByRole('tab', { name: /Expired/i })).toHaveAttribute('aria-selected', 'true');
86
+ });
87
+ });
88
+ describe('toolbar actions', () => {
89
+ it('renders the Create New Report button', () => {
90
+ render(_jsx(CustomReportWriterPage, {}));
91
+ expect(screen.getByRole('button', { name: /Create New Report/i })).toBeInTheDocument();
92
+ });
93
+ it('calls onCreateNewReport when Create New Report is clicked', async () => {
94
+ const user = userEvent.setup();
95
+ const onCreateNewReport = vi.fn();
96
+ render(_jsx(CustomReportWriterPage, { onCreateNewReport: onCreateNewReport }));
97
+ await user.click(screen.getByRole('button', { name: /Create New Report/i }));
98
+ expect(onCreateNewReport).toHaveBeenCalledTimes(1);
99
+ });
100
+ it('renders the Schedule button', () => {
101
+ render(_jsx(CustomReportWriterPage, {}));
102
+ expect(screen.getByRole('button', { name: /^Schedule$/i })).toBeInTheDocument();
103
+ });
104
+ it('calls onSchedule when Schedule is clicked', async () => {
105
+ const user = userEvent.setup();
106
+ const onSchedule = vi.fn();
107
+ render(_jsx(CustomReportWriterPage, { onSchedule: onSchedule }));
108
+ await user.click(screen.getByRole('button', { name: /^Schedule$/i }));
109
+ expect(onSchedule).toHaveBeenCalledTimes(1);
110
+ });
111
+ it('renders the Duplicate button', () => {
112
+ render(_jsx(CustomReportWriterPage, {}));
113
+ expect(screen.getByRole('button', { name: /^Duplicate$/i })).toBeInTheDocument();
114
+ });
115
+ it('calls onDuplicateSelected when Duplicate is clicked', async () => {
116
+ const user = userEvent.setup();
117
+ const onDuplicateSelected = vi.fn();
118
+ render(_jsx(CustomReportWriterPage, { onDuplicateSelected: onDuplicateSelected }));
119
+ await user.click(screen.getByRole('button', { name: /^Duplicate$/i }));
120
+ expect(onDuplicateSelected).toHaveBeenCalledTimes(1);
121
+ });
122
+ it('renders the Edit button', () => {
123
+ render(_jsx(CustomReportWriterPage, {}));
124
+ expect(screen.getByRole('button', { name: /^Edit$/i })).toBeInTheDocument();
125
+ });
126
+ it('calls onEditSelected when Edit is clicked', async () => {
127
+ const user = userEvent.setup();
128
+ const onEditSelected = vi.fn();
129
+ render(_jsx(CustomReportWriterPage, { onEditSelected: onEditSelected }));
130
+ await user.click(screen.getByRole('button', { name: /^Edit$/i }));
131
+ expect(onEditSelected).toHaveBeenCalledTimes(1);
132
+ });
133
+ it('renders the Change filters button', () => {
134
+ render(_jsx(CustomReportWriterPage, {}));
135
+ expect(screen.getByRole('button', { name: /^Change$/i })).toBeInTheDocument();
136
+ });
137
+ it('calls onChangeFilters when Change is clicked', async () => {
138
+ const user = userEvent.setup();
139
+ const onChangeFilters = vi.fn();
140
+ render(_jsx(CustomReportWriterPage, { onChangeFilters: onChangeFilters }));
141
+ await user.click(screen.getByRole('button', { name: /^Change$/i }));
142
+ expect(onChangeFilters).toHaveBeenCalledTimes(1);
143
+ });
144
+ });
145
+ describe('icon toolbar buttons', () => {
146
+ it('renders Export, Settings, Help, and Expand icon buttons', () => {
147
+ render(_jsx(CustomReportWriterPage, {}));
148
+ expect(screen.getByRole('button', { name: /Export/i })).toBeInTheDocument();
149
+ expect(screen.getByRole('button', { name: /Settings/i })).toBeInTheDocument();
150
+ expect(screen.getByRole('button', { name: /Help/i })).toBeInTheDocument();
151
+ expect(screen.getByRole('button', { name: /Expand table/i })).toBeInTheDocument();
152
+ });
153
+ });
154
+ describe('table', () => {
155
+ it('renders the reports table', () => {
156
+ render(_jsx(CustomReportWriterPage, {}));
157
+ expect(screen.getByRole('grid', { name: /Reports table/i })).toBeInTheDocument();
158
+ });
159
+ it('renders default report data', () => {
160
+ render(_jsx(CustomReportWriterPage, {}));
161
+ expect(screen.getByText('Attendance of All Groups')).toBeInTheDocument();
162
+ expect(screen.getByText('Student Contact Reports')).toBeInTheDocument();
163
+ expect(screen.getByText('Medical Events')).toBeInTheDocument();
164
+ });
165
+ it('renders custom reports when provided', () => {
166
+ const customReports = [
167
+ {
168
+ id: '99',
169
+ title: 'My Custom Report',
170
+ type: 'Student',
171
+ createdBy: 'Test User',
172
+ context: 'School',
173
+ createdDate: '1st Jan 2025',
174
+ modifiedDate: '1st Jan 2025',
175
+ accessedDate: '1st Jan 2025',
176
+ },
177
+ ];
178
+ render(_jsx(CustomReportWriterPage, { reports: customReports }));
179
+ expect(screen.getByText('My Custom Report')).toBeInTheDocument();
180
+ });
181
+ });
182
+ });
183
+ //# sourceMappingURL=CustomReportWriterPage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomReportWriterPage.test.js","sourceRoot":"","sources":["../../../src/pages/customReportWriterPage/CustomReportWriterPage.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * GradeSetsPage - Browse and manage Grade Sets.
3
+ * Displays active and archived grade sets in an AG Grid table with tab navigation.
4
+ */
5
+ import type { GridApi } from 'ag-grid-enterprise';
6
+ export type GradeSet = {
7
+ id: string;
8
+ longName: string;
9
+ shortName: string;
10
+ };
11
+ export type GradeSetBulkAction = {
12
+ displayName: string;
13
+ callback: (api: GridApi | null) => void;
14
+ disabled?: boolean;
15
+ };
16
+ export type GradeSetsPageProps = {
17
+ activeGradeSets?: GradeSet[];
18
+ archivedGradeSets?: GradeSet[];
19
+ bulkActions?: GradeSetBulkAction[];
20
+ onCreateGradeSet?: () => void;
21
+ onRowClick?: (gradeSet: GradeSet) => void;
22
+ onExpandTable?: () => void;
23
+ className?: string;
24
+ };
25
+ export declare const GradeSetsPage: ({ activeGradeSets, archivedGradeSets, bulkActions, onCreateGradeSet, onRowClick, onExpandTable, className, }: GradeSetsPageProps) => import("react/jsx-runtime").JSX.Element;
26
+ //# sourceMappingURL=GradeSetsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradeSetsPage.d.ts","sourceRoot":"","sources":["../../../src/pages/gradeSetsPage/GradeSetsPage.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAU1D,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF,eAAO,MAAM,aAAa,GAAI,8GAQ3B,kBAAkB,4CA4FpB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { useState } from 'react';
4
+ import { Button } from '../../components/button/Button.js';
5
+ import { Heading } from '../../components/heading/Heading.js';
6
+ import { Icon } from '../../components/icon/Icon.js';
7
+ import { Section } from '../../components/section/Section.js';
8
+ import { Table } from '../../components/table/Table.js';
9
+ import { Tabs } from '../../components/tabs/Tabs.js';
10
+ const columnDefs = [
11
+ {
12
+ field: 'longName',
13
+ headerName: 'Grade Set Long Name',
14
+ flex: 1,
15
+ },
16
+ {
17
+ field: 'shortName',
18
+ headerName: 'Grade Set Short Name',
19
+ flex: 1,
20
+ },
21
+ ];
22
+ export const GradeSetsPage = ({ activeGradeSets = [], archivedGradeSets = [], bulkActions = [], onCreateGradeSet, onRowClick, onExpandTable, className, }) => {
23
+ const [activeTab, setActiveTab] = useState('active');
24
+ const rowData = activeTab === 'active' ? activeGradeSets : archivedGradeSets;
25
+ const tableHeaderContent = (_jsxs(_Fragment, { children: [_jsx(Table.BulkActionsDropdown, { actions: bulkActions }), _jsx(Button, { variant: "dropdown", size: "S", children: "Hide" })] }));
26
+ const tableFooterContent = (_jsxs(_Fragment, { children: [_jsxs("span", { children: ["Showing", ' ', rowData.length, ' ', rowData.length === 1 ? 'result' : 'results'] }), _jsx(Button, { variant: "secondary", size: "S", onClick: onExpandTable, children: "Expand Table" })] }));
27
+ return (_jsxs("div", { className: classNames('ds-grade-sets-page', className), children: [_jsx("nav", { "aria-label": "Breadcrumb", className: "ds-grade-sets-page__breadcrumbs", children: _jsxs("ol", { className: "ds-grade-sets-page__breadcrumb-list", children: [_jsx("li", { className: "ds-grade-sets-page__breadcrumb-item", children: _jsx("a", { href: "/assessments", className: "ds-grade-sets-page__breadcrumb-link", children: "Assessments" }) }), _jsx("li", { className: "ds-grade-sets-page__breadcrumb-item", children: _jsx("a", { href: "/assessments/settings", className: "ds-grade-sets-page__breadcrumb-link", children: "Settings" }) }), _jsxs("li", { className: "ds-grade-sets-page__breadcrumb-item ds-grade-sets-page__breadcrumb-item--current", "aria-current": "page", children: ["Grade Sets", _jsx(Icon, { name: "link", size: 16, screenReaderText: "Permalink" })] })] }) }), _jsxs("header", { className: "ds-grade-sets-page__header", children: [_jsx(Heading, { level: 1, children: "Grade Sets" }), _jsx(Button, { variant: "secondary", onClick: onCreateGradeSet, children: "Create Grade Set" })] }), _jsxs(Tabs, { children: [_jsx(Tabs.Item, { active: activeTab === 'active', tabElementProps: { onClick: () => setActiveTab('active') }, children: "Active" }), _jsx(Tabs.Item, { active: activeTab === 'archived', tabElementProps: { onClick: () => setActiveTab('archived') }, children: "Archived" })] }), _jsx(Section, { className: "ds-grade-sets-page__content", children: _jsx(Table, { rowData: rowData, columnDefs: columnDefs, domLayout: "autoHeight", headerContent: tableHeaderContent, footerContent: tableFooterContent, hasSearch: false, onRowClicked: (event) => {
28
+ if (event.data) {
29
+ onRowClick?.(event.data);
30
+ }
31
+ } }) })] }));
32
+ };
33
+ //# sourceMappingURL=GradeSetsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradeSetsPage.js","sourceRoot":"","sources":["../../../src/pages/gradeSetsPage/GradeSetsPage.tsx"],"names":[],"mappings":"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"}