@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, { 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 { FilterMultiSelect } from "../index"
|
|
5
6
|
import { FilterBar, FilterBarProps } from "./FilterBar"
|
|
6
7
|
import { useFilterBarContext } from "./context/FilterBarContext"
|
|
@@ -137,11 +138,21 @@ const FilterBarWrapper = <T extends FiltersValues>({
|
|
|
137
138
|
)
|
|
138
139
|
}
|
|
139
140
|
|
|
141
|
+
const waitForI18nContent = async (): Promise<void> => {
|
|
142
|
+
await waitFor(() => {
|
|
143
|
+
expect(
|
|
144
|
+
screen.getByRole("button", { name: "Clear all filters" })
|
|
145
|
+
).toBeVisible()
|
|
146
|
+
})
|
|
147
|
+
}
|
|
148
|
+
|
|
140
149
|
describe("<FilterBar />", () => {
|
|
141
|
-
it("renders filters in the provided order", () => {
|
|
142
|
-
const { getAllByTestId } =
|
|
150
|
+
it("renders filters in the provided order", async () => {
|
|
151
|
+
const { getAllByTestId } = renderWithIntl(
|
|
143
152
|
<FilterBarWrapper<ValuesSimple> filters={simpleFilters} />
|
|
144
153
|
)
|
|
154
|
+
await waitForI18nContent()
|
|
155
|
+
|
|
145
156
|
const filters = getAllByTestId(TEST_ID__FILTER)
|
|
146
157
|
expect(filters.length).toBe(3)
|
|
147
158
|
expect(filters[0]).toHaveTextContent("Flavour")
|
|
@@ -150,7 +161,7 @@ describe("<FilterBar />", () => {
|
|
|
150
161
|
})
|
|
151
162
|
|
|
152
163
|
it("retains Filter accessibility", async () => {
|
|
153
|
-
|
|
164
|
+
renderWithIntl(<FilterBarWrapper filters={simpleFilters} />)
|
|
154
165
|
|
|
155
166
|
const filterButton = screen.getByRole("button", { name: "Flavour" })
|
|
156
167
|
await user.click(filterButton)
|
|
@@ -162,9 +173,11 @@ describe("<FilterBar />", () => {
|
|
|
162
173
|
|
|
163
174
|
describe("Removable filters", () => {
|
|
164
175
|
it("shows inactive filters in the Add Filters menu only", async () => {
|
|
165
|
-
const { getByRole, queryByText } =
|
|
176
|
+
const { getByRole, queryByText } = renderWithIntl(
|
|
166
177
|
<FilterBarWrapper<ValuesRemovable> filters={filtersRemovable} />
|
|
167
178
|
)
|
|
179
|
+
await waitForI18nContent()
|
|
180
|
+
|
|
168
181
|
expect(queryByText("Topping")).not.toBeInTheDocument()
|
|
169
182
|
|
|
170
183
|
const addFiltersButton = getByRole("button", { name: "Add Filters" })
|
|
@@ -178,13 +191,14 @@ describe("<FilterBar />", () => {
|
|
|
178
191
|
})
|
|
179
192
|
})
|
|
180
193
|
|
|
181
|
-
it("shows removable filter as active if there is a default value", () => {
|
|
182
|
-
const { getByRole } =
|
|
194
|
+
it("shows removable filter as active if there is a default value", async () => {
|
|
195
|
+
const { getByRole } = renderWithIntl(
|
|
183
196
|
<FilterBarWrapper<ValuesRemovable>
|
|
184
197
|
filters={filtersRemovable}
|
|
185
198
|
defaultValues={{ topping: "pearls" }}
|
|
186
199
|
/>
|
|
187
200
|
)
|
|
201
|
+
await waitForI18nContent()
|
|
188
202
|
expect(getByRole("button", { name: "Topping : Pearls" })).toBeVisible()
|
|
189
203
|
expect(
|
|
190
204
|
getByRole("button", { name: "Remove filter - Topping" })
|
|
@@ -192,12 +206,13 @@ describe("<FilterBar />", () => {
|
|
|
192
206
|
})
|
|
193
207
|
|
|
194
208
|
it("does not show active removable filters in the Add Filters menu", async () => {
|
|
195
|
-
const { getByRole } =
|
|
209
|
+
const { getByRole } = renderWithIntl(
|
|
196
210
|
<FilterBarWrapper<ValuesRemovable>
|
|
197
211
|
filters={filtersRemovable}
|
|
198
212
|
defaultValues={{ topping: "pearls" }}
|
|
199
213
|
/>
|
|
200
214
|
)
|
|
215
|
+
await waitForI18nContent()
|
|
201
216
|
|
|
202
217
|
const addFiltersButton = getByRole("button", { name: "Add Filters" })
|
|
203
218
|
await user.click(addFiltersButton)
|
|
@@ -210,12 +225,13 @@ describe("<FilterBar />", () => {
|
|
|
210
225
|
})
|
|
211
226
|
|
|
212
227
|
it("clears the value of a filter if it is removed", async () => {
|
|
213
|
-
const { getByRole } =
|
|
228
|
+
const { getByRole } = renderWithIntl(
|
|
214
229
|
<FilterBarWrapper<ValuesRemovable>
|
|
215
230
|
filters={filtersRemovable}
|
|
216
231
|
defaultValues={{ topping: "pearls" }}
|
|
217
232
|
/>
|
|
218
233
|
)
|
|
234
|
+
await waitForI18nContent()
|
|
219
235
|
|
|
220
236
|
const filterButton = getByRole("button", { name: "Topping : Pearls" })
|
|
221
237
|
expect(filterButton).toBeVisible()
|
|
@@ -242,7 +258,7 @@ describe("<FilterBar />", () => {
|
|
|
242
258
|
})
|
|
243
259
|
|
|
244
260
|
it("adds new filters in the provided order", async () => {
|
|
245
|
-
const { getByRole, getAllByTestId } =
|
|
261
|
+
const { getByRole, getAllByTestId } = renderWithIntl(
|
|
246
262
|
<FilterBarWrapper<ValuesSimple>
|
|
247
263
|
filters={simpleFilters.map(filter => ({
|
|
248
264
|
...filter,
|
|
@@ -250,6 +266,7 @@ describe("<FilterBar />", () => {
|
|
|
250
266
|
}))}
|
|
251
267
|
/>
|
|
252
268
|
)
|
|
269
|
+
await waitForI18nContent()
|
|
253
270
|
|
|
254
271
|
const addFiltersButton = getByRole("button", { name: "Add Filters" })
|
|
255
272
|
await user.click(addFiltersButton)
|
|
@@ -275,18 +292,19 @@ describe("<FilterBar />", () => {
|
|
|
275
292
|
|
|
276
293
|
describe("Dependent filters", () => {
|
|
277
294
|
describe("Condition not met", () => {
|
|
278
|
-
it("does not show a dependent filter", () => {
|
|
279
|
-
const { queryByRole, getByRole } =
|
|
295
|
+
it("does not show a dependent filter", async () => {
|
|
296
|
+
const { queryByRole, getByRole } = renderWithIntl(
|
|
280
297
|
<FilterBarWrapper filters={filtersDependent} />
|
|
281
298
|
)
|
|
299
|
+
await waitForI18nContent()
|
|
282
300
|
expect(
|
|
283
301
|
queryByRole("button", { name: "Topping" })
|
|
284
302
|
).not.toBeInTheDocument()
|
|
285
303
|
expect(getByRole("button", { name: "Add Filters" })).toBeDisabled()
|
|
286
304
|
})
|
|
287
305
|
|
|
288
|
-
it("clears the value if the filter is not usable", () => {
|
|
289
|
-
const { getByTestId } =
|
|
306
|
+
it("clears the value if the filter is not usable", async () => {
|
|
307
|
+
const { getByTestId } = renderWithIntl(
|
|
290
308
|
<FilterBarWrapper
|
|
291
309
|
filters={filtersDependent}
|
|
292
310
|
defaultValues={{
|
|
@@ -294,6 +312,7 @@ describe("<FilterBar />", () => {
|
|
|
294
312
|
}}
|
|
295
313
|
/>
|
|
296
314
|
)
|
|
315
|
+
await waitForI18nContent()
|
|
297
316
|
expect(getByTestId("testid__values").textContent).toEqual(
|
|
298
317
|
JSON.stringify({})
|
|
299
318
|
)
|
|
@@ -302,9 +321,10 @@ describe("<FilterBar />", () => {
|
|
|
302
321
|
|
|
303
322
|
describe("Condition met", () => {
|
|
304
323
|
it("shows a non-removable dependent filter in active filters", async () => {
|
|
305
|
-
const { queryByRole, getByRole, findByRole } =
|
|
324
|
+
const { queryByRole, getByRole, findByRole } = renderWithIntl(
|
|
306
325
|
<FilterBarWrapper filters={filtersDependent} />
|
|
307
326
|
)
|
|
327
|
+
await waitForI18nContent()
|
|
308
328
|
|
|
309
329
|
const flavourButton = getByRole("button", { name: "Flavour" })
|
|
310
330
|
expect(
|
|
@@ -323,7 +343,7 @@ describe("<FilterBar />", () => {
|
|
|
323
343
|
})
|
|
324
344
|
|
|
325
345
|
it("shows a removable dependent filter in Add Filters menu", async () => {
|
|
326
|
-
const { getByRole, findByRole } =
|
|
346
|
+
const { getByRole, findByRole } = renderWithIntl(
|
|
327
347
|
<FilterBarWrapper
|
|
328
348
|
filters={[
|
|
329
349
|
{
|
|
@@ -351,6 +371,7 @@ describe("<FilterBar />", () => {
|
|
|
351
371
|
]}
|
|
352
372
|
/>
|
|
353
373
|
)
|
|
374
|
+
await waitForI18nContent()
|
|
354
375
|
|
|
355
376
|
const addFiltersButton = getByRole("button", { name: "Add Filters" })
|
|
356
377
|
expect(addFiltersButton).toBeDisabled()
|
|
@@ -400,7 +421,9 @@ describe("<FilterBar />", () => {
|
|
|
400
421
|
)
|
|
401
422
|
}
|
|
402
423
|
|
|
403
|
-
const { queryByRole, getByRole } =
|
|
424
|
+
const { queryByRole, getByRole } = renderWithIntl(<Wrapper />)
|
|
425
|
+
await waitForI18nContent()
|
|
426
|
+
|
|
404
427
|
expect(
|
|
405
428
|
queryByRole("button", { name: "Topping : Pearls" })
|
|
406
429
|
).not.toBeInTheDocument()
|
|
@@ -440,7 +463,9 @@ describe("<FilterBar />", () => {
|
|
|
440
463
|
)
|
|
441
464
|
}
|
|
442
465
|
|
|
443
|
-
const { getByRole } =
|
|
466
|
+
const { getByRole } = renderWithIntl(<Wrapper />)
|
|
467
|
+
await waitForI18nContent()
|
|
468
|
+
|
|
444
469
|
expect(
|
|
445
470
|
getByRole("button", { name: "Flavour : Jasmine Milk Tea" })
|
|
446
471
|
).toBeVisible()
|
|
@@ -533,12 +558,13 @@ describe("<FilterBar />", () => {
|
|
|
533
558
|
},
|
|
534
559
|
] satisfies Filters<ValuesComplexDeps>
|
|
535
560
|
|
|
536
|
-
const { queryByRole, getByRole } =
|
|
561
|
+
const { queryByRole, getByRole } = renderWithIntl(
|
|
537
562
|
<FilterBarWrapper
|
|
538
563
|
filters={filters}
|
|
539
564
|
defaultValues={{ milk: "full-cream" }}
|
|
540
565
|
/>
|
|
541
566
|
)
|
|
567
|
+
await waitForI18nContent()
|
|
542
568
|
|
|
543
569
|
const coffeeButton = getByRole("button", { name: "Coffee" })
|
|
544
570
|
expect(coffeeButton).toBeVisible()
|
|
@@ -611,7 +637,7 @@ describe("<FilterBar />", () => {
|
|
|
611
637
|
|
|
612
638
|
describe("Clear all", () => {
|
|
613
639
|
it("clears all the values of all the filters", async () => {
|
|
614
|
-
const { getByRole } =
|
|
640
|
+
const { getByRole } = renderWithIntl(
|
|
615
641
|
<FilterBarWrapper<ValuesSimple>
|
|
616
642
|
filters={simpleFilters}
|
|
617
643
|
defaultValues={{
|
|
@@ -621,6 +647,7 @@ describe("<FilterBar />", () => {
|
|
|
621
647
|
}}
|
|
622
648
|
/>
|
|
623
649
|
)
|
|
650
|
+
await waitForI18nContent()
|
|
624
651
|
|
|
625
652
|
const flavourButton = getByRole("button", {
|
|
626
653
|
name: "Flavour : Jasmine Milk Tea",
|
|
@@ -644,7 +671,7 @@ describe("<FilterBar />", () => {
|
|
|
644
671
|
})
|
|
645
672
|
|
|
646
673
|
it("removes all removable filters", async () => {
|
|
647
|
-
const { getByRole } =
|
|
674
|
+
const { getByRole } = renderWithIntl(
|
|
648
675
|
<FilterBarWrapper<ValuesRemovable>
|
|
649
676
|
filters={filtersRemovable}
|
|
650
677
|
defaultValues={{
|
|
@@ -653,6 +680,7 @@ describe("<FilterBar />", () => {
|
|
|
653
680
|
}}
|
|
654
681
|
/>
|
|
655
682
|
)
|
|
683
|
+
await waitForI18nContent()
|
|
656
684
|
|
|
657
685
|
const flavourButton = getByRole("button", {
|
|
658
686
|
name: "Flavour : Jasmine Milk Tea",
|
|
@@ -712,7 +740,8 @@ describe("<FilterBar />", () => {
|
|
|
712
740
|
)
|
|
713
741
|
}
|
|
714
742
|
|
|
715
|
-
const { getByRole } =
|
|
743
|
+
const { getByRole } = renderWithIntl(<Wrapper />)
|
|
744
|
+
await waitForI18nContent()
|
|
716
745
|
|
|
717
746
|
const flavourButton = getByRole("button", { name: "Flavour" })
|
|
718
747
|
expect(flavourButton.textContent).toEqual("Flavour")
|
|
@@ -767,7 +796,8 @@ describe("<FilterBar />", () => {
|
|
|
767
796
|
)
|
|
768
797
|
}
|
|
769
798
|
|
|
770
|
-
const { getByRole, queryByRole } =
|
|
799
|
+
const { getByRole, queryByRole } = renderWithIntl(<Wrapper />)
|
|
800
|
+
await waitForI18nContent()
|
|
771
801
|
|
|
772
802
|
expect(queryByRole("button", { name: "Flavour" })).not.toBeInTheDocument()
|
|
773
803
|
|
|
@@ -877,7 +907,7 @@ describe("<FilterBar />", () => {
|
|
|
877
907
|
] satisfies Filters<AsyncValues>
|
|
878
908
|
|
|
879
909
|
it("can re-fetch options with all active filter values pulled off of the FilterBarContext", async () => {
|
|
880
|
-
const { getByRole, queryByRole } =
|
|
910
|
+
const { getByRole, queryByRole } = renderWithIntl(
|
|
881
911
|
<FilterBarWrapper<AsyncValues> filters={config} defaultValues={{}} />
|
|
882
912
|
)
|
|
883
913
|
|
|
@@ -951,9 +981,10 @@ describe("<FilterBar />", () => {
|
|
|
951
981
|
] satisfies Filters<CycleFilterValues>
|
|
952
982
|
|
|
953
983
|
it("opens the Custom Date filter when Cycle's 'custom' value is selected", async () => {
|
|
954
|
-
const { getByRole } =
|
|
984
|
+
const { getByRole } = renderWithIntl(
|
|
955
985
|
<FilterBarWrapper<CycleFilterValues> filters={cycleFilters} />
|
|
956
986
|
)
|
|
987
|
+
await waitForI18nContent()
|
|
957
988
|
|
|
958
989
|
const customDateButton = getByRole("button", { name: "Custom Date" })
|
|
959
990
|
expect(customDateButton).toHaveAttribute("aria-expanded", "false")
|
|
@@ -9,7 +9,7 @@ import * as FilterBarStories from "./FilterBar.stories"
|
|
|
9
9
|
|
|
10
10
|
<ResourceLinks
|
|
11
11
|
sourceCode="https://github.com/cultureamp/kaizen-design-system/tree/main/packages/components/src/FilterBar"
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
/>
|
|
14
14
|
|
|
15
15
|
<KAIOInstallation exportNames="FilterBar" />
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react"
|
|
2
|
-
import {
|
|
2
|
+
import { waitFor, screen } from "@testing-library/react"
|
|
3
3
|
import userEvent from "@testing-library/user-event"
|
|
4
|
+
import { renderWithIntl } from "~tests"
|
|
4
5
|
import {
|
|
5
6
|
FilterBarProvider,
|
|
6
7
|
FilterBarProviderProps,
|
|
@@ -52,22 +53,25 @@ describe("<AddFiltersMenu />", () => {
|
|
|
52
53
|
},
|
|
53
54
|
] satisfies Filters<Values>
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
<AddFiltersMenuWrapper filters={filters} />
|
|
57
|
-
)
|
|
56
|
+
renderWithIntl(<AddFiltersMenuWrapper filters={filters} />)
|
|
58
57
|
|
|
59
|
-
|
|
58
|
+
await waitFor(() => {
|
|
59
|
+
expect(screen.getByRole("button", { name: "Add Filters" })).toBeVisible()
|
|
60
|
+
})
|
|
61
|
+
const addFiltersButton = screen.getByRole("button", { name: "Add Filters" })
|
|
60
62
|
await user.click(addFiltersButton)
|
|
61
63
|
|
|
62
64
|
await waitFor(() => {
|
|
63
|
-
expect(getByRole("list")).toBeVisible()
|
|
65
|
+
expect(screen.getByRole("list")).toBeVisible()
|
|
64
66
|
})
|
|
65
|
-
expect(getByRole("button", { name: "Coffee" })).toBeVisible()
|
|
66
|
-
expect(
|
|
67
|
-
|
|
67
|
+
expect(screen.getByRole("button", { name: "Coffee" })).toBeVisible()
|
|
68
|
+
expect(
|
|
69
|
+
screen.queryByRole("button", { name: "Tea" })
|
|
70
|
+
).not.toBeInTheDocument()
|
|
71
|
+
expect(screen.getByRole("button", { name: "Milk" })).toBeVisible()
|
|
68
72
|
})
|
|
69
73
|
|
|
70
|
-
it("disables the Add Filters button when there are no inactive filters", () => {
|
|
74
|
+
it("disables the Add Filters button when there are no inactive filters", async () => {
|
|
71
75
|
const filters = [
|
|
72
76
|
{
|
|
73
77
|
id: "coffee",
|
|
@@ -76,9 +80,13 @@ describe("<AddFiltersMenu />", () => {
|
|
|
76
80
|
},
|
|
77
81
|
] satisfies Filters<Values>
|
|
78
82
|
|
|
79
|
-
|
|
83
|
+
renderWithIntl(<AddFiltersMenuWrapper filters={filters} />)
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
|
|
85
|
+
await waitFor(() => {
|
|
86
|
+
const addFiltersButton = screen.getByRole("button", {
|
|
87
|
+
name: "Add Filters",
|
|
88
|
+
})
|
|
89
|
+
expect(addFiltersButton).toBeDisabled()
|
|
90
|
+
})
|
|
83
91
|
})
|
|
84
92
|
})
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import React from "react"
|
|
2
|
+
import { useIntl } from "@cultureamp/i18n-react-intl"
|
|
2
3
|
import { Button } from "~components/Button"
|
|
3
4
|
import { AddIcon } from "~components/Icon"
|
|
4
5
|
import { Menu, MenuList, MenuItem } from "~components/Menu"
|
|
5
6
|
import { useFilterBarContext } from "../../context/FilterBarContext"
|
|
6
7
|
|
|
7
8
|
export const AddFiltersMenu = (): JSX.Element => {
|
|
9
|
+
const { formatMessage } = useIntl()
|
|
10
|
+
|
|
11
|
+
const menuButtonLabel = formatMessage({
|
|
12
|
+
id: "filterBar.addFiltersMenu.buttonLabel",
|
|
13
|
+
defaultMessage: "Add Filters",
|
|
14
|
+
description:
|
|
15
|
+
"Menu button label to show additional available filter options",
|
|
16
|
+
})
|
|
17
|
+
|
|
8
18
|
const { getInactiveFilters, showFilter } = useFilterBarContext()
|
|
9
19
|
const inactiveFilters = getInactiveFilters()
|
|
10
20
|
|
|
@@ -12,7 +22,7 @@ export const AddFiltersMenu = (): JSX.Element => {
|
|
|
12
22
|
<Menu
|
|
13
23
|
button={
|
|
14
24
|
<Button
|
|
15
|
-
label=
|
|
25
|
+
label={menuButtonLabel}
|
|
16
26
|
secondary
|
|
17
27
|
disabled={inactiveFilters.length === 0}
|
|
18
28
|
icon={<AddIcon role="presentation" />}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
import React from "react"
|
|
2
|
+
import { useIntl } from "@cultureamp/i18n-react-intl"
|
|
2
3
|
import { Button } from "~components/Button"
|
|
3
4
|
import { useFilterBarContext } from "../../context/FilterBarContext"
|
|
4
5
|
import styles from "./ClearAllButton.module.scss"
|
|
5
6
|
|
|
6
7
|
export const ClearAllButton = (): JSX.Element => {
|
|
8
|
+
const { formatMessage } = useIntl()
|
|
9
|
+
|
|
10
|
+
const clearButtonLabel = formatMessage({
|
|
11
|
+
id: "filterBar.clearAllButton.label",
|
|
12
|
+
defaultMessage: "Clear all",
|
|
13
|
+
description: "Button label to clear all values within the filter bar",
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
const clearButtonAriaLabel = formatMessage({
|
|
17
|
+
id: "filterBar.clearAllButton.ariaLabel",
|
|
18
|
+
defaultMessage: "Clear all filters",
|
|
19
|
+
description: "Button aria-label to clear all values within the filter bar",
|
|
20
|
+
})
|
|
21
|
+
|
|
7
22
|
const { clearAllFilters } = useFilterBarContext()
|
|
8
23
|
|
|
9
24
|
return (
|
|
10
25
|
<Button
|
|
11
|
-
label=
|
|
12
|
-
aria-label=
|
|
26
|
+
label={clearButtonLabel}
|
|
27
|
+
aria-label={clearButtonAriaLabel}
|
|
13
28
|
classNameOverride={styles.clearAllButton}
|
|
14
29
|
secondary
|
|
15
30
|
onClick={clearAllFilters}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React 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 { FilterBarProvider } from "../../context/FilterBarContext"
|
|
5
6
|
import { FilterBarButton, FilterBarButtonProps } from "./FilterBarButton"
|
|
6
7
|
|
|
@@ -41,20 +42,28 @@ const FilterBarButtonWrapper = (
|
|
|
41
42
|
)
|
|
42
43
|
|
|
43
44
|
describe("<FilterBarButton />", () => {
|
|
44
|
-
it("does not show a remove button when it is not removable", () => {
|
|
45
|
-
const { getByRole, queryByRole } =
|
|
46
|
-
|
|
45
|
+
it("does not show a remove button when it is not removable", async () => {
|
|
46
|
+
const { getByRole, queryByRole } = renderWithIntl(
|
|
47
|
+
<FilterBarButtonWrapper />
|
|
48
|
+
)
|
|
49
|
+
await waitFor(() => {
|
|
50
|
+
expect(getByRole("button", { name: "Coffee" })).toBeVisible()
|
|
51
|
+
})
|
|
47
52
|
expect(
|
|
48
53
|
queryByRole("button", { name: "Remove filter - Coffee" })
|
|
49
54
|
).not.toBeInTheDocument()
|
|
50
55
|
})
|
|
51
56
|
|
|
52
57
|
it("shows a remove button when it is removable", async () => {
|
|
53
|
-
|
|
54
|
-
const filterButton =
|
|
55
|
-
|
|
58
|
+
renderWithIntl(<FilterBarButtonWrapper isRemovable />)
|
|
59
|
+
const filterButton = await screen.findByRole("button", { name: "Coffee" })
|
|
60
|
+
await waitFor(() => {
|
|
61
|
+
expect(filterButton).toBeVisible()
|
|
62
|
+
})
|
|
56
63
|
|
|
57
|
-
const removeButton = getByRole("button", {
|
|
64
|
+
const removeButton = screen.getByRole("button", {
|
|
65
|
+
name: "Remove filter - Coffee",
|
|
66
|
+
})
|
|
58
67
|
expect(removeButton).toBeVisible()
|
|
59
68
|
|
|
60
69
|
await user.click(removeButton)
|
|
@@ -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,
|
|
@@ -56,35 +57,46 @@ const FilterBarDatePickerWrapper = ({
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
describe("<FilterBarDatePicker />", () => {
|
|
59
|
-
it("shows the name in the trigger button", () => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
it("shows the name in the trigger button", async () => {
|
|
61
|
+
renderWithIntl(<FilterBarDatePickerWrapper />)
|
|
62
|
+
await waitFor(() => {
|
|
63
|
+
const triggerButton = screen.getByRole("button", { name: "Drank" })
|
|
64
|
+
expect(triggerButton).toBeInTheDocument()
|
|
65
|
+
})
|
|
63
66
|
})
|
|
64
67
|
|
|
65
68
|
describe("Removable", () => {
|
|
66
|
-
it("does not show the remove button when isRemovable is false", () => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
it("does not show the remove button when isRemovable is false", async () => {
|
|
70
|
+
renderWithIntl(<FilterBarDatePickerWrapper />)
|
|
71
|
+
await waitFor(() => {
|
|
72
|
+
expect(
|
|
73
|
+
screen.getByRole("button", { name: "Drank" })
|
|
74
|
+
).toBeInTheDocument()
|
|
75
|
+
expect(
|
|
76
|
+
screen.queryByRole("button", { name: "Remove filter - Drank" })
|
|
77
|
+
).not.toBeInTheDocument()
|
|
78
|
+
})
|
|
71
79
|
})
|
|
72
80
|
|
|
73
|
-
it("shows the remove button when isRemovable is true", () => {
|
|
74
|
-
|
|
81
|
+
it("shows the remove button when isRemovable is true", async () => {
|
|
82
|
+
renderWithIntl(
|
|
75
83
|
<FilterBarDatePickerWrapper
|
|
76
84
|
filterAttributes={{ isRemovable: true }}
|
|
77
85
|
defaultValues={{ drank: new Date("2023-05-01") }}
|
|
78
86
|
/>
|
|
79
87
|
)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
await waitFor(() => {
|
|
89
|
+
expect(
|
|
90
|
+
screen.getByRole("button", { name: "Remove filter - Drank" })
|
|
91
|
+
).toBeVisible()
|
|
92
|
+
})
|
|
83
93
|
})
|
|
84
94
|
})
|
|
85
95
|
|
|
86
96
|
it("can toggle its open state", async () => {
|
|
87
|
-
const { getByRole, queryByRole } =
|
|
97
|
+
const { getByRole, queryByRole } = renderWithIntl(
|
|
98
|
+
<FilterBarDatePickerWrapper />
|
|
99
|
+
)
|
|
88
100
|
const triggerButton = getByRole("button", { name: "Drank" })
|
|
89
101
|
|
|
90
102
|
await user.click(triggerButton)
|
|
@@ -100,20 +112,22 @@ describe("<FilterBarDatePicker />", () => {
|
|
|
100
112
|
})
|
|
101
113
|
})
|
|
102
114
|
|
|
103
|
-
it("shows a selected value when provided", () => {
|
|
104
|
-
const { getByRole } =
|
|
115
|
+
it("shows a selected value when provided", async () => {
|
|
116
|
+
const { getByRole } = renderWithIntl(
|
|
105
117
|
<FilterBarDatePickerWrapper
|
|
106
118
|
defaultValues={{ drank: new Date("2023-06-06") }}
|
|
107
119
|
/>
|
|
108
120
|
)
|
|
109
|
-
|
|
110
|
-
|
|
121
|
+
await waitFor(() => {
|
|
122
|
+
const triggerButton = getByRole("button", {
|
|
123
|
+
name: "Drank : 6 Jun 2023",
|
|
124
|
+
})
|
|
125
|
+
expect(triggerButton).toBeInTheDocument()
|
|
111
126
|
})
|
|
112
|
-
expect(triggerButton).toBeInTheDocument()
|
|
113
127
|
})
|
|
114
128
|
|
|
115
129
|
it("updates the selected value in the trigger button when selecting a date", async () => {
|
|
116
|
-
|
|
130
|
+
renderWithIntl(
|
|
117
131
|
<FilterBarDatePickerWrapper
|
|
118
132
|
defaultValues={{ drank: new Date("2023-06-06") }}
|
|
119
133
|
/>
|
|
@@ -143,7 +157,7 @@ describe("<FilterBarDatePicker />", () => {
|
|
|
143
157
|
|
|
144
158
|
it("allows calling additional functions on selection change", async () => {
|
|
145
159
|
const onChange = jest.fn()
|
|
146
|
-
|
|
160
|
+
renderWithIntl(<FilterBarDatePickerWrapper onDateChange={onChange} />)
|
|
147
161
|
|
|
148
162
|
const triggerButton = screen.getByRole("button", { name: "Drank" })
|
|
149
163
|
await user.click(triggerButton)
|