@kaizen/components 1.52.1 → 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/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/styles.css +2 -2
- 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 +1 -1
- 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/__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
package/src/Filter/FilterDatePicker/hooks/{useDateValidation.spec.tsx → useDateValidation.spec.ts}
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { act } from "react"
|
|
2
|
+
import { waitFor } from "@testing-library/react"
|
|
2
3
|
import { renderHook } from "@testing-library/react-hooks"
|
|
3
|
-
import {
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import { useDateValidation } from "./useDateValidation"
|
|
5
6
|
|
|
6
7
|
describe("useDateValidation()", () => {
|
|
@@ -23,11 +24,9 @@ describe("useDateValidation()", () => {
|
|
|
23
24
|
})
|
|
24
25
|
|
|
25
26
|
describe("with an invalid date", () => {
|
|
26
|
-
it("returns a validation message and no date", () => {
|
|
27
|
+
it("returns a validation message and no date", async () => {
|
|
27
28
|
const { result } = renderHook(() =>
|
|
28
|
-
useDateValidation({
|
|
29
|
-
inputLabel: "Date",
|
|
30
|
-
})
|
|
29
|
+
useDateValidation({ inputLabel: "Date" })
|
|
31
30
|
)
|
|
32
31
|
const { validateDate, updateValidation } = result.current
|
|
33
32
|
const { validationResponse, newDate } = validateDate({
|
|
@@ -38,14 +37,16 @@ describe("useDateValidation()", () => {
|
|
|
38
37
|
act(() => {
|
|
39
38
|
updateValidation(validationResponse)
|
|
40
39
|
})
|
|
40
|
+
expect(newDate).toEqual(undefined)
|
|
41
41
|
|
|
42
|
-
expect(result.current.validationMessage).
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
expect(result.current.validationMessage?.status).toBe("error")
|
|
43
|
+
|
|
44
|
+
const { container } = renderWithIntl(
|
|
45
|
+
result.current.validationMessage?.message
|
|
46
|
+
)
|
|
47
|
+
await waitFor(() => {
|
|
48
|
+
expect(container).toHaveTextContent("Date:potato is an invalid date")
|
|
47
49
|
})
|
|
48
|
-
expect(newDate).toBeUndefined()
|
|
49
50
|
})
|
|
50
51
|
})
|
|
51
52
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react"
|
|
2
|
+
import { useIntl } from "@cultureamp/i18n-react-intl"
|
|
2
3
|
import type { Locale } from "date-fns"
|
|
3
4
|
import {
|
|
4
5
|
DateInput,
|
|
@@ -41,6 +42,14 @@ export const DateInputField = React.forwardRef<
|
|
|
41
42
|
},
|
|
42
43
|
ref
|
|
43
44
|
) => {
|
|
45
|
+
const { formatMessage } = useIntl()
|
|
46
|
+
|
|
47
|
+
const dateInputLabelFallback = formatMessage({
|
|
48
|
+
id: "filterDatePickerDateInputField.dateInputLabelFallback",
|
|
49
|
+
defaultMessage: "Date",
|
|
50
|
+
description: "Default label for date input field",
|
|
51
|
+
})
|
|
52
|
+
|
|
44
53
|
const descriptionId = `${id}--field-message`
|
|
45
54
|
|
|
46
55
|
const errorMessageId = validationMessage
|
|
@@ -58,7 +67,7 @@ export const DateInputField = React.forwardRef<
|
|
|
58
67
|
<DateInput
|
|
59
68
|
ref={ref}
|
|
60
69
|
id={id}
|
|
61
|
-
labelText={labelText ||
|
|
70
|
+
labelText={labelText || dateInputLabelFallback}
|
|
62
71
|
aria-describedby={inputDescribedBy}
|
|
63
72
|
aria-errormessage={errorMessageId}
|
|
64
73
|
aria-invalid={dateIsInvalid}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState, FocusEvent } 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 { FilterDatePickerField, FilterDatePickerFieldProps } from "."
|
|
5
6
|
|
|
6
7
|
const user = userEvent.setup()
|
|
@@ -27,30 +28,36 @@ const FilterDatePickerFieldWrapper = ({
|
|
|
27
28
|
)
|
|
28
29
|
}
|
|
29
30
|
|
|
31
|
+
const waitForI18nContent = async (): Promise<void> => {
|
|
32
|
+
await waitFor(() => {
|
|
33
|
+
expect(screen.getByLabelText("Date")).toBeVisible()
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
|
|
30
37
|
describe("<FilterDatePickerField />", () => {
|
|
31
38
|
beforeEach(() => {
|
|
32
39
|
jest.clearAllMocks()
|
|
33
40
|
})
|
|
34
41
|
|
|
35
42
|
describe("Inputs", () => {
|
|
36
|
-
it("has empty inputs when a date is not provided", () => {
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
it("has empty inputs when a date is not provided", async () => {
|
|
44
|
+
renderWithIntl(<FilterDatePickerFieldWrapper />)
|
|
45
|
+
await waitForI18nContent()
|
|
39
46
|
const inputDate = screen.getByLabelText("Date")
|
|
40
47
|
expect(inputDate).toHaveValue("")
|
|
41
48
|
})
|
|
42
49
|
|
|
43
|
-
it("pre-fills the inputs when date is provided", () => {
|
|
44
|
-
|
|
50
|
+
it("pre-fills the inputs when date is provided", async () => {
|
|
51
|
+
renderWithIntl(
|
|
45
52
|
<FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-01")} />
|
|
46
53
|
)
|
|
47
|
-
|
|
54
|
+
await waitForI18nContent()
|
|
48
55
|
const inputDate = screen.getByLabelText("Date")
|
|
49
56
|
expect(inputDate).toHaveValue("1 May 2022")
|
|
50
57
|
})
|
|
51
58
|
|
|
52
|
-
it("allows customising the input labels", () => {
|
|
53
|
-
|
|
59
|
+
it("allows customising the input labels", async () => {
|
|
60
|
+
renderWithIntl(
|
|
54
61
|
<FilterDatePickerFieldWrapper
|
|
55
62
|
selectedDate={new Date("2022-05-01")}
|
|
56
63
|
inputProps={{
|
|
@@ -58,21 +65,23 @@ describe("<FilterDatePickerField />", () => {
|
|
|
58
65
|
}}
|
|
59
66
|
/>
|
|
60
67
|
)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
68
|
+
await waitFor(() => {
|
|
69
|
+
const date = screen.getByLabelText("Due date")
|
|
70
|
+
expect(date).toHaveValue("1 May 2022")
|
|
71
|
+
})
|
|
64
72
|
})
|
|
65
73
|
|
|
66
74
|
describe("onBlur", () => {
|
|
67
75
|
it("updates date input and calendar values correctly on blur", async () => {
|
|
68
76
|
const inputDateOnBlur = jest.fn<void, [FocusEvent]>()
|
|
69
77
|
|
|
70
|
-
|
|
78
|
+
renderWithIntl(
|
|
71
79
|
<FilterDatePickerFieldWrapper
|
|
72
80
|
selectedDate={new Date("2022-05-02")}
|
|
73
81
|
onBlur={inputDateOnBlur}
|
|
74
82
|
/>
|
|
75
83
|
)
|
|
84
|
+
await waitForI18nContent()
|
|
76
85
|
|
|
77
86
|
const inputDate = screen.getByLabelText("Date")
|
|
78
87
|
expect(inputDate).toHaveValue("2 May 2022")
|
|
@@ -99,9 +108,10 @@ describe("<FilterDatePickerField />", () => {
|
|
|
99
108
|
|
|
100
109
|
describe("Press Enter key", () => {
|
|
101
110
|
it("updates calendar values and calls submit when the date is valid", async () => {
|
|
102
|
-
|
|
111
|
+
renderWithIntl(
|
|
103
112
|
<FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-02")} />
|
|
104
113
|
)
|
|
114
|
+
await waitForI18nContent()
|
|
105
115
|
|
|
106
116
|
const inputDate = screen.getByLabelText("Date")
|
|
107
117
|
expect(inputDate).toHaveValue("2 May 2022")
|
|
@@ -124,9 +134,10 @@ describe("<FilterDatePickerField />", () => {
|
|
|
124
134
|
})
|
|
125
135
|
|
|
126
136
|
it("does not call submit when the date is invalid", async () => {
|
|
127
|
-
|
|
137
|
+
renderWithIntl(
|
|
128
138
|
<FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-02")} />
|
|
129
139
|
)
|
|
140
|
+
await waitForI18nContent()
|
|
130
141
|
|
|
131
142
|
const inputDate = screen.getByLabelText("Date")
|
|
132
143
|
await user.click(inputDate)
|
|
@@ -141,9 +152,10 @@ describe("<FilterDatePickerField />", () => {
|
|
|
141
152
|
})
|
|
142
153
|
|
|
143
154
|
it("updates the calendar month to match the new start date input", async () => {
|
|
144
|
-
|
|
155
|
+
renderWithIntl(
|
|
145
156
|
<FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-02")} />
|
|
146
157
|
)
|
|
158
|
+
await waitForI18nContent()
|
|
147
159
|
|
|
148
160
|
const inputDate = screen.getByLabelText("Date")
|
|
149
161
|
expect(inputDate).toHaveValue("2 May 2022")
|
|
@@ -162,24 +174,27 @@ describe("<FilterDatePickerField />", () => {
|
|
|
162
174
|
})
|
|
163
175
|
|
|
164
176
|
describe("Calendar", () => {
|
|
165
|
-
it("shows the default month as the start month when there isn't a selected value", () => {
|
|
166
|
-
|
|
177
|
+
it("shows the default month as the start month when there isn't a selected value", async () => {
|
|
178
|
+
renderWithIntl(
|
|
167
179
|
<FilterDatePickerFieldWrapper defaultMonth={new Date("2022-05-02")} />
|
|
168
180
|
)
|
|
169
|
-
|
|
181
|
+
await waitForI18nContent()
|
|
170
182
|
expect(screen.getByText("May 2022")).toBeVisible()
|
|
171
183
|
})
|
|
172
184
|
|
|
173
|
-
it("shows the selected start date month as the start month when provided", () => {
|
|
174
|
-
|
|
185
|
+
it("shows the selected start date month as the start month when provided", async () => {
|
|
186
|
+
renderWithIntl(
|
|
175
187
|
<FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-01")} />
|
|
176
188
|
)
|
|
177
|
-
|
|
189
|
+
await waitForI18nContent()
|
|
178
190
|
expect(screen.getByText("May 2022")).toBeVisible()
|
|
179
191
|
})
|
|
180
192
|
|
|
181
|
-
it("shows the current month as the start month when selected date is invalid", () => {
|
|
182
|
-
|
|
193
|
+
it("shows the current month as the start month when selected date is invalid", async () => {
|
|
194
|
+
renderWithIntl(
|
|
195
|
+
<FilterDatePickerFieldWrapper selectedDate={new Date("potato")} />
|
|
196
|
+
)
|
|
197
|
+
await waitForI18nContent()
|
|
183
198
|
const currentMonth = new Date().toLocaleDateString("en-AU", {
|
|
184
199
|
month: "long",
|
|
185
200
|
year: "numeric",
|
|
@@ -188,7 +203,7 @@ describe("<FilterDatePickerField />", () => {
|
|
|
188
203
|
})
|
|
189
204
|
|
|
190
205
|
it("calls the onDateSubmit when selecting a date", async () => {
|
|
191
|
-
|
|
206
|
+
renderWithIntl(
|
|
192
207
|
<FilterDatePickerFieldWrapper defaultMonth={new Date("2022-05-01")} />
|
|
193
208
|
)
|
|
194
209
|
const targetMonth = screen.getByRole("grid", { name: "May 2022" })
|
|
@@ -203,9 +218,10 @@ describe("<FilterDatePickerField />", () => {
|
|
|
203
218
|
})
|
|
204
219
|
|
|
205
220
|
it("updates the input when changing the date", async () => {
|
|
206
|
-
|
|
221
|
+
renderWithIntl(
|
|
207
222
|
<FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-15")} />
|
|
208
223
|
)
|
|
224
|
+
await waitForI18nContent()
|
|
209
225
|
|
|
210
226
|
const inputDate = screen.getByLabelText("Date")
|
|
211
227
|
expect(inputDate).toHaveValue("15 May 2022")
|
|
@@ -224,9 +240,10 @@ describe("<FilterDatePickerField />", () => {
|
|
|
224
240
|
})
|
|
225
241
|
|
|
226
242
|
it("clears the inputs when clearing the calendar value", async () => {
|
|
227
|
-
|
|
243
|
+
renderWithIntl(
|
|
228
244
|
<FilterDatePickerFieldWrapper selectedDate={new Date("2022-05-15")} />
|
|
229
245
|
)
|
|
246
|
+
await waitForI18nContent()
|
|
230
247
|
|
|
231
248
|
const inputDate = screen.getByLabelText("Date")
|
|
232
249
|
expect(inputDate).toHaveValue("15 May 2022")
|
|
@@ -248,8 +265,8 @@ describe("<FilterDatePickerField />", () => {
|
|
|
248
265
|
const dateErrorId = "#test__filter-date-picker--input--date-error-message"
|
|
249
266
|
|
|
250
267
|
describe("Custom validation", () => {
|
|
251
|
-
it("shows validation messages passed in from the consumer", () => {
|
|
252
|
-
|
|
268
|
+
it("shows validation messages passed in from the consumer", async () => {
|
|
269
|
+
renderWithIntl(
|
|
253
270
|
<FilterDatePickerFieldWrapper
|
|
254
271
|
onValidate={(): void => undefined}
|
|
255
272
|
validationMessage={{
|
|
@@ -258,14 +275,15 @@ describe("<FilterDatePickerField />", () => {
|
|
|
258
275
|
}}
|
|
259
276
|
/>
|
|
260
277
|
)
|
|
261
|
-
|
|
278
|
+
await waitForI18nContent()
|
|
262
279
|
expect(screen.getByText("Date error message")).toBeVisible()
|
|
263
280
|
})
|
|
264
281
|
})
|
|
265
282
|
|
|
266
283
|
describe("Inbuilt validation", () => {
|
|
267
284
|
it("shows inbuilt validation messages", async () => {
|
|
268
|
-
const { container } =
|
|
285
|
+
const { container } = renderWithIntl(<FilterDatePickerFieldWrapper />)
|
|
286
|
+
await waitForI18nContent()
|
|
269
287
|
|
|
270
288
|
const inputDate = screen.getByLabelText("Date")
|
|
271
289
|
|
|
@@ -282,16 +300,16 @@ describe("<FilterDatePickerField />", () => {
|
|
|
282
300
|
})
|
|
283
301
|
})
|
|
284
302
|
|
|
285
|
-
it("shows inbuilt validation messages for pre-existing values", () => {
|
|
286
|
-
const { container } =
|
|
303
|
+
it("shows inbuilt validation messages for pre-existing values", async () => {
|
|
304
|
+
const { container } = renderWithIntl(
|
|
287
305
|
<FilterDatePickerFieldWrapper
|
|
288
306
|
selectedDate={new Date("2022-05-15")}
|
|
289
307
|
disabledDays={[new Date("2022-05-15")]}
|
|
290
308
|
/>
|
|
291
309
|
)
|
|
310
|
+
await waitForI18nContent()
|
|
292
311
|
|
|
293
312
|
const dateErrorContainer = container.querySelector(dateErrorId)
|
|
294
|
-
|
|
295
313
|
expect(dateErrorContainer).toHaveTextContent(
|
|
296
314
|
"15/05/2022 is not available, try another date"
|
|
297
315
|
)
|
|
@@ -299,7 +317,10 @@ describe("<FilterDatePickerField />", () => {
|
|
|
299
317
|
})
|
|
300
318
|
|
|
301
319
|
it("does not call onDateSubmit when the input value is invalid", async () => {
|
|
302
|
-
const { getByLabelText } =
|
|
320
|
+
const { getByLabelText } = renderWithIntl(
|
|
321
|
+
<FilterDatePickerFieldWrapper />
|
|
322
|
+
)
|
|
323
|
+
await waitForI18nContent()
|
|
303
324
|
|
|
304
325
|
const inputDate = getByLabelText("Date")
|
|
305
326
|
await user.clear(inputDate)
|
|
@@ -312,7 +333,7 @@ describe("<FilterDatePickerField />", () => {
|
|
|
312
333
|
})
|
|
313
334
|
|
|
314
335
|
it("re-validates values when selecting a value using the calendar", async () => {
|
|
315
|
-
const { container } =
|
|
336
|
+
const { container } = renderWithIntl(
|
|
316
337
|
<FilterDatePickerFieldWrapper
|
|
317
338
|
selectedDate={new Date("potato")}
|
|
318
339
|
defaultMonth={new Date("2022-05-01")}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { waitFor, screen } from "@testing-library/react"
|
|
2
|
+
import { renderWithIntl } from "~tests"
|
|
1
3
|
import { validateDate } from "./validateDate"
|
|
2
4
|
|
|
3
5
|
describe("validateDate()", () => {
|
|
@@ -19,70 +21,85 @@ describe("validateDate()", () => {
|
|
|
19
21
|
expect(newDate).toBeUndefined()
|
|
20
22
|
})
|
|
21
23
|
|
|
22
|
-
it("returns expected response when selected day is invalid and input value is undefined", () => {
|
|
24
|
+
it("returns expected response when selected day is invalid and input value is undefined", async () => {
|
|
23
25
|
const date = new Date("potato")
|
|
24
26
|
const inputValue = undefined
|
|
25
27
|
const { validationResponse, newDate } = validateDate({ date, inputValue })
|
|
26
28
|
|
|
27
|
-
expect(
|
|
29
|
+
expect(newDate).toBeUndefined()
|
|
30
|
+
|
|
31
|
+
const { validationMessage, ...response } = validationResponse
|
|
32
|
+
|
|
33
|
+
expect(response).toStrictEqual({
|
|
28
34
|
date,
|
|
29
35
|
inputValue,
|
|
30
|
-
validationMessage: {
|
|
31
|
-
status: "error",
|
|
32
|
-
message: "Date is invalid",
|
|
33
|
-
},
|
|
34
36
|
isInvalid: true,
|
|
35
37
|
isDisabled: false,
|
|
36
38
|
isEmpty: false,
|
|
37
39
|
isValidDate: false,
|
|
38
40
|
})
|
|
39
41
|
|
|
40
|
-
expect(
|
|
42
|
+
expect(validationMessage?.status).toBe("error")
|
|
43
|
+
|
|
44
|
+
renderWithIntl(validationMessage?.message)
|
|
45
|
+
await waitFor(() => {
|
|
46
|
+
expect(screen.getByText("Date is invalid")).toBeVisible()
|
|
47
|
+
})
|
|
41
48
|
})
|
|
42
49
|
|
|
43
|
-
it("returns expected response when selected day is invalid and input value is empty string", () => {
|
|
50
|
+
it("returns expected response when selected day is invalid and input value is empty string", async () => {
|
|
44
51
|
const date = new Date("potato")
|
|
45
52
|
const inputValue = ""
|
|
46
53
|
const { validationResponse, newDate } = validateDate({ date, inputValue })
|
|
47
54
|
|
|
48
|
-
expect(
|
|
55
|
+
expect(newDate).toBeUndefined()
|
|
56
|
+
|
|
57
|
+
const { validationMessage, ...response } = validationResponse
|
|
58
|
+
|
|
59
|
+
expect(response).toStrictEqual({
|
|
49
60
|
date,
|
|
50
61
|
inputValue,
|
|
51
|
-
validationMessage: {
|
|
52
|
-
status: "error",
|
|
53
|
-
message: "Date is invalid",
|
|
54
|
-
},
|
|
55
62
|
isInvalid: true,
|
|
56
63
|
isDisabled: false,
|
|
57
64
|
isEmpty: false,
|
|
58
65
|
isValidDate: false,
|
|
59
66
|
})
|
|
60
67
|
|
|
61
|
-
expect(
|
|
68
|
+
expect(validationMessage?.status).toBe("error")
|
|
69
|
+
|
|
70
|
+
renderWithIntl(validationMessage?.message)
|
|
71
|
+
await waitFor(() => {
|
|
72
|
+
expect(screen.getByText("Date is invalid")).toBeVisible()
|
|
73
|
+
})
|
|
62
74
|
})
|
|
63
75
|
|
|
64
|
-
it("returns expected response when selected day is invalid and input value is valid string", () => {
|
|
76
|
+
it("returns expected response when selected day is invalid and input value is valid string", async () => {
|
|
65
77
|
const date = new Date("potato")
|
|
66
78
|
const inputValue = "potato"
|
|
67
79
|
const { validationResponse, newDate } = validateDate({ date, inputValue })
|
|
68
80
|
|
|
69
|
-
expect(
|
|
81
|
+
expect(newDate).toBeUndefined()
|
|
82
|
+
|
|
83
|
+
const { validationMessage, ...response } = validationResponse
|
|
84
|
+
|
|
85
|
+
expect(response).toStrictEqual({
|
|
70
86
|
date,
|
|
71
87
|
inputValue,
|
|
72
|
-
validationMessage: {
|
|
73
|
-
status: "error",
|
|
74
|
-
message: "potato is an invalid date",
|
|
75
|
-
},
|
|
76
88
|
isInvalid: true,
|
|
77
89
|
isDisabled: false,
|
|
78
90
|
isEmpty: false,
|
|
79
91
|
isValidDate: false,
|
|
80
92
|
})
|
|
81
93
|
|
|
82
|
-
expect(
|
|
94
|
+
expect(validationMessage?.status).toBe("error")
|
|
95
|
+
|
|
96
|
+
renderWithIntl(validationMessage?.message)
|
|
97
|
+
await waitFor(() => {
|
|
98
|
+
expect(screen.getByText("potato is an invalid date")).toBeVisible()
|
|
99
|
+
})
|
|
83
100
|
})
|
|
84
101
|
|
|
85
|
-
it("returns expected response when selected day is disabled", () => {
|
|
102
|
+
it("returns expected response when selected day is disabled", async () => {
|
|
86
103
|
const date = new Date("2022-03-01")
|
|
87
104
|
const inputValue = "03/01/2022"
|
|
88
105
|
const disabledDays = [new Date("2022-03-01")]
|
|
@@ -92,20 +109,27 @@ describe("validateDate()", () => {
|
|
|
92
109
|
disabledDays,
|
|
93
110
|
})
|
|
94
111
|
|
|
95
|
-
expect(
|
|
112
|
+
expect(newDate).toBeUndefined()
|
|
113
|
+
|
|
114
|
+
const { validationMessage, ...response } = validationResponse
|
|
115
|
+
|
|
116
|
+
expect(response).toStrictEqual({
|
|
96
117
|
date,
|
|
97
118
|
inputValue,
|
|
98
|
-
validationMessage: {
|
|
99
|
-
status: "error",
|
|
100
|
-
message: "03/01/2022 is not available, try another date",
|
|
101
|
-
},
|
|
102
119
|
isInvalid: false,
|
|
103
120
|
isDisabled: true,
|
|
104
121
|
isEmpty: false,
|
|
105
122
|
isValidDate: false,
|
|
106
123
|
})
|
|
107
124
|
|
|
108
|
-
expect(
|
|
125
|
+
expect(validationMessage?.status).toBe("error")
|
|
126
|
+
|
|
127
|
+
renderWithIntl(validationMessage?.message)
|
|
128
|
+
await waitFor(() => {
|
|
129
|
+
expect(
|
|
130
|
+
screen.getByText("03/01/2022 is not available, try another date")
|
|
131
|
+
).toBeVisible()
|
|
132
|
+
})
|
|
109
133
|
})
|
|
110
134
|
|
|
111
135
|
it("returns expected response when selected day is valid", () => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState } from "react"
|
|
2
2
|
import { render, waitFor } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import { DateRange } from "~components/Calendar"
|
|
5
6
|
import { FilterButton } from "~components/Filter/FilterButton"
|
|
6
7
|
import { FilterDateRangePicker, FilterDateRangePickerProps } from "./index"
|
|
@@ -81,7 +82,7 @@ describe("<FilterDateRangePicker />", () => {
|
|
|
81
82
|
})
|
|
82
83
|
|
|
83
84
|
it("should show the calendar when the filter button is clicked", async () => {
|
|
84
|
-
const { queryByRole, getByRole, getByText } =
|
|
85
|
+
const { queryByRole, getByRole, getByText } = renderWithIntl(
|
|
85
86
|
<FilterDateRangePickerWrapper defaultMonth={new Date("2022-05-01")} />
|
|
86
87
|
)
|
|
87
88
|
expect(queryByRole("dialog")).not.toBeInTheDocument()
|
|
@@ -95,7 +96,7 @@ describe("<FilterDateRangePicker />", () => {
|
|
|
95
96
|
})
|
|
96
97
|
|
|
97
98
|
it("should not show a date range in the button if the selected range is not valid", async () => {
|
|
98
|
-
const { getByRole, getByLabelText } =
|
|
99
|
+
const { getByRole, getByLabelText } = renderWithIntl(
|
|
99
100
|
<FilterDateRangePickerWrapper
|
|
100
101
|
selectedRange={{ from: new Date("2022-05-01") }}
|
|
101
102
|
/>
|
|
@@ -10,7 +10,7 @@ import * as FilterDRPStories from "./FilterDateRangePicker.stories"
|
|
|
10
10
|
sourceCode="https://github.com/cultureamp/kaizen-design-system/tree/main/packages/components/src/FilterDateRangePicker"
|
|
11
11
|
figma="https://www.figma.com/file/ZRfnoNUXbGZv4eVWLbF4Az/%F0%9F%96%BC%EF%B8%8F-Component-Gallery?node-id=2349%3A110993&t=gzsKluk8LiOX3jCF-1"
|
|
12
12
|
designGuidelines="https://cultureamp.atlassian.net/wiki/spaces/DesignSystem/pages/3082093959/Filters"
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
/>
|
|
15
15
|
|
|
16
16
|
Date Range Picker to use for Filtering.
|
package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stickersheet.stories.tsx
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
StickerSheetStory,
|
|
11
11
|
} from "~storybook/components/StickerSheet"
|
|
12
12
|
import { FilterButton } from "../../FilterButton"
|
|
13
|
-
import { FilterDateRangePicker } from "../index"
|
|
13
|
+
import { FilterDateRangePicker, FilterDateRangePickerProps } from "../index"
|
|
14
14
|
import { FilterDateRangePickerField } from "../subcomponents/FilterDateRangePickerField"
|
|
15
15
|
|
|
16
16
|
const IS_CHROMATIC = isChromatic()
|
|
@@ -56,7 +56,7 @@ const StickerSheetTemplate: StickerSheetStory = {
|
|
|
56
56
|
})
|
|
57
57
|
|
|
58
58
|
return (
|
|
59
|
-
|
|
59
|
+
<>
|
|
60
60
|
<StickerSheet
|
|
61
61
|
heading="Filter Date Range Picker"
|
|
62
62
|
style={{ paddingBottom: IS_CHROMATIC ? "33rem" : undefined }}
|
|
@@ -138,28 +138,7 @@ const StickerSheetTemplate: StickerSheetStory = {
|
|
|
138
138
|
</StickerSheet.Row>
|
|
139
139
|
</StickerSheet.Body>
|
|
140
140
|
</StickerSheet>
|
|
141
|
-
|
|
142
|
-
<StickerSheet heading="Translated">
|
|
143
|
-
<StickerSheet.Body>
|
|
144
|
-
<StickerSheet.Row rowTitle="Japanese">
|
|
145
|
-
<StaticIntlProvider locale="ja">
|
|
146
|
-
<FilterDateRangePickerField
|
|
147
|
-
id="stickersheet--filter-drp-field--translated"
|
|
148
|
-
label="Dates"
|
|
149
|
-
locale="en-US"
|
|
150
|
-
selectedRange={rangeFieldValidation}
|
|
151
|
-
onRangeChange={setRangeFieldValidation}
|
|
152
|
-
onValidate={{
|
|
153
|
-
dateStart: action(
|
|
154
|
-
"Validation story: date start onValidate"
|
|
155
|
-
),
|
|
156
|
-
}}
|
|
157
|
-
/>
|
|
158
|
-
</StaticIntlProvider>
|
|
159
|
-
</StickerSheet.Row>
|
|
160
|
-
</StickerSheet.Body>
|
|
161
|
-
</StickerSheet>
|
|
162
|
-
</StaticIntlProvider>
|
|
141
|
+
</>
|
|
163
142
|
)
|
|
164
143
|
},
|
|
165
144
|
play: async ({ canvasElement }): Promise<void> => {
|
|
@@ -191,3 +170,55 @@ export const StickerSheetRTL: StickerSheetStory = {
|
|
|
191
170
|
name: "Sticker Sheet (RTL)",
|
|
192
171
|
parameters: { textDirection: "rtl" },
|
|
193
172
|
}
|
|
173
|
+
|
|
174
|
+
export const StickerSheetLocales: StickerSheetStory = {
|
|
175
|
+
name: "Sticker Sheet (Locales)",
|
|
176
|
+
render: () => {
|
|
177
|
+
const props = {
|
|
178
|
+
isOpen: false,
|
|
179
|
+
setIsOpen: () => undefined,
|
|
180
|
+
renderTrigger: (triggerButtonProps): JSX.Element => (
|
|
181
|
+
<FilterButton {...triggerButtonProps} />
|
|
182
|
+
),
|
|
183
|
+
label: "Dates",
|
|
184
|
+
selectedRange: {
|
|
185
|
+
from: new Date("2022-05-15"),
|
|
186
|
+
to: new Date("2022-06-22"),
|
|
187
|
+
},
|
|
188
|
+
onRangeChange: () => undefined,
|
|
189
|
+
locale: "en-AU",
|
|
190
|
+
} satisfies FilterDateRangePickerProps
|
|
191
|
+
|
|
192
|
+
return (
|
|
193
|
+
<>
|
|
194
|
+
<StickerSheet heading="Localisation">
|
|
195
|
+
<StickerSheet.Header headings={["en-AU", "en-US"]} />
|
|
196
|
+
<StickerSheet.Body>
|
|
197
|
+
<StickerSheet.Row>
|
|
198
|
+
<FilterDateRangePicker {...props} locale="en-AU" />
|
|
199
|
+
<FilterDateRangePicker {...props} locale="en-US" />
|
|
200
|
+
</StickerSheet.Row>
|
|
201
|
+
</StickerSheet.Body>
|
|
202
|
+
</StickerSheet>
|
|
203
|
+
|
|
204
|
+
<StickerSheet>
|
|
205
|
+
<StickerSheet.Header headings={["fr-CA"]} />
|
|
206
|
+
<StickerSheet.Body>
|
|
207
|
+
<StickerSheet.Row>
|
|
208
|
+
<StaticIntlProvider locale="fr-CA">
|
|
209
|
+
<FilterDateRangePicker {...props} locale="fr-CA" isOpen />
|
|
210
|
+
</StaticIntlProvider>
|
|
211
|
+
</StickerSheet.Row>
|
|
212
|
+
</StickerSheet.Body>
|
|
213
|
+
</StickerSheet>
|
|
214
|
+
</>
|
|
215
|
+
)
|
|
216
|
+
},
|
|
217
|
+
decorators: [
|
|
218
|
+
Story => (
|
|
219
|
+
<div className="mb-[520px]">
|
|
220
|
+
<Story />
|
|
221
|
+
</div>
|
|
222
|
+
),
|
|
223
|
+
],
|
|
224
|
+
}
|