@nypl/design-system-react-components 0.25.11 → 0.26.0
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 +151 -0
- package/README.md +14 -26
- package/dist/components/Accordion/Accordion.d.ts +6 -4
- package/dist/components/Accordion/AccordionTypes.d.ts +5 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +2 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +22 -29
- package/dist/components/Checkbox/Checkbox.d.ts +3 -3
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +9 -6
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +5 -6
- package/dist/components/Fieldset/Fieldset.d.ts +5 -6
- package/dist/components/Form/Form.d.ts +6 -6
- package/dist/components/Grid/GridTypes.d.ts +7 -7
- package/dist/components/Grid/SimpleGrid.d.ts +1 -1
- package/dist/components/Heading/Heading.d.ts +5 -5
- package/dist/components/Heading/HeadingTypes.d.ts +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +9 -5
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Icons/IconTypes.d.ts +10 -7
- package/dist/components/Image/Image.d.ts +27 -9
- package/dist/components/Image/ImageTypes.d.ts +4 -4
- package/dist/components/Label/Label.d.ts +7 -4
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/List/List.d.ts +11 -11
- package/dist/components/List/ListTypes.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +2 -1
- package/dist/components/Logo/LogoSvgs.d.ts +8 -0
- package/dist/components/Logo/LogoTypes.d.ts +10 -2
- package/dist/components/Notification/Notification.d.ts +7 -7
- package/dist/components/Pagination/Pagination.d.ts +8 -4
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
- package/dist/components/Radio/Radio.d.ts +5 -7
- package/dist/components/RadioGroup/RadioGroup.d.ts +16 -8
- package/dist/components/SearchBar/SearchBar.d.ts +5 -5
- package/dist/components/Select/Select.d.ts +12 -8
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -6
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +0 -4
- package/dist/components/Slider/Slider.d.ts +6 -4
- package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +10 -23
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +7 -6
- package/dist/components/Template/Template.d.ts +18 -9
- package/dist/components/Text/Text.d.ts +4 -4
- package/dist/components/Text/TextTypes.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +7 -7
- package/dist/components/Toggle/Toggle.d.ts +8 -10
- package/dist/components/Toggle/{ToggleSizes.d.ts → ToggleTypes.d.ts} +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +2802 -1686
- 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 +2811 -1699
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/helpers/enums.d.ts +4 -0
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +11 -9
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +7 -12
- package/dist/theme/components/breadcrumb.d.ts +6 -0
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +44 -24
- package/dist/theme/components/checkbox.d.ts +6 -6
- package/dist/theme/components/checkboxGroup.d.ts +4 -2
- package/dist/theme/components/componentWrapper.d.ts +2 -2
- package/dist/theme/components/customTable.d.ts +84 -1
- package/dist/theme/components/fieldset.d.ts +6 -14
- package/dist/theme/components/global.d.ts +37 -29
- package/dist/theme/components/globalMixins.d.ts +8 -8
- package/dist/theme/components/heading.d.ts +53 -0
- package/dist/theme/components/helperErrorText.d.ts +1 -0
- package/dist/theme/components/hero.d.ts +21 -15
- package/dist/theme/components/image.d.ts +1 -1
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +105 -9
- package/dist/theme/components/notification.d.ts +7 -4
- package/dist/theme/components/pagination.d.ts +2 -5
- package/dist/theme/components/radio.d.ts +10 -6
- package/dist/theme/components/radioGroup.d.ts +4 -2
- package/dist/theme/components/select.d.ts +38 -13
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +14 -7
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +22 -14
- package/dist/theme/components/toggle.d.ts +25 -6
- package/dist/theme/foundations/global.d.ts +33 -3
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +5 -6
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
- package/src/components/Accordion/Accordion.stories.mdx +150 -66
- package/src/components/Accordion/Accordion.test.tsx +65 -17
- package/src/components/Accordion/Accordion.tsx +61 -27
- package/src/components/Accordion/AccordionTypes.tsx +5 -0
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +53 -18
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +66 -35
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +2 -1
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +308 -10
- package/src/components/Button/Button.stories.mdx +87 -23
- package/src/components/Button/Button.test.tsx +25 -0
- package/src/components/Button/Button.tsx +18 -7
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
- package/src/components/Card/Card.stories.mdx +493 -329
- package/src/components/Card/Card.test.tsx +138 -18
- package/src/components/Card/Card.tsx +151 -85
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +220 -100
- package/src/components/Chakra/Center.stories.mdx +2 -2
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
- package/src/components/Checkbox/Checkbox.test.tsx +89 -10
- package/src/components/Checkbox/Checkbox.tsx +27 -16
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
- package/src/components/DatePicker/DatePicker.test.tsx +94 -15
- package/src/components/DatePicker/DatePicker.tsx +67 -58
- package/src/components/DatePicker/_DatePicker.scss +71 -13
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
- package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
- package/src/components/Fieldset/Fieldset.test.tsx +58 -28
- package/src/components/Fieldset/Fieldset.tsx +35 -30
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
- package/src/components/Form/Form.stories.mdx +118 -47
- package/src/components/Form/Form.test.tsx +59 -16
- package/src/components/Form/Form.tsx +89 -65
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
- package/src/components/Grid/GridTypes.tsx +7 -7
- package/src/components/Grid/SimpleGrid.stories.mdx +87 -41
- package/src/components/Grid/SimpleGrid.test.tsx +24 -9
- package/src/components/Grid/SimpleGrid.tsx +29 -20
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
- package/src/components/Heading/Heading.stories.mdx +56 -25
- package/src/components/Heading/Heading.test.tsx +17 -7
- package/src/components/Heading/Heading.tsx +60 -58
- package/src/components/Heading/HeadingTypes.tsx +1 -1
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
- package/src/components/Hero/Hero.stories.mdx +143 -113
- package/src/components/Hero/Hero.test.tsx +146 -58
- package/src/components/Hero/Hero.tsx +144 -112
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -17
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +80 -23
- package/src/components/Icons/Icon.test.tsx +51 -2
- package/src/components/Icons/Icon.tsx +93 -71
- package/src/components/Icons/IconTypes.tsx +9 -6
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +160 -71
- package/src/components/Image/Image.test.tsx +40 -48
- package/src/components/Image/Image.tsx +80 -48
- package/src/components/Image/ImageTypes.ts +4 -4
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
- package/src/components/Label/Label.stories.mdx +42 -20
- package/src/components/Label/Label.test.tsx +42 -17
- package/src/components/Label/Label.tsx +22 -13
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
- package/src/components/Link/Link.stories.mdx +25 -1
- package/src/components/Link/Link.test.tsx +21 -0
- package/src/components/Link/Link.tsx +16 -9
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
- package/src/components/List/List.stories.mdx +75 -40
- package/src/components/List/List.test.tsx +73 -22
- package/src/components/List/List.tsx +44 -28
- package/src/components/List/ListTypes.tsx +1 -1
- package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
- package/src/components/Logo/Logo.stories.mdx +40 -16
- package/src/components/Logo/Logo.test.tsx +29 -2
- package/src/components/Logo/Logo.tsx +28 -11
- package/src/components/Logo/LogoSvgs.tsx +16 -0
- package/src/components/Logo/LogoTypes.tsx +9 -1
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
- package/src/components/Modal/Modal.stories.mdx +13 -0
- package/src/components/Notification/Notification.stories.mdx +34 -5
- package/src/components/Notification/Notification.test.tsx +43 -9
- package/src/components/Notification/Notification.tsx +59 -55
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +256 -32
- package/src/components/Pagination/Pagination.stories.mdx +76 -13
- package/src/components/Pagination/Pagination.test.tsx +116 -5
- package/src/components/Pagination/Pagination.tsx +54 -29
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +247 -30
- package/src/components/Placeholder/Placeholder.tsx +3 -1
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +87 -13
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +75 -11
- package/src/components/Radio/Radio.test.tsx +83 -9
- package/src/components/Radio/Radio.tsx +70 -61
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +168 -10
- package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
- package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
- package/src/components/RadioGroup/RadioGroup.tsx +110 -101
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
- package/src/components/SearchBar/SearchBar.stories.mdx +104 -39
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +66 -6
- package/src/components/SearchBar/SearchBar.tsx +23 -13
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +151 -62
- package/src/components/Select/Select.test.tsx +56 -44
- package/src/components/Select/Select.tsx +125 -104
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +53 -23
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +123 -41
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +34 -24
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
- package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
- package/src/components/StatusBadge/StatusBadge.test.tsx +19 -1
- package/src/components/StatusBadge/StatusBadge.tsx +25 -20
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
- package/src/components/StructuredContent/StructuredContent.stories.mdx +229 -61
- package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
- package/src/components/StructuredContent/StructuredContent.tsx +98 -103
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +9 -9
- package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
- package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
- package/src/components/StyleGuide/ColorCard.tsx +4 -4
- package/src/components/StyleGuide/Colors.stories.mdx +34 -20
- package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
- package/src/components/StyleGuide/Forms.stories.mdx +27 -12
- package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
- package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
- package/src/components/StyleGuide/Typography.stories.mdx +47 -33
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +16 -1
- package/src/components/Table/Table.tsx +10 -8
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +59 -10
- package/src/components/Tabs/Tabs.test.tsx +29 -11
- package/src/components/Tabs/Tabs.tsx +28 -21
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +73 -32
- package/src/components/Template/Template.test.tsx +68 -5
- package/src/components/Template/Template.tsx +86 -72
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
- package/src/components/Text/Text.stories.mdx +32 -15
- package/src/components/Text/Text.test.tsx +14 -11
- package/src/components/Text/Text.tsx +13 -16
- package/src/components/Text/TextTypes.tsx +1 -1
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +73 -27
- package/src/components/TextInput/TextInput.test.tsx +65 -50
- package/src/components/TextInput/TextInput.tsx +123 -115
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +74 -26
- package/src/components/Toggle/Toggle.test.tsx +41 -10
- package/src/components/Toggle/Toggle.tsx +31 -27
- package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +195 -8
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
- package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
- package/src/docs/Chakra.stories.mdx +51 -10
- package/src/docs/Welcome.stories.mdx +168 -0
- package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
- package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
- package/src/hooks/useCarouselStyles.stories.mdx +30 -0
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +31 -7
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +11 -15
- package/src/styles/base/_place-holder.scss +3 -1
- package/src/styles.scss +0 -2
- package/src/theme/components/accordion.ts +7 -12
- package/src/theme/components/breadcrumb.ts +7 -0
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +56 -36
- package/src/theme/components/checkbox.ts +12 -14
- package/src/theme/components/checkboxGroup.ts +4 -2
- package/src/theme/components/componentWrapper.ts +2 -2
- package/src/theme/components/customTable.ts +39 -31
- package/src/theme/components/fieldset.ts +3 -2
- package/src/theme/components/global.ts +42 -33
- package/src/theme/components/globalMixins.ts +8 -8
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +14 -16
- package/src/theme/components/icon.ts +5 -2
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +76 -65
- package/src/theme/components/notification.ts +10 -7
- package/src/theme/components/pagination.ts +2 -5
- package/src/theme/components/progressIndicator.ts +3 -3
- package/src/theme/components/radio.ts +11 -14
- package/src/theme/components/radioGroup.ts +4 -2
- package/src/theme/components/select.ts +37 -18
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +19 -15
- package/src/theme/components/statusBadge.ts +2 -2
- package/src/theme/components/structuredContent.ts +66 -1
- package/src/theme/components/tabs.ts +2 -2
- package/src/theme/components/template.ts +9 -9
- package/src/theme/components/textInput.ts +13 -12
- package/src/theme/components/toggle.ts +76 -42
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +20 -13
- package/src/theme/foundations/global.ts +17 -5
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +3 -3
- package/src/utils/componentCategories.ts +28 -21
- package/src/utils/utils.ts +28 -0
- package/dist/components/Card/CardTypes.d.ts +0 -4
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
- package/dist/components/Pagination/Pagination.stories.d.ts +0 -13
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
- package/src/components/Pagination/Pagination.stories.tsx +0 -54
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
- package/src/docs/Intro.stories.mdx +0 -53
- package/src/helpers/generateUUID.tsx +0 -5
- package/src/styles/base/_03-base.scss +0 -25
- package/src/styles/base/_04-focus.scss +0 -22
|
@@ -10,6 +10,7 @@ describe("Slider Accessibility", () => {
|
|
|
10
10
|
it("passes axe accessibility test", async () => {
|
|
11
11
|
const { container } = render(
|
|
12
12
|
<Slider
|
|
13
|
+
id="slider"
|
|
13
14
|
defaultValue={50}
|
|
14
15
|
helperText="Component helper text."
|
|
15
16
|
invalidText="Component error text :("
|
|
@@ -21,6 +22,7 @@ describe("Slider Accessibility", () => {
|
|
|
21
22
|
it("passes axe accessibility test without a label", async () => {
|
|
22
23
|
const { container } = render(
|
|
23
24
|
<Slider
|
|
25
|
+
id="slider"
|
|
24
26
|
defaultValue={50}
|
|
25
27
|
helperText="Component helper text."
|
|
26
28
|
invalidText="Component error text :("
|
|
@@ -33,6 +35,7 @@ describe("Slider Accessibility", () => {
|
|
|
33
35
|
it("passes axe accessibility test without visible values", async () => {
|
|
34
36
|
const { container } = render(
|
|
35
37
|
<Slider
|
|
38
|
+
id="slider"
|
|
36
39
|
defaultValue={50}
|
|
37
40
|
helperText="Component helper text."
|
|
38
41
|
invalidText="Component error text :("
|
|
@@ -49,6 +52,7 @@ describe("Slider Accessibility", () => {
|
|
|
49
52
|
it("passes axe accessibility test", async () => {
|
|
50
53
|
const { container } = render(
|
|
51
54
|
<Slider
|
|
55
|
+
id="slider"
|
|
52
56
|
defaultValue={[25, 75]}
|
|
53
57
|
helperText="Component helper text."
|
|
54
58
|
invalidText="Component error text :("
|
|
@@ -61,6 +65,7 @@ describe("Slider Accessibility", () => {
|
|
|
61
65
|
it("passes axe accessibility test without a label", async () => {
|
|
62
66
|
const { container } = render(
|
|
63
67
|
<Slider
|
|
68
|
+
id="slider"
|
|
64
69
|
defaultValue={[25, 75]}
|
|
65
70
|
helperText="Component helper text."
|
|
66
71
|
invalidText="Component error text :("
|
|
@@ -74,6 +79,7 @@ describe("Slider Accessibility", () => {
|
|
|
74
79
|
it("passes axe accessibility test without visible values", async () => {
|
|
75
80
|
const { container } = render(
|
|
76
81
|
<Slider
|
|
82
|
+
id="slider"
|
|
77
83
|
defaultValue={[25, 75]}
|
|
78
84
|
helperText="Component helper text."
|
|
79
85
|
invalidText="Component error text :("
|
|
@@ -93,6 +99,7 @@ describe("Slider", () => {
|
|
|
93
99
|
it("renders a label, two static values, text input, and helper text", () => {
|
|
94
100
|
render(
|
|
95
101
|
<Slider
|
|
102
|
+
id="slider"
|
|
96
103
|
defaultValue={50}
|
|
97
104
|
helperText="Component helper text."
|
|
98
105
|
invalidText="Component error text :("
|
|
@@ -100,7 +107,6 @@ describe("Slider", () => {
|
|
|
100
107
|
/>
|
|
101
108
|
);
|
|
102
109
|
expect(screen.getByText(/Label/i)).toBeInTheDocument();
|
|
103
|
-
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
104
110
|
expect(screen.getByRole("slider")).toBeInTheDocument();
|
|
105
111
|
// default min and max values
|
|
106
112
|
expect(screen.getByText("0")).toBeInTheDocument();
|
|
@@ -128,20 +134,10 @@ describe("Slider", () => {
|
|
|
128
134
|
expect(slider).toHaveAttribute("aria-labelledBy", "sliderId-label");
|
|
129
135
|
});
|
|
130
136
|
|
|
131
|
-
it("renders the '
|
|
137
|
+
it("renders the '(Required)' text in the label or hides it", () => {
|
|
132
138
|
const { rerender } = render(
|
|
133
139
|
<Slider
|
|
134
|
-
|
|
135
|
-
helperText="Component helper text."
|
|
136
|
-
invalidText="Component error text :("
|
|
137
|
-
labelText="Label"
|
|
138
|
-
/>
|
|
139
|
-
);
|
|
140
|
-
// "Optional" by default.
|
|
141
|
-
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
142
|
-
|
|
143
|
-
rerender(
|
|
144
|
-
<Slider
|
|
140
|
+
id="slider"
|
|
145
141
|
defaultValue={50}
|
|
146
142
|
helperText="Component helper text."
|
|
147
143
|
invalidText="Component error text :("
|
|
@@ -149,26 +145,26 @@ describe("Slider", () => {
|
|
|
149
145
|
isRequired
|
|
150
146
|
/>
|
|
151
147
|
);
|
|
152
|
-
expect(screen.queryByText(/Optional/i)).not.toBeInTheDocument();
|
|
153
148
|
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
154
149
|
|
|
155
150
|
rerender(
|
|
156
151
|
<Slider
|
|
152
|
+
id="slider"
|
|
157
153
|
defaultValue={50}
|
|
158
154
|
helperText="Component helper text."
|
|
159
155
|
invalidText="Component error text :("
|
|
160
156
|
labelText="Label"
|
|
161
157
|
isRequired
|
|
162
|
-
|
|
158
|
+
showRequiredLabel={false}
|
|
163
159
|
/>
|
|
164
160
|
);
|
|
165
|
-
expect(screen.queryByText(/Optional/i)).not.toBeInTheDocument();
|
|
166
161
|
expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
|
|
167
162
|
});
|
|
168
163
|
|
|
169
164
|
it("hides the label but adds it as an aria-label attribute", () => {
|
|
170
165
|
render(
|
|
171
166
|
<Slider
|
|
167
|
+
id="slider"
|
|
172
168
|
defaultValue={50}
|
|
173
169
|
helperText="Component helper text."
|
|
174
170
|
invalidText="Component error text :("
|
|
@@ -184,6 +180,7 @@ describe("Slider", () => {
|
|
|
184
180
|
it("hides the min/max static values", () => {
|
|
185
181
|
const { rerender } = render(
|
|
186
182
|
<Slider
|
|
183
|
+
id="slider"
|
|
187
184
|
defaultValue={50}
|
|
188
185
|
helperText="Component helper text."
|
|
189
186
|
invalidText="Component error text :("
|
|
@@ -197,6 +194,7 @@ describe("Slider", () => {
|
|
|
197
194
|
|
|
198
195
|
rerender(
|
|
199
196
|
<Slider
|
|
197
|
+
id="slider"
|
|
200
198
|
defaultValue={50}
|
|
201
199
|
helperText="Component helper text."
|
|
202
200
|
invalidText="Component error text :("
|
|
@@ -213,6 +211,7 @@ describe("Slider", () => {
|
|
|
213
211
|
it("hides the current value input box", () => {
|
|
214
212
|
const { rerender } = render(
|
|
215
213
|
<Slider
|
|
214
|
+
id="slider"
|
|
216
215
|
defaultValue={50}
|
|
217
216
|
helperText="Component helper text."
|
|
218
217
|
invalidText="Component error text :("
|
|
@@ -224,6 +223,7 @@ describe("Slider", () => {
|
|
|
224
223
|
|
|
225
224
|
rerender(
|
|
226
225
|
<Slider
|
|
226
|
+
id="slider"
|
|
227
227
|
defaultValue={50}
|
|
228
228
|
helperText="Component helper text."
|
|
229
229
|
invalidText="Component error text :("
|
|
@@ -237,6 +237,7 @@ describe("Slider", () => {
|
|
|
237
237
|
it("renders the invalid state", () => {
|
|
238
238
|
render(
|
|
239
239
|
<Slider
|
|
240
|
+
id="slider"
|
|
240
241
|
defaultValue={50}
|
|
241
242
|
helperText="Component helper text."
|
|
242
243
|
invalidText="Component error text :("
|
|
@@ -258,6 +259,7 @@ describe("Slider", () => {
|
|
|
258
259
|
it("renders the disabled state", () => {
|
|
259
260
|
render(
|
|
260
261
|
<Slider
|
|
262
|
+
id="slider"
|
|
261
263
|
defaultValue={50}
|
|
262
264
|
helperText="Component helper text."
|
|
263
265
|
invalidText="Component error text :("
|
|
@@ -274,6 +276,7 @@ describe("Slider", () => {
|
|
|
274
276
|
it("updates the value through the text input", () => {
|
|
275
277
|
render(
|
|
276
278
|
<Slider
|
|
279
|
+
id="slider"
|
|
277
280
|
defaultValue={50}
|
|
278
281
|
helperText="Component helper text."
|
|
279
282
|
invalidText="Component error text :("
|
|
@@ -298,6 +301,7 @@ describe("Slider", () => {
|
|
|
298
301
|
let currentValue = 0;
|
|
299
302
|
render(
|
|
300
303
|
<Slider
|
|
304
|
+
id="slider"
|
|
301
305
|
defaultValue={50}
|
|
302
306
|
helperText="Component helper text."
|
|
303
307
|
invalidText="Component error text :("
|
|
@@ -322,6 +326,7 @@ describe("Slider", () => {
|
|
|
322
326
|
|
|
323
327
|
render(
|
|
324
328
|
<Slider
|
|
329
|
+
id="slider"
|
|
325
330
|
defaultValue={50}
|
|
326
331
|
helperText="Component helper text."
|
|
327
332
|
invalidText="Component error text :("
|
|
@@ -431,6 +436,31 @@ describe("Slider", () => {
|
|
|
431
436
|
/>
|
|
432
437
|
)
|
|
433
438
|
.toJSON();
|
|
439
|
+
const withChakraProps = renderer
|
|
440
|
+
.create(
|
|
441
|
+
<Slider
|
|
442
|
+
id="chakra"
|
|
443
|
+
defaultValue={50}
|
|
444
|
+
helperText="Component helper text."
|
|
445
|
+
invalidText="Component error text :("
|
|
446
|
+
labelText="Label"
|
|
447
|
+
p="20px"
|
|
448
|
+
color="ui.error.primary"
|
|
449
|
+
/>
|
|
450
|
+
)
|
|
451
|
+
.toJSON();
|
|
452
|
+
const withOtherProps = renderer
|
|
453
|
+
.create(
|
|
454
|
+
<Slider
|
|
455
|
+
id="props"
|
|
456
|
+
defaultValue={50}
|
|
457
|
+
helperText="Component helper text."
|
|
458
|
+
invalidText="Component error text :("
|
|
459
|
+
labelText="Label"
|
|
460
|
+
data-testid="props"
|
|
461
|
+
/>
|
|
462
|
+
)
|
|
463
|
+
.toJSON();
|
|
434
464
|
|
|
435
465
|
expect(defaultSlider).toMatchSnapshot();
|
|
436
466
|
expect(errored).toMatchSnapshot();
|
|
@@ -439,6 +469,8 @@ describe("Slider", () => {
|
|
|
439
469
|
expect(noLabels).toMatchSnapshot();
|
|
440
470
|
expect(noVisibleValues).toMatchSnapshot();
|
|
441
471
|
expect(onlySlider).toMatchSnapshot();
|
|
472
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
473
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
442
474
|
});
|
|
443
475
|
});
|
|
444
476
|
|
|
@@ -446,6 +478,7 @@ describe("Slider", () => {
|
|
|
446
478
|
it("renders everything from the single but also two text input fields", () => {
|
|
447
479
|
render(
|
|
448
480
|
<Slider
|
|
481
|
+
id="slider"
|
|
449
482
|
defaultValue={[25, 75]}
|
|
450
483
|
helperText="Component helper text."
|
|
451
484
|
invalidText="Component error text :("
|
|
@@ -454,7 +487,6 @@ describe("Slider", () => {
|
|
|
454
487
|
/>
|
|
455
488
|
);
|
|
456
489
|
expect(screen.getByText(/Label/i)).toBeInTheDocument();
|
|
457
|
-
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
458
490
|
// The range slider has two sliders!
|
|
459
491
|
expect(screen.getAllByRole("slider")).toHaveLength(2);
|
|
460
492
|
// default min and max values
|
|
@@ -495,6 +527,7 @@ describe("Slider", () => {
|
|
|
495
527
|
it("hides the label but adds it as an aria-label attribute", () => {
|
|
496
528
|
render(
|
|
497
529
|
<Slider
|
|
530
|
+
id="slider"
|
|
498
531
|
defaultValue={[25, 75]}
|
|
499
532
|
helperText="Component helper text."
|
|
500
533
|
invalidText="Component error text :("
|
|
@@ -518,6 +551,7 @@ describe("Slider", () => {
|
|
|
518
551
|
it("renders with min and max values as the default values if no `defaultValue` array is passed", () => {
|
|
519
552
|
render(
|
|
520
553
|
<Slider
|
|
554
|
+
id="slider"
|
|
521
555
|
helperText="Component helper text."
|
|
522
556
|
invalidText="Component error text :("
|
|
523
557
|
isRangeSlider
|
|
@@ -534,6 +568,7 @@ describe("Slider", () => {
|
|
|
534
568
|
// The start value is bigger than the end value.
|
|
535
569
|
render(
|
|
536
570
|
<Slider
|
|
571
|
+
id="slider"
|
|
537
572
|
defaultValue={[75, 25]}
|
|
538
573
|
helperText="Component helper text."
|
|
539
574
|
invalidText="Component error text :("
|
|
@@ -559,6 +594,7 @@ describe("Slider", () => {
|
|
|
559
594
|
it("updates the value through the text input", () => {
|
|
560
595
|
render(
|
|
561
596
|
<Slider
|
|
597
|
+
id="slider"
|
|
562
598
|
defaultValue={[25, 75]}
|
|
563
599
|
helperText="Component helper text."
|
|
564
600
|
invalidText="Component error text :("
|
|
@@ -579,6 +615,18 @@ describe("Slider", () => {
|
|
|
579
615
|
expect(endingInput).toHaveValue(79);
|
|
580
616
|
});
|
|
581
617
|
|
|
618
|
+
it("logs a warning when there is no `id` passed", () => {
|
|
619
|
+
const warn = jest.spyOn(console, "warn");
|
|
620
|
+
render(
|
|
621
|
+
// @ts-ignore: Typescript complains when a required prop is not passed, but
|
|
622
|
+
// here we don't want to pass the required prop to make sure the warning appears.
|
|
623
|
+
<Slider labelText="Label" />
|
|
624
|
+
);
|
|
625
|
+
expect(warn).toHaveBeenCalledWith(
|
|
626
|
+
"NYPL Reservoir Slider: This component's required `id` prop was not passed."
|
|
627
|
+
);
|
|
628
|
+
});
|
|
629
|
+
|
|
582
630
|
it("renders the UI snapshot correctly", () => {
|
|
583
631
|
const defaultRangeSlider = renderer
|
|
584
632
|
.create(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import {
|
|
3
2
|
Box,
|
|
3
|
+
chakra,
|
|
4
4
|
RangeSlider as ChakraRangeSlider,
|
|
5
5
|
RangeSliderTrack as ChakraRangeSliderTrack,
|
|
6
6
|
RangeSliderFilledTrack as ChakraRangeSliderFilledTrack,
|
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
SliderThumb as ChakraSliderThumb,
|
|
12
12
|
useMultiStyleConfig,
|
|
13
13
|
} from "@chakra-ui/react";
|
|
14
|
+
import * as React from "react";
|
|
14
15
|
|
|
15
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
16
16
|
import Label from "../Label/Label";
|
|
17
17
|
import HelperErrorText, {
|
|
18
18
|
HelperErrorTextType,
|
|
@@ -30,7 +30,7 @@ export interface SliderProps {
|
|
|
30
30
|
/** Optional string to populate the HelperErrorText for standard state */
|
|
31
31
|
helperText?: HelperErrorTextType;
|
|
32
32
|
/** ID that other components can cross reference for accessibility purposes. */
|
|
33
|
-
id
|
|
33
|
+
id: string;
|
|
34
34
|
/** Optional string to populate the `HelperErrorText` for the error state
|
|
35
35
|
* when `isInvalid` is true. */
|
|
36
36
|
invalidText?: HelperErrorTextType;
|
|
@@ -56,8 +56,6 @@ export interface SliderProps {
|
|
|
56
56
|
name?: string;
|
|
57
57
|
/** Callback function that gets the value(s) selected. */
|
|
58
58
|
onChange?: (val: number | number[]) => void;
|
|
59
|
-
/** Whether or not to display the "Required"/"Optional" text in the label text. */
|
|
60
|
-
optReqFlag?: boolean;
|
|
61
59
|
/** Offers the ability to hide the `TextInput` boxes. */
|
|
62
60
|
showBoxes?: boolean;
|
|
63
61
|
/** Offers the ability to hide the helper/invalid text. */
|
|
@@ -65,6 +63,9 @@ export interface SliderProps {
|
|
|
65
63
|
/** Offers the ability to show the label onscreen or hide it. Refer
|
|
66
64
|
* to the `labelText` property for more information. */
|
|
67
65
|
showLabel?: boolean;
|
|
66
|
+
/** Whether or not to display the "(Required)" text in the label text.
|
|
67
|
+
* True by default. */
|
|
68
|
+
showRequiredLabel?: boolean;
|
|
68
69
|
/** Offers the ability to hide the static min/max values. */
|
|
69
70
|
showValues?: boolean;
|
|
70
71
|
/** The amount to increase or decrease when using the slider thumb(s). */
|
|
@@ -76,12 +77,12 @@ export interface SliderProps {
|
|
|
76
77
|
* with a min and max value. The value(s) can be updated through the slider
|
|
77
78
|
* thumb(s) or through the text input(s) elements.
|
|
78
79
|
*/
|
|
79
|
-
export
|
|
80
|
+
export const Slider = chakra((props: React.PropsWithChildren<SliderProps>) => {
|
|
80
81
|
const {
|
|
81
82
|
className,
|
|
82
83
|
defaultValue = 0,
|
|
83
84
|
helperText,
|
|
84
|
-
id
|
|
85
|
+
id,
|
|
85
86
|
invalidText,
|
|
86
87
|
isDisabled = false,
|
|
87
88
|
isInvalid = false,
|
|
@@ -92,13 +93,20 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
|
|
|
92
93
|
min = 0,
|
|
93
94
|
name,
|
|
94
95
|
onChange,
|
|
95
|
-
optReqFlag = true,
|
|
96
96
|
showBoxes = true,
|
|
97
97
|
showHelperInvalidText = true,
|
|
98
98
|
showLabel = true,
|
|
99
|
+
showRequiredLabel = true,
|
|
99
100
|
showValues = true,
|
|
100
101
|
step = 1,
|
|
102
|
+
...rest
|
|
101
103
|
} = props;
|
|
104
|
+
|
|
105
|
+
if (!id) {
|
|
106
|
+
console.warn(
|
|
107
|
+
"NYPL Reservoir Slider: This component's required `id` prop was not passed."
|
|
108
|
+
);
|
|
109
|
+
}
|
|
102
110
|
// For the RangeSlider, if the defaultValue is not an array, then we set
|
|
103
111
|
// the defaultValue to an array with the min and max values.
|
|
104
112
|
const rangeSliderDefault =
|
|
@@ -113,15 +121,14 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
|
|
|
113
121
|
if (isRangeSlider && currentValue[0] > currentValue[1]) {
|
|
114
122
|
finalIsInvalid = true;
|
|
115
123
|
}
|
|
116
|
-
const optReqText = isRequired ? "Required" : "Optional";
|
|
117
124
|
const footnote: HelperErrorTextType = finalIsInvalid
|
|
118
125
|
? invalidText
|
|
119
126
|
: helperText;
|
|
120
127
|
const styles = useMultiStyleConfig("CustomSlider", {
|
|
121
128
|
isDisabled,
|
|
122
129
|
isInvalid: finalIsInvalid,
|
|
123
|
-
isRangeSlider,
|
|
124
130
|
showBoxes,
|
|
131
|
+
showValues,
|
|
125
132
|
});
|
|
126
133
|
// Props that the `Slider` and `RangeSlider` Chakra
|
|
127
134
|
// components both use.
|
|
@@ -133,11 +140,14 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
|
|
|
133
140
|
max,
|
|
134
141
|
min,
|
|
135
142
|
name,
|
|
136
|
-
onChange: (val) =>
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
onChange: (val) => {
|
|
144
|
+
setCurrentValue(val);
|
|
145
|
+
onChange && onChange(val);
|
|
146
|
+
},
|
|
140
147
|
step,
|
|
148
|
+
// Additional margins so slider thumbs don't overflow past the
|
|
149
|
+
// edge when the value boxes or min/max values are hidden.
|
|
150
|
+
sx: styles.sliderContainer,
|
|
141
151
|
};
|
|
142
152
|
// Props that the two `TextInput` components use.
|
|
143
153
|
const textInputSharedProps = {
|
|
@@ -268,7 +278,7 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
|
|
|
268
278
|
};
|
|
269
279
|
|
|
270
280
|
return (
|
|
271
|
-
<Box className={className} __css={styles}>
|
|
281
|
+
<Box className={className} __css={styles} {...rest}>
|
|
272
282
|
{showLabel && (
|
|
273
283
|
<Label
|
|
274
284
|
id={`${id}-label`}
|
|
@@ -281,7 +291,7 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
|
|
|
281
291
|
? `${id}-textInput-${isRangeSlider ? "start" : "end"}`
|
|
282
292
|
: null
|
|
283
293
|
}
|
|
284
|
-
|
|
294
|
+
isRequired={showRequiredLabel && isRequired}
|
|
285
295
|
>
|
|
286
296
|
{labelText}
|
|
287
297
|
</Label>
|
|
@@ -301,14 +311,14 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
|
|
|
301
311
|
</Box>
|
|
302
312
|
|
|
303
313
|
{footnote && showHelperInvalidText && (
|
|
304
|
-
<
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
/>
|
|
310
|
-
</Box>
|
|
314
|
+
<HelperErrorText
|
|
315
|
+
id={`${id}-helperText`}
|
|
316
|
+
isInvalid={finalIsInvalid}
|
|
317
|
+
text={footnote}
|
|
318
|
+
/>
|
|
311
319
|
)}
|
|
312
320
|
</Box>
|
|
313
321
|
);
|
|
314
|
-
}
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
export default Slider;
|