@servicetitan/anvil2 3.0.6 → 3.0.7
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 +30 -0
- package/dist/Combobox.js +1 -2
- package/dist/Combobox.js.map +1 -1
- package/dist/{DataTable-0kOuVgSB.js → DataTable-E8z0H8c7.js} +140 -13
- package/dist/{DataTable-0kOuVgSB.js.map → DataTable-E8z0H8c7.js.map} +1 -1
- package/dist/DataTable.css +47 -5
- package/dist/{DateFieldRange-Be_I9GTp.js → DateFieldRange-BN_uIvHI.js} +24 -12
- package/dist/DateFieldRange-BN_uIvHI.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CsrsY9i8.js → DateFieldSingle-h3YkdwPo.js} +2 -2
- package/dist/{DateFieldSingle-CsrsY9i8.js.map → DateFieldSingle-h3YkdwPo.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{Dialog-CD-SDfPT.js → Dialog-CvYSMvfD.js} +2 -2
- package/dist/{Dialog-CD-SDfPT.js.map → Dialog-CvYSMvfD.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/FilterBar-B4ZAs73g.js +412 -0
- package/dist/FilterBar-B4ZAs73g.js.map +1 -0
- package/dist/FilterBar.js +1 -1
- package/dist/{ListView-CcRRh1ap.js → ListView-DO5psxd4.js} +5 -5
- package/dist/{ListView-CcRRh1ap.js.map → ListView-DO5psxd4.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{ListView.module-CKUQP3kf.js → ListView.module-DfqtCL3Q.js} +3 -3
- package/dist/ListView.module-DfqtCL3Q.js.map +1 -0
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-BMVROOjy.js → MultiSelectFieldSync-CXX2F0ru.js} +59 -29
- package/dist/MultiSelectFieldSync-CXX2F0ru.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +72 -69
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-BNPp_2Bm.js → MultiSelectMenuSync-EKtvlL62.js} +218 -47
- package/dist/MultiSelectMenuSync-EKtvlL62.js.map +1 -0
- package/dist/{Page-SBy27-Wv.js → Page-C2_Hm27h.js} +2 -2
- package/dist/{Page-SBy27-Wv.js.map → Page-C2_Hm27h.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-Cm8-K6VH.js → Pagination-Bmd4JORe.js} +2 -2
- package/dist/{Pagination-Cm8-K6VH.js.map → Pagination-Bmd4JORe.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/SavedFiltersButton-2qba2Cgu.js +650 -0
- package/dist/SavedFiltersButton-2qba2Cgu.js.map +1 -0
- package/dist/SavedFiltersButton.css +8 -0
- package/dist/SavedFiltersButton.d.ts +1 -0
- package/dist/SavedFiltersButton.js +2 -0
- package/dist/SavedFiltersButton.js.map +1 -0
- package/dist/{SearchField-3tUPU8hH.js → SearchField-BMHJCVFu.js} +2 -2
- package/dist/{SearchField-3tUPU8hH.js.map → SearchField-BMHJCVFu.js.map} +1 -1
- package/dist/{SearchField-BcQZ5e0x.js → SearchField-fXc_vWEr.js} +2 -2
- package/dist/{SearchField-BcQZ5e0x.js.map → SearchField-fXc_vWEr.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldSync-BeDYbJ2M.js → SelectFieldSync-DykGkR_w.js} +3 -3
- package/dist/{SelectFieldSync-BeDYbJ2M.js.map → SelectFieldSync-DykGkR_w.js.map} +1 -1
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-C-PFemsQ.js → SelectMenuSync-DTQ8Ofoz.js} +21 -9
- package/dist/SelectMenuSync-DTQ8Ofoz.js.map +1 -0
- package/dist/{SelectOptions-Tr11Ckqw.js → SelectOptions-DVSOJwRy.js} +2 -2
- package/dist/{SelectOptions-Tr11Ckqw.js.map → SelectOptions-DVSOJwRy.js.map} +1 -1
- package/dist/{SelectTrigger-DTz7V-Xx.js → SelectTrigger-CHk0KO-P.js} +2 -2
- package/dist/{SelectTrigger-DTz7V-Xx.js.map → SelectTrigger-CHk0KO-P.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-Ds6I7Qbr.js → SelectTriggerBase-B2S5SOZr.js} +134 -38
- package/dist/SelectTriggerBase-B2S5SOZr.js.map +1 -0
- package/dist/Table.js +1 -1
- package/dist/{Toolbar-BUd9eNkq.js → Toolbar-DaUKbbsL.js} +3 -3
- package/dist/{Toolbar-BUd9eNkq.js.map → Toolbar-DaUKbbsL.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-C06cqJ6F.js → ToolbarButtonToggle-BPu81Wuv.js} +4 -3
- package/dist/ToolbarButtonToggle-BPu81Wuv.js.map +1 -0
- package/dist/beta.js +10 -9
- package/dist/beta.js.map +1 -1
- package/dist/filter-state-Bx3aYS1r.js +1627 -0
- package/dist/filter-state-Bx3aYS1r.js.map +1 -0
- package/dist/{FilterBar.css → filter-state.css} +19 -33
- package/dist/index.js +9 -10
- package/dist/index.js.map +1 -1
- package/dist/src/beta/components/FilterBar/FilterBar.d.ts +12 -10
- package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +15 -5
- package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +34 -29
- package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +31 -22
- package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +4 -12
- package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +29 -0
- package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +86 -0
- package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +2 -2
- package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +50 -0
- package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +5 -9
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncMultiSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/boolean.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/custom.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/date.d.ts +5 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/dateList.d.ts +5 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/dateRange.d.ts +8 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +15 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/multiSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/numericRange.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/singleSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +78 -0
- package/dist/src/beta/components/FilterBar/internal/types.d.ts +166 -61
- package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +2 -2
- package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +2 -40
- package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +13 -28
- package/dist/src/beta/components/FilterBar/internal/utils/value-compare.d.ts +14 -0
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +4 -2
- package/dist/src/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +7 -5
- package/dist/src/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +5 -2
- package/dist/src/beta/components/MultiSelectField/types.d.ts +21 -36
- package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
- package/dist/src/beta/components/MultiSelectMenu/types.d.ts +52 -12
- package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +40 -0
- package/dist/src/beta/components/SavedFiltersButton/index.d.ts +2 -0
- package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +27 -0
- package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +38 -0
- package/dist/src/beta/components/SavedFiltersButton/types.d.ts +147 -0
- package/dist/src/beta/components/SelectField/types.d.ts +7 -11
- package/dist/src/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -1
- package/dist/src/beta/components/SelectMenu/types.d.ts +21 -1
- package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +6 -0
- package/dist/src/beta/components/Table/DataTable/types.d.ts +43 -10
- package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +3 -2
- package/dist/src/beta/components/index.d.ts +1 -0
- package/dist/src/internal/components/MenuFooter/MenuFooter.d.ts +43 -0
- package/dist/src/internal/components/OptionCheckbox.d.ts +6 -0
- package/dist/src/internal/components/OptionContentArea.d.ts +8 -0
- package/dist/src/internal/components/OptionRow.d.ts +10 -0
- package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +4 -4
- package/dist/src/internal/hooks/index.d.ts +2 -0
- package/dist/src/internal/hooks/useBulkActionRunner.d.ts +41 -0
- package/dist/src/internal/hooks/useConfirmationDraft.d.ts +21 -0
- package/dist/src/internal/types/bulkActionTypes.d.ts +39 -0
- package/dist/src/internal/types/confirmationTypes.d.ts +19 -0
- package/dist/src/internal/types/optionContent.d.ts +19 -0
- package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -0
- package/dist/{syncFilterUtils-COxBIkt6.js → syncFilterUtils-BEKek64h.js} +163 -124
- package/dist/syncFilterUtils-BEKek64h.js.map +1 -0
- package/dist/syncFilterUtils.css +96 -59
- package/dist/{Combobox-Cp7M4-4r.js → useInfiniteCombobox-CknXmqlQ.js} +185 -10
- package/dist/useInfiniteCombobox-CknXmqlQ.js.map +1 -0
- package/dist/{useMenuInteraction-C4RU5Fdq.js → useMenuInteraction-CpAOHSJu.js} +118 -5
- package/dist/useMenuInteraction-CpAOHSJu.js.map +1 -0
- package/dist/useMenuInteraction.css +28 -0
- package/dist/{useToggleSelection-B5PnTuT2.js → useToggleSelection-B-Z80gy2.js} +53 -4
- package/dist/useToggleSelection-B-Z80gy2.js.map +1 -0
- package/package.json +3 -3
- package/dist/Combobox-Cp7M4-4r.js.map +0 -1
- package/dist/DateFieldRange-Be_I9GTp.js.map +0 -1
- package/dist/FilterBar-yysyZ-t1.js +0 -1797
- package/dist/FilterBar-yysyZ-t1.js.map +0 -1
- package/dist/ListView.module-CKUQP3kf.js.map +0 -1
- package/dist/MultiSelectFieldSync-BMVROOjy.js.map +0 -1
- package/dist/MultiSelectMenuSync-BNPp_2Bm.js.map +0 -1
- package/dist/SelectMenuSync-C-PFemsQ.js.map +0 -1
- package/dist/SelectTriggerBase-Ds6I7Qbr.js.map +0 -1
- package/dist/ToolbarButtonToggle-C06cqJ6F.js.map +0 -1
- package/dist/src/beta/components/FilterBar/FilterButton.d.ts +0 -33
- package/dist/src/beta/components/FilterBar/FilterSelect.d.ts +0 -29
- package/dist/syncFilterUtils-COxBIkt6.js.map +0 -1
- package/dist/useInfiniteCombobox-WcRgC9p6.js +0 -179
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +0 -1
- package/dist/useMenuInteraction-C4RU5Fdq.js.map +0 -1
- package/dist/useToggleSelection-B5PnTuT2.js.map +0 -1
- /package/dist/{Combobox.css → useInfiniteCombobox.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { createContext, useContext, useEffect, useMemo, useState, useRef, forwardRef, useId, useLayoutEffect } from 'react';
|
|
2
|
+
import { createContext, useContext, useEffect, useMemo, useState, useRef, forwardRef, useId, useLayoutEffect, useDeferredValue, useCallback } from 'react';
|
|
3
3
|
import { P as Popover, u as usePopoverContext } from './Popover-8mTJoMy7.js';
|
|
4
|
-
import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-
|
|
4
|
+
import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-B2S5SOZr.js';
|
|
5
5
|
import { c as cx } from './index-De1g9FRV.js';
|
|
6
6
|
import { u as useDownshiftEnvironment, c as useMultipleSelection, b as useSelect, a as useCombobox$1 } from './downshift.esm-xtSnQp44.js';
|
|
7
7
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
|
|
@@ -10,7 +10,7 @@ import { T as Text } from './Text-BTzgTpqu.js';
|
|
|
10
10
|
import { D as Divider } from './Divider-CxtTyw8_.js';
|
|
11
11
|
import { F as Flex } from './Flex-_orhvoxS.js';
|
|
12
12
|
import { S as Spinner } from './Spinner-B7tTWcP6.js';
|
|
13
|
-
import {
|
|
13
|
+
import { s as styles$1 } from './ListView.module-DfqtCL3Q.js';
|
|
14
14
|
import { I as Icon } from './Icon-feeG7gXA.js';
|
|
15
15
|
import { c as checkboxStyles } from './Checkbox.module-CURNX27M.js';
|
|
16
16
|
import { S as SvgCheckBox, a as SvgCheckBoxOutlineBlank } from './check_box-0U1tbEAd.js';
|
|
@@ -20,7 +20,7 @@ import { useTrackingId } from './useTrackingId.js';
|
|
|
20
20
|
import { S as SvgCheck } from './check-Cf67OWrZ.js';
|
|
21
21
|
import { m as matchSorter } from './match-sorter.esm-CGAauEiU.js';
|
|
22
22
|
|
|
23
|
-
import './
|
|
23
|
+
import './useInfiniteCombobox.css';const ComboboxContext = createContext(null);
|
|
24
24
|
const useCombobox = function() {
|
|
25
25
|
const context = useContext(
|
|
26
26
|
ComboboxContext
|
|
@@ -582,7 +582,7 @@ const ComboboxItemVisual = forwardRef(
|
|
|
582
582
|
});
|
|
583
583
|
const listViewOptionClassNames = cx(
|
|
584
584
|
styles["listview-option"],
|
|
585
|
-
|
|
585
|
+
styles$1["listview-option"],
|
|
586
586
|
{
|
|
587
587
|
[styles["listview-option-disabled"]]: disabled
|
|
588
588
|
}
|
|
@@ -595,7 +595,7 @@ const ComboboxItemVisual = forwardRef(
|
|
|
595
595
|
...rootDivProps,
|
|
596
596
|
className: listViewOptionClassNames,
|
|
597
597
|
children: [
|
|
598
|
-
!hideCheckbox ? /* @__PURE__ */ jsx("div", { className: cx(styles["cell"],
|
|
598
|
+
!hideCheckbox ? /* @__PURE__ */ jsx("div", { className: cx(styles["cell"], styles$1["cell"]), children: /* @__PURE__ */ jsx("div", { className: checkboxStyles["wrapper"], children: /* @__PURE__ */ jsxs("div", { className: checkboxClassNames, children: [
|
|
599
599
|
/* @__PURE__ */ jsx(
|
|
600
600
|
"input",
|
|
601
601
|
{
|
|
@@ -722,7 +722,7 @@ const ComboboxGroupList = function({
|
|
|
722
722
|
...getMenuProps(rest),
|
|
723
723
|
ref: listRef,
|
|
724
724
|
"data-anv": "combobox-list",
|
|
725
|
-
className: cx(styles["listview"],
|
|
725
|
+
className: cx(styles["listview"], styles$1["listview"], {
|
|
726
726
|
[styles.scrolled]: isScrolled
|
|
727
727
|
}),
|
|
728
728
|
style: {
|
|
@@ -1444,7 +1444,7 @@ const ComboboxListElement = function({
|
|
|
1444
1444
|
...getMenuProps(rest),
|
|
1445
1445
|
ref: listRef,
|
|
1446
1446
|
"data-anv": "combobox-list",
|
|
1447
|
-
className: cx(styles["listview"],
|
|
1447
|
+
className: cx(styles["listview"], styles$1["listview"], {
|
|
1448
1448
|
[styles.scrolled]: isScrolled
|
|
1449
1449
|
}),
|
|
1450
1450
|
style: {
|
|
@@ -2471,5 +2471,180 @@ const Combobox = Object.assign(
|
|
|
2471
2471
|
);
|
|
2472
2472
|
const ComboboxElement = Combobox;
|
|
2473
2473
|
|
|
2474
|
-
|
|
2475
|
-
|
|
2474
|
+
const SCROLL_THRESHOLD = 0.64;
|
|
2475
|
+
function useInfiniteCombobox({
|
|
2476
|
+
query,
|
|
2477
|
+
queryInitialItems,
|
|
2478
|
+
initialItems = [],
|
|
2479
|
+
initialPage = 0,
|
|
2480
|
+
initialLoading = false,
|
|
2481
|
+
initialInputValue,
|
|
2482
|
+
defaultInputValue,
|
|
2483
|
+
initialSelectedItem,
|
|
2484
|
+
defaultSelectedItem,
|
|
2485
|
+
initialSelectedItems,
|
|
2486
|
+
defaultSelectedItems,
|
|
2487
|
+
updateOnInputValueChange = true,
|
|
2488
|
+
updateOnSelectedItemChange = true,
|
|
2489
|
+
updateOnSelectedItemsChange = true,
|
|
2490
|
+
queryOnFirstRender = false,
|
|
2491
|
+
shouldTriggerQuery: shouldTriggerQueryProp
|
|
2492
|
+
}) {
|
|
2493
|
+
const [items, setItems] = useState(initialItems);
|
|
2494
|
+
const deferredItems = useDeferredValue(items);
|
|
2495
|
+
const [page, setPage] = useState(initialPage);
|
|
2496
|
+
const [loading, setLoading] = useState(initialLoading);
|
|
2497
|
+
const deferredLoading = useDeferredValue(loading);
|
|
2498
|
+
const [inputValue, setInputValue] = useState(
|
|
2499
|
+
initialInputValue ?? defaultInputValue ?? ""
|
|
2500
|
+
);
|
|
2501
|
+
const [selectedItem, setSelectedItem] = useState(
|
|
2502
|
+
initialSelectedItem ?? defaultSelectedItem ?? null
|
|
2503
|
+
);
|
|
2504
|
+
const [selectedItems, setSelectedItems] = useState(
|
|
2505
|
+
initialSelectedItems ?? defaultSelectedItems ?? []
|
|
2506
|
+
);
|
|
2507
|
+
const scrollerRef = useRef(null);
|
|
2508
|
+
const defaultShouldTriggerQuery = (element) => {
|
|
2509
|
+
const totalScrollHeight = element.scrollHeight - element.clientHeight;
|
|
2510
|
+
return element.scrollTop / totalScrollHeight > SCROLL_THRESHOLD;
|
|
2511
|
+
};
|
|
2512
|
+
const [triggerQueryCount, setTriggerQueryCount] = useState(0);
|
|
2513
|
+
const triggerQueryCountRef = useRef(0);
|
|
2514
|
+
const triggerQuery = () => {
|
|
2515
|
+
setTriggerQueryCount((x) => x + 1);
|
|
2516
|
+
triggerQueryCountRef.current += 1;
|
|
2517
|
+
};
|
|
2518
|
+
const [done, setDone] = useState(false);
|
|
2519
|
+
const firstRenderRef = useRef(true);
|
|
2520
|
+
const scrollTimeoutRef = useRef(false);
|
|
2521
|
+
const loadingRef = useRef(false);
|
|
2522
|
+
const setLoadingStateAndRef = (isLoading) => {
|
|
2523
|
+
setLoading(isLoading);
|
|
2524
|
+
loadingRef.current = isLoading;
|
|
2525
|
+
};
|
|
2526
|
+
const queryRetryCountRef = useRef(0);
|
|
2527
|
+
useEffect(() => {
|
|
2528
|
+
if (firstRenderRef.current && queryInitialItems) {
|
|
2529
|
+
setItems(queryInitialItems());
|
|
2530
|
+
}
|
|
2531
|
+
if (firstRenderRef.current && !queryOnFirstRender) {
|
|
2532
|
+
firstRenderRef.current = false;
|
|
2533
|
+
return;
|
|
2534
|
+
}
|
|
2535
|
+
setLoadingStateAndRef(true);
|
|
2536
|
+
const timeoutID = setTimeout(() => {
|
|
2537
|
+
if (triggerQueryCount < triggerQueryCountRef.current) return;
|
|
2538
|
+
query({
|
|
2539
|
+
page,
|
|
2540
|
+
inputValue,
|
|
2541
|
+
selectedItem,
|
|
2542
|
+
selectedItems
|
|
2543
|
+
}).then((res) => {
|
|
2544
|
+
queryRetryCountRef.current = 0;
|
|
2545
|
+
if (triggerQueryCount < triggerQueryCountRef.current) return;
|
|
2546
|
+
setLoadingStateAndRef(false);
|
|
2547
|
+
setPage((x) => x + 1);
|
|
2548
|
+
if (res == null || page > 0 && res.length === 0) {
|
|
2549
|
+
setDone(true);
|
|
2550
|
+
} else if (page === 0) {
|
|
2551
|
+
setItems(() => [...res]);
|
|
2552
|
+
} else {
|
|
2553
|
+
setItems((prevItems) => [...prevItems, ...res]);
|
|
2554
|
+
}
|
|
2555
|
+
}).catch(() => {
|
|
2556
|
+
queryRetryCountRef.current += 1;
|
|
2557
|
+
if (queryRetryCountRef.current > 7) {
|
|
2558
|
+
queryRetryCountRef.current = 0;
|
|
2559
|
+
return;
|
|
2560
|
+
} else {
|
|
2561
|
+
setTimeout(
|
|
2562
|
+
() => {
|
|
2563
|
+
triggerQuery();
|
|
2564
|
+
},
|
|
2565
|
+
2 ** queryRetryCountRef.current * 160
|
|
2566
|
+
);
|
|
2567
|
+
}
|
|
2568
|
+
});
|
|
2569
|
+
}, 160);
|
|
2570
|
+
return () => {
|
|
2571
|
+
clearTimeout(timeoutID);
|
|
2572
|
+
};
|
|
2573
|
+
}, [triggerQueryCount]);
|
|
2574
|
+
useLayoutEffect(() => {
|
|
2575
|
+
setTimeout(() => {
|
|
2576
|
+
if (scrollerRef.current && scrollerRef.current.scrollHeight > 0 && scrollerRef.current.clientHeight > 0 && scrollerRef.current.scrollHeight <= scrollerRef.current.clientHeight) {
|
|
2577
|
+
triggerQuery();
|
|
2578
|
+
}
|
|
2579
|
+
}, 160);
|
|
2580
|
+
}, [items]);
|
|
2581
|
+
const isEmpty = items.length === 0 && page === 0;
|
|
2582
|
+
const onStateChange = useCallback(
|
|
2583
|
+
(changes) => {
|
|
2584
|
+
if (isEmpty && "isOpen" in changes && changes.isOpen === true) {
|
|
2585
|
+
triggerQuery();
|
|
2586
|
+
}
|
|
2587
|
+
const inputValueShouldUpdate = updateOnInputValueChange && "inputValue" in changes;
|
|
2588
|
+
const selectedItemsShouldUpdate = updateOnSelectedItemsChange && "selectedItems" in changes && changes.selectedItems;
|
|
2589
|
+
const selectedItemShouldUpdate = updateOnSelectedItemChange && "selectedItem" in changes && changes.selectedItem !== void 0;
|
|
2590
|
+
if (inputValueShouldUpdate) {
|
|
2591
|
+
setInputValue(changes.inputValue ?? "");
|
|
2592
|
+
}
|
|
2593
|
+
if (selectedItemsShouldUpdate) {
|
|
2594
|
+
setSelectedItems(changes.selectedItems ?? []);
|
|
2595
|
+
}
|
|
2596
|
+
if (selectedItemShouldUpdate) {
|
|
2597
|
+
setSelectedItem(changes.selectedItem);
|
|
2598
|
+
}
|
|
2599
|
+
if (inputValueShouldUpdate || selectedItemsShouldUpdate || selectedItemShouldUpdate) {
|
|
2600
|
+
setPage(0);
|
|
2601
|
+
setDone(false);
|
|
2602
|
+
triggerQuery();
|
|
2603
|
+
}
|
|
2604
|
+
},
|
|
2605
|
+
[
|
|
2606
|
+
isEmpty,
|
|
2607
|
+
updateOnInputValueChange,
|
|
2608
|
+
updateOnSelectedItemsChange,
|
|
2609
|
+
updateOnSelectedItemChange
|
|
2610
|
+
]
|
|
2611
|
+
);
|
|
2612
|
+
const onScroll = useCallback(
|
|
2613
|
+
(e) => {
|
|
2614
|
+
const element = e.currentTarget;
|
|
2615
|
+
if (!scrollTimeoutRef.current && !loadingRef.current) {
|
|
2616
|
+
setTimeout(() => {
|
|
2617
|
+
const shouldTriggerQuery = shouldTriggerQueryProp ?? defaultShouldTriggerQuery;
|
|
2618
|
+
if (shouldTriggerQuery(element) && !done) {
|
|
2619
|
+
triggerQuery();
|
|
2620
|
+
}
|
|
2621
|
+
scrollTimeoutRef.current = false;
|
|
2622
|
+
}, 40);
|
|
2623
|
+
scrollTimeoutRef.current = true;
|
|
2624
|
+
}
|
|
2625
|
+
},
|
|
2626
|
+
[done, shouldTriggerQueryProp]
|
|
2627
|
+
);
|
|
2628
|
+
return {
|
|
2629
|
+
comboboxProps: {
|
|
2630
|
+
items: deferredItems,
|
|
2631
|
+
loading: deferredLoading,
|
|
2632
|
+
initialInputValue,
|
|
2633
|
+
defaultInputValue,
|
|
2634
|
+
initialSelectedItem,
|
|
2635
|
+
defaultSelectedItem,
|
|
2636
|
+
initialSelectedItems,
|
|
2637
|
+
defaultSelectedItems,
|
|
2638
|
+
disableFilter: true,
|
|
2639
|
+
// assume the query will return a filtered/sorted list
|
|
2640
|
+
onStateChange
|
|
2641
|
+
},
|
|
2642
|
+
contentProps: {
|
|
2643
|
+
onScroll,
|
|
2644
|
+
scrollerRef
|
|
2645
|
+
}
|
|
2646
|
+
};
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxList as c, useInfiniteCombobox as u };
|
|
2650
|
+
//# sourceMappingURL=useInfiniteCombobox-CknXmqlQ.js.map
|