@scottish-government/designsystem-react 0.13.0 → 1.0.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/.storybook/sgdsArgTypes.ts +23 -0
- package/CHANGELOG.md +23 -0
- package/LICENSE.txt +21 -0
- package/README.md +3 -0
- package/dist/common/AbstractNotificationBanner/AbstractNotificationBanner.d.ts +3 -2
- package/dist/common/AbstractNotificationBanner/AbstractNotificationBanner.jsx +8 -7
- package/dist/common/AbstractNotificationBanner/types.d.ts +13 -0
- package/dist/common/AbstractNotificationBanner/types.js +2 -0
- package/dist/common/ActionLink/ActionLink.d.ts +2 -1
- package/dist/common/ActionLink/types.d.ts +7 -0
- package/dist/common/ActionLink/types.js +2 -0
- package/dist/common/ConditionalWrapper/ConditionalWrapper.d.ts +2 -1
- package/dist/common/ConditionalWrapper/ConditionalWrapper.jsx +4 -2
- package/dist/common/ConditionalWrapper/types.d.ts +4 -0
- package/dist/common/ConditionalWrapper/types.js +2 -0
- package/dist/common/FileIcon/FileIcon.d.ts +2 -1
- package/dist/common/FileIcon/types.d.ts +6 -0
- package/dist/common/FileIcon/types.js +2 -0
- package/dist/common/HintText/HintText.d.ts +2 -1
- package/dist/common/HintText/HintText.jsx +3 -3
- package/dist/common/HintText/types.d.ts +4 -0
- package/dist/common/HintText/types.js +2 -0
- package/dist/common/Icon/Icon.d.ts +2 -1
- package/dist/common/Icon/Icon.jsx +3 -2
- package/dist/common/Icon/types.d.ts +8 -0
- package/dist/common/Icon/types.js +2 -0
- package/dist/common/ScreenReaderText/ScreenReaderText.d.ts +1 -1
- package/dist/common/WrapperTag/WrapperTag.d.ts +385 -1
- package/dist/common/WrapperTag/WrapperTag.jsx +5 -2
- package/dist/common/WrapperTag/types.d.ts +3 -0
- package/dist/common/WrapperTag/types.js +2 -0
- package/dist/components/Accordion/Accordion.d.ts +3 -2
- package/dist/components/Accordion/Accordion.jsx +12 -11
- package/dist/components/Accordion/types.d.ts +11 -0
- package/dist/components/Accordion/types.js +2 -0
- package/dist/components/AspectBox/AspectBox.d.ts +2 -1
- package/dist/components/AspectBox/AspectBox.jsx +3 -9
- package/dist/components/AspectBox/types.d.ts +3 -0
- package/dist/components/AspectBox/types.js +2 -0
- package/dist/components/BackToTop/BackToTop.d.ts +2 -1
- package/dist/components/BackToTop/BackToTop.jsx +4 -3
- package/dist/components/BackToTop/types.d.ts +3 -0
- package/dist/components/BackToTop/types.js +2 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +3 -2
- package/dist/components/Breadcrumbs/Breadcrumbs.jsx +6 -2
- package/dist/components/Breadcrumbs/types.d.ts +5 -0
- package/dist/components/Breadcrumbs/types.js +2 -0
- package/dist/components/Button/Button.d.ts +2 -1
- package/dist/components/Button/Button.jsx +4 -3
- package/dist/components/Button/ButtonGroup.d.ts +2 -1
- package/dist/components/Button/ButtonGroup.jsx +9 -4
- package/dist/components/Button/types.d.ts +20 -0
- package/dist/components/Button/types.js +2 -0
- package/dist/components/Card/Card.d.ts +34 -0
- package/dist/components/Card/Card.jsx +118 -0
- package/dist/components/Card/index.d.ts +1 -0
- package/dist/components/Card/index.js +8 -0
- package/dist/components/Card/types.d.ts +26 -0
- package/dist/components/Card/types.js +2 -0
- package/dist/components/CategoryItem/CategoryItem.d.ts +2 -1
- package/dist/components/CategoryItem/CategoryItem.jsx +8 -5
- package/dist/components/CategoryItem/types.d.ts +9 -0
- package/dist/components/CategoryItem/types.js +2 -0
- package/dist/components/CategoryList/CategoryList.d.ts +2 -1
- package/dist/components/CategoryList/CategoryList.jsx +3 -2
- package/dist/components/CategoryList/types.d.ts +5 -0
- package/dist/components/CategoryList/types.js +2 -0
- package/dist/components/Checkbox/Checkbox.d.ts +2 -1
- package/dist/components/Checkbox/Checkbox.jsx +4 -3
- package/dist/components/Checkbox/CheckboxGroup.d.ts +2 -1
- package/dist/components/Checkbox/CheckboxGroup.jsx +5 -4
- package/dist/components/Checkbox/types.d.ts +7 -0
- package/dist/components/Checkbox/types.js +2 -0
- package/dist/components/ConfirmationMessage/ConfirmationMessage.d.ts +2 -1
- package/dist/components/ConfirmationMessage/ConfirmationMessage.jsx +3 -2
- package/dist/components/ConfirmationMessage/types.d.ts +6 -0
- package/dist/components/ConfirmationMessage/types.js +2 -0
- package/dist/components/ContentsNav/ContentsNav.d.ts +3 -2
- package/dist/components/ContentsNav/ContentsNav.jsx +7 -5
- package/dist/components/ContentsNav/types.d.ts +9 -0
- package/dist/components/ContentsNav/types.js +2 -0
- package/dist/components/CookieBanner/CookieBanner.d.ts +3 -2
- package/dist/components/CookieBanner/CookieBanner.jsx +13 -3
- package/dist/components/DatePicker/DatePicker.d.ts +2 -1
- package/dist/components/DatePicker/DatePicker.jsx +7 -7
- package/dist/components/DatePicker/types.d.ts +18 -0
- package/dist/components/DatePicker/types.js +2 -0
- package/dist/components/Details/Details.d.ts +2 -1
- package/dist/components/Details/Details.jsx +6 -2
- package/dist/components/Details/types.d.ts +4 -0
- package/dist/components/Details/types.js +2 -0
- package/dist/components/ErrorMessage/ErrorMessage.d.ts +2 -1
- package/dist/components/ErrorMessage/ErrorMessage.jsx +6 -2
- package/dist/components/ErrorMessage/types.d.ts +3 -0
- package/dist/components/ErrorMessage/types.js +2 -0
- package/dist/components/ErrorSummary/ErrorSummary.d.ts +3 -2
- package/dist/components/ErrorSummary/ErrorSummary.jsx +6 -2
- package/dist/components/ErrorSummary/types.d.ts +8 -0
- package/dist/components/ErrorSummary/types.js +2 -0
- package/dist/components/FeatureHeader/FeatureHeader.d.ts +7 -5
- package/dist/components/FeatureHeader/FeatureHeader.jsx +87 -50
- package/dist/components/FeatureHeader/types.d.ts +12 -0
- package/dist/components/FeatureHeader/types.js +2 -0
- package/dist/components/FileDownload/FileDownload.d.ts +2 -1
- package/dist/components/FileDownload/FileDownload.jsx +4 -3
- package/dist/components/FileDownload/types.d.ts +10 -0
- package/dist/components/FileDownload/types.js +2 -0
- package/dist/components/HideThisPage/HideThisPage.d.ts +2 -1
- package/dist/components/HideThisPage/HideThisPage.jsx +5 -4
- package/dist/components/HideThisPage/types.d.ts +3 -0
- package/dist/components/HideThisPage/types.js +2 -0
- package/dist/components/InsetText/InsetText.d.ts +1 -1
- package/dist/components/InsetText/InsetText.jsx +6 -2
- package/dist/components/NotificationBanner/NotificationBanner.d.ts +3 -2
- package/dist/components/NotificationBanner/NotificationBanner.jsx +5 -4
- package/dist/components/NotificationPanel/NotificationPanel.d.ts +2 -1
- package/dist/components/NotificationPanel/NotificationPanel.jsx +3 -2
- package/dist/components/NotificationPanel/types.d.ts +6 -0
- package/dist/components/NotificationPanel/types.js +2 -0
- package/dist/components/NotificationTag/NotificationTag.d.ts +6 -0
- package/dist/components/NotificationTag/NotificationTag.jsx +20 -0
- package/dist/components/NotificationTag/index.d.ts +1 -0
- package/dist/components/NotificationTag/index.js +8 -0
- package/dist/components/NotificationTag/types.d.ts +5 -0
- package/dist/components/NotificationTag/types.js +2 -0
- package/dist/components/PageHeader/PageHeader.d.ts +2 -1
- package/dist/components/PageHeader/PageHeader.jsx +6 -2
- package/dist/components/PageHeader/types.d.ts +5 -0
- package/dist/components/PageHeader/types.js +2 -0
- package/dist/components/PageMetadata/PageMetadata.d.ts +3 -2
- package/dist/components/PageMetadata/PageMetadata.jsx +8 -4
- package/dist/components/PageMetadata/types.d.ts +6 -0
- package/dist/components/PageMetadata/types.js +2 -0
- package/dist/components/Pagination/Pagination.d.ts +3 -2
- package/dist/components/Pagination/Pagination.jsx +7 -5
- package/dist/components/Pagination/types.d.ts +18 -0
- package/dist/components/Pagination/types.js +2 -0
- package/dist/components/PhaseBanner/PhaseBanner.d.ts +2 -1
- package/dist/components/PhaseBanner/PhaseBanner.jsx +3 -2
- package/dist/components/PhaseBanner/types.d.ts +3 -0
- package/dist/components/PhaseBanner/types.js +2 -0
- package/dist/components/Question/Question.d.ts +2 -1
- package/dist/components/Question/Question.jsx +4 -3
- package/dist/components/Question/types.d.ts +9 -0
- package/dist/components/Question/types.js +2 -0
- package/dist/components/RadioButton/RadioButton.d.ts +2 -1
- package/dist/components/RadioButton/RadioButton.jsx +4 -3
- package/dist/components/RadioButton/RadioGroup.d.ts +2 -1
- package/dist/components/RadioButton/RadioGroup.jsx +3 -2
- package/dist/components/RadioButton/types.d.ts +10 -0
- package/dist/components/RadioButton/types.js +2 -0
- package/dist/components/SearchFacets/SearchFacets.d.ts +4 -3
- package/dist/components/SearchFacets/SearchFacets.jsx +3 -2
- package/dist/components/SearchFacets/types.d.ts +12 -0
- package/dist/components/SearchFacets/types.js +2 -0
- package/dist/components/SearchFilters/SearchFilters.d.ts +5 -4
- package/dist/components/SearchFilters/types.d.ts +12 -0
- package/dist/components/SearchFilters/types.js +2 -0
- package/dist/components/SearchResult/SearchResult.d.ts +8 -11
- package/dist/components/SearchResult/SearchResult.jsx +6 -7
- package/dist/components/SearchResult/types.d.ts +11 -0
- package/dist/components/SearchResult/types.js +2 -0
- package/dist/components/SearchSort/SearchSort.d.ts +2 -1
- package/dist/components/SearchSort/SearchSort.jsx +3 -2
- package/dist/components/SearchSort/types.d.ts +7 -0
- package/dist/components/SearchSort/types.js +2 -0
- package/dist/components/Select/Select.d.ts +2 -1
- package/dist/components/Select/Select.jsx +4 -3
- package/dist/components/Select/types.d.ts +6 -0
- package/dist/components/Select/types.js +2 -0
- package/dist/components/SequentialNavigation/SequentialNavigation.d.ts +4 -3
- package/dist/components/SequentialNavigation/SequentialNavigation.jsx +10 -6
- package/dist/components/SequentialNavigation/types.d.ts +10 -0
- package/dist/components/SequentialNavigation/types.js +2 -0
- package/dist/components/SideNavigation/SideNavigation.d.ts +4 -3
- package/dist/components/SideNavigation/SideNavigation.jsx +10 -7
- package/dist/components/SideNavigation/types.d.ts +13 -0
- package/dist/components/SideNavigation/types.js +2 -0
- package/dist/components/SiteFooter/SiteFooter.d.ts +6 -5
- package/dist/components/SiteFooter/SiteFooter.jsx +4 -3
- package/dist/components/SiteFooter/types.d.ts +16 -0
- package/dist/components/SiteFooter/types.js +2 -0
- package/dist/components/SiteHeader/SiteHeader.d.ts +6 -5
- package/dist/components/SiteHeader/SiteHeader.jsx +1 -1
- package/dist/components/SiteHeader/types.d.ts +20 -0
- package/dist/components/SiteHeader/types.js +2 -0
- package/dist/components/SiteNavigation/SiteNavigation.d.ts +3 -2
- package/dist/components/SiteNavigation/SiteNavigation.jsx +12 -4
- package/dist/components/SiteNavigation/types.d.ts +9 -0
- package/dist/components/SiteNavigation/types.js +2 -0
- package/dist/components/SiteSearch/SiteSearch.d.ts +2 -1
- package/dist/components/SiteSearch/SiteSearch.jsx +12 -11
- package/dist/components/SiteSearch/types.d.ts +17 -0
- package/dist/components/SiteSearch/types.js +2 -0
- package/dist/components/SkipLinks/SkipLinks.d.ts +3 -2
- package/dist/components/SkipLinks/SkipLinks.jsx +4 -4
- package/dist/components/SkipLinks/types.d.ts +8 -0
- package/dist/components/SkipLinks/types.js +2 -0
- package/dist/components/SummaryCard/SummaryCard.d.ts +4 -2
- package/dist/components/SummaryCard/SummaryCard.jsx +5 -4
- package/dist/components/SummaryCard/types.d.ts +5 -0
- package/dist/components/SummaryCard/types.js +2 -0
- package/dist/components/SummaryList/SummaryList.d.ts +6 -4
- package/dist/components/SummaryList/SummaryList.jsx +5 -4
- package/dist/components/SummaryList/types.d.ts +6 -0
- package/dist/components/SummaryList/types.js +2 -0
- package/dist/components/Table/Table.d.ts +2 -1
- package/dist/components/Table/Table.jsx +5 -4
- package/dist/components/Table/types.d.ts +6 -0
- package/dist/components/Table/types.js +2 -0
- package/dist/components/Tabs/Tabs.d.ts +3 -2
- package/dist/components/Tabs/Tabs.jsx +6 -5
- package/dist/components/Tabs/types.d.ts +16 -0
- package/dist/components/Tabs/types.js +2 -0
- package/dist/components/Tag/Tag.d.ts +2 -1
- package/dist/components/Tag/Tag.jsx +7 -3
- package/dist/components/Tag/types.d.ts +4 -0
- package/dist/components/Tag/types.js +2 -0
- package/dist/components/TaskList/TaskList.d.ts +4 -3
- package/dist/components/TaskList/TaskList.jsx +11 -8
- package/dist/components/TaskList/types.d.ts +17 -0
- package/dist/components/TaskList/types.js +2 -0
- package/dist/components/TextInput/TextInput.d.ts +2 -1
- package/dist/components/TextInput/TextInput.jsx +10 -9
- package/dist/components/TextInput/types.d.ts +11 -0
- package/dist/components/TextInput/types.js +2 -0
- package/dist/components/Textarea/Textarea.d.ts +2 -1
- package/dist/components/Textarea/Textarea.jsx +6 -5
- package/dist/components/WarningText/WarningText.d.ts +1 -1
- package/dist/components/WarningText/WarningText.jsx +6 -2
- package/dist/hooks/useTracking/useTracking.js +0 -1
- package/package.json +5 -3
- package/src/common/AbstractNotificationBanner/AbstractNotificationBanner.tsx +8 -6
- package/src/common/Icon/Icon.tsx +3 -2
- package/src/components/Accordion/Accordion.test.tsx +11 -0
- package/src/components/Accordion/Accordion.tsx +11 -10
- package/src/components/AspectBox/AspectBox.tsx +4 -11
- package/src/components/BackToTop/BackToTop.test.tsx +21 -1
- package/src/components/BackToTop/BackToTop.tsx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +3 -2
- package/src/components/Button/Button.tsx +4 -3
- package/src/components/Button/ButtonGroup.stories.tsx +22 -0
- package/src/components/Button/ButtonGroup.test.tsx +21 -0
- package/src/components/Button/ButtonGroup.tsx +6 -3
- package/src/components/Button/types.ts +1 -0
- package/src/components/Card/Card.stories.tsx +446 -0
- package/src/components/Card/Card.test.tsx +282 -0
- package/src/components/Card/Card.tsx +208 -0
- package/src/components/Card/index.ts +1 -0
- package/src/components/Card/types.ts +30 -0
- package/src/components/CategoryItem/CategoryItem.tsx +3 -2
- package/src/components/CategoryList/CategoryList.tsx +3 -2
- package/src/components/Checkbox/Checkbox.test.tsx +30 -0
- package/src/components/Checkbox/Checkbox.tsx +3 -3
- package/src/components/Checkbox/CheckboxGroup.test.tsx +10 -0
- package/src/components/Checkbox/CheckboxGroup.tsx +5 -4
- package/src/components/ConfirmationMessage/ConfirmationMessage.tsx +3 -2
- package/src/components/ContentsNav/ContentsNav.tsx +8 -5
- package/src/components/CookieBanner/CookieBanner.test.tsx +18 -1
- package/src/components/CookieBanner/CookieBanner.tsx +4 -3
- package/src/components/DatePicker/DatePicker.test.tsx +52 -14
- package/src/components/DatePicker/DatePicker.tsx +6 -7
- package/src/components/DatePicker/types.ts +2 -3
- package/src/components/Details/Details.tsx +3 -2
- package/src/components/ErrorMessage/ErrorMessage.tsx +3 -2
- package/src/components/ErrorSummary/ErrorSummary.tsx +3 -2
- package/src/components/FeatureHeader/FeatureHeader.stories.tsx +223 -0
- package/src/components/FeatureHeader/FeatureHeader.test.tsx +298 -0
- package/src/components/FeatureHeader/FeatureHeader.tsx +119 -0
- package/src/components/FeatureHeader/index.ts +1 -0
- package/src/components/FeatureHeader/types.ts +13 -0
- package/src/components/FileDownload/FileDownload.test.tsx +1 -5
- package/src/components/FileDownload/FileDownload.tsx +4 -3
- package/src/components/HideThisPage/HideThisPage.test.tsx +12 -1
- package/src/components/HideThisPage/HideThisPage.tsx +5 -4
- package/src/components/InsetText/InsetText.tsx +4 -2
- package/src/components/NotificationBanner/NotificationBanner.test.tsx +10 -0
- package/src/components/NotificationBanner/NotificationBanner.tsx +4 -3
- package/src/components/NotificationPanel/NotificationPanel.tsx +3 -2
- package/src/components/NotificationTag/NotificationTag.stories.tsx +68 -0
- package/src/components/NotificationTag/NotificationTag.test.tsx +70 -0
- package/src/components/NotificationTag/NotificationTag.tsx +32 -0
- package/src/components/NotificationTag/index.ts +1 -0
- package/src/components/NotificationTag/types.ts +5 -0
- package/src/components/PageHeader/PageHeader.tsx +3 -2
- package/src/components/PageMetadata/PageMetadata.tsx +5 -4
- package/src/components/Pagination/Pagination.test.tsx +20 -0
- package/src/components/Pagination/Pagination.tsx +7 -5
- package/src/components/PhaseBanner/PhaseBanner.tsx +3 -2
- package/src/components/Question/Question.tsx +3 -2
- package/src/components/Question/types.ts +2 -2
- package/src/components/RadioButton/RadioButton.test.tsx +30 -0
- package/src/components/RadioButton/RadioButton.tsx +3 -3
- package/src/components/RadioButton/RadioGroup.tsx +3 -2
- package/src/components/SearchFacets/SearchFacets.stories.tsx +1 -1
- package/src/components/SearchFacets/SearchFacets.tsx +3 -2
- package/src/components/SearchResult/SearchResult.stories.tsx +14 -13
- package/src/components/SearchResult/SearchResult.test.tsx +5 -4
- package/src/components/SearchResult/SearchResult.tsx +6 -7
- package/src/components/SearchSort/SearchSort.tsx +3 -2
- package/src/components/Select/Select.test.tsx +42 -0
- package/src/components/Select/Select.tsx +3 -2
- package/src/components/SequentialNavigation/SequentialNavigation.tsx +7 -6
- package/src/components/SideNavigation/SideNavigation.test.tsx +24 -0
- package/src/components/SideNavigation/SideNavigation.tsx +10 -7
- package/src/components/SiteFooter/SiteFooter.tsx +3 -2
- package/src/components/SiteHeader/SiteHeader.test.tsx +29 -16
- package/src/components/SiteHeader/SiteHeader.tsx +1 -1
- package/src/components/SiteNavigation/SiteNavigation.test.tsx +16 -1
- package/src/components/SiteNavigation/SiteNavigation.tsx +9 -4
- package/src/components/SiteSearch/SiteSearch.test.tsx +22 -0
- package/src/components/SiteSearch/SiteSearch.tsx +10 -9
- package/src/components/SiteSearch/types.ts +7 -1
- package/src/components/SkipLinks/SkipLinks.tsx +4 -4
- package/src/components/SummaryCard/SummaryCard.tsx +3 -2
- package/src/components/SummaryList/SummaryList.tsx +3 -3
- package/src/components/Table/Table.test.tsx +36 -0
- package/src/components/Table/Table.tsx +5 -4
- package/src/components/Tabs/Tabs.test.tsx +14 -0
- package/src/components/Tabs/Tabs.tsx +6 -5
- package/src/components/Tag/Tag.tsx +4 -3
- package/src/components/TaskList/TaskList.tsx +5 -4
- package/src/components/TextInput/TextInput.test.tsx +53 -1
- package/src/components/TextInput/TextInput.tsx +12 -7
- package/src/components/Textarea/Textarea.test.tsx +53 -1
- package/src/components/Textarea/Textarea.tsx +5 -4
- package/src/components/WarningText/WarningText.tsx +4 -2
- package/src/hooks/useTracking/useTracking.ts +0 -1
- package/src/shared-types.ts +3 -3
- package/static/images/illustration.svg +502 -0
- package/tsconfig.json +0 -3
- package/vite.config.ts +4 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React, { Children,
|
|
2
|
-
// @ts-expect-error no types from core SGDS
|
|
3
|
-
import DSAspectBox from '@scottish-government/design-system/src/components/aspect-box/aspect-box-fallback';
|
|
1
|
+
import React, { Children, useRef } from 'react';
|
|
4
2
|
import { AspectBoxProps } from './types';
|
|
3
|
+
import clsx from 'clsx';
|
|
5
4
|
|
|
6
5
|
const AspectBox = ({
|
|
7
6
|
children,
|
|
@@ -11,12 +10,6 @@ const AspectBox = ({
|
|
|
11
10
|
}: AspectBoxProps) => {
|
|
12
11
|
const ref = useRef(null);
|
|
13
12
|
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
if (ref.current) {
|
|
16
|
-
new DSAspectBox(ref.current).init();
|
|
17
|
-
}
|
|
18
|
-
}, [ref]);
|
|
19
|
-
|
|
20
13
|
function processChild(child: React.JSX.Element) {
|
|
21
14
|
if (['img', 'svg', 'picture'].includes(child.type)) {
|
|
22
15
|
return React.cloneElement(child, { className: 'ds_aspect-box__inner' });
|
|
@@ -42,11 +35,11 @@ const AspectBox = ({
|
|
|
42
35
|
|
|
43
36
|
return (
|
|
44
37
|
<div
|
|
45
|
-
className={[
|
|
38
|
+
className={clsx([
|
|
46
39
|
'ds_aspect-box',
|
|
47
40
|
ratioClassName,
|
|
48
41
|
className
|
|
49
|
-
]
|
|
42
|
+
])}
|
|
50
43
|
ref={ref}
|
|
51
44
|
{...props}
|
|
52
45
|
>
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
import { test, expect } from 'vitest';
|
|
1
|
+
import { test, expect, vi } from 'vitest';
|
|
2
2
|
import { render, screen, within } from '@testing-library/react';
|
|
3
3
|
import BackToTop from './BackToTop';
|
|
4
4
|
|
|
5
|
+
// Mock the ResizeObserver
|
|
6
|
+
class ResizeObserverMock {
|
|
7
|
+
constructor() {}
|
|
8
|
+
observe() { return vi.fn() }
|
|
9
|
+
unobserve() { return vi.fn() }
|
|
10
|
+
disconnect() { return vi.fn() }
|
|
11
|
+
};
|
|
12
|
+
vi.stubGlobal('ResizeObserver', ResizeObserverMock);
|
|
13
|
+
|
|
5
14
|
test('back to top renders correctly', () => {
|
|
6
15
|
render(
|
|
7
16
|
<BackToTop data-test="foo" />
|
|
@@ -34,6 +43,17 @@ test('renders with custom href', () => {
|
|
|
34
43
|
expect(button).toHaveAttribute('href', '#foo');
|
|
35
44
|
});
|
|
36
45
|
|
|
46
|
+
test('instantiating/initialising DS component script', () => {
|
|
47
|
+
render(
|
|
48
|
+
<BackToTop />
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const button = screen.getByRole('link');
|
|
52
|
+
const container = button.parentElement;
|
|
53
|
+
expect(container).toHaveClass('js-initialised');
|
|
54
|
+
expect(container).toHaveClass('js-instantiated');
|
|
55
|
+
});
|
|
56
|
+
|
|
37
57
|
test('passing additional props', () => {
|
|
38
58
|
render(
|
|
39
59
|
<BackToTop data-test="foo" />
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react';
|
|
2
2
|
import Icon from '../../common/Icon';
|
|
3
|
-
// @ts-expect-error no types from core SGDS
|
|
4
3
|
import DSBackToTop from '@scottish-government/design-system/src/components/back-to-top/back-to-top';
|
|
5
4
|
import { BackToTopProps } from './types';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
6
|
|
|
7
7
|
const BackToTop = ({
|
|
8
8
|
className,
|
|
@@ -12,6 +12,7 @@ const BackToTop = ({
|
|
|
12
12
|
const ref = useRef(null);
|
|
13
13
|
|
|
14
14
|
useEffect(() => {
|
|
15
|
+
/* istanbul ignore else */
|
|
15
16
|
if (ref.current) {
|
|
16
17
|
new DSBackToTop(ref.current).init();
|
|
17
18
|
}
|
|
@@ -19,10 +20,10 @@ const BackToTop = ({
|
|
|
19
20
|
|
|
20
21
|
return (
|
|
21
22
|
<div
|
|
22
|
-
className={[
|
|
23
|
+
className={clsx([
|
|
23
24
|
'ds_back-to-top',
|
|
24
25
|
className
|
|
25
|
-
]
|
|
26
|
+
])}
|
|
26
27
|
ref={ref}
|
|
27
28
|
{...props}
|
|
28
29
|
>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BreadcrumbItemProps } from "./types";
|
|
2
|
+
import clsx from 'clsx';
|
|
2
3
|
|
|
3
4
|
const BreadcrumbItem = ({
|
|
4
5
|
children,
|
|
@@ -20,10 +21,10 @@ const BreadcrumbItem = ({
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
return (
|
|
23
|
-
<li className={[
|
|
24
|
+
<li className={clsx([
|
|
24
25
|
'ds_breadcrumbs__item',
|
|
25
26
|
isHidden && 'visually-hidden'
|
|
26
|
-
]
|
|
27
|
+
])}
|
|
27
28
|
{...props}
|
|
28
29
|
>
|
|
29
30
|
{processChildren(children)}
|
|
@@ -2,6 +2,7 @@ import Icon from '../../common/Icon';
|
|
|
2
2
|
import ScreenReaderText from '../../common/ScreenReaderText';
|
|
3
3
|
import WrapperTag from '../../common/WrapperTag';
|
|
4
4
|
import { ButtonProps } from './types';
|
|
5
|
+
import clsx from 'clsx';
|
|
5
6
|
|
|
6
7
|
const Button = ({
|
|
7
8
|
buttonStyle,
|
|
@@ -26,15 +27,15 @@ const Button = ({
|
|
|
26
27
|
return (
|
|
27
28
|
<WrapperTag
|
|
28
29
|
tagName={tagName}
|
|
29
|
-
className={[
|
|
30
|
+
className={clsx([
|
|
30
31
|
!hasLinkStyle ? 'ds_button' : 'ds_link',
|
|
31
32
|
width && `ds_button--${width}`,
|
|
32
33
|
buttonStyle && `ds_button--${buttonStyle}`,
|
|
33
34
|
isSmall && 'ds_button--small',
|
|
34
|
-
(icon && !isIconOnly)
|
|
35
|
+
(icon && !isIconOnly) && 'ds_button--has-icon',
|
|
35
36
|
isIconLeft && 'ds_button--has-icon--left',
|
|
36
37
|
className
|
|
37
|
-
]
|
|
38
|
+
])}
|
|
38
39
|
href={href}
|
|
39
40
|
{...(tagName === 'button' ? { type: type } : {})}
|
|
40
41
|
{...props}
|
|
@@ -17,6 +17,15 @@ const meta = {
|
|
|
17
17
|
summary: 'boolean'
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
},
|
|
21
|
+
isWrap: {
|
|
22
|
+
description: 'Force wrap buttons on small screens',
|
|
23
|
+
control: 'boolean',
|
|
24
|
+
table: {
|
|
25
|
+
type: {
|
|
26
|
+
summary: 'boolean'
|
|
27
|
+
}
|
|
28
|
+
}
|
|
20
29
|
}
|
|
21
30
|
},
|
|
22
31
|
args: {
|
|
@@ -39,3 +48,16 @@ export const Inline: Story = {
|
|
|
39
48
|
isInline: true
|
|
40
49
|
}
|
|
41
50
|
};
|
|
51
|
+
|
|
52
|
+
export const Wrap: Story = {
|
|
53
|
+
args: {
|
|
54
|
+
isWrap: true
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const InlineWrap: Story = {
|
|
59
|
+
args: {
|
|
60
|
+
isInline: true,
|
|
61
|
+
isWrap: true
|
|
62
|
+
}
|
|
63
|
+
};
|
|
@@ -24,6 +24,27 @@ test('inline button group', () => {
|
|
|
24
24
|
expect(buttonGroup).toHaveClass('ds_button-group--inline');
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
+
test('wrap button group', () => {
|
|
28
|
+
render(
|
|
29
|
+
<ButtonGroup isWrap data-testid="button-group">
|
|
30
|
+
|
|
31
|
+
</ButtonGroup>
|
|
32
|
+
);
|
|
33
|
+
const buttonGroup = screen.getByTestId('button-group');
|
|
34
|
+
expect(buttonGroup).toHaveClass('ds_button-group--wrap');
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('inline-wrap button group', () => {
|
|
38
|
+
render(
|
|
39
|
+
<ButtonGroup isInline isWrap data-testid="button-group">
|
|
40
|
+
|
|
41
|
+
</ButtonGroup>
|
|
42
|
+
);
|
|
43
|
+
const buttonGroup = screen.getByTestId('button-group');
|
|
44
|
+
expect(buttonGroup).toHaveClass('ds_button-group--inline');
|
|
45
|
+
expect(buttonGroup).toHaveClass('ds_button-group--wrap');
|
|
46
|
+
});
|
|
47
|
+
|
|
27
48
|
test('passing additional props', () => {
|
|
28
49
|
render(
|
|
29
50
|
<ButtonGroup data-test="foo" data-testid="button-group">
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { ButtonGroupProps } from "./types";
|
|
2
|
+
import clsx from 'clsx';
|
|
2
3
|
|
|
3
4
|
const ButtonGroup = ({
|
|
4
5
|
children,
|
|
5
6
|
className,
|
|
6
7
|
isInline,
|
|
8
|
+
isWrap,
|
|
7
9
|
...props
|
|
8
10
|
}: ButtonGroupProps) => {
|
|
9
11
|
return (
|
|
10
|
-
<div className={[
|
|
12
|
+
<div className={clsx([
|
|
11
13
|
"ds_button-group",
|
|
12
|
-
isInline
|
|
14
|
+
isInline && "ds_button-group--inline",
|
|
15
|
+
isWrap && "ds_button-group--wrap",
|
|
13
16
|
className
|
|
14
|
-
]
|
|
17
|
+
])} { ...props } >
|
|
15
18
|
{children}
|
|
16
19
|
</div>
|
|
17
20
|
);
|