@nypl/design-system-react-components 1.0.0 → 1.0.3-beta
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/README.md +3 -5
- package/dist/components/Checkbox/Checkbox.d.ts +0 -1
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -0
- package/dist/components/Heading/Heading.d.ts +2 -0
- package/dist/components/Logo/Logo.d.ts +1 -1
- package/dist/components/Logo/LogoSvgs.d.ts +4 -0
- package/dist/components/Slider/Slider.d.ts +1 -2
- package/dist/components/TextInput/TextInput.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +1038 -674
- 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 +1039 -675
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
- package/dist/theme/components/button.d.ts +1 -0
- package/dist/theme/components/card.d.ts +98 -13
- package/dist/theme/components/checkboxGroup.d.ts +1 -1
- package/dist/theme/components/global.d.ts +2 -2
- package/dist/theme/components/heading.d.ts +4 -16
- package/dist/theme/components/image.d.ts +6 -0
- package/dist/theme/components/radio.d.ts +8 -0
- package/dist/theme/components/radioGroup.d.ts +1 -1
- package/dist/theme/components/skipNavigation.d.ts +3 -0
- package/dist/theme/components/structuredContent.d.ts +0 -5
- package/dist/theme/components/template.d.ts +4 -1
- package/dist/utils/utils.d.ts +15 -0
- package/package.json +6 -7
- package/CHANGELOG.md +0 -1399
- package/src/__tests__/fileMock.ts +0 -6
- package/src/__tests__/setup.ts +0 -27
- package/src/__tests__/utils/utils.test.ts +0 -18
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
- package/src/components/Accordion/Accordion.stories.mdx +0 -361
- package/src/components/Accordion/Accordion.test.tsx +0 -237
- package/src/components/Accordion/Accordion.tsx +0 -136
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
- package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
- package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
- package/src/components/Autosuggest/_Autosuggest.scss +0 -51
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
- package/src/components/Button/Button.stories.mdx +0 -320
- package/src/components/Button/Button.test.tsx +0 -184
- package/src/components/Button/Button.tsx +0 -95
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
- package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -147
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
- package/src/components/ButtonGroup/ButtonGroup.tsx +0 -99
- package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
- package/src/components/Card/Card.stories.mdx +0 -1043
- package/src/components/Card/Card.test.tsx +0 -388
- package/src/components/Card/Card.tsx +0 -345
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
- package/src/components/Chakra/Box.stories.mdx +0 -52
- package/src/components/Chakra/Center.stories.mdx +0 -96
- package/src/components/Chakra/Flex.stories.mdx +0 -111
- package/src/components/Chakra/Grid.stories.mdx +0 -89
- package/src/components/Chakra/Stack.stories.mdx +0 -109
- package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
- package/src/components/Checkbox/Checkbox.test.tsx +0 -319
- package/src/components/Checkbox/Checkbox.tsx +0 -166
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -616
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1722
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -67
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -98
- package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
- package/src/components/DatePicker/DatePicker.test.tsx +0 -940
- package/src/components/DatePicker/DatePicker.tsx +0 -450
- package/src/components/DatePicker/_DatePicker.scss +0 -100
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -889
- package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
- package/src/components/Fieldset/Fieldset.test.tsx +0 -155
- package/src/components/Fieldset/Fieldset.tsx +0 -55
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
- package/src/components/Form/Form.stories.mdx +0 -426
- package/src/components/Form/Form.test.tsx +0 -234
- package/src/components/Form/Form.tsx +0 -124
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
- package/src/components/Grid/SimpleGrid.stories.mdx +0 -338
- package/src/components/Grid/SimpleGrid.test.tsx +0 -79
- package/src/components/Grid/SimpleGrid.tsx +0 -49
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
- package/src/components/Heading/Heading.stories.mdx +0 -184
- package/src/components/Heading/Heading.test.tsx +0 -171
- package/src/components/Heading/Heading.tsx +0 -101
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
- package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
- package/src/components/Hero/Hero.stories.mdx +0 -378
- package/src/components/Hero/Hero.test.tsx +0 -611
- package/src/components/Hero/Hero.tsx +0 -203
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
- package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
- package/src/components/Icons/Icon.stories.mdx +0 -413
- package/src/components/Icons/Icon.test.tsx +0 -120
- package/src/components/Icons/Icon.tsx +0 -187
- package/src/components/Icons/IconSvgs.tsx +0 -64
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
- package/src/components/Image/Image.stories.mdx +0 -332
- package/src/components/Image/Image.test.tsx +0 -155
- package/src/components/Image/Image.tsx +0 -171
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
- package/src/components/Label/Label.stories.mdx +0 -100
- package/src/components/Label/Label.test.tsx +0 -116
- package/src/components/Label/Label.tsx +0 -55
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
- package/src/components/Link/Link.stories.mdx +0 -249
- package/src/components/Link/Link.test.tsx +0 -224
- package/src/components/Link/Link.tsx +0 -178
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
- package/src/components/List/List.stories.mdx +0 -393
- package/src/components/List/List.test.tsx +0 -265
- package/src/components/List/List.tsx +0 -156
- package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
- package/src/components/Logo/Logo.stories.mdx +0 -290
- package/src/components/Logo/Logo.test.tsx +0 -116
- package/src/components/Logo/Logo.tsx +0 -147
- package/src/components/Logo/LogoSvgs.tsx +0 -82
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
- package/src/components/Modal/Modal.stories.mdx +0 -301
- package/src/components/Modal/Modal.test.tsx +0 -157
- package/src/components/Modal/Modal.tsx +0 -154
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
- package/src/components/Notification/Notification.stories.mdx +0 -358
- package/src/components/Notification/Notification.test.tsx +0 -279
- package/src/components/Notification/Notification.tsx +0 -224
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
- package/src/components/Pagination/Pagination.stories.mdx +0 -184
- package/src/components/Pagination/Pagination.test.tsx +0 -419
- package/src/components/Pagination/Pagination.tsx +0 -269
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
- package/src/components/Placeholder/Placeholder.tsx +0 -19
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
- package/src/components/Radio/Radio.stories.mdx +0 -216
- package/src/components/Radio/Radio.test.tsx +0 -247
- package/src/components/Radio/Radio.tsx +0 -128
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -411
- package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -478
- package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
- package/src/components/RadioGroup/RadioGroup.tsx +0 -170
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1430
- package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
- package/src/components/SearchBar/SearchBar.test.tsx +0 -435
- package/src/components/SearchBar/SearchBar.tsx +0 -210
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1027
- package/src/components/Select/Select.stories.mdx +0 -439
- package/src/components/Select/Select.test.tsx +0 -358
- package/src/components/Select/Select.tsx +0 -181
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -885
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
- package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
- package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
- package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
- package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
- package/src/components/Slider/Slider.stories.mdx +0 -628
- package/src/components/Slider/Slider.test.tsx +0 -736
- package/src/components/Slider/Slider.tsx +0 -322
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2153
- package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
- package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
- package/src/components/StatusBadge/StatusBadge.tsx +0 -35
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
- package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
- package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
- package/src/components/StructuredContent/StructuredContent.tsx +0 -139
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
- package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
- package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
- package/src/components/StyleGuide/ColorCard.tsx +0 -43
- package/src/components/StyleGuide/Colors.stories.mdx +0 -201
- package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
- package/src/components/StyleGuide/Forms.stories.mdx +0 -94
- package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
- package/src/components/StyleGuide/Typography.stories.mdx +0 -419
- package/src/components/Table/Table.stories.mdx +0 -276
- package/src/components/Table/Table.test.tsx +0 -208
- package/src/components/Table/Table.tsx +0 -131
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
- package/src/components/Tabs/Tabs.stories.mdx +0 -338
- package/src/components/Tabs/Tabs.test.tsx +0 -298
- package/src/components/Tabs/Tabs.tsx +0 -264
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
- package/src/components/Template/Template.stories.mdx +0 -691
- package/src/components/Template/Template.test.tsx +0 -309
- package/src/components/Template/Template.tsx +0 -326
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
- package/src/components/Text/Text.stories.mdx +0 -103
- package/src/components/Text/Text.test.tsx +0 -63
- package/src/components/Text/Text.tsx +0 -50
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
- package/src/components/TextInput/TextInput.stories.mdx +0 -268
- package/src/components/TextInput/TextInput.test.tsx +0 -451
- package/src/components/TextInput/TextInput.tsx +0 -240
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -264
- package/src/components/Toggle/Toggle.stories.mdx +0 -237
- package/src/components/Toggle/Toggle.test.tsx +0 -170
- package/src/components/Toggle/Toggle.tsx +0 -126
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -442
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -211
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
- package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -187
- package/src/docs/Chakra.stories.mdx +0 -563
- package/src/docs/Welcome.stories.mdx +0 -148
- package/src/helpers/types.ts +0 -1
- package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
- package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
- package/src/hooks/useCarouselStyles.stories.mdx +0 -30
- package/src/hooks/useCarouselStyles.ts +0 -35
- package/src/hooks/useNYPLTheme.stories.mdx +0 -98
- package/src/hooks/useNYPLTheme.ts +0 -91
- package/src/hooks/useWindowSize.stories.mdx +0 -23
- package/src/hooks/useWindowSize.ts +0 -40
- package/src/index.ts +0 -136
- package/src/resources.scss +0 -6
- package/src/styles/base/_01-breakpoints.scss +0 -27
- package/src/styles/base/_02-mixins.scss +0 -103
- package/src/styles/base/_place-holder.scss +0 -33
- package/src/styles/space/_space-inline.scss +0 -79
- package/src/styles/space/_space-inset.scss +0 -57
- package/src/styles/space/_space-stack.scss +0 -116
- package/src/styles.scss +0 -23
- package/src/theme/components/accordion.ts +0 -25
- package/src/theme/components/breadcrumb.ts +0 -94
- package/src/theme/components/button.ts +0 -132
- package/src/theme/components/buttonGroup.ts +0 -10
- package/src/theme/components/card.ts +0 -231
- package/src/theme/components/checkbox.ts +0 -110
- package/src/theme/components/checkboxGroup.ts +0 -10
- package/src/theme/components/componentWrapper.ts +0 -14
- package/src/theme/components/customTable.ts +0 -77
- package/src/theme/components/datePicker.ts +0 -17
- package/src/theme/components/fieldset.ts +0 -23
- package/src/theme/components/global.ts +0 -91
- package/src/theme/components/globalMixins.ts +0 -24
- package/src/theme/components/heading.ts +0 -79
- package/src/theme/components/helperErrorText.ts +0 -14
- package/src/theme/components/hero.ts +0 -238
- package/src/theme/components/horizontalRule.ts +0 -17
- package/src/theme/components/icon.ts +0 -88
- package/src/theme/components/image.ts +0 -135
- package/src/theme/components/label.ts +0 -15
- package/src/theme/components/link.ts +0 -63
- package/src/theme/components/list.ts +0 -88
- package/src/theme/components/logo.ts +0 -58
- package/src/theme/components/notification.ts +0 -132
- package/src/theme/components/pagination.ts +0 -17
- package/src/theme/components/progressIndicator.ts +0 -67
- package/src/theme/components/radio.ts +0 -103
- package/src/theme/components/radioGroup.ts +0 -10
- package/src/theme/components/searchBar.ts +0 -19
- package/src/theme/components/select.ts +0 -72
- package/src/theme/components/skeletonLoader.ts +0 -113
- package/src/theme/components/skipNavigation.ts +0 -26
- package/src/theme/components/slider.ts +0 -95
- package/src/theme/components/statusBadge.ts +0 -26
- package/src/theme/components/structuredContent.ts +0 -149
- package/src/theme/components/tabs.ts +0 -109
- package/src/theme/components/template.ts +0 -114
- package/src/theme/components/text.ts +0 -38
- package/src/theme/components/textInput.ts +0 -65
- package/src/theme/components/toggle.ts +0 -109
- package/src/theme/components/videoPlayer.ts +0 -47
- package/src/theme/foundations/breakpoints.ts +0 -24
- package/src/theme/foundations/colors.ts +0 -212
- package/src/theme/foundations/global.ts +0 -43
- package/src/theme/foundations/radii.ts +0 -7
- package/src/theme/foundations/shadows.ts +0 -5
- package/src/theme/foundations/spacing.ts +0 -136
- package/src/theme/foundations/typography.ts +0 -107
- package/src/theme/index.ts +0 -131
- package/src/theme/provider.tsx +0 -9
- package/src/theme/types.ts +0 -1
- package/src/utils/componentCategories.ts +0 -152
- package/src/utils/interfaces.ts +0 -5
- package/src/utils/utils.ts +0 -44
|
@@ -1,452 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ArgsTable,
|
|
3
|
-
Canvas,
|
|
4
|
-
Description,
|
|
5
|
-
Meta,
|
|
6
|
-
Story,
|
|
7
|
-
} from "@storybook/addon-docs";
|
|
8
|
-
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
|
|
10
|
-
import DatePicker from "./DatePicker";
|
|
11
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
12
|
-
import DSProvider from "../../theme/provider";
|
|
13
|
-
|
|
14
|
-
<Meta
|
|
15
|
-
title={getCategory("DatePicker")}
|
|
16
|
-
component={DatePicker}
|
|
17
|
-
decorators={[withDesign]}
|
|
18
|
-
parameters={{
|
|
19
|
-
design: {
|
|
20
|
-
type: "figma",
|
|
21
|
-
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11689%3A0",
|
|
22
|
-
},
|
|
23
|
-
jest: ["DatePicker.test.tsx"],
|
|
24
|
-
}}
|
|
25
|
-
argTypes={{
|
|
26
|
-
className: { control: false },
|
|
27
|
-
dateFormat: {
|
|
28
|
-
table: { defaultValue: { summary: "yyyy-MM-dd" } },
|
|
29
|
-
},
|
|
30
|
-
dateType: {
|
|
31
|
-
control: { type: "select" },
|
|
32
|
-
table: { defaultValue: { summary: "full" } },
|
|
33
|
-
},
|
|
34
|
-
id: { control: false },
|
|
35
|
-
isDateRange: {
|
|
36
|
-
table: { defaultValue: { summary: false } },
|
|
37
|
-
},
|
|
38
|
-
isDisabled: {
|
|
39
|
-
table: { defaultValue: { summary: false } },
|
|
40
|
-
},
|
|
41
|
-
isInvalid: {
|
|
42
|
-
table: { defaultValue: { summary: false } },
|
|
43
|
-
},
|
|
44
|
-
isRequired: {
|
|
45
|
-
table: { defaultValue: { summary: false } },
|
|
46
|
-
},
|
|
47
|
-
key: { table: { disable: true } },
|
|
48
|
-
labelText: {
|
|
49
|
-
table: { defaultValue: { summary: "From" } },
|
|
50
|
-
},
|
|
51
|
-
nameFrom: { control: false },
|
|
52
|
-
nameTo: { control: false },
|
|
53
|
-
onChange: { control: false },
|
|
54
|
-
ref: { table: { disable: true } },
|
|
55
|
-
refTo: { control: false },
|
|
56
|
-
showHelperInvalidText: {
|
|
57
|
-
table: { defaultValue: { summary: true } },
|
|
58
|
-
},
|
|
59
|
-
showLabel: {
|
|
60
|
-
table: { defaultValue: { summary: true } },
|
|
61
|
-
},
|
|
62
|
-
showRequiredLabel: {
|
|
63
|
-
table: { defaultValue: { summary: true } },
|
|
64
|
-
},
|
|
65
|
-
}}
|
|
66
|
-
/>
|
|
67
|
-
|
|
68
|
-
# DatePicker
|
|
69
|
-
|
|
70
|
-
| Component Version | DS Version |
|
|
71
|
-
| ----------------- | ---------- |
|
|
72
|
-
| Added | `0.24.0` |
|
|
73
|
-
| Latest | `0.28.0` |
|
|
74
|
-
|
|
75
|
-
## Table of Contents
|
|
76
|
-
|
|
77
|
-
- [Overview](#overview)
|
|
78
|
-
- [Component Props](#component-props)
|
|
79
|
-
- [Accessibility](#accessibility)
|
|
80
|
-
- [Date Range](#date-range)
|
|
81
|
-
- [Calendar Types](#calendar-types)
|
|
82
|
-
- [Other States](#other-states)
|
|
83
|
-
- [Date Inputs and Output](#date-inputs-and-output)
|
|
84
|
-
- [Getting Date Input Values](#getting-date-input-values)
|
|
85
|
-
|
|
86
|
-
## Overview
|
|
87
|
-
|
|
88
|
-
<Description of={DatePicker} />
|
|
89
|
-
|
|
90
|
-
This is fully customizable to allow selectable full dates, only the month, or
|
|
91
|
-
only they year as input. Initial date values and max and min date values can
|
|
92
|
-
also be added through props.
|
|
93
|
-
|
|
94
|
-
## Component Props
|
|
95
|
-
|
|
96
|
-
<Canvas withToolbar>
|
|
97
|
-
<Story
|
|
98
|
-
name="DatePicker with Controls"
|
|
99
|
-
args={{
|
|
100
|
-
className: undefined,
|
|
101
|
-
dateFormat: "yyyy-MM-dd",
|
|
102
|
-
dateType: "full",
|
|
103
|
-
helperText: "Note that the Library may be closed on Sundays.",
|
|
104
|
-
helperTextFrom: "Select start date.",
|
|
105
|
-
helperTextTo: "Select end date.",
|
|
106
|
-
id: "datePicker-id",
|
|
107
|
-
initialDate: "4/1/2022",
|
|
108
|
-
initialDateTo: "12/1/2022",
|
|
109
|
-
invalidText: "Please select a valid date.",
|
|
110
|
-
isDateRange: false,
|
|
111
|
-
isDisabled: false,
|
|
112
|
-
isInvalid: false,
|
|
113
|
-
isRequired: false,
|
|
114
|
-
labelText: "Select the date you want to visit NYPL",
|
|
115
|
-
maxDate: "1/1/2023",
|
|
116
|
-
minDate: "1/1/2022",
|
|
117
|
-
nameFrom: "visit-dates-from",
|
|
118
|
-
nameTo: "visit-dates-to",
|
|
119
|
-
onChange: undefined,
|
|
120
|
-
refTo: undefined,
|
|
121
|
-
showHelperInvalidText: true,
|
|
122
|
-
showLabel: true,
|
|
123
|
-
showRequiredLabel: true,
|
|
124
|
-
}}
|
|
125
|
-
>
|
|
126
|
-
{(args) => <DatePicker {...args} onChange={undefined} />}
|
|
127
|
-
</Story>
|
|
128
|
-
</Canvas>
|
|
129
|
-
|
|
130
|
-
<ArgsTable story="DatePicker with Controls" />
|
|
131
|
-
|
|
132
|
-
## Accessibility
|
|
133
|
-
|
|
134
|
-
The Reservoir `DatePicker` component implements the `react-datepicker` npm package.
|
|
135
|
-
This package exports a component that is used internally to display the popup
|
|
136
|
-
calendar, manage its data, and associate the `<label>` element with its corresponding
|
|
137
|
-
`<input>` element. This component is accessible through keyboard navigation.
|
|
138
|
-
|
|
139
|
-
The Reservoir `DatePicker` handles the grouping of the two `<input>` elements in
|
|
140
|
-
the "date range" mode by wrapping the elements in a `<fieldset>` element with
|
|
141
|
-
its own `<legend>` label for the group. Note that this is in addition to the two
|
|
142
|
-
labels that each `<input>` element is associated with.
|
|
143
|
-
|
|
144
|
-
When `showLabel` is set to false, the single `<input>` element's `aria-label`
|
|
145
|
-
attribute is set to the required `labelText` value. In the "date range" mode,
|
|
146
|
-
when `showLabel` is set to false, the `<fieldset>`'s `<legend>` will have the
|
|
147
|
-
`labelText` visually hidden.
|
|
148
|
-
|
|
149
|
-
Resources:
|
|
150
|
-
|
|
151
|
-
- [react-datepicker Accessibility](https://github.com/Hacker0x01/react-datepicker#accessibility)
|
|
152
|
-
|
|
153
|
-
## Date Range
|
|
154
|
-
|
|
155
|
-
A date range can be rendered by setting the `isDateRange` prop to `true`. This
|
|
156
|
-
will render two input fields with labels "From" and "To". If the component has
|
|
157
|
-
an error, has required fields, or if it is disabled, then both input elements
|
|
158
|
-
will share the props and styling. Note that for date range types, a `fieldset`
|
|
159
|
-
is used as the parent wrapper and the `labelText` is used for the `legend`
|
|
160
|
-
element text.
|
|
161
|
-
|
|
162
|
-
Note: In the following example, the minimum date is "1/1/2022" and the max date
|
|
163
|
-
is "7/1/22". This means only values within this range are selectable from the
|
|
164
|
-
popup calendar.
|
|
165
|
-
|
|
166
|
-
<Canvas withToolbar>
|
|
167
|
-
<Story name="Date Range">
|
|
168
|
-
<DatePicker
|
|
169
|
-
id="date-range"
|
|
170
|
-
dateFormat="yyyy-MM-dd"
|
|
171
|
-
dateType="full"
|
|
172
|
-
minDate="1/1/2022"
|
|
173
|
-
maxDate="7/1/2022"
|
|
174
|
-
labelText="Select the date range you want to visit NYPL"
|
|
175
|
-
nameFrom="visit-dates-from"
|
|
176
|
-
nameTo="visit-dates-to"
|
|
177
|
-
helperTextFrom="From this date."
|
|
178
|
-
helperTextTo="To this date."
|
|
179
|
-
helperText="Select a valid date range."
|
|
180
|
-
invalidText="There was an error with the date range :("
|
|
181
|
-
isDateRange
|
|
182
|
-
/>
|
|
183
|
-
</Story>
|
|
184
|
-
</Canvas>
|
|
185
|
-
|
|
186
|
-
## Calendar Types
|
|
187
|
-
|
|
188
|
-
### Full Date Input
|
|
189
|
-
|
|
190
|
-
By default, the `DatePicker` will display the input date value in the full
|
|
191
|
-
format that contains the year, month, and day such as "2021-01-30". Although
|
|
192
|
-
this is the default, it can be explicitly set through the `dateType` prop with
|
|
193
|
-
value of `"full"`.
|
|
194
|
-
|
|
195
|
-
### Month Date Input
|
|
196
|
-
|
|
197
|
-
It's possible to select dates by skipping the day value and only selecting
|
|
198
|
-
the month and the year when `dateType` is set to `"month"`. Note
|
|
199
|
-
that all 12 months will appear in the popup calendar with their abbreviated names.
|
|
200
|
-
|
|
201
|
-
<Canvas withToolbar>
|
|
202
|
-
<Story name="Month Date Input">
|
|
203
|
-
<DatePicker
|
|
204
|
-
id="month-date"
|
|
205
|
-
dateType="month"
|
|
206
|
-
labelText="Select the month you want to visit NYPL"
|
|
207
|
-
helperText="Note that the Library may be closed on Sundays."
|
|
208
|
-
invalidText="Please select a valid month."
|
|
209
|
-
/>
|
|
210
|
-
</Story>
|
|
211
|
-
</Canvas>
|
|
212
|
-
|
|
213
|
-
### Year Date Input
|
|
214
|
-
|
|
215
|
-
It's possible to select dates by only the year when `dateType` is set to
|
|
216
|
-
`"year"`. Note that only 12 values will appear in the popup calendar; the four
|
|
217
|
-
previous years, the current year, and the next seven years.
|
|
218
|
-
|
|
219
|
-
<Canvas withToolbar>
|
|
220
|
-
<Story name="Year Date Input">
|
|
221
|
-
<DatePicker
|
|
222
|
-
id="year-date"
|
|
223
|
-
dateType="year"
|
|
224
|
-
labelText="Select the year you want to visit NYPL"
|
|
225
|
-
helperText="Note that the Library may be closed on Sundays."
|
|
226
|
-
/>
|
|
227
|
-
</Story>
|
|
228
|
-
</Canvas>
|
|
229
|
-
|
|
230
|
-
## Other States
|
|
231
|
-
|
|
232
|
-
### Errored State
|
|
233
|
-
|
|
234
|
-
<Canvas>
|
|
235
|
-
<DSProvider>
|
|
236
|
-
<DatePicker
|
|
237
|
-
id="invalid-date"
|
|
238
|
-
dateType="full"
|
|
239
|
-
labelText="Select the year you want to visit NYPL"
|
|
240
|
-
helperText="Note that the Library may be closed on Sundays."
|
|
241
|
-
invalidText="Please select a valid date."
|
|
242
|
-
isInvalid
|
|
243
|
-
isDateRange
|
|
244
|
-
/>
|
|
245
|
-
</DSProvider>
|
|
246
|
-
</Canvas>
|
|
247
|
-
|
|
248
|
-
### Disabled State
|
|
249
|
-
|
|
250
|
-
<Canvas>
|
|
251
|
-
<DSProvider>
|
|
252
|
-
<DatePicker
|
|
253
|
-
id="disabled-date"
|
|
254
|
-
dateType="full"
|
|
255
|
-
labelText="Select the year you want to visit NYPL"
|
|
256
|
-
isDateRange
|
|
257
|
-
isDisabled
|
|
258
|
-
/>
|
|
259
|
-
</DSProvider>
|
|
260
|
-
</Canvas>
|
|
261
|
-
|
|
262
|
-
### Required State
|
|
263
|
-
|
|
264
|
-
The "Required" text in the legend in the date range, or the label in a normal
|
|
265
|
-
date input, can be hidden when `showRequiredLabel` is set to `false`.
|
|
266
|
-
|
|
267
|
-
<Canvas>
|
|
268
|
-
<DSProvider>
|
|
269
|
-
<DatePicker
|
|
270
|
-
id="required-date"
|
|
271
|
-
dateType="full"
|
|
272
|
-
labelText="Select the year you want to visit NYPL"
|
|
273
|
-
isDateRange
|
|
274
|
-
isRequired
|
|
275
|
-
/>
|
|
276
|
-
</DSProvider>
|
|
277
|
-
</Canvas>
|
|
278
|
-
|
|
279
|
-
## Date Inputs and Output
|
|
280
|
-
|
|
281
|
-
### Initial Date Values
|
|
282
|
-
|
|
283
|
-
The initial date values can be set through `initialDate` for the "From" input
|
|
284
|
-
field and `initialDateTo` for the "To" input field. In the following examples,
|
|
285
|
-
`initialDate` is `"12/1/21"` and `initialDateTo` is `"12/10/21"`. The
|
|
286
|
-
`initialDate` and `initialDateTo` values are used in the JS `Date` function so
|
|
287
|
-
they needs to be in that specific format. Note that according to the NYPL
|
|
288
|
-
styleguide, we display dates as "year-month-day" by default.
|
|
289
|
-
|
|
290
|
-
<Canvas>
|
|
291
|
-
<DSProvider>
|
|
292
|
-
<DatePicker
|
|
293
|
-
id="init-dates"
|
|
294
|
-
dateType="full"
|
|
295
|
-
labelText="Select the date you want to visit NYPL"
|
|
296
|
-
initialDate="12/1/21"
|
|
297
|
-
initialDateTo="12/10/21"
|
|
298
|
-
isDateRange
|
|
299
|
-
/>
|
|
300
|
-
</DSProvider>
|
|
301
|
-
</Canvas>
|
|
302
|
-
|
|
303
|
-
### Date Format
|
|
304
|
-
|
|
305
|
-
The display date format can be updated through the `dateFormat` prop. The
|
|
306
|
-
default is set to `"yyyy-MM-dd"` based on the NYPL styleguide. This should be
|
|
307
|
-
written in [ISO-8601 format](https://www.w3.org/TR/NOTE-datetime).
|
|
308
|
-
|
|
309
|
-
<Canvas>
|
|
310
|
-
<DSProvider>
|
|
311
|
-
<DatePicker
|
|
312
|
-
id="format-date"
|
|
313
|
-
dateFormat="MM-dd-yyyy"
|
|
314
|
-
dateType="full"
|
|
315
|
-
labelText="Select the date you want to visit NYPL"
|
|
316
|
-
initialDate="12/1/21"
|
|
317
|
-
initialDateTo="12/10/21"
|
|
318
|
-
isDateRange
|
|
319
|
-
/>
|
|
320
|
-
</DSProvider>
|
|
321
|
-
</Canvas>
|
|
322
|
-
|
|
323
|
-
### Max and Min Date Values
|
|
324
|
-
|
|
325
|
-
The maximum and minimum date values can be set through the `maxDate` and
|
|
326
|
-
`minDate` props, respectively. In this example, go back to January through
|
|
327
|
-
February to see the dates that are available to select in 2022.
|
|
328
|
-
|
|
329
|
-
<Canvas>
|
|
330
|
-
<DSProvider>
|
|
331
|
-
<DatePicker
|
|
332
|
-
id="max-min-dates"
|
|
333
|
-
dateFormat="MM-dd-yyyy"
|
|
334
|
-
dateType="full"
|
|
335
|
-
labelText="Select the date you want to visit NYPL"
|
|
336
|
-
minDate="1/1/2022"
|
|
337
|
-
maxDate="3/1/2022"
|
|
338
|
-
isDateRange
|
|
339
|
-
/>
|
|
340
|
-
</DSProvider>
|
|
341
|
-
</Canvas>
|
|
342
|
-
|
|
343
|
-
## Getting Date Input Values
|
|
344
|
-
|
|
345
|
-
### Controlled Component Using `onChange` prop
|
|
346
|
-
|
|
347
|
-
If your application uses controlled React components and the Reservoir Design
|
|
348
|
-
System (DS) DatePicker must be controlled, you can extract the data through the
|
|
349
|
-
`onChange` prop function. This will be called every time the date is updated in
|
|
350
|
-
either the start date input field or the end date input field. The returned
|
|
351
|
-
data is an object with `startDate` and `endDate` keys and `Date` object values.
|
|
352
|
-
|
|
353
|
-
```tsx
|
|
354
|
-
const onChange = (data) => {
|
|
355
|
-
// This will return an object such as:
|
|
356
|
-
// {
|
|
357
|
-
// startDate: dateValue,
|
|
358
|
-
// endDate: dateValue
|
|
359
|
-
// }
|
|
360
|
-
// Note that `dateValue` is a `Date` object so you need to get the date value
|
|
361
|
-
// yourself. The `endDate` attribute will only appear if the DS DatePicker
|
|
362
|
-
// component is a date range.
|
|
363
|
-
console.log(data);
|
|
364
|
-
};
|
|
365
|
-
// ...
|
|
366
|
-
|
|
367
|
-
// Example of the DS DatePicker instance with the function above:
|
|
368
|
-
<DatePicker
|
|
369
|
-
id="date-range"
|
|
370
|
-
dateType="full"
|
|
371
|
-
labelText="Select the date range you want to visit NYPL"
|
|
372
|
-
invalidText="Please select a valid date range."
|
|
373
|
-
onChange={onChange}
|
|
374
|
-
isDateRange
|
|
375
|
-
/>;
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
### Uncontrolled Component Using `ref`s
|
|
379
|
-
|
|
380
|
-
If your application uses uncontrolled components, you can pass React `ref` props
|
|
381
|
-
to the DS DatePicker component to get values from the DOM. In this scenario, you
|
|
382
|
-
need to also pass in a `nameFrom` prop so that the `ref` values knows what DOM
|
|
383
|
-
element to get the value from. If you are using a date range, you need to pass
|
|
384
|
-
additional `nameTo` and `refTo` props or else only the start date value will be
|
|
385
|
-
obtained.
|
|
386
|
-
|
|
387
|
-
The following example is using the `register` React `ref` from the
|
|
388
|
-
`react-hook-form` package.
|
|
389
|
-
|
|
390
|
-
```tsx
|
|
391
|
-
import { useFormContext } from "react-hook-form";
|
|
392
|
-
// ...
|
|
393
|
-
const { register, handleSubmit } = useFormContext();
|
|
394
|
-
// ...
|
|
395
|
-
const submitForm = (formData) => {
|
|
396
|
-
// This will return an object with all the DOM element values that were
|
|
397
|
-
// registered with a `name` attribute.
|
|
398
|
-
// Note that the returned values are strings and NOT Date objects.
|
|
399
|
-
// {
|
|
400
|
-
// visitDateFrom: "2020-01-01"
|
|
401
|
-
// visitDateTo: "2021-01-01"
|
|
402
|
-
// }
|
|
403
|
-
console.log(formData);
|
|
404
|
-
// ...
|
|
405
|
-
};
|
|
406
|
-
|
|
407
|
-
<form
|
|
408
|
-
onSubmit={handleSubmit(submitForm)}
|
|
409
|
-
method="post"
|
|
410
|
-
action="/some/api/endpoint"
|
|
411
|
-
>
|
|
412
|
-
<DatePicker
|
|
413
|
-
id="date-range"
|
|
414
|
-
dateType="full"
|
|
415
|
-
labelText="Select the date range you want to visit NYPL"
|
|
416
|
-
nameFrom="visitDateFrom"
|
|
417
|
-
nameTo="visitDateTo"
|
|
418
|
-
invalidText="Please select a valid date range."
|
|
419
|
-
ref={register()}
|
|
420
|
-
refTo={register()}
|
|
421
|
-
isDateRange
|
|
422
|
-
/>
|
|
423
|
-
</form>;
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
The above is specific to `react-hook-form` but a similar pattern can be used
|
|
427
|
-
with normal React `ref` values.
|
|
428
|
-
|
|
429
|
-
```tsx
|
|
430
|
-
const refStart = React.createRef<TextInputRefType>();
|
|
431
|
-
const refEnd = React.createRef<TextInputRefType>();
|
|
432
|
-
// ...
|
|
433
|
-
<DatePicker
|
|
434
|
-
id="date-range"
|
|
435
|
-
dateType="full"
|
|
436
|
-
labelText="Select the date range you want to visit NYPL"
|
|
437
|
-
nameFrom="visitDateFrom"
|
|
438
|
-
nameTo="visitDateTo"
|
|
439
|
-
invalidText="Please select a valid date range."
|
|
440
|
-
ref={refStart}
|
|
441
|
-
refTo={refEnd}
|
|
442
|
-
isDateRange
|
|
443
|
-
/>;
|
|
444
|
-
|
|
445
|
-
// ...
|
|
446
|
-
// Get the value through:
|
|
447
|
-
const onSubmit = () => {
|
|
448
|
-
// ...
|
|
449
|
-
const startDate = refStart.current.value;
|
|
450
|
-
const endDate = refEnd.current.value;
|
|
451
|
-
};
|
|
452
|
-
```
|