@servicetitan/anvil2 1.50.0 → 1.50.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/{Calendar-CAYitkfM.js → Calendar-BeFARXwq.js} +2 -2
- package/dist/{Calendar-CAYitkfM.js.map → Calendar-BeFARXwq.js.map} +1 -1
- package/dist/{Calendar-C9oxHTGG.js → Calendar-M9v994mm.js} +2 -2
- package/dist/{Calendar-C9oxHTGG.js.map → Calendar-M9v994mm.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-DbBeuNdW.js → Checkbox-BwFY38z1.js} +3 -2
- package/dist/Checkbox-BwFY38z1.js.map +1 -0
- package/dist/{Checkbox-zAKOGEBl.js → Checkbox-Chck2V5C.js} +2 -2
- package/dist/{Checkbox-zAKOGEBl.js.map → Checkbox-Chck2V5C.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{Combobox-hxGMMb8x.js → Combobox-BTTWNSW1.js} +290 -192
- package/dist/Combobox-BTTWNSW1.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-DSySFGWC.js → DataTable-hXWouflx.js} +114 -60
- package/dist/DataTable-hXWouflx.js.map +1 -0
- package/dist/DataTable.css +68 -26
- package/dist/{DateField-BT9jJRp5.js → DateField-B8JdMu94.js} +6 -6
- package/dist/{DateField-BT9jJRp5.js.map → DateField-B8JdMu94.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-ZAic_9mt.js → DateFieldRange-DWAgi_T9.js} +7 -7
- package/dist/{DateFieldRange-ZAic_9mt.js.map → DateFieldRange-DWAgi_T9.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DAtR8ImE.js → DateFieldSingle-CQ6X-bVX.js} +7 -7
- package/dist/{DateFieldSingle-DAtR8ImE.js.map → DateFieldSingle-CQ6X-bVX.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DXO_MPwA.js → DateFieldYearless-D6-NfIHu.js} +4 -4
- package/dist/{DateFieldYearless-DXO_MPwA.js.map → DateFieldYearless-D6-NfIHu.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-Cg6bbPIi.js → DateFieldYearlessRange-CQM0vibm.js} +4 -4
- package/dist/{DateFieldYearlessRange-Cg6bbPIi.js.map → DateFieldYearlessRange-CQM0vibm.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-9B9d7-hF.js → DaysOfTheWeek-BR-mg77X.js} +3 -3
- package/dist/{DaysOfTheWeek-9B9d7-hF.js.map → DaysOfTheWeek-BR-mg77X.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-BwabBKoZ.js → Dialog-Ba2oIATn.js} +8 -8
- package/dist/Dialog-Ba2oIATn.js.map +1 -0
- package/dist/Dialog.js +2 -2
- package/dist/{DialogCancelButton-sTEfx5kf.js → DialogCancelButton-CBHyI0CI.js} +2 -2
- package/dist/{DialogCancelButton-sTEfx5kf.js.map → DialogCancelButton-CBHyI0CI.js.map} +1 -1
- package/dist/{Drawer-GXeoK-r9.js → Drawer-CWogbC68.js} +7 -7
- package/dist/{Drawer-GXeoK-r9.js.map → Drawer-CWogbC68.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-Cs3k160L.js → DrawerContext-rJvgnn3O.js} +2 -2
- package/dist/{DrawerContext-Cs3k160L.js.map → DrawerContext-rJvgnn3O.js.map} +1 -1
- package/dist/FieldDialog-BHgkQOhh.js +519 -0
- package/dist/FieldDialog-BHgkQOhh.js.map +1 -0
- package/dist/{SelectFieldSync.css → FieldDialog.css} +6 -5
- package/dist/{FieldLabel-jqlQ1Ldh.js → FieldLabel-BWOIFXgt.js} +7 -4
- package/dist/FieldLabel-BWOIFXgt.js.map +1 -0
- package/dist/FieldLabel.js +1 -1
- package/dist/{InputMask-CJC9xZHG.js → InputMask-BzY1DJoV.js} +3 -3
- package/dist/{InputMask-CJC9xZHG.js.map → InputMask-BzY1DJoV.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-D8mfK8Lu.js → ListView-C5OBwbHe.js} +6 -4
- package/dist/ListView-C5OBwbHe.js.map +1 -0
- package/dist/ListView.js +1 -1
- package/dist/{Menu-Cn2JJe1Y.js → Menu-69JwGxYh.js} +2 -2
- package/dist/{Menu-Cn2JJe1Y.js.map → Menu-69JwGxYh.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/MultiSelectField.d.ts +2 -0
- package/dist/MultiSelectField.js +2 -0
- package/dist/MultiSelectField.js.map +1 -0
- package/dist/MultiSelectFieldSync-B3HNQf7R.js +873 -0
- package/dist/MultiSelectFieldSync-B3HNQf7R.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +259 -0
- package/dist/{NumberField-CjWLnD9X.js → NumberField-CcH25bnO.js} +3 -3
- package/dist/{NumberField-CjWLnD9X.js.map → NumberField-CcH25bnO.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-DEbpjQw0.js → Page-B5HZSjSl.js} +5 -5
- package/dist/{Page-DEbpjQw0.js.map → Page-B5HZSjSl.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BR8MiRaA.js → Pagination-CkdBaQx6.js} +2 -2
- package/dist/{Pagination-BR8MiRaA.js.map → Pagination-CkdBaQx6.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CCXrzBul.js → Popover-D9SmGQTh.js} +6 -5
- package/dist/{Popover-CCXrzBul.js.map → Popover-D9SmGQTh.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-BpKEr6cO.js → ProgressBar-BABkqVmW.js} +2 -2
- package/dist/{ProgressBar-BpKEr6cO.js.map → ProgressBar-BABkqVmW.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-jj0-1dOg.js → Radio-Cds2laHA.js} +2 -2
- package/dist/{Radio-jj0-1dOg.js.map → Radio-Cds2laHA.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-Bxy415eu.js → RadioGroup-COVlUmwy.js} +3 -3
- package/dist/{RadioGroup-Bxy415eu.js.map → RadioGroup-COVlUmwy.js.map} +1 -1
- package/dist/{SelectCard-CjbsPKZ4.js → SelectCard-C-Kjk5eS.js} +3 -3
- package/dist/{SelectCard-CjbsPKZ4.js.map → SelectCard-C-Kjk5eS.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/SelectFieldSync-0CL0RTpg.js +679 -0
- package/dist/SelectFieldSync-0CL0RTpg.js.map +1 -0
- package/dist/{SelectTrigger-DfVnPiNf.js → SelectTrigger-C1U-PlLz.js} +6 -3
- package/dist/SelectTrigger-C1U-PlLz.js.map +1 -0
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-D8scKtBr.js → SelectTriggerBase-RHD4FTQE.js} +5 -17
- package/dist/SelectTriggerBase-RHD4FTQE.js.map +1 -0
- package/dist/SelectTriggerBase.css +65 -59
- package/dist/SelectTriggerBase.module-B0NFRlQP.js +36 -0
- package/dist/SelectTriggerBase.module-B0NFRlQP.js.map +1 -0
- package/dist/Table.js +1 -1
- package/dist/{TextField-Qv6OqiKQ.js → TextField-BYGSTwkL.js} +2 -2
- package/dist/{TextField-Qv6OqiKQ.js.map → TextField-BYGSTwkL.js.map} +1 -1
- package/dist/{TextField-DNuEXKyN.js → TextField-BZ3h2mqU.js} +3 -3
- package/dist/{TextField-DNuEXKyN.js.map → TextField-BZ3h2mqU.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DdLD4imO.js → Textarea-Cb0Qs2FH.js} +8 -3
- package/dist/Textarea-Cb0Qs2FH.js.map +1 -0
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-C39hYluo.js → TimeField-DBtJYC7t.js} +4 -4
- package/dist/{TimeField-C39hYluo.js.map → TimeField-DBtJYC7t.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-DJ4tNy-0.js → Toaster-Cerf91qp.js} +2 -2
- package/dist/{Toaster-DJ4tNy-0.js.map → Toaster-Cerf91qp.js.map} +1 -1
- package/dist/{Toaster-DyDVYq4x.js → Toaster-DDrGllhh.js} +3 -3
- package/dist/{Toaster-DyDVYq4x.js.map → Toaster-DDrGllhh.js.map} +1 -1
- package/dist/{Toolbar-DEwvVf35.js → Toolbar-K9UFfyvX.js} +326 -171
- package/dist/Toolbar-K9UFfyvX.js.map +1 -0
- package/dist/Toolbar.css +62 -30
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-CBy7srE2.js → Tooltip-CkfkiQPz.js} +2 -2
- package/dist/{Tooltip-CBy7srE2.js.map → Tooltip-CkfkiQPz.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-DMGx3gE2.js → YearlessDateInputWithPicker-BIkxKxPi.js} +4 -4
- package/dist/{YearlessDateInputWithPicker-DMGx3gE2.js.map → YearlessDateInputWithPicker-BIkxKxPi.js.map} +1 -1
- package/dist/beta/components/MultiSelectField/MultiSelectField.d.ts +27 -0
- package/dist/beta/components/MultiSelectField/MultiSelectFieldSync.d.ts +63 -0
- package/dist/beta/components/MultiSelectField/index.d.ts +3 -0
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +79 -0
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +26 -0
- package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +44 -0
- package/dist/beta/components/MultiSelectField/stories/MultiSelectField.stories.data.d.ts +19 -0
- package/dist/beta/components/MultiSelectField/types.d.ts +311 -0
- package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +3 -1
- package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +1 -0
- package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +3 -1
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +11 -3
- package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +2 -1
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +1 -0
- package/dist/beta/components/SelectField/types.d.ts +19 -1
- package/dist/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.d.ts +9 -1
- package/dist/beta/components/Table/DataTable/stories/DataTable.story-data.d.ts +1 -0
- package/dist/beta/components/Table/internal/ResizeHandle.d.ts +5 -2
- package/dist/beta/components/Table/internal/getCommonPinningStyles.d.ts +2 -1
- package/dist/beta/components/Toolbar/Filters/internal/utils/filter-state.d.ts +28 -0
- package/dist/beta/components/index.d.ts +1 -0
- package/dist/beta.js +7 -5
- package/dist/beta.js.map +1 -1
- package/dist/components/Button/Button.figma.d.ts +1 -0
- package/dist/components/Combobox/ComboboxTypes.d.ts +1 -1
- package/dist/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyTrigger.d.ts +2 -2
- package/dist/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyUtils.d.ts +0 -36
- package/dist/components/Combobox/internal/ComboboxUtils.d.ts +0 -57
- package/dist/components/FieldLabel/FieldLabel.d.ts +5 -1
- package/dist/components/FieldLabel/internal/FieldLabelMoreInfoIcon.d.ts +3 -1
- package/dist/components/Icon/Icons.figma.d.ts +11 -0
- package/dist/components/ListView/ListView.d.ts +2 -9
- package/dist/components/ListView/internal/types.d.ts +12 -0
- package/dist/components/SelectTrigger/SelectTrigger.d.ts +1 -1
- package/dist/components/Switch/Switch.figma.d.ts +1 -0
- package/dist/components/Textarea/Textarea.d.ts +1 -1
- package/dist/index.js +34 -34
- package/dist/internal/components/Label/Label.d.ts +13 -3
- package/dist/internal/hooks/index.d.ts +1 -0
- package/dist/internal/hooks/useDownshiftEnvironment/index.d.ts +1 -0
- package/dist/internal/hooks/useDownshiftEnvironment/useDownshiftEnvironment.d.ts +36 -0
- package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +8 -7
- package/dist/{match-sorter.esm-CtBw0MrM.js → match-sorter.esm-NrKOPPde.js} +16 -3
- package/dist/match-sorter.esm-NrKOPPde.js.map +1 -0
- package/dist/types/props.d.ts +5 -0
- package/dist/{useInitialFocus-BpmW7pDB.js → useInitialFocus-D_ESGka7.js} +3 -3
- package/dist/{useInitialFocus-BpmW7pDB.js.map → useInitialFocus-D_ESGka7.js.map} +1 -1
- package/dist/useOnClickOutside-Zw5vzxSq.js +71 -0
- package/dist/useOnClickOutside-Zw5vzxSq.js.map +1 -0
- package/dist/useOpenCloseTransitionStates-CiTYrLGi.js +68 -0
- package/dist/useOpenCloseTransitionStates-CiTYrLGi.js.map +1 -0
- package/dist/{usePopoverSupport-CCSCHnit.js → usePopoverSupport-CldZmxFl.js} +2 -2
- package/dist/{usePopoverSupport-CCSCHnit.js.map → usePopoverSupport-CldZmxFl.js.map} +1 -1
- package/dist/{utils-Bkbn9cyk.js → utils-u8cyv323.js} +2 -2
- package/dist/{utils-Bkbn9cyk.js.map → utils-u8cyv323.js.map} +1 -1
- package/package.json +4 -3
- package/dist/Checkbox-DbBeuNdW.js.map +0 -1
- package/dist/Combobox-hxGMMb8x.js.map +0 -1
- package/dist/DataTable-DSySFGWC.js.map +0 -1
- package/dist/Dialog-BwabBKoZ.js.map +0 -1
- package/dist/FieldLabel-jqlQ1Ldh.js.map +0 -1
- package/dist/ListView-D8mfK8Lu.js.map +0 -1
- package/dist/SelectFieldSync-BOzavAtv.js +0 -1122
- package/dist/SelectFieldSync-BOzavAtv.js.map +0 -1
- package/dist/SelectTrigger-DfVnPiNf.js.map +0 -1
- package/dist/SelectTriggerBase-D8scKtBr.js.map +0 -1
- package/dist/SelectTriggerBase.module-Ce49lamD.js +0 -35
- package/dist/SelectTriggerBase.module-Ce49lamD.js.map +0 -1
- package/dist/Textarea-DdLD4imO.js.map +0 -1
- package/dist/Toolbar-DEwvVf35.js.map +0 -1
- package/dist/match-sorter.esm-CtBw0MrM.js.map +0 -1
- package/dist/useOnClickOutside-BDzuUjmY.js +0 -147
- package/dist/useOnClickOutside-BDzuUjmY.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useState, useEffect, useContext, createContext, useId, useRef, useCallback, forwardRef, useMemo } from 'react';
|
|
4
4
|
import { B as Button } from './Button-92_FKAyV.js';
|
|
5
|
-
import { T as Tooltip } from './Tooltip-
|
|
5
|
+
import { T as Tooltip } from './Tooltip-CkfkiQPz.js';
|
|
6
6
|
import { g as getKeyboardFocusableElements } from './getKeyboardFocusableElements-QqcABz0D.js';
|
|
7
7
|
import { c as cx } from './index-tZvMCc77.js';
|
|
8
8
|
import { u as useIntersectionObserver } from './useIntersectionObserver-BEmMDO3P.js';
|
|
@@ -11,24 +11,25 @@ import { B as ButtonToggle } from './ButtonToggle--sKvhBoA.js';
|
|
|
11
11
|
import { B as ButtonLink } from './ButtonLink-C0zR7Wnb.js';
|
|
12
12
|
import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
|
|
13
13
|
import { L as Listbox } from './Listbox-C-n4IVVj.js';
|
|
14
|
-
import { P as Popover } from './Popover-
|
|
14
|
+
import { P as Popover } from './Popover-D9SmGQTh.js';
|
|
15
15
|
import { F as Flex } from './Flex-CjPHUTeq.js';
|
|
16
16
|
import { S as SvgMoreHoriz } from './more_horiz-DJgdQiy0.js';
|
|
17
17
|
import { S as SvgMoreVert } from './more_vert-C_lJSyxt.js';
|
|
18
18
|
import { I as Icon } from './Icon-BSuTVNaa.js';
|
|
19
19
|
import { S as SvgClose } from './close-DZj38AEh.js';
|
|
20
|
+
import { t as tabbable } from './DrawerContext-rJvgnn3O.js';
|
|
20
21
|
import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
|
|
21
22
|
import { S as SvgEvent } from './event-BEJFimi3.js';
|
|
22
|
-
import { D as DateTime } from './Calendar-
|
|
23
|
+
import { D as DateTime } from './Calendar-BeFARXwq.js';
|
|
23
24
|
import { C as Chip } from './Chip-UqdorCE2.js';
|
|
24
|
-
import { L as ListView } from './ListView-
|
|
25
|
+
import { L as ListView } from './ListView-C5OBwbHe.js';
|
|
25
26
|
import { S as SearchField, a as SvgSearch } from './SearchField-CJAo8dE0.js';
|
|
26
|
-
import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-
|
|
27
|
-
import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-
|
|
28
|
-
import { C as Checkbox } from './Checkbox-
|
|
29
|
-
import { R as Radio } from './Radio-
|
|
30
|
-
import { C as Combobox } from './Combobox-
|
|
31
|
-
import { D as Drawer } from './Drawer-
|
|
27
|
+
import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-CQ6X-bVX.js';
|
|
28
|
+
import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-DWAgi_T9.js';
|
|
29
|
+
import { C as Checkbox } from './Checkbox-Chck2V5C.js';
|
|
30
|
+
import { R as Radio } from './Radio-Cds2laHA.js';
|
|
31
|
+
import { C as Combobox } from './Combobox-BTTWNSW1.js';
|
|
32
|
+
import { D as Drawer } from './Drawer-CWogbC68.js';
|
|
32
33
|
import { d as BreakpointSm, c as BreakpointMd, b as BreakpointLg, a as BreakpointXl, B as BreakpointXxl } from './primitive-BByug0kD.js';
|
|
33
34
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
34
35
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-BlIWftBb.js';
|
|
@@ -212,18 +213,18 @@ const handleMenuKeyboardNavigation = (event) => {
|
|
|
212
213
|
menuItems[nextIndex]?.focus();
|
|
213
214
|
};
|
|
214
215
|
|
|
215
|
-
const toolbar = "
|
|
216
|
+
const toolbar = "_toolbar_1em0g_13";
|
|
216
217
|
const styles$3 = {
|
|
217
218
|
toolbar: toolbar,
|
|
218
|
-
"toolbar-outline-spacer": "_toolbar-outline-
|
|
219
|
-
"toolbar-content": "_toolbar-
|
|
220
|
-
"overflow-wrap": "_overflow-
|
|
221
|
-
"overflow-collapse": "_overflow-
|
|
222
|
-
"toolbar-overflow-content": "_toolbar-overflow-
|
|
223
|
-
"toolbar-button-item": "_toolbar-button-
|
|
224
|
-
"toolbar-item": "_toolbar-
|
|
225
|
-
"toolbar-button-toggle-item": "_toolbar-button-toggle-
|
|
226
|
-
"toolbar-overflow-trigger": "_toolbar-overflow-
|
|
219
|
+
"toolbar-outline-spacer": "_toolbar-outline-spacer_1em0g_20",
|
|
220
|
+
"toolbar-content": "_toolbar-content_1em0g_23",
|
|
221
|
+
"overflow-wrap": "_overflow-wrap_1em0g_28",
|
|
222
|
+
"overflow-collapse": "_overflow-collapse_1em0g_31",
|
|
223
|
+
"toolbar-overflow-content": "_toolbar-overflow-content_1em0g_34",
|
|
224
|
+
"toolbar-button-item": "_toolbar-button-item_1em0g_42",
|
|
225
|
+
"toolbar-item": "_toolbar-item_1em0g_48",
|
|
226
|
+
"toolbar-button-toggle-item": "_toolbar-button-toggle-item_1em0g_67",
|
|
227
|
+
"toolbar-overflow-trigger": "_toolbar-overflow-trigger_1em0g_73"
|
|
227
228
|
};
|
|
228
229
|
|
|
229
230
|
const ToolbarItemWrapper = ({
|
|
@@ -679,14 +680,15 @@ const FilterGroupContext = createContext({
|
|
|
679
680
|
});
|
|
680
681
|
|
|
681
682
|
const styles$2 = {
|
|
682
|
-
"filter-button-trigger": "_filter-button-
|
|
683
|
-
"filter-button-content": "_filter-button-
|
|
684
|
-
"filter-
|
|
685
|
-
"filter-button-buttons": "_filter-button-
|
|
686
|
-
"filter-
|
|
687
|
-
"filter-
|
|
688
|
-
"filter-
|
|
689
|
-
"filter-
|
|
683
|
+
"filter-button-trigger": "_filter-button-trigger_1gitm_18",
|
|
684
|
+
"filter-button-content": "_filter-button-content_1gitm_22",
|
|
685
|
+
"filter-select-content": "_filter-select-content_1gitm_26",
|
|
686
|
+
"filter-button-buttons": "_filter-button-buttons_1gitm_32",
|
|
687
|
+
"filter-drawer-trigger": "_filter-drawer-trigger_1gitm_38",
|
|
688
|
+
"filter-item": "_filter-item_1gitm_53",
|
|
689
|
+
"filter-select-search": "_filter-select-search_1gitm_61",
|
|
690
|
+
"filter-button-trigger--selected": "_filter-button-trigger--selected_1gitm_78",
|
|
691
|
+
"filter-drawer-trigger--chipped": "_filter-drawer-trigger--chipped_1gitm_88"
|
|
690
692
|
};
|
|
691
693
|
|
|
692
694
|
const FilterItemWrapper = ({
|
|
@@ -694,18 +696,8 @@ const FilterItemWrapper = ({
|
|
|
694
696
|
children
|
|
695
697
|
}) => {
|
|
696
698
|
const { addHiddenFilter, removeHiddenFilter, filterGroupRef } = useContext(FilterGroupContext);
|
|
697
|
-
const
|
|
698
|
-
|
|
699
|
-
itemType: "button",
|
|
700
|
-
itemProps: {
|
|
701
|
-
children: null,
|
|
702
|
-
"aria-hidden": true
|
|
703
|
-
}
|
|
704
|
-
},
|
|
705
|
-
children,
|
|
706
|
-
className: styles$2["filter-item"],
|
|
707
|
-
observerRoot: filterGroupRef.current,
|
|
708
|
-
onVisibilityChange: (isVisible) => {
|
|
699
|
+
const handleVisibilityChange = useCallback(
|
|
700
|
+
(isVisible) => {
|
|
709
701
|
if (filter) {
|
|
710
702
|
if (isVisible) {
|
|
711
703
|
removeHiddenFilter?.(filter);
|
|
@@ -714,8 +706,25 @@ const FilterItemWrapper = ({
|
|
|
714
706
|
}
|
|
715
707
|
}
|
|
716
708
|
},
|
|
717
|
-
|
|
718
|
-
|
|
709
|
+
[filter, addHiddenFilter, removeHiddenFilter]
|
|
710
|
+
);
|
|
711
|
+
const props = useMemo(
|
|
712
|
+
() => ({
|
|
713
|
+
item: {
|
|
714
|
+
itemType: "button",
|
|
715
|
+
itemProps: {
|
|
716
|
+
children: null,
|
|
717
|
+
"aria-hidden": true
|
|
718
|
+
}
|
|
719
|
+
},
|
|
720
|
+
children,
|
|
721
|
+
className: styles$2["filter-item"],
|
|
722
|
+
observerRoot: filterGroupRef.current,
|
|
723
|
+
onVisibilityChange: handleVisibilityChange,
|
|
724
|
+
rootMargin: "0px -80px 0px 0px"
|
|
725
|
+
}),
|
|
726
|
+
[children, filterGroupRef, handleVisibilityChange]
|
|
727
|
+
);
|
|
719
728
|
return /* @__PURE__ */ jsx(ToolbarItemWrapper, { ...props });
|
|
720
729
|
};
|
|
721
730
|
|
|
@@ -731,8 +740,9 @@ const getActiveFilters = (filters) => {
|
|
|
731
740
|
case "multiSelect":
|
|
732
741
|
return filter.selectedItems && filter.selectedItems.length > 0;
|
|
733
742
|
case "date":
|
|
734
|
-
case "dateRange":
|
|
735
743
|
return filter.value !== null && filter.value !== void 0;
|
|
744
|
+
case "dateRange":
|
|
745
|
+
return filter.value !== null && filter.value !== void 0 && filter.value.startDate !== null && filter.value.endDate !== null;
|
|
736
746
|
default:
|
|
737
747
|
return false;
|
|
738
748
|
}
|
|
@@ -820,6 +830,108 @@ const hasChangedFilter = (a, b) => {
|
|
|
820
830
|
}
|
|
821
831
|
return a !== b;
|
|
822
832
|
};
|
|
833
|
+
const getFilterSelectionValue = (filter) => {
|
|
834
|
+
switch (filter.type) {
|
|
835
|
+
case "boolean":
|
|
836
|
+
return filter.checked;
|
|
837
|
+
case "singleSelect":
|
|
838
|
+
return filter.selectedItem;
|
|
839
|
+
case "multiSelect":
|
|
840
|
+
return filter.selectedItems;
|
|
841
|
+
case "date":
|
|
842
|
+
case "dateRange":
|
|
843
|
+
case "custom":
|
|
844
|
+
return filter.value;
|
|
845
|
+
default:
|
|
846
|
+
return void 0;
|
|
847
|
+
}
|
|
848
|
+
};
|
|
849
|
+
const hasFilterSelectionChanged = (existingFilter, newFilter) => {
|
|
850
|
+
const existingValue = getFilterSelectionValue(existingFilter);
|
|
851
|
+
const newValue = getFilterSelectionValue(newFilter);
|
|
852
|
+
return existingValue !== newValue;
|
|
853
|
+
};
|
|
854
|
+
const preserveFilterState = (newFilter, existingFilter) => {
|
|
855
|
+
switch (newFilter.type) {
|
|
856
|
+
case "boolean":
|
|
857
|
+
return {
|
|
858
|
+
...newFilter,
|
|
859
|
+
checked: existingFilter.checked
|
|
860
|
+
};
|
|
861
|
+
case "singleSelect":
|
|
862
|
+
return {
|
|
863
|
+
...newFilter,
|
|
864
|
+
selectedItem: existingFilter.selectedItem
|
|
865
|
+
};
|
|
866
|
+
case "multiSelect":
|
|
867
|
+
return {
|
|
868
|
+
...newFilter,
|
|
869
|
+
selectedItems: existingFilter.selectedItems
|
|
870
|
+
};
|
|
871
|
+
case "date":
|
|
872
|
+
return {
|
|
873
|
+
...newFilter,
|
|
874
|
+
value: existingFilter.value
|
|
875
|
+
};
|
|
876
|
+
case "dateRange":
|
|
877
|
+
return {
|
|
878
|
+
...newFilter,
|
|
879
|
+
value: existingFilter.value
|
|
880
|
+
};
|
|
881
|
+
case "custom":
|
|
882
|
+
return {
|
|
883
|
+
...newFilter,
|
|
884
|
+
value: existingFilter.value
|
|
885
|
+
};
|
|
886
|
+
default:
|
|
887
|
+
return newFilter;
|
|
888
|
+
}
|
|
889
|
+
};
|
|
890
|
+
const cloneFiltersWithItemRefs = (filters) => {
|
|
891
|
+
return filters.map((filter) => {
|
|
892
|
+
switch (filter.type) {
|
|
893
|
+
case "singleSelect":
|
|
894
|
+
return {
|
|
895
|
+
...filter,
|
|
896
|
+
selectedItem: filter.selectedItem ? filter.items.find(
|
|
897
|
+
(item) => item.id === filter.selectedItem?.id
|
|
898
|
+
) || filter.selectedItem : void 0
|
|
899
|
+
};
|
|
900
|
+
case "multiSelect":
|
|
901
|
+
return {
|
|
902
|
+
...filter,
|
|
903
|
+
selectedItems: filter.selectedItems ? filter.selectedItems.map(
|
|
904
|
+
(selectedItem) => filter.items.find((item) => item.id === selectedItem.id) || selectedItem
|
|
905
|
+
) : []
|
|
906
|
+
};
|
|
907
|
+
case "date":
|
|
908
|
+
return {
|
|
909
|
+
...filter,
|
|
910
|
+
value: filter.value
|
|
911
|
+
};
|
|
912
|
+
case "dateRange":
|
|
913
|
+
return {
|
|
914
|
+
...filter,
|
|
915
|
+
value: filter.value
|
|
916
|
+
};
|
|
917
|
+
case "custom": {
|
|
918
|
+
const { value } = filter;
|
|
919
|
+
if (value === void 0) {
|
|
920
|
+
return { ...filter, value: void 0 };
|
|
921
|
+
}
|
|
922
|
+
if (Array.isArray(value)) {
|
|
923
|
+
return { ...filter, value: [...value] };
|
|
924
|
+
}
|
|
925
|
+
if (typeof value === "object" && value !== null) {
|
|
926
|
+
return { ...filter, value: { ...value } };
|
|
927
|
+
}
|
|
928
|
+
return { ...filter, value };
|
|
929
|
+
}
|
|
930
|
+
default:
|
|
931
|
+
return { ...filter };
|
|
932
|
+
}
|
|
933
|
+
});
|
|
934
|
+
};
|
|
823
935
|
|
|
824
936
|
const FilterToggleButton = ({
|
|
825
937
|
id,
|
|
@@ -852,8 +964,30 @@ const FilterSelect = ({
|
|
|
852
964
|
onDraftChange
|
|
853
965
|
}) => {
|
|
854
966
|
const isMultiSelect = filter.type === "multiSelect";
|
|
967
|
+
const listRef = useRef(null);
|
|
968
|
+
const handleSearch = useCallback(
|
|
969
|
+
(e) => {
|
|
970
|
+
filter.onSearch?.(e.target.value);
|
|
971
|
+
},
|
|
972
|
+
[filter]
|
|
973
|
+
);
|
|
974
|
+
const handleSearchClear = useCallback(() => {
|
|
975
|
+
filter.onSearchClear?.();
|
|
976
|
+
}, [filter]);
|
|
977
|
+
const handleSearchKeyDown = useCallback(
|
|
978
|
+
(e) => {
|
|
979
|
+
if (e.key === "ArrowDown" && listRef.current) {
|
|
980
|
+
e.preventDefault();
|
|
981
|
+
const focusableElements = tabbable(listRef.current);
|
|
982
|
+
if (focusableElements.length > 0) {
|
|
983
|
+
focusableElements[0].focus();
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
},
|
|
987
|
+
[]
|
|
988
|
+
);
|
|
855
989
|
const singleSelectList = useMemo(
|
|
856
|
-
() => /* @__PURE__ */ jsx(
|
|
990
|
+
() => /* @__PURE__ */ jsx("div", { ref: listRef, children: /* @__PURE__ */ jsx(
|
|
857
991
|
Listbox,
|
|
858
992
|
{
|
|
859
993
|
items: filter.items,
|
|
@@ -862,15 +996,23 @@ const FilterSelect = ({
|
|
|
862
996
|
onDraftChange(selected);
|
|
863
997
|
},
|
|
864
998
|
disableAutoSelectOnFocus: true,
|
|
865
|
-
style: {
|
|
866
|
-
children: ({ items }) => items.map((item) => /* @__PURE__ */ jsx(
|
|
999
|
+
style: { paddingInline: "1rem", paddingBlockStart: "1rem" },
|
|
1000
|
+
children: ({ items }) => items.map((item) => /* @__PURE__ */ jsx(
|
|
1001
|
+
Listbox.Option,
|
|
1002
|
+
{
|
|
1003
|
+
item,
|
|
1004
|
+
disabled: item.disabled,
|
|
1005
|
+
children: item.label
|
|
1006
|
+
},
|
|
1007
|
+
item.id
|
|
1008
|
+
))
|
|
867
1009
|
},
|
|
868
1010
|
filter.id
|
|
869
|
-
),
|
|
1011
|
+
) }),
|
|
870
1012
|
[filter.id, filter.items, draftValue, onDraftChange]
|
|
871
1013
|
);
|
|
872
1014
|
const multiSelectList = useMemo(
|
|
873
|
-
() => /* @__PURE__ */ jsx(
|
|
1015
|
+
() => /* @__PURE__ */ jsx("div", { ref: listRef, children: /* @__PURE__ */ jsx(
|
|
874
1016
|
ListView,
|
|
875
1017
|
{
|
|
876
1018
|
items: filter.items,
|
|
@@ -879,11 +1021,11 @@ const FilterSelect = ({
|
|
|
879
1021
|
const items = selectedItems;
|
|
880
1022
|
onDraftChange(items);
|
|
881
1023
|
},
|
|
882
|
-
style: {
|
|
1024
|
+
style: { paddingInline: "1rem", paddingBlockStart: "1rem" },
|
|
883
1025
|
children: ({ items }) => items.map((item) => /* @__PURE__ */ jsx(ListView.Option, { item, children: item.label }, item.id))
|
|
884
1026
|
},
|
|
885
1027
|
filter.id
|
|
886
|
-
),
|
|
1028
|
+
) }),
|
|
887
1029
|
[filter.id, filter.items, draftValue, onDraftChange]
|
|
888
1030
|
);
|
|
889
1031
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -892,12 +1034,9 @@ const FilterSelect = ({
|
|
|
892
1034
|
{
|
|
893
1035
|
size: "small",
|
|
894
1036
|
className: styles$2["filter-select-search"],
|
|
895
|
-
onChange:
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
onClear: () => {
|
|
899
|
-
filter.onSearchClear?.();
|
|
900
|
-
},
|
|
1037
|
+
onChange: handleSearch,
|
|
1038
|
+
onClear: handleSearchClear,
|
|
1039
|
+
onKeyDown: handleSearchKeyDown,
|
|
901
1040
|
"data-anv": "filter-select-search"
|
|
902
1041
|
}
|
|
903
1042
|
),
|
|
@@ -969,7 +1108,7 @@ const FilterDateRange = ({
|
|
|
969
1108
|
onChange: (change) => {
|
|
970
1109
|
const hasCompleteRange = change.startDate && change.endDate;
|
|
971
1110
|
const isClearingRange = change.isInputEmpty;
|
|
972
|
-
if (change.isInputValid &&
|
|
1111
|
+
if (change.isInputValid && hasCompleteRange || isClearingRange) {
|
|
973
1112
|
onChange({ ...change, isDateRangeValid: true });
|
|
974
1113
|
}
|
|
975
1114
|
}
|
|
@@ -1008,7 +1147,13 @@ const FilterButton = ({
|
|
|
1008
1147
|
const [draftValue, setDraftValue] = useState(
|
|
1009
1148
|
filter.type === "multiSelect" ? [] : void 0
|
|
1010
1149
|
);
|
|
1011
|
-
const
|
|
1150
|
+
const draftValueRef = useRef(draftValue);
|
|
1151
|
+
const triggerRef = useRef(null);
|
|
1152
|
+
const contentRef = useRef(null);
|
|
1153
|
+
useEffect(() => {
|
|
1154
|
+
draftValueRef.current = draftValue;
|
|
1155
|
+
}, [draftValue]);
|
|
1156
|
+
const getCurrentFilterValue = useCallback(() => {
|
|
1012
1157
|
switch (filter.type) {
|
|
1013
1158
|
case "singleSelect":
|
|
1014
1159
|
return filter.selectedItem;
|
|
@@ -1022,43 +1167,61 @@ const FilterButton = ({
|
|
|
1022
1167
|
default:
|
|
1023
1168
|
return void 0;
|
|
1024
1169
|
}
|
|
1025
|
-
};
|
|
1170
|
+
}, [filter]);
|
|
1171
|
+
const prevIsOpenRef = useRef(isOpen);
|
|
1172
|
+
const prevFilterRef = useRef(filter);
|
|
1026
1173
|
useEffect(() => {
|
|
1174
|
+
const justOpened = isOpen && !prevIsOpenRef.current;
|
|
1175
|
+
prevIsOpenRef.current = isOpen;
|
|
1027
1176
|
if (isOpen) {
|
|
1028
|
-
const
|
|
1029
|
-
|
|
1177
|
+
const shouldSync = justOpened || prevFilterRef.current && hasFilterSelectionChanged(prevFilterRef.current, filter);
|
|
1178
|
+
if (shouldSync) {
|
|
1179
|
+
const currentValue = getCurrentFilterValue();
|
|
1180
|
+
setDraftValue(currentValue);
|
|
1181
|
+
}
|
|
1182
|
+
prevFilterRef.current = filter;
|
|
1030
1183
|
}
|
|
1031
|
-
}, [isOpen]);
|
|
1184
|
+
}, [isOpen, filter]);
|
|
1032
1185
|
const handleChange = useCallback(
|
|
1033
1186
|
(value) => {
|
|
1034
|
-
if (hasChangedFilter(value,
|
|
1187
|
+
if (hasChangedFilter(value, draftValueRef.current)) {
|
|
1035
1188
|
setDraftValue(value);
|
|
1036
|
-
if (!controlledFiltering) {
|
|
1189
|
+
if (!controlledFiltering && filter.type !== "multiSelect") {
|
|
1037
1190
|
updateFilter(filter.id, value, true);
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1191
|
+
setIsOpen(false);
|
|
1192
|
+
requestAnimationFrame(() => {
|
|
1193
|
+
triggerRef.current?.focus();
|
|
1194
|
+
});
|
|
1041
1195
|
}
|
|
1042
1196
|
}
|
|
1043
1197
|
},
|
|
1044
|
-
[filter.id, filter.type, controlledFiltering, updateFilter
|
|
1198
|
+
[filter.id, filter.type, controlledFiltering, updateFilter]
|
|
1045
1199
|
);
|
|
1046
|
-
const handleSubmit = () => {
|
|
1200
|
+
const handleSubmit = useCallback(() => {
|
|
1047
1201
|
const stateValue = getCurrentFilterValue();
|
|
1048
1202
|
if (hasChangedFilter(draftValue, stateValue)) {
|
|
1049
1203
|
updateFilter(filter.id, draftValue, true);
|
|
1050
1204
|
}
|
|
1051
1205
|
setIsOpen(false);
|
|
1052
|
-
|
|
1053
|
-
|
|
1206
|
+
requestAnimationFrame(() => {
|
|
1207
|
+
triggerRef.current?.focus();
|
|
1208
|
+
});
|
|
1209
|
+
}, [draftValue, getCurrentFilterValue, filter.id, updateFilter]);
|
|
1210
|
+
const handleCancel = useCallback(() => {
|
|
1054
1211
|
if (!controlledFiltering) {
|
|
1055
1212
|
setIsOpen(false);
|
|
1213
|
+
requestAnimationFrame(() => {
|
|
1214
|
+
triggerRef.current?.focus();
|
|
1215
|
+
});
|
|
1056
1216
|
return;
|
|
1057
1217
|
}
|
|
1058
1218
|
const originalValue = getCurrentFilterValue();
|
|
1059
1219
|
setDraftValue(originalValue);
|
|
1060
1220
|
setIsOpen(false);
|
|
1061
|
-
|
|
1221
|
+
requestAnimationFrame(() => {
|
|
1222
|
+
triggerRef.current?.focus();
|
|
1223
|
+
});
|
|
1224
|
+
}, [controlledFiltering, getCurrentFilterValue]);
|
|
1062
1225
|
const getButtonLabel = useMemo(() => {
|
|
1063
1226
|
switch (filter.type) {
|
|
1064
1227
|
case "singleSelect": {
|
|
@@ -1094,7 +1257,7 @@ const FilterButton = ({
|
|
|
1094
1257
|
}
|
|
1095
1258
|
return filter.label;
|
|
1096
1259
|
case "dateRange":
|
|
1097
|
-
if (filter.value) {
|
|
1260
|
+
if (filter.value?.startDate && filter.value?.endDate) {
|
|
1098
1261
|
const start = DateTime.fromISO(filter.value.startDate, {
|
|
1099
1262
|
zone: "local"
|
|
1100
1263
|
});
|
|
@@ -1177,9 +1340,6 @@ const FilterButton = ({
|
|
|
1177
1340
|
if (controlledFiltering) {
|
|
1178
1341
|
handleCancel();
|
|
1179
1342
|
} else {
|
|
1180
|
-
if (filter.type === "multiSelect") {
|
|
1181
|
-
updateFilter(filter.id, draftValue, true);
|
|
1182
|
-
}
|
|
1183
1343
|
handleSubmit();
|
|
1184
1344
|
}
|
|
1185
1345
|
};
|
|
@@ -1192,9 +1352,37 @@ const FilterButton = ({
|
|
|
1192
1352
|
if (e.key === "Escape") {
|
|
1193
1353
|
handleOutsidePress();
|
|
1194
1354
|
}
|
|
1355
|
+
if (e.key === "Tab" && contentRef.current) {
|
|
1356
|
+
const focusableElements = tabbable(contentRef.current);
|
|
1357
|
+
if (focusableElements.length === 0) return;
|
|
1358
|
+
const firstElement = focusableElements[0];
|
|
1359
|
+
const lastElement = focusableElements[focusableElements.length - 1];
|
|
1360
|
+
const activeElement = document.activeElement;
|
|
1361
|
+
if (e.shiftKey && activeElement === firstElement) {
|
|
1362
|
+
e.preventDefault();
|
|
1363
|
+
lastElement.focus();
|
|
1364
|
+
} else if (!e.shiftKey && activeElement === lastElement) {
|
|
1365
|
+
e.preventDefault();
|
|
1366
|
+
firstElement.focus();
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
};
|
|
1370
|
+
const handleTriggerKeyDown = (e) => {
|
|
1371
|
+
if (e.key === "ArrowDown") {
|
|
1372
|
+
if (isOpen && contentRef.current) {
|
|
1373
|
+
e.preventDefault();
|
|
1374
|
+
requestAnimationFrame(() => {
|
|
1375
|
+
if (!contentRef.current) return;
|
|
1376
|
+
const focusableElements = tabbable(contentRef.current);
|
|
1377
|
+
if (focusableElements.length > 0) {
|
|
1378
|
+
focusableElements[0].focus();
|
|
1379
|
+
}
|
|
1380
|
+
});
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1195
1383
|
};
|
|
1196
1384
|
const triggerClasses = cx(styles$2["filter-button-trigger"], {
|
|
1197
|
-
[styles$2["filter-button-trigger--selected"]]: filter.type === "custom" && filter.value || filter.type === "singleSelect" && filter.selectedItem || filter.type === "multiSelect" && filter.selectedItems && filter.selectedItems.length > 0 || filter.type === "date" && filter.value || filter.type === "dateRange" && filter.value
|
|
1385
|
+
[styles$2["filter-button-trigger--selected"]]: filter.type === "custom" && filter.value || filter.type === "singleSelect" && filter.selectedItem || filter.type === "multiSelect" && filter.selectedItems && filter.selectedItems.length > 0 || filter.type === "date" && filter.value || filter.type === "dateRange" && filter.value?.startDate && filter.value?.endDate
|
|
1198
1386
|
});
|
|
1199
1387
|
const contentClasses = cx(styles$2["filter-button-content"], className);
|
|
1200
1388
|
const iconOptions = filter.type === "date" || filter.type === "dateRange" ? { before: SvgEvent } : { after: SvgKeyboardArrowDown };
|
|
@@ -1204,11 +1392,16 @@ const FilterButton = ({
|
|
|
1204
1392
|
open: isOpen,
|
|
1205
1393
|
onClickOutside: isOpen ? handleOutsidePress : void 0,
|
|
1206
1394
|
placement: "bottom-start",
|
|
1395
|
+
noPadding: filter.type === "multiSelect" || filter.type === "singleSelect",
|
|
1207
1396
|
children: [
|
|
1208
1397
|
/* @__PURE__ */ jsx(
|
|
1209
1398
|
Popover.Button,
|
|
1210
1399
|
{
|
|
1211
|
-
|
|
1400
|
+
ref: triggerRef,
|
|
1401
|
+
onKeyDown: (e) => {
|
|
1402
|
+
handleTriggerKeyDown(e);
|
|
1403
|
+
handleKeyDown(e);
|
|
1404
|
+
},
|
|
1212
1405
|
appearance: "ghost",
|
|
1213
1406
|
size: "small",
|
|
1214
1407
|
icon: iconOptions,
|
|
@@ -1221,21 +1414,29 @@ const FilterButton = ({
|
|
|
1221
1414
|
children: getButtonLabel
|
|
1222
1415
|
}
|
|
1223
1416
|
),
|
|
1224
|
-
/* @__PURE__ */ jsxs(
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1417
|
+
/* @__PURE__ */ jsxs(
|
|
1418
|
+
Popover.Content,
|
|
1419
|
+
{
|
|
1420
|
+
ref: contentRef,
|
|
1421
|
+
onKeyDown: handleKeyDown,
|
|
1422
|
+
className: contentClasses,
|
|
1423
|
+
children: [
|
|
1424
|
+
getContent,
|
|
1425
|
+
controlledFiltering && /* @__PURE__ */ jsxs(
|
|
1426
|
+
Flex,
|
|
1427
|
+
{
|
|
1428
|
+
gap: 2,
|
|
1429
|
+
justifyContent: "flex-end",
|
|
1430
|
+
className: styles$2["filter-button-buttons"],
|
|
1431
|
+
children: [
|
|
1432
|
+
/* @__PURE__ */ jsx(Popover.Close, { size: "small", onClick: handleCancel, children: "Cancel" }),
|
|
1433
|
+
/* @__PURE__ */ jsx(Button, { appearance: "primary", size: "small", onClick: handleSubmit, children: "Apply" })
|
|
1434
|
+
]
|
|
1435
|
+
}
|
|
1436
|
+
)
|
|
1437
|
+
]
|
|
1438
|
+
}
|
|
1439
|
+
)
|
|
1239
1440
|
]
|
|
1240
1441
|
}
|
|
1241
1442
|
) });
|
|
@@ -1285,50 +1486,25 @@ const FilterDrawer = () => {
|
|
|
1285
1486
|
const activeFiltersCount = getActiveFilters(
|
|
1286
1487
|
!showInlineFilters ? filters : hiddenFilters
|
|
1287
1488
|
).length;
|
|
1489
|
+
const prevOpenRef = useRef(open);
|
|
1490
|
+
const prevFiltersRef = useRef(filters);
|
|
1288
1491
|
useEffect(() => {
|
|
1492
|
+
const justOpened = open && !prevOpenRef.current;
|
|
1493
|
+
prevOpenRef.current = open;
|
|
1289
1494
|
if (open) {
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
...filter,
|
|
1296
|
-
selectedItem: filter.selectedItem ? filter.items.find(
|
|
1297
|
-
(item) => item.id === filter.selectedItem?.id
|
|
1298
|
-
) || filter.selectedItem : void 0
|
|
1299
|
-
};
|
|
1300
|
-
case "multiSelect":
|
|
1301
|
-
return {
|
|
1302
|
-
...filter,
|
|
1303
|
-
selectedItems: filter.selectedItems ? filter.selectedItems.map((selectedItem) => {
|
|
1304
|
-
const matchingItem = filter.items.find(
|
|
1305
|
-
(item) => item.id === selectedItem.id
|
|
1306
|
-
);
|
|
1307
|
-
return matchingItem || selectedItem;
|
|
1308
|
-
}) : []
|
|
1309
|
-
};
|
|
1310
|
-
case "date":
|
|
1311
|
-
return {
|
|
1312
|
-
...filter,
|
|
1313
|
-
value: filter.value
|
|
1314
|
-
};
|
|
1315
|
-
case "dateRange":
|
|
1316
|
-
return {
|
|
1317
|
-
...filter,
|
|
1318
|
-
value: filter.value
|
|
1319
|
-
};
|
|
1320
|
-
case "custom":
|
|
1321
|
-
return {
|
|
1322
|
-
...filter,
|
|
1323
|
-
value: filter.value ? { ...filter.value } : void 0
|
|
1324
|
-
};
|
|
1325
|
-
default:
|
|
1326
|
-
return { ...filter };
|
|
1327
|
-
}
|
|
1328
|
-
})
|
|
1495
|
+
const anySelectionChanged = prevFiltersRef.current.some(
|
|
1496
|
+
(prevFilter, index) => {
|
|
1497
|
+
const newFilter = filters[index];
|
|
1498
|
+
return newFilter && hasFilterSelectionChanged(prevFilter, newFilter);
|
|
1499
|
+
}
|
|
1329
1500
|
);
|
|
1501
|
+
const shouldSync = justOpened || anySelectionChanged;
|
|
1502
|
+
if (shouldSync) {
|
|
1503
|
+
setDraftFilters(cloneFiltersWithItemRefs(filters));
|
|
1504
|
+
}
|
|
1505
|
+
prevFiltersRef.current = filters;
|
|
1330
1506
|
}
|
|
1331
|
-
}, [open]);
|
|
1507
|
+
}, [open, filters]);
|
|
1332
1508
|
const handleDraftChange = useCallback(
|
|
1333
1509
|
(filterId, value) => {
|
|
1334
1510
|
setDraftFilters((draft) => updateSingleFilter(draft, filterId, value));
|
|
@@ -1690,43 +1866,14 @@ const FilterGroupElement = forwardRef(
|
|
|
1690
1866
|
const showInlineFilters = containerQuery && containerQuery.name !== "xs" && containerQuery.name !== "sm";
|
|
1691
1867
|
useEffect(() => {
|
|
1692
1868
|
setFilters((prevFilters) => {
|
|
1869
|
+
const existingFiltersMap = new Map(prevFilters.map((f) => [f.id, f]));
|
|
1693
1870
|
return initialFilters.map((newFilter) => {
|
|
1694
|
-
const existingFilter =
|
|
1695
|
-
if (existingFilter) {
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
checked: existingFilter.checked
|
|
1701
|
-
};
|
|
1702
|
-
case "singleSelect":
|
|
1703
|
-
return {
|
|
1704
|
-
...newFilter,
|
|
1705
|
-
selectedItem: existingFilter.selectedItem
|
|
1706
|
-
};
|
|
1707
|
-
case "multiSelect":
|
|
1708
|
-
return {
|
|
1709
|
-
...newFilter,
|
|
1710
|
-
selectedItems: existingFilter.selectedItems
|
|
1711
|
-
};
|
|
1712
|
-
case "date":
|
|
1713
|
-
return {
|
|
1714
|
-
...newFilter,
|
|
1715
|
-
value: existingFilter.value
|
|
1716
|
-
};
|
|
1717
|
-
case "dateRange":
|
|
1718
|
-
return {
|
|
1719
|
-
...newFilter,
|
|
1720
|
-
value: existingFilter.value
|
|
1721
|
-
};
|
|
1722
|
-
case "custom":
|
|
1723
|
-
return {
|
|
1724
|
-
...newFilter,
|
|
1725
|
-
value: existingFilter.value
|
|
1726
|
-
};
|
|
1727
|
-
default:
|
|
1728
|
-
return newFilter;
|
|
1729
|
-
}
|
|
1871
|
+
const existingFilter = existingFiltersMap.get(newFilter.id);
|
|
1872
|
+
if (!existingFilter) {
|
|
1873
|
+
return newFilter;
|
|
1874
|
+
}
|
|
1875
|
+
if (!hasFilterSelectionChanged(existingFilter, newFilter)) {
|
|
1876
|
+
return preserveFilterState(newFilter, existingFilter);
|
|
1730
1877
|
}
|
|
1731
1878
|
return newFilter;
|
|
1732
1879
|
});
|
|
@@ -1785,9 +1932,17 @@ const FilterGroupElement = forwardRef(
|
|
|
1785
1932
|
},
|
|
1786
1933
|
filter.id
|
|
1787
1934
|
);
|
|
1788
|
-
case "custom":
|
|
1789
1935
|
case "singleSelect":
|
|
1790
1936
|
case "multiSelect":
|
|
1937
|
+
return /* @__PURE__ */ jsx(
|
|
1938
|
+
FilterButton,
|
|
1939
|
+
{
|
|
1940
|
+
filter,
|
|
1941
|
+
className: styles$2["filter-select-content"]
|
|
1942
|
+
},
|
|
1943
|
+
filter.id
|
|
1944
|
+
);
|
|
1945
|
+
case "custom":
|
|
1791
1946
|
case "date":
|
|
1792
1947
|
case "dateRange":
|
|
1793
1948
|
return /* @__PURE__ */ jsx(FilterButton, { filter }, filter.id);
|
|
@@ -2121,4 +2276,4 @@ const Toolbar = Object.assign(ToolbarElement, {
|
|
|
2121
2276
|
});
|
|
2122
2277
|
|
|
2123
2278
|
export { Toolbar as T, ToolbarButton as a, ToolbarButtonToggle as b, ToolbarButtonLink as c, ToolbarSelect as d, ToolbarControlGroup as e, ToolbarSearchField as f, ToolbarElement as g };
|
|
2124
|
-
//# sourceMappingURL=Toolbar-
|
|
2279
|
+
//# sourceMappingURL=Toolbar-K9UFfyvX.js.map
|