@nypl/design-system-react-components 0.25.2 → 0.25.6
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 +101 -0
- package/README.md +47 -11
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -0
- package/dist/components/Button/Button.d.ts +9 -8
- package/dist/components/Button/ButtonTypes.d.ts +2 -1
- package/dist/components/Card/Card.d.ts +36 -52
- package/dist/components/Card/CardTypes.d.ts +0 -15
- package/dist/components/Checkbox/Checkbox.d.ts +8 -9
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +2 -2
- package/dist/components/DatePicker/DatePicker.d.ts +36 -36
- package/dist/components/Fieldset/Fieldset.d.ts +25 -0
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +4 -0
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -3
- package/dist/components/Icons/Icon.d.ts +4 -0
- package/dist/components/Icons/IconSvgs.d.ts +11 -0
- package/dist/components/Icons/IconTypes.d.ts +11 -0
- package/dist/components/Image/Image.d.ts +19 -9
- package/dist/components/Image/ImageTypes.d.ts +20 -0
- package/dist/components/Link/Link.d.ts +4 -0
- package/dist/components/List/List.d.ts +7 -1
- package/dist/components/Notification/Notification.d.ts +6 -4
- package/dist/components/Pagination/Pagination.d.ts +16 -13
- package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
- package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/dist/components/SearchBar/SearchBar.d.ts +3 -3
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
- package/dist/components/Slider/Slider.d.ts +57 -0
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +10 -0
- package/dist/design-system-react-components.cjs.development.js +3058 -936
- 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 +3049 -921
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +12 -6
- package/dist/resources.scss +180 -170
- package/dist/styles.css +1 -1
- package/dist/theme/components/breadcrumb.d.ts +9 -0
- package/dist/theme/components/button.d.ts +22 -8
- package/dist/theme/components/card.d.ts +168 -0
- package/dist/theme/components/checkbox.d.ts +5 -1
- package/dist/theme/components/checkboxGroup.d.ts +12 -0
- package/dist/theme/components/datePicker.d.ts +16 -0
- package/dist/theme/components/fieldset.d.ts +27 -0
- package/dist/theme/components/global.d.ts +23 -13
- package/dist/theme/components/globalMixins.d.ts +9 -1
- package/dist/theme/components/heading.d.ts +5 -0
- package/dist/theme/components/image.d.ts +31 -0
- package/dist/theme/components/label.d.ts +5 -3
- package/dist/theme/components/link.d.ts +4 -0
- package/dist/theme/components/list.d.ts +5 -1
- package/dist/theme/components/notification.d.ts +4 -14
- package/dist/theme/components/pagination.d.ts +19 -0
- package/dist/theme/components/progressIndicator.d.ts +50 -0
- package/dist/theme/components/radioGroup.d.ts +12 -0
- package/dist/theme/components/select.d.ts +11 -2
- package/dist/theme/components/skeletonLoader.d.ts +98 -0
- package/dist/theme/components/slider.d.ts +51 -0
- package/dist/theme/components/textInput.d.ts +8 -0
- package/dist/theme/foundations/breakpoints.d.ts +8 -8
- package/dist/theme/foundations/global.d.ts +6 -1
- package/package.json +72 -84
- package/src/__tests__/setup.ts +2 -2
- package/src/components/Accordion/Accordion.stories.mdx +39 -42
- package/src/components/Autosuggest/Autosuggest.stories.mdx +3 -3
- package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -0
- package/src/components/Autosuggest/_Autosuggest.scss +5 -5
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +24 -8
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +33 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +5 -1
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -1
- package/src/components/Button/Button.stories.mdx +15 -10
- package/src/components/Button/Button.test.tsx +21 -7
- package/src/components/Button/Button.tsx +18 -33
- package/src/components/Button/ButtonTypes.tsx +1 -0
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +41 -10
- package/src/components/Card/Card.stories.mdx +296 -259
- package/src/components/Card/Card.test.tsx +156 -84
- package/src/components/Card/Card.tsx +195 -145
- package/src/components/Card/CardTypes.tsx +0 -17
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
- package/src/components/CardEdition/CardEdition.stories.tsx +15 -47
- package/src/components/CardEdition/_CardEdition.scss +22 -23
- package/src/components/Chakra/Box.stories.mdx +14 -15
- package/src/components/Chakra/Center.stories.mdx +15 -8
- package/src/components/Chakra/Grid.stories.mdx +16 -7
- package/src/components/Chakra/Stack.stories.mdx +35 -18
- package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
- package/src/components/Checkbox/Checkbox.test.tsx +30 -3
- package/src/components/Checkbox/Checkbox.tsx +27 -27
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +90 -2
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +82 -2
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +1 -1
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -15
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +44 -80
- package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
- package/src/components/DatePicker/DatePicker.test.tsx +248 -65
- package/src/components/DatePicker/DatePicker.tsx +158 -130
- package/src/components/DatePicker/_DatePicker.scss +33 -67
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
- package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
- package/src/components/Fieldset/Fieldset.test.tsx +125 -0
- package/src/components/Fieldset/Fieldset.tsx +52 -0
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
- package/src/components/Form/Form.stories.mdx +4 -5
- package/src/components/Form/Form.tsx +1 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +32 -39
- package/src/components/Grid/SimpleGrid.test.tsx +4 -4
- package/src/components/Heading/Heading.stories.mdx +3 -4
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +1 -1
- package/src/components/HelperErrorText/HelperErrorText.tsx +5 -1
- package/src/components/Hero/HeroTypes.tsx +1 -0
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +7 -7
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +6 -5
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +17 -0
- package/src/components/HorizontalRule/HorizontalRule.tsx +21 -4
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +5 -5
- package/src/components/Icons/Icon.stories.mdx +11 -3
- package/src/components/Icons/Icon.test.tsx +18 -0
- package/src/components/Icons/Icon.tsx +6 -0
- package/src/components/Icons/IconSvgs.tsx +22 -0
- package/src/components/Icons/IconTypes.tsx +11 -0
- package/src/components/Image/Image.stories.mdx +220 -0
- package/src/components/Image/Image.test.tsx +131 -29
- package/src/components/Image/Image.tsx +84 -56
- package/src/components/Image/ImageTypes.ts +22 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
- package/src/components/Input/Input.stories.tsx +20 -64
- package/src/components/Input/_Input.scss +23 -14
- package/src/components/Link/Link.tsx +4 -1
- package/src/components/List/List.stories.mdx +1 -1
- package/src/components/List/List.tsx +11 -4
- package/src/components/Modal/Modal.stories.mdx +3 -3
- package/src/components/Modal/_Modal.scss +2 -2
- package/src/components/Notification/Notification.stories.mdx +1 -3
- package/src/components/Notification/Notification.tsx +24 -9
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +2 -0
- package/src/components/Pagination/Pagination.stories.mdx +26 -27
- package/src/components/Pagination/Pagination.stories.tsx +11 -16
- package/src/components/Pagination/Pagination.test.tsx +276 -146
- package/src/components/Pagination/Pagination.tsx +174 -154
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
- package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +3 -4
- package/src/components/RadioGroup/RadioGroup.tsx +11 -16
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +39 -71
- package/src/components/SearchBar/SearchBar.Test.tsx +66 -21
- package/src/components/SearchBar/SearchBar.stories.mdx +114 -10
- package/src/components/SearchBar/SearchBar.tsx +15 -5
- package/src/components/Select/SelectTypes.tsx +1 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +28 -59
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +74 -71
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
- package/src/components/Slider/Slider.stories.mdx +529 -0
- package/src/components/Slider/Slider.test.tsx +653 -0
- package/src/components/Slider/Slider.tsx +303 -0
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +1 -1
- package/src/components/StyleGuide/Breakpoints.stories.mdx +21 -7
- package/src/components/StyleGuide/Buttons.stories.mdx +69 -15
- package/src/components/StyleGuide/ColorCard.tsx +0 -1
- package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
- package/src/components/StyleGuide/Iconography.stories.mdx +51 -62
- package/src/components/Tabs/Tabs.tsx +5 -5
- package/src/components/Template/Template.stories.mdx +11 -16
- package/src/components/TextInput/TextInput.stories.mdx +1 -1
- package/src/components/TextInput/TextInput.tsx +23 -6
- package/src/components/TextInput/TextInputTypes.tsx +2 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +2 -3
- package/src/docs/Chakra.stories.mdx +2 -2
- package/src/index.ts +20 -12
- package/src/resources.scss +5 -5
- package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
- package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
- package/src/styles/base/{_04-base.scss → _03-base.scss} +7 -2
- package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
- package/src/styles/base/_place-holder.scss +14 -3
- package/src/styles/{03-space → space}/_space-inline.scss +14 -14
- package/src/styles/{03-space → space}/_space-inset.scss +10 -10
- package/src/styles/space/_space-stack.scss +116 -0
- package/src/styles.scss +13 -55
- package/src/theme/components/breadcrumb.ts +10 -0
- package/src/theme/components/button.ts +18 -12
- package/src/theme/components/card.ts +174 -0
- package/src/theme/components/checkbox.ts +7 -2
- package/src/theme/components/checkboxGroup.ts +8 -0
- package/src/theme/components/datePicker.ts +17 -0
- package/src/theme/components/fieldset.ts +18 -0
- package/src/theme/components/global.ts +26 -15
- package/src/theme/components/globalMixins.ts +9 -1
- package/src/theme/components/heading.ts +5 -0
- package/src/theme/components/image.ts +116 -0
- package/src/theme/components/label.ts +3 -10
- package/src/theme/components/link.ts +4 -0
- package/src/theme/components/list.ts +6 -3
- package/src/theme/components/notification.ts +12 -14
- package/src/theme/components/pagination.ts +20 -0
- package/src/theme/components/progressIndicator.ts +62 -0
- package/src/theme/components/radioGroup.ts +8 -0
- package/src/theme/components/select.ts +5 -2
- package/src/theme/components/skeletonLoader.ts +107 -0
- package/src/theme/components/slider.ts +79 -0
- package/src/theme/components/textInput.ts +2 -0
- package/src/theme/foundations/breakpoints.ts +8 -8
- package/src/theme/foundations/global.ts +6 -1
- package/src/theme/index.ts +22 -4
- package/src/utils/componentCategories.ts +4 -3
- package/dist/components/Image/Image.stories.d.ts +0 -18
- package/dist/theme/components/customCheckboxGroup.d.ts +0 -18
- package/dist/theme/components/customRadioGroup.d.ts +0 -18
- package/src/components/Button/_Button.scss +0 -32
- package/src/components/Card/_Card.scss +0 -308
- package/src/components/Image/Image.stories.tsx +0 -54
- package/src/components/Image/_Image.scss +0 -38
- package/src/components/Pagination/_Pagination.scss +0 -40
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
- package/src/styles/01-colors/_colors-brand.scss +0 -62
- package/src/styles/01-colors/_colors-utility.scss +0 -67
- package/src/styles/02-typography/_type-scale.css +0 -11
- package/src/styles/02-typography/_type-weight.css +0 -7
- package/src/styles/02-typography/_typefaces.css +0 -4
- package/src/styles/03-space/_space-stack.scss +0 -116
- package/src/styles/03-space/_space.css +0 -30
- package/src/styles/base/_card-grid.scss +0 -77
- package/src/styles/base/_typography.scss +0 -11
- package/src/theme/components/customCheckboxGroup.ts +0 -12
- package/src/theme/components/customRadioGroup.ts +0 -12
|
@@ -2,6 +2,7 @@ import * as React from "react";
|
|
|
2
2
|
import { render, screen } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
4
|
import userEvent from "@testing-library/user-event";
|
|
5
|
+
import renderer from "react-test-renderer";
|
|
5
6
|
|
|
6
7
|
import DatePicker from "./DatePicker";
|
|
7
8
|
import { DatePickerTypes } from "./DatePickerTypes";
|
|
@@ -36,7 +37,7 @@ describe("DatePicker Accessibility", () => {
|
|
|
36
37
|
const { container } = render(
|
|
37
38
|
<DatePicker
|
|
38
39
|
labelText="Select the date range you want to visit NYPL"
|
|
39
|
-
|
|
40
|
+
isDateRange
|
|
40
41
|
/>
|
|
41
42
|
);
|
|
42
43
|
expect(await axe(container)).toHaveNoViolations();
|
|
@@ -207,21 +208,37 @@ describe("DatePicker", () => {
|
|
|
207
208
|
).toBeInTheDocument();
|
|
208
209
|
});
|
|
209
210
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
render(
|
|
211
|
+
it("should not render the helper text or invalid text when 'showHelperInvalidText' is false", () => {
|
|
212
|
+
const { rerender } = render(
|
|
213
213
|
<DatePicker
|
|
214
214
|
labelText="Select the date you want to visit NYPL"
|
|
215
215
|
helperText="Note that the Library may be closed on Sundays."
|
|
216
216
|
invalidText="Please select a valid date."
|
|
217
217
|
showHelperInvalidText={false}
|
|
218
|
-
isInvalid
|
|
219
218
|
/>
|
|
220
219
|
);
|
|
220
|
+
expect(
|
|
221
|
+
screen.queryByText("Note that the Library may be closed on Sundays.")
|
|
222
|
+
).not.toBeInTheDocument();
|
|
223
|
+
expect(
|
|
224
|
+
screen.queryByText("Please select a valid date.")
|
|
225
|
+
).not.toBeInTheDocument();
|
|
221
226
|
|
|
227
|
+
rerender(
|
|
228
|
+
<DatePicker
|
|
229
|
+
labelText="Select the date you want to visit NYPL"
|
|
230
|
+
helperText="Note that the Library may be closed on Sundays."
|
|
231
|
+
invalidText="Please select a valid date."
|
|
232
|
+
showHelperInvalidText={false}
|
|
233
|
+
isInvalid
|
|
234
|
+
/>
|
|
235
|
+
);
|
|
222
236
|
expect(
|
|
223
237
|
screen.queryByText("Note that the Library may be closed on Sundays.")
|
|
224
238
|
).not.toBeInTheDocument();
|
|
239
|
+
expect(
|
|
240
|
+
screen.queryByText("Please select a valid date.")
|
|
241
|
+
).not.toBeInTheDocument();
|
|
225
242
|
});
|
|
226
243
|
|
|
227
244
|
it("should render a disabled input field", () => {
|
|
@@ -229,7 +246,7 @@ describe("DatePicker", () => {
|
|
|
229
246
|
<DatePicker
|
|
230
247
|
labelText="Select the date you want to visit NYPL"
|
|
231
248
|
helperText="Note that the Library may be closed on Sundays."
|
|
232
|
-
isDisabled
|
|
249
|
+
isDisabled
|
|
233
250
|
/>
|
|
234
251
|
);
|
|
235
252
|
|
|
@@ -243,13 +260,45 @@ describe("DatePicker", () => {
|
|
|
243
260
|
<DatePicker
|
|
244
261
|
labelText="Select the date you want to visit NYPL"
|
|
245
262
|
helperText="Note that the Library may be closed on Sundays."
|
|
246
|
-
|
|
263
|
+
isRequired
|
|
247
264
|
/>
|
|
248
265
|
);
|
|
249
266
|
|
|
250
267
|
expect(screen.getByText(/required/i)).toBeInTheDocument();
|
|
251
268
|
});
|
|
252
269
|
|
|
270
|
+
it("should hide the Optional/Required text in the label with `showOptReqLabel`", () => {
|
|
271
|
+
const { rerender } = render(
|
|
272
|
+
<DatePicker labelText="Select the date you want to visit NYPL" />
|
|
273
|
+
);
|
|
274
|
+
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
275
|
+
|
|
276
|
+
rerender(
|
|
277
|
+
<DatePicker
|
|
278
|
+
labelText="Select the date you want to visit NYPL"
|
|
279
|
+
showOptReqLabel={false}
|
|
280
|
+
/>
|
|
281
|
+
);
|
|
282
|
+
expect(screen.queryByText(/Optional/i)).not.toBeInTheDocument();
|
|
283
|
+
|
|
284
|
+
rerender(
|
|
285
|
+
<DatePicker
|
|
286
|
+
labelText="Select the date you want to visit NYPL"
|
|
287
|
+
isRequired
|
|
288
|
+
/>
|
|
289
|
+
);
|
|
290
|
+
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
291
|
+
|
|
292
|
+
rerender(
|
|
293
|
+
<DatePicker
|
|
294
|
+
labelText="Select the date you want to visit NYPL"
|
|
295
|
+
showOptReqLabel={false}
|
|
296
|
+
isRequired
|
|
297
|
+
/>
|
|
298
|
+
);
|
|
299
|
+
expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
|
|
300
|
+
});
|
|
301
|
+
|
|
253
302
|
it("should pass the value to the `onChange` function", () => {
|
|
254
303
|
let dateObject: any = {};
|
|
255
304
|
const onChange = (data) => {
|
|
@@ -259,8 +308,8 @@ describe("DatePicker", () => {
|
|
|
259
308
|
<DatePicker
|
|
260
309
|
labelText="Select the date you want to visit NYPL"
|
|
261
310
|
helperText="Note that the Library may be closed on Sundays."
|
|
262
|
-
required={true}
|
|
263
311
|
onChange={onChange}
|
|
312
|
+
isRequired
|
|
264
313
|
/>
|
|
265
314
|
);
|
|
266
315
|
|
|
@@ -316,17 +365,68 @@ describe("DatePicker", () => {
|
|
|
316
365
|
);
|
|
317
366
|
});
|
|
318
367
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
368
|
+
// Note: Have to add an initial date so that the snapshot tests always
|
|
369
|
+
// pass. Otherwise, it'll use the _current_ date which changes
|
|
370
|
+
// based on the day it is tested and is not what we want.
|
|
371
|
+
it.skip("renders the UI snapshot correctly", () => {
|
|
372
|
+
const basic = renderer
|
|
373
|
+
.create(
|
|
374
|
+
<DatePicker
|
|
375
|
+
id="basic"
|
|
376
|
+
labelText="Select the full date you want to visit NYPL"
|
|
377
|
+
initialDate="1/2/1988"
|
|
378
|
+
/>
|
|
379
|
+
)
|
|
380
|
+
.toJSON();
|
|
381
|
+
const withoutLabel = renderer
|
|
382
|
+
.create(
|
|
383
|
+
<DatePicker
|
|
384
|
+
id="no-label"
|
|
385
|
+
labelText="Select the date you want to visit NYPL"
|
|
386
|
+
initialDate="1/2/1988"
|
|
387
|
+
showLabel={false}
|
|
388
|
+
/>
|
|
389
|
+
)
|
|
390
|
+
.toJSON();
|
|
391
|
+
const withCustomFormat = renderer
|
|
392
|
+
.create(
|
|
393
|
+
<DatePicker
|
|
394
|
+
id="custom-format"
|
|
395
|
+
labelText="Select the date you want to visit NYPL"
|
|
396
|
+
dateFormat="yyyy/dd/MM"
|
|
397
|
+
initialDate="1/2/1988"
|
|
398
|
+
/>
|
|
399
|
+
)
|
|
400
|
+
.toJSON();
|
|
401
|
+
const invalid = renderer
|
|
402
|
+
.create(
|
|
403
|
+
<DatePicker
|
|
404
|
+
id="invalid"
|
|
405
|
+
labelText="Select the date you want to visit NYPL"
|
|
406
|
+
helperText="Note that the Library may be closed on Sundays."
|
|
407
|
+
invalidText="Please select a valid date."
|
|
408
|
+
initialDate="1/2/1988"
|
|
409
|
+
isInvalid
|
|
410
|
+
/>
|
|
411
|
+
)
|
|
412
|
+
.toJSON();
|
|
413
|
+
const disabled = renderer
|
|
414
|
+
.create(
|
|
415
|
+
<DatePicker
|
|
416
|
+
id="disabled"
|
|
417
|
+
labelText="Select the date you want to visit NYPL"
|
|
418
|
+
helperText="Note that the Library may be closed on Sundays."
|
|
419
|
+
invalidText="Please select a valid date."
|
|
420
|
+
initialDate="1/2/1988"
|
|
421
|
+
isDisabled
|
|
422
|
+
/>
|
|
423
|
+
)
|
|
424
|
+
.toJSON();
|
|
425
|
+
expect(basic).toMatchSnapshot();
|
|
426
|
+
expect(withoutLabel).toMatchSnapshot();
|
|
427
|
+
expect(withCustomFormat).toMatchSnapshot();
|
|
428
|
+
expect(invalid).toMatchSnapshot();
|
|
429
|
+
expect(disabled).toMatchSnapshot();
|
|
330
430
|
});
|
|
331
431
|
});
|
|
332
432
|
|
|
@@ -334,8 +434,8 @@ describe("DatePicker", () => {
|
|
|
334
434
|
it("should render the date range with two input fields", () => {
|
|
335
435
|
render(
|
|
336
436
|
<DatePicker
|
|
337
|
-
dateRange={true}
|
|
338
437
|
labelText="Select the date range you want to visit NYPL"
|
|
438
|
+
isDateRange
|
|
339
439
|
/>
|
|
340
440
|
);
|
|
341
441
|
const [year, month, day] = getTodaysValues();
|
|
@@ -354,7 +454,7 @@ describe("DatePicker", () => {
|
|
|
354
454
|
render(
|
|
355
455
|
<DatePicker
|
|
356
456
|
labelText="Select the full date you want to visit NYPL"
|
|
357
|
-
|
|
457
|
+
isDateRange
|
|
358
458
|
initialDate="1/2/1988"
|
|
359
459
|
initialDateTo="3/4/1990"
|
|
360
460
|
/>
|
|
@@ -369,12 +469,12 @@ describe("DatePicker", () => {
|
|
|
369
469
|
it("should render two input labels and three separate helper text", () => {
|
|
370
470
|
render(
|
|
371
471
|
<DatePicker
|
|
372
|
-
dateRange={true}
|
|
373
472
|
labelText="Select the date range you want to visit NYPL"
|
|
374
473
|
helperText="Note that the Library may be closed on Sundays."
|
|
375
474
|
helperTextFrom="Note for the 'from' field."
|
|
376
475
|
helperTextTo="Note for the 'to' field."
|
|
377
476
|
invalidText="Please select a valid date range."
|
|
477
|
+
isDateRange
|
|
378
478
|
/>
|
|
379
479
|
);
|
|
380
480
|
// There are two labels for each input.
|
|
@@ -392,95 +492,169 @@ describe("DatePicker", () => {
|
|
|
392
492
|
expect(screen.getByText(/Note for the 'to' field./i)).toBeInTheDocument();
|
|
393
493
|
});
|
|
394
494
|
|
|
395
|
-
it("should render based on
|
|
495
|
+
it("should render different states based on respective props", () => {
|
|
396
496
|
const { rerender } = render(
|
|
397
497
|
<DatePicker
|
|
398
|
-
dateRange
|
|
399
498
|
labelText="Select the date range you want to visit NYPL"
|
|
400
499
|
helperText="Note that the Library may be closed on Sundays."
|
|
401
500
|
helperTextTo="Note for the 'to' field."
|
|
402
501
|
invalidText="Please select a valid date range."
|
|
502
|
+
isDateRange
|
|
403
503
|
isInvalid
|
|
404
504
|
/>
|
|
405
505
|
);
|
|
406
506
|
|
|
507
|
+
// The invalid text displays under each input field.
|
|
407
508
|
expect(
|
|
408
509
|
screen.getAllByText("Please select a valid date range.")
|
|
409
510
|
).toHaveLength(2);
|
|
410
511
|
|
|
411
512
|
rerender(
|
|
412
513
|
<DatePicker
|
|
413
|
-
dateRange
|
|
414
514
|
labelText="Select the date range you want to visit NYPL"
|
|
415
515
|
helperText="Note that the Library may be closed on Sundays."
|
|
416
516
|
helperTextTo="Note for the 'to' field."
|
|
417
517
|
invalidText="Please select a valid date range."
|
|
418
518
|
isDisabled
|
|
519
|
+
isDateRange
|
|
419
520
|
/>
|
|
420
521
|
);
|
|
421
|
-
|
|
522
|
+
// Both input fields are disabled.
|
|
422
523
|
expect(screen.getByLabelText(/From/i)).toHaveAttribute("disabled");
|
|
423
524
|
expect(screen.getByLabelText(/To/i)).toHaveAttribute("disabled");
|
|
424
525
|
|
|
425
526
|
rerender(
|
|
426
527
|
<DatePicker
|
|
427
|
-
dateRange
|
|
428
528
|
labelText="Select the date range you want to visit NYPL"
|
|
429
529
|
helperText="Note that the Library may be closed on Sundays."
|
|
430
530
|
helperTextTo="Note for the 'to' field."
|
|
431
531
|
invalidText="Please select a valid date range."
|
|
432
|
-
|
|
532
|
+
isRequired
|
|
533
|
+
isDateRange
|
|
433
534
|
/>
|
|
434
535
|
);
|
|
536
|
+
// Both input fields are required.
|
|
537
|
+
// The "Required" text is only displayed once in the `legend`.
|
|
538
|
+
expect(screen.getAllByText(/required/i)).toHaveLength(1);
|
|
539
|
+
expect(screen.getByLabelText(/From/i)).toHaveAttribute("required");
|
|
540
|
+
expect(screen.getByLabelText(/To/i)).toHaveAttribute("required");
|
|
541
|
+
});
|
|
435
542
|
|
|
436
|
-
|
|
543
|
+
// Note: Have to add initial dates so that the snapshot tests always
|
|
544
|
+
// pass. Otherwise, it'll use the _current_ date which changes
|
|
545
|
+
// based on the day it is tested and is not what we want.
|
|
546
|
+
it("renders the UI snapshot correctly", () => {
|
|
547
|
+
const basic = renderer
|
|
548
|
+
.create(
|
|
549
|
+
<DatePicker
|
|
550
|
+
id="basic"
|
|
551
|
+
labelText="Select the full date you want to visit NYPL"
|
|
552
|
+
initialDate="1/2/1988"
|
|
553
|
+
initialDateTo="2/2/1988"
|
|
554
|
+
isDateRange
|
|
555
|
+
/>
|
|
556
|
+
)
|
|
557
|
+
.toJSON();
|
|
558
|
+
const withoutLabel = renderer
|
|
559
|
+
.create(
|
|
560
|
+
<DatePicker
|
|
561
|
+
id="no-label"
|
|
562
|
+
labelText="Select the date you want to visit NYPL"
|
|
563
|
+
showLabel={false}
|
|
564
|
+
initialDate="1/2/1988"
|
|
565
|
+
initialDateTo="2/2/1988"
|
|
566
|
+
isDateRange
|
|
567
|
+
/>
|
|
568
|
+
)
|
|
569
|
+
.toJSON();
|
|
570
|
+
const withCustomFormat = renderer
|
|
571
|
+
.create(
|
|
572
|
+
<DatePicker
|
|
573
|
+
id="custom-format"
|
|
574
|
+
labelText="Select the date you want to visit NYPL"
|
|
575
|
+
dateFormat="yyyy/dd/MM"
|
|
576
|
+
initialDate="1/2/1988"
|
|
577
|
+
initialDateTo="2/2/1988"
|
|
578
|
+
isDateRange
|
|
579
|
+
/>
|
|
580
|
+
)
|
|
581
|
+
.toJSON();
|
|
582
|
+
const invalid = renderer
|
|
583
|
+
.create(
|
|
584
|
+
<DatePicker
|
|
585
|
+
id="invalid"
|
|
586
|
+
labelText="Select the date you want to visit NYPL"
|
|
587
|
+
helperText="Note that the Library may be closed on Sundays."
|
|
588
|
+
invalidText="Please select a valid date."
|
|
589
|
+
initialDate="1/2/1988"
|
|
590
|
+
initialDateTo="2/2/1988"
|
|
591
|
+
isInvalid
|
|
592
|
+
isDateRange
|
|
593
|
+
/>
|
|
594
|
+
)
|
|
595
|
+
.toJSON();
|
|
596
|
+
const disabled = renderer
|
|
597
|
+
.create(
|
|
598
|
+
<DatePicker
|
|
599
|
+
id="disabled"
|
|
600
|
+
labelText="Select the date you want to visit NYPL"
|
|
601
|
+
helperText="Note that the Library may be closed on Sundays."
|
|
602
|
+
invalidText="Please select a valid date."
|
|
603
|
+
initialDate="1/2/1988"
|
|
604
|
+
initialDateTo="2/2/1988"
|
|
605
|
+
isDisabled
|
|
606
|
+
isDateRange
|
|
607
|
+
/>
|
|
608
|
+
)
|
|
609
|
+
.toJSON();
|
|
610
|
+
expect(basic).toMatchSnapshot();
|
|
611
|
+
expect(withoutLabel).toMatchSnapshot();
|
|
612
|
+
expect(withCustomFormat).toMatchSnapshot();
|
|
613
|
+
expect(invalid).toMatchSnapshot();
|
|
614
|
+
expect(disabled).toMatchSnapshot();
|
|
437
615
|
});
|
|
438
616
|
|
|
439
|
-
/* // REVISIT THIS TEST
|
|
440
617
|
it("should select two new dates", () => {
|
|
441
618
|
render(
|
|
442
619
|
<DatePicker
|
|
443
|
-
|
|
620
|
+
initialDate="3/2/1988"
|
|
621
|
+
initialDateTo="3/28/1988"
|
|
622
|
+
isDateRange
|
|
444
623
|
labelText="Select the date range you want to visit NYPL"
|
|
445
624
|
/>
|
|
446
625
|
);
|
|
447
626
|
const fromInput = screen.getByLabelText(/From/i);
|
|
448
627
|
const toInput = screen.getByLabelText(/To/i);
|
|
449
|
-
const date = getTodaysDateDisplay();
|
|
450
628
|
|
|
451
|
-
expect(
|
|
629
|
+
expect(fromInput).toHaveValue("1988-03-02");
|
|
630
|
+
expect(toInput).toHaveValue("1988-03-28");
|
|
631
|
+
// expect(screen.getAllByDisplayValue(date)).toHaveLength(2);
|
|
452
632
|
|
|
453
633
|
// Let's select a new day.
|
|
454
634
|
userEvent.click(fromInput);
|
|
455
635
|
// The popup displays. Select a new day.
|
|
456
|
-
const newDateFrom =
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
todaysDate.getDate() > 28 ? 18 : todaysDate.getDate() + 5;
|
|
460
|
-
const newDateToSelect = str_pad(newDateFrom);
|
|
461
|
-
userEvent.click(screen.getAllByText(newDateFrom)[0]);
|
|
636
|
+
const newDateFrom = 5;
|
|
637
|
+
const newDateTo = 25;
|
|
638
|
+
userEvent.click(screen.getByText(newDateFrom));
|
|
462
639
|
|
|
463
|
-
// We selected a new day but kept everything else the same.
|
|
464
|
-
//
|
|
465
|
-
|
|
466
|
-
const newFromValue = `${date.slice(0, -2)}${newDateToSelect}`;
|
|
467
|
-
expect(screen.getByDisplayValue(newFromValue)).toBeInTheDocument();
|
|
640
|
+
// We selected a new day but kept everything else the same.
|
|
641
|
+
// Example: 2021-03-02 -> 5 is selected -> 2021-03-05
|
|
642
|
+
expect(screen.getByDisplayValue("1988-03-05")).toBeInTheDocument();
|
|
468
643
|
// The "To" input should only have the older value now.
|
|
469
|
-
expect(screen.getAllByDisplayValue(date)).toHaveLength(1);
|
|
644
|
+
// expect(screen.getAllByDisplayValue(date)).toHaveLength(1);
|
|
470
645
|
|
|
471
646
|
// Now select the "To" date.
|
|
472
647
|
userEvent.click(toInput);
|
|
473
648
|
// The popup displays.
|
|
474
649
|
userEvent.click(screen.getByText(newDateTo));
|
|
475
650
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
expect(screen.
|
|
651
|
+
expect(screen.getByDisplayValue("1988-03-25")).toBeInTheDocument();
|
|
652
|
+
// The original date values are no longer in display.
|
|
653
|
+
expect(screen.queryByDisplayValue("1988-03-02")).not.toBeInTheDocument();
|
|
654
|
+
expect(screen.queryByDisplayValue("1988-03-28")).not.toBeInTheDocument();
|
|
480
655
|
// The "From" date value wasn't affected by this!
|
|
481
|
-
expect(screen.getByDisplayValue(
|
|
656
|
+
expect(screen.getByDisplayValue("1988-03-05")).toBeInTheDocument();
|
|
482
657
|
});
|
|
483
|
-
*/
|
|
484
658
|
});
|
|
485
659
|
|
|
486
660
|
describe("Popup Calendar", () => {
|
|
@@ -513,11 +687,16 @@ describe("DatePicker", () => {
|
|
|
513
687
|
});
|
|
514
688
|
|
|
515
689
|
it("should select a new date from the calendar", () => {
|
|
516
|
-
render(
|
|
690
|
+
render(
|
|
691
|
+
<DatePicker
|
|
692
|
+
labelText="Select the date you want to visit NYPL"
|
|
693
|
+
initialDate="08/01/2021"
|
|
694
|
+
/>
|
|
695
|
+
);
|
|
517
696
|
const input = screen.getByLabelText(
|
|
518
697
|
/Select the date you want to visit NYPL/i
|
|
519
698
|
);
|
|
520
|
-
const date =
|
|
699
|
+
const date = "2021-08-01";
|
|
521
700
|
const midMonthDay = "15";
|
|
522
701
|
|
|
523
702
|
expect(screen.getByDisplayValue(date)).toBeInTheDocument();
|
|
@@ -535,19 +714,18 @@ describe("DatePicker", () => {
|
|
|
535
714
|
|
|
536
715
|
// Let's select a new month
|
|
537
716
|
userEvent.click(input);
|
|
538
|
-
// The popup displays.
|
|
717
|
+
// The popup displays. We are currently on 08/15/2021.
|
|
539
718
|
expect(
|
|
540
|
-
screen.getByText(monthArray[
|
|
719
|
+
screen.getByText(monthArray["7"], { exact: false })
|
|
541
720
|
).toBeInTheDocument();
|
|
542
721
|
userEvent.click(screen.getByLabelText("Next Month"));
|
|
543
722
|
userEvent.click(screen.getByLabelText("Next Month"));
|
|
544
723
|
|
|
545
724
|
// We are two months ahead but still selecting the midmonth day.
|
|
546
725
|
userEvent.click(screen.getByText(midMonthDay));
|
|
547
|
-
// So only the month should change accordingly.
|
|
548
|
-
// Date object is 0-index so we have to add 3.
|
|
726
|
+
// So only the month should change accordingly.
|
|
549
727
|
const newMonthValue = `${newDayValue.substr(0, 5)}${str_pad(
|
|
550
|
-
|
|
728
|
+
"10"
|
|
551
729
|
)}${newDayValue.substr(7)}`;
|
|
552
730
|
expect(screen.getByDisplayValue(newMonthValue)).toBeInTheDocument();
|
|
553
731
|
});
|
|
@@ -582,33 +760,38 @@ describe("DatePicker", () => {
|
|
|
582
760
|
render(
|
|
583
761
|
<DatePicker
|
|
584
762
|
dateType={DatePickerTypes.Month}
|
|
763
|
+
initialDate="4/1/1988"
|
|
585
764
|
labelText="Select the month you want to visit NYPL"
|
|
586
765
|
/>
|
|
587
766
|
);
|
|
588
767
|
const input = screen.getByLabelText(
|
|
589
768
|
/Select the month you want to visit NYPL/i
|
|
590
769
|
);
|
|
591
|
-
|
|
592
|
-
|
|
770
|
+
// In the "month" format.
|
|
771
|
+
const date = "04-1988";
|
|
772
|
+
// Let's select May as the new month.
|
|
773
|
+
let currentMonthSelected = monthArray[4];
|
|
593
774
|
let currentMonthSelectedDisplay = currentMonthSelected.slice(0, 3);
|
|
594
775
|
|
|
776
|
+
// We start off with April being displayed as "4-1988".
|
|
595
777
|
expect(screen.getByDisplayValue(date)).toBeInTheDocument();
|
|
596
778
|
expect(
|
|
597
779
|
screen.queryByText(currentMonthSelectedDisplay)
|
|
598
780
|
).not.toBeInTheDocument();
|
|
599
781
|
|
|
600
|
-
// Let's select a new day
|
|
782
|
+
// Let's select a new day by first clicking on the input to open
|
|
783
|
+
// the calendar popup.
|
|
601
784
|
userEvent.click(input);
|
|
602
|
-
// The popup displays.
|
|
603
785
|
|
|
786
|
+
// Now "May" appears as the next month in the calendar popup.
|
|
604
787
|
expect(screen.getByText(currentMonthSelectedDisplay)).toBeInTheDocument();
|
|
605
788
|
|
|
606
|
-
userEvent.click(screen.getByText(
|
|
789
|
+
userEvent.click(screen.getByText(currentMonthSelectedDisplay));
|
|
607
790
|
|
|
608
791
|
// We selected a new month but kept the year the same.
|
|
609
|
-
// Example:
|
|
792
|
+
// Example: 04-2021 -> "May" -> 05-2021
|
|
610
793
|
expect(
|
|
611
|
-
screen.getByDisplayValue(`
|
|
794
|
+
screen.getByDisplayValue(`05-${date.substr(3)}`)
|
|
612
795
|
).toBeInTheDocument();
|
|
613
796
|
});
|
|
614
797
|
|