@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
|
@@ -1,24 +1,19 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
2
|
+
import * as React from "react";
|
|
3
3
|
|
|
4
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
5
|
-
import Select from "../Select/Select";
|
|
6
|
-
import TextInput from "../TextInput/TextInput";
|
|
7
|
-
import { TextInputTypes, TextInputVariants } from "../TextInput/TextInputTypes";
|
|
8
4
|
import Button from "../Button/Button";
|
|
9
5
|
import { ButtonTypes } from "../Button/ButtonTypes";
|
|
6
|
+
import ComponentWrapper from "../ComponentWrapper/ComponentWrapper";
|
|
7
|
+
import { HelperErrorTextType } from "../HelperErrorText/HelperErrorText";
|
|
10
8
|
import Icon from "../Icons/Icon";
|
|
11
9
|
import { IconAlign, IconNames, IconSizes } from "../Icons/IconTypes";
|
|
12
|
-
import
|
|
10
|
+
import Select from "../Select/Select";
|
|
13
11
|
import { SelectTypes } from "../Select/SelectTypes";
|
|
12
|
+
import TextInput from "../TextInput/TextInput";
|
|
13
|
+
import { TextInputTypes, TextInputVariants } from "../TextInput/TextInputTypes";
|
|
14
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
interface SelectProps {
|
|
17
|
-
labelText: string;
|
|
18
|
-
name: string;
|
|
19
|
-
optionsData: string[];
|
|
20
|
-
}
|
|
21
|
-
interface TextInputProps {
|
|
16
|
+
interface BaseProps {
|
|
22
17
|
labelText: string;
|
|
23
18
|
name: string;
|
|
24
19
|
onChange?: (
|
|
@@ -26,6 +21,12 @@ interface TextInputProps {
|
|
|
26
21
|
| React.ChangeEvent<HTMLInputElement>
|
|
27
22
|
| React.ChangeEvent<HTMLTextAreaElement>
|
|
28
23
|
) => void;
|
|
24
|
+
}
|
|
25
|
+
// Internal interfaces that are used only for `SearchBar` props.
|
|
26
|
+
export interface SelectProps extends BaseProps {
|
|
27
|
+
optionsData: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface TextInputProps extends BaseProps {
|
|
29
30
|
placeholder: string;
|
|
30
31
|
value?: string;
|
|
31
32
|
}
|
|
@@ -37,13 +38,17 @@ export interface SearchBarProps {
|
|
|
37
38
|
buttonOnClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;
|
|
38
39
|
/** A class name for the `form` element. */
|
|
39
40
|
className?: string;
|
|
41
|
+
/** Optional string for the SearchBar's description above the component. */
|
|
42
|
+
descriptionText?: string;
|
|
43
|
+
/** Optional string for the SearchBar's heading text above the component. */
|
|
44
|
+
headingText?: string;
|
|
40
45
|
/** The text to display below the form in a `HelperErrorText` component. */
|
|
41
|
-
|
|
46
|
+
helperText?: HelperErrorTextType;
|
|
42
47
|
/** ID that other components can cross reference for accessibility purposes */
|
|
43
48
|
id?: string;
|
|
44
49
|
/** Optional string to populate the `HelperErrorText` for the error state
|
|
45
50
|
* when `isInvalid` is true. */
|
|
46
|
-
invalidText?:
|
|
51
|
+
invalidText?: HelperErrorTextType;
|
|
47
52
|
/** Sets children form components in the disabled state. */
|
|
48
53
|
isDisabled?: boolean;
|
|
49
54
|
/** Sets children form components in the error state. */
|
|
@@ -54,6 +59,9 @@ export interface SearchBarProps {
|
|
|
54
59
|
labelText: string;
|
|
55
60
|
/** Adds 'method' property to the `form` element. */
|
|
56
61
|
method?: string;
|
|
62
|
+
/** Sets the `Button` variant type to `ButtonTypes.NoBrand` when true;
|
|
63
|
+
* false by default which sets the type to `ButtonTypes.Primary`. */
|
|
64
|
+
noBrandButtonType?: boolean;
|
|
57
65
|
/** Handler function when the form is submitted. */
|
|
58
66
|
onSubmit: (event: React.FormEvent) => void;
|
|
59
67
|
/** Required props to render a `Select` element. */
|
|
@@ -73,7 +81,9 @@ export default function SearchBar(props: SearchBarProps) {
|
|
|
73
81
|
action,
|
|
74
82
|
buttonOnClick = null,
|
|
75
83
|
className,
|
|
76
|
-
|
|
84
|
+
descriptionText,
|
|
85
|
+
headingText,
|
|
86
|
+
helperText,
|
|
77
87
|
id = generateUUID(),
|
|
78
88
|
invalidText,
|
|
79
89
|
isDisabled = false,
|
|
@@ -81,6 +91,7 @@ export default function SearchBar(props: SearchBarProps) {
|
|
|
81
91
|
isRequired = false,
|
|
82
92
|
labelText,
|
|
83
93
|
method,
|
|
94
|
+
noBrandButtonType = false,
|
|
84
95
|
onSubmit,
|
|
85
96
|
selectProps,
|
|
86
97
|
textInputElement,
|
|
@@ -95,19 +106,27 @@ export default function SearchBar(props: SearchBarProps) {
|
|
|
95
106
|
showHelperInvalidText: false,
|
|
96
107
|
showLabel: false,
|
|
97
108
|
};
|
|
98
|
-
const
|
|
99
|
-
const ariaDescribedby = helperErrorTextID;
|
|
100
|
-
const footnote = isInvalid ? invalidText : helperErrorText;
|
|
109
|
+
const footnote = isInvalid ? invalidText : helperText;
|
|
101
110
|
const finalAriaLabel = footnote ? `${labelText} - ${footnote}` : labelText;
|
|
102
111
|
const textInputPlaceholder = `${textInputProps?.placeholder} ${
|
|
103
112
|
isRequired ? "(Required)" : ""
|
|
104
113
|
}`;
|
|
114
|
+
const buttonType = noBrandButtonType
|
|
115
|
+
? ButtonTypes.NoBrand
|
|
116
|
+
: ButtonTypes.Primary;
|
|
117
|
+
const searchBarButtonStyles = {
|
|
118
|
+
borderLeftRadius: "none",
|
|
119
|
+
borderRightRadius: { base: "none", md: "sm" },
|
|
120
|
+
lineHeight: "1.70",
|
|
121
|
+
marginBottom: "auto",
|
|
122
|
+
};
|
|
105
123
|
// Render the `Select` component.
|
|
106
124
|
const selectElem = selectProps && (
|
|
107
125
|
<Select
|
|
108
|
-
id={
|
|
109
|
-
name={selectProps?.name}
|
|
126
|
+
id={`searchbar-select-${id}`}
|
|
110
127
|
labelText={selectProps?.labelText}
|
|
128
|
+
name={selectProps?.name}
|
|
129
|
+
onChange={selectProps?.onChange}
|
|
111
130
|
type={SelectTypes.SearchBar}
|
|
112
131
|
{...stateProps}
|
|
113
132
|
>
|
|
@@ -121,11 +140,11 @@ export default function SearchBar(props: SearchBarProps) {
|
|
|
121
140
|
// Render the `TextInput` component.
|
|
122
141
|
const textInputNative = textInputProps && (
|
|
123
142
|
<TextInput
|
|
124
|
-
id={
|
|
143
|
+
id={`searchbar-textinput-${id}`}
|
|
125
144
|
labelText={textInputProps?.labelText}
|
|
126
|
-
placeholder={textInputPlaceholder}
|
|
127
|
-
onChange={textInputProps?.onChange}
|
|
128
145
|
name={textInputProps?.name}
|
|
146
|
+
onChange={textInputProps?.onChange}
|
|
147
|
+
placeholder={textInputPlaceholder}
|
|
129
148
|
type={TextInputTypes.text}
|
|
130
149
|
variantType={
|
|
131
150
|
selectElem
|
|
@@ -139,49 +158,50 @@ export default function SearchBar(props: SearchBarProps) {
|
|
|
139
158
|
// Render the `Button` component.
|
|
140
159
|
const buttonElem = (
|
|
141
160
|
<Button
|
|
142
|
-
|
|
143
|
-
buttonType={
|
|
144
|
-
|
|
145
|
-
onClick={buttonOnClick}
|
|
161
|
+
additionalStyles={searchBarButtonStyles}
|
|
162
|
+
buttonType={buttonType}
|
|
163
|
+
id={`searchbar-button-${id}`}
|
|
146
164
|
isDisabled={isDisabled}
|
|
165
|
+
onClick={buttonOnClick}
|
|
166
|
+
type="submit"
|
|
147
167
|
>
|
|
148
168
|
<Icon
|
|
169
|
+
align={IconAlign.Left}
|
|
170
|
+
id={`searchbar-icon-${id}`}
|
|
149
171
|
name={IconNames.Search}
|
|
150
172
|
size={IconSizes.Small}
|
|
151
|
-
align={IconAlign.Left}
|
|
152
173
|
/>
|
|
153
174
|
Search
|
|
154
175
|
</Button>
|
|
155
176
|
);
|
|
156
|
-
//
|
|
157
|
-
|
|
158
|
-
<HelperErrorText id={helperErrorTextID} isInvalid={isInvalid}>
|
|
159
|
-
{footnote}
|
|
160
|
-
</HelperErrorText>
|
|
161
|
-
);
|
|
162
|
-
// If a custom input element was passed, use that instead of the
|
|
163
|
-
// `TextInput` component.
|
|
177
|
+
// If a custom input element was passed, use that element
|
|
178
|
+
// instead of the DS `TextInput` component.
|
|
164
179
|
const textInputElem = textInputElement || textInputNative;
|
|
165
180
|
|
|
166
181
|
return (
|
|
167
|
-
<
|
|
168
|
-
|
|
182
|
+
<ComponentWrapper
|
|
183
|
+
descriptionText={descriptionText}
|
|
184
|
+
headingText={headingText}
|
|
185
|
+
helperText={helperText}
|
|
169
186
|
id={id}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
aria-label={finalAriaLabel}
|
|
173
|
-
aria-describedby={ariaDescribedby}
|
|
174
|
-
onSubmit={onSubmit}
|
|
175
|
-
method={method}
|
|
176
|
-
action={action}
|
|
177
|
-
__css={styles}
|
|
187
|
+
invalidText={invalidText}
|
|
188
|
+
isInvalid={isInvalid}
|
|
178
189
|
>
|
|
179
|
-
<Box
|
|
190
|
+
<Box
|
|
191
|
+
as="form"
|
|
192
|
+
id={`searchbar-form-${id}`}
|
|
193
|
+
className={className}
|
|
194
|
+
role="search"
|
|
195
|
+
aria-label={finalAriaLabel}
|
|
196
|
+
onSubmit={onSubmit}
|
|
197
|
+
method={method}
|
|
198
|
+
action={action}
|
|
199
|
+
__css={styles}
|
|
200
|
+
>
|
|
180
201
|
{selectElem}
|
|
181
202
|
{textInputElem}
|
|
182
203
|
{buttonElem}
|
|
183
204
|
</Box>
|
|
184
|
-
|
|
185
|
-
</Box>
|
|
205
|
+
</ComponentWrapper>
|
|
186
206
|
);
|
|
187
207
|
}
|
|
@@ -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>
|