@nypl/design-system-react-components 0.25.7 → 0.25.10
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/CHANGELOG.md +119 -1
- package/README.md +1 -1
- package/dist/components/Button/Button.d.ts +6 -6
- package/dist/components/Button/ButtonTypes.d.ts +0 -1
- package/dist/components/Card/Card.d.ts +6 -4
- package/dist/components/Checkbox/Checkbox.d.ts +3 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
- package/dist/components/DatePicker/DatePicker.d.ts +4 -3
- package/dist/components/Fieldset/Fieldset.d.ts +1 -3
- package/dist/components/Form/Form.d.ts +15 -14
- package/dist/components/Form/FormTypes.d.ts +2 -2
- package/dist/components/Heading/Heading.d.ts +7 -3
- package/dist/components/Heading/HeadingTypes.d.ts +6 -6
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +3 -3
- package/dist/components/Icons/Icon.d.ts +4 -4
- package/dist/components/Icons/IconSvgs.d.ts +1 -21
- package/dist/components/Icons/IconTypes.d.ts +1 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/Image/ImageTypes.d.ts +3 -1
- package/dist/components/Link/LinkTypes.d.ts +1 -0
- package/dist/components/Logo/Logo.d.ts +28 -0
- package/dist/components/Logo/LogoSvgs.d.ts +18 -0
- package/dist/components/Logo/LogoTypes.d.ts +30 -0
- package/dist/components/Modal/Modal.d.ts +0 -4
- package/dist/components/Notification/Notification.d.ts +4 -2
- package/dist/components/Placeholder/Placeholder.d.ts +3 -5
- package/dist/components/Radio/Radio.d.ts +6 -5
- package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
- package/dist/components/SearchBar/SearchBar.d.ts +15 -7
- package/dist/components/Select/Select.d.ts +5 -2
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
- package/dist/components/Slider/Slider.d.ts +3 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
- package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
- package/dist/components/Table/Table.d.ts +29 -0
- package/dist/components/Template/Template.d.ts +30 -6
- package/dist/components/Text/Text.d.ts +2 -2
- package/dist/components/TextInput/TextInput.d.ts +4 -3
- package/dist/components/Toggle/Toggle.d.ts +48 -0
- package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
- package/dist/design-system-react-components.cjs.development.js +4698 -4405
- package/dist/design-system-react-components.cjs.development.js.map +1 -1
- package/dist/design-system-react-components.cjs.production.min.js +1 -1
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
- package/dist/design-system-react-components.esm.js +5862 -5573
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +13 -8
- package/dist/resources.scss +0 -2
- package/dist/styles.css +2 -2
- package/dist/theme/components/breadcrumb.d.ts +1 -1
- package/dist/theme/components/button.d.ts +0 -12
- package/dist/theme/components/card.d.ts +14 -2
- package/dist/theme/components/customTable.d.ts +56 -0
- package/dist/theme/components/fieldset.d.ts +2 -2
- package/dist/theme/components/global.d.ts +1 -1
- package/dist/theme/components/heading.d.ts +4 -0
- package/dist/theme/components/label.d.ts +1 -1
- package/dist/theme/components/link.d.ts +14 -1
- package/dist/theme/components/list.d.ts +0 -2
- package/dist/theme/components/logo.d.ts +4 -0
- package/dist/theme/components/notification.d.ts +8 -4
- package/dist/theme/components/searchBar.d.ts +7 -13
- package/dist/theme/components/select.d.ts +1 -0
- package/dist/theme/components/structuredContent.d.ts +33 -0
- package/dist/theme/components/template.d.ts +10 -10
- package/dist/theme/components/textInput.d.ts +2 -0
- package/dist/theme/components/toggle.d.ts +71 -0
- package/dist/theme/foundations/spacing.d.ts +2 -0
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +40 -37
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +16 -15
- package/src/components/Accordion/Accordion.test.tsx +45 -1
- package/src/components/Accordion/Accordion.tsx +20 -8
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
- package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
- package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
- package/src/components/Autosuggest/_Autosuggest.scss +2 -6
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +25 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +103 -4
- package/src/components/Button/Button.stories.mdx +93 -48
- package/src/components/Button/Button.test.tsx +0 -12
- package/src/components/Button/Button.tsx +7 -8
- package/src/components/Button/ButtonTypes.tsx +0 -1
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
- package/src/components/Card/Card.stories.mdx +246 -64
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +30 -14
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
- package/src/components/Chakra/Box.stories.mdx +3 -3
- package/src/components/Chakra/Center.stories.mdx +5 -5
- package/src/components/Chakra/Flex.stories.mdx +113 -0
- package/src/components/Chakra/Grid.stories.mdx +14 -17
- package/src/components/Chakra/Stack.stories.mdx +2 -2
- package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
- package/src/components/Checkbox/Checkbox.tsx +13 -8
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
- package/src/components/DatePicker/DatePicker.test.tsx +14 -12
- package/src/components/DatePicker/DatePicker.tsx +13 -10
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
- package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
- package/src/components/Fieldset/Fieldset.tsx +2 -4
- package/src/components/Form/Form.stories.mdx +75 -49
- package/src/components/Form/Form.test.tsx +92 -3
- package/src/components/Form/Form.tsx +28 -23
- package/src/components/Form/FormTypes.tsx +2 -2
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
- package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
- package/src/components/Heading/Heading.stories.mdx +59 -23
- package/src/components/Heading/Heading.test.tsx +82 -18
- package/src/components/Heading/Heading.tsx +31 -31
- package/src/components/Heading/HeadingTypes.tsx +6 -6
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
- package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
- package/src/components/Hero/Hero.stories.mdx +72 -53
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
- package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
- package/src/components/Icons/Icon.stories.mdx +77 -75
- package/src/components/Icons/Icon.tsx +4 -5
- package/src/components/Icons/IconSvgs.tsx +2 -42
- package/src/components/Icons/IconTypes.tsx +1 -24
- package/src/components/Image/Image.stories.mdx +214 -104
- package/src/components/Image/Image.test.tsx +10 -0
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Image/ImageTypes.ts +2 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
- package/src/components/Label/Label.stories.mdx +21 -20
- package/src/components/Link/Link.stories.mdx +103 -53
- package/src/components/Link/Link.test.tsx +108 -7
- package/src/components/Link/Link.tsx +58 -19
- package/src/components/Link/LinkTypes.tsx +1 -0
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
- package/src/components/List/List.stories.mdx +37 -25
- package/src/components/List/List.tsx +1 -1
- package/src/components/Logo/Logo.stories.mdx +220 -0
- package/src/components/Logo/Logo.test.tsx +98 -0
- package/src/components/Logo/Logo.tsx +97 -0
- package/src/components/Logo/LogoSvgs.tsx +34 -0
- package/src/components/Logo/LogoTypes.tsx +32 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
- package/src/components/Modal/Modal.stories.mdx +20 -5
- package/src/components/Modal/Modal.tsx +2 -8
- package/src/components/Notification/Notification.stories.mdx +96 -40
- package/src/components/Notification/Notification.test.tsx +62 -16
- package/src/components/Notification/Notification.tsx +26 -9
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
- package/src/components/Pagination/Pagination.stories.mdx +19 -9
- package/src/components/Pagination/Pagination.tsx +3 -3
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
- package/src/components/Radio/Radio.stories.mdx +39 -19
- package/src/components/Radio/Radio.tsx +13 -9
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
- package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
- package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
- package/src/components/RadioGroup/RadioGroup.tsx +97 -94
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
- package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
- package/src/components/SearchBar/SearchBar.stories.mdx +116 -34
- package/src/components/SearchBar/SearchBar.tsx +70 -50
- package/src/components/Select/Select.stories.mdx +177 -66
- package/src/components/Select/Select.test.tsx +91 -2
- package/src/components/Select/Select.tsx +29 -13
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
- package/src/components/Slider/Slider.stories.mdx +74 -23
- package/src/components/Slider/Slider.test.tsx +35 -0
- package/src/components/Slider/Slider.tsx +22 -11
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
- package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
- package/src/components/StatusBadge/StatusBadge.tsx +2 -1
- package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
- package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
- package/src/components/StructuredContent/StructuredContent.tsx +153 -0
- package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
- package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
- package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
- package/src/components/StyleGuide/ColorCard.tsx +1 -2
- package/src/components/StyleGuide/Colors.stories.mdx +3 -11
- package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
- package/src/components/StyleGuide/Forms.stories.mdx +2 -10
- package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
- package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
- package/src/components/StyleGuide/Typography.stories.mdx +64 -76
- package/src/components/Table/Table.stories.mdx +165 -0
- package/src/components/Table/Table.test.tsx +137 -0
- package/src/components/Table/Table.tsx +126 -0
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
- package/src/components/Tabs/Tabs.stories.mdx +20 -14
- package/src/components/Tabs/Tabs.test.tsx +21 -5
- package/src/components/Tabs/Tabs.tsx +33 -18
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
- package/src/components/Template/Template.stories.mdx +132 -49
- package/src/components/Template/Template.test.tsx +128 -6
- package/src/components/Template/Template.tsx +93 -13
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
- package/src/components/Text/Text.stories.mdx +33 -11
- package/src/components/Text/Text.tsx +2 -2
- package/src/components/TextInput/TextInput.stories.mdx +84 -17
- package/src/components/TextInput/TextInput.test.tsx +96 -0
- package/src/components/TextInput/TextInput.tsx +12 -8
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
- package/src/components/Toggle/Toggle.stories.mdx +200 -0
- package/src/components/Toggle/Toggle.test.tsx +140 -0
- package/src/components/Toggle/Toggle.tsx +123 -0
- package/src/components/Toggle/ToggleSizes.tsx +4 -0
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +19 -6
- package/src/styles/base/_03-base.scss +1 -1
- package/src/styles/base/_place-holder.scss +7 -7
- package/src/styles.scss +1 -5
- package/src/theme/components/breadcrumb.ts +5 -5
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +9 -7
- package/src/theme/components/checkbox.ts +1 -1
- package/src/theme/components/customTable.ts +63 -0
- package/src/theme/components/datePicker.ts +1 -1
- package/src/theme/components/global.ts +7 -7
- package/src/theme/components/heading.ts +13 -11
- package/src/theme/components/helperErrorText.ts +1 -1
- package/src/theme/components/icon.ts +2 -2
- package/src/theme/components/image.ts +9 -1
- package/src/theme/components/link.ts +17 -5
- package/src/theme/components/list.ts +1 -3
- package/src/theme/components/logo.ts +54 -0
- package/src/theme/components/notification.ts +9 -7
- package/src/theme/components/searchBar.ts +7 -13
- package/src/theme/components/select.ts +1 -0
- package/src/theme/components/statusBadge.ts +1 -1
- package/src/theme/components/structuredContent.ts +54 -0
- package/src/theme/components/template.ts +10 -10
- package/src/theme/components/text.ts +6 -6
- package/src/theme/components/textInput.ts +1 -0
- package/src/theme/components/toggle.ts +69 -0
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/spacing.ts +3 -0
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +8 -0
- package/src/utils/componentCategories.ts +5 -2
- package/src/utils/utils.ts +17 -0
- package/dist/__tests__/utils/bem.test.d.ts +0 -1
- package/dist/components/CardEdition/CardEdition.d.ts +0 -21
- package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
- package/dist/components/Input/Input.d.ts +0 -36
- package/dist/components/Input/Input.stories.d.ts +0 -29
- package/dist/components/Input/InputTypes.d.ts +0 -6
- package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
- package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
- package/dist/helpers/getCSSVariable.d.ts +0 -1
- package/dist/interfaces.d.ts +0 -3
- package/dist/utils/bem.d.ts +0 -1
- package/src/__tests__/utils/bem.test.ts +0 -37
- package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
- package/src/components/CardEdition/CardEdition.test.tsx +0 -395
- package/src/components/CardEdition/CardEdition.tsx +0 -60
- package/src/components/CardEdition/_CardEdition.scss +0 -137
- package/src/components/Input/Input.stories.tsx +0 -133
- package/src/components/Input/Input.test.tsx +0 -266
- package/src/components/Input/Input.tsx +0 -81
- package/src/components/Input/InputTypes.tsx +0 -8
- package/src/components/Input/_Input.scss +0 -78
- package/src/components/StyleGuide/UIDocCard.tsx +0 -36
- package/src/helpers/CSSVariablesHelper.tsx +0 -34
- package/src/helpers/getCSSVariable.tsx +0 -5
- package/src/interfaces.ts +0 -3
- package/src/utils/bem.ts +0 -44
|
@@ -13,8 +13,8 @@ describe("Notification Accessibility", () => {
|
|
|
13
13
|
const { container } = render(
|
|
14
14
|
<Notification
|
|
15
15
|
id="notificationID"
|
|
16
|
-
notificationHeading="Notification Heading"
|
|
17
16
|
notificationContent={<>Notification content.</>}
|
|
17
|
+
notificationHeading="Notification Heading"
|
|
18
18
|
/>
|
|
19
19
|
);
|
|
20
20
|
expect(await axe(container)).toHaveNoViolations();
|
|
@@ -29,6 +29,18 @@ describe("Notification Accessibility", () => {
|
|
|
29
29
|
);
|
|
30
30
|
expect(await axe(container)).toHaveNoViolations();
|
|
31
31
|
});
|
|
32
|
+
|
|
33
|
+
it("passes axe accessibility test without an icon", async () => {
|
|
34
|
+
const { container } = render(
|
|
35
|
+
<Notification
|
|
36
|
+
id="notificationID"
|
|
37
|
+
notificationContent={<>Notification content.</>}
|
|
38
|
+
notificationHeading="Notification Heading"
|
|
39
|
+
showIcon={false}
|
|
40
|
+
/>
|
|
41
|
+
);
|
|
42
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
43
|
+
});
|
|
32
44
|
});
|
|
33
45
|
|
|
34
46
|
describe("Notification", () => {
|
|
@@ -37,8 +49,8 @@ describe("Notification", () => {
|
|
|
37
49
|
utils = render(
|
|
38
50
|
<Notification
|
|
39
51
|
id="notificationID"
|
|
40
|
-
notificationHeading="Notification Heading"
|
|
41
52
|
notificationContent={<>Notification content.</>}
|
|
53
|
+
notificationHeading="Notification Heading"
|
|
42
54
|
/>
|
|
43
55
|
);
|
|
44
56
|
});
|
|
@@ -51,7 +63,20 @@ describe("Notification", () => {
|
|
|
51
63
|
expect(screen.getByText("Notification content.")).toBeInTheDocument();
|
|
52
64
|
});
|
|
53
65
|
|
|
54
|
-
it("renders
|
|
66
|
+
it("renders with an Icon", () => {
|
|
67
|
+
// The Icon's role is "img".
|
|
68
|
+
expect(screen.queryByRole("img")).toBeInTheDocument();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("does not render an Icon", () => {
|
|
72
|
+
utils.rerender(
|
|
73
|
+
<Notification
|
|
74
|
+
id="notificationID"
|
|
75
|
+
notificationContent={<>Notification content.</>}
|
|
76
|
+
notificationHeading="Notification Heading"
|
|
77
|
+
showIcon={false}
|
|
78
|
+
/>
|
|
79
|
+
);
|
|
55
80
|
// The Icon's role is "img".
|
|
56
81
|
expect(screen.queryByRole("img")).not.toBeInTheDocument();
|
|
57
82
|
});
|
|
@@ -59,18 +84,18 @@ describe("Notification", () => {
|
|
|
59
84
|
it("renders a custom Icon component", () => {
|
|
60
85
|
utils.rerender(
|
|
61
86
|
<Notification
|
|
62
|
-
id="notificationID"
|
|
63
87
|
icon={
|
|
64
88
|
<Icon
|
|
65
89
|
id="custom-icon"
|
|
90
|
+
className="custom-icon"
|
|
91
|
+
color={IconColors.BrandPrimary}
|
|
66
92
|
name={IconNames.Check}
|
|
67
93
|
size={IconSizes.Large}
|
|
68
|
-
color={IconColors.BrandPrimary}
|
|
69
|
-
className="custom-icon"
|
|
70
94
|
/>
|
|
71
95
|
}
|
|
72
|
-
|
|
96
|
+
id="notificationID"
|
|
73
97
|
notificationContent={<>Notification content.</>}
|
|
98
|
+
notificationHeading="Notification Heading"
|
|
74
99
|
/>
|
|
75
100
|
);
|
|
76
101
|
expect(utils.container.querySelector(".custom-icon")).toBeInTheDocument();
|
|
@@ -80,9 +105,9 @@ describe("Notification", () => {
|
|
|
80
105
|
utils.rerender(
|
|
81
106
|
<Notification
|
|
82
107
|
id="notificationID"
|
|
83
|
-
notificationType={NotificationTypes.Announcement}
|
|
84
|
-
notificationHeading="Notification Heading"
|
|
85
108
|
notificationContent={<>Notification content.</>}
|
|
109
|
+
notificationHeading="Notification Heading"
|
|
110
|
+
notificationType={NotificationTypes.Announcement}
|
|
86
111
|
/>
|
|
87
112
|
);
|
|
88
113
|
|
|
@@ -96,9 +121,9 @@ describe("Notification", () => {
|
|
|
96
121
|
utils.rerender(
|
|
97
122
|
<Notification
|
|
98
123
|
id="notificationID"
|
|
99
|
-
notificationType={NotificationTypes.Warning}
|
|
100
|
-
notificationHeading="Notification Heading"
|
|
101
124
|
notificationContent={<>Notification content.</>}
|
|
125
|
+
notificationHeading="Notification Heading"
|
|
126
|
+
notificationType={NotificationTypes.Warning}
|
|
102
127
|
/>
|
|
103
128
|
);
|
|
104
129
|
|
|
@@ -113,8 +138,8 @@ describe("Notification", () => {
|
|
|
113
138
|
.create(
|
|
114
139
|
<Notification
|
|
115
140
|
id="notificationID1"
|
|
116
|
-
notificationHeading="Notification Heading"
|
|
117
141
|
notificationContent={<>Notification content.</>}
|
|
142
|
+
notificationHeading="Notification Heading"
|
|
118
143
|
/>
|
|
119
144
|
)
|
|
120
145
|
.toJSON();
|
|
@@ -122,9 +147,9 @@ describe("Notification", () => {
|
|
|
122
147
|
.create(
|
|
123
148
|
<Notification
|
|
124
149
|
id="notificationID2"
|
|
125
|
-
notificationType={NotificationTypes.Announcement}
|
|
126
|
-
notificationHeading="Notification Heading"
|
|
127
150
|
notificationContent={<>Notification content.</>}
|
|
151
|
+
notificationHeading="Notification Heading"
|
|
152
|
+
notificationType={NotificationTypes.Announcement}
|
|
128
153
|
/>
|
|
129
154
|
)
|
|
130
155
|
.toJSON();
|
|
@@ -132,9 +157,9 @@ describe("Notification", () => {
|
|
|
132
157
|
.create(
|
|
133
158
|
<Notification
|
|
134
159
|
id="notificationID3"
|
|
135
|
-
notificationType={NotificationTypes.Warning}
|
|
136
|
-
notificationHeading="Notification Heading"
|
|
137
160
|
notificationContent={<>Notification content.</>}
|
|
161
|
+
notificationHeading="Notification Heading"
|
|
162
|
+
notificationType={NotificationTypes.Warning}
|
|
138
163
|
/>
|
|
139
164
|
)
|
|
140
165
|
.toJSON();
|
|
@@ -146,9 +171,30 @@ describe("Notification", () => {
|
|
|
146
171
|
/>
|
|
147
172
|
)
|
|
148
173
|
.toJSON();
|
|
174
|
+
const withoutAnIcon = renderer
|
|
175
|
+
.create(
|
|
176
|
+
<Notification
|
|
177
|
+
id="notificationID5"
|
|
178
|
+
notificationHeading="Notification Heading"
|
|
179
|
+
notificationContent={<>Notification content.</>}
|
|
180
|
+
showIcon={false}
|
|
181
|
+
/>
|
|
182
|
+
)
|
|
183
|
+
.toJSON();
|
|
184
|
+
const withoutHeadingAndIcon = renderer
|
|
185
|
+
.create(
|
|
186
|
+
<Notification
|
|
187
|
+
id="notificationID6"
|
|
188
|
+
notificationContent={<>Notification content.</>}
|
|
189
|
+
showIcon={false}
|
|
190
|
+
/>
|
|
191
|
+
)
|
|
192
|
+
.toJSON();
|
|
149
193
|
expect(standard).toMatchSnapshot();
|
|
150
194
|
expect(announcement).toMatchSnapshot();
|
|
151
195
|
expect(warning).toMatchSnapshot();
|
|
152
196
|
expect(withoutHeading).toMatchSnapshot();
|
|
197
|
+
expect(withoutAnIcon).toMatchSnapshot();
|
|
198
|
+
expect(withoutHeadingAndIcon).toMatchSnapshot();
|
|
153
199
|
});
|
|
154
200
|
});
|
|
@@ -17,6 +17,8 @@ interface BaseProps {
|
|
|
17
17
|
centered?: boolean;
|
|
18
18
|
/** Optional custom `Icon` that will override the default `Icon`. */
|
|
19
19
|
icon?: JSX.Element;
|
|
20
|
+
/** ID that other components can cross reference for accessibility purposes. */
|
|
21
|
+
id?: string;
|
|
20
22
|
/** Optional prop to control the coloring of the `Notification` text and the
|
|
21
23
|
* visibility of an applicable icon. */
|
|
22
24
|
notificationType?: NotificationTypes;
|
|
@@ -35,14 +37,14 @@ export interface NotificationProps extends BasePropsWithoutAlignText {
|
|
|
35
37
|
dismissible?: boolean;
|
|
36
38
|
/** Optional custom `Icon` that will override the default `Icon`. */
|
|
37
39
|
icon?: JSX.Element;
|
|
38
|
-
/** ID that other components can cross reference for accessibility purposes. */
|
|
39
|
-
id?: string;
|
|
40
40
|
/** Optional prop to control the margin around the `Notification` component. */
|
|
41
41
|
noMargin?: boolean;
|
|
42
42
|
/** Content to be rendered in a `NotificationContent` component. */
|
|
43
43
|
notificationContent: string | JSX.Element;
|
|
44
44
|
/** Content to be rendered in a `NotificationHeading` component. */
|
|
45
45
|
notificationHeading?: string;
|
|
46
|
+
/** Prop to display the `Notification` icon. Defaults to `true`. */
|
|
47
|
+
showIcon?: boolean;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
/**
|
|
@@ -51,15 +53,20 @@ export interface NotificationProps extends BasePropsWithoutAlignText {
|
|
|
51
53
|
export function NotificationHeading(
|
|
52
54
|
props: React.PropsWithChildren<BasePropsWithoutAlignText>
|
|
53
55
|
) {
|
|
54
|
-
const { centered, children, icon, notificationType } = props;
|
|
56
|
+
const { centered, children, icon, id, notificationType } = props;
|
|
55
57
|
const styles = useMultiStyleConfig("NotificationHeading", {
|
|
56
58
|
centered,
|
|
59
|
+
icon,
|
|
57
60
|
notificationType,
|
|
58
61
|
});
|
|
59
62
|
return (
|
|
60
63
|
<Box as="header" __css={styles}>
|
|
61
64
|
{icon}
|
|
62
|
-
<Heading
|
|
65
|
+
<Heading
|
|
66
|
+
additionalStyles={styles.heading}
|
|
67
|
+
id={`${id}-heading`}
|
|
68
|
+
level={HeadingLevels.Four}
|
|
69
|
+
>
|
|
63
70
|
{children}
|
|
64
71
|
</Heading>
|
|
65
72
|
</Box>
|
|
@@ -75,6 +82,7 @@ export function NotificationContent(
|
|
|
75
82
|
const { alignText, children, icon, notificationType } = props;
|
|
76
83
|
const styles = useMultiStyleConfig("NotificationContent", {
|
|
77
84
|
alignText,
|
|
85
|
+
icon,
|
|
78
86
|
notificationType,
|
|
79
87
|
});
|
|
80
88
|
return (
|
|
@@ -100,6 +108,7 @@ export default function Notification(props: NotificationProps) {
|
|
|
100
108
|
notificationContent,
|
|
101
109
|
notificationHeading,
|
|
102
110
|
notificationType = NotificationTypes.Standard,
|
|
111
|
+
showIcon = true,
|
|
103
112
|
} = props;
|
|
104
113
|
const [isOpen, setIsOpen] = useState(true);
|
|
105
114
|
const handleClose = () => setIsOpen(false);
|
|
@@ -107,6 +116,7 @@ export default function Notification(props: NotificationProps) {
|
|
|
107
116
|
centered,
|
|
108
117
|
noMargin,
|
|
109
118
|
notificationType,
|
|
119
|
+
showIcon,
|
|
110
120
|
});
|
|
111
121
|
const iconElement = () => {
|
|
112
122
|
const baseIconProps = {
|
|
@@ -114,6 +124,10 @@ export default function Notification(props: NotificationProps) {
|
|
|
114
124
|
size: IconSizes.Large,
|
|
115
125
|
additionalStyles: styles.icon,
|
|
116
126
|
};
|
|
127
|
+
// If the icon should not display, return null.
|
|
128
|
+
if (!showIcon) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
117
131
|
// If a custom icon is passed, add specific `Notification` styles.
|
|
118
132
|
if (icon)
|
|
119
133
|
return React.cloneElement(icon, {
|
|
@@ -125,18 +139,22 @@ export default function Notification(props: NotificationProps) {
|
|
|
125
139
|
name: IconNames.SpeakerNotes,
|
|
126
140
|
color: IconColors.SectionResearchSecondary,
|
|
127
141
|
},
|
|
142
|
+
[NotificationTypes.Standard]: {
|
|
143
|
+
name: IconNames.AlertNotificationImportant,
|
|
144
|
+
color: IconColors.UiBlack,
|
|
145
|
+
},
|
|
128
146
|
[NotificationTypes.Warning]: {
|
|
129
147
|
name: IconNames.ErrorFilled,
|
|
130
148
|
color: IconColors.BrandPrimary,
|
|
131
149
|
},
|
|
132
150
|
};
|
|
133
|
-
return
|
|
151
|
+
return (
|
|
134
152
|
<Icon
|
|
135
153
|
id={`${id}-notification-icon`}
|
|
136
154
|
{...baseIconProps}
|
|
137
155
|
{...iconProps[notificationType]}
|
|
138
156
|
/>
|
|
139
|
-
)
|
|
157
|
+
);
|
|
140
158
|
};
|
|
141
159
|
const dismissibleButton = dismissible && (
|
|
142
160
|
<Button
|
|
@@ -157,15 +175,14 @@ export default function Notification(props: NotificationProps) {
|
|
|
157
175
|
<NotificationHeading
|
|
158
176
|
centered={centered}
|
|
159
177
|
icon={iconElem}
|
|
178
|
+
id={id}
|
|
160
179
|
notificationType={notificationType}
|
|
161
180
|
>
|
|
162
181
|
{notificationHeading}
|
|
163
182
|
</NotificationHeading>
|
|
164
183
|
);
|
|
165
184
|
// Specific alignment styles for the content.
|
|
166
|
-
const alignText =
|
|
167
|
-
childHeading &&
|
|
168
|
-
(!!icon || (notificationType !== NotificationTypes.Standard && !centered));
|
|
185
|
+
const alignText = childHeading && showIcon && (!!icon || !centered);
|
|
169
186
|
const childContent = (
|
|
170
187
|
<NotificationContent
|
|
171
188
|
alignText={alignText}
|
|
@@ -12,8 +12,41 @@ exports[`Notification renders the UI snapshot correctly 1`] = `
|
|
|
12
12
|
<header
|
|
13
13
|
className="css-0"
|
|
14
14
|
>
|
|
15
|
+
<svg
|
|
16
|
+
aria-hidden={false}
|
|
17
|
+
className="chakra-icon css-onkibi"
|
|
18
|
+
focusable={false}
|
|
19
|
+
id="notificationID1-notification-icon"
|
|
20
|
+
role="img"
|
|
21
|
+
title="alert_notification_important icon"
|
|
22
|
+
viewBox="0 0 24 24"
|
|
23
|
+
>
|
|
24
|
+
<g
|
|
25
|
+
stroke="currentColor"
|
|
26
|
+
strokeWidth="1.5"
|
|
27
|
+
>
|
|
28
|
+
<path
|
|
29
|
+
d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
|
|
30
|
+
fill="none"
|
|
31
|
+
strokeLinecap="round"
|
|
32
|
+
/>
|
|
33
|
+
<path
|
|
34
|
+
d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
|
|
35
|
+
fill="currentColor"
|
|
36
|
+
strokeLinecap="round"
|
|
37
|
+
/>
|
|
38
|
+
<circle
|
|
39
|
+
cx="12"
|
|
40
|
+
cy="12"
|
|
41
|
+
fill="none"
|
|
42
|
+
r="11.25"
|
|
43
|
+
strokeMiterlimit="10"
|
|
44
|
+
/>
|
|
45
|
+
</g>
|
|
46
|
+
</svg>
|
|
15
47
|
<h4
|
|
16
48
|
className="chakra-heading css-0"
|
|
49
|
+
id="notificationID1-heading"
|
|
17
50
|
>
|
|
18
51
|
Notification Heading
|
|
19
52
|
</h4>
|
|
@@ -77,6 +110,7 @@ exports[`Notification renders the UI snapshot correctly 2`] = `
|
|
|
77
110
|
</svg>
|
|
78
111
|
<h4
|
|
79
112
|
className="chakra-heading css-0"
|
|
113
|
+
id="notificationID2-heading"
|
|
80
114
|
>
|
|
81
115
|
Notification Heading
|
|
82
116
|
</h4>
|
|
@@ -140,6 +174,7 @@ exports[`Notification renders the UI snapshot correctly 3`] = `
|
|
|
140
174
|
</svg>
|
|
141
175
|
<h4
|
|
142
176
|
className="chakra-heading css-0"
|
|
177
|
+
id="notificationID3-heading"
|
|
143
178
|
>
|
|
144
179
|
Notification Heading
|
|
145
180
|
</h4>
|
|
@@ -162,6 +197,92 @@ exports[`Notification renders the UI snapshot correctly 4`] = `
|
|
|
162
197
|
className="css-0"
|
|
163
198
|
data-type="standard"
|
|
164
199
|
id="notificationID4"
|
|
200
|
+
>
|
|
201
|
+
<div
|
|
202
|
+
className="css-0"
|
|
203
|
+
>
|
|
204
|
+
<div
|
|
205
|
+
className="css-0"
|
|
206
|
+
>
|
|
207
|
+
<svg
|
|
208
|
+
aria-hidden={false}
|
|
209
|
+
className="chakra-icon css-onkibi"
|
|
210
|
+
focusable={false}
|
|
211
|
+
id="notificationID4-notification-icon"
|
|
212
|
+
role="img"
|
|
213
|
+
title="alert_notification_important icon"
|
|
214
|
+
viewBox="0 0 24 24"
|
|
215
|
+
>
|
|
216
|
+
<g
|
|
217
|
+
stroke="currentColor"
|
|
218
|
+
strokeWidth="1.5"
|
|
219
|
+
>
|
|
220
|
+
<path
|
|
221
|
+
d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
|
|
222
|
+
fill="none"
|
|
223
|
+
strokeLinecap="round"
|
|
224
|
+
/>
|
|
225
|
+
<path
|
|
226
|
+
d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
|
|
227
|
+
fill="currentColor"
|
|
228
|
+
strokeLinecap="round"
|
|
229
|
+
/>
|
|
230
|
+
<circle
|
|
231
|
+
cx="12"
|
|
232
|
+
cy="12"
|
|
233
|
+
fill="none"
|
|
234
|
+
r="11.25"
|
|
235
|
+
strokeMiterlimit="10"
|
|
236
|
+
/>
|
|
237
|
+
</g>
|
|
238
|
+
</svg>
|
|
239
|
+
<div
|
|
240
|
+
className="css-0"
|
|
241
|
+
>
|
|
242
|
+
Notification content.
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
</aside>
|
|
247
|
+
`;
|
|
248
|
+
|
|
249
|
+
exports[`Notification renders the UI snapshot correctly 5`] = `
|
|
250
|
+
<aside
|
|
251
|
+
className="css-0"
|
|
252
|
+
data-type="standard"
|
|
253
|
+
id="notificationID5"
|
|
254
|
+
>
|
|
255
|
+
<div
|
|
256
|
+
className="css-0"
|
|
257
|
+
>
|
|
258
|
+
<header
|
|
259
|
+
className="css-0"
|
|
260
|
+
>
|
|
261
|
+
<h4
|
|
262
|
+
className="chakra-heading css-0"
|
|
263
|
+
id="notificationID5-heading"
|
|
264
|
+
>
|
|
265
|
+
Notification Heading
|
|
266
|
+
</h4>
|
|
267
|
+
</header>
|
|
268
|
+
<div
|
|
269
|
+
className="css-0"
|
|
270
|
+
>
|
|
271
|
+
<div
|
|
272
|
+
className="css-0"
|
|
273
|
+
>
|
|
274
|
+
Notification content.
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
</aside>
|
|
279
|
+
`;
|
|
280
|
+
|
|
281
|
+
exports[`Notification renders the UI snapshot correctly 6`] = `
|
|
282
|
+
<aside
|
|
283
|
+
className="css-0"
|
|
284
|
+
data-type="standard"
|
|
285
|
+
id="notificationID6"
|
|
165
286
|
>
|
|
166
287
|
<div
|
|
167
288
|
className="css-0"
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
2
|
ArgsTable,
|
|
5
3
|
Canvas,
|
|
6
4
|
Description,
|
|
7
|
-
|
|
5
|
+
Meta,
|
|
6
|
+
Story,
|
|
7
|
+
} from "@storybook/addon-docs";
|
|
8
8
|
import { withDesign } from "storybook-addon-designs";
|
|
9
9
|
import { withQuery } from "@storybook/addon-queryparams";
|
|
10
|
+
|
|
10
11
|
import Pagination from "./Pagination";
|
|
11
12
|
import * as stories from "./Pagination.stories.tsx";
|
|
12
13
|
import { getCategory } from "../../utils/componentCategories";
|
|
@@ -18,15 +19,16 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
18
19
|
parameters={{
|
|
19
20
|
design: {
|
|
20
21
|
type: "figma",
|
|
21
|
-
url:
|
|
22
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17226%3A932",
|
|
22
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17226%3A932",
|
|
23
23
|
},
|
|
24
24
|
jest: ["Pagination.test.tsx"],
|
|
25
25
|
}}
|
|
26
26
|
argTypes={{
|
|
27
|
-
|
|
28
|
-
getPageHref: {
|
|
29
|
-
|
|
27
|
+
className: { control: false },
|
|
28
|
+
getPageHref: { control: false },
|
|
29
|
+
id: { control: false },
|
|
30
|
+
initialPage: { table: { defaultValue: { summary: 1 } } },
|
|
31
|
+
onPageChange: { control: false },
|
|
30
32
|
}}
|
|
31
33
|
/>
|
|
32
34
|
|
|
@@ -35,7 +37,7 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
35
37
|
| Component Version | DS Version |
|
|
36
38
|
| ----------------- | ---------- |
|
|
37
39
|
| Added | `0.0.10` |
|
|
38
|
-
| Latest | `0.25.
|
|
40
|
+
| Latest | `0.25.10` |
|
|
39
41
|
|
|
40
42
|
<Description of={Pagination} />
|
|
41
43
|
|
|
@@ -70,7 +72,11 @@ const getPageHref = (selectedPage: number) => {
|
|
|
70
72
|
<Story
|
|
71
73
|
name="Pagination with URL Updates"
|
|
72
74
|
args={{
|
|
75
|
+
className: undefined,
|
|
76
|
+
getPageHref: undefined,
|
|
77
|
+
id: "pagination-id",
|
|
73
78
|
initialPage: 1,
|
|
79
|
+
onPageChange: undefined,
|
|
74
80
|
pageCount: 10,
|
|
75
81
|
}}
|
|
76
82
|
>
|
|
@@ -103,7 +109,11 @@ const onPageChange = (currentPage: number) => {
|
|
|
103
109
|
<Story
|
|
104
110
|
name="Pagination with Unchanging URL"
|
|
105
111
|
args={{
|
|
112
|
+
className: undefined,
|
|
113
|
+
getPageHref: undefined,
|
|
114
|
+
id: "pagination-id-2",
|
|
106
115
|
initialPage: 7,
|
|
116
|
+
onPageChange: undefined,
|
|
107
117
|
pageCount: 100,
|
|
108
118
|
}}
|
|
109
119
|
>
|
|
@@ -31,10 +31,10 @@ export interface PaginationProps {
|
|
|
31
31
|
const Pagination: React.FC<PaginationProps> = (props: PaginationProps) => {
|
|
32
32
|
const {
|
|
33
33
|
className,
|
|
34
|
-
initialPage = 1,
|
|
35
34
|
getPageHref,
|
|
36
35
|
id = generateUUID(),
|
|
37
|
-
|
|
36
|
+
initialPage = 1,
|
|
37
|
+
onPageChange,
|
|
38
38
|
pageCount,
|
|
39
39
|
} = props;
|
|
40
40
|
const [currentPage, setCurrentPage] = useState<number>(initialPage);
|
|
@@ -63,7 +63,7 @@ const Pagination: React.FC<PaginationProps> = (props: PaginationProps) => {
|
|
|
63
63
|
e.preventDefault && e.preventDefault();
|
|
64
64
|
if (currentPage === selectedPage) return;
|
|
65
65
|
setCurrentPage(selectedPage);
|
|
66
|
-
onPageChange(selectedPage);
|
|
66
|
+
onPageChange && onPageChange(selectedPage);
|
|
67
67
|
};
|
|
68
68
|
// Select the previous page.
|
|
69
69
|
const previousPage = (e: Event) => {
|