@arbor-education/design-system.components 0.25.9 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gather/instructions/project-overview.md +1 -1
- package/.github/workflows/release.yml +3 -1
- package/.storybook/main.ts +12 -6
- package/CHANGELOG.md +20 -0
- package/CONTRIBUTING.md +7 -5
- package/component-library.md +97 -3
- package/dist/components/emptyState/EmptyState.d.ts +22 -0
- package/dist/components/emptyState/EmptyState.d.ts.map +1 -0
- package/dist/components/emptyState/EmptyState.js +11 -0
- package/dist/components/emptyState/EmptyState.js.map +1 -0
- package/dist/components/emptyState/EmptyState.stories.d.ts +117 -0
- package/dist/components/emptyState/EmptyState.stories.d.ts.map +1 -0
- package/dist/components/emptyState/EmptyState.stories.js +332 -0
- package/dist/components/emptyState/EmptyState.stories.js.map +1 -0
- package/dist/components/emptyState/EmptyState.test.d.ts +2 -0
- package/dist/components/emptyState/EmptyState.test.d.ts.map +1 -0
- package/dist/components/emptyState/EmptyState.test.js +80 -0
- package/dist/components/emptyState/EmptyState.test.js.map +1 -0
- package/dist/components/favourite/FavouriteButton.d.ts +18 -0
- package/dist/components/favourite/FavouriteButton.d.ts.map +1 -0
- package/dist/components/favourite/FavouriteButton.js +16 -0
- package/dist/components/favourite/FavouriteButton.js.map +1 -0
- package/dist/components/favourite/FavouriteButton.test.d.ts +2 -0
- package/dist/components/favourite/FavouriteButton.test.d.ts.map +1 -0
- package/dist/components/favourite/FavouriteButton.test.js +37 -0
- package/dist/components/favourite/FavouriteButton.test.js.map +1 -0
- package/dist/components/filterBar/FilterBar.d.ts +1 -1
- package/dist/components/filterBar/FilterBar.stories.d.ts +1 -1
- package/dist/components/icon/Icon.d.ts +1 -1
- package/dist/components/icon/Icon.d.ts.map +1 -1
- package/dist/components/icon/Icon.js +1 -1
- package/dist/components/icon/Icon.js.map +1 -1
- package/dist/components/pill/Pill.d.ts +3 -2
- package/dist/components/pill/Pill.d.ts.map +1 -1
- package/dist/components/pill/Pill.js +15 -9
- package/dist/components/pill/Pill.js.map +1 -1
- package/dist/components/pill/Pill.stories.d.ts +21 -3
- package/dist/components/pill/Pill.stories.d.ts.map +1 -1
- package/dist/components/pill/Pill.stories.js +275 -40
- package/dist/components/pill/Pill.stories.js.map +1 -1
- package/dist/components/pill/Pill.test.js +64 -3
- package/dist/components/pill/Pill.test.js.map +1 -1
- package/dist/components/sideNavigation/SideNavigation.d.ts +34 -0
- package/dist/components/sideNavigation/SideNavigation.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigation.js +30 -0
- package/dist/components/sideNavigation/SideNavigation.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigation.stories.d.ts +72 -0
- package/dist/components/sideNavigation/SideNavigation.stories.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigation.stories.js +298 -0
- package/dist/components/sideNavigation/SideNavigation.stories.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigation.test.d.ts +2 -0
- package/dist/components/sideNavigation/SideNavigation.test.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigation.test.js +74 -0
- package/dist/components/sideNavigation/SideNavigation.test.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationContext.d.ts +10 -0
- package/dist/components/sideNavigation/SideNavigationContext.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationContext.js +15 -0
- package/dist/components/sideNavigation/SideNavigationContext.js.map +1 -0
- package/dist/components/{sidebarNav/SidebarNavGroup.d.ts → sideNavigation/SideNavigationGroup.d.ts} +3 -3
- package/dist/components/sideNavigation/SideNavigationGroup.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationGroup.js +16 -0
- package/dist/components/sideNavigation/SideNavigationGroup.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationGroup.test.d.ts +2 -0
- package/dist/components/sideNavigation/SideNavigationGroup.test.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationGroup.test.js +58 -0
- package/dist/components/sideNavigation/SideNavigationGroup.test.js.map +1 -0
- package/dist/components/{sidebarNav/SidebarNavItem.d.ts → sideNavigation/SideNavigationItem.d.ts} +11 -12
- package/dist/components/sideNavigation/SideNavigationItem.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationItem.js +28 -0
- package/dist/components/sideNavigation/SideNavigationItem.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationItem.test.d.ts +2 -0
- package/dist/components/sideNavigation/SideNavigationItem.test.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationItem.test.js +65 -0
- package/dist/components/sideNavigation/SideNavigationItem.test.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationItemFavourite.d.ts +8 -0
- package/dist/components/sideNavigation/SideNavigationItemFavourite.d.ts.map +1 -0
- package/dist/components/{sidebarNav/SidebarNavItemFavourite.js → sideNavigation/SideNavigationItemFavourite.js} +5 -5
- package/dist/components/sideNavigation/SideNavigationItemFavourite.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationItemFavourite.test.d.ts +2 -0
- package/dist/components/sideNavigation/SideNavigationItemFavourite.test.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationItemFavourite.test.js +31 -0
- package/dist/components/sideNavigation/SideNavigationItemFavourite.test.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationTitle.d.ts +4 -0
- package/dist/components/sideNavigation/SideNavigationTitle.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationTitle.js +7 -0
- package/dist/components/sideNavigation/SideNavigationTitle.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationTitle.test.d.ts +2 -0
- package/dist/components/sideNavigation/SideNavigationTitle.test.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationTitle.test.js +22 -0
- package/dist/components/sideNavigation/SideNavigationTitle.test.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationTooltip.d.ts +7 -0
- package/dist/components/sideNavigation/SideNavigationTooltip.d.ts.map +1 -0
- package/dist/components/{sidebarNav/SidebarNavTooltip.js → sideNavigation/SideNavigationTooltip.js} +2 -2
- package/dist/components/sideNavigation/SideNavigationTooltip.js.map +1 -0
- package/dist/components/sideNavigation/SideNavigationTooltip.test.d.ts +2 -0
- package/dist/components/sideNavigation/SideNavigationTooltip.test.d.ts.map +1 -0
- package/dist/components/sideNavigation/SideNavigationTooltip.test.js +26 -0
- package/dist/components/sideNavigation/SideNavigationTooltip.test.js.map +1 -0
- package/dist/components/sideNavigation/resolvePanelItemProps.d.ts +4 -0
- package/dist/components/sideNavigation/resolvePanelItemProps.d.ts.map +1 -0
- package/dist/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.js +5 -4
- package/dist/components/sideNavigation/resolvePanelItemProps.js.map +1 -0
- package/dist/components/sideNavigation/resolvePanelItemProps.test.d.ts.map +1 -0
- package/dist/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.test.js +18 -4
- package/dist/components/sideNavigation/resolvePanelItemProps.test.js.map +1 -0
- package/dist/components/sideNavigation/types.d.ts +47 -0
- package/dist/components/sideNavigation/types.d.ts.map +1 -0
- package/dist/components/sideNavigation/types.js +2 -0
- package/dist/components/sideNavigation/types.js.map +1 -0
- package/dist/components/sidebar/Sidebar.d.ts +13 -0
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -0
- package/dist/components/sidebar/Sidebar.js +9 -0
- package/dist/components/sidebar/Sidebar.js.map +1 -0
- package/dist/components/sidebar/Sidebar.stories.d.ts +48 -0
- package/dist/components/sidebar/Sidebar.stories.d.ts.map +1 -0
- package/dist/components/sidebar/Sidebar.stories.js +444 -0
- package/dist/components/sidebar/Sidebar.stories.js.map +1 -0
- package/dist/components/sidebar/Sidebar.test.d.ts +2 -0
- package/dist/components/sidebar/Sidebar.test.d.ts.map +1 -0
- package/dist/components/sidebar/Sidebar.test.js +81 -0
- package/dist/components/sidebar/Sidebar.test.js.map +1 -0
- package/dist/components/sidebar/SidebarItem.d.ts +7 -0
- package/dist/components/sidebar/SidebarItem.d.ts.map +1 -0
- package/dist/components/sidebar/SidebarItem.js +11 -0
- package/dist/components/sidebar/SidebarItem.js.map +1 -0
- package/dist/components/singleUser/SingleUser.d.ts +1 -1
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/Table.js +2 -1
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/table/Table.stories.d.ts.map +1 -1
- package/dist/components/table/Table.stories.js +24 -70
- package/dist/components/table/Table.stories.js.map +1 -1
- package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts.map +1 -1
- package/dist/components/table/cellEditors/DateCellEditor.stories.js +16 -13
- package/dist/components/table/cellEditors/DateCellEditor.stories.js.map +1 -1
- package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js +6 -7
- package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js.map +1 -1
- package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js +7 -8
- package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js.map +1 -1
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js +7 -8
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js.map +1 -1
- package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js +7 -8
- package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js.map +1 -1
- package/dist/components/table/cellRenderers/NumberInputCellRenderer.stories.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/NumberInputCellRenderer.stories.js +12 -15
- package/dist/components/table/cellRenderers/NumberInputCellRenderer.stories.js.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js +19 -29
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js.map +1 -1
- package/dist/components/table/columnTypes.d.ts +3 -0
- package/dist/components/table/columnTypes.d.ts.map +1 -0
- package/dist/components/table/columnTypes.js +55 -0
- package/dist/components/table/columnTypes.js.map +1 -0
- package/dist/components/tabs/TabsItem.stories.d.ts +2 -2
- package/dist/components/toast/Toast.d.ts +11 -2
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +5 -3
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toast/Toast.stories.d.ts +15 -3
- package/dist/components/toast/Toast.stories.d.ts.map +1 -1
- package/dist/components/toast/Toast.stories.js +43 -41
- package/dist/components/toast/Toast.stories.js.map +1 -1
- package/dist/components/toast/Toast.test.js +19 -4
- package/dist/components/toast/Toast.test.js.map +1 -1
- package/dist/components/toast/ToastAction.d.ts +7 -0
- package/dist/components/toast/ToastAction.d.ts.map +1 -0
- package/dist/components/toast/ToastAction.js +9 -0
- package/dist/components/toast/ToastAction.js.map +1 -0
- package/dist/components/toggleGroup/ToggleGroup.stories.js +1 -1
- package/dist/components/toggleGroup/ToggleGroup.stories.js.map +1 -1
- package/dist/components/tooltip/TooltipWrapper.d.ts +1 -0
- package/dist/components/tooltip/TooltipWrapper.d.ts.map +1 -1
- package/dist/components/tooltip/TooltipWrapper.js +2 -2
- package/dist/components/tooltip/TooltipWrapper.js.map +1 -1
- package/dist/components/widget/Widget.d.ts +18 -0
- package/dist/components/widget/Widget.d.ts.map +1 -0
- package/dist/components/widget/Widget.js +51 -0
- package/dist/components/widget/Widget.js.map +1 -0
- package/dist/components/widget/Widget.stories.d.ts +128 -0
- package/dist/components/widget/Widget.stories.d.ts.map +1 -0
- package/dist/components/widget/Widget.stories.js +417 -0
- package/dist/components/widget/Widget.stories.js.map +1 -0
- package/dist/components/widget/Widget.test.d.ts +2 -0
- package/dist/components/widget/Widget.test.d.ts.map +1 -0
- package/dist/components/widget/Widget.test.js +110 -0
- package/dist/components/widget/Widget.test.js.map +1 -0
- package/dist/components/widget/WidgetBody.d.ts +6 -0
- package/dist/components/widget/WidgetBody.d.ts.map +1 -0
- package/dist/components/widget/WidgetBody.js +20 -0
- package/dist/components/widget/WidgetBody.js.map +1 -0
- package/dist/components/widget/WidgetContext.d.ts +20 -0
- package/dist/components/widget/WidgetContext.d.ts.map +1 -0
- package/dist/components/widget/WidgetContext.js +10 -0
- package/dist/components/widget/WidgetContext.js.map +1 -0
- package/dist/components/widget/WidgetHeader.d.ts +8 -0
- package/dist/components/widget/WidgetHeader.d.ts.map +1 -0
- package/dist/components/widget/WidgetHeader.js +56 -0
- package/dist/components/widget/WidgetHeader.js.map +1 -0
- package/dist/components/widget/types.d.ts +43 -0
- package/dist/components/widget/types.d.ts.map +1 -0
- package/dist/components/widget/types.js +2 -0
- package/dist/components/widget/types.js.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendar.d.ts +35 -0
- package/dist/components/widgetCalendar/WidgetCalendar.d.ts.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendar.js +22 -0
- package/dist/components/widgetCalendar/WidgetCalendar.js.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendar.stories.d.ts +60 -0
- package/dist/components/widgetCalendar/WidgetCalendar.stories.d.ts.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendar.stories.js +140 -0
- package/dist/components/widgetCalendar/WidgetCalendar.stories.js.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendar.test.d.ts +2 -0
- package/dist/components/widgetCalendar/WidgetCalendar.test.d.ts.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendar.test.js +88 -0
- package/dist/components/widgetCalendar/WidgetCalendar.test.js.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendarItem.d.ts +17 -0
- package/dist/components/widgetCalendar/WidgetCalendarItem.d.ts.map +1 -0
- package/dist/components/widgetCalendar/WidgetCalendarItem.js +25 -0
- package/dist/components/widgetCalendar/WidgetCalendarItem.js.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavourites.d.ts +12 -0
- package/dist/components/widgetFavourites/WidgetFavourites.d.ts.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavourites.js +23 -0
- package/dist/components/widgetFavourites/WidgetFavourites.js.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavourites.stories.d.ts +84 -0
- package/dist/components/widgetFavourites/WidgetFavourites.stories.d.ts.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavourites.stories.js +210 -0
- package/dist/components/widgetFavourites/WidgetFavourites.stories.js.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavourites.test.d.ts +2 -0
- package/dist/components/widgetFavourites/WidgetFavourites.test.d.ts.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavourites.test.js +67 -0
- package/dist/components/widgetFavourites/WidgetFavourites.test.js.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavouritesItem.d.ts +3 -0
- package/dist/components/widgetFavourites/WidgetFavouritesItem.d.ts.map +1 -0
- package/dist/components/widgetFavourites/WidgetFavouritesItem.js +10 -0
- package/dist/components/widgetFavourites/WidgetFavouritesItem.js.map +1 -0
- package/dist/components/widgetFavourites/types.d.ts +25 -0
- package/dist/components/widgetFavourites/types.d.ts.map +1 -0
- package/dist/components/widgetFavourites/types.js +2 -0
- package/dist/components/widgetFavourites/types.js.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotifications.d.ts +33 -0
- package/dist/components/widgetNotifications/WidgetNotifications.d.ts.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotifications.js +18 -0
- package/dist/components/widgetNotifications/WidgetNotifications.js.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotifications.stories.d.ts +60 -0
- package/dist/components/widgetNotifications/WidgetNotifications.stories.d.ts.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotifications.stories.js +269 -0
- package/dist/components/widgetNotifications/WidgetNotifications.stories.js.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotifications.test.d.ts +2 -0
- package/dist/components/widgetNotifications/WidgetNotifications.test.d.ts.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotifications.test.js +79 -0
- package/dist/components/widgetNotifications/WidgetNotifications.test.js.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotificationsItem.d.ts +14 -0
- package/dist/components/widgetNotifications/WidgetNotificationsItem.d.ts.map +1 -0
- package/dist/components/widgetNotifications/WidgetNotificationsItem.js +14 -0
- package/dist/components/widgetNotifications/WidgetNotificationsItem.js.map +1 -0
- package/dist/index.css +756 -78
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +15 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -8
- package/dist/index.js.map +1 -1
- package/dist/utils/favourites/favouriteConstants.d.ts +12 -0
- package/dist/utils/favourites/favouriteConstants.d.ts.map +1 -0
- package/dist/utils/favourites/favouriteConstants.js +16 -0
- package/dist/utils/favourites/favouriteConstants.js.map +1 -0
- package/dist/utils/favourites/favouriteConstants.test.d.ts +2 -0
- package/dist/utils/favourites/favouriteConstants.test.d.ts.map +1 -0
- package/dist/utils/favourites/favouriteConstants.test.js +12 -0
- package/dist/utils/favourites/favouriteConstants.test.js.map +1 -0
- package/dist/utils/hooks/useControllableBoolean.d.ts.map +1 -0
- package/dist/utils/hooks/useControllableBoolean.js.map +1 -0
- package/dist/utils/hooks/useControllableBoolean.test.d.ts +2 -0
- package/dist/utils/hooks/useControllableBoolean.test.d.ts.map +1 -0
- package/dist/utils/hooks/useControllableBoolean.test.js +34 -0
- package/dist/utils/hooks/useControllableBoolean.test.js.map +1 -0
- package/package.json +10 -11
- package/src/components/emptyState/EmptyState.stories.tsx +487 -0
- package/src/components/emptyState/EmptyState.test.tsx +140 -0
- package/src/components/emptyState/EmptyState.tsx +84 -0
- package/src/components/emptyState/emptyState.scss +63 -0
- package/src/components/favourite/FavouriteButton.test.tsx +83 -0
- package/src/components/favourite/FavouriteButton.tsx +70 -0
- package/src/components/favourite/favouriteButton.scss +37 -0
- package/src/components/icon/Icon.tsx +2 -2
- package/src/components/link/link.scss +26 -0
- package/src/components/pill/Pill.stories.tsx +432 -41
- package/src/components/pill/Pill.test.tsx +74 -3
- package/src/components/pill/Pill.tsx +26 -11
- package/src/components/sideNavigation/SideNavigation.stories.tsx +578 -0
- package/src/components/sideNavigation/SideNavigation.test.tsx +109 -0
- package/src/components/sideNavigation/SideNavigation.tsx +98 -0
- package/src/components/sideNavigation/SideNavigationContext.tsx +25 -0
- package/src/components/sideNavigation/SideNavigationGroup.test.tsx +103 -0
- package/src/components/{sidebarNav/SidebarNavGroup.tsx → sideNavigation/SideNavigationGroup.tsx} +8 -8
- package/src/components/sideNavigation/SideNavigationItem.test.tsx +137 -0
- package/src/components/sideNavigation/SideNavigationItem.tsx +125 -0
- package/src/components/sideNavigation/SideNavigationItemFavourite.test.tsx +54 -0
- package/src/components/{sidebarNav/SidebarNavItemFavourite.tsx → sideNavigation/SideNavigationItemFavourite.tsx} +7 -7
- package/src/components/sideNavigation/SideNavigationTitle.test.tsx +23 -0
- package/src/components/sideNavigation/SideNavigationTitle.tsx +13 -0
- package/src/components/sideNavigation/SideNavigationTooltip.test.tsx +44 -0
- package/src/components/{sidebarNav/SidebarNavTooltip.tsx → sideNavigation/SideNavigationTooltip.tsx} +2 -2
- package/src/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.test.ts +20 -4
- package/src/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.ts +8 -7
- package/src/components/{sidebarNav/sidebarNav.scss → sideNavigation/sideNavigation.scss} +37 -136
- package/src/components/sideNavigation/types.ts +56 -0
- package/src/components/sidebar/Sidebar.stories.tsx +670 -0
- package/src/components/sidebar/Sidebar.test.tsx +155 -0
- package/src/components/sidebar/Sidebar.tsx +27 -0
- package/src/components/sidebar/SidebarItem.tsx +64 -0
- package/src/components/sidebar/sidebar.scss +65 -0
- package/src/components/table/Table.stories.tsx +24 -73
- package/src/components/table/Table.tsx +2 -0
- package/src/components/table/cellEditors/DateCellEditor.stories.tsx +16 -14
- package/src/components/table/cellRenderers/BooleanCellRenderer.stories.tsx +6 -7
- package/src/components/table/cellRenderers/ButtonCellRenderer.stories.tsx +7 -8
- package/src/components/table/cellRenderers/CheckboxCellRenderer.stories.tsx +7 -8
- package/src/components/table/cellRenderers/InlineTextCellRenderer.stories.tsx +7 -8
- package/src/components/table/cellRenderers/NumberInputCellRenderer.stories.tsx +12 -15
- package/src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx +19 -29
- package/src/components/table/columnTypes.ts +56 -0
- package/src/components/toast/Toast.stories.tsx +75 -67
- package/src/components/toast/Toast.test.tsx +40 -10
- package/src/components/toast/Toast.tsx +19 -5
- package/src/components/toast/ToastAction.tsx +17 -0
- package/src/components/toast/toast.scss +37 -0
- package/src/components/toggleGroup/ToggleGroup.stories.tsx +1 -1
- package/src/components/tooltip/TooltipWrapper.tsx +3 -1
- package/src/components/widget/Widget.stories.tsx +600 -0
- package/src/components/widget/Widget.test.tsx +263 -0
- package/src/components/widget/Widget.tsx +102 -0
- package/src/components/widget/WidgetBody.tsx +66 -0
- package/src/components/widget/WidgetContext.tsx +31 -0
- package/src/components/widget/WidgetHeader.tsx +155 -0
- package/src/components/widget/types.ts +47 -0
- package/src/components/widget/widget.scss +218 -0
- package/src/components/widgetCalendar/WidgetCalendar.stories.tsx +241 -0
- package/src/components/widgetCalendar/WidgetCalendar.test.tsx +137 -0
- package/src/components/widgetCalendar/WidgetCalendar.tsx +105 -0
- package/src/components/widgetCalendar/WidgetCalendarItem.tsx +105 -0
- package/src/components/widgetCalendar/widgetCalendar.scss +124 -0
- package/src/components/widgetFavourites/WidgetFavourites.stories.tsx +341 -0
- package/src/components/widgetFavourites/WidgetFavourites.test.tsx +127 -0
- package/src/components/widgetFavourites/WidgetFavourites.tsx +83 -0
- package/src/components/widgetFavourites/WidgetFavouritesItem.tsx +37 -0
- package/src/components/widgetFavourites/types.ts +26 -0
- package/src/components/widgetFavourites/widgetFavourites.scss +84 -0
- package/src/components/widgetNotifications/WidgetNotifications.stories.tsx +417 -0
- package/src/components/widgetNotifications/WidgetNotifications.test.tsx +152 -0
- package/src/components/widgetNotifications/WidgetNotifications.tsx +112 -0
- package/src/components/widgetNotifications/WidgetNotificationsItem.tsx +88 -0
- package/src/components/widgetNotifications/widgetNotifications.scss +186 -0
- package/src/docs/Contributing.mdx +1 -1
- package/src/index.scss +9 -1
- package/src/index.ts +22 -18
- package/src/tokens.scss +12 -2
- package/src/utils/favourites/favouriteConstants.test.ts +19 -0
- package/src/utils/favourites/favouriteConstants.ts +21 -0
- package/src/utils/hooks/useControllableBoolean.test.ts +48 -0
- package/dist/components/sidebarNav/SidebarNav.d.ts +0 -46
- package/dist/components/sidebarNav/SidebarNav.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNav.js +0 -102
- package/dist/components/sidebarNav/SidebarNav.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNav.stories.d.ts +0 -61
- package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNav.stories.js +0 -253
- package/dist/components/sidebarNav/SidebarNav.stories.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNav.test.d.ts +0 -2
- package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNav.test.js +0 -240
- package/dist/components/sidebarNav/SidebarNav.test.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavContext.d.ts +0 -13
- package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavContext.js +0 -15
- package/dist/components/sidebarNav/SidebarNavContext.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavGroup.js +0 -16
- package/dist/components/sidebarNav/SidebarNavGroup.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavItem.js +0 -44
- package/dist/components/sidebarNav/SidebarNavItem.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +0 -8
- package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavPanel.d.ts +0 -4
- package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavPanel.js +0 -9
- package/dist/components/sidebarNav/SidebarNavPanel.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +0 -10
- package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavPanelNav.js +0 -21
- package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRail.d.ts +0 -6
- package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRail.js +0 -7
- package/dist/components/sidebarNav/SidebarNavRail.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +0 -10
- package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRailItem.js +0 -25
- package/dist/components/sidebarNav/SidebarNavRailItem.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRailList.d.ts +0 -4
- package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRailList.js +0 -7
- package/dist/components/sidebarNav/SidebarNavRailList.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +0 -6
- package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavRailSlot.js +0 -7
- package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +0 -6
- package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavSeparator.js +0 -8
- package/dist/components/sidebarNav/SidebarNavSeparator.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavTitle.d.ts +0 -4
- package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavTitle.js +0 -7
- package/dist/components/sidebarNav/SidebarNavTitle.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +0 -7
- package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavTooltip.js.map +0 -1
- package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +0 -8
- package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +0 -1
- package/dist/components/sidebarNav/SidebarNavTrigger.js +0 -15
- package/dist/components/sidebarNav/SidebarNavTrigger.js.map +0 -1
- package/dist/components/sidebarNav/index.d.ts +0 -4
- package/dist/components/sidebarNav/index.d.ts.map +0 -1
- package/dist/components/sidebarNav/index.js +0 -3
- package/dist/components/sidebarNav/index.js.map +0 -1
- package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +0 -4
- package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +0 -1
- package/dist/components/sidebarNav/resolvePanelItemProps.js.map +0 -1
- package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +0 -1
- package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +0 -1
- package/dist/components/sidebarNav/types.d.ts +0 -100
- package/dist/components/sidebarNav/types.d.ts.map +0 -1
- package/dist/components/sidebarNav/types.js +0 -4
- package/dist/components/sidebarNav/types.js.map +0 -1
- package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +0 -1
- package/dist/components/sidebarNav/useControllableBoolean.js.map +0 -1
- package/src/components/sidebarNav/SidebarNav.stories.tsx +0 -484
- package/src/components/sidebarNav/SidebarNav.test.tsx +0 -611
- package/src/components/sidebarNav/SidebarNav.tsx +0 -230
- package/src/components/sidebarNav/SidebarNavContext.tsx +0 -28
- package/src/components/sidebarNav/SidebarNavItem.tsx +0 -162
- package/src/components/sidebarNav/SidebarNavPanel.tsx +0 -20
- package/src/components/sidebarNav/SidebarNavPanelNav.tsx +0 -55
- package/src/components/sidebarNav/SidebarNavRail.tsx +0 -20
- package/src/components/sidebarNav/SidebarNavRailItem.tsx +0 -83
- package/src/components/sidebarNav/SidebarNavRailList.tsx +0 -11
- package/src/components/sidebarNav/SidebarNavRailSlot.tsx +0 -15
- package/src/components/sidebarNav/SidebarNavSeparator.tsx +0 -19
- package/src/components/sidebarNav/SidebarNavTitle.tsx +0 -13
- package/src/components/sidebarNav/SidebarNavTrigger.tsx +0 -52
- package/src/components/sidebarNav/index.ts +0 -6
- package/src/components/sidebarNav/types.ts +0 -126
- /package/dist/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.test.d.ts +0 -0
- /package/dist/{components/sidebarNav → utils/hooks}/useControllableBoolean.d.ts +0 -0
- /package/dist/{components/sidebarNav → utils/hooks}/useControllableBoolean.js +0 -0
- /package/src/{components/sidebarNav → utils/hooks}/useControllableBoolean.ts +0 -0
package/dist/components/{sidebarNav/SidebarNavItem.d.ts → sideNavigation/SideNavigationItem.d.ts}
RENAMED
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes
|
|
2
|
-
import type {
|
|
3
|
-
type
|
|
1
|
+
import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes } from 'react';
|
|
2
|
+
import type { SideNavigationLinkProps } from './types.js';
|
|
3
|
+
type SideNavigationItemFavouriteVariant = {
|
|
4
4
|
canFavourite?: false;
|
|
5
5
|
favouriteTooltip?: never;
|
|
6
6
|
} | {
|
|
7
7
|
canFavourite: true;
|
|
8
8
|
favouriteTooltip: string;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
10
|
+
type SideNavigationItemLinkVariant = {
|
|
11
11
|
linkElement?: 'link';
|
|
12
12
|
href: string;
|
|
13
13
|
linkElementProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'className' | 'children'>;
|
|
14
|
-
linkProps?:
|
|
14
|
+
linkProps?: SideNavigationLinkProps;
|
|
15
15
|
};
|
|
16
|
-
type
|
|
16
|
+
type SideNavigationItemButtonVariant = {
|
|
17
17
|
linkElement: 'button';
|
|
18
18
|
href?: never;
|
|
19
19
|
linkElementProps?: ButtonHTMLAttributes<HTMLButtonElement>;
|
|
20
20
|
linkProps?: never;
|
|
21
21
|
};
|
|
22
|
-
export type
|
|
22
|
+
export type SideNavigationItemProps = {
|
|
23
23
|
current?: boolean;
|
|
24
24
|
itemId: string;
|
|
25
25
|
isPressed?: boolean;
|
|
26
|
-
onFavouriteClick?: MouseEventHandler<HTMLButtonElement>;
|
|
27
|
-
onClick?: MouseEventHandler<HTMLElement>;
|
|
26
|
+
onFavouriteClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
28
27
|
children: React.ReactNode;
|
|
29
|
-
} & Omit<HTMLAttributes<HTMLLIElement>, 'children' | 'onClick'> &
|
|
30
|
-
export declare const
|
|
28
|
+
} & Omit<HTMLAttributes<HTMLLIElement>, 'children' | 'onClick'> & SideNavigationItemFavouriteVariant & (SideNavigationItemLinkVariant | SideNavigationItemButtonVariant);
|
|
29
|
+
export declare const SideNavigationItem: (props: SideNavigationItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
31
30
|
export {};
|
|
32
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=SideNavigationItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItem.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,KAAK,kCAAkC,GACjC;IAAE,YAAY,CAAC,EAAE,KAAK,CAAC;IAAC,gBAAgB,CAAC,EAAE,KAAK,CAAA;CAAE,GAClD;IAAE,YAAY,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,KAAK,6BAA6B,GAAG;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC;IACpG,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,WAAW,EAAE,QAAQ,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC7D,kCAAkC,GAClC,CAAC,6BAA6B,GAAG,+BAA+B,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,4CAsFhE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { useSideNavigationContext } from './SideNavigationContext.js';
|
|
4
|
+
import { SideNavigationItemFavourite } from './SideNavigationItemFavourite.js';
|
|
5
|
+
export const SideNavigationItem = (props) => {
|
|
6
|
+
const { current, itemId, canFavourite, favouriteTooltip, isPressed = false, onFavouriteClick, children, className, linkElement = 'link', href, linkElementProps, linkProps, ...rest } = props;
|
|
7
|
+
const { renderLink } = useSideNavigationContext();
|
|
8
|
+
const linkClassName = classNames('ds-side-navigation__item-link', { 'ds-side-navigation__item-link--current': Boolean(current) });
|
|
9
|
+
const linkChildren = _jsx("span", { className: "ds-side-navigation__item-label", children: children });
|
|
10
|
+
const anchorLinkElementProps = linkElementProps;
|
|
11
|
+
const buttonLinkElementProps = linkElementProps;
|
|
12
|
+
const renderAnchorElement = () => renderLink
|
|
13
|
+
? renderLink({
|
|
14
|
+
href: href,
|
|
15
|
+
className: linkClassName,
|
|
16
|
+
ariaCurrent: current ? 'page' : undefined,
|
|
17
|
+
linkProps,
|
|
18
|
+
linkElementProps: anchorLinkElementProps,
|
|
19
|
+
onClick: anchorLinkElementProps?.onClick,
|
|
20
|
+
children: linkChildren,
|
|
21
|
+
})
|
|
22
|
+
: (_jsx("a", { href: href, className: linkClassName, "aria-current": current ? 'page' : undefined, ...linkProps, ...anchorLinkElementProps, children: linkChildren }));
|
|
23
|
+
const linkElementNode = linkElement === 'button'
|
|
24
|
+
? (_jsx("button", { type: "button", className: linkClassName, "aria-current": current ? 'page' : undefined, ...buttonLinkElementProps, children: linkChildren }))
|
|
25
|
+
: renderAnchorElement();
|
|
26
|
+
return (_jsxs("li", { className: classNames('ds-side-navigation__list-item', 'ds-side-navigation__item', { 'ds-side-navigation__item--has-favourite': canFavourite }, className), "data-testid": `side-navigation-item-${itemId}`, ...rest, children: [linkElementNode, canFavourite === true && (_jsx(SideNavigationItemFavourite, { isPressed: isPressed, itemId: itemId, favouriteTooltip: favouriteTooltip, onClick: onFavouriteClick }))] }));
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=SideNavigationItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItem.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAMpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AA+B/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EACJ,OAAO,EACP,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,SAAS,GAAG,KAAK,EACjB,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,WAAW,GAAG,MAAM,EACpB,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,UAAU,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAElD,MAAM,aAAa,GAAG,UAAU,CAC9B,+BAA+B,EAC/B,EAAE,wCAAwC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAC/D,CAAC;IAEF,MAAM,YAAY,GAAG,eAAM,SAAS,EAAC,gCAAgC,YAAE,QAAQ,GAAQ,CAAC;IAExF,MAAM,sBAAsB,GAAG,gBAAuE,CAAC;IACvG,MAAM,sBAAsB,GAAG,gBAAuE,CAAC;IAEvG,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,UAAU;QAC1C,CAAC,CAAC,UAAU,CAAC;YACT,IAAI,EAAE,IAAK;YACX,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACzC,SAAS;YACT,gBAAgB,EAAE,sBAAsB;YACxC,OAAO,EAAE,sBAAsB,EAAE,OAA8C;YAC/E,QAAQ,EAAE,YAAY;SACvB,CAAC;QACJ,CAAC,CAAC,CACE,YACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,aAAa,kBACV,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KACtC,SAAS,KACT,sBAAsB,YAEzB,YAAY,GACX,CACL,CAAC;IAEN,MAAM,eAAe,GAAG,WAAW,KAAK,QAAQ;QAC9C,CAAC,CAAC,CACE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,aAAa,kBACV,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KACtC,sBAAsB,YAEzB,YAAY,GACN,CACV;QACH,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAE1B,OAAO,CACL,cACE,SAAS,EAAE,UAAU,CACnB,+BAA+B,EAC/B,0BAA0B,EAC1B,EAAE,yCAAyC,EAAE,YAAY,EAAE,EAC3D,SAAS,CACV,iBACY,wBAAwB,MAAM,EAAE,KACzC,IAAI,aAEP,eAAe,EACf,YAAY,KAAK,IAAI,IAAI,CACxB,KAAC,2BAA2B,IAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,gBAAgB,GACzB,CACH,IACE,CACN,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItem.test.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItem.test.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import '@testing-library/jest-dom/vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import userEvent from '@testing-library/user-event';
|
|
5
|
+
import { describe, expect, test, vi } from 'vitest';
|
|
6
|
+
import { SideNavigation } from './SideNavigation.js';
|
|
7
|
+
import { SideNavigationItem } from './SideNavigationItem.js';
|
|
8
|
+
describe('SideNavigationItem', () => {
|
|
9
|
+
test('renders as a link when href is provided', () => {
|
|
10
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", children: "Daily Attendance" }) }));
|
|
11
|
+
const link = screen.getByRole('link', { name: 'Daily Attendance' });
|
|
12
|
+
expect(link).toHaveAttribute('href', '/daily');
|
|
13
|
+
});
|
|
14
|
+
test('renders as a button when linkElement is "button"', async () => {
|
|
15
|
+
const onClick = vi.fn();
|
|
16
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "action", linkElement: "button", linkElementProps: { onClick }, children: "Run action" }) }));
|
|
17
|
+
const button = screen.getByRole('button', { name: 'Run action' });
|
|
18
|
+
await userEvent.click(button);
|
|
19
|
+
expect(onClick).toHaveBeenCalledOnce();
|
|
20
|
+
});
|
|
21
|
+
test('applies the current class and aria-current="page" when current is true', () => {
|
|
22
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", current: true, children: "Daily Attendance" }) }));
|
|
23
|
+
const link = screen.getByRole('link', { name: 'Daily Attendance' });
|
|
24
|
+
expect(link).toHaveClass('ds-side-navigation__item-link--current');
|
|
25
|
+
expect(link).toHaveAttribute('aria-current', 'page');
|
|
26
|
+
});
|
|
27
|
+
test('does not set aria-current when current is false', () => {
|
|
28
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", children: "Daily Attendance" }) }));
|
|
29
|
+
expect(screen.getByRole('link', { name: 'Daily Attendance' })).not.toHaveAttribute('aria-current');
|
|
30
|
+
});
|
|
31
|
+
test('assigns a testid scoped to itemId', () => {
|
|
32
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", children: "Daily Attendance" }) }));
|
|
33
|
+
expect(screen.getByTestId('side-navigation-item-daily')).toBeInTheDocument();
|
|
34
|
+
});
|
|
35
|
+
test('passes linkProps and linkElementProps through to the anchor', () => {
|
|
36
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", linkProps: { 'data-track': 'daily' }, linkElementProps: { 'aria-describedby': 'daily-desc' }, children: "Daily Attendance" }) }));
|
|
37
|
+
const link = screen.getByRole('link', { name: 'Daily Attendance' });
|
|
38
|
+
expect(link).toHaveAttribute('data-track', 'daily');
|
|
39
|
+
expect(link).toHaveAttribute('aria-describedby', 'daily-desc');
|
|
40
|
+
});
|
|
41
|
+
test('renders a favourite button separate from the item link when canFavourite is true', async () => {
|
|
42
|
+
const onFavouriteClick = vi.fn();
|
|
43
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", canFavourite: true, isPressed: true, favouriteTooltip: "Remove from favourites", onFavouriteClick: onFavouriteClick, children: "Daily Attendance" }) }));
|
|
44
|
+
const listItem = screen.getByTestId('side-navigation-item-daily');
|
|
45
|
+
const link = screen.getByRole('link', { name: 'Daily Attendance' });
|
|
46
|
+
const favourite = screen.getByTestId('side-navigation-item-favourite-daily');
|
|
47
|
+
expect(listItem).toContainElement(link);
|
|
48
|
+
expect(listItem).toContainElement(favourite);
|
|
49
|
+
expect(link).not.toContainElement(favourite);
|
|
50
|
+
expect(favourite).toHaveAttribute('aria-pressed', 'true');
|
|
51
|
+
await userEvent.click(favourite);
|
|
52
|
+
expect(onFavouriteClick).toHaveBeenCalledOnce();
|
|
53
|
+
});
|
|
54
|
+
test('does not render a favourite button when canFavourite is not set', () => {
|
|
55
|
+
render(_jsx(SideNavigation, { children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", children: "Daily Attendance" }) }));
|
|
56
|
+
expect(screen.queryByTestId('side-navigation-item-favourite-daily')).not.toBeInTheDocument();
|
|
57
|
+
});
|
|
58
|
+
test('uses renderLink from the parent SideNavigation to render the anchor', () => {
|
|
59
|
+
const renderLink = vi.fn(({ href, className, children, onClick }) => (_jsx("a", { href: href, className: className, "data-custom-link": "true", onClick: onClick, children: children })));
|
|
60
|
+
render(_jsx(SideNavigation, { renderLink: renderLink, children: _jsx(SideNavigationItem, { itemId: "daily", href: "/daily", children: "Daily Attendance" }) }));
|
|
61
|
+
expect(screen.getByText('Daily Attendance').closest('a')).toHaveAttribute('data-custom-link', 'true');
|
|
62
|
+
expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({ href: '/daily' }));
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=SideNavigationItem.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItem.test.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItem.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
export type SideNavigationItemFavouriteProps = {
|
|
3
|
+
isPressed: boolean;
|
|
4
|
+
itemId: string;
|
|
5
|
+
favouriteTooltip: string;
|
|
6
|
+
} & ButtonHTMLAttributes<HTMLButtonElement>;
|
|
7
|
+
export declare const SideNavigationItemFavourite: (props: SideNavigationItemFavouriteProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=SideNavigationItemFavourite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItemFavourite.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItemFavourite.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAE5C,eAAO,MAAM,2BAA2B,GAAI,OAAO,gCAAgC,4CAqClF,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Icon } from '../icon/Icon.js';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
|
-
import {
|
|
5
|
-
export const
|
|
4
|
+
import { SideNavigationTooltip } from './SideNavigationTooltip.js';
|
|
5
|
+
export const SideNavigationItemFavourite = (props) => {
|
|
6
6
|
const { isPressed, itemId, favouriteTooltip, className, onClick, ...rest } = props;
|
|
7
|
-
const button = (_jsx("button", { type: "button", className: classNames('ds-
|
|
7
|
+
const button = (_jsx("button", { type: "button", className: classNames('ds-side-navigation__item-favourite', className), "aria-pressed": isPressed, "aria-label": favouriteTooltip, "data-testid": `side-navigation-item-favourite-${itemId}`, onClick: (e) => {
|
|
8
8
|
e.preventDefault();
|
|
9
9
|
e.stopPropagation();
|
|
10
10
|
onClick?.(e);
|
|
11
11
|
}, ...rest, children: _jsx(Icon, { name: isPressed ? 'favourite-filled' : 'favourite-outline', size: 16, color: isPressed ? 'var(--color-brand-600)' : 'currentColor' }) }));
|
|
12
|
-
return (_jsx(
|
|
12
|
+
return (_jsx(SideNavigationTooltip, { label: favouriteTooltip, side: "left", children: button }));
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=
|
|
14
|
+
//# sourceMappingURL=SideNavigationItemFavourite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItemFavourite.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItemFavourite.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAQnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,KAAuC,EAAE,EAAE;IACrF,MAAM,EACJ,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,MAAM,GAAG,CACb,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,UAAU,CAAC,oCAAoC,EAAE,SAAS,CAAC,kBACxD,SAAS,gBACX,gBAAgB,iBACf,kCAAkC,MAAM,EAAE,EACvD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,KACG,IAAI,YAER,KAAC,IAAI,IACH,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,EAC1D,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,cAAc,GAC5D,GACK,CACV,CAAC;IAEF,OAAO,CACL,KAAC,qBAAqB,IAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAC,MAAM,YACxD,MAAM,GACe,CACzB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItemFavourite.test.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItemFavourite.test.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import '@testing-library/jest-dom/vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import userEvent from '@testing-library/user-event';
|
|
5
|
+
import { Tooltip as TooltipPrimitive } from 'radix-ui';
|
|
6
|
+
import { describe, expect, test, vi } from 'vitest';
|
|
7
|
+
import { SideNavigationItemFavourite } from './SideNavigationItemFavourite.js';
|
|
8
|
+
const renderWithProvider = (ui) => render(_jsx(TooltipPrimitive.Provider, { children: ui }));
|
|
9
|
+
describe('SideNavigationItemFavourite', () => {
|
|
10
|
+
test('uses favouriteTooltip as the accessible name', () => {
|
|
11
|
+
renderWithProvider(_jsx(SideNavigationItemFavourite, { itemId: "daily", isPressed: false, favouriteTooltip: "Add to favourites" }));
|
|
12
|
+
expect(screen.getByRole('button', { name: 'Add to favourites' })).toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
test('sets aria-pressed to reflect isPressed', () => {
|
|
15
|
+
renderWithProvider(_jsx(SideNavigationItemFavourite, { itemId: "daily", isPressed: true, favouriteTooltip: "Remove from favourites" }));
|
|
16
|
+
expect(screen.getByRole('button', { name: 'Remove from favourites' })).toHaveAttribute('aria-pressed', 'true');
|
|
17
|
+
});
|
|
18
|
+
test('assigns a testid scoped to itemId', () => {
|
|
19
|
+
renderWithProvider(_jsx(SideNavigationItemFavourite, { itemId: "daily", isPressed: false, favouriteTooltip: "Add to favourites" }));
|
|
20
|
+
expect(screen.getByTestId('side-navigation-item-favourite-daily')).toBeInTheDocument();
|
|
21
|
+
});
|
|
22
|
+
test('calls onClick and prevents the click from bubbling to a parent link', async () => {
|
|
23
|
+
const onClick = vi.fn();
|
|
24
|
+
const parentOnClick = vi.fn();
|
|
25
|
+
renderWithProvider(_jsx("div", { onClick: parentOnClick, children: _jsx(SideNavigationItemFavourite, { itemId: "daily", isPressed: false, favouriteTooltip: "Add to favourites", onClick: onClick }) }));
|
|
26
|
+
await userEvent.click(screen.getByRole('button', { name: 'Add to favourites' }));
|
|
27
|
+
expect(onClick).toHaveBeenCalledOnce();
|
|
28
|
+
expect(parentOnClick).not.toHaveBeenCalled();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=SideNavigationItemFavourite.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationItemFavourite.test.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationItemFavourite.test.tsx"],"names":[],"mappings":";AAAA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,kBAAkB,GAAG,CAAC,EAAsB,EAAE,EAAE,CAAC,MAAM,CAC3D,KAAC,gBAAgB,CAAC,QAAQ,cAAE,EAAE,GAA6B,CAC5D,CAAC;AAEF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,kBAAkB,CAChB,KAAC,2BAA2B,IAAC,MAAM,EAAC,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAC,mBAAmB,GAAG,CACtG,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,kBAAkB,CAChB,KAAC,2BAA2B,IAAC,MAAM,EAAC,OAAO,EAAC,SAAS,QAAC,gBAAgB,EAAC,wBAAwB,GAAG,CACnG,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,kBAAkB,CAChB,KAAC,2BAA2B,IAAC,MAAM,EAAC,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAC,mBAAmB,GAAG,CACtG,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE9B,kBAAkB,CAChB,cAAK,OAAO,EAAE,aAAa,YACzB,KAAC,2BAA2B,IAC1B,MAAM,EAAC,OAAO,EACd,SAAS,EAAE,KAAK,EAChB,gBAAgB,EAAC,mBAAmB,EACpC,OAAO,EAAE,OAAO,GAChB,GACE,CACP,CAAC;QAEF,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAEjF,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACvC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export type SideNavigationTitleProps = HTMLAttributes<HTMLHeadingElement>;
|
|
3
|
+
export declare const SideNavigationTitle: (props: SideNavigationTitleProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=SideNavigationTitle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTitle.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTitle.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAE1E,eAAO,MAAM,mBAAmB,GAAI,OAAO,wBAAwB,4CAOlE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
export const SideNavigationTitle = (props) => {
|
|
4
|
+
const { className, children, ...rest } = props;
|
|
5
|
+
return (_jsx("h2", { className: classNames('ds-side-navigation__title', className), ...rest, children: children }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=SideNavigationTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTitle.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTitle.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAKpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAE,EAAE;IACrE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,OAAO,CACL,aAAI,SAAS,EAAE,UAAU,CAAC,2BAA2B,EAAE,SAAS,CAAC,KAAM,IAAI,YACxE,QAAQ,GACN,CACN,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTitle.test.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTitle.test.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import '@testing-library/jest-dom/vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import { describe, expect, test } from 'vitest';
|
|
5
|
+
import { SideNavigationTitle } from './SideNavigationTitle.js';
|
|
6
|
+
describe('SideNavigationTitle', () => {
|
|
7
|
+
test('renders children inside a heading', () => {
|
|
8
|
+
render(_jsx(SideNavigationTitle, { children: "Attendance" }));
|
|
9
|
+
expect(screen.getByRole('heading', { name: 'Attendance', level: 2 })).toBeInTheDocument();
|
|
10
|
+
});
|
|
11
|
+
test('applies the base class alongside a custom className', () => {
|
|
12
|
+
render(_jsx(SideNavigationTitle, { className: "custom", children: "Attendance" }));
|
|
13
|
+
const heading = screen.getByRole('heading', { name: 'Attendance' });
|
|
14
|
+
expect(heading).toHaveClass('ds-side-navigation__title');
|
|
15
|
+
expect(heading).toHaveClass('custom');
|
|
16
|
+
});
|
|
17
|
+
test('passes through extra HTML attributes', () => {
|
|
18
|
+
render(_jsx(SideNavigationTitle, { "data-testid": "panel-title", children: "Attendance" }));
|
|
19
|
+
expect(screen.getByTestId('panel-title')).toBeInTheDocument();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=SideNavigationTitle.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTitle.test.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTitle.test.tsx"],"names":[],"mappings":";AAAA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,KAAC,mBAAmB,6BAAiC,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,KAAC,mBAAmB,IAAC,SAAS,EAAC,QAAQ,2BAAiC,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,KAAC,mBAAmB,mBAAa,aAAa,2BAAiC,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type SideNavigationTooltipProps = {
|
|
2
|
+
label: string;
|
|
3
|
+
children: React.ReactElement;
|
|
4
|
+
side?: 'left' | 'right';
|
|
5
|
+
};
|
|
6
|
+
export declare const SideNavigationTooltip: (props: SideNavigationTooltipProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=SideNavigationTooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTooltip.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,0BAA0B,4CAatE,CAAC"}
|
package/dist/components/{sidebarNav/SidebarNavTooltip.js → sideNavigation/SideNavigationTooltip.js}
RENAMED
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { TooltipContent } from '../tooltip/TooltipContent.js';
|
|
3
3
|
import { TooltipTrigger } from '../tooltip/TooltipTrigger.js';
|
|
4
4
|
import { Tooltip as TooltipPrimitive } from 'radix-ui';
|
|
5
|
-
export const
|
|
5
|
+
export const SideNavigationTooltip = (props) => {
|
|
6
6
|
const { label, children, side = 'right' } = props;
|
|
7
7
|
return (_jsxs(TooltipPrimitive.Root, { disableHoverableContent: true, delayDuration: 400, children: [_jsx(TooltipTrigger, { onPointerDown: event => event.preventDefault(), children: children }), _jsx(TooltipContent, { side: side, sideOffset: 8, arrowPadding: 0, children: label })] }));
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=SideNavigationTooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTooltip.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAQvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACzE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAElD,OAAO,CACL,MAAC,gBAAgB,CAAC,IAAI,IAAC,uBAAuB,QAAC,aAAa,EAAE,GAAG,aAC/D,KAAC,cAAc,IAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,YAC3D,QAAQ,GACM,EACjB,KAAC,cAAc,IAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACvD,KAAK,GACS,IACK,CACzB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTooltip.test.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTooltip.test.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import '@testing-library/jest-dom/vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import userEvent from '@testing-library/user-event';
|
|
5
|
+
import { Tooltip as TooltipPrimitive } from 'radix-ui';
|
|
6
|
+
import { describe, expect, test } from 'vitest';
|
|
7
|
+
import { SideNavigationTooltip } from './SideNavigationTooltip.js';
|
|
8
|
+
const renderWithProvider = (ui) => render(_jsx(TooltipPrimitive.Provider, { children: ui }));
|
|
9
|
+
describe('SideNavigationTooltip', () => {
|
|
10
|
+
test('renders the trigger children', () => {
|
|
11
|
+
renderWithProvider(_jsx(SideNavigationTooltip, { label: "Add to favourites", children: _jsx("button", { type: "button", children: "Star" }) }));
|
|
12
|
+
expect(screen.getByRole('button', { name: 'Star' })).toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
test('shows the label as tooltip content on hover', async () => {
|
|
15
|
+
renderWithProvider(_jsx(SideNavigationTooltip, { label: "Add to favourites", children: _jsx("button", { type: "button", children: "Star" }) }));
|
|
16
|
+
await userEvent.hover(screen.getByRole('button', { name: 'Star' }));
|
|
17
|
+
expect(await screen.findByRole('tooltip')).toHaveTextContent('Add to favourites');
|
|
18
|
+
});
|
|
19
|
+
test('defaults to the right side and can be overridden', async () => {
|
|
20
|
+
renderWithProvider(_jsx(SideNavigationTooltip, { label: "Remove from favourites", side: "left", children: _jsx("button", { type: "button", children: "Star" }) }));
|
|
21
|
+
await userEvent.hover(screen.getByRole('button', { name: 'Star' }));
|
|
22
|
+
await screen.findByRole('tooltip');
|
|
23
|
+
expect(document.querySelector('.ds-tooltip__content')).toHaveAttribute('data-side', 'left');
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=SideNavigationTooltip.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavigationTooltip.test.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/SideNavigationTooltip.test.tsx"],"names":[],"mappings":";AAAA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,kBAAkB,GAAG,CAAC,EAAsB,EAAE,EAAE,CAAC,MAAM,CAC3D,KAAC,gBAAgB,CAAC,QAAQ,cAAE,EAAE,GAA6B,CAC5D,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,kBAAkB,CAChB,KAAC,qBAAqB,IAAC,KAAK,EAAC,mBAAmB,YAC9C,iBAAQ,IAAI,EAAC,QAAQ,qBAAc,GACb,CACzB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,kBAAkB,CAChB,KAAC,qBAAqB,IAAC,KAAK,EAAC,mBAAmB,YAC9C,iBAAQ,IAAI,EAAC,QAAQ,qBAAc,GACb,CACzB,CAAC;QAEF,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,kBAAkB,CAChB,KAAC,qBAAqB,IAAC,KAAK,EAAC,wBAAwB,EAAC,IAAI,EAAC,MAAM,YAC/D,iBAAQ,IAAI,EAAC,QAAQ,qBAAc,GACb,CACzB,CAAC;QAEF,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SideNavigationItemProps } from './SideNavigationItem.js';
|
|
2
|
+
import type { SideNavigationItemNode } from './types.js';
|
|
3
|
+
export declare function resolvePanelItemProps(node: SideNavigationItemNode): SideNavigationItemProps;
|
|
4
|
+
//# sourceMappingURL=resolvePanelItemProps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePanelItemProps.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/resolvePanelItemProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,uBAAuB,CA+C3F"}
|
|
@@ -7,6 +7,7 @@ export function resolvePanelItemProps(node) {
|
|
|
7
7
|
children: node.label,
|
|
8
8
|
};
|
|
9
9
|
const hasHref = 'href' in node && node.href != null;
|
|
10
|
+
const onClick = node.onClick;
|
|
10
11
|
if (node.canFavourite) {
|
|
11
12
|
if (hasHref) {
|
|
12
13
|
return {
|
|
@@ -14,7 +15,7 @@ export function resolvePanelItemProps(node) {
|
|
|
14
15
|
canFavourite: true,
|
|
15
16
|
favouriteTooltip: node.favouriteTooltip,
|
|
16
17
|
href: node.href,
|
|
17
|
-
onClick:
|
|
18
|
+
linkElementProps: onClick ? { onClick } : undefined,
|
|
18
19
|
linkProps: node.linkProps,
|
|
19
20
|
};
|
|
20
21
|
}
|
|
@@ -23,21 +24,21 @@ export function resolvePanelItemProps(node) {
|
|
|
23
24
|
canFavourite: true,
|
|
24
25
|
favouriteTooltip: node.favouriteTooltip,
|
|
25
26
|
linkElement: 'button',
|
|
26
|
-
|
|
27
|
+
linkElementProps: { onClick },
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
if (hasHref) {
|
|
30
31
|
return {
|
|
31
32
|
...base,
|
|
32
33
|
href: node.href,
|
|
33
|
-
onClick:
|
|
34
|
+
linkElementProps: onClick ? { onClick } : undefined,
|
|
34
35
|
linkProps: node.linkProps,
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
38
|
return {
|
|
38
39
|
...base,
|
|
39
40
|
linkElement: 'button',
|
|
40
|
-
|
|
41
|
+
linkElementProps: { onClick },
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
44
|
//# sourceMappingURL=resolvePanelItemProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePanelItemProps.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/resolvePanelItemProps.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CAAC,IAA4B;IAChE,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,IAAI,CAAC,KAAK;KACrB,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAE7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,GAAG,IAAI;gBACP,YAAY,EAAE,IAAI;gBAClB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;gBACnD,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,WAAW,EAAE,QAAQ;YACrB,gBAAgB,EAAE,EAAE,OAAO,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;YACnD,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,WAAW,EAAE,QAAQ;QACrB,gBAAgB,EAAE,EAAE,OAAO,EAAE;KAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePanelItemProps.test.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/resolvePanelItemProps.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, test } from 'vitest';
|
|
2
2
|
import { resolvePanelItemProps } from './resolvePanelItemProps.js';
|
|
3
3
|
describe('resolvePanelItemProps', () => {
|
|
4
|
-
test('maps href item to link variant with
|
|
4
|
+
test('maps href item to link variant with onClick in linkElementProps', () => {
|
|
5
5
|
const onClick = () => { };
|
|
6
6
|
const props = resolvePanelItemProps({
|
|
7
7
|
type: 'item',
|
|
@@ -14,10 +14,24 @@ describe('resolvePanelItemProps', () => {
|
|
|
14
14
|
itemId: 'daily',
|
|
15
15
|
children: 'Daily Attendance',
|
|
16
16
|
href: '/daily',
|
|
17
|
-
onClick,
|
|
17
|
+
linkElementProps: { onClick },
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
test('maps href item with no onClick to link variant with no linkElementProps', () => {
|
|
21
|
+
const props = resolvePanelItemProps({
|
|
22
|
+
type: 'item',
|
|
23
|
+
id: 'daily',
|
|
24
|
+
label: 'Daily Attendance',
|
|
25
|
+
href: '/daily',
|
|
26
|
+
});
|
|
27
|
+
expect(props).toEqual({
|
|
28
|
+
itemId: 'daily',
|
|
29
|
+
children: 'Daily Attendance',
|
|
30
|
+
href: '/daily',
|
|
31
|
+
linkElementProps: undefined,
|
|
18
32
|
});
|
|
19
33
|
});
|
|
20
|
-
test('maps onClick-only item to button variant with
|
|
34
|
+
test('maps onClick-only item to button variant with onClick in linkElementProps', () => {
|
|
21
35
|
const onClick = () => { };
|
|
22
36
|
const props = resolvePanelItemProps({
|
|
23
37
|
type: 'item',
|
|
@@ -29,7 +43,7 @@ describe('resolvePanelItemProps', () => {
|
|
|
29
43
|
itemId: 'action',
|
|
30
44
|
children: 'Run action',
|
|
31
45
|
linkElement: 'button',
|
|
32
|
-
onClick,
|
|
46
|
+
linkElementProps: { onClick },
|
|
33
47
|
});
|
|
34
48
|
});
|
|
35
49
|
test('maps favourite href item with canFavourite and favouriteTooltip', () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePanelItemProps.test.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/resolvePanelItemProps.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC3E,MAAM,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,QAAQ;YACd,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,QAAQ;YACd,gBAAgB,EAAE,EAAE,OAAO,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACnF,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,QAAQ;YACd,gBAAgB,EAAE,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACrF,MAAM,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,YAAY;YACnB,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,QAAQ;YACrB,gBAAgB,EAAE,EAAE,OAAO,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC3E,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,mBAAmB;SACtC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;YAC1B,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,mBAAmB;YACrC,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AnchorHTMLAttributes } from 'react';
|
|
2
|
+
export type SideNavigationLinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'children' | 'className'> & Record<`data-${string}`, string | number | boolean | undefined>;
|
|
3
|
+
export type SideNavigationRenderLinkArgs = {
|
|
4
|
+
href: string;
|
|
5
|
+
className: string;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
ariaCurrent?: 'page';
|
|
8
|
+
onClick?: React.MouseEventHandler;
|
|
9
|
+
linkProps?: SideNavigationLinkProps;
|
|
10
|
+
linkElementProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'className' | 'children'>;
|
|
11
|
+
};
|
|
12
|
+
type SideNavigationItemNodeFavouriteFields = {
|
|
13
|
+
canFavourite?: false;
|
|
14
|
+
favouriteTooltip?: never;
|
|
15
|
+
} | {
|
|
16
|
+
canFavourite: true;
|
|
17
|
+
favouriteTooltip: string;
|
|
18
|
+
};
|
|
19
|
+
type SideNavigationItemNodeLinkFields = {
|
|
20
|
+
href: string;
|
|
21
|
+
onClick?: React.MouseEventHandler;
|
|
22
|
+
};
|
|
23
|
+
type SideNavigationItemNodeButtonFields = {
|
|
24
|
+
href?: never;
|
|
25
|
+
onClick: React.MouseEventHandler;
|
|
26
|
+
};
|
|
27
|
+
export type SideNavigationItemNode = {
|
|
28
|
+
type: 'item';
|
|
29
|
+
id: string;
|
|
30
|
+
label: string;
|
|
31
|
+
current?: boolean;
|
|
32
|
+
linkProps?: SideNavigationLinkProps;
|
|
33
|
+
isPressed?: boolean;
|
|
34
|
+
onFavouriteClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
35
|
+
} & SideNavigationItemNodeFavouriteFields & (SideNavigationItemNodeLinkFields | SideNavigationItemNodeButtonFields);
|
|
36
|
+
export type SideNavigationGroupNode = {
|
|
37
|
+
type: 'group';
|
|
38
|
+
id: string;
|
|
39
|
+
label: string;
|
|
40
|
+
children: SideNavigationNode[];
|
|
41
|
+
defaultExpanded?: boolean;
|
|
42
|
+
expanded?: boolean;
|
|
43
|
+
onExpandedChange?: (expanded: boolean) => void;
|
|
44
|
+
};
|
|
45
|
+
export type SideNavigationNode = SideNavigationItemNode | SideNavigationGroupNode;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/sideNavigation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,MAAM,GAAG,UAAU,GAAG,WAAW,CAClC,GAAG,MAAM,CAAC,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEpE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,gBAAgB,CAAC,EAAE,IAAI,CACrB,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,MAAM,GAAG,WAAW,GAAG,UAAU,CAClC,CAAC;CACH,CAAC;AAEF,KAAK,qCAAqC,GACpC;IAAE,YAAY,CAAC,EAAE,KAAK,CAAC;IAAC,gBAAgB,CAAC,EAAE,KAAK,CAAA;CAAE,GAClD;IAAE,YAAY,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,KAAK,gCAAgC,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;CACnC,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CAC/D,GAAG,qCAAqC,GACvC,CAAC,gCAAgC,GAAG,kCAAkC,CAAC,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/sideNavigation/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type SidebarItemProps } from './SidebarItem.js';
|
|
2
|
+
export type SidebarProps = {
|
|
3
|
+
ariaLabel?: string;
|
|
4
|
+
} & React.HTMLAttributes<HTMLDivElement>;
|
|
5
|
+
export declare const Sidebar: {
|
|
6
|
+
(props: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
Item: (props: SidebarItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
};
|
|
9
|
+
export declare namespace Sidebar {
|
|
10
|
+
type Props = SidebarProps;
|
|
11
|
+
type ItemProps = SidebarItemProps;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=Sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/Sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAEzC,eAAO,MAAM,OAAO;YAAW,YAAY;;CAY1C,CAAC;AAIF,yBAAiB,OAAO,CAAC;IACvB,KAAY,KAAK,GAAG,YAAY,CAAC;IACjC,KAAY,SAAS,GAAG,gBAAgB,CAAC;CAC1C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { SidebarItem } from './SidebarItem.js';
|
|
4
|
+
export const Sidebar = (props) => {
|
|
5
|
+
const { ariaLabel = 'Sidebar', className, children, ...rest } = props;
|
|
6
|
+
return (_jsx("nav", { "aria-label": ariaLabel, className: classNames('ds-sidebar', className), "data-testid": "sidebar", ...rest, children: children }));
|
|
7
|
+
};
|
|
8
|
+
Sidebar.Item = SidebarItem;
|
|
9
|
+
//# sourceMappingURL=Sidebar.js.map
|