@nypl/design-system-react-components 0.25.8 → 0.25.11
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 +110 -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 +0 -21
- package/dist/components/Icons/IconTypes.d.ts +0 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/List/List.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +28 -0
- package/dist/components/Logo/LogoSvgs.d.ts +34 -0
- package/dist/components/Logo/LogoTypes.d.ts +46 -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 +7 -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 +3 -2
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
- package/dist/design-system-react-components.cjs.development.js +6721 -5777
- 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 +6774 -5839
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +10 -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 +13 -4
- package/dist/theme/components/searchBar.d.ts +9 -11
- 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 +4 -0
- package/dist/theme/components/toggle.d.ts +8 -5
- 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 +15 -13
- 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 +15 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +5 -5
- 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 -7
- 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 +186 -71
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +21 -6
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +9 -3
- 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 +3 -3
- 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 +6 -6
- package/src/components/DatePicker/DatePicker.tsx +17 -11
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +50 -24
- 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 +78 -77
- package/src/components/Icons/Icon.test.tsx +1 -1
- package/src/components/Icons/Icon.tsx +5 -6
- package/src/components/Icons/IconSvgs.tsx +0 -42
- package/src/components/Icons/IconTypes.tsx +0 -24
- package/src/components/Image/Image.stories.mdx +66 -18
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Label/Label.stories.mdx +20 -19
- package/src/components/Link/Link.stories.mdx +102 -51
- package/src/components/Link/Link.test.tsx +38 -8
- package/src/components/Link/Link.tsx +19 -12
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
- package/src/components/List/List.stories.mdx +60 -29
- package/src/components/List/List.test.tsx +1 -1
- package/src/components/List/List.tsx +2 -2
- package/src/components/List/__snapshots__/List.test.tsx.snap +3 -1
- package/src/components/Logo/Logo.stories.mdx +222 -0
- package/src/components/Logo/Logo.test.tsx +98 -0
- package/src/components/Logo/Logo.tsx +97 -0
- package/src/components/Logo/LogoSvgs.tsx +66 -0
- package/src/components/Logo/LogoTypes.tsx +48 -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 +128 -38
- package/src/components/Notification/Notification.test.tsx +49 -1
- package/src/components/Notification/Notification.tsx +25 -12
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
- package/src/components/Pagination/Pagination.stories.mdx +18 -7
- package/src/components/Pagination/Pagination.tsx +3 -3
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
- 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 +115 -33
- package/src/components/SearchBar/SearchBar.tsx +72 -51
- package/src/components/Select/Select.stories.mdx +48 -14
- package/src/components/Select/Select.test.tsx +89 -0
- package/src/components/Select/Select.tsx +27 -12
- 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 +72 -22
- package/src/components/Slider/Slider.tsx +15 -10
- 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 +35 -20
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
- package/src/components/Template/Template.stories.mdx +132 -48
- 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 +33 -9
- package/src/components/Toggle/Toggle.tsx +14 -9
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +4 -4
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
- package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +13 -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 +4 -4
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +5 -2
- 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/image.ts +1 -1
- package/src/theme/components/link.ts +17 -5
- package/src/theme/components/list.ts +3 -5
- package/src/theme/components/logo.ts +54 -0
- package/src/theme/components/notification.ts +19 -9
- package/src/theme/components/searchBar.ts +11 -13
- package/src/theme/components/select.ts +1 -0
- package/src/theme/components/statusBadge.ts +1 -1
- package/src/theme/components/structuredContent.ts +74 -0
- package/src/theme/components/template.ts +10 -10
- package/src/theme/components/text.ts +6 -6
- package/src/theme/components/textInput.ts +2 -0
- package/src/theme/components/toggle.ts +10 -6
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +6 -0
- package/src/utils/componentCategories.ts +2 -1
- 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
|
+
`;
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
+
import { HStack, VStack, Grid, Box } from "@chakra-ui/react";
|
|
1
2
|
import {
|
|
2
3
|
Meta,
|
|
3
4
|
Story,
|
|
4
5
|
Canvas,
|
|
5
6
|
ArgsTable,
|
|
6
7
|
Description,
|
|
7
|
-
} from "@storybook/addon-docs
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
8
9
|
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
|
|
10
|
+
|
|
10
11
|
import Heading from "../Heading/Heading";
|
|
11
12
|
import SimpleGrid from "../Grid/SimpleGrid";
|
|
12
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
13
|
-
import DSProvider from "../../theme/provider";
|
|
14
13
|
import Toggle from "./Toggle";
|
|
15
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
|
+
);
|
|
16
23
|
|
|
17
24
|
<Meta
|
|
18
25
|
title={getCategory("Toggle")}
|
|
@@ -26,8 +33,20 @@ import { ToggleSizes } from "./ToggleSizes";
|
|
|
26
33
|
jest: ["Toggle.test.tsx"],
|
|
27
34
|
}}
|
|
28
35
|
argTypes={{
|
|
36
|
+
additionalStyles: { control: false },
|
|
37
|
+
defaultChecked: { control: false },
|
|
29
38
|
id: { control: false },
|
|
30
|
-
|
|
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
|
+
},
|
|
31
50
|
}}
|
|
32
51
|
/>
|
|
33
52
|
|
|
@@ -36,7 +55,7 @@ import { ToggleSizes } from "./ToggleSizes";
|
|
|
36
55
|
| Component Version | DS Version |
|
|
37
56
|
| ----------------- | ---------- |
|
|
38
57
|
| Added | `0.25.8` |
|
|
39
|
-
| Latest | `0.25.
|
|
58
|
+
| Latest | `0.25.10` |
|
|
40
59
|
|
|
41
60
|
<Description of={Toggle} />
|
|
42
61
|
|
|
@@ -52,17 +71,22 @@ The Toggle component label should clarify the action being performed. Labels sho
|
|
|
52
71
|
<Story
|
|
53
72
|
name="Toggle"
|
|
54
73
|
args={{
|
|
55
|
-
|
|
56
|
-
size: "large",
|
|
74
|
+
additionalStyles: undefined,
|
|
57
75
|
defaultChecked: false,
|
|
58
76
|
helperText: "This is the helper text!",
|
|
77
|
+
id: "toggle-1",
|
|
59
78
|
invalidText: "",
|
|
79
|
+
isChecked: undefined,
|
|
60
80
|
isDisabled: false,
|
|
61
81
|
isInvalid: false,
|
|
62
82
|
isRequired: false,
|
|
83
|
+
labelText: "Test Label",
|
|
84
|
+
name: "toggle-1",
|
|
85
|
+
onChange: undefined,
|
|
86
|
+
size: "ToogleSizes.Large",
|
|
63
87
|
}}
|
|
64
88
|
>
|
|
65
|
-
{(args) => <Toggle {...args} />}
|
|
89
|
+
{(args) => <Toggle {...args} size={sizeEnumValues.getValue(args.size)} />}
|
|
66
90
|
</Story>
|
|
67
91
|
</Canvas>
|
|
68
92
|
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import {
|
|
3
2
|
Box,
|
|
4
3
|
Switch,
|
|
5
4
|
useMultiStyleConfig,
|
|
6
5
|
useStyleConfig,
|
|
7
6
|
} from "@chakra-ui/react";
|
|
8
|
-
import
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
|
|
9
|
+
import HelperErrorText, {
|
|
10
|
+
HelperErrorTextType,
|
|
11
|
+
} from "../HelperErrorText/HelperErrorText";
|
|
9
12
|
import { ToggleSizes } from "./ToggleSizes";
|
|
10
|
-
import
|
|
13
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
11
14
|
|
|
12
15
|
export interface ToggleProps {
|
|
13
16
|
/** Optionally pass in additional Chakra-based styles. */
|
|
@@ -16,12 +19,12 @@ export interface ToggleProps {
|
|
|
16
19
|
* If true, the toggle will be initially set to the "on" position. */
|
|
17
20
|
defaultChecked?: boolean;
|
|
18
21
|
/** Optional string to populate the HelperErrorText for standard state */
|
|
19
|
-
helperText?:
|
|
22
|
+
helperText?: HelperErrorTextType;
|
|
20
23
|
/** ID that other components can cross reference for accessibility purposes */
|
|
21
24
|
id?: string;
|
|
22
25
|
/** Optional string to populate the HelperErrorText for the error state
|
|
23
26
|
* when `isInvalid` is true. */
|
|
24
|
-
invalidText?:
|
|
27
|
+
invalidText?: HelperErrorTextType;
|
|
25
28
|
/** When using the Toggle as a "controlled" form element, you can specify
|
|
26
29
|
* the Toggle's checked state using this prop.
|
|
27
30
|
* Learn more about controlled and uncontrolled form fields:
|
|
@@ -71,7 +74,7 @@ const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(
|
|
|
71
74
|
onChange = onChangeDefault,
|
|
72
75
|
size = ToggleSizes.Large,
|
|
73
76
|
} = props;
|
|
74
|
-
const footnote = isInvalid ? invalidText : helperText;
|
|
77
|
+
const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
|
|
75
78
|
const ariaAttributes = {};
|
|
76
79
|
const styles = useMultiStyleConfig("Toggle", {});
|
|
77
80
|
const switchStyles = useStyleConfig("Switch");
|
|
@@ -105,9 +108,11 @@ const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(
|
|
|
105
108
|
</Box>
|
|
106
109
|
{footnote && (
|
|
107
110
|
<Box __css={styles.helper}>
|
|
108
|
-
<HelperErrorText
|
|
109
|
-
{
|
|
110
|
-
|
|
111
|
+
<HelperErrorText
|
|
112
|
+
id={`${id}-helperText`}
|
|
113
|
+
isInvalid={isInvalid}
|
|
114
|
+
text={footnote}
|
|
115
|
+
/>
|
|
111
116
|
</Box>
|
|
112
117
|
)}
|
|
113
118
|
</>
|
|
@@ -5,7 +5,7 @@ exports[`Toggle Renders the UI snapshot correctly 1`] = `
|
|
|
5
5
|
className="css-0"
|
|
6
6
|
>
|
|
7
7
|
<label
|
|
8
|
-
className="chakra-switch css-
|
|
8
|
+
className="chakra-switch css-16pgy8f"
|
|
9
9
|
onClick={[Function]}
|
|
10
10
|
>
|
|
11
11
|
<input
|
|
@@ -66,7 +66,7 @@ exports[`Toggle Renders the UI snapshot correctly 2`] = `
|
|
|
66
66
|
className="css-0"
|
|
67
67
|
>
|
|
68
68
|
<label
|
|
69
|
-
className="chakra-switch css-
|
|
69
|
+
className="chakra-switch css-16pgy8f"
|
|
70
70
|
data-checked=""
|
|
71
71
|
onClick={[Function]}
|
|
72
72
|
>
|
|
@@ -131,7 +131,7 @@ exports[`Toggle Renders the UI snapshot correctly 3`] = `
|
|
|
131
131
|
className="css-0"
|
|
132
132
|
>
|
|
133
133
|
<label
|
|
134
|
-
className="chakra-switch css-
|
|
134
|
+
className="chakra-switch css-16pgy8f"
|
|
135
135
|
data-invalid=""
|
|
136
136
|
onClick={[Function]}
|
|
137
137
|
>
|
|
@@ -195,7 +195,7 @@ exports[`Toggle Renders the UI snapshot correctly 4`] = `
|
|
|
195
195
|
className="css-0"
|
|
196
196
|
>
|
|
197
197
|
<label
|
|
198
|
-
className="chakra-switch css-
|
|
198
|
+
className="chakra-switch css-16pgy8f"
|
|
199
199
|
data-disabled=""
|
|
200
200
|
onClick={[Function]}
|
|
201
201
|
>
|