@nypl/design-system-react-components 0.25.5 → 0.25.9
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 +91 -1
- package/README.md +1 -1
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -0
- 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 +3 -2
- package/dist/components/Form/Form.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 +2 -2
- 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 +3 -2
- package/dist/components/SearchBar/SearchBar.d.ts +10 -2
- 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 +23 -0
- package/dist/components/Template/Template.d.ts +8 -3
- 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 +5989 -5490
- 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 +6057 -5551
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/styles.css +2 -2
- package/dist/theme/components/breadcrumb.d.ts +9 -0
- 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 +47 -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 +2 -3
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +15 -14
- 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 +50 -14
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +20 -0
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +198 -0
- 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 +26 -13
- 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/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 +8 -6
- package/src/components/DatePicker/DatePicker.tsx +10 -6
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
- package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
- package/src/components/Form/Form.stories.mdx +49 -41
- package/src/components/Form/Form.tsx +5 -4
- 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 +9 -8
- package/src/components/HorizontalRule/HorizontalRule.tsx +2 -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 +36 -24
- 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 +18 -8
- package/src/components/Pagination/Pagination.tsx +1 -1
- 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/RadioGroup/RadioGroup.stories.mdx +50 -16
- package/src/components/RadioGroup/RadioGroup.tsx +15 -11
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
- package/src/components/SearchBar/SearchBar.Test.tsx +114 -22
- package/src/components/SearchBar/SearchBar.stories.mdx +111 -33
- package/src/components/SearchBar/SearchBar.tsx +57 -33
- package/src/components/Select/Select.stories.mdx +177 -66
- package/src/components/Select/Select.test.tsx +2 -2
- package/src/components/Select/Select.tsx +22 -12
- 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 +60 -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 +66 -0
- package/src/components/Table/Table.test.tsx +60 -0
- package/src/components/Table/Table.tsx +116 -0
- package/src/components/Tabs/Tabs.stories.mdx +19 -13
- package/src/components/Tabs/Tabs.test.tsx +1 -1
- package/src/components/Template/Template.stories.mdx +57 -49
- package/src/components/Template/Template.test.tsx +65 -5
- package/src/components/Template/Template.tsx +35 -5
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -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 +13 -4
- 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 +14 -4
- 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 +50 -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 +4 -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
|
@@ -1,16 +1,22 @@
|
|
|
1
|
+
import { VStack } from "@chakra-ui/react";
|
|
1
2
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
3
|
ArgsTable,
|
|
4
|
+
Canvas,
|
|
6
5
|
Description,
|
|
7
|
-
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
8
9
|
import { withDesign } from "storybook-addon-designs";
|
|
9
10
|
|
|
10
|
-
import
|
|
11
|
+
import Button from "../Button/Button";
|
|
12
|
+
import Form from "../Form/Form";
|
|
11
13
|
import Select from "./Select";
|
|
14
|
+
import { SelectTypes } from "./SelectTypes";
|
|
12
15
|
import { getCategory } from "../../utils/componentCategories";
|
|
13
16
|
import DSProvider from "../../theme/provider";
|
|
17
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
18
|
+
|
|
19
|
+
export const enumValues = getStorybookEnumValues(SelectTypes, "SelectTypes");
|
|
14
20
|
|
|
15
21
|
<Meta
|
|
16
22
|
title={getCategory("Select")}
|
|
@@ -19,17 +25,40 @@ import DSProvider from "../../theme/provider";
|
|
|
19
25
|
parameters={{
|
|
20
26
|
design: {
|
|
21
27
|
type: "figma",
|
|
22
|
-
url:
|
|
23
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A549",
|
|
28
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A549",
|
|
24
29
|
},
|
|
25
30
|
jest: ["Select.test.tsx"],
|
|
26
31
|
}}
|
|
27
32
|
argTypes={{
|
|
28
33
|
children: { table: { disable: true } },
|
|
29
|
-
id: {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
id: { control: false },
|
|
35
|
+
isDisabled: {
|
|
36
|
+
table: { defaultValue: { summary: false } },
|
|
37
|
+
},
|
|
38
|
+
isInvalid: {
|
|
39
|
+
table: { defaultValue: { summary: false } },
|
|
40
|
+
},
|
|
41
|
+
isRequired: {
|
|
42
|
+
table: { defaultValue: { summary: false } },
|
|
43
|
+
},
|
|
44
|
+
name: { control: false },
|
|
45
|
+
key: { table: { disable: true } },
|
|
46
|
+
onChange: { control: false },
|
|
47
|
+
ref: { table: { disable: true } },
|
|
48
|
+
showHelperInvalidText: {
|
|
49
|
+
table: { defaultValue: { summary: true } },
|
|
50
|
+
},
|
|
51
|
+
showLabel: {
|
|
52
|
+
table: { defaultValue: { summary: true } },
|
|
53
|
+
},
|
|
54
|
+
showOptReqLabel: {
|
|
55
|
+
table: { defaultValue: { summary: true } },
|
|
56
|
+
},
|
|
57
|
+
type: {
|
|
58
|
+
control: false,
|
|
59
|
+
table: { defaultValue: { summary: "SelectTypes.Default" } },
|
|
60
|
+
},
|
|
61
|
+
value: { control: false },
|
|
33
62
|
}}
|
|
34
63
|
/>
|
|
35
64
|
|
|
@@ -38,7 +67,7 @@ import DSProvider from "../../theme/provider";
|
|
|
38
67
|
| Component Version | DS Version |
|
|
39
68
|
| ----------------- | ---------- |
|
|
40
69
|
| Added | `0.7.0` |
|
|
41
|
-
| Latest | `0.25.
|
|
70
|
+
| Latest | `0.25.9` |
|
|
42
71
|
|
|
43
72
|
<Description of={Select} />
|
|
44
73
|
|
|
@@ -63,17 +92,23 @@ elements, but the select options _need_ to be child `<option>` HTML elements.
|
|
|
63
92
|
|
|
64
93
|
<Canvas withToolbar>
|
|
65
94
|
<Story
|
|
66
|
-
name="Select"
|
|
95
|
+
name="Select with Controls"
|
|
67
96
|
args={{
|
|
97
|
+
className: undefined,
|
|
68
98
|
helperText: "This is the helper text.",
|
|
99
|
+
id: "select-id",
|
|
69
100
|
invalidText: "This is the error text :(",
|
|
70
101
|
isDisabled: false,
|
|
71
102
|
isInvalid: false,
|
|
72
103
|
isRequired: false,
|
|
73
104
|
labelText: "What is your favorite color?",
|
|
74
105
|
name: "color",
|
|
106
|
+
onChange: undefined,
|
|
107
|
+
showHelperInvalidText: undefined,
|
|
75
108
|
showLabel: true,
|
|
76
109
|
showOptReqLabel: true,
|
|
110
|
+
type: SelectTypes.Default,
|
|
111
|
+
value: undefined,
|
|
77
112
|
}}
|
|
78
113
|
>
|
|
79
114
|
{(args) => (
|
|
@@ -88,7 +123,7 @@ elements, but the select options _need_ to be child `<option>` HTML elements.
|
|
|
88
123
|
</Story>
|
|
89
124
|
</Canvas>
|
|
90
125
|
|
|
91
|
-
<ArgsTable story="Select" />
|
|
126
|
+
<ArgsTable story="Select with Controls" />
|
|
92
127
|
|
|
93
128
|
## Labelling Variations
|
|
94
129
|
|
|
@@ -102,8 +137,8 @@ text within the `label` element.
|
|
|
102
137
|
<Story name="Labelling Variations">
|
|
103
138
|
<VStack align="stretch" spacing={8}>
|
|
104
139
|
<Select
|
|
105
|
-
labelText="What is your favorite color?"
|
|
106
140
|
helperText="Display the label"
|
|
141
|
+
labelText="What is your favorite color?"
|
|
107
142
|
name="color"
|
|
108
143
|
>
|
|
109
144
|
<option value="red">Red</option>
|
|
@@ -113,8 +148,8 @@ text within the `label` element.
|
|
|
113
148
|
<option value="white">White</option>
|
|
114
149
|
</Select>
|
|
115
150
|
<Select
|
|
116
|
-
labelText="What is your favorite color?"
|
|
117
151
|
helperText="Do not display the label"
|
|
152
|
+
labelText="What is your favorite color?"
|
|
118
153
|
name="color"
|
|
119
154
|
showLabel={false}
|
|
120
155
|
>
|
|
@@ -125,10 +160,10 @@ text within the `label` element.
|
|
|
125
160
|
<option value="white">White</option>
|
|
126
161
|
</Select>
|
|
127
162
|
<Select
|
|
128
|
-
labelText="What is your favorite color?"
|
|
129
163
|
helperText="Display the Required/Optional text"
|
|
130
|
-
name="color"
|
|
131
164
|
isRequired
|
|
165
|
+
labelText="What is your favorite color?"
|
|
166
|
+
name="color"
|
|
132
167
|
>
|
|
133
168
|
<option value="red">Red</option>
|
|
134
169
|
<option value="green">Green</option>
|
|
@@ -137,11 +172,11 @@ text within the `label` element.
|
|
|
137
172
|
<option value="white">White</option>
|
|
138
173
|
</Select>
|
|
139
174
|
<Select
|
|
140
|
-
labelText="What is your favorite color?"
|
|
141
175
|
helperText="Do not display the Required/Optional text"
|
|
176
|
+
isRequired
|
|
177
|
+
labelText="What is your favorite color?"
|
|
142
178
|
name="color"
|
|
143
179
|
showOptReqLabel={false}
|
|
144
|
-
isRequired
|
|
145
180
|
>
|
|
146
181
|
<option value="red">Red</option>
|
|
147
182
|
<option value="green">Green</option>
|
|
@@ -158,11 +193,11 @@ text within the `label` element.
|
|
|
158
193
|
<Canvas>
|
|
159
194
|
<DSProvider>
|
|
160
195
|
<Select
|
|
161
|
-
labelText="What is your favorite color?"
|
|
162
196
|
helperText="This is the helper text."
|
|
163
197
|
invalidText="This is the error text :("
|
|
164
|
-
name="color"
|
|
165
198
|
isInvalid
|
|
199
|
+
labelText="What is your favorite color?"
|
|
200
|
+
name="color"
|
|
166
201
|
>
|
|
167
202
|
<option value="red">Red</option>
|
|
168
203
|
<option value="green">Green</option>
|
|
@@ -178,11 +213,11 @@ text within the `label` element.
|
|
|
178
213
|
<Canvas>
|
|
179
214
|
<DSProvider>
|
|
180
215
|
<Select
|
|
181
|
-
labelText="What is your favorite color?"
|
|
182
216
|
helperText="This is the helper text."
|
|
183
217
|
invalidText="This is the error text :("
|
|
184
|
-
name="color"
|
|
185
218
|
isDisabled
|
|
219
|
+
labelText="What is your favorite color?"
|
|
220
|
+
name="color"
|
|
186
221
|
>
|
|
187
222
|
<option value="red">Red</option>
|
|
188
223
|
<option value="green">Green</option>
|
|
@@ -198,57 +233,133 @@ text within the `label` element.
|
|
|
198
233
|
### Controlled Component using `value` and `onChange` props
|
|
199
234
|
|
|
200
235
|
If your application uses controlled React components and the DS `Select`
|
|
201
|
-
component must be controlled, you can
|
|
236
|
+
component must be controlled, you can pass and extract the value through the
|
|
202
237
|
`value` and `onChange` props. This will be called every time a new `option`
|
|
203
238
|
value is selected.
|
|
204
239
|
|
|
240
|
+
Try it out: open up the browser's console to see new values being logged on
|
|
241
|
+
each change.
|
|
242
|
+
|
|
205
243
|
```jsx
|
|
206
|
-
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
</
|
|
244
|
+
export function SelectControlledExample() {
|
|
245
|
+
const [value, setValue] = React.useState();
|
|
246
|
+
const onChange = (e) => {
|
|
247
|
+
// This will return the value selected through the event object.
|
|
248
|
+
console.log(e.target.value);
|
|
249
|
+
setValue(e.target.value);
|
|
250
|
+
};
|
|
251
|
+
return (
|
|
252
|
+
<Select
|
|
253
|
+
helperText="This is the helper text."
|
|
254
|
+
labelText="What is your favorite color?"
|
|
255
|
+
name="color"
|
|
256
|
+
onChange={onChange}
|
|
257
|
+
value={value}
|
|
258
|
+
>
|
|
259
|
+
<option value="red">Red</option>
|
|
260
|
+
<option value="green">Green</option>
|
|
261
|
+
<option value="blue">Blue</option>
|
|
262
|
+
<option value="black">Black</option>
|
|
263
|
+
<option value="white">White</option>
|
|
264
|
+
</Select>
|
|
265
|
+
);
|
|
266
|
+
}
|
|
226
267
|
```
|
|
227
268
|
|
|
269
|
+
export function SelectControlledExample() {
|
|
270
|
+
const [value, setValue] = React.useState();
|
|
271
|
+
const onChange = (e) => {
|
|
272
|
+
// This will return the value selected through the event object.
|
|
273
|
+
console.log("Controlled value:", e.target.value);
|
|
274
|
+
setValue(e.target.value);
|
|
275
|
+
};
|
|
276
|
+
return (
|
|
277
|
+
<Select
|
|
278
|
+
helperText="This is the helper text."
|
|
279
|
+
labelText="What is your favorite color?"
|
|
280
|
+
name="color"
|
|
281
|
+
onChange={onChange}
|
|
282
|
+
value={value}
|
|
283
|
+
>
|
|
284
|
+
<option value="red">Red</option>
|
|
285
|
+
<option value="green">Green</option>
|
|
286
|
+
<option value="blue">Blue</option>
|
|
287
|
+
<option value="black">Black</option>
|
|
288
|
+
<option value="white">White</option>
|
|
289
|
+
</Select>
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
<Canvas>
|
|
294
|
+
<DSProvider>
|
|
295
|
+
<SelectControlledExample />
|
|
296
|
+
</DSProvider>
|
|
297
|
+
</Canvas>
|
|
298
|
+
|
|
228
299
|
### Uncontrolled Component using `ref`s
|
|
229
300
|
|
|
230
301
|
If your application uses uncontrolled components, you can pass a React `ref`
|
|
231
|
-
prop to the DS Select component to get the selected value from the DOM.
|
|
302
|
+
prop to the DS Select component to get the selected value from the DOM. Note
|
|
303
|
+
that this example uses a `Form` and a `Button` to submit the form, only then
|
|
304
|
+
will the value be available.
|
|
232
305
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
// ...
|
|
236
|
-
<Select
|
|
237
|
-
labelText="What is your favorite color?"
|
|
238
|
-
helperText="This is the helper text."
|
|
239
|
-
name="color"
|
|
240
|
-
>
|
|
241
|
-
<option value="red">Red</option>
|
|
242
|
-
<option value="green">Green</option>
|
|
243
|
-
<option value="blue">Blue</option>
|
|
244
|
-
<option value="black">Black</option>
|
|
245
|
-
<option value="white">White</option>
|
|
246
|
-
</Select>
|
|
306
|
+
Try it out: open up the browser's console to see new values being logged on
|
|
307
|
+
each change.
|
|
247
308
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
309
|
+
```jsx
|
|
310
|
+
export function SelectUncontrolledExample() {
|
|
311
|
+
const selectRef = React.createRef();
|
|
312
|
+
const onSubmit = () => {
|
|
313
|
+
const selectValue = selectRef.current.value;
|
|
314
|
+
console.log("Using uncontrolled ref:", selectValue);
|
|
315
|
+
};
|
|
316
|
+
return (
|
|
317
|
+
<Form>
|
|
318
|
+
<Select
|
|
319
|
+
helperText="This is the helper text."
|
|
320
|
+
labelText="What is your favorite color?"
|
|
321
|
+
name="color"
|
|
322
|
+
ref={selectRef}
|
|
323
|
+
>
|
|
324
|
+
<option value="red">Red</option>
|
|
325
|
+
<option value="green">Green</option>
|
|
326
|
+
<option value="blue">Blue</option>
|
|
327
|
+
<option value="black">Black</option>
|
|
328
|
+
<option value="white">White</option>
|
|
329
|
+
</Select>
|
|
330
|
+
<Button onClick={onSubmit}>Submit</Button>
|
|
331
|
+
</Form>
|
|
332
|
+
);
|
|
333
|
+
}
|
|
254
334
|
```
|
|
335
|
+
|
|
336
|
+
export function SelectUncontrolledExample() {
|
|
337
|
+
const selectRef = React.createRef();
|
|
338
|
+
const onSubmit = () => {
|
|
339
|
+
const selectValue = selectRef.current.value;
|
|
340
|
+
console.log("Using uncontrolled ref:", selectValue);
|
|
341
|
+
};
|
|
342
|
+
return (
|
|
343
|
+
<Form>
|
|
344
|
+
<Select
|
|
345
|
+
helperText="This is the helper text."
|
|
346
|
+
labelText="What is your favorite color?"
|
|
347
|
+
name="color"
|
|
348
|
+
ref={selectRef}
|
|
349
|
+
>
|
|
350
|
+
<option value="red">Red</option>
|
|
351
|
+
<option value="green">Green</option>
|
|
352
|
+
<option value="blue">Blue</option>
|
|
353
|
+
<option value="black">Black</option>
|
|
354
|
+
<option value="white">White</option>
|
|
355
|
+
</Select>
|
|
356
|
+
<Button onClick={onSubmit}>Submit</Button>
|
|
357
|
+
</Form>
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
<Canvas>
|
|
362
|
+
<DSProvider>
|
|
363
|
+
<SelectUncontrolledExample />
|
|
364
|
+
</DSProvider>
|
|
365
|
+
</Canvas>
|
|
@@ -198,7 +198,7 @@ describe("Select", () => {
|
|
|
198
198
|
});
|
|
199
199
|
|
|
200
200
|
it("calls the onChange callback function", () => {
|
|
201
|
-
let value = "
|
|
201
|
+
let value = "";
|
|
202
202
|
const changeCallback = (e) => {
|
|
203
203
|
value = e.target.value;
|
|
204
204
|
};
|
|
@@ -208,7 +208,7 @@ describe("Select", () => {
|
|
|
208
208
|
</Select>
|
|
209
209
|
);
|
|
210
210
|
|
|
211
|
-
expect(value).toEqual("
|
|
211
|
+
expect(value).toEqual("");
|
|
212
212
|
|
|
213
213
|
fireEvent.change(screen.getByRole("combobox"), {
|
|
214
214
|
target: { value: "blue" },
|
|
@@ -5,23 +5,25 @@ import {
|
|
|
5
5
|
useMultiStyleConfig,
|
|
6
6
|
} from "@chakra-ui/react";
|
|
7
7
|
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { IconNames, IconSizes } from "../Icons/IconTypes";
|
|
8
|
+
import HelperErrorText, {
|
|
9
|
+
HelperErrorTextType,
|
|
10
|
+
} from "../HelperErrorText/HelperErrorText";
|
|
12
11
|
import Icon from "../Icons/Icon";
|
|
12
|
+
import { IconNames, IconSizes } from "../Icons/IconTypes";
|
|
13
|
+
import Label from "../Label/Label";
|
|
13
14
|
import { SelectTypes } from "./SelectTypes";
|
|
15
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
14
16
|
|
|
15
17
|
export interface SelectProps {
|
|
16
18
|
/** A class name for the `div` parent element. */
|
|
17
19
|
className?: string;
|
|
18
20
|
/** Optional string to populate the `HelperErrorText` for the standard state. */
|
|
19
|
-
helperText?:
|
|
21
|
+
helperText?: HelperErrorTextType;
|
|
20
22
|
/** ID that other components can cross reference for accessibility purposes */
|
|
21
23
|
id?: string;
|
|
22
24
|
/** Optional string to populate the `HelperErrorText` for the error state
|
|
23
25
|
* when `isInvalid` is true. */
|
|
24
|
-
invalidText?:
|
|
26
|
+
invalidText?: HelperErrorTextType;
|
|
25
27
|
/** Adds the `disabled` and `aria-disabled` attributes to the select when true */
|
|
26
28
|
isDisabled?: boolean;
|
|
27
29
|
/** Adds the `aria-invalid` attribute to the select when true. This also makes
|
|
@@ -38,6 +40,8 @@ export interface SelectProps {
|
|
|
38
40
|
/** The callback function to get the selected value.
|
|
39
41
|
* Should be passed along with `value` for controlled components. */
|
|
40
42
|
onChange?: (event: React.FormEvent) => void;
|
|
43
|
+
/** Placeholder text in the select element. */
|
|
44
|
+
placeholder?: string;
|
|
41
45
|
/** Offers the ability to hide the helper/invalid text. */
|
|
42
46
|
showHelperInvalidText?: boolean;
|
|
43
47
|
/** Offers the ability to show the select's label onscreen or hide it. Refer
|
|
@@ -72,11 +76,12 @@ const Select = React.forwardRef<
|
|
|
72
76
|
labelText,
|
|
73
77
|
name,
|
|
74
78
|
onChange,
|
|
79
|
+
placeholder,
|
|
75
80
|
showHelperInvalidText = true,
|
|
76
81
|
showLabel = true,
|
|
77
82
|
showOptReqLabel = true,
|
|
78
83
|
type = SelectTypes.Default,
|
|
79
|
-
value,
|
|
84
|
+
value = "",
|
|
80
85
|
} = props;
|
|
81
86
|
const ariaAttributes = {};
|
|
82
87
|
const optReqFlag = isRequired ? "Required" : "Optional";
|
|
@@ -84,10 +89,12 @@ const Select = React.forwardRef<
|
|
|
84
89
|
const finalInvalidText = invalidText
|
|
85
90
|
? invalidText
|
|
86
91
|
: "There is an error related to this field.";
|
|
87
|
-
const footnote = isInvalid
|
|
92
|
+
const footnote: HelperErrorTextType = isInvalid
|
|
93
|
+
? finalInvalidText
|
|
94
|
+
: helperText;
|
|
88
95
|
// To control the `Select` component, both `onChange` and `value`
|
|
89
96
|
// must be passed.
|
|
90
|
-
const controlledProps = onChange
|
|
97
|
+
const controlledProps = onChange ? { onChange, value } : {};
|
|
91
98
|
|
|
92
99
|
if (!showLabel) {
|
|
93
100
|
ariaAttributes["aria-label"] =
|
|
@@ -126,6 +133,7 @@ const Select = React.forwardRef<
|
|
|
126
133
|
isDisabled={isDisabled}
|
|
127
134
|
isInvalid={isInvalid}
|
|
128
135
|
name={name}
|
|
136
|
+
placeholder={placeholder}
|
|
129
137
|
ref={ref}
|
|
130
138
|
{...controlledProps}
|
|
131
139
|
{...ariaAttributes}
|
|
@@ -136,9 +144,11 @@ const Select = React.forwardRef<
|
|
|
136
144
|
</ChakraSelect>
|
|
137
145
|
{footnote && showHelperInvalidText && (
|
|
138
146
|
<Box __css={styles.helper} aria-disabled={isDisabled}>
|
|
139
|
-
<HelperErrorText
|
|
140
|
-
{
|
|
141
|
-
|
|
147
|
+
<HelperErrorText
|
|
148
|
+
id={`${id}-helperText`}
|
|
149
|
+
isInvalid={isInvalid}
|
|
150
|
+
text={footnote}
|
|
151
|
+
/>
|
|
142
152
|
</Box>
|
|
143
153
|
)}
|
|
144
154
|
</Box>
|
|
@@ -1,20 +1,30 @@
|
|
|
1
|
+
import { action } from "@storybook/addon-actions";
|
|
1
2
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
3
|
ArgsTable,
|
|
4
|
+
Canvas,
|
|
6
5
|
Description,
|
|
7
|
-
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
8
9
|
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
import { action } from "@storybook/addon-actions";
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import SimpleGrid from "../Grid/SimpleGrid";
|
|
12
12
|
import SkeletonLoader from "./SkeletonLoader";
|
|
13
13
|
import {
|
|
14
|
-
SkeletonLoaderLayouts,
|
|
15
14
|
SkeletonLoaderImageRatios,
|
|
15
|
+
SkeletonLoaderLayouts,
|
|
16
16
|
} from "./SkeletonLoaderTypes";
|
|
17
|
-
import
|
|
17
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
18
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
19
|
+
|
|
20
|
+
export const imageRatiosEnumValues = getStorybookEnumValues(
|
|
21
|
+
SkeletonLoaderImageRatios,
|
|
22
|
+
"SkeletonLoaderImageRatios"
|
|
23
|
+
);
|
|
24
|
+
export const layoutsEnumValues = getStorybookEnumValues(
|
|
25
|
+
SkeletonLoaderLayouts,
|
|
26
|
+
"SkeletonLoaderLayouts"
|
|
27
|
+
);
|
|
18
28
|
|
|
19
29
|
<Meta
|
|
20
30
|
title={getCategory("SkeletonLoader")}
|
|
@@ -23,17 +33,25 @@ import SimpleGrid from "../Grid/SimpleGrid";
|
|
|
23
33
|
parameters={{
|
|
24
34
|
design: {
|
|
25
35
|
type: "figma",
|
|
26
|
-
url:
|
|
27
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17219%3A7",
|
|
36
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17219%3A7",
|
|
28
37
|
},
|
|
29
38
|
jest: ["SkeletonLoader.test.tsx"],
|
|
30
39
|
}}
|
|
31
40
|
argTypes={{
|
|
32
|
-
className: {
|
|
41
|
+
className: { control: false },
|
|
33
42
|
contentSize: { table: { defaultValue: { summary: "3" } } },
|
|
34
43
|
headingSize: { table: { defaultValue: { summary: "1" } } },
|
|
35
|
-
imageAspectRatio: {
|
|
36
|
-
|
|
44
|
+
imageAspectRatio: {
|
|
45
|
+
control: { type: "select" },
|
|
46
|
+
table: {
|
|
47
|
+
defaultValue: { summary: "SkeletonLoaderImageRatios.Square" },
|
|
48
|
+
},
|
|
49
|
+
options: imageRatiosEnumValues.options,
|
|
50
|
+
},
|
|
51
|
+
layout: {
|
|
52
|
+
table: { defaultValue: { summary: "SkeletonLoaderLayouts.Column" } },
|
|
53
|
+
options: layoutsEnumValues.options,
|
|
54
|
+
},
|
|
37
55
|
showButton: { table: { defaultValue: { summary: "false" } } },
|
|
38
56
|
showContent: { table: { defaultValue: { summary: "true" } } },
|
|
39
57
|
showHeading: { table: { defaultValue: { summary: "true" } } },
|
|
@@ -58,16 +76,32 @@ to better view the example. The default value is `100%`.
|
|
|
58
76
|
|
|
59
77
|
<Canvas withToolbar>
|
|
60
78
|
<Story
|
|
61
|
-
name="
|
|
79
|
+
name="SkeletonLoader with Controls"
|
|
62
80
|
args={{
|
|
81
|
+
border: false,
|
|
82
|
+
className: undefined,
|
|
83
|
+
contentSize: 3,
|
|
84
|
+
headingSize: 1,
|
|
85
|
+
imageAspectRatio: "SkeletonLoaderImageRatios.Square",
|
|
86
|
+
layout: "SkeletonLoaderLayouts.Column",
|
|
87
|
+
showButton: false,
|
|
88
|
+
showContent: true,
|
|
89
|
+
showHeading: true,
|
|
90
|
+
showImage: true,
|
|
63
91
|
width: "300px",
|
|
64
92
|
}}
|
|
65
93
|
>
|
|
66
|
-
{(args) =>
|
|
94
|
+
{(args) => (
|
|
95
|
+
<SkeletonLoader
|
|
96
|
+
{...args}
|
|
97
|
+
imageAspectRatio={imageRatiosEnumValues.getValue(args.imageAspectRatio)}
|
|
98
|
+
layout={layoutsEnumValues.getValue(args.layout)}
|
|
99
|
+
/>
|
|
100
|
+
)}
|
|
67
101
|
</Story>
|
|
68
102
|
</Canvas>
|
|
69
103
|
|
|
70
|
-
<ArgsTable story="
|
|
104
|
+
<ArgsTable story="SkeletonLoader with Controls" />
|
|
71
105
|
|
|
72
106
|
# Card Placeholders in a Grid
|
|
73
107
|
|
|
@@ -15,13 +15,17 @@ export interface SkeletonLoaderProps {
|
|
|
15
15
|
border?: boolean;
|
|
16
16
|
/** Additional class name for the Skeleton component. */
|
|
17
17
|
className?: string;
|
|
18
|
-
/** Optional numeric value to control the number of lines for content
|
|
18
|
+
/** Optional numeric value to control the number of lines for content
|
|
19
|
+
* placeholder; default value is `3`. */
|
|
19
20
|
contentSize?: number;
|
|
20
|
-
/** Optional numeric value to control the number of lines for heading
|
|
21
|
+
/** Optional numeric value to control the number of lines for heading
|
|
22
|
+
* placeholder; default value is `1`. */
|
|
21
23
|
headingSize?: number;
|
|
22
|
-
/** Optional value to control the aspect ratio of the image placeholder;
|
|
24
|
+
/** Optional value to control the aspect ratio of the image placeholder;
|
|
25
|
+
* default value is `SkeletonLoaderImageRatios.Square`. */
|
|
23
26
|
imageAspectRatio?: SkeletonLoaderImageRatios;
|
|
24
|
-
/** Optional value to control the position of the image placeholder;
|
|
27
|
+
/** Optional value to control the position of the image placeholder;
|
|
28
|
+
* default value is `SkeletonLoaderLayouts.Column`. */
|
|
25
29
|
layout?: SkeletonLoaderLayouts;
|
|
26
30
|
/** Optional boolean value to control visibility of button placeholder. */
|
|
27
31
|
showButton?: boolean;
|