@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,6 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { render, screen, fireEvent } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
4
5
|
import userEvent from "@testing-library/user-event";
|
|
5
6
|
|
|
6
7
|
import TextInput from "./TextInput";
|
|
@@ -368,3 +369,98 @@ describe("Textarea element type", () => {
|
|
|
368
369
|
expect(screen.getByLabelText(/Custom textarea Label/i)).toBeInTheDocument();
|
|
369
370
|
});
|
|
370
371
|
});
|
|
372
|
+
|
|
373
|
+
describe("UI Snapshots", () => {
|
|
374
|
+
it("renders the text input UI snapshot correctly", () => {
|
|
375
|
+
const required = renderer
|
|
376
|
+
.create(
|
|
377
|
+
<TextInput
|
|
378
|
+
id="myTextInput"
|
|
379
|
+
isRequired
|
|
380
|
+
labelText="Custom Input Label"
|
|
381
|
+
placeholder="Input Placeholder"
|
|
382
|
+
type={TextInputTypes.text}
|
|
383
|
+
/>
|
|
384
|
+
)
|
|
385
|
+
.toJSON();
|
|
386
|
+
const optional = renderer
|
|
387
|
+
.create(
|
|
388
|
+
<TextInput
|
|
389
|
+
id="myTextInput"
|
|
390
|
+
labelText="Custom Input Label"
|
|
391
|
+
placeholder="Input Placeholder"
|
|
392
|
+
type={TextInputTypes.text}
|
|
393
|
+
/>
|
|
394
|
+
)
|
|
395
|
+
.toJSON();
|
|
396
|
+
const hiddenLabelText = renderer
|
|
397
|
+
.create(
|
|
398
|
+
<TextInput
|
|
399
|
+
id="myTextInput"
|
|
400
|
+
isRequired
|
|
401
|
+
labelText="Custom Input Label"
|
|
402
|
+
placeholder="Input Placeholder"
|
|
403
|
+
showLabel={false}
|
|
404
|
+
type={TextInputTypes.text}
|
|
405
|
+
/>
|
|
406
|
+
)
|
|
407
|
+
.toJSON();
|
|
408
|
+
const withHelperText = renderer
|
|
409
|
+
.create(
|
|
410
|
+
<TextInput
|
|
411
|
+
helperText="Custom helper text"
|
|
412
|
+
id="myTextInput"
|
|
413
|
+
isRequired
|
|
414
|
+
labelText="Custom Input Label"
|
|
415
|
+
placeholder="Input Placeholder"
|
|
416
|
+
type={TextInputTypes.text}
|
|
417
|
+
/>
|
|
418
|
+
)
|
|
419
|
+
.toJSON();
|
|
420
|
+
const errorState = renderer
|
|
421
|
+
.create(
|
|
422
|
+
<TextInput
|
|
423
|
+
id="myTextInput"
|
|
424
|
+
isInvalid
|
|
425
|
+
isRequired
|
|
426
|
+
labelText="Custom Input Label"
|
|
427
|
+
placeholder="Input Placeholder"
|
|
428
|
+
type={TextInputTypes.text}
|
|
429
|
+
/>
|
|
430
|
+
)
|
|
431
|
+
.toJSON();
|
|
432
|
+
const disabledState = renderer
|
|
433
|
+
.create(
|
|
434
|
+
<TextInput
|
|
435
|
+
id="myTextInput"
|
|
436
|
+
isDisabled
|
|
437
|
+
isRequired
|
|
438
|
+
labelText="Custom Input Label"
|
|
439
|
+
placeholder="Input Placeholder"
|
|
440
|
+
type={TextInputTypes.text}
|
|
441
|
+
/>
|
|
442
|
+
)
|
|
443
|
+
.toJSON();
|
|
444
|
+
|
|
445
|
+
expect(required).toMatchSnapshot();
|
|
446
|
+
expect(optional).toMatchSnapshot();
|
|
447
|
+
expect(hiddenLabelText).toMatchSnapshot();
|
|
448
|
+
expect(withHelperText).toMatchSnapshot();
|
|
449
|
+
expect(errorState).toMatchSnapshot();
|
|
450
|
+
expect(disabledState).toMatchSnapshot();
|
|
451
|
+
});
|
|
452
|
+
it("renders the textarea UI snapshot correctly", () => {
|
|
453
|
+
const basicTextarea = renderer
|
|
454
|
+
.create(
|
|
455
|
+
<TextInput
|
|
456
|
+
id="myTextarea"
|
|
457
|
+
labelText="Custom textarea Label"
|
|
458
|
+
placeholder="Textarea Placeholder"
|
|
459
|
+
type={TextInputTypes.textarea}
|
|
460
|
+
/>
|
|
461
|
+
)
|
|
462
|
+
.toJSON();
|
|
463
|
+
|
|
464
|
+
expect(basicTextarea).toMatchSnapshot();
|
|
465
|
+
});
|
|
466
|
+
});
|
|
@@ -12,7 +12,9 @@ import {
|
|
|
12
12
|
TextInputVariants,
|
|
13
13
|
} from "./TextInputTypes";
|
|
14
14
|
import Label from "../Label/Label";
|
|
15
|
-
import HelperErrorText
|
|
15
|
+
import HelperErrorText, {
|
|
16
|
+
HelperErrorTextType,
|
|
17
|
+
} from "../HelperErrorText/HelperErrorText";
|
|
16
18
|
import generateUUID from "../../helpers/generateUUID";
|
|
17
19
|
|
|
18
20
|
export interface InputProps {
|
|
@@ -25,11 +27,11 @@ export interface InputProps {
|
|
|
25
27
|
/** The starting value of the input field. */
|
|
26
28
|
defaultValue?: string;
|
|
27
29
|
/** Populates the HelperErrorText for the standard state */
|
|
28
|
-
helperText?:
|
|
30
|
+
helperText?: HelperErrorTextType;
|
|
29
31
|
/** ID that other components can cross reference for accessibility purposes */
|
|
30
32
|
id?: string;
|
|
31
33
|
/** Populates the HelperErrorText for the error state */
|
|
32
|
-
invalidText?:
|
|
34
|
+
invalidText?: HelperErrorTextType;
|
|
33
35
|
/** Adds the `disabled` and `aria-disabled` prop to the input when true */
|
|
34
36
|
isDisabled?: boolean;
|
|
35
37
|
/** Adds errored styling to the input/textarea and helper text elements */
|
|
@@ -63,7 +65,7 @@ export interface InputProps {
|
|
|
63
65
|
type?: TextInputTypes;
|
|
64
66
|
/** Populates the value of the input/textarea elements */
|
|
65
67
|
value?: string;
|
|
66
|
-
/**
|
|
68
|
+
/** FOR INTERNAL DS USE ONLY: the input variant to display. */
|
|
67
69
|
variantType?: TextInputVariants;
|
|
68
70
|
}
|
|
69
71
|
|
|
@@ -111,7 +113,7 @@ const TextInput = React.forwardRef<TextInputRefType, InputProps>(
|
|
|
111
113
|
const finalInvalidText = invalidText
|
|
112
114
|
? invalidText
|
|
113
115
|
: "There is an error related to this field.";
|
|
114
|
-
let footnote:
|
|
116
|
+
let footnote: HelperErrorTextType = isInvalid
|
|
115
117
|
? finalInvalidText
|
|
116
118
|
: helperText;
|
|
117
119
|
let fieldOutput;
|
|
@@ -184,9 +186,11 @@ const TextInput = React.forwardRef<TextInputRefType, InputProps>(
|
|
|
184
186
|
{fieldOutput}
|
|
185
187
|
{footnote && showHelperInvalidText && !isHidden && (
|
|
186
188
|
<Box __css={finalStyles.helper} aria-disabled={isDisabled}>
|
|
187
|
-
<HelperErrorText
|
|
188
|
-
{
|
|
189
|
-
|
|
189
|
+
<HelperErrorText
|
|
190
|
+
id={`${id}-helperText`}
|
|
191
|
+
isInvalid={isInvalid}
|
|
192
|
+
text={footnote}
|
|
193
|
+
/>
|
|
190
194
|
</Box>
|
|
191
195
|
)}
|
|
192
196
|
</Box>
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`UI Snapshots renders the text input UI snapshot correctly 1`] = `
|
|
4
|
+
<div
|
|
5
|
+
className="css-0"
|
|
6
|
+
>
|
|
7
|
+
<label
|
|
8
|
+
className="css-0"
|
|
9
|
+
htmlFor="myTextInput"
|
|
10
|
+
id="myTextInput-label"
|
|
11
|
+
>
|
|
12
|
+
Custom Input Label
|
|
13
|
+
<div
|
|
14
|
+
className="css-0"
|
|
15
|
+
>
|
|
16
|
+
Required
|
|
17
|
+
</div>
|
|
18
|
+
</label>
|
|
19
|
+
<input
|
|
20
|
+
aria-required={true}
|
|
21
|
+
className="chakra-input css-0"
|
|
22
|
+
disabled={false}
|
|
23
|
+
id="myTextInput"
|
|
24
|
+
onBlur={[Function]}
|
|
25
|
+
onFocus={[Function]}
|
|
26
|
+
placeholder="Input Placeholder"
|
|
27
|
+
required={true}
|
|
28
|
+
step={null}
|
|
29
|
+
type="text"
|
|
30
|
+
/>
|
|
31
|
+
</div>
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
exports[`UI Snapshots renders the text input UI snapshot correctly 2`] = `
|
|
35
|
+
<div
|
|
36
|
+
className="css-0"
|
|
37
|
+
>
|
|
38
|
+
<label
|
|
39
|
+
className="css-0"
|
|
40
|
+
htmlFor="myTextInput"
|
|
41
|
+
id="myTextInput-label"
|
|
42
|
+
>
|
|
43
|
+
Custom Input Label
|
|
44
|
+
<div
|
|
45
|
+
className="css-0"
|
|
46
|
+
>
|
|
47
|
+
Optional
|
|
48
|
+
</div>
|
|
49
|
+
</label>
|
|
50
|
+
<input
|
|
51
|
+
className="chakra-input css-0"
|
|
52
|
+
disabled={false}
|
|
53
|
+
id="myTextInput"
|
|
54
|
+
onBlur={[Function]}
|
|
55
|
+
onFocus={[Function]}
|
|
56
|
+
placeholder="Input Placeholder"
|
|
57
|
+
required={false}
|
|
58
|
+
step={null}
|
|
59
|
+
type="text"
|
|
60
|
+
/>
|
|
61
|
+
</div>
|
|
62
|
+
`;
|
|
63
|
+
|
|
64
|
+
exports[`UI Snapshots renders the text input UI snapshot correctly 3`] = `
|
|
65
|
+
<div
|
|
66
|
+
className="css-0"
|
|
67
|
+
>
|
|
68
|
+
<input
|
|
69
|
+
aria-label="Custom Input Label"
|
|
70
|
+
aria-required={true}
|
|
71
|
+
className="chakra-input css-0"
|
|
72
|
+
disabled={false}
|
|
73
|
+
id="myTextInput"
|
|
74
|
+
onBlur={[Function]}
|
|
75
|
+
onFocus={[Function]}
|
|
76
|
+
placeholder="Input Placeholder"
|
|
77
|
+
required={true}
|
|
78
|
+
step={null}
|
|
79
|
+
type="text"
|
|
80
|
+
/>
|
|
81
|
+
</div>
|
|
82
|
+
`;
|
|
83
|
+
|
|
84
|
+
exports[`UI Snapshots renders the text input UI snapshot correctly 4`] = `
|
|
85
|
+
<div
|
|
86
|
+
className="css-0"
|
|
87
|
+
>
|
|
88
|
+
<label
|
|
89
|
+
className="css-0"
|
|
90
|
+
htmlFor="myTextInput"
|
|
91
|
+
id="myTextInput-label"
|
|
92
|
+
>
|
|
93
|
+
Custom Input Label
|
|
94
|
+
<div
|
|
95
|
+
className="css-0"
|
|
96
|
+
>
|
|
97
|
+
Required
|
|
98
|
+
</div>
|
|
99
|
+
</label>
|
|
100
|
+
<input
|
|
101
|
+
aria-describedby="myTextInput-helperText"
|
|
102
|
+
aria-required={true}
|
|
103
|
+
className="chakra-input css-0"
|
|
104
|
+
disabled={false}
|
|
105
|
+
id="myTextInput"
|
|
106
|
+
onBlur={[Function]}
|
|
107
|
+
onFocus={[Function]}
|
|
108
|
+
placeholder="Input Placeholder"
|
|
109
|
+
required={true}
|
|
110
|
+
step={null}
|
|
111
|
+
type="text"
|
|
112
|
+
/>
|
|
113
|
+
<div
|
|
114
|
+
aria-disabled={false}
|
|
115
|
+
className="css-0"
|
|
116
|
+
>
|
|
117
|
+
<div
|
|
118
|
+
aria-atomic={true}
|
|
119
|
+
aria-live="off"
|
|
120
|
+
className=" css-0"
|
|
121
|
+
dangerouslySetInnerHTML={
|
|
122
|
+
Object {
|
|
123
|
+
"__html": "Custom helper text",
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
data-isinvalid={false}
|
|
127
|
+
id="myTextInput-helperText"
|
|
128
|
+
/>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
`;
|
|
132
|
+
|
|
133
|
+
exports[`UI Snapshots renders the text input UI snapshot correctly 5`] = `
|
|
134
|
+
<div
|
|
135
|
+
className="css-0"
|
|
136
|
+
>
|
|
137
|
+
<label
|
|
138
|
+
className="css-0"
|
|
139
|
+
htmlFor="myTextInput"
|
|
140
|
+
id="myTextInput-label"
|
|
141
|
+
>
|
|
142
|
+
Custom Input Label
|
|
143
|
+
<div
|
|
144
|
+
className="css-0"
|
|
145
|
+
>
|
|
146
|
+
Required
|
|
147
|
+
</div>
|
|
148
|
+
</label>
|
|
149
|
+
<input
|
|
150
|
+
aria-invalid={true}
|
|
151
|
+
aria-required={true}
|
|
152
|
+
className="chakra-input css-0"
|
|
153
|
+
disabled={false}
|
|
154
|
+
id="myTextInput"
|
|
155
|
+
onBlur={[Function]}
|
|
156
|
+
onFocus={[Function]}
|
|
157
|
+
placeholder="Input Placeholder"
|
|
158
|
+
required={true}
|
|
159
|
+
step={null}
|
|
160
|
+
type="text"
|
|
161
|
+
/>
|
|
162
|
+
<div
|
|
163
|
+
aria-disabled={false}
|
|
164
|
+
className="css-0"
|
|
165
|
+
>
|
|
166
|
+
<div
|
|
167
|
+
aria-atomic={true}
|
|
168
|
+
aria-live="polite"
|
|
169
|
+
className=" css-0"
|
|
170
|
+
dangerouslySetInnerHTML={
|
|
171
|
+
Object {
|
|
172
|
+
"__html": "There is an error related to this field.",
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
data-isinvalid={true}
|
|
176
|
+
id="myTextInput-helperText"
|
|
177
|
+
/>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
`;
|
|
181
|
+
|
|
182
|
+
exports[`UI Snapshots renders the text input UI snapshot correctly 6`] = `
|
|
183
|
+
<div
|
|
184
|
+
className="css-0"
|
|
185
|
+
>
|
|
186
|
+
<label
|
|
187
|
+
className="css-0"
|
|
188
|
+
htmlFor="myTextInput"
|
|
189
|
+
id="myTextInput-label"
|
|
190
|
+
>
|
|
191
|
+
Custom Input Label
|
|
192
|
+
<div
|
|
193
|
+
className="css-0"
|
|
194
|
+
>
|
|
195
|
+
Required
|
|
196
|
+
</div>
|
|
197
|
+
</label>
|
|
198
|
+
<input
|
|
199
|
+
aria-required={true}
|
|
200
|
+
className="chakra-input css-0"
|
|
201
|
+
disabled={true}
|
|
202
|
+
id="myTextInput"
|
|
203
|
+
onBlur={[Function]}
|
|
204
|
+
onFocus={[Function]}
|
|
205
|
+
placeholder="Input Placeholder"
|
|
206
|
+
required={true}
|
|
207
|
+
step={null}
|
|
208
|
+
type="text"
|
|
209
|
+
/>
|
|
210
|
+
</div>
|
|
211
|
+
`;
|
|
212
|
+
|
|
213
|
+
exports[`UI Snapshots renders the textarea UI snapshot correctly 1`] = `
|
|
214
|
+
<div
|
|
215
|
+
className="css-0"
|
|
216
|
+
>
|
|
217
|
+
<label
|
|
218
|
+
className="css-0"
|
|
219
|
+
htmlFor="myTextarea"
|
|
220
|
+
id="myTextarea-label"
|
|
221
|
+
>
|
|
222
|
+
Custom textarea Label
|
|
223
|
+
<div
|
|
224
|
+
className="css-0"
|
|
225
|
+
>
|
|
226
|
+
Optional
|
|
227
|
+
</div>
|
|
228
|
+
</label>
|
|
229
|
+
<textarea
|
|
230
|
+
className="chakra-textarea css-0"
|
|
231
|
+
disabled={false}
|
|
232
|
+
id="myTextarea"
|
|
233
|
+
onBlur={[Function]}
|
|
234
|
+
onFocus={[Function]}
|
|
235
|
+
placeholder="Textarea Placeholder"
|
|
236
|
+
required={false}
|
|
237
|
+
step={null}
|
|
238
|
+
/>
|
|
239
|
+
</div>
|
|
240
|
+
`;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { HStack, VStack, Grid, Box } from "@chakra-ui/react";
|
|
2
|
+
import {
|
|
3
|
+
Meta,
|
|
4
|
+
Story,
|
|
5
|
+
Canvas,
|
|
6
|
+
ArgsTable,
|
|
7
|
+
Description,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
9
|
+
import { withDesign } from "storybook-addon-designs";
|
|
10
|
+
|
|
11
|
+
import Heading from "../Heading/Heading";
|
|
12
|
+
import SimpleGrid from "../Grid/SimpleGrid";
|
|
13
|
+
import Toggle from "./Toggle";
|
|
14
|
+
import { ToggleSizes } from "./ToggleSizes";
|
|
15
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
16
|
+
import DSProvider from "../../theme/provider";
|
|
17
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
18
|
+
|
|
19
|
+
export const sizeEnumValues = getStorybookEnumValues(
|
|
20
|
+
ToggleSizes,
|
|
21
|
+
"ToggleSizes"
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
<Meta
|
|
25
|
+
title={getCategory("Toggle")}
|
|
26
|
+
component={Toggle}
|
|
27
|
+
decorators={[withDesign]}
|
|
28
|
+
parameters={{
|
|
29
|
+
design: {
|
|
30
|
+
type: "figma",
|
|
31
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=31581%3A302",
|
|
32
|
+
},
|
|
33
|
+
jest: ["Toggle.test.tsx"],
|
|
34
|
+
}}
|
|
35
|
+
argTypes={{
|
|
36
|
+
additionalStyles: { control: false },
|
|
37
|
+
defaultChecked: { control: false },
|
|
38
|
+
id: { control: false },
|
|
39
|
+
key: { table: { disable: true } },
|
|
40
|
+
name: { control: false },
|
|
41
|
+
onChange: { control: false },
|
|
42
|
+
ref: { table: { disable: true } },
|
|
43
|
+
size: {
|
|
44
|
+
control: {
|
|
45
|
+
type: "select",
|
|
46
|
+
table: { defaultValue: { summary: "ToggleSizes.Large" } },
|
|
47
|
+
options: sizeEnumValues.options,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
}}
|
|
51
|
+
/>
|
|
52
|
+
|
|
53
|
+
# Toggle
|
|
54
|
+
|
|
55
|
+
| Component Version | DS Version |
|
|
56
|
+
| ----------------- | ---------- |
|
|
57
|
+
| Added | `0.25.8` |
|
|
58
|
+
| Latest | `0.25.9` |
|
|
59
|
+
|
|
60
|
+
<Description of={Toggle} />
|
|
61
|
+
|
|
62
|
+
The Toggle component is used as an alternative for the Checkbox component and returns a boolean response. Like the Checkbox component, the Toggle component can display a label to the right of the toggle and helper/error text below the toggle.
|
|
63
|
+
|
|
64
|
+
### Best Practices
|
|
65
|
+
|
|
66
|
+
Toggle components are commonly used for “on/off” switches to perform binary actions that occur immediately after a user “flips the switch.”
|
|
67
|
+
|
|
68
|
+
The Toggle component label should clarify the action being performed. Labels should be short and to the point, often three words or less.
|
|
69
|
+
|
|
70
|
+
<Canvas>
|
|
71
|
+
<Story
|
|
72
|
+
name="Toggle"
|
|
73
|
+
args={{
|
|
74
|
+
additionalStyles: undefined,
|
|
75
|
+
defaultChecked: false,
|
|
76
|
+
helperText: "This is the helper text!",
|
|
77
|
+
id: "toggle-1",
|
|
78
|
+
invalidText: "",
|
|
79
|
+
isChecked: undefined,
|
|
80
|
+
isDisabled: false,
|
|
81
|
+
isInvalid: false,
|
|
82
|
+
isRequired: false,
|
|
83
|
+
labelText: "Test Label",
|
|
84
|
+
name: "toggle-1",
|
|
85
|
+
onChange: undefined,
|
|
86
|
+
size: "ToogleSizes.Large",
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
{(args) => <Toggle {...args} size={sizeEnumValues.getValue(args.size)} />}
|
|
90
|
+
</Story>
|
|
91
|
+
</Canvas>
|
|
92
|
+
|
|
93
|
+
<ArgsTable story="Toggle" />
|
|
94
|
+
|
|
95
|
+
## Sizes
|
|
96
|
+
|
|
97
|
+
<Canvas>
|
|
98
|
+
<DSProvider>
|
|
99
|
+
<SimpleGrid columns="2">
|
|
100
|
+
<VStack align="left" spacing="s">
|
|
101
|
+
<Heading level={3}>Large</Heading>
|
|
102
|
+
<Toggle size={ToggleSizes.Large} defaultChecked={true} labelText="On" />
|
|
103
|
+
<Toggle size={ToggleSizes.Large} labelText="Off" />
|
|
104
|
+
</VStack>
|
|
105
|
+
<VStack align="left" spacing="s">
|
|
106
|
+
<Heading level={3}>Small</Heading>
|
|
107
|
+
<Toggle size={ToggleSizes.Small} defaultChecked={true} labelText="On" />
|
|
108
|
+
<Toggle size={ToggleSizes.Small} labelText="Off" />
|
|
109
|
+
</VStack>
|
|
110
|
+
</SimpleGrid>
|
|
111
|
+
</DSProvider>
|
|
112
|
+
</Canvas>
|
|
113
|
+
|
|
114
|
+
## Controlled Toggle
|
|
115
|
+
|
|
116
|
+
Note that the `isChecked` property in this example is set to `true`. Clicking
|
|
117
|
+
on it won't change the toggle; The `isChecked` prop must now be controlled
|
|
118
|
+
and removed manually by the parent component that controls this state. The
|
|
119
|
+
`onChange` function will be called every time the `isChecked` prop changes.
|
|
120
|
+
|
|
121
|
+
```jsx
|
|
122
|
+
const isChecked = true;
|
|
123
|
+
const onChange = (e) => {
|
|
124
|
+
// This will return the value through the event object.
|
|
125
|
+
console.log(e.target.value);
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
<Toggle isChecked={true} onChange={onChange} labelText="Controlled Toggle" />;
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
<Canvas>
|
|
132
|
+
<DSProvider>
|
|
133
|
+
<Toggle
|
|
134
|
+
isChecked={true}
|
|
135
|
+
onChange={(e) => {
|
|
136
|
+
console.log(e.target.value);
|
|
137
|
+
}}
|
|
138
|
+
labelText="Controlled Toggle"
|
|
139
|
+
/>
|
|
140
|
+
</DSProvider>
|
|
141
|
+
</Canvas>
|
|
142
|
+
|
|
143
|
+
## Browser States
|
|
144
|
+
|
|
145
|
+
<Canvas>
|
|
146
|
+
<DSProvider>
|
|
147
|
+
<SimpleGrid columns="3">
|
|
148
|
+
<VStack align="left" spacing="s">
|
|
149
|
+
<Heading level={3}>Default</Heading>
|
|
150
|
+
<Toggle size={ToggleSizes.Large} defaultChecked={true} labelText="On" />
|
|
151
|
+
<Toggle size={ToggleSizes.Large} labelText="Off" />
|
|
152
|
+
</VStack>
|
|
153
|
+
<VStack align="left" spacing="s">
|
|
154
|
+
<Heading level={3}>Disabled</Heading>
|
|
155
|
+
<Toggle
|
|
156
|
+
size={ToggleSizes.Large}
|
|
157
|
+
defaultChecked={true}
|
|
158
|
+
isDisabled={true}
|
|
159
|
+
labelText="On"
|
|
160
|
+
/>
|
|
161
|
+
<Toggle size={ToggleSizes.Large} labelText="Off" isDisabled={true} />
|
|
162
|
+
</VStack>
|
|
163
|
+
<VStack align="left" spacing="s">
|
|
164
|
+
<Heading level={3}>Error</Heading>
|
|
165
|
+
<Toggle
|
|
166
|
+
size={ToggleSizes.Large}
|
|
167
|
+
defaultChecked={true}
|
|
168
|
+
labelText="On"
|
|
169
|
+
isInvalid={true}
|
|
170
|
+
/>
|
|
171
|
+
<Toggle size={ToggleSizes.Large} labelText="Off" isInvalid={true} />
|
|
172
|
+
</VStack>
|
|
173
|
+
</SimpleGrid>
|
|
174
|
+
</DSProvider>
|
|
175
|
+
</Canvas>
|
|
176
|
+
|
|
177
|
+
## Layouts
|
|
178
|
+
|
|
179
|
+
<Canvas>
|
|
180
|
+
<DSProvider>
|
|
181
|
+
<SimpleGrid columns="2">
|
|
182
|
+
<VStack align="left" spacing="s">
|
|
183
|
+
<Heading level={3}>Grouped</Heading>
|
|
184
|
+
<Toggle defaultChecked={true} labelText="On" />
|
|
185
|
+
<Toggle defaultChecked={true} labelText="On" />
|
|
186
|
+
<Toggle defaultChecked={true} labelText="On" />
|
|
187
|
+
<Toggle defaultChecked={true} labelText="On" />
|
|
188
|
+
<Toggle defaultChecked={true} labelText="On" />
|
|
189
|
+
</VStack>
|
|
190
|
+
<VStack align="left" spacing="s">
|
|
191
|
+
<Heading level={3}>With Helper Text</Heading>
|
|
192
|
+
<Toggle
|
|
193
|
+
defaultChecked={true}
|
|
194
|
+
labelText="On"
|
|
195
|
+
helperText="Component Helper Text"
|
|
196
|
+
/>
|
|
197
|
+
</VStack>
|
|
198
|
+
</SimpleGrid>
|
|
199
|
+
</DSProvider>
|
|
200
|
+
</Canvas>
|