@kaizen/components 1.52.0 → 1.53.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/dist/cjs/DatePicker/DatePicker.cjs +8 -1
- package/dist/cjs/DatePicker/utils/getLocale.cjs +2 -0
- package/dist/cjs/DatePicker/utils/validateDate.cjs +28 -2
- package/dist/cjs/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.cjs +8 -1
- package/dist/cjs/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.cjs +14 -2
- package/dist/cjs/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.cjs +1 -0
- package/dist/cjs/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.cjs +10 -1
- package/dist/cjs/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.cjs +8 -1
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.cjs +5 -1
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.cjs +1 -0
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.cjs +1 -0
- package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.cjs +16 -1
- package/dist/cjs/__future__/Workflow/subcomponents/Header/Header.cjs +1 -1
- package/dist/esm/DatePicker/DatePicker.mjs +8 -1
- package/dist/esm/DatePicker/utils/getLocale.mjs +3 -1
- package/dist/esm/DatePicker/utils/validateDate.mjs +22 -2
- package/dist/esm/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.mjs +8 -1
- package/dist/esm/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.mjs +14 -2
- package/dist/esm/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.mjs +1 -0
- package/dist/esm/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.mjs +10 -1
- package/dist/esm/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.mjs +8 -1
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.mjs +5 -1
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useEndDateValidation.mjs +1 -0
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/useStartDateValidation.mjs +1 -0
- package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.mjs +10 -1
- package/dist/esm/__future__/Workflow/subcomponents/Header/Header.mjs +1 -1
- package/dist/types/AvatarGroup/_docs/example-data.d.ts +8 -0
- package/dist/types/BrandMoment/_docs/ExampleHeaders.d.ts +3 -0
- package/dist/types/Calendar/_docs/controls/defaultMonthControls.d.ts +2 -0
- package/dist/types/Calendar/_docs/controls/weekStartsOnControls.d.ts +2 -0
- package/dist/types/Container/Container.d.ts +1 -1
- package/dist/types/Content/Content.d.ts +1 -1
- package/dist/types/DateInput/DateInput/DateInput.d.ts +1 -1
- package/dist/types/DatePicker/DatePicker.d.ts +1 -1
- package/dist/types/DatePicker/_docs/controls/datePickerLocaleControls.d.ts +2 -0
- package/dist/types/DatePicker/_docs/controls/disabledDayMatchersControls.d.ts +2 -0
- package/dist/types/DatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
- package/dist/types/DatePicker/types.d.ts +2 -1
- package/dist/types/DatePicker/utils/getLocale.d.ts +1 -1
- package/dist/types/Filter/FilterBar/context/types.d.ts +28 -0
- package/dist/types/Filter/FilterButton/subcomponents/FilterButtonBase/FilterButtonBase.d.ts +1 -1
- package/dist/types/Filter/FilterDatePicker/_docs/controls/disabledDaysControls.d.ts +2 -0
- package/dist/types/Filter/FilterDatePicker/_docs/controls/validationControls.d.ts +2 -0
- package/dist/types/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
- package/dist/types/Filter/FilterDateRangePicker/_docs/controls/disabledDaysControls.d.ts +2 -0
- package/dist/types/Filter/FilterDateRangePicker/_docs/controls/validationControls.d.ts +2 -0
- package/dist/types/Filter/FilterMultiSelect/_docs/MockData.d.ts +10 -0
- package/dist/types/Filter/FilterSelect/_docs/mockData.d.ts +6 -0
- package/dist/types/Filter/_docs/controls/renderTriggerControls.d.ts +2 -0
- package/dist/types/Menu/_docs/MenuContentExample.d.ts +8 -0
- package/dist/types/Menu/_docs/examples.d.ts +11 -0
- package/dist/types/Modal/_docs/controls.d.ts +11 -0
- package/dist/types/MultiSelect/MultiSelect.d.ts +23 -0
- package/dist/types/MultiSelect/subcomponents/MultiSelectOptions/MultiSelectOptions.d.ts +13 -0
- package/dist/types/Select/Select.d.ts +3 -3
- package/dist/types/Workflow/_docs/controls/controls.d.ts +2 -0
- package/dist/types/Workflow/_docs/controls/index.d.ts +1 -0
- package/dist/types/__future__/Select/Select.d.ts +2 -2
- package/dist/types/__future__/Select/_docs/mockData.d.ts +6 -0
- package/dist/types/__future__/Select/subcomponents/SelectToggle/SelectToggle.d.ts +2 -2
- package/dist/types/__future__/Select/types.d.ts +22 -0
- package/dist/types/__future__/Workflow/_docs/controls/controls.d.ts +2 -0
- package/dist/types/__future__/Workflow/_docs/controls/index.d.ts +1 -0
- package/dist/types/__overlays__/Tooltip/v1/utils/isSemanticElement.d.ts +2 -2
- package/dist/types/utils/getNodeText.d.ts +2 -1
- package/locales/en.json +40 -0
- package/package.json +3 -3
- package/src/Avatar/_docs/Avatar.mdx +1 -1
- package/src/AvatarGroup/_docs/AvatarGroup.mdx +1 -1
- package/src/Badge/_docs/Badge.mdx +1 -1
- package/src/Brand/_docs/Brand.mdx +1 -1
- package/src/BrandMoment/_docs/BrandMoment.mdx +1 -1
- package/src/Button/Button/_docs/Button.mdx +1 -1
- package/src/Button/IconButton/_docs/IconButton.mdx +1 -1
- package/src/ButtonGroup/_docs/ButtonGroup.mdx +1 -1
- package/src/Calendar/CalendarRange/_docs/CalendarRange.mdx +1 -1
- package/src/Calendar/CalendarSingle/_docs/CalendarSingle.mdx +1 -1
- package/src/Card/_docs/Card.mdx +1 -1
- package/src/Checkbox/Checkbox/_docs/Checkbox.mdx +1 -1
- package/src/Checkbox/CheckboxField/_docs/CheckboxField.mdx +1 -1
- package/src/Checkbox/CheckboxGroup/_docs/CheckboxGroup.mdx +1 -1
- package/src/Collapsible/Collapsible/_docs/Collapsible.mdx +1 -1
- package/src/Collapsible/CollapsibleGroup/_docs/CollapsibleGroup.mdx +1 -1
- package/src/Collapsible/ExpertAdviceCollapsible/_docs/ExpertAdviceCollapsible.mdx +1 -1
- package/src/Container/_docs/Container.mdx +1 -1
- package/src/Content/_docs/Content.mdx +1 -1
- package/src/DateInput/DateInputDescription/DateInputDescription.spec.tsx +26 -18
- package/src/DatePicker/DatePicker.spec.tsx +100 -69
- package/src/DatePicker/DatePicker.tsx +13 -5
- package/src/DatePicker/_docs/DatePicker.mdx +1 -1
- package/src/DatePicker/_docs/DatePicker.stickersheet.stories.tsx +57 -21
- package/src/DatePicker/_docs/DatePicker.stories.tsx +2 -3
- package/src/DatePicker/_docs/controls/datePickerLocaleControls.ts +1 -1
- package/src/DatePicker/subcomponents/DateInputField/DateInputField.spec.tsx +49 -36
- package/src/DatePicker/types.ts +2 -1
- package/src/DatePicker/utils/getLocale.ts +6 -2
- package/src/DatePicker/utils/validateDate.spec.ts +40 -16
- package/src/DatePicker/utils/{validateDate.ts → validateDate.tsx} +24 -4
- package/src/DateRangePicker/_docs/DateRangePicker.mdx +1 -1
- package/src/Divider/_docs/Divider.mdx +1 -1
- package/src/EmptyState/_docs/EmptyState.mdx +1 -1
- package/src/ErrorPage/_docs/ErrorPage.mdx +1 -1
- package/src/FieldGroup/_docs/FieldGroup.mdx +1 -1
- package/src/FieldMessage/_docs/FieldMessage.mdx +1 -1
- package/src/Filter/Filter/_docs/Filter.mdx +1 -1
- package/src/Filter/FilterBar/FilterBar.spec.tsx +56 -25
- package/src/Filter/FilterBar/_docs/FilterBar.mdx +1 -1
- package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.spec.tsx +21 -13
- package/src/Filter/FilterBar/subcomponents/AddFiltersMenu/AddFiltersMenu.tsx +11 -1
- package/src/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.tsx +17 -2
- package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.spec.tsx +17 -8
- package/src/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.spec.tsx +37 -23
- package/src/Filter/FilterBar/subcomponents/FilterBarDateRangePicker/FilterBarDateRangePicker.spec.tsx +35 -23
- package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx +42 -26
- package/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.spec.tsx +37 -24
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.spec.tsx +12 -12
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.tsx +15 -2
- package/src/Filter/FilterButton/_docs/filter-buttons.mdx +1 -1
- package/src/Filter/FilterDatePicker/FilterDatePicker.spec.tsx +21 -16
- package/src/Filter/FilterDatePicker/_docs/FilterDatePicker.mdx +1 -1
- package/src/Filter/FilterDatePicker/_docs/FilterDatePicker.stickersheet.stories.tsx +50 -1
- package/src/Filter/FilterDatePicker/hooks/useDateInputHandlers.spec.ts +3 -3
- package/src/Filter/FilterDatePicker/hooks/{useDateValidation.spec.tsx → useDateValidation.spec.ts} +13 -12
- package/src/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.tsx +10 -1
- package/src/Filter/FilterDatePicker/subcomponents/FilterDatePickerField/FilterDatePickerField.spec.tsx +57 -36
- package/src/Filter/FilterDatePicker/utils/validateDate.spec.ts +52 -28
- package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.spec.tsx +3 -2
- package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.mdx +1 -1
- package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stickersheet.stories.tsx +55 -24
- package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeInputField/DateRangeInputField.spec.tsx +43 -28
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.spec.tsx +82 -48
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.tsx +6 -1
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/{useEndDateValidation.spec.tsx → useEndDateValidation.spec.ts} +23 -20
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/hooks/{useStartDateValidation.spec.tsx → useStartDateValidation.spec.ts} +13 -11
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/validateEndDateBeforeStartDate.spec.ts +17 -6
- package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/utils/{validateEndDateBeforeStartDate.ts → validateEndDateBeforeStartDate.tsx} +9 -3
- package/src/Filter/FilterMultiSelect/FilterMultiSelect.spec.tsx +10 -14
- package/src/Filter/FilterMultiSelect/_docs/FilterMultiSelect.mdx +1 -1
- package/src/Filter/FilterMultiSelect/context/SelectionProvider/SelectionProvider.spec.tsx +392 -372
- package/src/Filter/FilterMultiSelect/subcomponents/SearchInput/SearchInput.spec.tsx +9 -6
- package/src/Filter/FilterSelect/_docs/FilterSelect.mdx +1 -1
- package/src/GuidanceBlock/_docs/GuidanceBlock.mdx +1 -1
- package/src/Heading/_docs/Heading.mdx +1 -1
- package/src/Icon/_docs/Icon.mdx +1 -1
- package/src/Illustration/Scene/BrandMomentCaptureIntro/_docs/BrandMomentCaptureIntro.mdx +1 -1
- package/src/Illustration/Scene/_docs/Scene.mdx +1 -1
- package/src/Illustration/Spot/_docs/Spot.mdx +1 -1
- package/src/Input/Input/_docs/Input.mdx +1 -1
- package/src/Input/InputRange/_docs/InputRange.mdx +1 -1
- package/src/Input/InputSearch/InputSearch.spec.tsx +15 -14
- package/src/Input/InputSearch/_docs/InputSearch.mdx +1 -1
- package/src/Label/_docs/Label.mdx +1 -1
- package/src/LabelledMessage/_docs/LabelledMessage.mdx +1 -1
- package/src/LikertScaleLegacy/_docs/LikertScaleLegacy.mdx +1 -1
- package/src/Loading/LoadingGraphic/_docs/LoadingGraphic.mdx +1 -1
- package/src/Loading/LoadingHeading/_docs/LoadingHeading.mdx +1 -1
- package/src/Loading/LoadingInput/_docs/LoadingInput.mdx +1 -1
- package/src/Loading/LoadingParagraph/_docs/LoadingParagraph.mdx +1 -1
- package/src/Loading/LoadingSpinner/_docs/LoadingSpinner.mdx +1 -1
- package/src/Menu/_docs/Menu.mdx +1 -1
- package/src/Modal/ConfirmationModal/_docs/ConfirmationModal.mdx +1 -1
- package/src/Modal/ContextModal/_docs/ContextModal.mdx +1 -1
- package/src/Modal/GenericModal/_docs/GenericModal.mdx +1 -1
- package/src/Modal/InputEditModal/_docs/InputEditModal.mdx +1 -1
- package/src/MultiSelect/_docs/MultiSelect.mdx +1 -1
- package/src/Notification/GlobalNotification/_docs/GlobalNotification.mdx +1 -1
- package/src/Notification/InlineNotification/_docs/InlineNotification.mdx +1 -1
- package/src/Notification/ToastNotification/_docs/ToastNotification.mdx +1 -1
- package/src/Pagination/_docs/Pagination.mdx +1 -1
- package/src/Pagination/subcomponents/DirectionalLink/_docs/DirectionalLink.mdx +1 -1
- package/src/Pagination/subcomponents/PaginationLink/_docs/PaginationLink.mdx +1 -1
- package/src/Popover/_docs/Popover.mdx +1 -1
- package/src/ProgressBar/_docs/ProgressBar.mdx +1 -1
- package/src/Radio/Radio/_docs/Radio.mdx +1 -1
- package/src/Radio/RadioField/_docs/RadioField.mdx +1 -1
- package/src/Radio/RadioGroup/_docs/RadioGroup.mdx +1 -1
- package/src/RichTextEditor/EditableRichTextContent/_docs/EditableRichTextContent.mdx +1 -1
- package/src/RichTextEditor/RichTextContent/_docs/RichTextContent.mdx +1 -1
- package/src/RichTextEditor/RichTextEditor/_docs/RichTextEditor.mdx +1 -1
- package/src/RichTextEditor/RichTextEditor/subcomponents/ToggleIconButton/_docs/ToggleIconButton.mdx +1 -1
- package/src/RichTextEditor/RichTextEditor/subcomponents/Toolbar/_docs/Toolbar.mdx +1 -1
- package/src/SearchField/_docs/SearchField.mdx +1 -1
- package/src/Select/_docs/Select.mdx +1 -1
- package/src/Skirt/_docs/Skirt.mdx +1 -1
- package/src/Slider/_docs/Slider.mdx +1 -1
- package/src/SplitButton/SplitButton.spec.tsx +11 -6
- package/src/SplitButton/_docs/SplitButton.mdx +1 -1
- package/src/SplitButton/subcomponents/DropdownButton/DropdownButton.spec.tsx +15 -10
- package/src/Table/_docs/Table.mdx +1 -1
- package/src/Tabs/_docs/Tabs.mdx +1 -1
- package/src/Tag/_docs/Tag.mdx +1 -1
- package/src/Text/_docs/Text.mdx +1 -1
- package/src/TextArea/_docs/TextArea.mdx +1 -1
- package/src/TextAreaField/_docs/TextAreaField.mdx +1 -1
- package/src/TextField/_docs/TextField.mdx +1 -1
- package/src/Tile/InformationTile/_docs/InformationTile.mdx +1 -1
- package/src/Tile/MultiActionTile/_docs/MultiActionTile.mdx +1 -1
- package/src/Tile/TileGrid/_docs/TileGrid.mdx +1 -1
- package/src/TimeField/_docs/TimeField.mdx +1 -1
- package/src/TitleBlockZen/_docs/TitleBlockZen.mdx +1 -1
- package/src/ToggleSwitch/ToggleSwitch/_docs/ToggleSwitch.mdx +1 -1
- package/src/ToggleSwitch/ToggleSwitchField/_docs/ToggleSwitchField.mdx +1 -1
- package/src/VisuallyHidden/_docs/VisuallyHidden.mdx +1 -1
- package/src/Well/_docs/Well.mdx +1 -1
- package/src/Workflow/_docs/ProgressStepper.mdx +1 -1
- package/src/Workflow/_docs/Workflow.mdx +1 -1
- package/src/Workflow/_docs/WorkflowFooter.mdx +1 -1
- package/src/Workflow/_docs/WorkflowHeader.mdx +1 -1
- package/src/__future__/Select/_docs/Select.mdx +1 -1
- package/src/__future__/Tag/Tag/_docs/Tag.mdx +1 -1
- package/src/__future__/Workflow/_docs/ProgressStepper.mdx +1 -1
- package/src/__future__/Workflow/_docs/Workflow.mdx +1 -1
- package/src/__future__/Workflow/_docs/WorkflowFooter.mdx +1 -1
- package/src/__future__/Workflow/_docs/WorkflowHeader.mdx +1 -1
- package/src/__future__/Workflow/subcomponents/Header/Header.tsx +1 -1
- package/src/__overlays__/Tooltip/v1/_docs/Tooltip.mdx +1 -1
- package/src/__overlays__/Tooltip/v3/_docs/ApiSpecification.mdx +0 -1
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.docs.stories.tsx +52 -0
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.mdx +40 -61
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_spec.png +0 -0
|
@@ -1,43 +1,51 @@
|
|
|
1
1
|
import React from "react"
|
|
2
|
-
import {
|
|
2
|
+
import { waitFor } from "@testing-library/react"
|
|
3
3
|
import { enUS } from "date-fns/locale"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import { DateInputDescription } from "./DateInputDescription"
|
|
5
6
|
|
|
6
7
|
describe("DateInputDescription", () => {
|
|
7
|
-
it("returns template string when description is undefined", () => {
|
|
8
|
-
const { container } =
|
|
9
|
-
|
|
8
|
+
it("returns template string when description is undefined", async () => {
|
|
9
|
+
const { container } = renderWithIntl(<DateInputDescription locale={enUS} />)
|
|
10
|
+
await waitFor(() => {
|
|
11
|
+
expect(container).toHaveTextContent("Input format:mm/dd/yyyy")
|
|
12
|
+
})
|
|
10
13
|
})
|
|
11
14
|
|
|
12
|
-
it("returns template string when description is empty string", () => {
|
|
13
|
-
const { container } =
|
|
15
|
+
it("returns template string when description is empty string", async () => {
|
|
16
|
+
const { container } = renderWithIntl(
|
|
14
17
|
<DateInputDescription description="" locale={enUS} />
|
|
15
18
|
)
|
|
16
|
-
|
|
19
|
+
await waitFor(() => {
|
|
20
|
+
expect(container).toHaveTextContent("Input format:mm/dd/yyyy")
|
|
21
|
+
})
|
|
17
22
|
})
|
|
18
23
|
|
|
19
|
-
it("returns template string when description is a string", () => {
|
|
20
|
-
const { container } =
|
|
24
|
+
it("returns template string when description is a string", async () => {
|
|
25
|
+
const { container } = renderWithIntl(
|
|
21
26
|
<DateInputDescription
|
|
22
27
|
description="Custom description here"
|
|
23
28
|
locale={enUS}
|
|
24
29
|
/>
|
|
25
30
|
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
await waitFor(() => {
|
|
32
|
+
expect(container).toHaveTextContent(
|
|
33
|
+
"Custom description here(Input format:mm/dd/yyyy)"
|
|
34
|
+
)
|
|
35
|
+
})
|
|
29
36
|
})
|
|
30
37
|
|
|
31
|
-
it("returns template string when description is an element", () => {
|
|
32
|
-
const { container } =
|
|
38
|
+
it("returns template string when description is an element", async () => {
|
|
39
|
+
const { container } = renderWithIntl(
|
|
33
40
|
<DateInputDescription
|
|
34
41
|
description={<span>Custom description span</span>}
|
|
35
42
|
locale={enUS}
|
|
36
43
|
/>
|
|
37
44
|
)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
await waitFor(() => {
|
|
46
|
+
expect(container).toHaveTextContent(
|
|
47
|
+
"Custom description span(Input format:mm/dd/yyyy)"
|
|
48
|
+
)
|
|
49
|
+
})
|
|
42
50
|
})
|
|
43
51
|
})
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react"
|
|
2
|
-
import {
|
|
2
|
+
import { screen, waitFor, within } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import { DatePicker } from "./DatePicker"
|
|
5
|
-
import { ValidationResponse } from "./types"
|
|
6
6
|
import { DatePickerProps } from "."
|
|
7
7
|
|
|
8
8
|
const user = userEvent.setup()
|
|
@@ -26,20 +26,26 @@ const DatePickerWrapper = ({
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
describe("<DatePicker />", () => {
|
|
29
|
-
it("should not show the calendar initially", () => {
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
it("should not show the calendar initially", async () => {
|
|
30
|
+
renderWithIntl(<DatePickerWrapper />)
|
|
31
|
+
await waitFor(() => {
|
|
32
|
+
expect(screen.queryByRole("dialog")).not.toBeInTheDocument()
|
|
33
|
+
})
|
|
32
34
|
})
|
|
33
35
|
|
|
34
|
-
it("should have an empty input value when a date is not provided", () => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
it("should have an empty input value when a date is not provided", async () => {
|
|
37
|
+
renderWithIntl(<DatePickerWrapper />)
|
|
38
|
+
await waitFor(() => {
|
|
39
|
+
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
40
|
+
expect(input).toHaveValue("")
|
|
41
|
+
})
|
|
38
42
|
})
|
|
39
43
|
|
|
40
|
-
it("should pre-fill the input when an initial date is provided", () => {
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
it("should pre-fill the input when an initial date is provided", async () => {
|
|
45
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
46
|
+
await waitFor(() => {
|
|
47
|
+
expect(screen.getByDisplayValue("Mar 1, 2022")).toBeInTheDocument()
|
|
48
|
+
})
|
|
43
49
|
})
|
|
44
50
|
|
|
45
51
|
it("re-renders the displayed input when an selectedDay is updated after initial render", async () => {
|
|
@@ -62,7 +68,7 @@ describe("<DatePicker />", () => {
|
|
|
62
68
|
)
|
|
63
69
|
}
|
|
64
70
|
|
|
65
|
-
|
|
71
|
+
renderWithIntl(<DelayedSelectedDate />)
|
|
66
72
|
expect(screen.getByRole("combobox")).toBeInTheDocument()
|
|
67
73
|
expect(screen.getByRole("combobox")).toHaveValue("")
|
|
68
74
|
await waitFor(() => {
|
|
@@ -71,7 +77,7 @@ describe("<DatePicker />", () => {
|
|
|
71
77
|
})
|
|
72
78
|
|
|
73
79
|
it("allows you to tab through input, button and calendar", async () => {
|
|
74
|
-
|
|
80
|
+
renderWithIntl(<DatePickerWrapper />)
|
|
75
81
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
76
82
|
|
|
77
83
|
await user.tab()
|
|
@@ -106,11 +112,9 @@ describe("<DatePicker />", () => {
|
|
|
106
112
|
}, 6000)
|
|
107
113
|
|
|
108
114
|
it("should validate and close the calendar when the user presses the Enter key while focus is in the input", async () => {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
screen.queryByText("05/01/2022 is not available, try another date")
|
|
113
|
-
).not.toBeInTheDocument()
|
|
115
|
+
renderWithIntl(
|
|
116
|
+
<DatePickerWrapper disabledDates={[new Date("2022-05-01")]} />
|
|
117
|
+
)
|
|
114
118
|
|
|
115
119
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
116
120
|
await user.click(input)
|
|
@@ -135,7 +139,7 @@ describe("<DatePicker />", () => {
|
|
|
135
139
|
describe("<DatePicker /> - Focus element", () => {
|
|
136
140
|
describe("Click on input", () => {
|
|
137
141
|
beforeEach(async () => {
|
|
138
|
-
|
|
142
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
139
143
|
|
|
140
144
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
141
145
|
await user.click(input)
|
|
@@ -176,11 +180,9 @@ describe("<DatePicker /> - Focus element", () => {
|
|
|
176
180
|
})
|
|
177
181
|
|
|
178
182
|
describe("Keydown arrow on input", () => {
|
|
179
|
-
beforeEach(async () => {
|
|
180
|
-
render(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
181
|
-
})
|
|
182
|
-
|
|
183
183
|
it("shows focus within the calendar", async () => {
|
|
184
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
185
|
+
|
|
184
186
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
185
187
|
await user.tab()
|
|
186
188
|
await waitFor(() => {
|
|
@@ -198,6 +200,8 @@ describe("<DatePicker /> - Focus element", () => {
|
|
|
198
200
|
})
|
|
199
201
|
|
|
200
202
|
it("returns focus to the input when the user escapes from the calendar", async () => {
|
|
203
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
204
|
+
|
|
201
205
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
202
206
|
await user.tab()
|
|
203
207
|
await waitFor(() => {
|
|
@@ -218,7 +222,7 @@ describe("<DatePicker /> - Focus element", () => {
|
|
|
218
222
|
|
|
219
223
|
describe("Click on calendar button", () => {
|
|
220
224
|
beforeEach(async () => {
|
|
221
|
-
|
|
225
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
222
226
|
|
|
223
227
|
const calendarButton = screen.getByRole("button", {
|
|
224
228
|
name: "Change date, Mar 1, 2022",
|
|
@@ -254,7 +258,7 @@ describe("<DatePicker /> - Focus element", () => {
|
|
|
254
258
|
let calendarButton: HTMLElement
|
|
255
259
|
|
|
256
260
|
beforeEach(async () => {
|
|
257
|
-
|
|
261
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
258
262
|
|
|
259
263
|
calendarButton = screen.getByRole("button", {
|
|
260
264
|
name: "Change date, Mar 1, 2022",
|
|
@@ -301,7 +305,7 @@ describe("<DatePicker /> - Focus element", () => {
|
|
|
301
305
|
|
|
302
306
|
describe("<DatePicker /> - Input format", () => {
|
|
303
307
|
it("formats values when focus is on the input", async () => {
|
|
304
|
-
|
|
308
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
305
309
|
|
|
306
310
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
307
311
|
expect(input).toHaveValue("Mar 1, 2022")
|
|
@@ -314,7 +318,7 @@ describe("<DatePicker /> - Input format", () => {
|
|
|
314
318
|
})
|
|
315
319
|
|
|
316
320
|
it("formats values when the input loses focus - onBlur", async () => {
|
|
317
|
-
|
|
321
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("2022-03-01")} />)
|
|
318
322
|
|
|
319
323
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
320
324
|
expect(input).toHaveValue("Mar 1, 2022")
|
|
@@ -335,75 +339,96 @@ describe("<DatePicker /> - Input format", () => {
|
|
|
335
339
|
|
|
336
340
|
describe("<DatePicker /> - Validation", () => {
|
|
337
341
|
describe("Custom Validation", () => {
|
|
338
|
-
it("displays custom validation message when provided (overrides inbuilt validation)", () => {
|
|
339
|
-
|
|
342
|
+
it("displays custom validation message when provided (overrides inbuilt validation)", async () => {
|
|
343
|
+
renderWithIntl(
|
|
340
344
|
<DatePickerWrapper
|
|
341
345
|
status="error"
|
|
342
346
|
validationMessage="Custom validation message"
|
|
343
347
|
selectedDay={new Date("potato")}
|
|
344
348
|
/>
|
|
345
349
|
)
|
|
346
|
-
const icon = screen.getByLabelText("error message")
|
|
347
350
|
|
|
348
|
-
|
|
351
|
+
await waitFor(() => {
|
|
352
|
+
const icon = screen.getByLabelText("error message")
|
|
353
|
+
expect(icon).toBeInTheDocument()
|
|
354
|
+
})
|
|
355
|
+
|
|
349
356
|
expect(screen.getByText("Custom validation message")).toBeVisible()
|
|
350
357
|
expect(screen.queryByText("Date is invalid")).not.toBeInTheDocument()
|
|
351
358
|
})
|
|
352
359
|
|
|
353
|
-
it("does not show inbuilt validation message when onValidate is set", () => {
|
|
354
|
-
const onValidate = jest.fn
|
|
355
|
-
|
|
360
|
+
it("does not show inbuilt validation message when onValidate is set", async () => {
|
|
361
|
+
const onValidate = jest.fn()
|
|
362
|
+
renderWithIntl(
|
|
363
|
+
<DatePickerWrapper
|
|
364
|
+
selectedDay={new Date("potato")}
|
|
365
|
+
onValidate={onValidate}
|
|
366
|
+
/>
|
|
367
|
+
)
|
|
368
|
+
|
|
369
|
+
await waitFor(() => {
|
|
370
|
+
expect(
|
|
371
|
+
screen.getByLabelText("Input label", { selector: "input" })
|
|
372
|
+
).toBeVisible()
|
|
373
|
+
})
|
|
374
|
+
|
|
356
375
|
expect(screen.queryByTitle("error message")).not.toBeInTheDocument()
|
|
357
|
-
expect(
|
|
358
|
-
screen.queryByText("Custom validation message")
|
|
359
|
-
).not.toBeInTheDocument()
|
|
376
|
+
expect(screen.queryByText("Date is invalid")).not.toBeInTheDocument()
|
|
360
377
|
})
|
|
361
378
|
|
|
362
|
-
it("triggers validation when initial selected date is invalid", () => {
|
|
363
|
-
const onValidate = jest.fn
|
|
364
|
-
|
|
379
|
+
it("triggers validation when initial selected date is invalid", async () => {
|
|
380
|
+
const onValidate = jest.fn()
|
|
381
|
+
renderWithIntl(
|
|
365
382
|
<DatePickerWrapper
|
|
366
383
|
onValidate={onValidate}
|
|
367
384
|
selectedDay={new Date("potato")}
|
|
368
385
|
/>
|
|
369
386
|
)
|
|
370
|
-
|
|
387
|
+
await waitFor(() => {
|
|
388
|
+
expect(onValidate).toHaveBeenCalledTimes(1)
|
|
389
|
+
})
|
|
371
390
|
})
|
|
372
391
|
|
|
373
|
-
it("triggers validation when initial selected date is disabled", () => {
|
|
374
|
-
const onValidate = jest.fn
|
|
375
|
-
|
|
392
|
+
it("triggers validation when initial selected date is disabled", async () => {
|
|
393
|
+
const onValidate = jest.fn()
|
|
394
|
+
renderWithIntl(
|
|
376
395
|
<DatePickerWrapper
|
|
377
396
|
onValidate={onValidate}
|
|
378
397
|
disabledBefore={new Date("2022-05-15")}
|
|
379
398
|
selectedDay={new Date("2022-05-05")}
|
|
380
399
|
/>
|
|
381
400
|
)
|
|
382
|
-
|
|
401
|
+
await waitFor(() => {
|
|
402
|
+
expect(onValidate).toHaveBeenCalledTimes(1)
|
|
403
|
+
})
|
|
383
404
|
})
|
|
384
405
|
|
|
385
|
-
it("does not trigger validation when initial selected date is empty", () => {
|
|
386
|
-
const onValidate = jest.fn
|
|
387
|
-
|
|
406
|
+
it("does not trigger validation when initial selected date is empty", async () => {
|
|
407
|
+
const onValidate = jest.fn()
|
|
408
|
+
renderWithIntl(
|
|
388
409
|
<DatePickerWrapper onValidate={onValidate} selectedDay={undefined} />
|
|
389
410
|
)
|
|
390
|
-
|
|
411
|
+
await waitFor(() => {
|
|
412
|
+
expect(onValidate).not.toHaveBeenCalled()
|
|
413
|
+
})
|
|
391
414
|
})
|
|
392
415
|
|
|
393
|
-
it("does not trigger validation when initial selected date is valid", () => {
|
|
394
|
-
const onValidate = jest.fn
|
|
395
|
-
|
|
416
|
+
it("does not trigger validation when initial selected date is valid", async () => {
|
|
417
|
+
const onValidate = jest.fn()
|
|
418
|
+
renderWithIntl(
|
|
396
419
|
<DatePickerWrapper
|
|
397
420
|
onValidate={onValidate}
|
|
398
421
|
selectedDay={new Date("2022-05-05")}
|
|
399
422
|
/>
|
|
400
423
|
)
|
|
401
|
-
|
|
424
|
+
await waitFor(() => {
|
|
425
|
+
expect(onValidate).not.toHaveBeenCalled()
|
|
426
|
+
})
|
|
402
427
|
})
|
|
403
428
|
|
|
404
429
|
it("triggers validation when selected date is updated to invalid", async () => {
|
|
405
|
-
const onValidate = jest.fn
|
|
406
|
-
|
|
430
|
+
const onValidate = jest.fn()
|
|
431
|
+
renderWithIntl(
|
|
407
432
|
<DatePickerWrapper
|
|
408
433
|
onValidate={onValidate}
|
|
409
434
|
defaultMonth={new Date("2022-03-01")}
|
|
@@ -419,35 +444,39 @@ describe("<DatePicker /> - Validation", () => {
|
|
|
419
444
|
const dateToSelect = within(month).getByRole("gridcell", { name: "6" })
|
|
420
445
|
await user.click(dateToSelect)
|
|
421
446
|
await waitFor(() => {
|
|
422
|
-
expect(onValidate).
|
|
447
|
+
expect(onValidate).toHaveBeenCalledTimes(1)
|
|
423
448
|
})
|
|
424
449
|
})
|
|
425
450
|
})
|
|
426
451
|
|
|
427
452
|
describe("Inbuilt Validation", () => {
|
|
428
|
-
it("displays error message when selected day is invalid", () => {
|
|
429
|
-
|
|
430
|
-
const icon = screen.getByLabelText("error message")
|
|
453
|
+
it("displays error message when selected day is invalid", async () => {
|
|
454
|
+
renderWithIntl(<DatePickerWrapper selectedDay={new Date("potato")} />)
|
|
431
455
|
|
|
432
|
-
|
|
433
|
-
|
|
456
|
+
await waitFor(() => {
|
|
457
|
+
const icon = screen.getByLabelText("error message")
|
|
458
|
+
expect(screen.getByText("Date is invalid")).toBeVisible()
|
|
459
|
+
expect(icon).toBeInTheDocument()
|
|
460
|
+
})
|
|
434
461
|
})
|
|
435
462
|
|
|
436
|
-
it("displays error message when selected day is disabled", () => {
|
|
437
|
-
|
|
463
|
+
it("displays error message when selected day is disabled", async () => {
|
|
464
|
+
renderWithIntl(
|
|
438
465
|
<DatePickerWrapper
|
|
439
466
|
disabledBefore={new Date("2022-05-15")}
|
|
440
467
|
selectedDay={new Date("2022-05-05")}
|
|
441
468
|
/>
|
|
442
469
|
)
|
|
443
470
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
471
|
+
await waitFor(() => {
|
|
472
|
+
expect(
|
|
473
|
+
screen.getByText("05/05/2022 is not available, try another date")
|
|
474
|
+
).toBeVisible()
|
|
475
|
+
})
|
|
447
476
|
})
|
|
448
477
|
|
|
449
478
|
it("displays error message when input date is invalid", async () => {
|
|
450
|
-
|
|
479
|
+
renderWithIntl(<DatePickerWrapper />)
|
|
451
480
|
|
|
452
481
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
453
482
|
await user.type(input, "05/05/2022Blah")
|
|
@@ -462,7 +491,9 @@ describe("<DatePicker /> - Validation", () => {
|
|
|
462
491
|
})
|
|
463
492
|
|
|
464
493
|
it("displays error message when input date is disabled", async () => {
|
|
465
|
-
|
|
494
|
+
renderWithIntl(
|
|
495
|
+
<DatePickerWrapper disabledBefore={new Date("2022-05-15")} />
|
|
496
|
+
)
|
|
466
497
|
|
|
467
498
|
const input = screen.getByLabelText("Input label", { selector: "input" })
|
|
468
499
|
await user.type(input, "05/05/2022")
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { RefObject, useEffect, useId, useRef, useState } from "react"
|
|
2
|
+
import { useIntl } from "@cultureamp/i18n-react-intl"
|
|
2
3
|
import { DayClickEventHandler } from "react-day-picker"
|
|
3
4
|
import { FocusOn } from "react-focus-on"
|
|
4
5
|
import {
|
|
@@ -21,7 +22,7 @@ import {
|
|
|
21
22
|
DateInputField,
|
|
22
23
|
DateInputFieldProps,
|
|
23
24
|
} from "./subcomponents/DateInputField"
|
|
24
|
-
import { ValidationResponse } from "./types"
|
|
25
|
+
import type { ValidationResponse } from "./types"
|
|
25
26
|
import { DatePickerSupportedLocales, getLocale } from "./utils/getLocale"
|
|
26
27
|
import { validateDate } from "./utils/validateDate"
|
|
27
28
|
|
|
@@ -105,6 +106,14 @@ export const DatePicker = ({
|
|
|
105
106
|
onValidate,
|
|
106
107
|
...restDateInputFieldProps
|
|
107
108
|
}: DatePickerProps): JSX.Element => {
|
|
109
|
+
const { formatMessage } = useIntl()
|
|
110
|
+
|
|
111
|
+
const calendarLabelDesc = formatMessage({
|
|
112
|
+
id: "datePicker.calendarLabelDescription",
|
|
113
|
+
defaultMessage: "Select date from calendar for:",
|
|
114
|
+
description: "Label for the search input",
|
|
115
|
+
})
|
|
116
|
+
|
|
108
117
|
const reactId = useId()
|
|
109
118
|
const id = propsId ?? reactId
|
|
110
119
|
|
|
@@ -123,9 +132,8 @@ export const DatePicker = ({
|
|
|
123
132
|
const [inbuiltStatus, setInbuiltStatus] = useState<
|
|
124
133
|
DateInputFieldProps["status"] | undefined
|
|
125
134
|
>()
|
|
126
|
-
const [inbuiltValidationMessage, setInbuiltValidationMessage] =
|
|
127
|
-
|
|
128
|
-
>()
|
|
135
|
+
const [inbuiltValidationMessage, setInbuiltValidationMessage] =
|
|
136
|
+
useState<ValidationResponse["validationMessage"]>()
|
|
129
137
|
|
|
130
138
|
const shouldUseInbuiltValidation = onValidate === undefined
|
|
131
139
|
|
|
@@ -312,7 +320,7 @@ export const DatePicker = ({
|
|
|
312
320
|
>
|
|
313
321
|
<>
|
|
314
322
|
<VisuallyHidden id={`${id}-calendar-label`}>
|
|
315
|
-
|
|
323
|
+
{calendarLabelDesc}
|
|
316
324
|
</VisuallyHidden>
|
|
317
325
|
<CalendarSingle
|
|
318
326
|
id={calendarId}
|
|
@@ -10,7 +10,7 @@ import * as DatePickerStories from "./DatePicker.stories"
|
|
|
10
10
|
sourceCode="https://github.com/cultureamp/kaizen-design-system/tree/main/packages/components/src/DatePicker"
|
|
11
11
|
figma="https://www.figma.com/file/eZKEE5kXbEMY3lx84oz8iN/%F0%9F%92%9C-UI-Kit%3A-Heart?type=design&node-id=10458%3A45652&mode=design&t=4Mycc044XjC1WLin-1"
|
|
12
12
|
designGuidelines="https://cultureamp.atlassian.net/wiki/spaces/DesignSystem/pages/3082061174/Date+Picker"
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
/>
|
|
15
15
|
|
|
16
16
|
<KAIOInstallation exportNames="DatePicker" />
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React, { useState } from "react"
|
|
2
|
+
import { StaticIntlProvider } from "@cultureamp/i18n-react-intl"
|
|
2
3
|
import { Meta } from "@storybook/react"
|
|
4
|
+
import { expect, userEvent, within } from "@storybook/test"
|
|
3
5
|
import { Text } from "~components/Text"
|
|
4
6
|
import {
|
|
5
7
|
StickerSheet,
|
|
@@ -134,27 +136,6 @@ const StickerSheetTemplate: StickerSheetStory = {
|
|
|
134
136
|
</StickerSheet.Row>
|
|
135
137
|
</StickerSheet.Body>
|
|
136
138
|
</StickerSheet>
|
|
137
|
-
|
|
138
|
-
<StickerSheet isReversed={isReversed} heading="Localisation">
|
|
139
|
-
<StickerSheet.Header headings={["en-AU", "en-US"]} />
|
|
140
|
-
<StickerSheet.Body>
|
|
141
|
-
<StickerSheet.Row>
|
|
142
|
-
<DatePicker
|
|
143
|
-
labelText="Label"
|
|
144
|
-
selectedDay={new Date("2022, 1, 5")}
|
|
145
|
-
onDayChange={() => undefined}
|
|
146
|
-
isReversed={isReversed}
|
|
147
|
-
/>
|
|
148
|
-
<DatePicker
|
|
149
|
-
labelText="Label"
|
|
150
|
-
selectedDay={new Date("2022, 1, 5")}
|
|
151
|
-
onDayChange={() => undefined}
|
|
152
|
-
isReversed={isReversed}
|
|
153
|
-
locale="en-US"
|
|
154
|
-
/>
|
|
155
|
-
</StickerSheet.Row>
|
|
156
|
-
</StickerSheet.Body>
|
|
157
|
-
</StickerSheet>
|
|
158
139
|
</>
|
|
159
140
|
)
|
|
160
141
|
},
|
|
@@ -199,3 +180,58 @@ export const StickerSheetRTL: StickerSheetStory = {
|
|
|
199
180
|
textDirection: "rtl",
|
|
200
181
|
},
|
|
201
182
|
}
|
|
183
|
+
|
|
184
|
+
export const StickerSheetLocales: StickerSheetStory = {
|
|
185
|
+
name: "Sticker Sheet (Locales)",
|
|
186
|
+
render: () => (
|
|
187
|
+
<>
|
|
188
|
+
<StickerSheet heading="Localisation">
|
|
189
|
+
<StickerSheet.Header headings={["en-AU", "en-US"]} />
|
|
190
|
+
<StickerSheet.Body>
|
|
191
|
+
<StickerSheet.Row>
|
|
192
|
+
<DatePicker
|
|
193
|
+
labelText="Label"
|
|
194
|
+
selectedDay={new Date("2022, 1, 5")}
|
|
195
|
+
onDayChange={() => undefined}
|
|
196
|
+
/>
|
|
197
|
+
<DatePicker
|
|
198
|
+
labelText="Label"
|
|
199
|
+
selectedDay={new Date("2022, 1, 5")}
|
|
200
|
+
onDayChange={() => undefined}
|
|
201
|
+
locale="en-US"
|
|
202
|
+
/>
|
|
203
|
+
</StickerSheet.Row>
|
|
204
|
+
</StickerSheet.Body>
|
|
205
|
+
</StickerSheet>
|
|
206
|
+
|
|
207
|
+
<StickerSheet>
|
|
208
|
+
<StickerSheet.Header headings={["fr-CA"]} />
|
|
209
|
+
<StickerSheet.Body>
|
|
210
|
+
<StickerSheet.Row>
|
|
211
|
+
<StaticIntlProvider locale="fr-CA">
|
|
212
|
+
<DatePicker
|
|
213
|
+
labelText="Label"
|
|
214
|
+
selectedDay={new Date("2022, 1, 5")}
|
|
215
|
+
onDayChange={() => undefined}
|
|
216
|
+
locale="fr-CA"
|
|
217
|
+
data-testid="id--dp-fr-ca"
|
|
218
|
+
/>
|
|
219
|
+
</StaticIntlProvider>
|
|
220
|
+
</StickerSheet.Row>
|
|
221
|
+
</StickerSheet.Body>
|
|
222
|
+
</StickerSheet>
|
|
223
|
+
</>
|
|
224
|
+
),
|
|
225
|
+
decorators: [
|
|
226
|
+
Story => (
|
|
227
|
+
<div className="mb-[400px]">
|
|
228
|
+
<Story />
|
|
229
|
+
</div>
|
|
230
|
+
),
|
|
231
|
+
],
|
|
232
|
+
play: async ({ canvasElement }) => {
|
|
233
|
+
const canvas = within(canvasElement)
|
|
234
|
+
await userEvent.click(canvas.getByTestId("id--dp-fr-ca"))
|
|
235
|
+
await expect(canvas.getByText("janvier 2022")).toBeInTheDocument()
|
|
236
|
+
},
|
|
237
|
+
}
|
|
@@ -143,9 +143,8 @@ export const Validation: Story = {
|
|
|
143
143
|
)
|
|
144
144
|
const [status, setStatus] = useState<FieldMessageStatus | undefined>()
|
|
145
145
|
const [response, setResponse] = useState<ValidationResponse | undefined>()
|
|
146
|
-
const [validationMessage, setValidationMessage] =
|
|
147
|
-
|
|
148
|
-
>()
|
|
146
|
+
const [validationMessage, setValidationMessage] =
|
|
147
|
+
useState<ValidationResponse["validationMessage"]>()
|
|
149
148
|
|
|
150
149
|
const handleValidation = (validationResponse: ValidationResponse): void => {
|
|
151
150
|
setResponse(validationResponse)
|