@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.
- package/.changeset/twenty-groups-wonder.md +5 -0
- package/.changeset/yellow-falcons-search.md +5 -0
- package/CHANGELOG.md +12 -0
- package/dist/components/avatar/Avatar.js +2 -2
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/badge/Badge.stories.d.ts +0 -1
- package/dist/components/badge/Badge.stories.d.ts.map +1 -1
- package/dist/components/badge/Badge.stories.js +0 -69
- package/dist/components/badge/Badge.stories.js.map +1 -1
- package/dist/components/button/Button.story.d.ts +47 -0
- package/dist/components/button/Button.story.d.ts.map +1 -0
- package/dist/components/button/Button.story.js +123 -0
- package/dist/components/button/Button.story.js.map +1 -0
- package/dist/components/button/ButtonUsageExample.d.ts +2 -0
- package/dist/components/button/ButtonUsageExample.d.ts.map +1 -0
- package/dist/components/button/ButtonUsageExample.js +11 -0
- package/dist/components/button/ButtonUsageExample.js.map +1 -0
- package/dist/components/combobox/useElementWidth.d.ts +2 -0
- package/dist/components/combobox/useElementWidth.d.ts.map +1 -0
- package/dist/components/combobox/useElementWidth.js +31 -0
- package/dist/components/combobox/useElementWidth.js.map +1 -0
- package/dist/components/combobox/useVisibleChips.d.ts +21 -0
- package/dist/components/combobox/useVisibleChips.d.ts.map +1 -0
- package/dist/components/combobox/useVisibleChips.js +59 -0
- package/dist/components/combobox/useVisibleChips.js.map +1 -0
- package/dist/components/combobox/useVisibleChips.test.d.ts +2 -0
- package/dist/components/combobox/useVisibleChips.test.d.ts.map +1 -0
- package/dist/components/combobox/useVisibleChips.test.js +81 -0
- package/dist/components/combobox/useVisibleChips.test.js.map +1 -0
- package/dist/components/dot/Dot.d.ts.map +1 -1
- package/dist/components/dot/Dot.js +1 -1
- package/dist/components/dot/Dot.js.map +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.d.ts +2 -2
- package/dist/components/formField/inputs/checkbox/CheckboxInput.d.ts.map +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.js +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.js.map +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.d.ts +2 -0
- package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.d.ts.map +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.js +100 -0
- package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.js.map +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.test.js +17 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.test.js.map +1 -1
- package/dist/components/heading/HeadingInnerContainer.d.ts +5 -0
- package/dist/components/heading/HeadingInnerContainer.d.ts.map +1 -0
- package/dist/components/heading/HeadingInnerContainer.js +7 -0
- package/dist/components/heading/HeadingInnerContainer.js.map +1 -0
- package/dist/components/icoText/IcoText.d.ts +37 -0
- package/dist/components/icoText/IcoText.d.ts.map +1 -0
- package/dist/components/icoText/IcoText.js +29 -0
- package/dist/components/icoText/IcoText.js.map +1 -0
- package/dist/components/icoText/IcoText.stories.d.ts +60 -0
- package/dist/components/icoText/IcoText.stories.d.ts.map +1 -0
- package/dist/components/icoText/IcoText.stories.js +319 -0
- package/dist/components/icoText/IcoText.stories.js.map +1 -0
- package/dist/components/icoText/IcoText.test.d.ts +2 -0
- package/dist/components/icoText/IcoText.test.d.ts.map +1 -0
- package/dist/components/icoText/IcoText.test.js +27 -0
- package/dist/components/icoText/IcoText.test.js.map +1 -0
- package/dist/components/pill/Pill.d.ts.map +1 -1
- package/dist/components/pill/Pill.js +1 -1
- package/dist/components/pill/Pill.js.map +1 -1
- package/dist/components/searchBar/SearchBar.d.ts.map +1 -1
- package/dist/components/searchBar/SearchBar.js +1 -1
- package/dist/components/searchBar/SearchBar.js.map +1 -1
- package/dist/components/searchBar/SearchBar.test.js +3 -3
- package/dist/components/searchBar/SearchBar.test.js.map +1 -1
- package/dist/components/sidebarNav/SidebarNav.d.ts +46 -0
- package/dist/components/sidebarNav/SidebarNav.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.js +102 -0
- package/dist/components/sidebarNav/SidebarNav.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.stories.d.ts +61 -0
- package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.stories.js +253 -0
- package/dist/components/sidebarNav/SidebarNav.stories.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.test.d.ts +2 -0
- package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.test.js +240 -0
- package/dist/components/sidebarNav/SidebarNav.test.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavContext.d.ts +13 -0
- package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavContext.js +15 -0
- package/dist/components/sidebarNav/SidebarNavContext.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavGroup.d.ts +10 -0
- package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavGroup.js +16 -0
- package/dist/components/sidebarNav/SidebarNavGroup.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItem.d.ts +32 -0
- package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItem.js +44 -0
- package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +8 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.js +14 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanel.d.ts +4 -0
- package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanel.js +9 -0
- package/dist/components/sidebarNav/SidebarNavPanel.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +10 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.js +21 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRail.d.ts +6 -0
- package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRail.js +7 -0
- package/dist/components/sidebarNav/SidebarNavRail.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +10 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.js +25 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailList.d.ts +4 -0
- package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailList.js +7 -0
- package/dist/components/sidebarNav/SidebarNavRailList.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +6 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.js +7 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +6 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.js +8 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTitle.d.ts +4 -0
- package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTitle.js +7 -0
- package/dist/components/sidebarNav/SidebarNavTitle.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +7 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.js +9 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +8 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.js +15 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.js.map +1 -0
- package/dist/components/sidebarNav/index.d.ts +4 -0
- package/dist/components/sidebarNav/index.d.ts.map +1 -0
- package/dist/components/sidebarNav/index.js +3 -0
- package/dist/components/sidebarNav/index.js.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +4 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.js +43 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.js.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts +2 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.js +52 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +1 -0
- package/dist/components/sidebarNav/types.d.ts +100 -0
- package/dist/components/sidebarNav/types.d.ts.map +1 -0
- package/dist/components/sidebarNav/types.js +4 -0
- package/dist/components/sidebarNav/types.js.map +1 -0
- package/dist/components/sidebarNav/useControllableBoolean.d.ts +9 -0
- package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -0
- package/dist/components/sidebarNav/useControllableBoolean.js +15 -0
- package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -0
- package/dist/components/slideover/Slideover.stories.d.ts +10 -0
- package/dist/components/slideover/Slideover.stories.d.ts.map +1 -0
- package/dist/components/slideover/Slideover.stories.js +12 -0
- package/dist/components/slideover/Slideover.stories.js.map +1 -0
- package/dist/components/table/BulkActionsDropdown.d.ts +12 -0
- package/dist/components/table/BulkActionsDropdown.d.ts.map +1 -0
- package/dist/components/table/BulkActionsDropdown.js +11 -0
- package/dist/components/table/BulkActionsDropdown.js.map +1 -0
- package/dist/components/table/HideColumnsDropdown.d.ts +9 -0
- package/dist/components/table/HideColumnsDropdown.d.ts.map +1 -0
- package/dist/components/table/HideColumnsDropdown.js +33 -0
- package/dist/components/table/HideColumnsDropdown.js.map +1 -0
- package/dist/components/table/Table.d.ts +1 -1
- package/dist/components/table/Table.stories.d.ts.map +1 -1
- package/dist/components/table/Table.stories.js +0 -5
- package/dist/components/table/Table.stories.js.map +1 -1
- package/dist/components/table/Table.test.js +0 -5
- package/dist/components/table/Table.test.js.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellEditor.d.ts +8 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellEditor.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellEditor.js +19 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellEditor.js.map +1 -0
- package/dist/components/table/hooks/useHistory.d.ts +20 -0
- package/dist/components/table/hooks/useHistory.d.ts.map +1 -0
- package/dist/components/table/hooks/useHistory.js +73 -0
- package/dist/components/table/hooks/useHistory.js.map +1 -0
- package/dist/components/table/hooks/useTableHistory.d.ts +21 -0
- package/dist/components/table/hooks/useTableHistory.d.ts.map +1 -0
- package/dist/components/table/hooks/useTableHistory.js +88 -0
- package/dist/components/table/hooks/useTableHistory.js.map +1 -0
- package/dist/components/table/pagination/TableSettingsDropdown.d.ts +2 -0
- package/dist/components/table/pagination/TableSettingsDropdown.d.ts.map +1 -0
- package/dist/components/table/pagination/TableSettingsDropdown.js +42 -0
- package/dist/components/table/pagination/TableSettingsDropdown.js.map +1 -0
- package/dist/components/table/tableHeader/TableHeader.d.ts +14 -0
- package/dist/components/table/tableHeader/TableHeader.d.ts.map +1 -0
- package/dist/components/table/tableHeader/TableHeader.js +55 -0
- package/dist/components/table/tableHeader/TableHeader.js.map +1 -0
- package/dist/components/table/tableHeader/index.d.ts +2 -0
- package/dist/components/table/tableHeader/index.d.ts.map +1 -0
- package/dist/components/table/tableHeader/index.js +2 -0
- package/dist/components/table/tableHeader/index.js.map +1 -0
- package/dist/components/table/tableTheme.d.ts +2 -0
- package/dist/components/table/tableTheme.d.ts.map +1 -0
- package/dist/components/table/tableTheme.js +18 -0
- package/dist/components/table/tableTheme.js.map +1 -0
- package/dist/components/table/types.d.ts +169 -0
- package/dist/components/table/types.d.ts.map +1 -0
- package/dist/components/table/types.js +11 -0
- package/dist/components/table/types.js.map +1 -0
- package/dist/components/table/utils/setAgGridLicenseKey.d.ts +2 -0
- package/dist/components/table/utils/setAgGridLicenseKey.d.ts.map +1 -0
- package/dist/components/table/utils/setAgGridLicenseKey.js +11 -0
- package/dist/components/table/utils/setAgGridLicenseKey.js.map +1 -0
- package/dist/layoutTest.stories.d.ts +6 -0
- package/dist/layoutTest.stories.d.ts.map +1 -0
- package/dist/layoutTest.stories.js +9 -0
- package/dist/layoutTest.stories.js.map +1 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.d.ts +39 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.d.ts.map +1 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.js +112 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.js.map +1 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.d.ts +184 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.d.ts.map +1 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.js +317 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.js.map +1 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.d.ts +2 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.d.ts.map +1 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.js +160 -0
- package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.js.map +1 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.d.ts +11 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.d.ts.map +1 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.js +13 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.js.map +1 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.d.ts +174 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.d.ts.map +1 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.js +212 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.js.map +1 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.d.ts +2 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.d.ts.map +1 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.js +84 -0
- package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.js.map +1 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.d.ts +16 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.d.ts.map +1 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.js +31 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.js.map +1 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.stories.d.ts +162 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.stories.d.ts.map +1 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.stories.js +290 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.stories.js.map +1 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.test.d.ts +2 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.test.d.ts.map +1 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.test.js +109 -0
- package/dist/pages/assessmentsPage/AssessmentsPage.test.js.map +1 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.d.ts +40 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.d.ts.map +1 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.js +156 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.js.map +1 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.d.ts +239 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.d.ts.map +1 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.js +318 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.js.map +1 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.d.ts +2 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.d.ts.map +1 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.js +183 -0
- package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.js.map +1 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.d.ts +26 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.d.ts.map +1 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.js +33 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.js.map +1 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.stories.d.ts +176 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.stories.d.ts.map +1 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.stories.js +237 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.stories.js.map +1 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.test.d.ts +2 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.test.d.ts.map +1 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.test.js +91 -0
- package/dist/pages/gradeSetsPage/GradeSetsPage.test.js.map +1 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.d.ts +48 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.d.ts.map +1 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.js +52 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.js.map +1 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.stories.d.ts +218 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.stories.d.ts.map +1 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.stories.js +273 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.stories.js.map +1 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.test.d.ts +2 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.test.d.ts.map +1 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.test.js +197 -0
- package/dist/pages/studentProfilePage/StudentProfilePage.test.js.map +1 -0
- package/dist/utils/PopupParentContext.d.ts +3 -0
- package/dist/utils/PopupParentContext.d.ts.map +1 -0
- package/dist/utils/PopupParentContext.js +6 -0
- package/dist/utils/PopupParentContext.js.map +1 -0
- package/dist/utils/PopupParentContext.stories.d.ts +17 -0
- package/dist/utils/PopupParentContext.stories.d.ts.map +1 -0
- package/dist/utils/PopupParentContext.stories.js +266 -0
- package/dist/utils/PopupParentContext.stories.js.map +1 -0
- package/dist/utils/getDefaultPopupParent.d.ts +2 -0
- package/dist/utils/getDefaultPopupParent.d.ts.map +1 -0
- package/dist/utils/getDefaultPopupParent.js +19 -0
- package/dist/utils/getDefaultPopupParent.js.map +1 -0
- package/dist/utils/popupParent/PopupParentContext.stories.d.ts.map +1 -1
- package/dist/utils/popupParent/PopupParentContext.stories.js +1 -1
- package/dist/utils/popupParent/PopupParentContext.stories.js.map +1 -1
- package/package.json +4 -4
- package/src/components/avatar/Avatar.tsx +2 -2
- package/src/components/badge/Badge.stories.tsx +0 -103
- package/src/components/dot/Dot.tsx +1 -0
- package/src/components/formField/inputs/checkbox/CheckboxInput.stories.tsx +178 -1
- package/src/components/formField/inputs/checkbox/CheckboxInput.test.tsx +58 -0
- package/src/components/formField/inputs/checkbox/CheckboxInput.tsx +3 -3
- package/src/components/pill/Pill.tsx +1 -0
- package/src/components/searchBar/SearchBar.test.tsx +3 -3
- package/src/components/searchBar/SearchBar.tsx +1 -0
- package/src/components/table/Table.stories.tsx +0 -5
- package/src/components/table/Table.test.tsx +0 -5
- package/src/utils/popupParent/PopupParentContext.stories.tsx +1 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
/**
|
|
3
|
+
* Well, picture it: St. Olaf, 1974.
|
|
4
|
+
*
|
|
5
|
+
* Every autumn, the school board would hold what we called the "Great Grade
|
|
6
|
+
* Sorting Ceremony." All the teachers would come together in the gymnasium -
|
|
7
|
+
* and I mean ALL of them, even Coach Pedersen who taught nothing but eel
|
|
8
|
+
* wrangling - to decide which grade sets to use for the coming year. There
|
|
9
|
+
* were the active ones: GCSE 9 to 1, BTEC, the Below/At/Above system that
|
|
10
|
+
* Mrs. Lindqvist swore by. And then there were the archived ones, lovingly
|
|
11
|
+
* set aside like pickled herring that had seen better days but still held
|
|
12
|
+
* sentimental value.
|
|
13
|
+
*
|
|
14
|
+
* The trouble was, nobody could ever find anything. Old Ingeborg kept all
|
|
15
|
+
* the active grade sets in a basket on the left side of her desk, and all
|
|
16
|
+
* the archived ones in a basket on the right side - but the baskets looked
|
|
17
|
+
* identical, and twice a year someone would accidentally teach an entire term
|
|
18
|
+
* using the archived A*-to-G system when everyone else had moved on to 9-to-1.
|
|
19
|
+
*
|
|
20
|
+
* The GradeSetsPage is the digital solution Ingeborg never had. It is the
|
|
21
|
+
* dedicated management page for browsing all grade sets in a school - with a
|
|
22
|
+
* clear tab navigation separating **Active** from **Archived**, and a powerful
|
|
23
|
+
* AG Grid table that makes every grade set easy to find, review, and act upon.
|
|
24
|
+
*
|
|
25
|
+
* **Features:**
|
|
26
|
+
* - Breadcrumb navigation: Assessments / Settings / Grade Sets (with permalink icon)
|
|
27
|
+
* - Page heading "Grade Sets" paired with a prominent "Create Grade Set" button
|
|
28
|
+
* - Tab navigation to switch between Active and Archived grade sets
|
|
29
|
+
* - AG Grid table displaying Grade Set Long Name and Grade Set Short Name
|
|
30
|
+
* - Toolbar with Actions and Hide dropdown buttons
|
|
31
|
+
* - Footer showing a live "Showing N result(s)" count and an Expand Table button
|
|
32
|
+
*
|
|
33
|
+
* **Tab behaviour:**
|
|
34
|
+
* - The Active tab is selected by default on first render
|
|
35
|
+
* - Clicking Archived switches the table's row data to the archived grade sets list
|
|
36
|
+
* - The tab state is managed internally by the component - no external wiring needed
|
|
37
|
+
* - The footer row count updates automatically to reflect whichever tab is active
|
|
38
|
+
*
|
|
39
|
+
* **Callbacks:**
|
|
40
|
+
* - `onCreateGradeSet` - fired when the "Create Grade Set" header button is clicked
|
|
41
|
+
* - `onRowClick` - fired with the full GradeSet object when a table row is clicked
|
|
42
|
+
* - `onExpandTable` - fired when the "Expand Table" footer button is clicked
|
|
43
|
+
*
|
|
44
|
+
* **Accessibility:**
|
|
45
|
+
* - Breadcrumb uses `<nav aria-label="Breadcrumb">` with `aria-current="page"` on Grade Sets
|
|
46
|
+
* - The permalink Icon has screenReaderText="Permalink" for assistive technology
|
|
47
|
+
* - Tabs use semantic tab/tabpanel roles with aria-selected state
|
|
48
|
+
* - Page structure uses semantic `<nav>`, `<header>`, and `<main>` landmarks
|
|
49
|
+
* - The "Create Grade Set" button is keyboard-focusable and activatable
|
|
50
|
+
* - Table rows are clickable and fire `onRowClick` for keyboard/screen reader users
|
|
51
|
+
*/
|
|
52
|
+
declare const meta: {
|
|
53
|
+
title: string;
|
|
54
|
+
component: ({ activeGradeSets, archivedGradeSets, bulkActions, onCreateGradeSet, onRowClick, onExpandTable, className, }: import("./GradeSetsPage.js").GradeSetsPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
parameters: {
|
|
56
|
+
layout: string;
|
|
57
|
+
docs: {
|
|
58
|
+
description: {
|
|
59
|
+
component: string;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
tags: string[];
|
|
64
|
+
args: {
|
|
65
|
+
onCreateGradeSet: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
66
|
+
onRowClick: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
67
|
+
onExpandTable: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
68
|
+
};
|
|
69
|
+
argTypes: {
|
|
70
|
+
activeGradeSets: {
|
|
71
|
+
control: "object";
|
|
72
|
+
description: string;
|
|
73
|
+
};
|
|
74
|
+
archivedGradeSets: {
|
|
75
|
+
control: "object";
|
|
76
|
+
description: string;
|
|
77
|
+
};
|
|
78
|
+
onCreateGradeSet: {
|
|
79
|
+
description: string;
|
|
80
|
+
};
|
|
81
|
+
onRowClick: {
|
|
82
|
+
description: string;
|
|
83
|
+
};
|
|
84
|
+
onExpandTable: {
|
|
85
|
+
description: string;
|
|
86
|
+
};
|
|
87
|
+
className: {
|
|
88
|
+
control: "text";
|
|
89
|
+
description: string;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
export default meta;
|
|
94
|
+
type Story = StoryObj<typeof meta>;
|
|
95
|
+
/**
|
|
96
|
+
* The empty state - no grade sets have been created yet.
|
|
97
|
+
*
|
|
98
|
+
* Oh, this is like arriving in St. Olaf on the first day of school before any
|
|
99
|
+
* of the teachers have put anything on the walls yet. The room is all ready -
|
|
100
|
+
* the breadcrumbs are up, the header is there, the tabs are waiting, the table
|
|
101
|
+
* is gleaming - but the rows are wonderfully, peacefully empty.
|
|
102
|
+
*
|
|
103
|
+
* This is your starting point. A brand-new school year with no grade sets
|
|
104
|
+
* configured. The footer dutifully reports "Showing 0 results," which is
|
|
105
|
+
* completely correct and not at all alarming. Click "Create Grade Set" to
|
|
106
|
+
* begin populating the list.
|
|
107
|
+
*
|
|
108
|
+
* Both the Active and Archived tabs are empty, so switching between them
|
|
109
|
+
* will show the same empty table - though the row count will correctly
|
|
110
|
+
* remain at 0 for both. Everything works; there is just nothing to show yet.
|
|
111
|
+
*/
|
|
112
|
+
export declare const Default: Story;
|
|
113
|
+
/**
|
|
114
|
+
* The page with active grade sets loaded - the most common real-world state.
|
|
115
|
+
*
|
|
116
|
+
* Back in St. Olaf, when we finally settled on the grade sets for the year,
|
|
117
|
+
* we wrote them all on the chalkboard in order of importance. GCSE 9 to 1
|
|
118
|
+
* at the top, then the fine grading variant, then BTEC, then the lovely
|
|
119
|
+
* Below / At / Above system that worked so well for the younger years.
|
|
120
|
+
* Everyone could see at a glance exactly what was in use.
|
|
121
|
+
*
|
|
122
|
+
* This story shows the GradeSetsPage in its most typical state: four active
|
|
123
|
+
* grade sets loaded, the Active tab selected by default, and the AG Grid table
|
|
124
|
+
* displaying their long and short names. The footer reads "Showing 4 results."
|
|
125
|
+
*
|
|
126
|
+
* Click any row to fire the `onRowClick` callback (visible in the Actions panel
|
|
127
|
+
* below). Click "Create Grade Set" to fire `onCreateGradeSet`. Click
|
|
128
|
+
* "Expand Table" to fire `onExpandTable`. Then switch to the Archived tab -
|
|
129
|
+
* since no archived grade sets are provided, the table will be empty and the
|
|
130
|
+
* footer will read "Showing 0 results."
|
|
131
|
+
*/
|
|
132
|
+
export declare const WithActiveGradeSets: Story;
|
|
133
|
+
/**
|
|
134
|
+
* Active and Archived grade sets both populated - the full two-tab experience.
|
|
135
|
+
*
|
|
136
|
+
* You know, this reminds me of the time in St. Olaf when our school finally
|
|
137
|
+
* retired the old A*-to-G grading system in favour of the new 9-to-1. We kept
|
|
138
|
+
* the old ones, of course - you never throw anything away in St. Olaf, not
|
|
139
|
+
* even a grade set - and stored them lovingly in a separate drawer labelled
|
|
140
|
+
* "Archived: Do Not Discard, Ingeborg." And we never did.
|
|
141
|
+
*
|
|
142
|
+
* This story shows the page with four active grade sets AND two archived ones.
|
|
143
|
+
* The Active tab is selected by default, showing the four active sets and
|
|
144
|
+
* a footer reading "Showing 4 results." Click the Archived tab to switch
|
|
145
|
+
* the table to the two archived grade sets - the footer updates immediately
|
|
146
|
+
* to "Showing 2 results." Click Active again to come back.
|
|
147
|
+
*
|
|
148
|
+
* This is the story to use when demonstrating the tab-switching behaviour,
|
|
149
|
+
* since both tabs have meaningful data to display.
|
|
150
|
+
*/
|
|
151
|
+
export declare const WithActiveAndArchivedGradeSets: Story;
|
|
152
|
+
/**
|
|
153
|
+
* A large dataset to verify table rendering, scrolling, and the row count.
|
|
154
|
+
*
|
|
155
|
+
* Oh my stars, twelve active grade sets and five archived ones! Back in St.
|
|
156
|
+
* Olaf we once tried to use seventeen different grade sets simultaneously and
|
|
157
|
+
* it ended very badly - there was a whole incident involving the Phonics
|
|
158
|
+
* Screening Check, three conflicting rubrics, and a very confused supply
|
|
159
|
+
* teacher named Lars. We do not speak of the Lars Incident anymore.
|
|
160
|
+
*
|
|
161
|
+
* But this is the responsible kind of many grade sets. This story loads twelve
|
|
162
|
+
* active grade sets representing the full range a large UK secondary school
|
|
163
|
+
* might realistically configure - GCSE 9 to 1, fine grading variants, BTEC,
|
|
164
|
+
* T-Levels, Cambridge Nationals, effort scales, and subject-specific sets.
|
|
165
|
+
* Plus five thoughtfully archived legacy sets in the Archived tab.
|
|
166
|
+
*
|
|
167
|
+
* Use this story to verify:
|
|
168
|
+
* - The AG Grid table renders all rows without any clipping or layout issues
|
|
169
|
+
* - The footer row count is accurate ("Showing 12 results" on Active tab)
|
|
170
|
+
* - Switching to Archived shows "Showing 5 results" correctly
|
|
171
|
+
* - The Actions (0) and Hide toolbar buttons remain properly positioned
|
|
172
|
+
* - The Expand Table footer button is still accessible at the bottom
|
|
173
|
+
* - Row click callbacks fire with the correct GradeSet object for any row
|
|
174
|
+
*/
|
|
175
|
+
export declare const WithManyGradeSets: Story;
|
|
176
|
+
//# sourceMappingURL=GradeSetsPage.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GradeSetsPage.stories.d.ts","sourceRoot":"","sources":["../../../src/pages/gradeSetsPage/GradeSetsPage.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAK5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8C4B,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA6CnC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAMjC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,8BAA8B,EAAE,KAM5C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAM/B,CAAC"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { fn } from 'storybook/test';
|
|
2
|
+
import { GradeSetsPage } from './GradeSetsPage.js';
|
|
3
|
+
/**
|
|
4
|
+
* Well, picture it: St. Olaf, 1974.
|
|
5
|
+
*
|
|
6
|
+
* Every autumn, the school board would hold what we called the "Great Grade
|
|
7
|
+
* Sorting Ceremony." All the teachers would come together in the gymnasium -
|
|
8
|
+
* and I mean ALL of them, even Coach Pedersen who taught nothing but eel
|
|
9
|
+
* wrangling - to decide which grade sets to use for the coming year. There
|
|
10
|
+
* were the active ones: GCSE 9 to 1, BTEC, the Below/At/Above system that
|
|
11
|
+
* Mrs. Lindqvist swore by. And then there were the archived ones, lovingly
|
|
12
|
+
* set aside like pickled herring that had seen better days but still held
|
|
13
|
+
* sentimental value.
|
|
14
|
+
*
|
|
15
|
+
* The trouble was, nobody could ever find anything. Old Ingeborg kept all
|
|
16
|
+
* the active grade sets in a basket on the left side of her desk, and all
|
|
17
|
+
* the archived ones in a basket on the right side - but the baskets looked
|
|
18
|
+
* identical, and twice a year someone would accidentally teach an entire term
|
|
19
|
+
* using the archived A*-to-G system when everyone else had moved on to 9-to-1.
|
|
20
|
+
*
|
|
21
|
+
* The GradeSetsPage is the digital solution Ingeborg never had. It is the
|
|
22
|
+
* dedicated management page for browsing all grade sets in a school - with a
|
|
23
|
+
* clear tab navigation separating **Active** from **Archived**, and a powerful
|
|
24
|
+
* AG Grid table that makes every grade set easy to find, review, and act upon.
|
|
25
|
+
*
|
|
26
|
+
* **Features:**
|
|
27
|
+
* - Breadcrumb navigation: Assessments / Settings / Grade Sets (with permalink icon)
|
|
28
|
+
* - Page heading "Grade Sets" paired with a prominent "Create Grade Set" button
|
|
29
|
+
* - Tab navigation to switch between Active and Archived grade sets
|
|
30
|
+
* - AG Grid table displaying Grade Set Long Name and Grade Set Short Name
|
|
31
|
+
* - Toolbar with Actions and Hide dropdown buttons
|
|
32
|
+
* - Footer showing a live "Showing N result(s)" count and an Expand Table button
|
|
33
|
+
*
|
|
34
|
+
* **Tab behaviour:**
|
|
35
|
+
* - The Active tab is selected by default on first render
|
|
36
|
+
* - Clicking Archived switches the table's row data to the archived grade sets list
|
|
37
|
+
* - The tab state is managed internally by the component - no external wiring needed
|
|
38
|
+
* - The footer row count updates automatically to reflect whichever tab is active
|
|
39
|
+
*
|
|
40
|
+
* **Callbacks:**
|
|
41
|
+
* - `onCreateGradeSet` - fired when the "Create Grade Set" header button is clicked
|
|
42
|
+
* - `onRowClick` - fired with the full GradeSet object when a table row is clicked
|
|
43
|
+
* - `onExpandTable` - fired when the "Expand Table" footer button is clicked
|
|
44
|
+
*
|
|
45
|
+
* **Accessibility:**
|
|
46
|
+
* - Breadcrumb uses `<nav aria-label="Breadcrumb">` with `aria-current="page"` on Grade Sets
|
|
47
|
+
* - The permalink Icon has screenReaderText="Permalink" for assistive technology
|
|
48
|
+
* - Tabs use semantic tab/tabpanel roles with aria-selected state
|
|
49
|
+
* - Page structure uses semantic `<nav>`, `<header>`, and `<main>` landmarks
|
|
50
|
+
* - The "Create Grade Set" button is keyboard-focusable and activatable
|
|
51
|
+
* - Table rows are clickable and fire `onRowClick` for keyboard/screen reader users
|
|
52
|
+
*/
|
|
53
|
+
const meta = {
|
|
54
|
+
title: 'Pages/GradeSetsPage',
|
|
55
|
+
component: GradeSetsPage,
|
|
56
|
+
parameters: {
|
|
57
|
+
layout: 'fullscreen',
|
|
58
|
+
docs: {
|
|
59
|
+
description: {
|
|
60
|
+
component: 'The Grade Sets management page. Displays active and archived grade sets in an AG Grid table with tab navigation, a row count footer, and a Create Grade Set action. Back in St. Olaf they sorted grade sets into two identical-looking baskets and caused absolute chaos at the start of every term - this page fixes all of that with a beautiful Active / Archived tab switcher and a clear, searchable table.',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
tags: ['autodocs'],
|
|
65
|
+
args: {
|
|
66
|
+
onCreateGradeSet: fn(),
|
|
67
|
+
onRowClick: fn(),
|
|
68
|
+
onExpandTable: fn(),
|
|
69
|
+
},
|
|
70
|
+
argTypes: {
|
|
71
|
+
activeGradeSets: {
|
|
72
|
+
control: 'object',
|
|
73
|
+
description: 'The list of grade sets shown when the Active tab is selected. Each grade set has an id, longName, and shortName. Defaults to an empty array, rendering the table with zero rows.',
|
|
74
|
+
},
|
|
75
|
+
archivedGradeSets: {
|
|
76
|
+
control: 'object',
|
|
77
|
+
description: 'The list of grade sets shown when the Archived tab is selected. Each grade set has an id, longName, and shortName. Defaults to an empty array, rendering the table with zero rows when Archived is active.',
|
|
78
|
+
},
|
|
79
|
+
onCreateGradeSet: {
|
|
80
|
+
description: 'Called when the "Create Grade Set" button in the page header is clicked. Wire this up to open a creation modal or navigate to a creation form.',
|
|
81
|
+
},
|
|
82
|
+
onRowClick: {
|
|
83
|
+
description: 'Called with the full GradeSet object when a row in the AG Grid table is clicked. Use this to navigate to the grade set detail/edit page.',
|
|
84
|
+
},
|
|
85
|
+
onExpandTable: {
|
|
86
|
+
description: 'Called when the "Expand Table" button in the table footer is clicked. Use this to toggle a fullscreen or expanded table view.',
|
|
87
|
+
},
|
|
88
|
+
className: {
|
|
89
|
+
control: 'text',
|
|
90
|
+
description: 'Optional additional CSS class name(s) to apply to the page root element.',
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
export default meta;
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// Shared data fixtures - the finest grade sets this side of St. Olaf
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
const activeGradeSets = [
|
|
99
|
+
{ id: '1', longName: 'GCSE 9 to 1', shortName: 'GCSE' },
|
|
100
|
+
{ id: '2', longName: 'GCSE 9 to 1 (Fine Grading)', shortName: 'GCSE FG' },
|
|
101
|
+
{ id: '3', longName: 'BTEC', shortName: 'BTEC' },
|
|
102
|
+
{ id: '4', longName: 'Below / At / Above', shortName: 'BAA' },
|
|
103
|
+
];
|
|
104
|
+
const archivedGradeSets = [
|
|
105
|
+
{ id: '5', longName: 'GCSE A* to G', shortName: 'GCSE A*-G' },
|
|
106
|
+
{ id: '6', longName: 'A Level (A* to E)', shortName: 'A Level' },
|
|
107
|
+
];
|
|
108
|
+
const manyActiveGradeSets = [
|
|
109
|
+
{ id: '1', longName: 'GCSE 9 to 1', shortName: 'GCSE' },
|
|
110
|
+
{ id: '2', longName: 'GCSE 9 to 1 (Fine Grading)', shortName: 'GCSE FG' },
|
|
111
|
+
{ id: '3', longName: 'BTEC', shortName: 'BTEC' },
|
|
112
|
+
{ id: '4', longName: 'Below / At / Above', shortName: 'BAA' },
|
|
113
|
+
{ id: '5', longName: 'Working Towards / Expected / Exceeding', shortName: 'WEE' },
|
|
114
|
+
{ id: '6', longName: 'Emerging / Developing / Securing / Mastering', shortName: 'EDSM' },
|
|
115
|
+
{ id: '7', longName: 'KS3 Effort Grades (1 to 5)', shortName: 'Effort' },
|
|
116
|
+
{ id: '8', longName: 'T-Level (Distinction* to Pass)', shortName: 'T-Level' },
|
|
117
|
+
{ id: '9', longName: 'AS Level (A to E)', shortName: 'AS Level' },
|
|
118
|
+
{ id: '10', longName: 'Cambridge National (Distinction* to Pass)', shortName: 'Cam Nat' },
|
|
119
|
+
{ id: '11', longName: 'GCSE English Literature (9 to 1)', shortName: 'Eng Lit' },
|
|
120
|
+
{ id: '12', longName: 'GCSE Mathematics (9 to 1)', shortName: 'Maths' },
|
|
121
|
+
];
|
|
122
|
+
const manyArchivedGradeSets = [
|
|
123
|
+
{ id: '13', longName: 'GCSE A* to G', shortName: 'GCSE A*-G' },
|
|
124
|
+
{ id: '14', longName: 'A Level (A* to E)', shortName: 'A Level' },
|
|
125
|
+
{ id: '15', longName: 'AS Level Legacy (A to E)', shortName: 'AS Legacy' },
|
|
126
|
+
{ id: '16', longName: 'National Curriculum Levels (1 to 8)', shortName: 'NC Levels' },
|
|
127
|
+
{ id: '17', longName: 'BTEC First (Distinction* to Pass)', shortName: 'BTEC 1st' },
|
|
128
|
+
];
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// Stories
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
/**
|
|
133
|
+
* The empty state - no grade sets have been created yet.
|
|
134
|
+
*
|
|
135
|
+
* Oh, this is like arriving in St. Olaf on the first day of school before any
|
|
136
|
+
* of the teachers have put anything on the walls yet. The room is all ready -
|
|
137
|
+
* the breadcrumbs are up, the header is there, the tabs are waiting, the table
|
|
138
|
+
* is gleaming - but the rows are wonderfully, peacefully empty.
|
|
139
|
+
*
|
|
140
|
+
* This is your starting point. A brand-new school year with no grade sets
|
|
141
|
+
* configured. The footer dutifully reports "Showing 0 results," which is
|
|
142
|
+
* completely correct and not at all alarming. Click "Create Grade Set" to
|
|
143
|
+
* begin populating the list.
|
|
144
|
+
*
|
|
145
|
+
* Both the Active and Archived tabs are empty, so switching between them
|
|
146
|
+
* will show the same empty table - though the row count will correctly
|
|
147
|
+
* remain at 0 for both. Everything works; there is just nothing to show yet.
|
|
148
|
+
*/
|
|
149
|
+
export const Default = {
|
|
150
|
+
name: 'Default (Empty)',
|
|
151
|
+
args: {
|
|
152
|
+
activeGradeSets: [],
|
|
153
|
+
archivedGradeSets: [],
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* The page with active grade sets loaded - the most common real-world state.
|
|
158
|
+
*
|
|
159
|
+
* Back in St. Olaf, when we finally settled on the grade sets for the year,
|
|
160
|
+
* we wrote them all on the chalkboard in order of importance. GCSE 9 to 1
|
|
161
|
+
* at the top, then the fine grading variant, then BTEC, then the lovely
|
|
162
|
+
* Below / At / Above system that worked so well for the younger years.
|
|
163
|
+
* Everyone could see at a glance exactly what was in use.
|
|
164
|
+
*
|
|
165
|
+
* This story shows the GradeSetsPage in its most typical state: four active
|
|
166
|
+
* grade sets loaded, the Active tab selected by default, and the AG Grid table
|
|
167
|
+
* displaying their long and short names. The footer reads "Showing 4 results."
|
|
168
|
+
*
|
|
169
|
+
* Click any row to fire the `onRowClick` callback (visible in the Actions panel
|
|
170
|
+
* below). Click "Create Grade Set" to fire `onCreateGradeSet`. Click
|
|
171
|
+
* "Expand Table" to fire `onExpandTable`. Then switch to the Archived tab -
|
|
172
|
+
* since no archived grade sets are provided, the table will be empty and the
|
|
173
|
+
* footer will read "Showing 0 results."
|
|
174
|
+
*/
|
|
175
|
+
export const WithActiveGradeSets = {
|
|
176
|
+
name: 'With Active Grade Sets',
|
|
177
|
+
args: {
|
|
178
|
+
activeGradeSets,
|
|
179
|
+
archivedGradeSets: [],
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Active and Archived grade sets both populated - the full two-tab experience.
|
|
184
|
+
*
|
|
185
|
+
* You know, this reminds me of the time in St. Olaf when our school finally
|
|
186
|
+
* retired the old A*-to-G grading system in favour of the new 9-to-1. We kept
|
|
187
|
+
* the old ones, of course - you never throw anything away in St. Olaf, not
|
|
188
|
+
* even a grade set - and stored them lovingly in a separate drawer labelled
|
|
189
|
+
* "Archived: Do Not Discard, Ingeborg." And we never did.
|
|
190
|
+
*
|
|
191
|
+
* This story shows the page with four active grade sets AND two archived ones.
|
|
192
|
+
* The Active tab is selected by default, showing the four active sets and
|
|
193
|
+
* a footer reading "Showing 4 results." Click the Archived tab to switch
|
|
194
|
+
* the table to the two archived grade sets - the footer updates immediately
|
|
195
|
+
* to "Showing 2 results." Click Active again to come back.
|
|
196
|
+
*
|
|
197
|
+
* This is the story to use when demonstrating the tab-switching behaviour,
|
|
198
|
+
* since both tabs have meaningful data to display.
|
|
199
|
+
*/
|
|
200
|
+
export const WithActiveAndArchivedGradeSets = {
|
|
201
|
+
name: 'With Active and Archived Grade Sets',
|
|
202
|
+
args: {
|
|
203
|
+
activeGradeSets,
|
|
204
|
+
archivedGradeSets,
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* A large dataset to verify table rendering, scrolling, and the row count.
|
|
209
|
+
*
|
|
210
|
+
* Oh my stars, twelve active grade sets and five archived ones! Back in St.
|
|
211
|
+
* Olaf we once tried to use seventeen different grade sets simultaneously and
|
|
212
|
+
* it ended very badly - there was a whole incident involving the Phonics
|
|
213
|
+
* Screening Check, three conflicting rubrics, and a very confused supply
|
|
214
|
+
* teacher named Lars. We do not speak of the Lars Incident anymore.
|
|
215
|
+
*
|
|
216
|
+
* But this is the responsible kind of many grade sets. This story loads twelve
|
|
217
|
+
* active grade sets representing the full range a large UK secondary school
|
|
218
|
+
* might realistically configure - GCSE 9 to 1, fine grading variants, BTEC,
|
|
219
|
+
* T-Levels, Cambridge Nationals, effort scales, and subject-specific sets.
|
|
220
|
+
* Plus five thoughtfully archived legacy sets in the Archived tab.
|
|
221
|
+
*
|
|
222
|
+
* Use this story to verify:
|
|
223
|
+
* - The AG Grid table renders all rows without any clipping or layout issues
|
|
224
|
+
* - The footer row count is accurate ("Showing 12 results" on Active tab)
|
|
225
|
+
* - Switching to Archived shows "Showing 5 results" correctly
|
|
226
|
+
* - The Actions (0) and Hide toolbar buttons remain properly positioned
|
|
227
|
+
* - The Expand Table footer button is still accessible at the bottom
|
|
228
|
+
* - Row click callbacks fire with the correct GradeSet object for any row
|
|
229
|
+
*/
|
|
230
|
+
export const WithManyGradeSets = {
|
|
231
|
+
name: 'With Many Grade Sets',
|
|
232
|
+
args: {
|
|
233
|
+
activeGradeSets: manyActiveGradeSets,
|
|
234
|
+
archivedGradeSets: manyArchivedGradeSets,
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
//# sourceMappingURL=GradeSetsPage.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GradeSetsPage.stories.js","sourceRoot":"","sources":["../../../src/pages/gradeSetsPage/GradeSetsPage.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GradeSetsPage.test.d.ts","sourceRoot":"","sources":["../../../src/pages/gradeSetsPage/GradeSetsPage.test.tsx"],"names":[],"mappings":"AAGA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import userEvent from '@testing-library/user-event';
|
|
5
|
+
import '@testing-library/jest-dom/vitest';
|
|
6
|
+
import { GradeSetsPage } from './GradeSetsPage.js';
|
|
7
|
+
const mockActiveGradeSets = [
|
|
8
|
+
{ id: '1', longName: 'GCSE 9 to 1', shortName: 'GCSE' },
|
|
9
|
+
{ id: '2', longName: 'GCSE 9 to 1 (Fine Grading)', shortName: 'GCSE FG' },
|
|
10
|
+
];
|
|
11
|
+
const mockArchivedGradeSets = [
|
|
12
|
+
{ id: '3', longName: 'BTEC', shortName: 'BTEC' },
|
|
13
|
+
];
|
|
14
|
+
describe('GradeSetsPage', () => {
|
|
15
|
+
it('renders the page heading', () => {
|
|
16
|
+
render(_jsx(GradeSetsPage, {}));
|
|
17
|
+
expect(screen.getByRole('heading', { name: /grade sets/i, level: 1 })).toBeInTheDocument();
|
|
18
|
+
});
|
|
19
|
+
it('renders breadcrumb navigation', () => {
|
|
20
|
+
render(_jsx(GradeSetsPage, {}));
|
|
21
|
+
expect(screen.getByRole('navigation', { name: /breadcrumb/i })).toBeInTheDocument();
|
|
22
|
+
expect(screen.getByRole('link', { name: /assessments/i })).toBeInTheDocument();
|
|
23
|
+
expect(screen.getByRole('link', { name: /settings/i })).toBeInTheDocument();
|
|
24
|
+
});
|
|
25
|
+
it('renders the Create Grade Set button', () => {
|
|
26
|
+
render(_jsx(GradeSetsPage, {}));
|
|
27
|
+
expect(screen.getByRole('button', { name: /create grade set/i })).toBeInTheDocument();
|
|
28
|
+
});
|
|
29
|
+
it('calls onCreateGradeSet when Create Grade Set is clicked', async () => {
|
|
30
|
+
const onCreateGradeSet = vi.fn();
|
|
31
|
+
render(_jsx(GradeSetsPage, { onCreateGradeSet: onCreateGradeSet }));
|
|
32
|
+
await userEvent.click(screen.getByRole('button', { name: /create grade set/i }));
|
|
33
|
+
expect(onCreateGradeSet).toHaveBeenCalledTimes(1);
|
|
34
|
+
});
|
|
35
|
+
it('renders Active and Archived tabs', () => {
|
|
36
|
+
render(_jsx(GradeSetsPage, {}));
|
|
37
|
+
expect(screen.getByRole('tab', { name: /active/i })).toBeInTheDocument();
|
|
38
|
+
expect(screen.getByRole('tab', { name: /archived/i })).toBeInTheDocument();
|
|
39
|
+
});
|
|
40
|
+
it('shows Active tab selected by default', () => {
|
|
41
|
+
render(_jsx(GradeSetsPage, {}));
|
|
42
|
+
expect(screen.getByRole('tab', { name: /active/i })).toHaveAttribute('aria-selected', 'true');
|
|
43
|
+
expect(screen.getByRole('tab', { name: /archived/i })).toHaveAttribute('aria-selected', 'false');
|
|
44
|
+
});
|
|
45
|
+
it('switches to Archived tab when clicked', async () => {
|
|
46
|
+
render(_jsx(GradeSetsPage, {}));
|
|
47
|
+
await userEvent.click(screen.getByRole('tab', { name: /archived/i }));
|
|
48
|
+
expect(screen.getByRole('tab', { name: /archived/i })).toHaveAttribute('aria-selected', 'true');
|
|
49
|
+
expect(screen.getByRole('tab', { name: /active/i })).toHaveAttribute('aria-selected', 'false');
|
|
50
|
+
});
|
|
51
|
+
it('renders the row count for active grade sets', () => {
|
|
52
|
+
render(_jsx(GradeSetsPage, { activeGradeSets: mockActiveGradeSets }));
|
|
53
|
+
expect(screen.getByText(/showing 2 results/i)).toBeInTheDocument();
|
|
54
|
+
});
|
|
55
|
+
it('renders singular result when exactly one row', () => {
|
|
56
|
+
render(_jsx(GradeSetsPage, { activeGradeSets: [mockActiveGradeSets[0]] }));
|
|
57
|
+
expect(screen.getByText(/showing 1 result/i)).toBeInTheDocument();
|
|
58
|
+
});
|
|
59
|
+
it('shows archived row count when Archived tab is active', async () => {
|
|
60
|
+
render(_jsx(GradeSetsPage, { archivedGradeSets: mockArchivedGradeSets }));
|
|
61
|
+
await userEvent.click(screen.getByRole('tab', { name: /archived/i }));
|
|
62
|
+
expect(screen.getByText(/showing 1 result/i)).toBeInTheDocument();
|
|
63
|
+
});
|
|
64
|
+
it('renders the Expand Table button', () => {
|
|
65
|
+
render(_jsx(GradeSetsPage, {}));
|
|
66
|
+
expect(screen.getByRole('button', { name: /expand table/i })).toBeInTheDocument();
|
|
67
|
+
});
|
|
68
|
+
it('calls onExpandTable when Expand Table is clicked', async () => {
|
|
69
|
+
const onExpandTable = vi.fn();
|
|
70
|
+
render(_jsx(GradeSetsPage, { onExpandTable: onExpandTable }));
|
|
71
|
+
await userEvent.click(screen.getByRole('button', { name: /expand table/i }));
|
|
72
|
+
expect(onExpandTable).toHaveBeenCalledTimes(1);
|
|
73
|
+
});
|
|
74
|
+
it('renders the bulk actions dropdown with the provided actions', () => {
|
|
75
|
+
const bulkActions = [
|
|
76
|
+
{ displayName: 'Archive', callback: vi.fn() },
|
|
77
|
+
{ displayName: 'Delete', callback: vi.fn() },
|
|
78
|
+
];
|
|
79
|
+
render(_jsx(GradeSetsPage, { bulkActions: bulkActions }));
|
|
80
|
+
expect(screen.getByText('Actions (2)')).toBeInTheDocument();
|
|
81
|
+
});
|
|
82
|
+
it('renders the bulk actions dropdown with zero actions by default', () => {
|
|
83
|
+
render(_jsx(GradeSetsPage, {}));
|
|
84
|
+
expect(screen.getByText('Actions (0)')).toBeInTheDocument();
|
|
85
|
+
});
|
|
86
|
+
it('renders without crashing when no props are provided', () => {
|
|
87
|
+
render(_jsx(GradeSetsPage, {}));
|
|
88
|
+
expect(screen.getByRole('heading', { name: /grade sets/i, level: 1 })).toBeInTheDocument();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=GradeSetsPage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GradeSetsPage.test.js","sourceRoot":"","sources":["../../../src/pages/gradeSetsPage/GradeSetsPage.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface EducationHistoryRow {
|
|
2
|
+
id: string;
|
|
3
|
+
dateRange: string;
|
|
4
|
+
institution: string;
|
|
5
|
+
type: string;
|
|
6
|
+
}
|
|
7
|
+
export interface StudentProfilePageProps {
|
|
8
|
+
className?: string;
|
|
9
|
+
onSuggestSummary?: () => void;
|
|
10
|
+
onAddIdentity?: () => void;
|
|
11
|
+
onAddContactDetails?: () => void;
|
|
12
|
+
onAddFamily?: () => void;
|
|
13
|
+
onAddLegal?: () => void;
|
|
14
|
+
onAddParentalEngagement?: () => void;
|
|
15
|
+
onAddEducationHistory?: () => void;
|
|
16
|
+
onPreviousStudent?: () => void;
|
|
17
|
+
onNextStudent?: () => void;
|
|
18
|
+
onRecordPlannedAbsence?: () => void;
|
|
19
|
+
educationHistory?: EducationHistoryRow[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* StudentProfilePage
|
|
23
|
+
*
|
|
24
|
+
* A page composed from existing Arbor design system components to match
|
|
25
|
+
* the Student Profile Figma design (node 551:41974).
|
|
26
|
+
*
|
|
27
|
+
* Generated from: https://www.figma.com/design/UKQfcxnT4rlHHNuiumt4o1/Arbor-Design-System?node-id=551-41974
|
|
28
|
+
*
|
|
29
|
+
* Components used:
|
|
30
|
+
* - Button (primary, secondary, tertiary, dropdown variants)
|
|
31
|
+
* - Section (all content panels)
|
|
32
|
+
* - Tag (student categorisation labels)
|
|
33
|
+
* - Dropdown (section filter, action menus)
|
|
34
|
+
* - Table (education history)
|
|
35
|
+
* - TooltipWrapper (parental engagement help)
|
|
36
|
+
* - Separator (dividers between sections)
|
|
37
|
+
*
|
|
38
|
+
* Placeholder SVGs used (missing components):
|
|
39
|
+
* - TopNav — no AppHeader component in library yet
|
|
40
|
+
* - SideNavIcons — no SideNav component in library yet
|
|
41
|
+
* - SideNavText — no SideNav component in library yet
|
|
42
|
+
* - Breadcrumbs — no Breadcrumbs component in library yet
|
|
43
|
+
* - Avatar — no Avatar component in library yet
|
|
44
|
+
* - CalendarWidget — no WeeklySchedule component in library yet
|
|
45
|
+
*/
|
|
46
|
+
export declare const StudentProfilePage: ({ className, onSuggestSummary, onAddIdentity, onAddContactDetails, onAddFamily, onAddLegal, onAddParentalEngagement, onAddEducationHistory, onPreviousStudent, onNextStudent, onRecordPlannedAbsence, educationHistory, }: StudentProfilePageProps) => import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
export default StudentProfilePage;
|
|
48
|
+
//# sourceMappingURL=StudentProfilePage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StudentProfilePage.d.ts","sourceRoot":"","sources":["../../../src/pages/studentProfilePage/StudentProfilePage.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC1C;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,kBAAkB,GAAI,2NAahC,uBAAuB,4CA8kBzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|