@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,109 @@
|
|
|
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 { AssessmentsPage } from './AssessmentsPage.js';
|
|
7
|
+
const mockAssessments = [
|
|
8
|
+
{ id: '1', name: 'Internal Progress Tracking (Years 7-11)', completionPercentage: 66, status: 'active' },
|
|
9
|
+
{ id: '2', name: 'KS3 History (ARE)', completionPercentage: 79, status: 'active' },
|
|
10
|
+
{ id: '3', name: 'KS4 Assessment 2025/26', completionPercentage: 50, status: 'draft' },
|
|
11
|
+
{ id: '4', name: 'Year 1 Phonics Screening Check', completionPercentage: 48, status: 'archived' },
|
|
12
|
+
];
|
|
13
|
+
describe('AssessmentsPage', () => {
|
|
14
|
+
it('renders the page heading', () => {
|
|
15
|
+
render(_jsx(AssessmentsPage, {}));
|
|
16
|
+
expect(screen.getByRole('heading', { name: /assessments/i, level: 1 })).toBeInTheDocument();
|
|
17
|
+
});
|
|
18
|
+
it('renders breadcrumb navigation', () => {
|
|
19
|
+
render(_jsx(AssessmentsPage, {}));
|
|
20
|
+
expect(screen.getByRole('navigation', { name: /breadcrumb/i })).toBeInTheDocument();
|
|
21
|
+
expect(screen.getByRole('link', { name: /assessments/i })).toBeInTheDocument();
|
|
22
|
+
});
|
|
23
|
+
it('renders the Marksheet Settings button', () => {
|
|
24
|
+
render(_jsx(AssessmentsPage, {}));
|
|
25
|
+
expect(screen.getByRole('button', { name: /marksheet settings/i })).toBeInTheDocument();
|
|
26
|
+
});
|
|
27
|
+
it('renders the Create New Assessment button', () => {
|
|
28
|
+
render(_jsx(AssessmentsPage, {}));
|
|
29
|
+
expect(screen.getByRole('button', { name: /create new assessment/i })).toBeInTheDocument();
|
|
30
|
+
});
|
|
31
|
+
it('renders the search input', () => {
|
|
32
|
+
render(_jsx(AssessmentsPage, {}));
|
|
33
|
+
expect(screen.getByRole('textbox', { name: /search marksheets/i })).toBeInTheDocument();
|
|
34
|
+
});
|
|
35
|
+
it('renders filter pills', () => {
|
|
36
|
+
render(_jsx(AssessmentsPage, {}));
|
|
37
|
+
expect(screen.getByText('All Active')).toBeInTheDocument();
|
|
38
|
+
expect(screen.getByText('Draft')).toBeInTheDocument();
|
|
39
|
+
expect(screen.getByText('Archived')).toBeInTheDocument();
|
|
40
|
+
});
|
|
41
|
+
it('renders active assessments by default', () => {
|
|
42
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments }));
|
|
43
|
+
expect(screen.getByText('Internal Progress Tracking (Years 7-11)')).toBeInTheDocument();
|
|
44
|
+
expect(screen.getByText('KS3 History (ARE)')).toBeInTheDocument();
|
|
45
|
+
});
|
|
46
|
+
it('does not show draft or archived assessments when only All Active filter is on', () => {
|
|
47
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments }));
|
|
48
|
+
expect(screen.queryByText('KS4 Assessment 2025/26')).not.toBeInTheDocument();
|
|
49
|
+
expect(screen.queryByText('Year 1 Phonics Screening Check')).not.toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
it('renders completion percentages for visible assessments', () => {
|
|
52
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments }));
|
|
53
|
+
expect(screen.getByText('66% completed')).toBeInTheDocument();
|
|
54
|
+
expect(screen.getByText('79% completed')).toBeInTheDocument();
|
|
55
|
+
});
|
|
56
|
+
it('renders Edit and Open Marksheets buttons for each visible assessment', () => {
|
|
57
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments }));
|
|
58
|
+
const editButtons = screen.getAllByRole('button', { name: /edit/i });
|
|
59
|
+
const openMarksheetButtons = screen.getAllByRole('button', { name: /open marksheets/i });
|
|
60
|
+
expect(editButtons).toHaveLength(2);
|
|
61
|
+
expect(openMarksheetButtons).toHaveLength(2);
|
|
62
|
+
});
|
|
63
|
+
it('calls onCreateNewAssessment when Create New Assessment is clicked', async () => {
|
|
64
|
+
const onCreateNewAssessment = vi.fn();
|
|
65
|
+
render(_jsx(AssessmentsPage, { onCreateNewAssessment: onCreateNewAssessment }));
|
|
66
|
+
await userEvent.click(screen.getByRole('button', { name: /create new assessment/i }));
|
|
67
|
+
expect(onCreateNewAssessment).toHaveBeenCalledTimes(1);
|
|
68
|
+
});
|
|
69
|
+
it('calls onOpenMarksheetSettings when Marksheet Settings is clicked', async () => {
|
|
70
|
+
const onOpenMarksheetSettings = vi.fn();
|
|
71
|
+
render(_jsx(AssessmentsPage, { onOpenMarksheetSettings: onOpenMarksheetSettings }));
|
|
72
|
+
await userEvent.click(screen.getByRole('button', { name: /marksheet settings/i }));
|
|
73
|
+
expect(onOpenMarksheetSettings).toHaveBeenCalledTimes(1);
|
|
74
|
+
});
|
|
75
|
+
it('calls onEditAssessment with the correct id when Edit is clicked', async () => {
|
|
76
|
+
const onEditAssessment = vi.fn();
|
|
77
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments, onEditAssessment: onEditAssessment }));
|
|
78
|
+
const [firstEditButton] = screen.getAllByRole('button', { name: /edit/i });
|
|
79
|
+
await userEvent.click(firstEditButton);
|
|
80
|
+
expect(onEditAssessment).toHaveBeenCalledWith('1');
|
|
81
|
+
});
|
|
82
|
+
it('calls onOpenMarksheets with the correct id when Open Marksheets is clicked', async () => {
|
|
83
|
+
const onOpenMarksheets = vi.fn();
|
|
84
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments, onOpenMarksheets: onOpenMarksheets }));
|
|
85
|
+
const [firstOpenButton] = screen.getAllByRole('button', { name: /open marksheets/i });
|
|
86
|
+
await userEvent.click(firstOpenButton);
|
|
87
|
+
expect(onOpenMarksheets).toHaveBeenCalledWith('1');
|
|
88
|
+
});
|
|
89
|
+
it('filters assessments by search query', async () => {
|
|
90
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments }));
|
|
91
|
+
const searchInput = screen.getByRole('textbox', { name: /search marksheets/i });
|
|
92
|
+
await userEvent.type(searchInput, 'History');
|
|
93
|
+
expect(screen.getByText('KS3 History (ARE)')).toBeInTheDocument();
|
|
94
|
+
expect(screen.queryByText('Internal Progress Tracking (Years 7-11)')).not.toBeInTheDocument();
|
|
95
|
+
});
|
|
96
|
+
it('collapses an assessment section when the collapse button is clicked', async () => {
|
|
97
|
+
render(_jsx(AssessmentsPage, { assessments: mockAssessments }));
|
|
98
|
+
const [firstCollapseButton] = screen.getAllByRole('button', { name: /collapse section/i });
|
|
99
|
+
expect(firstCollapseButton).toHaveAttribute('aria-expanded', 'true');
|
|
100
|
+
await userEvent.click(firstCollapseButton);
|
|
101
|
+
const [firstExpandButton] = screen.getAllByRole('button', { name: /expand section/i });
|
|
102
|
+
expect(firstExpandButton).toHaveAttribute('aria-expanded', 'false');
|
|
103
|
+
});
|
|
104
|
+
it('renders with no assessments without crashing', () => {
|
|
105
|
+
render(_jsx(AssessmentsPage, { assessments: [] }));
|
|
106
|
+
expect(screen.getByRole('heading', { name: /assessments/i, level: 1 })).toBeInTheDocument();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=AssessmentsPage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssessmentsPage.test.js","sourceRoot":"","sources":["../../../src/pages/assessmentsPage/AssessmentsPage.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CustomReportWriterPage - Displays and manages custom reports in Active, Archived, and Expired views.
|
|
3
|
+
* Migrated from legacy components to Arbor design system.
|
|
4
|
+
* App shell components (TopNav, SideNav) are represented as placeholder SVGs
|
|
5
|
+
* pending their implementation as library/app-level components.
|
|
6
|
+
*/
|
|
7
|
+
import type { GridApi } from 'ag-grid-enterprise';
|
|
8
|
+
export type ReportTab = 'active' | 'archived' | 'expired';
|
|
9
|
+
export type ReportRow = {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
type: string;
|
|
13
|
+
createdBy: string;
|
|
14
|
+
context: string;
|
|
15
|
+
createdDate: string;
|
|
16
|
+
modifiedDate: string;
|
|
17
|
+
accessedDate: string;
|
|
18
|
+
};
|
|
19
|
+
export type BulkAction = {
|
|
20
|
+
displayName: string;
|
|
21
|
+
callback: (api: GridApi | null) => void;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type CustomReportWriterPageProps = {
|
|
25
|
+
className?: string;
|
|
26
|
+
reports?: ReportRow[];
|
|
27
|
+
bulkActions?: BulkAction[];
|
|
28
|
+
onCreateNewReport?: () => void;
|
|
29
|
+
onSchedule?: () => void;
|
|
30
|
+
onDuplicateSelected?: () => void;
|
|
31
|
+
onEditSelected?: () => void;
|
|
32
|
+
onDownloadCsv?: () => void;
|
|
33
|
+
onDownloadPdf?: () => void;
|
|
34
|
+
onChangeFilters?: () => void;
|
|
35
|
+
onOpenReport?: (id: string) => void;
|
|
36
|
+
onDuplicateReport?: (report: ReportRow) => void;
|
|
37
|
+
onEditReport?: (report: ReportRow) => void;
|
|
38
|
+
};
|
|
39
|
+
export declare const CustomReportWriterPage: ({ className, reports, bulkActions, onCreateNewReport, onSchedule, onDuplicateSelected, onEditSelected, onDownloadCsv, onDownloadPdf, onChangeFilters, onOpenReport, onDuplicateReport, onEditReport, }: CustomReportWriterPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
//# sourceMappingURL=CustomReportWriterPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomReportWriterPage.d.ts","sourceRoot":"","sources":["../../../src/pages/customReportWriterPage/CustomReportWriterPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAU,OAAO,EAAuB,MAAM,oBAAoB,CAAC;AAY/E,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,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,2BAA2B,GAAG;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;CAC5C,CAAC;AAqFF,eAAO,MAAM,sBAAsB,GAAI,wMAcpC,2BAA2B,4CAia7B,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { jsx as _jsx, 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 { Table } from '../../components/table/Table.js';
|
|
8
|
+
import { Tabs } from '../../components/tabs/Tabs.js';
|
|
9
|
+
import { Dropdown } from '../../components/dropdown/Dropdown.js';
|
|
10
|
+
import { TooltipWrapper } from '../../components/tooltip/TooltipWrapper.js';
|
|
11
|
+
const typeIconMap = {
|
|
12
|
+
'Student': 'user',
|
|
13
|
+
'Staff': 'user',
|
|
14
|
+
'Group': 'group',
|
|
15
|
+
'School': 'house',
|
|
16
|
+
'Medical Event': 'file',
|
|
17
|
+
'Student Group': 'group',
|
|
18
|
+
};
|
|
19
|
+
const DEFAULT_REPORTS = [
|
|
20
|
+
{
|
|
21
|
+
id: '1',
|
|
22
|
+
title: 'Attendance of All Groups',
|
|
23
|
+
type: 'Student',
|
|
24
|
+
createdBy: 'Selma Allen',
|
|
25
|
+
context: 'Classes',
|
|
26
|
+
createdDate: '7th Sep 2021',
|
|
27
|
+
modifiedDate: '13th Mar 2022',
|
|
28
|
+
accessedDate: '4th Mar 2026',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: '2',
|
|
32
|
+
title: 'Student Contact Reports',
|
|
33
|
+
type: 'Student',
|
|
34
|
+
createdBy: 'Selma Allen',
|
|
35
|
+
context: 'Student Guardian Role',
|
|
36
|
+
createdDate: '7th Sep 2021',
|
|
37
|
+
modifiedDate: '18th Apr 2022',
|
|
38
|
+
accessedDate: '4th Mar 2026',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: '3',
|
|
42
|
+
title: 'Whole School Name Stamp',
|
|
43
|
+
type: 'School',
|
|
44
|
+
createdBy: 'Selma Allen',
|
|
45
|
+
context: 'Single Group Staff',
|
|
46
|
+
createdDate: '7th Sep 2021',
|
|
47
|
+
modifiedDate: '28th Apr 2022',
|
|
48
|
+
accessedDate: '4th Mar 2026',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: '4',
|
|
52
|
+
title: 'Student Aptitude',
|
|
53
|
+
type: 'Student',
|
|
54
|
+
createdBy: 'Selma Allen',
|
|
55
|
+
context: 'Single Group Tutor',
|
|
56
|
+
createdDate: '7th Sep 2021',
|
|
57
|
+
modifiedDate: '13th Jun 2022',
|
|
58
|
+
accessedDate: '4th Mar 2026',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: '5',
|
|
62
|
+
title: 'Staff Contract Port',
|
|
63
|
+
type: 'Staff',
|
|
64
|
+
createdBy: 'Arbor Admin',
|
|
65
|
+
context: 'Staff Contract Port',
|
|
66
|
+
createdDate: '17th Dec 2020',
|
|
67
|
+
modifiedDate: '17th Dec 2020',
|
|
68
|
+
accessedDate: '27th Jan 2025',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: '6',
|
|
72
|
+
title: 'Medical Events',
|
|
73
|
+
type: 'Medical Event',
|
|
74
|
+
createdBy: 'Arbor Admin',
|
|
75
|
+
context: 'Medical Event',
|
|
76
|
+
createdDate: '23rd Feb 2024',
|
|
77
|
+
modifiedDate: '23rd Feb 2024',
|
|
78
|
+
accessedDate: '30th Jan 2025',
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
const DEFAULT_BULK_ACTIONS = [
|
|
82
|
+
{
|
|
83
|
+
displayName: 'Archive',
|
|
84
|
+
callback: () => undefined,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
displayName: 'Delete',
|
|
88
|
+
callback: () => undefined,
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
export const CustomReportWriterPage = ({ className, reports = DEFAULT_REPORTS, bulkActions = DEFAULT_BULK_ACTIONS, onCreateNewReport, onSchedule, onDuplicateSelected, onEditSelected, onDownloadCsv, onDownloadPdf, onChangeFilters, onOpenReport, onDuplicateReport, onEditReport, }) => {
|
|
92
|
+
const [activeTab, setActiveTab] = useState('active');
|
|
93
|
+
const columnDefs = [
|
|
94
|
+
{
|
|
95
|
+
checkboxSelection: true,
|
|
96
|
+
headerCheckboxSelection: true,
|
|
97
|
+
width: 48,
|
|
98
|
+
suppressSizeToFit: true,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
field: 'title',
|
|
102
|
+
headerName: 'Title',
|
|
103
|
+
sortable: true,
|
|
104
|
+
flex: 2,
|
|
105
|
+
cellRenderer: ({ value, data }) => (_jsx(Button, { variant: "text-link", size: "S", onClick: () => data && onOpenReport?.(data.id), children: value })),
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
field: 'type',
|
|
109
|
+
headerName: 'Type',
|
|
110
|
+
sortable: true,
|
|
111
|
+
flex: 1,
|
|
112
|
+
cellRenderer: ({ value }) => (_jsxs("span", { className: "ds-custom-report-writer-page__type-cell", children: [_jsx(Icon, { name: typeIconMap[value] ?? 'file', size: 16 }), value] })),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
field: 'createdBy',
|
|
116
|
+
headerName: 'Created By',
|
|
117
|
+
sortable: true,
|
|
118
|
+
flex: 1,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
field: 'context',
|
|
122
|
+
headerName: 'Context',
|
|
123
|
+
sortable: true,
|
|
124
|
+
flex: 1,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
field: 'createdDate',
|
|
128
|
+
headerName: 'Created Date',
|
|
129
|
+
sortable: true,
|
|
130
|
+
sort: 'asc',
|
|
131
|
+
flex: 1,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
field: 'modifiedDate',
|
|
135
|
+
headerName: 'Modified Date',
|
|
136
|
+
sortable: true,
|
|
137
|
+
flex: 1,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
field: 'accessedDate',
|
|
141
|
+
headerName: 'Accessed Date',
|
|
142
|
+
sortable: true,
|
|
143
|
+
flex: 1,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
headerName: '',
|
|
147
|
+
width: 48,
|
|
148
|
+
suppressSizeToFit: true,
|
|
149
|
+
cellRenderer: ({ data }) => (_jsxs(Dropdown, { children: [_jsx(Dropdown.Trigger, { children: _jsx(Button, { variant: "tertiary", size: "S", iconLeftName: "ellipsis-vertical", iconLeftScreenReaderText: "Row actions" }) }), _jsxs(Dropdown.Content, { children: [_jsx(Dropdown.Item, { onSelect: () => data && onDuplicateReport?.(data), children: "Duplicate" }), _jsx(Dropdown.Item, { onSelect: () => data && onEditReport?.(data), children: "Edit" })] })] })),
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
const tableHeaderContent = (_jsxs("div", { className: "ds-custom-report-writer-page__table-header", children: [_jsxs("div", { className: "ds-custom-report-writer-page__toolbar-primary", children: [_jsxs("div", { className: "ds-custom-report-writer-page__toolbar-left", children: [_jsxs(Dropdown, { children: [_jsx(Dropdown.Trigger, { children: _jsx(Button, { variant: "dropdown", iconLeftName: "download", children: "Download" }) }), _jsxs(Dropdown.Content, { children: [_jsx(Dropdown.Item, { onSelect: onDownloadCsv, children: "Download as CSV" }), _jsx(Dropdown.Item, { onSelect: onDownloadPdf, children: "Download as PDF" })] })] }), _jsx(Button, { variant: "secondary", size: "S", onClick: onSchedule, children: "Schedule" })] }), _jsxs("div", { className: "ds-custom-report-writer-page__toolbar-right", children: [_jsx(Button, { variant: "secondary", size: "S", onClick: onDuplicateSelected, children: "Duplicate" }), _jsx(Button, { variant: "secondary", size: "S", onClick: onEditSelected, children: "Edit" })] })] }), _jsxs("div", { className: "ds-custom-report-writer-page__toolbar-bulk", children: [_jsxs("div", { className: "ds-custom-report-writer-page__toolbar-left", children: [_jsx(Table.BulkActionsDropdown, { actions: bulkActions }), _jsx(Table.HideColumnsDropdown, {})] }), _jsxs("div", { className: "ds-custom-report-writer-page__toolbar-right", children: [_jsx(TooltipWrapper, { tooltipContent: "Export", children: _jsx(Button, { variant: "tertiary", size: "S", iconLeftName: "upload", iconLeftScreenReaderText: "Export" }) }), _jsx(TooltipWrapper, { tooltipContent: "Settings", children: _jsx(Button, { variant: "tertiary", size: "S", iconLeftName: "settings", iconLeftScreenReaderText: "Settings" }) }), _jsx(TooltipWrapper, { tooltipContent: "Help", children: _jsx(Button, { variant: "tertiary", size: "S", iconLeftName: "circle-help", iconLeftScreenReaderText: "Help" }) }), _jsx(TooltipWrapper, { tooltipContent: "Expand table", children: _jsx(Button, { variant: "tertiary", size: "S", iconLeftName: "expand", iconLeftScreenReaderText: "Expand table" }) })] })] })] }));
|
|
153
|
+
const tableFooterContent = (_jsxs("div", { className: "ds-custom-report-writer-page__filter-row", children: [_jsx(Icon, { name: "funnel", size: 16 }), _jsx(Table.RowCountInfo, {}), _jsx(Button, { variant: "text-link", onClick: onChangeFilters, children: "Change" })] }));
|
|
154
|
+
return (_jsxs("div", { className: classNames('ds-custom-report-writer-page', className), children: [_jsxs("svg", { role: "img", "aria-label": "TopNav placeholder - component not yet available in design system", width: "100%", height: 48, xmlns: "http://www.w3.org/2000/svg", className: "ds-custom-report-writer-page__top-nav-placeholder", children: [_jsx("rect", { width: "100%", height: "100%", fill: "#2c2c2c" }), _jsx("text", { x: "50%", y: "50%", textAnchor: "middle", dominantBaseline: "middle", fill: "#888888", fontSize: "12", fontFamily: "sans-serif", children: "TopNav" })] }), _jsxs("div", { className: "ds-custom-report-writer-page__layout", children: [_jsxs("svg", { role: "img", "aria-label": "SideNavIcons placeholder - component not yet available in design system", width: 48, height: 600, xmlns: "http://www.w3.org/2000/svg", className: "ds-custom-report-writer-page__side-nav-icons-placeholder", children: [_jsx("rect", { width: "100%", height: "100%", fill: "#f5f5f5" }), _jsx("rect", { x: "2", y: "2", width: "44", height: "596", fill: "none", stroke: "#cccccc", strokeWidth: "2", strokeDasharray: "8 4", rx: "3" }), _jsx("text", { x: "50%", y: "50%", textAnchor: "middle", dominantBaseline: "middle", fill: "#888888", fontSize: "10", fontFamily: "sans-serif", transform: "rotate(-90, 24, 300)", children: "SideNavIcons" })] }), _jsxs("svg", { role: "img", "aria-label": "SideNavText placeholder - component not yet available in design system", width: 200, height: 600, xmlns: "http://www.w3.org/2000/svg", className: "ds-custom-report-writer-page__side-nav-text-placeholder", children: [_jsx("rect", { width: "100%", height: "100%", fill: "#f5f5f5" }), _jsx("rect", { x: "2", y: "2", width: "196", height: "596", fill: "none", stroke: "#cccccc", strokeWidth: "2", strokeDasharray: "8 4", rx: "3" }), _jsx("text", { x: "50%", y: "48%", textAnchor: "middle", dominantBaseline: "middle", fill: "#888888", fontSize: "12", fontWeight: "600", fontFamily: "sans-serif", children: "SideNavText" }), _jsx("text", { x: "50%", y: "55%", textAnchor: "middle", dominantBaseline: "middle", fill: "#aaaaaa", fontSize: "10", fontFamily: "sans-serif", children: "Component not yet available" })] }), _jsxs("main", { className: "ds-custom-report-writer-page__content", children: [_jsx("nav", { "aria-label": "Breadcrumb", className: "ds-custom-report-writer-page__breadcrumbs", children: _jsxs("ol", { className: "ds-custom-report-writer-page__breadcrumb-list", children: [_jsx("li", { className: "ds-custom-report-writer-page__breadcrumb-item", children: _jsx(Button, { variant: "text-link", onClick: () => undefined, children: "School" }) }), _jsx("li", { "aria-hidden": "true", className: "ds-custom-report-writer-page__breadcrumb-separator", children: _jsx(Icon, { name: "chevron-right", size: 16 }) }), _jsx("li", { className: "ds-custom-report-writer-page__breadcrumb-item ds-custom-report-writer-page__breadcrumb-item--current", "aria-current": "page", children: "Custom Report Writer" })] }) }), _jsxs("header", { className: "ds-custom-report-writer-page__header", children: [_jsx(Heading, { level: 1, children: "Custom Report Writer - All Reports" }), _jsx(Button, { variant: "primary", onClick: onCreateNewReport, children: "Create New Report" })] }), _jsxs("svg", { role: "img", "aria-label": "Banner placeholder - component not yet available in design system", width: "100%", height: 64, xmlns: "http://www.w3.org/2000/svg", className: "ds-custom-report-writer-page__banner-placeholder", children: [_jsx("rect", { width: "100%", height: "100%", fill: "#f5f5f5" }), _jsx("rect", { x: "2", y: "2", width: "99%", height: "60", fill: "none", stroke: "#cccccc", strokeWidth: "2", strokeDasharray: "8 4", rx: "3" }), _jsx("text", { x: "50%", y: "42%", textAnchor: "middle", dominantBaseline: "middle", fill: "#888888", fontSize: "13", fontWeight: "600", fontFamily: "sans-serif", children: "Banner" }), _jsx("text", { x: "50%", y: "65%", textAnchor: "middle", dominantBaseline: "middle", fill: "#aaaaaa", fontSize: "11", fontFamily: "sans-serif", children: "Component not yet available in design system" })] }), _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(Tabs.Item, { active: activeTab === 'expired', tabElementProps: { onClick: () => setActiveTab('expired') }, children: "Expired" })] }), _jsx(Table, { rowData: reports, columnDefs: columnDefs, domLayout: "autoHeight", headerContent: tableHeaderContent, footerContent: tableFooterContent, hasSearch: false })] })] })] }));
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=CustomReportWriterPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomReportWriterPage.js","sourceRoot":"","sources":["../../../src/pages/customReportWriterPage/CustomReportWriterPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
/**
|
|
3
|
+
* Well, picture it: St. Olaf, 1989.
|
|
4
|
+
*
|
|
5
|
+
* Every year, the town hall would commission a big batch of reports - attendance
|
|
6
|
+
* of the yodeling classes, staff contracts for the eel wranglers, medical events
|
|
7
|
+
* from the annual lutefisk tasting incident. Old Sigrid Petersen was in charge
|
|
8
|
+
* of keeping track of them all, and she did it by stacking them in three different
|
|
9
|
+
* drawers: Active reports (currently useful), Archived reports (lovingly retired),
|
|
10
|
+
* and Expired reports (the ones that had gone stale because the student groups
|
|
11
|
+
* they referenced no longer existed). Every few months someone would open the
|
|
12
|
+
* Expired drawer and a warning note would fall out saying "Fix the filters, Sigrid!"
|
|
13
|
+
* It was very stressful. Poor Sigrid.
|
|
14
|
+
*
|
|
15
|
+
* The CustomReportWriterPage is the digital solution that would have saved Sigrid
|
|
16
|
+
* years of drawer-related anxiety. It is the main page for browsing and managing
|
|
17
|
+
* custom reports in the Arbor system - three clear tabs (Active, Archived, Expired),
|
|
18
|
+
* a warning banner about expired filters, a download dropdown, scheduling and
|
|
19
|
+
* duplication tooling, and a powerful AG Grid table showing all reports at a glance.
|
|
20
|
+
*
|
|
21
|
+
* **Features:**
|
|
22
|
+
* - Placeholder SVGs for TopNav and SideNav (app shell components not yet in library)
|
|
23
|
+
* - Composed breadcrumb navigation: School / Custom Report Writer
|
|
24
|
+
* - Page heading "Custom Report Writer - All Reports" with a "Create New Report" primary button
|
|
25
|
+
* - Placeholder SVG for Banner/Alert (no Banner component in library yet)
|
|
26
|
+
* - Tab navigation to switch between Active, Archived, and Expired views
|
|
27
|
+
* - AG Grid table with: checkbox selection, Title (text-link), Type (with icon), Created By,
|
|
28
|
+
* Context, Created Date, Modified Date, Accessed Date, and a row-actions dropdown (Duplicate / Edit)
|
|
29
|
+
* - Primary toolbar with: Download dropdown (CSV / PDF), Schedule, Duplicate, Edit buttons
|
|
30
|
+
* - Bulk actions toolbar with: BulkActionsDropdown, HideColumnsDropdown, Export, Settings, Help,
|
|
31
|
+
* and Expand Table icon buttons (all with tooltips)
|
|
32
|
+
* - Filter row footer with a funnel icon, live row count, and a "Change" text-link button
|
|
33
|
+
*
|
|
34
|
+
* **Tab behaviour:**
|
|
35
|
+
* - The Active tab is selected by default on first render
|
|
36
|
+
* - Tab state is managed internally via useState - no external wiring needed
|
|
37
|
+
* - All three tabs (Active, Archived, Expired) display the same `reports` array -
|
|
38
|
+
* the consuming application is responsible for passing the correct subset per tab
|
|
39
|
+
*
|
|
40
|
+
* **Placeholder SVG components:**
|
|
41
|
+
*
|
|
42
|
+
* | Placeholder | Reason |
|
|
43
|
+
* |------------------|---------------------------------------------------------------------|
|
|
44
|
+
* | TopNav | App shell component - not yet available in the design system library |
|
|
45
|
+
* | SideNavIcons | App shell component - not yet available in the design system library |
|
|
46
|
+
* | SideNavText | App shell component - not yet available in the design system library |
|
|
47
|
+
* | Banner | No Banner/Alert component in library yet |
|
|
48
|
+
*
|
|
49
|
+
* **Composed (not library) components:**
|
|
50
|
+
*
|
|
51
|
+
* | Interim pattern | Reason |
|
|
52
|
+
* |------------------|---------------------------------------------------------------------|
|
|
53
|
+
* | Breadcrumb nav | No Breadcrumbs component in library yet - composed with nav/ol/li |
|
|
54
|
+
*
|
|
55
|
+
* **Callbacks:**
|
|
56
|
+
* - `onCreateNewReport` - fired when the "Create New Report" header button is clicked
|
|
57
|
+
* - `onSchedule` - fired when the "Schedule" toolbar button is clicked
|
|
58
|
+
* - `onDuplicateSelected` - fired when the primary toolbar "Duplicate" button is clicked
|
|
59
|
+
* - `onEditSelected` - fired when the primary toolbar "Edit" button is clicked
|
|
60
|
+
* - `onDownloadCsv` - fired when "Download as CSV" is selected from the Download dropdown
|
|
61
|
+
* - `onDownloadPdf` - fired when "Download as PDF" is selected from the Download dropdown
|
|
62
|
+
* - `onChangeFilters` - fired when the "Change" text-link in the filter footer is clicked
|
|
63
|
+
* - `onOpenReport` - fired with the report id when a report title link in the table is clicked
|
|
64
|
+
* - `onDuplicateReport` - fired with the full ReportRow object when "Duplicate" is chosen in a row dropdown
|
|
65
|
+
* - `onEditReport` - fired with the full ReportRow object when "Edit" is chosen in a row dropdown
|
|
66
|
+
*
|
|
67
|
+
* **Accessibility:**
|
|
68
|
+
* - Breadcrumb uses `<nav aria-label="Breadcrumb">` with `aria-current="page"` on the current item
|
|
69
|
+
* - The separator chevrons have `aria-hidden="true"` so screen readers skip them
|
|
70
|
+
* - All icon-only buttons have `iconLeftScreenReaderText` for screen reader users
|
|
71
|
+
* - Tooltip wrappers provide visible labels for Export, Settings, Help, and Expand Table buttons
|
|
72
|
+
* - Page structure uses semantic `<main>`, `<header>`, and `<nav>` landmarks
|
|
73
|
+
* - All placeholder SVGs have `role="img"` with descriptive `aria-label` attributes
|
|
74
|
+
*/
|
|
75
|
+
declare const meta: {
|
|
76
|
+
title: string;
|
|
77
|
+
component: ({ className, reports, bulkActions, onCreateNewReport, onSchedule, onDuplicateSelected, onEditSelected, onDownloadCsv, onDownloadPdf, onChangeFilters, onOpenReport, onDuplicateReport, onEditReport, }: import("./CustomReportWriterPage.js").CustomReportWriterPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
78
|
+
parameters: {
|
|
79
|
+
layout: string;
|
|
80
|
+
docs: {
|
|
81
|
+
description: {
|
|
82
|
+
component: string;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
tags: string[];
|
|
87
|
+
args: {
|
|
88
|
+
onCreateNewReport: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
89
|
+
onSchedule: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
90
|
+
onDuplicateSelected: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
91
|
+
onEditSelected: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
92
|
+
onDownloadCsv: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
93
|
+
onDownloadPdf: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
94
|
+
onChangeFilters: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
95
|
+
onOpenReport: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
96
|
+
onDuplicateReport: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
97
|
+
onEditReport: import("@vitest/spy").Mock<(...args: any[]) => any>;
|
|
98
|
+
};
|
|
99
|
+
argTypes: {
|
|
100
|
+
reports: {
|
|
101
|
+
control: "object";
|
|
102
|
+
description: string;
|
|
103
|
+
};
|
|
104
|
+
bulkActions: {
|
|
105
|
+
control: "object";
|
|
106
|
+
description: string;
|
|
107
|
+
};
|
|
108
|
+
onCreateNewReport: {
|
|
109
|
+
description: string;
|
|
110
|
+
};
|
|
111
|
+
onSchedule: {
|
|
112
|
+
description: string;
|
|
113
|
+
};
|
|
114
|
+
onDuplicateSelected: {
|
|
115
|
+
description: string;
|
|
116
|
+
};
|
|
117
|
+
onEditSelected: {
|
|
118
|
+
description: string;
|
|
119
|
+
};
|
|
120
|
+
onDownloadCsv: {
|
|
121
|
+
description: string;
|
|
122
|
+
};
|
|
123
|
+
onDownloadPdf: {
|
|
124
|
+
description: string;
|
|
125
|
+
};
|
|
126
|
+
onChangeFilters: {
|
|
127
|
+
description: string;
|
|
128
|
+
};
|
|
129
|
+
onOpenReport: {
|
|
130
|
+
description: string;
|
|
131
|
+
};
|
|
132
|
+
onDuplicateReport: {
|
|
133
|
+
description: string;
|
|
134
|
+
};
|
|
135
|
+
onEditReport: {
|
|
136
|
+
description: string;
|
|
137
|
+
};
|
|
138
|
+
className: {
|
|
139
|
+
control: "text";
|
|
140
|
+
description: string;
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
export default meta;
|
|
145
|
+
type Story = StoryObj<typeof meta>;
|
|
146
|
+
/**
|
|
147
|
+
* The default state, using the component's built-in example reports.
|
|
148
|
+
*
|
|
149
|
+
* Oh, this is just like St. Olaf on a perfectly ordinary Tuesday! Everything
|
|
150
|
+
* is in its place, the reports are all there, the warning banner is kindly
|
|
151
|
+
* reminding you about those expired filters, and the three tabs are lined up
|
|
152
|
+
* waiting for you to choose: Active, Archived, or Expired.
|
|
153
|
+
*
|
|
154
|
+
* This story renders with no props at all (well, the callback `fn()` spies are
|
|
155
|
+
* there, but they come from the meta args). The component's own built-in default
|
|
156
|
+
* data takes over: six realistic example reports including attendance records,
|
|
157
|
+
* student contacts, school name stamps, aptitude reports, a staff contract port,
|
|
158
|
+
* and a medical events report. Just a lovely cross-section of school life.
|
|
159
|
+
*
|
|
160
|
+
* Things to try:
|
|
161
|
+
* - Click the "Active", "Archived", or "Expired" tabs to switch views
|
|
162
|
+
* - Click "Create New Report" to fire `onCreateNewReport` (see the Actions panel)
|
|
163
|
+
* - Click the "Download" dropdown to access CSV and PDF export options
|
|
164
|
+
* - Click any report title link to fire `onOpenReport` with that report's id
|
|
165
|
+
* - Click the ellipsis icon on any row to access "Duplicate" or "Edit" row actions
|
|
166
|
+
*/
|
|
167
|
+
export declare const Default: Story;
|
|
168
|
+
/**
|
|
169
|
+
* The page loaded with a custom set of reports.
|
|
170
|
+
*
|
|
171
|
+
* You know, this reminds me of the time in St. Olaf when the new school
|
|
172
|
+
* secretary, Ingrid Bergsen, came in and said "I'm going to reorganise all
|
|
173
|
+
* the reports my way." And she did! Three beautiful new reports: an attendance
|
|
174
|
+
* summary for Year 11, a staff absence overview, and a whole-school behaviour
|
|
175
|
+
* report. Each one was relevant, well-named, and lovingly created by a real
|
|
176
|
+
* person (well, two real people and Arbor Admin, but that counts).
|
|
177
|
+
*
|
|
178
|
+
* This story demonstrates passing your own `reports` array to the component.
|
|
179
|
+
* Three reports of different types (Student, Staff, School) are shown, each
|
|
180
|
+
* with a different creator and context. The Type column correctly shows the
|
|
181
|
+
* matching icon for each type - a person icon for Student and Staff, a house
|
|
182
|
+
* for School.
|
|
183
|
+
*
|
|
184
|
+
* Click any report title to fire `onOpenReport`. Use the ellipsis row dropdown
|
|
185
|
+
* to fire `onDuplicateReport` or `onEditReport` with the full report object.
|
|
186
|
+
*/
|
|
187
|
+
export declare const WithCustomReports: Story;
|
|
188
|
+
/**
|
|
189
|
+
* The empty state - no reports have been created yet.
|
|
190
|
+
*
|
|
191
|
+
* Oh, this is like arriving at the St. Olaf town hall on the very first day
|
|
192
|
+
* before anyone has filed a single thing. The breadcrumbs are there, the header
|
|
193
|
+
* is gleaming, the three tabs are ready and waiting, the banner placeholder is still
|
|
194
|
+
* dutifully occupying its space (even though there are no expired filters yet,
|
|
195
|
+
* which is a little philosophical if you think about it), and the table
|
|
196
|
+
* is absolutely, beautifully empty. The AG Grid dutifully shows zero rows.
|
|
197
|
+
*
|
|
198
|
+
* This is your starting point. A fresh system with no custom reports yet.
|
|
199
|
+
* Click "Create New Report" to begin populating the list. The toolbar buttons
|
|
200
|
+
* and filter footer render correctly even with an empty table, so you can
|
|
201
|
+
* verify the overall page layout without needing any data.
|
|
202
|
+
*
|
|
203
|
+
* Notice that the warning banner still renders - in a real application you
|
|
204
|
+
* would likely hide it conditionally when there are no expired reports, but
|
|
205
|
+
* this story shows the full page chrome regardless so you can inspect every element.
|
|
206
|
+
*/
|
|
207
|
+
export declare const EmptyState: Story;
|
|
208
|
+
/**
|
|
209
|
+
* All callbacks wired to Storybook action spies so you can watch them fire.
|
|
210
|
+
*
|
|
211
|
+
* Back in St. Olaf, when something important happened - say, someone opened
|
|
212
|
+
* a report or clicked "Create New Report" - we would ring the town bell so
|
|
213
|
+
* the whole village knew. In Storybook, we use the Actions panel at the bottom
|
|
214
|
+
* of the screen instead! It is very much like a town bell, only quieter and
|
|
215
|
+
* with more TypeScript.
|
|
216
|
+
*
|
|
217
|
+
* Since all callbacks are already wired via `fn()` in the meta `args` above,
|
|
218
|
+
* every story technically has them. But this story is named "With Callbacks
|
|
219
|
+
* Logged" so it is easy to find when you want to specifically focus on testing
|
|
220
|
+
* the interaction wiring. It uses the custom report set so there is something
|
|
221
|
+
* interesting to interact with.
|
|
222
|
+
*
|
|
223
|
+
* Open the "Actions" panel at the bottom of Storybook and try these interactions:
|
|
224
|
+
* - Click "Create New Report" --> `onCreateNewReport` fires
|
|
225
|
+
* - Open the Download dropdown and click "Download as CSV" --> `onDownloadCsv` fires
|
|
226
|
+
* - Open the Download dropdown and click "Download as PDF" --> `onDownloadPdf` fires
|
|
227
|
+
* - Click the "Schedule" button --> `onSchedule` fires
|
|
228
|
+
* - Click the primary toolbar "Duplicate" --> `onDuplicateSelected` fires
|
|
229
|
+
* - Click the primary toolbar "Edit" --> `onEditSelected` fires
|
|
230
|
+
* - Click the "Change" link in the filter footer --> `onChangeFilters` fires
|
|
231
|
+
* - Click a report title text-link --> `onOpenReport` fires with the report id
|
|
232
|
+
* - Click an ellipsis row button and choose "Duplicate" --> `onDuplicateReport` fires with the ReportRow
|
|
233
|
+
* - Click an ellipsis row button and choose "Edit" --> `onEditReport` fires with the ReportRow
|
|
234
|
+
*
|
|
235
|
+
* It is most excellent for verifying integration with parent components or
|
|
236
|
+
* application routing logic, hunni!
|
|
237
|
+
*/
|
|
238
|
+
export declare const WithCallbacksLogged: Story;
|
|
239
|
+
//# sourceMappingURL=CustomReportWriterPage.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomReportWriterPage.stories.d.ts","sourceRoot":"","sources":["../../../src/pages/customReportWriterPage/CustomReportWriterPage.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAK5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFqC,CAAC;AAEhD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAmEnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAMjC,CAAC"}
|