@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,6 +1,7 @@
|
|
|
1
1
|
import React, { 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 {
|
|
5
6
|
FilterAttributes,
|
|
6
7
|
FilterBarProvider,
|
|
@@ -51,35 +52,44 @@ const FilterBarDateRangePickerWrapper = ({
|
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
describe("<FilterBarDateRangePicker />", () => {
|
|
54
|
-
it("shows the name in the trigger button", () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
it("shows the name in the trigger button", async () => {
|
|
56
|
+
renderWithIntl(<FilterBarDateRangePickerWrapper />)
|
|
57
|
+
await waitFor(() => {
|
|
58
|
+
const triggerButton = screen.getByRole("button", { name: "Dates" })
|
|
59
|
+
expect(triggerButton).toBeInTheDocument()
|
|
60
|
+
})
|
|
58
61
|
})
|
|
59
62
|
|
|
60
63
|
describe("Removable", () => {
|
|
61
|
-
it("does not show the remove button when isRemovable is false", () => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
it("does not show the remove button when isRemovable is false", async () => {
|
|
65
|
+
renderWithIntl(<FilterBarDateRangePickerWrapper />)
|
|
66
|
+
await waitFor(() => {
|
|
67
|
+
expect(
|
|
68
|
+
screen.getByRole("button", { name: "Dates" })
|
|
69
|
+
).toBeInTheDocument()
|
|
70
|
+
expect(
|
|
71
|
+
screen.queryByRole("button", { name: "Remove filter - Dates" })
|
|
72
|
+
).not.toBeInTheDocument()
|
|
73
|
+
})
|
|
66
74
|
})
|
|
67
75
|
|
|
68
|
-
it("shows the remove button when isRemovable is true", () => {
|
|
69
|
-
const { getByRole } =
|
|
76
|
+
it("shows the remove button when isRemovable is true", async () => {
|
|
77
|
+
const { getByRole } = renderWithIntl(
|
|
70
78
|
<FilterBarDateRangePickerWrapper
|
|
71
79
|
filterAttributes={{ isRemovable: true }}
|
|
72
80
|
defaultValues={{ range: { from: new Date("2023-05-01") } }}
|
|
73
81
|
/>
|
|
74
82
|
)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
await waitFor(() => {
|
|
84
|
+
expect(
|
|
85
|
+
getByRole("button", { name: "Remove filter - Dates" })
|
|
86
|
+
).toBeVisible()
|
|
87
|
+
})
|
|
78
88
|
})
|
|
79
89
|
})
|
|
80
90
|
|
|
81
91
|
it("can toggle its open state", async () => {
|
|
82
|
-
const { getByRole, queryByRole } =
|
|
92
|
+
const { getByRole, queryByRole } = renderWithIntl(
|
|
83
93
|
<FilterBarDateRangePickerWrapper />
|
|
84
94
|
)
|
|
85
95
|
const triggerButton = getByRole("button", { name: "Dates" })
|
|
@@ -97,8 +107,8 @@ describe("<FilterBarDateRangePicker />", () => {
|
|
|
97
107
|
})
|
|
98
108
|
})
|
|
99
109
|
|
|
100
|
-
it("shows a selected value when provided", () => {
|
|
101
|
-
const { getByRole } =
|
|
110
|
+
it("shows a selected value when provided", async () => {
|
|
111
|
+
const { getByRole } = renderWithIntl(
|
|
102
112
|
<FilterBarDateRangePickerWrapper
|
|
103
113
|
defaultValues={{
|
|
104
114
|
range: {
|
|
@@ -108,14 +118,16 @@ describe("<FilterBarDateRangePicker />", () => {
|
|
|
108
118
|
}}
|
|
109
119
|
/>
|
|
110
120
|
)
|
|
111
|
-
|
|
112
|
-
|
|
121
|
+
await waitFor(() => {
|
|
122
|
+
const triggerButton = getByRole("button", {
|
|
123
|
+
name: "Dates : 1 May 2022 - 25 Nov 2022",
|
|
124
|
+
})
|
|
125
|
+
expect(triggerButton).toBeInTheDocument()
|
|
113
126
|
})
|
|
114
|
-
expect(triggerButton).toBeInTheDocument()
|
|
115
127
|
})
|
|
116
128
|
|
|
117
129
|
it("updates the selected value in the trigger button", async () => {
|
|
118
|
-
const { getByRole, getByText } =
|
|
130
|
+
const { getByRole, getByText } = renderWithIntl(
|
|
119
131
|
<FilterBarDateRangePickerWrapper
|
|
120
132
|
defaultValues={{
|
|
121
133
|
range: {
|
|
@@ -148,7 +160,7 @@ describe("<FilterBarDateRangePicker />", () => {
|
|
|
148
160
|
|
|
149
161
|
it("allows calling additional functions on value change", async () => {
|
|
150
162
|
const onChange = jest.fn<void, [DateRange | undefined]>()
|
|
151
|
-
const { getByRole, getByText } =
|
|
163
|
+
const { getByRole, getByText } = renderWithIntl(
|
|
152
164
|
<FilterBarDateRangePickerWrapper
|
|
153
165
|
defaultValues={{
|
|
154
166
|
range: {
|
package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react"
|
|
2
|
-
import {
|
|
3
|
-
import { render, waitFor } from "@testing-library/react"
|
|
2
|
+
import { screen, waitFor } from "@testing-library/react"
|
|
4
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
5
5
|
import {
|
|
6
6
|
FilterAttributes,
|
|
7
7
|
FilterBarProvider,
|
|
@@ -90,41 +90,53 @@ const FilterBarMultiSelectWrapper = <ValuesMap extends FiltersValues = Values>({
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
describe("<FilterBarMultiSelect />", () => {
|
|
93
|
-
it("shows the name in the trigger button", () => {
|
|
94
|
-
const { getByRole } =
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
it("shows the name in the trigger button", async () => {
|
|
94
|
+
const { getByRole } = renderWithIntl(<FilterBarMultiSelectWrapper />)
|
|
95
|
+
await waitFor(() => {
|
|
96
|
+
const triggerButton = getByRole("button", { name: "Toppings" })
|
|
97
|
+
expect(triggerButton).toBeVisible()
|
|
98
|
+
})
|
|
97
99
|
})
|
|
98
100
|
|
|
99
101
|
describe("Removable", () => {
|
|
100
|
-
it("does not show the remove button when isRemovable is false", () => {
|
|
101
|
-
const { queryByRole } =
|
|
102
|
+
it("does not show the remove button when isRemovable is false", async () => {
|
|
103
|
+
const { queryByRole } = renderWithIntl(<FilterBarMultiSelectWrapper />)
|
|
104
|
+
await waitFor(() => {
|
|
105
|
+
expect(screen.getByRole("button", { name: "Toppings" })).toBeVisible()
|
|
106
|
+
})
|
|
102
107
|
expect(
|
|
103
108
|
queryByRole("button", { name: "Remove filter - Toppings" })
|
|
104
109
|
).not.toBeInTheDocument()
|
|
105
110
|
})
|
|
106
111
|
|
|
107
|
-
it("shows the remove button when isRemovable is true", () => {
|
|
108
|
-
const { getByRole } =
|
|
112
|
+
it("shows the remove button when isRemovable is true", async () => {
|
|
113
|
+
const { getByRole } = renderWithIntl(
|
|
109
114
|
<FilterBarMultiSelectWrapper
|
|
110
115
|
filterAttributes={{ isRemovable: true }}
|
|
111
116
|
defaultValues={{ toppings: ["pearls"] }}
|
|
112
117
|
/>
|
|
113
118
|
)
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
await waitFor(() => {
|
|
120
|
+
expect(
|
|
121
|
+
getByRole("button", { name: "Remove filter - Toppings" })
|
|
122
|
+
).toBeVisible()
|
|
123
|
+
})
|
|
117
124
|
})
|
|
118
125
|
|
|
119
126
|
it("hides the filter when remove button is clicked", async () => {
|
|
120
|
-
const { getByRole } =
|
|
127
|
+
const { getByRole } = renderWithIntl(
|
|
121
128
|
<FilterBarMultiSelectWrapper
|
|
122
129
|
filterAttributes={{ isRemovable: true }}
|
|
123
130
|
defaultValues={{ toppings: ["pearls"] }}
|
|
124
131
|
/>
|
|
125
132
|
)
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
|
|
134
|
+
const triggerButton = await screen.findByRole("button", {
|
|
135
|
+
name: "Toppings : Pearls",
|
|
136
|
+
})
|
|
137
|
+
await waitFor(() => {
|
|
138
|
+
expect(triggerButton).toBeVisible()
|
|
139
|
+
})
|
|
128
140
|
|
|
129
141
|
const removeButton = getByRole("button", {
|
|
130
142
|
name: "Remove filter - Toppings",
|
|
@@ -137,7 +149,9 @@ describe("<FilterBarMultiSelect />", () => {
|
|
|
137
149
|
})
|
|
138
150
|
|
|
139
151
|
it("can toggle its open state", async () => {
|
|
140
|
-
const { getByRole, queryByRole } =
|
|
152
|
+
const { getByRole, queryByRole } = renderWithIntl(
|
|
153
|
+
<FilterBarMultiSelectWrapper />
|
|
154
|
+
)
|
|
141
155
|
const triggerButton = getByRole("button", { name: "Toppings" })
|
|
142
156
|
|
|
143
157
|
await user.click(triggerButton)
|
|
@@ -153,20 +167,22 @@ describe("<FilterBarMultiSelect />", () => {
|
|
|
153
167
|
})
|
|
154
168
|
})
|
|
155
169
|
|
|
156
|
-
it("shows a selected value when provided", () => {
|
|
157
|
-
const { getByRole } =
|
|
170
|
+
it("shows a selected value when provided", async () => {
|
|
171
|
+
const { getByRole } = renderWithIntl(
|
|
158
172
|
<FilterBarMultiSelectWrapper
|
|
159
173
|
defaultValues={{ toppings: ["pearls", "fruit-jelly"] }}
|
|
160
174
|
/>
|
|
161
175
|
)
|
|
162
|
-
|
|
163
|
-
|
|
176
|
+
await waitFor(() => {
|
|
177
|
+
const triggerButton = getByRole("button", {
|
|
178
|
+
name: "Toppings : Pearls, Fruit Jelly",
|
|
179
|
+
})
|
|
180
|
+
expect(triggerButton).toBeInTheDocument()
|
|
164
181
|
})
|
|
165
|
-
expect(triggerButton).toBeInTheDocument()
|
|
166
182
|
})
|
|
167
183
|
|
|
168
184
|
it("updates the selected value in the trigger button", async () => {
|
|
169
|
-
const { getByRole } =
|
|
185
|
+
const { getByRole } = renderWithIntl(
|
|
170
186
|
<FilterBarMultiSelectWrapper defaultValues={{ toppings: ["pearls"] }} />
|
|
171
187
|
)
|
|
172
188
|
const triggerButton = getByRole("button", {
|
|
@@ -188,8 +204,8 @@ describe("<FilterBarMultiSelect />", () => {
|
|
|
188
204
|
})
|
|
189
205
|
|
|
190
206
|
it("allows calling additional functions on selection change", async () => {
|
|
191
|
-
const onChange = jest.fn
|
|
192
|
-
const { getByRole } =
|
|
207
|
+
const onChange = jest.fn()
|
|
208
|
+
const { getByRole } = renderWithIntl(
|
|
193
209
|
<FilterBarMultiSelectWrapper onSelectionChange={onChange} />
|
|
194
210
|
)
|
|
195
211
|
const triggerButton = getByRole("button", { name: "Toppings" })
|
|
@@ -241,7 +257,7 @@ describe("<FilterBarMultiSelect />", () => {
|
|
|
241
257
|
)
|
|
242
258
|
}
|
|
243
259
|
|
|
244
|
-
const { getByRole, getAllByRole, getByTestId } =
|
|
260
|
+
const { getByRole, getAllByRole, getByTestId } = renderWithIntl(
|
|
245
261
|
<FilterBarMultiSelectWrapper<ValuesDependent>
|
|
246
262
|
additionalFilters={[
|
|
247
263
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react"
|
|
2
|
-
import {
|
|
3
|
-
import { render, waitFor } from "@testing-library/react"
|
|
2
|
+
import { waitFor, screen } from "@testing-library/react"
|
|
4
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
5
5
|
import {
|
|
6
6
|
FilterAttributes,
|
|
7
7
|
FilterBarProvider,
|
|
@@ -66,35 +66,46 @@ const FilterBarSelectWrapper = <ValuesMap extends FiltersValues = Values>({
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
describe("<FilterBarSelect />", () => {
|
|
69
|
-
it("shows the name in the trigger button", () => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
it("shows the name in the trigger button", async () => {
|
|
70
|
+
renderWithIntl(<FilterBarSelectWrapper />)
|
|
71
|
+
await waitFor(() => {
|
|
72
|
+
const triggerButton = screen.getByRole("button", { name: "Flavour" })
|
|
73
|
+
expect(triggerButton).toBeInTheDocument()
|
|
74
|
+
})
|
|
73
75
|
})
|
|
74
76
|
|
|
75
77
|
describe("Removable", () => {
|
|
76
|
-
it("does not show the remove button when isRemovable is false", () => {
|
|
77
|
-
|
|
78
|
+
it("does not show the remove button when isRemovable is false", async () => {
|
|
79
|
+
renderWithIntl(<FilterBarSelectWrapper />)
|
|
80
|
+
await waitFor(() => {
|
|
81
|
+
expect(
|
|
82
|
+
screen.getByRole("button", { name: "Flavour" })
|
|
83
|
+
).toBeInTheDocument()
|
|
84
|
+
})
|
|
78
85
|
expect(
|
|
79
|
-
queryByRole("button", { name: "Remove filter - Flavour" })
|
|
86
|
+
screen.queryByRole("button", { name: "Remove filter - Flavour" })
|
|
80
87
|
).not.toBeInTheDocument()
|
|
81
88
|
})
|
|
82
89
|
|
|
83
|
-
it("shows the remove button when isRemovable is true", () => {
|
|
84
|
-
|
|
90
|
+
it("shows the remove button when isRemovable is true", async () => {
|
|
91
|
+
renderWithIntl(
|
|
85
92
|
<FilterBarSelectWrapper
|
|
86
93
|
filterAttributes={{ isRemovable: true }}
|
|
87
94
|
defaultValues={{ flavour: "jasmine-milk-tea" }}
|
|
88
95
|
/>
|
|
89
96
|
)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
97
|
+
await waitFor(() => {
|
|
98
|
+
expect(
|
|
99
|
+
screen.getByRole("button", { name: "Remove filter - Flavour" })
|
|
100
|
+
).toBeVisible()
|
|
101
|
+
})
|
|
93
102
|
})
|
|
94
103
|
})
|
|
95
104
|
|
|
96
105
|
it("can toggle its open state", async () => {
|
|
97
|
-
const { getByRole, queryByRole } =
|
|
106
|
+
const { getByRole, queryByRole } = renderWithIntl(
|
|
107
|
+
<FilterBarSelectWrapper />
|
|
108
|
+
)
|
|
98
109
|
const triggerButton = getByRole("button", { name: "Flavour" })
|
|
99
110
|
|
|
100
111
|
await user.click(triggerButton)
|
|
@@ -110,18 +121,20 @@ describe("<FilterBarSelect />", () => {
|
|
|
110
121
|
})
|
|
111
122
|
})
|
|
112
123
|
|
|
113
|
-
it("shows a selected value when provided", () => {
|
|
114
|
-
const { getByRole } =
|
|
124
|
+
it("shows a selected value when provided", async () => {
|
|
125
|
+
const { getByRole } = renderWithIntl(
|
|
115
126
|
<FilterBarSelectWrapper defaultValues={{ flavour: "jasmine-milk-tea" }} />
|
|
116
127
|
)
|
|
117
|
-
|
|
118
|
-
|
|
128
|
+
await waitFor(() => {
|
|
129
|
+
const triggerButton = getByRole("button", {
|
|
130
|
+
name: "Flavour : Jasmine Milk Tea",
|
|
131
|
+
})
|
|
132
|
+
expect(triggerButton).toBeInTheDocument()
|
|
119
133
|
})
|
|
120
|
-
expect(triggerButton).toBeInTheDocument()
|
|
121
134
|
})
|
|
122
135
|
|
|
123
136
|
it("updates the selected value in the trigger button", async () => {
|
|
124
|
-
const { getByRole } =
|
|
137
|
+
const { getByRole } = renderWithIntl(
|
|
125
138
|
<FilterBarSelectWrapper defaultValues={{ flavour: "jasmine-milk-tea" }} />
|
|
126
139
|
)
|
|
127
140
|
const triggerButton = getByRole("button", {
|
|
@@ -143,8 +156,8 @@ describe("<FilterBarSelect />", () => {
|
|
|
143
156
|
})
|
|
144
157
|
|
|
145
158
|
it("allows calling additional functions on selection change", async () => {
|
|
146
|
-
const onChange = jest.fn
|
|
147
|
-
const { getByRole } =
|
|
159
|
+
const onChange = jest.fn()
|
|
160
|
+
const { getByRole } = renderWithIntl(
|
|
148
161
|
<FilterBarSelectWrapper onSelectionChange={onChange} />
|
|
149
162
|
)
|
|
150
163
|
const triggerButton = getByRole("button", { name: "Flavour" })
|
|
@@ -195,7 +208,7 @@ describe("<FilterBarSelect />", () => {
|
|
|
195
208
|
return <FilterBarSelect id="topping" items={items} />
|
|
196
209
|
}
|
|
197
210
|
|
|
198
|
-
const { getByRole, getAllByRole, getByTestId } =
|
|
211
|
+
const { getByRole, getAllByRole, getByTestId } = renderWithIntl(
|
|
199
212
|
<FilterBarSelectWrapper<ValuesDependent>
|
|
200
213
|
additionalFilters={[
|
|
201
214
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useRef } from "react"
|
|
2
|
-
import {
|
|
2
|
+
import { screen, waitFor } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import {
|
|
5
6
|
FilterButtonRemovable,
|
|
6
7
|
FilterButtonRemovableProps,
|
|
@@ -27,19 +28,18 @@ const FilterButtonRemovableWrapper = ({
|
|
|
27
28
|
)
|
|
28
29
|
|
|
29
30
|
describe("<FilterButtonRemovable />", () => {
|
|
30
|
-
it("should use fallback label for remove button if not specified", () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
it("should use fallback label for remove button if not specified", async () => {
|
|
32
|
+
renderWithIntl(<FilterButtonRemovableWrapper />)
|
|
33
|
+
await waitFor(() => {
|
|
34
|
+
expect(
|
|
35
|
+
screen.getByRole("button", { name: "Remove filter - Desserts" })
|
|
36
|
+
).toBeVisible()
|
|
37
|
+
})
|
|
35
38
|
})
|
|
36
39
|
|
|
37
40
|
describe("Refs", () => {
|
|
38
41
|
it("correctly passes through both button refs", async () => {
|
|
39
|
-
const onClick = jest.fn
|
|
40
|
-
void,
|
|
41
|
-
[string | null | undefined, string | null | undefined]
|
|
42
|
-
>()
|
|
42
|
+
const onClick = jest.fn()
|
|
43
43
|
|
|
44
44
|
const Wrapper = (): JSX.Element => {
|
|
45
45
|
const triggerRef = useRef<HTMLButtonElement>(null)
|
|
@@ -72,10 +72,10 @@ describe("<FilterButtonRemovable />", () => {
|
|
|
72
72
|
)
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
renderWithIntl(<Wrapper />)
|
|
76
76
|
|
|
77
77
|
await user.click(screen.getByText("Click me"))
|
|
78
|
-
expect(onClick).
|
|
78
|
+
expect(onClick).toHaveBeenCalledWith(
|
|
79
79
|
"test__trigger-button",
|
|
80
80
|
"test__remove-button"
|
|
81
81
|
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { forwardRef } from "react"
|
|
2
|
+
import { useIntl } from "@cultureamp/i18n-react-intl"
|
|
2
3
|
import { ButtonGroup, ButtonGroupProps } from "~components/ButtonGroup"
|
|
3
4
|
import { FilterTriggerRef } from "~components/Filter/Filter"
|
|
4
5
|
import { ClearIcon } from "~components/Icon"
|
|
@@ -25,12 +26,24 @@ export const FilterButtonRemovable = forwardRef<
|
|
|
25
26
|
FilterButtonRemovableRefs,
|
|
26
27
|
FilterButtonRemovableProps
|
|
27
28
|
>(({ triggerButtonProps, removeButtonProps, ...restProps }, ref) => {
|
|
29
|
+
const { formatMessage } = useIntl()
|
|
30
|
+
|
|
31
|
+
const removeButtonLabelFallback = formatMessage(
|
|
32
|
+
{
|
|
33
|
+
id: "filterButton.removable.removeButtonLabel",
|
|
34
|
+
defaultMessage: "Remove filter - {filterLabel}",
|
|
35
|
+
description: "Button label to remove a single filter from the filter bar",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
filterLabel: triggerButtonProps?.label,
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
|
|
28
42
|
const customRefObject = isRefObject(ref) ? ref.current : null
|
|
29
43
|
const removeButtonRef = customRefObject?.removeButtonRef
|
|
30
44
|
|
|
31
45
|
const removeButtonLabel =
|
|
32
|
-
removeButtonProps?.tooltipText ??
|
|
33
|
-
`Remove filter - ${triggerButtonProps?.label}`
|
|
46
|
+
removeButtonProps?.tooltipText ?? removeButtonLabelFallback
|
|
34
47
|
|
|
35
48
|
return (
|
|
36
49
|
<ButtonGroup {...restProps}>
|
|
@@ -9,7 +9,7 @@ import * as FilterButtonRemovableExamples from "./FilterButtonRemovable.stories"
|
|
|
9
9
|
|
|
10
10
|
<ResourceLinks
|
|
11
11
|
sourceCode="https://github.com/cultureamp/kaizen-design-system/tree/main/packages/components/src/FilterButton"
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
/>
|
|
14
14
|
|
|
15
15
|
Trigger buttons for use by components using the `<Filter>` abstraction.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState } from "react"
|
|
2
2
|
import { render, screen, waitFor, within } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import { FilterButton } from "~components/Filter/FilterButton"
|
|
5
6
|
import { FilterDatePicker, FilterDatePickerProps } from "."
|
|
6
7
|
|
|
@@ -40,17 +41,20 @@ describe("<FilterDatePicker />", () => {
|
|
|
40
41
|
})
|
|
41
42
|
|
|
42
43
|
describe("Filter button", () => {
|
|
43
|
-
it("should show the selected date in the button", () => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
it("should show the selected date in the button", async () => {
|
|
45
|
+
renderWithIntl(
|
|
46
|
+
<FilterDatePickerWrapper selectedDate={new Date("2022-05-01")} />
|
|
47
|
+
)
|
|
48
|
+
await waitFor(() => {
|
|
49
|
+
const filterButton = screen.getByRole("button", {
|
|
50
|
+
name: "Drank : 1 May 2022",
|
|
51
|
+
})
|
|
52
|
+
expect(filterButton).toBeVisible()
|
|
47
53
|
})
|
|
48
|
-
expect(filterButton).toBeVisible()
|
|
49
54
|
})
|
|
50
55
|
|
|
51
56
|
it("should show the calendar when the filter button is clicked", async () => {
|
|
52
|
-
|
|
53
|
-
expect(screen.queryByRole("dialog")).not.toBeInTheDocument()
|
|
57
|
+
renderWithIntl(<FilterDatePickerWrapper />)
|
|
54
58
|
|
|
55
59
|
const filterButton = screen.getByRole("button", {
|
|
56
60
|
name: "Drank",
|
|
@@ -63,7 +67,7 @@ describe("<FilterDatePicker />", () => {
|
|
|
63
67
|
})
|
|
64
68
|
|
|
65
69
|
it("closes the popover when a valid date has been submitted via the calendar picker", async () => {
|
|
66
|
-
const { getByRole } =
|
|
70
|
+
const { getByRole } = renderWithIntl(<FilterDatePickerWrapper />)
|
|
67
71
|
const triggerButton = getByRole("button", {
|
|
68
72
|
name: "Drank",
|
|
69
73
|
})
|
|
@@ -86,7 +90,7 @@ describe("<FilterDatePicker />", () => {
|
|
|
86
90
|
|
|
87
91
|
describe("Text input", () => {
|
|
88
92
|
it("validates the date on blur", async () => {
|
|
89
|
-
const { getByRole, getByLabelText, getByText } =
|
|
93
|
+
const { getByRole, getByLabelText, getByText } = renderWithIntl(
|
|
90
94
|
<FilterDatePickerWrapper />
|
|
91
95
|
)
|
|
92
96
|
const triggerButton = getByRole("button", {
|
|
@@ -112,7 +116,7 @@ describe("<FilterDatePicker />", () => {
|
|
|
112
116
|
|
|
113
117
|
describe("Pressing Enter in the text input", () => {
|
|
114
118
|
it("closes the popover when a valid date has been submitted via the text input field", async () => {
|
|
115
|
-
const { getByRole, getByLabelText } =
|
|
119
|
+
const { getByRole, getByLabelText } = renderWithIntl(
|
|
116
120
|
<FilterDatePickerWrapper />
|
|
117
121
|
)
|
|
118
122
|
const triggerButton = getByRole("button", {
|
|
@@ -137,7 +141,7 @@ describe("<FilterDatePicker />", () => {
|
|
|
137
141
|
})
|
|
138
142
|
|
|
139
143
|
it("does not close the popover when an invalid date has been submitted via the text input field", async () => {
|
|
140
|
-
const { getByRole, getByLabelText, getByText } =
|
|
144
|
+
const { getByRole, getByLabelText, getByText } = renderWithIntl(
|
|
141
145
|
<FilterDatePickerWrapper />
|
|
142
146
|
)
|
|
143
147
|
const triggerButton = getByRole("button", {
|
|
@@ -164,9 +168,10 @@ describe("<FilterDatePicker />", () => {
|
|
|
164
168
|
})
|
|
165
169
|
|
|
166
170
|
it("does not close the popover when the text input field has been cleared", async () => {
|
|
167
|
-
const { getByRole, getByLabelText, getByText, queryByText } =
|
|
168
|
-
|
|
169
|
-
|
|
171
|
+
const { getByRole, getByLabelText, getByText, queryByText } =
|
|
172
|
+
renderWithIntl(
|
|
173
|
+
<FilterDatePickerWrapper selectedDate={new Date("32/13/2022")} />
|
|
174
|
+
)
|
|
170
175
|
const triggerButton = getByRole("button", {
|
|
171
176
|
name: "Drank : Invalid Date",
|
|
172
177
|
})
|
|
@@ -193,7 +198,7 @@ describe("<FilterDatePicker />", () => {
|
|
|
193
198
|
})
|
|
194
199
|
|
|
195
200
|
it("does not close the popover when there is a selected date and the user navigates months", async () => {
|
|
196
|
-
const { getByRole } =
|
|
201
|
+
const { getByRole } = renderWithIntl(
|
|
197
202
|
<FilterDatePickerWrapper selectedDate={new Date("01/01/2022")} />
|
|
198
203
|
)
|
|
199
204
|
const triggerButton = getByRole("button", {
|
|
@@ -219,7 +224,7 @@ describe("<FilterDatePicker />", () => {
|
|
|
219
224
|
})
|
|
220
225
|
|
|
221
226
|
it("updates the selected value in the trigger button when typing a date", async () => {
|
|
222
|
-
const { getByRole, getByLabelText } =
|
|
227
|
+
const { getByRole, getByLabelText } = renderWithIntl(
|
|
223
228
|
<FilterDatePickerWrapper selectedDate={new Date("06-06-2022")} />
|
|
224
229
|
)
|
|
225
230
|
const triggerButton = getByRole("button", {
|
|
@@ -10,7 +10,7 @@ import * as FilterDPStories from "./FilterDatePicker.stories"
|
|
|
10
10
|
sourceCode="https://github.com/cultureamp/kaizen-design-system/tree/main/packages/components/src/FilterDatePicker"
|
|
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 Picker to use for Filtering by a single date.
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
StickerSheetStory,
|
|
9
9
|
} from "~storybook/components/StickerSheet"
|
|
10
10
|
import { FilterButton } from "../../FilterButton"
|
|
11
|
-
import { FilterDatePicker } from "../index"
|
|
11
|
+
import { FilterDatePicker, FilterDatePickerProps } from "../index"
|
|
12
12
|
import { FilterDatePickerField } from "../subcomponents/FilterDatePickerField"
|
|
13
13
|
|
|
14
14
|
const IS_CHROMATIC = isChromatic()
|
|
@@ -130,3 +130,52 @@ export const StickerSheetRTL: StickerSheetStory = {
|
|
|
130
130
|
textDirection: "rtl",
|
|
131
131
|
},
|
|
132
132
|
}
|
|
133
|
+
|
|
134
|
+
export const StickerSheetLocales: StickerSheetStory = {
|
|
135
|
+
name: "Sticker Sheet (Locales)",
|
|
136
|
+
render: () => {
|
|
137
|
+
const props = {
|
|
138
|
+
isOpen: false,
|
|
139
|
+
setIsOpen: () => undefined,
|
|
140
|
+
renderTrigger: (triggerButtonProps): JSX.Element => (
|
|
141
|
+
<FilterButton {...triggerButtonProps} />
|
|
142
|
+
),
|
|
143
|
+
label: "Start day",
|
|
144
|
+
selectedDate: new Date("2022-05-01"),
|
|
145
|
+
onDateChange: () => undefined,
|
|
146
|
+
locale: "en-AU",
|
|
147
|
+
} satisfies FilterDatePickerProps
|
|
148
|
+
|
|
149
|
+
return (
|
|
150
|
+
<>
|
|
151
|
+
<StickerSheet heading="Localisation">
|
|
152
|
+
<StickerSheet.Header headings={["en-AU", "en-US"]} />
|
|
153
|
+
<StickerSheet.Body>
|
|
154
|
+
<StickerSheet.Row>
|
|
155
|
+
<FilterDatePicker {...props} locale="en-AU" />
|
|
156
|
+
<FilterDatePicker {...props} locale="en-US" />
|
|
157
|
+
</StickerSheet.Row>
|
|
158
|
+
</StickerSheet.Body>
|
|
159
|
+
</StickerSheet>
|
|
160
|
+
|
|
161
|
+
<StickerSheet>
|
|
162
|
+
<StickerSheet.Header headings={["fr-CA"]} />
|
|
163
|
+
<StickerSheet.Body>
|
|
164
|
+
<StickerSheet.Row>
|
|
165
|
+
<StaticIntlProvider locale="fr-CA">
|
|
166
|
+
<FilterDatePicker {...props} locale="fr-CA" isOpen />
|
|
167
|
+
</StaticIntlProvider>
|
|
168
|
+
</StickerSheet.Row>
|
|
169
|
+
</StickerSheet.Body>
|
|
170
|
+
</StickerSheet>
|
|
171
|
+
</>
|
|
172
|
+
)
|
|
173
|
+
},
|
|
174
|
+
decorators: [
|
|
175
|
+
Story => (
|
|
176
|
+
<div className="mb-[500px]">
|
|
177
|
+
<Story />
|
|
178
|
+
</div>
|
|
179
|
+
),
|
|
180
|
+
],
|
|
181
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ChangeEvent, FocusEvent, KeyboardEvent
|
|
1
|
+
import { ChangeEvent, FocusEvent, KeyboardEvent } from "react"
|
|
2
2
|
import { renderHook, act } from "@testing-library/react-hooks"
|
|
3
3
|
import { enAU } from "date-fns/locale"
|
|
4
4
|
import * as isSelectingDayInCalendar from "~components/Calendar/utils/isSelectingDayInCalendar"
|
|
5
5
|
import { useDateInputHandlers } from "./useDateInputHandlers"
|
|
6
6
|
|
|
7
7
|
const locale = enAU
|
|
8
|
-
const setInputValue = jest.fn
|
|
9
|
-
const onDateChange = jest.fn
|
|
8
|
+
const setInputValue = jest.fn()
|
|
9
|
+
const onDateChange = jest.fn()
|
|
10
10
|
|
|
11
11
|
describe("useDateInputHandlers", () => {
|
|
12
12
|
beforeEach(() => {
|