@nypl/design-system-react-components 0.25.13 → 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 +58 -0
- package/README.md +10 -10
- package/dist/components/Accordion/Accordion.d.ts +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +11 -9
- package/dist/components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +5 -4
- 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 +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +2 -1
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Image/Image.d.ts +2 -2
- 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 +2 -0
- package/dist/components/Logo/LogoTypes.d.ts +2 -0
- package/dist/components/Notification/Notification.d.ts +4 -4
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
- package/dist/components/Radio/Radio.d.ts +4 -6
- package/dist/components/RadioGroup/RadioGroup.d.ts +12 -6
- package/dist/components/SearchBar/SearchBar.d.ts +4 -4
- package/dist/components/Select/Select.d.ts +10 -6
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +4 -3
- 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 +2 -2
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +4 -3
- package/dist/components/Template/Template.d.ts +4 -3
- package/dist/components/Text/Text.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +5 -5
- package/dist/components/Toggle/Toggle.d.ts +3 -4
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +1663 -1139
- 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 +1667 -1143
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +4 -1
- package/dist/styles.css +1 -1
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +42 -22
- package/dist/theme/components/checkbox.d.ts +5 -4
- package/dist/theme/components/checkboxGroup.d.ts +1 -1
- 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 +4 -14
- package/dist/theme/components/global.d.ts +23 -17
- 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 +20 -14
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +99 -9
- package/dist/theme/components/radio.d.ts +6 -4
- package/dist/theme/components/radioGroup.d.ts +1 -1
- package/dist/theme/components/select.d.ts +34 -5
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +6 -3
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +18 -6
- package/dist/theme/components/toggle.d.ts +7 -4
- package/dist/theme/foundations/global.d.ts +2 -0
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/package.json +5 -6
- package/src/components/Accordion/Accordion.stories.mdx +9 -9
- package/src/components/Accordion/Accordion.test.tsx +21 -0
- package/src/components/Accordion/Accordion.tsx +13 -9
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +276 -27
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +21 -5
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +52 -31
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +8 -7
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
- 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 +287 -194
- package/src/components/Card/Card.test.tsx +102 -0
- package/src/components/Card/Card.tsx +73 -32
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +195 -35
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +62 -10
- package/src/components/Checkbox/Checkbox.test.tsx +32 -9
- package/src/components/Checkbox/Checkbox.tsx +20 -15
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +134 -7
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +65 -17
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +137 -81
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +31 -21
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +332 -97
- 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 +89 -13
- package/src/components/DatePicker/DatePicker.tsx +62 -56
- 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 +72 -39
- package/src/components/Form/Form.test.tsx +58 -15
- package/src/components/Form/Form.tsx +89 -67
- 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 +34 -6
- package/src/components/Grid/SimpleGrid.test.tsx +9 -0
- 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 +36 -3
- package/src/components/Heading/Heading.test.tsx +10 -0
- package/src/components/Heading/Heading.tsx +56 -50
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +26 -7
- 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 +125 -95
- package/src/components/Hero/Hero.test.tsx +33 -0
- package/src/components/Hero/Hero.tsx +135 -126
- 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 -19
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -26
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +31 -6
- package/src/components/Icons/Icon.test.tsx +38 -0
- package/src/components/Icons/Icon.tsx +93 -76
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +29 -5
- package/src/components/Image/Image.test.tsx +8 -0
- package/src/components/Image/Image.tsx +38 -26
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
- 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 +8 -8
- 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 +67 -19
- package/src/components/List/List.tsx +38 -25
- 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 +30 -6
- package/src/components/Logo/Logo.test.tsx +17 -0
- package/src/components/Logo/Logo.tsx +18 -6
- package/src/components/Logo/LogoSvgs.tsx +4 -0
- package/src/components/Logo/LogoTypes.tsx +2 -0
- 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 +25 -1
- package/src/components/Notification/Notification.test.tsx +23 -0
- package/src/components/Notification/Notification.tsx +46 -44
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
- package/src/components/Pagination/Pagination.stories.mdx +24 -4
- package/src/components/Pagination/Pagination.test.tsx +25 -0
- package/src/components/Pagination/Pagination.tsx +6 -6
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
- package/src/components/Placeholder/Placeholder.tsx +3 -1
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +81 -11
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +17 -9
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +64 -12
- package/src/components/Radio/Radio.test.tsx +28 -8
- package/src/components/Radio/Radio.tsx +66 -63
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +103 -6
- package/src/components/RadioGroup/RadioGroup.stories.mdx +224 -89
- package/src/components/RadioGroup/RadioGroup.test.tsx +122 -62
- package/src/components/RadioGroup/RadioGroup.tsx +106 -100
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1236 -1020
- package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
- package/src/components/SearchBar/SearchBar.tsx +17 -8
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +128 -49
- package/src/components/Select/Select.test.tsx +63 -16
- package/src/components/Select/Select.tsx +125 -92
- 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 +42 -10
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +8 -0
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +76 -72
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +91 -42
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +26 -19
- 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 +16 -0
- 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 +131 -12
- package/src/components/StructuredContent/StructuredContent.test.tsx +34 -0
- package/src/components/StructuredContent/StructuredContent.tsx +80 -75
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
- package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
- package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
- package/src/components/StyleGuide/ColorCard.tsx +1 -1
- package/src/components/StyleGuide/Colors.stories.mdx +1 -2
- 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 +30 -21
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +15 -0
- package/src/components/Table/Table.tsx +7 -7
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +52 -3
- package/src/components/Tabs/Tabs.test.tsx +16 -0
- package/src/components/Tabs/Tabs.tsx +10 -6
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +47 -43
- package/src/components/Template/Template.test.tsx +33 -0
- package/src/components/Template/Template.tsx +65 -60
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +191 -20
- package/src/components/Text/Text.stories.mdx +20 -1
- package/src/components/Text/Text.test.tsx +12 -0
- package/src/components/Text/Text.tsx +6 -4
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +65 -19
- package/src/components/TextInput/TextInput.test.tsx +42 -28
- package/src/components/TextInput/TextInput.tsx +121 -113
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +80 -22
- package/src/components/Toggle/Toggle.test.tsx +27 -9
- package/src/components/Toggle/Toggle.tsx +22 -18
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +128 -5
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +23 -0
- package/src/components/VideoPlayer/VideoPlayer.tsx +133 -126
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
- package/src/docs/Chakra.stories.mdx +50 -9
- package/src/docs/Welcome.stories.mdx +160 -41
- package/src/hooks/useCarouselStyles.stories.mdx +22 -2
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +30 -6
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +4 -1
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +30 -19
- package/src/theme/components/checkbox.ts +10 -8
- package/src/theme/components/checkboxGroup.ts +1 -1
- package/src/theme/components/componentWrapper.ts +2 -2
- package/src/theme/components/customTable.ts +39 -31
- package/src/theme/components/fieldset.ts +1 -2
- package/src/theme/components/global.ts +25 -20
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +13 -15
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +73 -66
- package/src/theme/components/notification.ts +2 -2
- package/src/theme/components/radio.ts +9 -9
- package/src/theme/components/radioGroup.ts +1 -1
- package/src/theme/components/select.ts +35 -22
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +8 -7
- 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 +17 -10
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +1 -1
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +2 -2
- package/src/utils/componentCategories.ts +1 -2
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/helpers/generateUUID.tsx +0 -5
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`Toggle Renders the UI snapshot correctly 1`] = `
|
|
4
4
|
<div
|
|
5
|
-
className="css-
|
|
5
|
+
className="css-1xdhyk6"
|
|
6
6
|
>
|
|
7
7
|
<label
|
|
8
8
|
className="chakra-switch css-18x0has"
|
|
@@ -63,7 +63,7 @@ exports[`Toggle Renders the UI snapshot correctly 1`] = `
|
|
|
63
63
|
|
|
64
64
|
exports[`Toggle Renders the UI snapshot correctly 2`] = `
|
|
65
65
|
<div
|
|
66
|
-
className="css-
|
|
66
|
+
className="css-1xdhyk6"
|
|
67
67
|
>
|
|
68
68
|
<label
|
|
69
69
|
className="chakra-switch css-18x0has"
|
|
@@ -128,7 +128,7 @@ exports[`Toggle Renders the UI snapshot correctly 2`] = `
|
|
|
128
128
|
|
|
129
129
|
exports[`Toggle Renders the UI snapshot correctly 3`] = `
|
|
130
130
|
<div
|
|
131
|
-
className="css-
|
|
131
|
+
className="css-1xdhyk6"
|
|
132
132
|
>
|
|
133
133
|
<label
|
|
134
134
|
className="chakra-switch css-18x0has"
|
|
@@ -192,7 +192,7 @@ exports[`Toggle Renders the UI snapshot correctly 3`] = `
|
|
|
192
192
|
|
|
193
193
|
exports[`Toggle Renders the UI snapshot correctly 4`] = `
|
|
194
194
|
<div
|
|
195
|
-
className="css-
|
|
195
|
+
className="css-1xdhyk6"
|
|
196
196
|
>
|
|
197
197
|
<label
|
|
198
198
|
className="chakra-switch css-18x0has"
|
|
@@ -256,7 +256,7 @@ exports[`Toggle Renders the UI snapshot correctly 4`] = `
|
|
|
256
256
|
|
|
257
257
|
exports[`Toggle Renders the UI snapshot correctly 5`] = `
|
|
258
258
|
<div
|
|
259
|
-
className="css-
|
|
259
|
+
className="css-1xdhyk6"
|
|
260
260
|
>
|
|
261
261
|
<label
|
|
262
262
|
className="chakra-switch css-18x0has"
|
|
@@ -317,3 +317,126 @@ exports[`Toggle Renders the UI snapshot correctly 5`] = `
|
|
|
317
317
|
</label>
|
|
318
318
|
</div>
|
|
319
319
|
`;
|
|
320
|
+
|
|
321
|
+
exports[`Toggle Renders the UI snapshot correctly 6`] = `
|
|
322
|
+
<div
|
|
323
|
+
className="css-13xjm0o"
|
|
324
|
+
>
|
|
325
|
+
<label
|
|
326
|
+
className="chakra-switch css-18x0has"
|
|
327
|
+
onClick={[Function]}
|
|
328
|
+
>
|
|
329
|
+
<input
|
|
330
|
+
aria-disabled={false}
|
|
331
|
+
aria-invalid={false}
|
|
332
|
+
aria-label="Test Label"
|
|
333
|
+
checked={false}
|
|
334
|
+
className="chakra-switch__input"
|
|
335
|
+
disabled={false}
|
|
336
|
+
id="chakra"
|
|
337
|
+
name="default"
|
|
338
|
+
onBlur={[Function]}
|
|
339
|
+
onChange={[Function]}
|
|
340
|
+
onFocus={[Function]}
|
|
341
|
+
onKeyDown={[Function]}
|
|
342
|
+
onKeyUp={[Function]}
|
|
343
|
+
required={false}
|
|
344
|
+
style={
|
|
345
|
+
Object {
|
|
346
|
+
"border": "0px",
|
|
347
|
+
"clip": "rect(0px, 0px, 0px, 0px)",
|
|
348
|
+
"height": "1px",
|
|
349
|
+
"margin": "-1px",
|
|
350
|
+
"overflow": "hidden",
|
|
351
|
+
"padding": "0px",
|
|
352
|
+
"position": "absolute",
|
|
353
|
+
"whiteSpace": "nowrap",
|
|
354
|
+
"width": "1px",
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
type="checkbox"
|
|
358
|
+
/>
|
|
359
|
+
<span
|
|
360
|
+
aria-hidden={true}
|
|
361
|
+
className="chakra-switch__track css-14qxnv8"
|
|
362
|
+
onMouseDown={[Function]}
|
|
363
|
+
onMouseEnter={[Function]}
|
|
364
|
+
onMouseLeave={[Function]}
|
|
365
|
+
onMouseUp={[Function]}
|
|
366
|
+
>
|
|
367
|
+
<span
|
|
368
|
+
className="chakra-switch__thumb css-0"
|
|
369
|
+
/>
|
|
370
|
+
</span>
|
|
371
|
+
<span
|
|
372
|
+
className="chakra-switch__label css-1y8kf23"
|
|
373
|
+
onMouseDown={[Function]}
|
|
374
|
+
onTouchStart={[Function]}
|
|
375
|
+
>
|
|
376
|
+
Test Label
|
|
377
|
+
</span>
|
|
378
|
+
</label>
|
|
379
|
+
</div>
|
|
380
|
+
`;
|
|
381
|
+
|
|
382
|
+
exports[`Toggle Renders the UI snapshot correctly 7`] = `
|
|
383
|
+
<div
|
|
384
|
+
className="css-1xdhyk6"
|
|
385
|
+
data-testid="props"
|
|
386
|
+
>
|
|
387
|
+
<label
|
|
388
|
+
className="chakra-switch css-18x0has"
|
|
389
|
+
onClick={[Function]}
|
|
390
|
+
>
|
|
391
|
+
<input
|
|
392
|
+
aria-disabled={false}
|
|
393
|
+
aria-invalid={false}
|
|
394
|
+
aria-label="Test Label"
|
|
395
|
+
checked={false}
|
|
396
|
+
className="chakra-switch__input"
|
|
397
|
+
disabled={false}
|
|
398
|
+
id="props"
|
|
399
|
+
name="default"
|
|
400
|
+
onBlur={[Function]}
|
|
401
|
+
onChange={[Function]}
|
|
402
|
+
onFocus={[Function]}
|
|
403
|
+
onKeyDown={[Function]}
|
|
404
|
+
onKeyUp={[Function]}
|
|
405
|
+
required={false}
|
|
406
|
+
style={
|
|
407
|
+
Object {
|
|
408
|
+
"border": "0px",
|
|
409
|
+
"clip": "rect(0px, 0px, 0px, 0px)",
|
|
410
|
+
"height": "1px",
|
|
411
|
+
"margin": "-1px",
|
|
412
|
+
"overflow": "hidden",
|
|
413
|
+
"padding": "0px",
|
|
414
|
+
"position": "absolute",
|
|
415
|
+
"whiteSpace": "nowrap",
|
|
416
|
+
"width": "1px",
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
type="checkbox"
|
|
420
|
+
/>
|
|
421
|
+
<span
|
|
422
|
+
aria-hidden={true}
|
|
423
|
+
className="chakra-switch__track css-14qxnv8"
|
|
424
|
+
onMouseDown={[Function]}
|
|
425
|
+
onMouseEnter={[Function]}
|
|
426
|
+
onMouseLeave={[Function]}
|
|
427
|
+
onMouseUp={[Function]}
|
|
428
|
+
>
|
|
429
|
+
<span
|
|
430
|
+
className="chakra-switch__thumb css-0"
|
|
431
|
+
/>
|
|
432
|
+
</span>
|
|
433
|
+
<span
|
|
434
|
+
className="chakra-switch__label css-1y8kf23"
|
|
435
|
+
onMouseDown={[Function]}
|
|
436
|
+
onTouchStart={[Function]}
|
|
437
|
+
>
|
|
438
|
+
Test Label
|
|
439
|
+
</span>
|
|
440
|
+
</label>
|
|
441
|
+
</div>
|
|
442
|
+
`;
|
|
@@ -59,15 +59,36 @@ export const typesEnumValues = getStorybookEnumValues(
|
|
|
59
59
|
| Component Version | DS Version |
|
|
60
60
|
| ----------------- | ---------- |
|
|
61
61
|
| Added | `0.23.2` |
|
|
62
|
-
| Latest | `0.
|
|
62
|
+
| Latest | `0.26.0` |
|
|
63
|
+
|
|
64
|
+
## Table of Contents
|
|
65
|
+
|
|
66
|
+
- [Overview](#overview)
|
|
67
|
+
- [Component Props](#component-props)
|
|
68
|
+
- [Accessibility](#accessibility)
|
|
69
|
+
- [Extracting Video IDs](#extracting-video-ids)
|
|
70
|
+
- [Example Embed Code Snippets](#example-embed-code-snippets)
|
|
71
|
+
- [Errored](#errored)
|
|
72
|
+
- [HTML in Helper Text](#html-in-helper-text)
|
|
73
|
+
|
|
74
|
+
## Overview
|
|
63
75
|
|
|
64
76
|
<Description of={VideoPlayer} />
|
|
65
77
|
|
|
66
|
-
The `VideoPlayer` component is used to embed a `Vimeo` or `YouTube` video player
|
|
78
|
+
The `VideoPlayer` component is used to embed a `Vimeo` or `YouTube` video player
|
|
79
|
+
on a page. The component requires the `embedCode` prop or both the `videoType`
|
|
80
|
+
and `videoId` props. The component will not function properly if you try to set
|
|
81
|
+
all of them.
|
|
67
82
|
|
|
68
|
-
You can extract the videoId from the video's URL. **IMPORTANT:** Do not try to
|
|
83
|
+
You can extract the videoId from the video's URL. **IMPORTANT:** Do not try to
|
|
84
|
+
enter the full video URL as the `videoId` value.
|
|
69
85
|
|
|
70
|
-
The `aspectRatio` prop is used to control the sizing of the space allotted for
|
|
86
|
+
The `aspectRatio` prop is used to control the sizing of the space allotted for
|
|
87
|
+
the video rendering. Ultimately, the `aspectRatio` prop should be set to match
|
|
88
|
+
the aspect ratio of the video that is being rendered. The default aspect ratio
|
|
89
|
+
is `16:9`.
|
|
90
|
+
|
|
91
|
+
## Component Props
|
|
71
92
|
|
|
72
93
|
<Canvas withToolbar>
|
|
73
94
|
<Story
|
|
@@ -104,6 +125,33 @@ The `aspectRatio` prop is used to control the sizing of the space allotted for t
|
|
|
104
125
|
**Example Vimeo IDs:** `474719268`, `491405018`, `493795778` (square)<br />
|
|
105
126
|
**Example YouTube IDs:** `PfqgDG1qrKg`, `roi5V8ppi7Y`, `nm-dD2tx6bk`
|
|
106
127
|
|
|
128
|
+
## Accessibility
|
|
129
|
+
|
|
130
|
+
The `VideoPlayer` component renders an `iframe` element with either a Vimeo or
|
|
131
|
+
YouTube video. `iframe`s can be accessible if a `title` attribute is provided.
|
|
132
|
+
When passing in a video type and a video `id`, make sure to pass a title. Otherwise,
|
|
133
|
+
the title must already be provided in the embed code value that is passed to the
|
|
134
|
+
`embedCode` prop. A default one is provided but a custom one is recommended.
|
|
135
|
+
|
|
136
|
+
Not all the Vimeo or YouTube videos passed to the `VideoPlayer` component will
|
|
137
|
+
be owned by The New York Public Library. Because these videos are hosted on a
|
|
138
|
+
third-party platform, we cannot guarantee that the video will be accessible.
|
|
139
|
+
Besides setting the `title` in the embedded `iframe`, there are _some_ ways we
|
|
140
|
+
can reduce accessibility issues.
|
|
141
|
+
|
|
142
|
+
- Never use autoplay on videos; a user must click the play button to start the
|
|
143
|
+
video.
|
|
144
|
+
- Always show all the video player's controls for the user to interact with
|
|
145
|
+
the video.
|
|
146
|
+
- Keep the full screen option available.
|
|
147
|
+
|
|
148
|
+
Resources:
|
|
149
|
+
|
|
150
|
+
- [W3C Making Audio and Video Media Accessible](https://www.w3.org/WAI/media/av/)
|
|
151
|
+
- [WebAIM Creating Accessible Frames and Iframes](https://webaim.org/techniques/frames/)
|
|
152
|
+
- [MDN iframe: The Inline Frame element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe)
|
|
153
|
+
- [Deque University Be Sure to Provide Titles for Iframes](https://dequeuniversity.com/tips/provide-iframe-titles)
|
|
154
|
+
|
|
107
155
|
## Extracting Video IDs
|
|
108
156
|
|
|
109
157
|
### Vimeo
|
|
@@ -281,10 +281,33 @@ describe("VideoPlayer", () => {
|
|
|
281
281
|
/>
|
|
282
282
|
)
|
|
283
283
|
.toJSON();
|
|
284
|
+
const withChakraProps = renderer
|
|
285
|
+
.create(
|
|
286
|
+
<VideoPlayer
|
|
287
|
+
id="chakra"
|
|
288
|
+
videoId="474719268"
|
|
289
|
+
videoType={VideoPlayerTypes.Vimeo}
|
|
290
|
+
p="20px"
|
|
291
|
+
color="ui.error.primary"
|
|
292
|
+
/>
|
|
293
|
+
)
|
|
294
|
+
.toJSON();
|
|
295
|
+
const withOtherProps = renderer
|
|
296
|
+
.create(
|
|
297
|
+
<VideoPlayer
|
|
298
|
+
id="props"
|
|
299
|
+
videoId="474719268"
|
|
300
|
+
videoType={VideoPlayerTypes.Vimeo}
|
|
301
|
+
data-testid="props"
|
|
302
|
+
/>
|
|
303
|
+
)
|
|
304
|
+
.toJSON();
|
|
284
305
|
|
|
285
306
|
expect(videoPlayerWithoutText).toMatchSnapshot();
|
|
286
307
|
expect(videoPlayerWithText).toMatchSnapshot();
|
|
287
308
|
expect(videoPlayerUsingEmbedCode).toMatchSnapshot();
|
|
288
309
|
expect(videoPlayerError).toMatchSnapshot();
|
|
310
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
311
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
289
312
|
});
|
|
290
313
|
});
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
1
|
+
import { Box, chakra, useMultiStyleConfig } from "@chakra-ui/react";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
|
|
4
4
|
import ComponentWrapper from "../ComponentWrapper/ComponentWrapper";
|
|
5
5
|
import { HelperErrorTextType } from "../HelperErrorText/HelperErrorText";
|
|
6
6
|
import { VideoPlayerAspectRatios, VideoPlayerTypes } from "./VideoPlayerTypes";
|
|
7
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
8
7
|
import { getVariant } from "../../utils/utils";
|
|
9
8
|
|
|
10
9
|
export interface VideoPlayerProps {
|
|
@@ -40,139 +39,147 @@ export interface VideoPlayerProps {
|
|
|
40
39
|
videoType?: VideoPlayerTypes;
|
|
41
40
|
}
|
|
42
41
|
|
|
43
|
-
export
|
|
44
|
-
props: React.PropsWithChildren<VideoPlayerProps>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
42
|
+
export const VideoPlayer = chakra(
|
|
43
|
+
(props: React.PropsWithChildren<VideoPlayerProps>) => {
|
|
44
|
+
const {
|
|
45
|
+
aspectRatio,
|
|
46
|
+
className,
|
|
47
|
+
descriptionText,
|
|
48
|
+
embedCode,
|
|
49
|
+
headingText,
|
|
50
|
+
helperText,
|
|
51
|
+
id,
|
|
52
|
+
iframeTitle,
|
|
53
|
+
showHelperInvalidText = true,
|
|
54
|
+
videoId,
|
|
55
|
+
videoType,
|
|
56
|
+
...rest
|
|
57
|
+
} = props;
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
const iframeTitleFinal =
|
|
60
|
+
videoType === VideoPlayerTypes.Vimeo
|
|
61
|
+
? iframeTitle || "Vimeo video player"
|
|
62
|
+
: iframeTitle || "YouTube video player";
|
|
64
63
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
const videoSrc =
|
|
65
|
+
videoType === VideoPlayerTypes.Vimeo
|
|
66
|
+
? `https://player.vimeo.com/video/${videoId}?autoplay=0&loop=0`
|
|
67
|
+
: `https://www.youtube.com/embed/${videoId}?disablekb=1&autoplay=0&fs=1&modestbranding=0`;
|
|
69
68
|
|
|
70
|
-
|
|
69
|
+
const iFrameTitleEmbedCode = iframeTitle
|
|
70
|
+
? `${iframeTitle}`
|
|
71
|
+
: `Video player`;
|
|
71
72
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
const embedCodeFinal =
|
|
74
|
+
embedCode &&
|
|
75
|
+
embedCode.includes("<iframe") &&
|
|
76
|
+
!embedCode.includes("title=")
|
|
77
|
+
? embedCode.replace(
|
|
78
|
+
`<iframe `,
|
|
79
|
+
`<iframe title="${iFrameTitleEmbedCode}" `
|
|
80
|
+
)
|
|
81
|
+
: embedCode;
|
|
79
82
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
const errorMessage =
|
|
84
|
+
"<strong>Error:</strong> This video player has not been configured " +
|
|
85
|
+
"properly. Please contact the site administrator.";
|
|
83
86
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
87
|
+
let isInvalid = false;
|
|
88
|
+
if (!embedCodeFinal && !videoType && !videoId) {
|
|
89
|
+
console.warn(
|
|
90
|
+
"NYPL Reservoir VideoPlayer: Pass in either the `embedCode` prop or " +
|
|
91
|
+
"both the `videoType` and `videoId` props; none were passed."
|
|
92
|
+
);
|
|
93
|
+
isInvalid = true;
|
|
94
|
+
} else if (!embedCodeFinal && !videoType) {
|
|
95
|
+
console.warn(
|
|
96
|
+
"NYPL Reservoir VideoPlayer: The `videoType` prop is also required. " +
|
|
97
|
+
"Only the `videoId` prop was set."
|
|
98
|
+
);
|
|
99
|
+
isInvalid = true;
|
|
100
|
+
} else if (!embedCodeFinal && !videoId) {
|
|
101
|
+
console.warn(
|
|
102
|
+
"NYPL Reservoir VideoPlayer: The `videoId` prop is also required. " +
|
|
103
|
+
"Only the `videoType` prop was set."
|
|
104
|
+
);
|
|
105
|
+
isInvalid = true;
|
|
106
|
+
} else if (embedCodeFinal && (videoType || videoId)) {
|
|
107
|
+
console.warn(
|
|
108
|
+
"NYPL Reservoir VideoPlayer: Pass in either the `embedCode` prop or " +
|
|
109
|
+
"both the `videoType` and `videoId` props; all were set."
|
|
110
|
+
);
|
|
111
|
+
isInvalid = true;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (
|
|
115
|
+
videoId &&
|
|
116
|
+
(videoId.includes("://") ||
|
|
117
|
+
videoId.includes("http") ||
|
|
118
|
+
videoId.includes(".") ||
|
|
119
|
+
videoId.includes("youtube") ||
|
|
120
|
+
videoId.includes("vimeo"))
|
|
121
|
+
) {
|
|
122
|
+
console.warn(
|
|
123
|
+
"NYPL Reservoir VideoPlayer: The `videoId` prop is not configured properly."
|
|
124
|
+
);
|
|
125
|
+
isInvalid = true;
|
|
126
|
+
}
|
|
110
127
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
128
|
+
if (
|
|
129
|
+
embedCodeFinal &&
|
|
130
|
+
((!embedCodeFinal.includes("vimeo.com") &&
|
|
131
|
+
!embedCodeFinal.includes("youtube.com")) ||
|
|
132
|
+
!embedCodeFinal.includes("<iframe") ||
|
|
133
|
+
!embedCodeFinal.includes("</iframe"))
|
|
134
|
+
) {
|
|
135
|
+
console.warn(
|
|
136
|
+
"NYPL Reservoir VideoPlayer: The `embedCode` prop is not configured properly."
|
|
137
|
+
);
|
|
138
|
+
isInvalid = true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const variant = isInvalid
|
|
142
|
+
? "invalid"
|
|
143
|
+
: getVariant(aspectRatio, VideoPlayerAspectRatios);
|
|
144
|
+
const styles = useMultiStyleConfig("VideoPlayer", { variant });
|
|
145
|
+
|
|
146
|
+
const embedElement = embedCodeFinal ? (
|
|
147
|
+
<span dangerouslySetInnerHTML={{ __html: embedCodeFinal }} />
|
|
148
|
+
) : (
|
|
149
|
+
<Box
|
|
150
|
+
as="iframe"
|
|
151
|
+
src={videoSrc}
|
|
152
|
+
title={iframeTitleFinal}
|
|
153
|
+
frameBorder="0"
|
|
154
|
+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; gyroscope; picture-in-picture"
|
|
155
|
+
allowFullScreen
|
|
156
|
+
__css={styles.iframe}
|
|
157
|
+
/>
|
|
121
158
|
);
|
|
122
|
-
isInvalid = true;
|
|
123
|
-
}
|
|
124
159
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
160
|
+
return (
|
|
161
|
+
<Box
|
|
162
|
+
className={className}
|
|
163
|
+
data-testid="video-player-component"
|
|
164
|
+
id={id}
|
|
165
|
+
__css={styles}
|
|
166
|
+
{...rest}
|
|
167
|
+
>
|
|
168
|
+
{isInvalid ? (
|
|
169
|
+
<span dangerouslySetInnerHTML={{ __html: errorMessage }} />
|
|
170
|
+
) : (
|
|
171
|
+
<ComponentWrapper
|
|
172
|
+
headingText={headingText ? headingText : null}
|
|
173
|
+
descriptionText={descriptionText ? descriptionText : null}
|
|
174
|
+
helperText={helperText && showHelperInvalidText ? helperText : null}
|
|
175
|
+
id={`${id}-componentWrapper`}
|
|
176
|
+
>
|
|
177
|
+
<Box __css={styles.inside}>{embedElement}</Box>
|
|
178
|
+
</ComponentWrapper>
|
|
179
|
+
)}
|
|
180
|
+
</Box>
|
|
134
181
|
);
|
|
135
|
-
isInvalid = true;
|
|
136
182
|
}
|
|
183
|
+
);
|
|
137
184
|
|
|
138
|
-
|
|
139
|
-
? "invalid"
|
|
140
|
-
: getVariant(aspectRatio, VideoPlayerAspectRatios);
|
|
141
|
-
const styles = useMultiStyleConfig("VideoPlayer", { variant });
|
|
142
|
-
|
|
143
|
-
const embedElement = embedCodeFinal ? (
|
|
144
|
-
<span dangerouslySetInnerHTML={{ __html: embedCodeFinal }} />
|
|
145
|
-
) : (
|
|
146
|
-
<Box
|
|
147
|
-
as="iframe"
|
|
148
|
-
src={videoSrc}
|
|
149
|
-
title={iframeTitleFinal}
|
|
150
|
-
frameBorder="0"
|
|
151
|
-
allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; gyroscope; picture-in-picture"
|
|
152
|
-
allowFullScreen
|
|
153
|
-
__css={styles.iframe}
|
|
154
|
-
/>
|
|
155
|
-
);
|
|
156
|
-
|
|
157
|
-
return (
|
|
158
|
-
<Box
|
|
159
|
-
className={className}
|
|
160
|
-
data-testid="video-player-component"
|
|
161
|
-
id={id}
|
|
162
|
-
__css={styles}
|
|
163
|
-
>
|
|
164
|
-
{isInvalid ? (
|
|
165
|
-
<span dangerouslySetInnerHTML={{ __html: errorMessage }} />
|
|
166
|
-
) : (
|
|
167
|
-
<ComponentWrapper
|
|
168
|
-
headingText={headingText ? headingText : null}
|
|
169
|
-
descriptionText={descriptionText ? descriptionText : null}
|
|
170
|
-
helperText={helperText && showHelperInvalidText ? helperText : null}
|
|
171
|
-
id={`${id}-componentWrapper`}
|
|
172
|
-
>
|
|
173
|
-
<Box __css={styles.inside}>{embedElement}</Box>
|
|
174
|
-
</ComponentWrapper>
|
|
175
|
-
)}
|
|
176
|
-
</Box>
|
|
177
|
-
);
|
|
178
|
-
}
|
|
185
|
+
export default VideoPlayer;
|