@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
|
@@ -4,7 +4,7 @@ import { axe } from "jest-axe";
|
|
|
4
4
|
import userEvent from "@testing-library/user-event";
|
|
5
5
|
import renderer from "react-test-renderer";
|
|
6
6
|
|
|
7
|
-
import SearchBar from "./SearchBar";
|
|
7
|
+
import SearchBar, { SelectProps, TextInputProps } from "./SearchBar";
|
|
8
8
|
|
|
9
9
|
const optionsGroup = [
|
|
10
10
|
"Art",
|
|
@@ -18,27 +18,42 @@ const optionsGroup = [
|
|
|
18
18
|
"Tools",
|
|
19
19
|
"Villagers",
|
|
20
20
|
];
|
|
21
|
-
const selectProps = {
|
|
21
|
+
const selectProps: SelectProps = {
|
|
22
22
|
name: "selectName",
|
|
23
23
|
labelText: "Select a category",
|
|
24
24
|
optionsData: optionsGroup,
|
|
25
25
|
};
|
|
26
|
-
const textInputProps = {
|
|
26
|
+
const textInputProps: TextInputProps = {
|
|
27
27
|
labelText: "Item Search",
|
|
28
28
|
name: "textInputName",
|
|
29
29
|
placeholder: "Item Search",
|
|
30
30
|
};
|
|
31
|
-
const
|
|
31
|
+
const labelText = "SearchBar label";
|
|
32
|
+
const helperText = "Search for items in Animal Crossing New Horizons";
|
|
32
33
|
const invalidText = "Could not find the item :(";
|
|
33
34
|
|
|
34
35
|
describe("SearchBar Accessibility", () => {
|
|
35
36
|
it("passes axe accessibility test", async () => {
|
|
36
37
|
const { container } = render(
|
|
37
38
|
<SearchBar
|
|
38
|
-
|
|
39
|
+
helperText={helperText}
|
|
39
40
|
id="id"
|
|
40
41
|
invalidText={invalidText}
|
|
41
|
-
labelText=
|
|
42
|
+
labelText={labelText}
|
|
43
|
+
onSubmit={jest.fn()}
|
|
44
|
+
textInputProps={textInputProps}
|
|
45
|
+
/>
|
|
46
|
+
);
|
|
47
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("passes axe accessibility test with a Select component", async () => {
|
|
51
|
+
const { container } = render(
|
|
52
|
+
<SearchBar
|
|
53
|
+
helperText={helperText}
|
|
54
|
+
id="id"
|
|
55
|
+
invalidText={invalidText}
|
|
56
|
+
labelText={labelText}
|
|
42
57
|
onSubmit={jest.fn()}
|
|
43
58
|
selectProps={selectProps}
|
|
44
59
|
textInputProps={textInputProps}
|
|
@@ -52,12 +67,16 @@ describe("SearchBar", () => {
|
|
|
52
67
|
const searchBarSubmit = jest.fn();
|
|
53
68
|
const buttonCallback = jest.fn();
|
|
54
69
|
|
|
70
|
+
beforeEach(() => {
|
|
71
|
+
jest.clearAllMocks();
|
|
72
|
+
});
|
|
73
|
+
|
|
55
74
|
it("renders the basic form", () => {
|
|
56
75
|
render(
|
|
57
76
|
<SearchBar
|
|
58
|
-
|
|
77
|
+
helperText={helperText}
|
|
59
78
|
id="id"
|
|
60
|
-
labelText=
|
|
79
|
+
labelText={labelText}
|
|
61
80
|
onSubmit={searchBarSubmit}
|
|
62
81
|
textInputProps={textInputProps}
|
|
63
82
|
/>
|
|
@@ -65,7 +84,7 @@ describe("SearchBar", () => {
|
|
|
65
84
|
expect(screen.getByRole("search")).toBeInTheDocument();
|
|
66
85
|
expect(screen.getByRole("search")).toHaveAttribute(
|
|
67
86
|
"aria-label",
|
|
68
|
-
|
|
87
|
+
`${labelText} - ${helperText}`
|
|
69
88
|
);
|
|
70
89
|
expect(screen.getByPlaceholderText("Item Search")).toBeInTheDocument();
|
|
71
90
|
expect(screen.getByRole("button")).toBeInTheDocument();
|
|
@@ -74,9 +93,9 @@ describe("SearchBar", () => {
|
|
|
74
93
|
it("renders an optional Select component", () => {
|
|
75
94
|
render(
|
|
76
95
|
<SearchBar
|
|
77
|
-
|
|
96
|
+
helperText={helperText}
|
|
78
97
|
id="id"
|
|
79
|
-
labelText=
|
|
98
|
+
labelText={labelText}
|
|
80
99
|
onSubmit={searchBarSubmit}
|
|
81
100
|
selectProps={selectProps}
|
|
82
101
|
textInputProps={textInputProps}
|
|
@@ -89,28 +108,28 @@ describe("SearchBar", () => {
|
|
|
89
108
|
it("renders the invalid text in the invalid state", () => {
|
|
90
109
|
render(
|
|
91
110
|
<SearchBar
|
|
92
|
-
|
|
111
|
+
helperText={helperText}
|
|
93
112
|
id="id"
|
|
94
113
|
invalidText={invalidText}
|
|
95
114
|
isInvalid
|
|
96
|
-
labelText=
|
|
115
|
+
labelText={labelText}
|
|
97
116
|
onSubmit={searchBarSubmit}
|
|
98
117
|
selectProps={selectProps}
|
|
99
118
|
textInputProps={textInputProps}
|
|
100
119
|
/>
|
|
101
120
|
);
|
|
102
121
|
expect(screen.getByText(invalidText)).toBeInTheDocument();
|
|
103
|
-
expect(screen.queryByText(
|
|
122
|
+
expect(screen.queryByText(helperText)).not.toBeInTheDocument();
|
|
104
123
|
});
|
|
105
124
|
|
|
106
125
|
it("does not render the default invalid text from the Select or TextInput components", () => {
|
|
107
126
|
render(
|
|
108
127
|
<SearchBar
|
|
109
|
-
|
|
128
|
+
helperText={helperText}
|
|
110
129
|
id="id"
|
|
111
130
|
invalidText={invalidText}
|
|
112
131
|
isInvalid
|
|
113
|
-
labelText=
|
|
132
|
+
labelText={labelText}
|
|
114
133
|
onSubmit={searchBarSubmit}
|
|
115
134
|
selectProps={selectProps}
|
|
116
135
|
textInputProps={textInputProps}
|
|
@@ -121,38 +140,96 @@ describe("SearchBar", () => {
|
|
|
121
140
|
).not.toBeInTheDocument();
|
|
122
141
|
});
|
|
123
142
|
|
|
143
|
+
it("calls the TextInput onChange callback function", () => {
|
|
144
|
+
textInputProps.onChange = jest.fn();
|
|
145
|
+
|
|
146
|
+
render(
|
|
147
|
+
<SearchBar
|
|
148
|
+
helperText={helperText}
|
|
149
|
+
id="id"
|
|
150
|
+
labelText={labelText}
|
|
151
|
+
onSubmit={searchBarSubmit}
|
|
152
|
+
textInputProps={textInputProps}
|
|
153
|
+
/>
|
|
154
|
+
);
|
|
155
|
+
const input = screen.getByLabelText(textInputProps.labelText);
|
|
156
|
+
expect(textInputProps.onChange).toHaveBeenCalledTimes(0);
|
|
157
|
+
|
|
158
|
+
userEvent.type(input, "search!");
|
|
159
|
+
|
|
160
|
+
// Seven times for every letter in the search string
|
|
161
|
+
expect(textInputProps.onChange).toHaveBeenCalledTimes(7);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it("calls the Select onChange callback function", () => {
|
|
165
|
+
selectProps.onChange = jest.fn();
|
|
166
|
+
|
|
167
|
+
render(
|
|
168
|
+
<SearchBar
|
|
169
|
+
helperText={helperText}
|
|
170
|
+
id="id"
|
|
171
|
+
labelText={labelText}
|
|
172
|
+
onSubmit={searchBarSubmit}
|
|
173
|
+
selectProps={selectProps}
|
|
174
|
+
textInputProps={textInputProps}
|
|
175
|
+
/>
|
|
176
|
+
);
|
|
177
|
+
const select = screen.getByLabelText(selectProps.labelText);
|
|
178
|
+
expect(selectProps.onChange).toHaveBeenCalledTimes(0);
|
|
179
|
+
|
|
180
|
+
userEvent.selectOptions(select, "Flowers");
|
|
181
|
+
expect(selectProps.onChange).toHaveBeenCalledTimes(1);
|
|
182
|
+
|
|
183
|
+
userEvent.selectOptions(select, "Furniture");
|
|
184
|
+
expect(selectProps.onChange).toHaveBeenCalledTimes(2);
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
it("calls the callback function for the Button component ", () => {
|
|
188
|
+
render(
|
|
189
|
+
<SearchBar
|
|
190
|
+
buttonOnClick={buttonCallback}
|
|
191
|
+
helperText={helperText}
|
|
192
|
+
id="id"
|
|
193
|
+
labelText={labelText}
|
|
194
|
+
onSubmit={searchBarSubmit}
|
|
195
|
+
selectProps={selectProps}
|
|
196
|
+
textInputProps={textInputProps}
|
|
197
|
+
/>
|
|
198
|
+
);
|
|
199
|
+
expect(buttonCallback).toHaveBeenCalledTimes(0);
|
|
200
|
+
userEvent.click(screen.getByRole("button"));
|
|
201
|
+
expect(buttonCallback).toHaveBeenCalledTimes(1);
|
|
202
|
+
});
|
|
203
|
+
|
|
124
204
|
it("calls the callback function on submit ", () => {
|
|
125
205
|
render(
|
|
126
206
|
<SearchBar
|
|
127
|
-
|
|
207
|
+
helperText={helperText}
|
|
128
208
|
id="id"
|
|
129
|
-
labelText=
|
|
209
|
+
labelText={labelText}
|
|
130
210
|
onSubmit={searchBarSubmit}
|
|
131
211
|
selectProps={selectProps}
|
|
132
212
|
textInputProps={textInputProps}
|
|
133
213
|
/>
|
|
134
214
|
);
|
|
135
215
|
expect(searchBarSubmit).toHaveBeenCalledTimes(0);
|
|
136
|
-
expect(buttonCallback).toHaveBeenCalledTimes(0);
|
|
137
216
|
userEvent.click(screen.getByRole("button"));
|
|
138
217
|
expect(searchBarSubmit).toHaveBeenCalledTimes(1);
|
|
139
|
-
expect(buttonCallback).toHaveBeenCalledTimes(1);
|
|
140
218
|
});
|
|
141
219
|
|
|
142
|
-
it("
|
|
220
|
+
it("renders 'required' in the placeholder text", () => {
|
|
143
221
|
const { rerender } = render(
|
|
144
222
|
<SearchBar
|
|
145
223
|
id="requiredState"
|
|
146
224
|
isDisabled
|
|
147
|
-
|
|
148
|
-
labelText="searchbar"
|
|
225
|
+
labelText={labelText}
|
|
149
226
|
onSubmit={jest.fn()}
|
|
150
227
|
textInputProps={textInputProps}
|
|
151
228
|
/>
|
|
152
229
|
);
|
|
153
230
|
|
|
154
231
|
expect(
|
|
155
|
-
screen.
|
|
232
|
+
screen.queryByPlaceholderText("Item Search (Required)")
|
|
156
233
|
).not.toBeInTheDocument();
|
|
157
234
|
|
|
158
235
|
rerender(
|
|
@@ -160,7 +237,7 @@ describe("SearchBar", () => {
|
|
|
160
237
|
id="requiredState"
|
|
161
238
|
isDisabled
|
|
162
239
|
isRequired
|
|
163
|
-
labelText=
|
|
240
|
+
labelText={labelText}
|
|
164
241
|
onSubmit={jest.fn()}
|
|
165
242
|
textInputProps={textInputProps}
|
|
166
243
|
/>
|
|
@@ -170,13 +247,14 @@ describe("SearchBar", () => {
|
|
|
170
247
|
).toBeInTheDocument();
|
|
171
248
|
});
|
|
172
249
|
|
|
173
|
-
|
|
250
|
+
// TODO: Fix the `Select` component before enabling this test
|
|
251
|
+
it.skip("renders the UI snapshot correctly", () => {
|
|
174
252
|
const basic = renderer
|
|
175
253
|
.create(
|
|
176
254
|
<SearchBar
|
|
177
|
-
|
|
255
|
+
helperText={helperText}
|
|
178
256
|
id="basic"
|
|
179
|
-
labelText=
|
|
257
|
+
labelText={labelText}
|
|
180
258
|
onSubmit={jest.fn()}
|
|
181
259
|
textInputProps={textInputProps}
|
|
182
260
|
/>
|
|
@@ -185,9 +263,9 @@ describe("SearchBar", () => {
|
|
|
185
263
|
const withSelect = renderer
|
|
186
264
|
.create(
|
|
187
265
|
<SearchBar
|
|
188
|
-
|
|
266
|
+
helperText={helperText}
|
|
189
267
|
id="withSelect"
|
|
190
|
-
labelText=
|
|
268
|
+
labelText={labelText}
|
|
191
269
|
onSubmit={jest.fn()}
|
|
192
270
|
selectProps={selectProps}
|
|
193
271
|
textInputProps={textInputProps}
|
|
@@ -198,7 +276,7 @@ describe("SearchBar", () => {
|
|
|
198
276
|
.create(
|
|
199
277
|
<SearchBar
|
|
200
278
|
id="withoutHelperText"
|
|
201
|
-
labelText=
|
|
279
|
+
labelText={labelText}
|
|
202
280
|
onSubmit={jest.fn()}
|
|
203
281
|
textInputProps={textInputProps}
|
|
204
282
|
/>
|
|
@@ -209,7 +287,7 @@ describe("SearchBar", () => {
|
|
|
209
287
|
<SearchBar
|
|
210
288
|
id="invalidState"
|
|
211
289
|
isInvalid
|
|
212
|
-
labelText=
|
|
290
|
+
labelText={labelText}
|
|
213
291
|
onSubmit={jest.fn()}
|
|
214
292
|
textInputProps={textInputProps}
|
|
215
293
|
/>
|
|
@@ -220,7 +298,7 @@ describe("SearchBar", () => {
|
|
|
220
298
|
<SearchBar
|
|
221
299
|
id="disabledState"
|
|
222
300
|
isDisabled
|
|
223
|
-
labelText=
|
|
301
|
+
labelText={labelText}
|
|
224
302
|
onSubmit={jest.fn()}
|
|
225
303
|
textInputProps={textInputProps}
|
|
226
304
|
/>
|
|
@@ -232,12 +310,56 @@ describe("SearchBar", () => {
|
|
|
232
310
|
id="requiredState"
|
|
233
311
|
isDisabled
|
|
234
312
|
isRequired
|
|
235
|
-
labelText=
|
|
313
|
+
labelText={labelText}
|
|
236
314
|
onSubmit={jest.fn()}
|
|
237
315
|
textInputProps={textInputProps}
|
|
238
316
|
/>
|
|
239
317
|
)
|
|
240
318
|
.toJSON();
|
|
319
|
+
const noBrandButtonType = renderer
|
|
320
|
+
.create(
|
|
321
|
+
<SearchBar
|
|
322
|
+
id="noBrandButtonType"
|
|
323
|
+
isDisabled
|
|
324
|
+
isRequired
|
|
325
|
+
labelText={labelText}
|
|
326
|
+
noBrandButtonType={true}
|
|
327
|
+
onSubmit={jest.fn()}
|
|
328
|
+
textInputProps={textInputProps}
|
|
329
|
+
/>
|
|
330
|
+
)
|
|
331
|
+
.toJSON();
|
|
332
|
+
const withHeading = renderer
|
|
333
|
+
.create(
|
|
334
|
+
<SearchBar
|
|
335
|
+
id="withHeading"
|
|
336
|
+
labelText={labelText}
|
|
337
|
+
onSubmit={jest.fn()}
|
|
338
|
+
headingText="A Heading"
|
|
339
|
+
/>
|
|
340
|
+
)
|
|
341
|
+
.toJSON();
|
|
342
|
+
const withDescription = renderer
|
|
343
|
+
.create(
|
|
344
|
+
<SearchBar
|
|
345
|
+
id="withDescription"
|
|
346
|
+
labelText={labelText}
|
|
347
|
+
onSubmit={jest.fn()}
|
|
348
|
+
descriptionText="A description"
|
|
349
|
+
/>
|
|
350
|
+
)
|
|
351
|
+
.toJSON();
|
|
352
|
+
const withHeadingAndDescription = renderer
|
|
353
|
+
.create(
|
|
354
|
+
<SearchBar
|
|
355
|
+
id="withHeadingAndDescription"
|
|
356
|
+
labelText={labelText}
|
|
357
|
+
onSubmit={jest.fn()}
|
|
358
|
+
headingText="A Heading"
|
|
359
|
+
descriptionText="A description"
|
|
360
|
+
/>
|
|
361
|
+
)
|
|
362
|
+
.toJSON();
|
|
241
363
|
|
|
242
364
|
expect(basic).toMatchSnapshot();
|
|
243
365
|
expect(withSelect).toMatchSnapshot();
|
|
@@ -245,5 +367,9 @@ describe("SearchBar", () => {
|
|
|
245
367
|
expect(invalidState).toMatchSnapshot();
|
|
246
368
|
expect(disabledState).toMatchSnapshot();
|
|
247
369
|
expect(requiredState).toMatchSnapshot();
|
|
370
|
+
expect(noBrandButtonType).toMatchSnapshot();
|
|
371
|
+
expect(withHeading).toMatchSnapshot();
|
|
372
|
+
expect(withDescription).toMatchSnapshot();
|
|
373
|
+
expect(withHeadingAndDescription).toMatchSnapshot();
|
|
248
374
|
});
|
|
249
375
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
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
|
|
|
10
10
|
import SearchBar from "./SearchBar";
|
|
@@ -24,16 +24,34 @@ import DSProvider from "../../theme/provider";
|
|
|
24
24
|
jest: ["SearchBar.test.tsx"],
|
|
25
25
|
}}
|
|
26
26
|
argTypes={{
|
|
27
|
-
action: {
|
|
28
|
-
ariaLabel: {
|
|
29
|
-
buttonOnClick: {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
action: { control: false },
|
|
28
|
+
ariaLabel: { control: false },
|
|
29
|
+
buttonOnClick: {
|
|
30
|
+
control: false,
|
|
31
|
+
table: { defaultValue: { summary: "null" } },
|
|
32
|
+
},
|
|
33
|
+
className: { control: false },
|
|
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
|
+
method: { control: false },
|
|
45
|
+
onSubmit: { control: false },
|
|
46
|
+
selectProps: { control: false },
|
|
47
|
+
showHelperText: {
|
|
48
|
+
description: "Only used for Storybook",
|
|
49
|
+
},
|
|
50
|
+
showSelect: {
|
|
51
|
+
description: "Only used for Storybook",
|
|
52
|
+
},
|
|
53
|
+
textInputElement: { control: false },
|
|
54
|
+
textInputProps: { control: false },
|
|
37
55
|
}}
|
|
38
56
|
/>
|
|
39
57
|
|
|
@@ -42,7 +60,7 @@ import DSProvider from "../../theme/provider";
|
|
|
42
60
|
| Component Version | DS Version |
|
|
43
61
|
| ----------------- | ---------- |
|
|
44
62
|
| Added | `0.0.4` |
|
|
45
|
-
| Latest | `0.25.
|
|
63
|
+
| Latest | `0.25.10` |
|
|
46
64
|
|
|
47
65
|
<Description of={SearchBar} />
|
|
48
66
|
|
|
@@ -73,20 +91,30 @@ export const optionsGroup = [
|
|
|
73
91
|
|
|
74
92
|
<Canvas withToolbar>
|
|
75
93
|
<Story
|
|
76
|
-
name="
|
|
94
|
+
name="SearchBar with Controls"
|
|
77
95
|
args={{
|
|
78
|
-
|
|
96
|
+
action: undefined,
|
|
97
|
+
buttonOnClick: undefined,
|
|
98
|
+
className: undefined,
|
|
99
|
+
helperText: "Search for items in Animal Crossing New Horizons",
|
|
100
|
+
id: "searchBar-id",
|
|
79
101
|
invalidText: "Could not find the item :(",
|
|
80
102
|
isDisabled: false,
|
|
81
103
|
isInvalid: false,
|
|
82
104
|
isRequired: false,
|
|
105
|
+
labelText: "SearchBar Label",
|
|
106
|
+
method: undefined,
|
|
107
|
+
noBrandButtonType: false,
|
|
108
|
+
onSubmit: () => {},
|
|
109
|
+
selectProps: undefined,
|
|
83
110
|
showHelperText: true,
|
|
84
111
|
showSelect: true,
|
|
112
|
+
textInputElement: undefined,
|
|
113
|
+
textInputProps: undefined,
|
|
85
114
|
}}
|
|
86
115
|
>
|
|
87
116
|
{(args) => (
|
|
88
117
|
<SearchBar
|
|
89
|
-
onSubmit={() => {}}
|
|
90
118
|
{...args}
|
|
91
119
|
selectProps={
|
|
92
120
|
args.showSelect && {
|
|
@@ -100,13 +128,13 @@ export const optionsGroup = [
|
|
|
100
128
|
name: "textInputName",
|
|
101
129
|
placeholder: "Item Search",
|
|
102
130
|
}}
|
|
103
|
-
|
|
131
|
+
helperText={args.showHelperText && args.helperText}
|
|
104
132
|
/>
|
|
105
133
|
)}
|
|
106
134
|
</Story>
|
|
107
135
|
</Canvas>
|
|
108
136
|
|
|
109
|
-
<ArgsTable story="
|
|
137
|
+
<ArgsTable story="SearchBar with Controls" />
|
|
110
138
|
|
|
111
139
|
## Component Props
|
|
112
140
|
|
|
@@ -114,14 +142,17 @@ export const optionsGroup = [
|
|
|
114
142
|
|
|
115
143
|
To render an optional `Select` component, an object must be passed to the
|
|
116
144
|
`selectProps` prop. It _must_ include `name`, `labelText`, and `optionsData`
|
|
117
|
-
properties. The `labelText` value won't be
|
|
118
|
-
`aria-label` attribute.
|
|
145
|
+
properties. The `onChange` property is optional. The `labelText` value won't be
|
|
146
|
+
rendered but will be used for its `aria-label` attribute.
|
|
119
147
|
|
|
120
148
|
```
|
|
121
149
|
const selectProps = {
|
|
122
150
|
name: "select-form-name",
|
|
123
151
|
labelText: "Select a category",
|
|
124
152
|
optionsData: optionsGroup,
|
|
153
|
+
onChange: (event) => {
|
|
154
|
+
console.log(event.target.value);
|
|
155
|
+
},
|
|
125
156
|
};
|
|
126
157
|
|
|
127
158
|
// ...
|
|
@@ -137,7 +168,7 @@ const selectProps = {
|
|
|
137
168
|
To render the `TextInput` component, an object must be passed to the
|
|
138
169
|
`textInputProps` prop. It _must_ include `labelText`, `name`, and `placeholder`
|
|
139
170
|
properties. The `labelText` value won't be rendered but will be used for its
|
|
140
|
-
`aria-label` attribute. Optional
|
|
171
|
+
`aria-label` attribute. Optional properties to pass include `onChange` and `value`.
|
|
141
172
|
|
|
142
173
|
```
|
|
143
174
|
const textInputProps = {
|
|
@@ -181,23 +212,54 @@ A `Button` component will automatically be rendered for the `SearchBar`
|
|
|
181
212
|
component. If you want to pass a callback function to the `Button`, use the
|
|
182
213
|
`buttonOnClick` prop.
|
|
183
214
|
|
|
215
|
+
It's also possible to render the `ButtonType.NoBrand` variant style when the
|
|
216
|
+
`noBrandButtonType` prop is set to `true`. The `ButtonType.Primary` variant
|
|
217
|
+
style is used by default.
|
|
218
|
+
|
|
184
219
|
### HelperErrorText Component
|
|
185
220
|
|
|
186
|
-
To render the `HelperErrorText` component, pass a string
|
|
187
|
-
`
|
|
188
|
-
error string in the `invalidText` prop.
|
|
221
|
+
To render the `HelperErrorText` component, pass a string or HTML to the
|
|
222
|
+
`helperText` prop. For the invalid state when `isInvalid` is true, pass the
|
|
223
|
+
error string or HTML in the `invalidText` prop.
|
|
189
224
|
|
|
190
225
|
```
|
|
191
|
-
const
|
|
226
|
+
const helperText = "";
|
|
192
227
|
|
|
193
228
|
// ...
|
|
194
229
|
<SearchBar
|
|
195
230
|
onSubmit={() => {}}
|
|
196
|
-
|
|
231
|
+
helperText="Search for items in <b>Animal Crossing New Horizons</b>."
|
|
197
232
|
// ...
|
|
198
233
|
/>
|
|
199
234
|
```
|
|
200
235
|
|
|
236
|
+
<Canvas>
|
|
237
|
+
<DSProvider>
|
|
238
|
+
<SearchBar
|
|
239
|
+
descriptionText="The helper text below contains HTML in a string."
|
|
240
|
+
helperText="Search for items in <b>Animal Crossing New Horizons</b>."
|
|
241
|
+
onSubmit={() => {}}
|
|
242
|
+
textInputProps={{
|
|
243
|
+
labelText: "Item Search",
|
|
244
|
+
name: "textInputName",
|
|
245
|
+
placeholder: "Item Search",
|
|
246
|
+
}}
|
|
247
|
+
/>
|
|
248
|
+
<br />
|
|
249
|
+
<SearchBar
|
|
250
|
+
descriptionText="The invalid text below contains HTML in a string."
|
|
251
|
+
isInvalid
|
|
252
|
+
invalidText="Could <b>not</b> find the item <b>:(</b>"
|
|
253
|
+
onSubmit={() => {}}
|
|
254
|
+
textInputProps={{
|
|
255
|
+
labelText: "Item Search",
|
|
256
|
+
name: "textInputName",
|
|
257
|
+
placeholder: "Item Search",
|
|
258
|
+
}}
|
|
259
|
+
/>
|
|
260
|
+
</DSProvider>
|
|
261
|
+
</Canvas>
|
|
262
|
+
|
|
201
263
|
## Search Autocomplete
|
|
202
264
|
|
|
203
265
|
While the Design System does not implement an `Autosuggest` or `Autocomplete`
|
|
@@ -225,7 +287,7 @@ precedence.
|
|
|
225
287
|
<SearchBar
|
|
226
288
|
onSubmit={() => {}}
|
|
227
289
|
textInputElement={stories.SearchBarExample()}
|
|
228
|
-
|
|
290
|
+
helperText="Select your home library. Start by typing the name of the library. Try 'ba'."
|
|
229
291
|
{...args}
|
|
230
292
|
/>
|
|
231
293
|
</div>
|
|
@@ -253,7 +315,7 @@ handle the error state yourself.
|
|
|
253
315
|
name: "textInputName",
|
|
254
316
|
placeholder: "Item Search",
|
|
255
317
|
}}
|
|
256
|
-
|
|
318
|
+
helperText="This is the helper text!"
|
|
257
319
|
invalidText="Could not find the item :("
|
|
258
320
|
isInvalid
|
|
259
321
|
/>
|
|
@@ -269,18 +331,38 @@ handle the disabled state yourself.
|
|
|
269
331
|
<Canvas>
|
|
270
332
|
<DSProvider>
|
|
271
333
|
<SearchBar
|
|
272
|
-
|
|
334
|
+
onSubmit={() => {}}
|
|
273
335
|
textInputProps={{
|
|
274
336
|
labelText: "Item Search",
|
|
275
337
|
name: "textInputName",
|
|
276
338
|
placeholder: "Item Search",
|
|
277
339
|
}}
|
|
278
|
-
|
|
340
|
+
helperText="Reason for disabled state."
|
|
279
341
|
isDisabled
|
|
280
342
|
/>
|
|
281
343
|
</DSProvider>
|
|
282
344
|
</Canvas>
|
|
283
345
|
|
|
346
|
+
### With Heading and Description Text
|
|
347
|
+
|
|
348
|
+
Use the `descriptionText` and `headingText` props to render a heading and
|
|
349
|
+
description above the main `SearchBar` form component.
|
|
350
|
+
|
|
351
|
+
<Canvas>
|
|
352
|
+
<DSProvider>
|
|
353
|
+
<SearchBar
|
|
354
|
+
descriptionText="This is the description for this `SearchBar` instance."
|
|
355
|
+
headingText="Heading for this `SearchBar`"
|
|
356
|
+
onSubmit={() => {}}
|
|
357
|
+
textInputProps={{
|
|
358
|
+
labelText: "Item Search",
|
|
359
|
+
name: "textInputName",
|
|
360
|
+
placeholder: "Item Search",
|
|
361
|
+
}}
|
|
362
|
+
/>
|
|
363
|
+
</DSProvider>
|
|
364
|
+
</Canvas>
|
|
365
|
+
|
|
284
366
|
### TextInput and onSubmit Values
|
|
285
367
|
|
|
286
368
|
_NOTE: open the browser console to see the values logged in the example below._
|
|
@@ -311,7 +393,7 @@ function SearchBarValueExample() {
|
|
|
311
393
|
};
|
|
312
394
|
const onSubmit = (event) => {
|
|
313
395
|
event.preventDefault();
|
|
314
|
-
console.log(`onSubmit Select value: ${event.target.
|
|
396
|
+
console.log(`onSubmit Select value: ${event.target.selectName.value}`);
|
|
315
397
|
console.log(`onSubmit TextInput value ${event.target.textInputName.value}`);
|
|
316
398
|
};
|
|
317
399
|
return (
|
|
@@ -328,7 +410,7 @@ function SearchBarValueExample() {
|
|
|
328
410
|
onChange: textInputOnChange,
|
|
329
411
|
placeholder: "Item Search",
|
|
330
412
|
}}
|
|
331
|
-
|
|
413
|
+
helperText="Search for an item"
|
|
332
414
|
invalidText="Could not find the item :("
|
|
333
415
|
/>
|
|
334
416
|
);
|
|
@@ -358,7 +440,7 @@ export function SearchBarValueExample() {
|
|
|
358
440
|
onChange: textInputOnChange,
|
|
359
441
|
placeholder: "Item Search",
|
|
360
442
|
}}
|
|
361
|
-
|
|
443
|
+
helperText="Search for an item"
|
|
362
444
|
invalidText="Could not find the item :("
|
|
363
445
|
/>
|
|
364
446
|
);
|