@servicetitan/anvil2 1.49.3 → 1.49.5
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 +28 -0
- package/dist/{Calendar-BkJs1qTF.js → Calendar-BP6r1sP9.js} +2 -2
- package/dist/{Calendar-BkJs1qTF.js.map → Calendar-BP6r1sP9.js.map} +1 -1
- package/dist/{Calendar-WHERvu2Y.js → Calendar-CLSm88D2.js} +2 -2
- package/dist/{Calendar-WHERvu2Y.js.map → Calendar-CLSm88D2.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-Bhjj-jM4.js → Checkbox-DwuDx-t4.js} +4 -3
- package/dist/{Checkbox-Bhjj-jM4.js.map → Checkbox-DwuDx-t4.js.map} +1 -1
- package/dist/{Checkbox-C5Qjq_tU.js → Checkbox-PkAk1Saq.js} +2 -2
- package/dist/{Checkbox-C5Qjq_tU.js.map → Checkbox-PkAk1Saq.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/Checkbox.module-D4EgXL0i.js +27 -0
- package/dist/Checkbox.module-D4EgXL0i.js.map +1 -0
- package/dist/Combobox-DNCq-jkq.js +4281 -0
- package/dist/Combobox-DNCq-jkq.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-BkNCMaVu.js → DataTable-BIhmpU0v.js} +7 -7
- package/dist/{DataTable-BkNCMaVu.js.map → DataTable-BIhmpU0v.js.map} +1 -1
- package/dist/{DateField-BNleIuS8.js → DateField-DsGHTMZ1.js} +6 -6
- package/dist/{DateField-BNleIuS8.js.map → DateField-DsGHTMZ1.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-BBgvno-_.js → DateFieldRange-Ct979nxF.js} +7 -7
- package/dist/{DateFieldRange-BBgvno-_.js.map → DateFieldRange-Ct979nxF.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-Bcwkxogy.js → DateFieldSingle-frMHnRSg.js} +7 -7
- package/dist/{DateFieldSingle-Bcwkxogy.js.map → DateFieldSingle-frMHnRSg.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DnVJaBBq.js → DateFieldYearless-po9ieLod.js} +3 -3
- package/dist/{DateFieldYearless-DnVJaBBq.js.map → DateFieldYearless-po9ieLod.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-BivGidsU.js → DateFieldYearlessRange-Dy8a8O1n.js} +3 -3
- package/dist/{DateFieldYearlessRange-BivGidsU.js.map → DateFieldYearlessRange-Dy8a8O1n.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-Dn6zHxpt.js → DaysOfTheWeek-2_k3T4n4.js} +3 -3
- package/dist/{DaysOfTheWeek-Dn6zHxpt.js.map → DaysOfTheWeek-2_k3T4n4.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-CxH4Vnbb.js → Dialog-BT7a5KNT.js} +46 -67
- package/dist/Dialog-BT7a5KNT.js.map +1 -0
- package/dist/Dialog.css +33 -27
- package/dist/Dialog.js +2 -1
- package/dist/Dialog.js.map +1 -1
- package/dist/DialogCancelButton-sTEfx5kf.js +50 -0
- package/dist/DialogCancelButton-sTEfx5kf.js.map +1 -0
- package/dist/{Drawer-BLfDJU-e.js → Drawer-scQFylHI.js} +41 -21
- package/dist/Drawer-scQFylHI.js.map +1 -0
- package/dist/Drawer.css +35 -25
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-D4tWTLVf.js → DrawerContext-Cs3k160L.js} +127 -2
- package/dist/{DrawerContext-D4tWTLVf.js.map → DrawerContext-Cs3k160L.js.map} +1 -1
- package/dist/{FieldLabel-CHMCV9wX.js → FieldLabel-BIStrC2x.js} +2 -2
- package/dist/{FieldLabel-CHMCV9wX.js.map → FieldLabel-BIStrC2x.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{InputMask-Cd01c3Tj.js → InputMask-A5LDdyxL.js} +3 -3
- package/dist/{InputMask-Cd01c3Tj.js.map → InputMask-A5LDdyxL.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-CZ5T8bR1.js → ListView-5cRssdYI.js} +2 -2
- package/dist/{ListView-CZ5T8bR1.js.map → ListView-5cRssdYI.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Menu-DUAfSImY.js → Menu-Cn2JJe1Y.js} +2 -2
- package/dist/{Menu-DUAfSImY.js.map → Menu-Cn2JJe1Y.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-C62E56_v.js → NumberField-BUFymKV3.js} +2 -2
- package/dist/{NumberField-C62E56_v.js.map → NumberField-BUFymKV3.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-CGZQ-nsg.js → Page-Dgpz2WD7.js} +5 -5
- package/dist/{Page-CGZQ-nsg.js.map → Page-Dgpz2WD7.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BHEEnNas.js → Pagination-CnF6yBr5.js} +2 -2
- package/dist/{Pagination-BHEEnNas.js.map → Pagination-CnF6yBr5.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CIPg_ZgX.js → Popover-CcMDyKTj.js} +2 -2
- package/dist/{Popover-CIPg_ZgX.js.map → Popover-CcMDyKTj.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CUpF9fFW.js → ProgressBar-R_UjSR4o.js} +2 -2
- package/dist/{ProgressBar-CUpF9fFW.js.map → ProgressBar-R_UjSR4o.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CyCFna1X.js → Radio-CLR1m8N9.js} +2 -2
- package/dist/{Radio-CyCFna1X.js.map → Radio-CLR1m8N9.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-DRS2EjVH.js → RadioGroup-m46C69uO.js} +2 -2
- package/dist/{RadioGroup-DRS2EjVH.js.map → RadioGroup-m46C69uO.js.map} +1 -1
- package/dist/{SelectCard-lBcnP5j5.js → SelectCard-DViLgRGh.js} +3 -3
- package/dist/{SelectCard-lBcnP5j5.js.map → SelectCard-DViLgRGh.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.d.ts +2 -0
- package/dist/SelectField.js +2 -0
- package/dist/SelectField.js.map +1 -0
- package/dist/SelectFieldSync-DF05HvD4.js +1009 -0
- package/dist/SelectFieldSync-DF05HvD4.js.map +1 -0
- package/dist/SelectFieldSync.css +168 -0
- package/dist/{SelectTrigger-qvoGCkb1.js → SelectTrigger-BSzOoRsu.js} +2 -2
- package/dist/{SelectTrigger-qvoGCkb1.js.map → SelectTrigger-BSzOoRsu.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-C4gebtca.js → SelectTriggerBase-CfmRIFRs.js} +17 -39
- package/dist/SelectTriggerBase-CfmRIFRs.js.map +1 -0
- package/dist/SelectTriggerBase.module-DUhQNr6j.js +33 -0
- package/dist/SelectTriggerBase.module-DUhQNr6j.js.map +1 -0
- package/dist/Table.js +1 -1
- package/dist/{TextField-CygbgVVt.js → TextField-B08U4_rt.js} +2 -2
- package/dist/{TextField-CygbgVVt.js.map → TextField-B08U4_rt.js.map} +1 -1
- package/dist/{TextField-CpVkZxMT.js → TextField-D29fTRGR.js} +2 -2
- package/dist/{TextField-CpVkZxMT.js.map → TextField-D29fTRGR.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DacevzmW.js → Textarea-Dl4w2-t0.js} +2 -2
- package/dist/{Textarea-DacevzmW.js.map → Textarea-Dl4w2-t0.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-BkOB5ESa.js → TimeField-Dpi3fMsn.js} +4 -4
- package/dist/{TimeField-BkOB5ESa.js.map → TimeField-Dpi3fMsn.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-Dg7M4W4U.js → Toaster-B0ogInIl.js} +23 -23
- package/dist/{Toaster-Dg7M4W4U.js.map → Toaster-B0ogInIl.js.map} +1 -1
- package/dist/{Toaster-BxbR-XcR.js → Toaster-CRNOANCk.js} +2 -2
- package/dist/{Toaster-BxbR-XcR.js.map → Toaster-CRNOANCk.js.map} +1 -1
- package/dist/Toaster.css +56 -53
- package/dist/{Toolbar-is5509wJ.js → Toolbar-CPldWSNJ.js} +11 -11
- package/dist/{Toolbar-is5509wJ.js.map → Toolbar-CPldWSNJ.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-CZsoFe6C.js → Tooltip-BbfLb3pI.js} +2 -2
- package/dist/{Tooltip-CZsoFe6C.js.map → Tooltip-BbfLb3pI.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-MHLlAdrH.js → YearlessDateInputWithPicker-LiMI-Oer.js} +4 -4
- package/dist/{YearlessDateInputWithPicker-MHLlAdrH.js.map → YearlessDateInputWithPicker-LiMI-Oer.js.map} +1 -1
- package/dist/assets/icons/st/titan_intelligence.svg +1 -1
- package/dist/assets/icons/st/transactional.svg +1 -0
- package/dist/assets/icons/st.ts +1 -0
- package/dist/beta/components/SelectField/SelectField.d.ts +2 -0
- package/dist/beta/components/SelectField/SelectFieldSync.d.ts +39 -0
- package/dist/beta/components/SelectField/index.d.ts +3 -0
- package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +8 -0
- package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +8 -0
- package/dist/beta/components/SelectField/internal/InView.d.ts +34 -0
- package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +53 -0
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +28 -0
- package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +26 -0
- package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +14 -0
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +30 -0
- package/dist/beta/components/SelectField/stories/SelectField.stories.data.d.ts +32 -0
- package/dist/beta/components/SelectField/types.d.ts +232 -0
- package/dist/beta/components/Table/types.d.ts +1 -1
- package/dist/beta/components/index.d.ts +1 -0
- package/dist/beta/hooks/index.d.ts +1 -0
- package/dist/beta/hooks/useAdaptiveView.d.ts +50 -0
- package/dist/beta/index.d.ts +1 -0
- package/dist/beta.js +5 -4
- package/dist/beta.js.map +1 -1
- package/dist/components/ButtonToggle/ButtonToggle.d.ts +1 -1
- package/dist/components/Dialog/Dialog.d.ts +3 -1
- package/dist/components/Dialog/DialogContent.d.ts +22 -2
- package/dist/components/Dialog/internal/DialogContext.d.ts +1 -0
- package/dist/components/Drawer/Drawer.d.ts +3 -1
- package/dist/components/Drawer/DrawerContent.d.ts +22 -3
- package/dist/components/Drawer/internal/DrawerContext.d.ts +4 -0
- package/dist/{indeterminate_check_box-RY9zr3xS.js → indeterminate_check_box-B4zobNlt.js} +2 -27
- package/dist/{indeterminate_check_box-RY9zr3xS.js.map → indeterminate_check_box-B4zobNlt.js.map} +1 -1
- package/dist/index.js +34 -33
- package/dist/index.js.map +1 -1
- package/dist/internal/hooks/index.d.ts +1 -0
- package/dist/internal/hooks/useDebouncedCallback/index.d.ts +1 -0
- package/dist/internal/hooks/useDebouncedCallback/useDebouncedCallback.d.ts +28 -0
- package/dist/internal/hooks/useSelectFieldLoading/index.d.ts +1 -0
- package/dist/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +102 -0
- package/dist/{Combobox-RjBDpgFV.js → match-sorter.esm-CtBw0MrM.js} +4 -4278
- package/dist/match-sorter.esm-CtBw0MrM.js.map +1 -0
- package/dist/useDialogScrollLock-BW-aVboo.js +41 -0
- package/dist/useDialogScrollLock-BW-aVboo.js.map +1 -0
- package/dist/{useInitialFocus-Cl_Txu7W.js → useInitialFocus-BpmW7pDB.js} +4 -41
- package/dist/useInitialFocus-BpmW7pDB.js.map +1 -0
- package/dist/{usePopoverSupport-CWTCDfN2.js → usePopoverSupport-CCSCHnit.js} +2 -2
- package/dist/{usePopoverSupport-CWTCDfN2.js.map → usePopoverSupport-CCSCHnit.js.map} +1 -1
- package/dist/{utils-aSAOVHjX.js → utils-CeT0omsG.js} +2 -2
- package/dist/{utils-aSAOVHjX.js.map → utils-CeT0omsG.js.map} +1 -1
- package/package.json +2 -2
- package/dist/Combobox-RjBDpgFV.js.map +0 -1
- package/dist/Dialog-CxH4Vnbb.js.map +0 -1
- package/dist/Drawer-BLfDJU-e.js.map +0 -1
- package/dist/SelectTriggerBase-C4gebtca.js.map +0 -1
- package/dist/useInitialFocus-Cl_Txu7W.js.map +0 -1
- /package/dist/{indeterminate_check_box.css → Checkbox.css} +0 -0
|
@@ -1,101 +1,6 @@
|
|
|
1
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import React__default, { forwardRef, useState, useEffect, createContext, useContext, useRef, useMemo, useCallback, useLayoutEffect, useReducer, cloneElement, Component, useId } from 'react';
|
|
3
|
-
import { s as supportsPopover } from './DrawerContext-D4tWTLVf.js';
|
|
4
|
-
import { P as Popover, u as usePopoverLegacyContext, f as usePopoverContext } from './Popover-CIPg_ZgX.js';
|
|
5
|
-
import { c as cx, g as getDefaultExportFromCjs } from './index-tZvMCc77.js';
|
|
6
1
|
import { a as _extends, _ as _objectWithoutPropertiesLoose } from './extends-Bg2s_OKl.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { l as listboxStyles } from './Listbox.module-XuKszT3X.js';
|
|
10
|
-
import { T as Text } from './Text-kPA-VzsB.js';
|
|
11
|
-
import { D as Divider } from './Divider-Olv8yWXD.js';
|
|
12
|
-
import { F as Flex } from './Flex-CjPHUTeq.js';
|
|
13
|
-
import { S as Spinner } from './Spinner-xEFwsq8_.js';
|
|
14
|
-
import { l as listViewStyles } from './ListView.module-BilDg12y.js';
|
|
15
|
-
import { I as Icon$2 } from './Icon-BSuTVNaa.js';
|
|
16
|
-
import { c as checkboxStyles, S as SvgIndeterminateCheckBox, a as SvgCheckBox, b as SvgCheckBoxOutlineBlank } from './indeterminate_check_box-RY9zr3xS.js';
|
|
17
|
-
import { B as Button } from './Button-92_FKAyV.js';
|
|
18
|
-
import { C as Chip } from './Chip-X2EwdZ97.js';
|
|
19
|
-
import { S as SvgClose } from './close-DZj38AEh.js';
|
|
20
|
-
import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
|
|
21
|
-
import { S as SvgInfo } from './info-CYpG6tcI.js';
|
|
22
|
-
import { S as SrOnly } from './SrOnly-CTsYSuby.js';
|
|
23
|
-
import { T as Tooltip } from './Tooltip-CZsoFe6C.js';
|
|
24
|
-
import { H as Helper } from './Helper-DjWotFtO.js';
|
|
25
|
-
import { A as Avatar } from './Avatar-DeEV-v-b.js';
|
|
26
|
-
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
27
|
-
import { useTrackingId } from './useTrackingId.js';
|
|
28
|
-
import { S as SvgCheck } from './check-Cf67OWrZ.js';
|
|
29
|
-
|
|
30
|
-
import './Combobox.css';const label = "_label_jfzvd_2";
|
|
31
|
-
const required = "_required_jfzvd_46";
|
|
32
|
-
const styles$2 = {
|
|
33
|
-
label: label,
|
|
34
|
-
"top-container": "_top-container_jfzvd_37",
|
|
35
|
-
"label-text": "_label-text_jfzvd_42",
|
|
36
|
-
required: required,
|
|
37
|
-
"info-trigger": "_info-trigger_jfzvd_51",
|
|
38
|
-
"info-content": "_info-content_jfzvd_56"
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const LabelMoreInfoIcon = ({
|
|
42
|
-
moreInfo,
|
|
43
|
-
openMoreInfo
|
|
44
|
-
}) => {
|
|
45
|
-
const [open, setOpen] = useState(openMoreInfo);
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
if (openMoreInfo) {
|
|
48
|
-
setOpen(true);
|
|
49
|
-
} else {
|
|
50
|
-
setOpen(false);
|
|
51
|
-
setTimeout(() => {
|
|
52
|
-
setOpen(void 0);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
}, [openMoreInfo]);
|
|
56
|
-
return /* @__PURE__ */ jsxs(
|
|
57
|
-
Tooltip,
|
|
58
|
-
{
|
|
59
|
-
open,
|
|
60
|
-
placement: "top",
|
|
61
|
-
offset: 5,
|
|
62
|
-
fallbackPlacements: ["right", "bottom", "left"],
|
|
63
|
-
children: [
|
|
64
|
-
/* @__PURE__ */ jsx(Tooltip.Trigger, { className: styles$2["info-trigger"], children: /* @__PURE__ */ jsx(Icon$2, { svg: SvgInfo }) }),
|
|
65
|
-
/* @__PURE__ */ jsx(Tooltip.Content, { className: styles$2["info-content"], children: moreInfo })
|
|
66
|
-
]
|
|
67
|
-
}
|
|
68
|
-
);
|
|
69
|
-
};
|
|
70
|
-
const Label = forwardRef((props, ref) => {
|
|
71
|
-
const { children, className, moreInfo, required, openMoreInfo, ...rest } = props;
|
|
72
|
-
const LabelClassNames = cx([styles$2["label"]], className);
|
|
73
|
-
return /* @__PURE__ */ jsxs("label", { className: LabelClassNames, "data-anv": "label", ref, ...rest, children: [
|
|
74
|
-
/* @__PURE__ */ jsxs("div", { className: styles$2["top-container"], "aria-atomic": "true", children: [
|
|
75
|
-
/* @__PURE__ */ jsxs("span", { className: styles$2["label-text"], children: [
|
|
76
|
-
children,
|
|
77
|
-
required ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
78
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: styles$2["required"], children: "*" }),
|
|
79
|
-
/* @__PURE__ */ jsx(SrOnly, { children: "Required" })
|
|
80
|
-
] }) : null
|
|
81
|
-
] }),
|
|
82
|
-
moreInfo ? /* @__PURE__ */ jsx(LabelMoreInfoIcon, { moreInfo, openMoreInfo }) : null
|
|
83
|
-
] }),
|
|
84
|
-
moreInfo ? /* @__PURE__ */ jsx(SrOnly, { children: moreInfo }) : null
|
|
85
|
-
] });
|
|
86
|
-
});
|
|
87
|
-
Label.displayName = "Label";
|
|
88
|
-
|
|
89
|
-
const ComboboxContext = createContext(null);
|
|
90
|
-
const useCombobox$1 = function() {
|
|
91
|
-
const context = useContext(
|
|
92
|
-
ComboboxContext
|
|
93
|
-
);
|
|
94
|
-
if (context == null) {
|
|
95
|
-
throw new Error("useCombobox must be wrapped in <Combobox />");
|
|
96
|
-
}
|
|
97
|
-
return context;
|
|
98
|
-
};
|
|
2
|
+
import { g as getDefaultExportFromCjs } from './index-tZvMCc77.js';
|
|
3
|
+
import React__default, { useRef, useEffect, useMemo, useCallback, useLayoutEffect, useReducer, cloneElement, Component } from 'react';
|
|
99
4
|
|
|
100
5
|
function _setPrototypeOf(t, e) {
|
|
101
6
|
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
|
@@ -6354,4184 +6259,5 @@ function getKeyAttributes(key) {
|
|
|
6354
6259
|
};
|
|
6355
6260
|
}
|
|
6356
6261
|
|
|
6357
|
-
|
|
6358
|
-
|
|
6359
|
-
return item != null ? String(item) : "";
|
|
6360
|
-
};
|
|
6361
|
-
const defaultItemToKey = function(item) {
|
|
6362
|
-
return item;
|
|
6363
|
-
};
|
|
6364
|
-
const ComboboxLegacyContext = createContext(null);
|
|
6365
|
-
const useDownshiftEnvironment = () => {
|
|
6366
|
-
const wrapperDivRef = useRef(null);
|
|
6367
|
-
const shadowRoot = wrapperDivRef.current ? wrapperDivRef.current.getRootNode() : null;
|
|
6368
|
-
const shadowDocument = wrapperDivRef.current && shadowRoot ? shadowRoot.ownerDocument : null;
|
|
6369
|
-
const environment = shadowDocument ? {
|
|
6370
|
-
document: shadowDocument,
|
|
6371
|
-
addEventListener: shadowDocument.addEventListener.bind(shadowRoot),
|
|
6372
|
-
removeEventListener: shadowDocument.removeEventListener.bind(shadowRoot),
|
|
6373
|
-
Node
|
|
6374
|
-
} : void 0;
|
|
6375
|
-
return { ref: wrapperDivRef, environment };
|
|
6376
|
-
};
|
|
6377
|
-
const useComboboxLegacy = function() {
|
|
6378
|
-
const context = useContext(
|
|
6379
|
-
ComboboxLegacyContext
|
|
6380
|
-
);
|
|
6381
|
-
if (context == null) {
|
|
6382
|
-
throw new Error("useComboboxLegacy must be wrapped in <ComboboxLegacy />");
|
|
6383
|
-
}
|
|
6384
|
-
return context;
|
|
6385
|
-
};
|
|
6386
|
-
|
|
6387
|
-
const item$1 = "_item_rxmcz_5";
|
|
6388
|
-
const input = "_input_rxmcz_18";
|
|
6389
|
-
const prefix = "_prefix_rxmcz_46";
|
|
6390
|
-
const suffix = "_suffix_rxmcz_47";
|
|
6391
|
-
const combobox$1 = "_combobox_rxmcz_62";
|
|
6392
|
-
const select = "_select_rxmcz_71";
|
|
6393
|
-
const chip = "_chip_rxmcz_167";
|
|
6394
|
-
const listview$1 = "_listview_rxmcz_208";
|
|
6395
|
-
const empty$1 = "_empty_rxmcz_216";
|
|
6396
|
-
const Icon$1 = "_Icon_rxmcz_247";
|
|
6397
|
-
const small = "_small_rxmcz_252";
|
|
6398
|
-
const large = "_large_rxmcz_255";
|
|
6399
|
-
const error = "_error_rxmcz_273";
|
|
6400
|
-
const styles$1 = {
|
|
6401
|
-
"buttons-wrapper": "_buttons-wrapper_rxmcz_3",
|
|
6402
|
-
"search-field": "_search-field_rxmcz_4",
|
|
6403
|
-
item: item$1,
|
|
6404
|
-
input: input,
|
|
6405
|
-
"input-wrapper": "_input-wrapper_rxmcz_19",
|
|
6406
|
-
"toggle-button-wrapper": "_toggle-button-wrapper_rxmcz_32",
|
|
6407
|
-
"close-button-wrapper": "_close-button-wrapper_rxmcz_33",
|
|
6408
|
-
prefix: prefix,
|
|
6409
|
-
suffix: suffix,
|
|
6410
|
-
combobox: combobox$1,
|
|
6411
|
-
select: select,
|
|
6412
|
-
"popover-content": "_popover-content_rxmcz_74",
|
|
6413
|
-
"no-clear-button": "_no-clear-button_rxmcz_93",
|
|
6414
|
-
"input-flex": "_input-flex_rxmcz_96",
|
|
6415
|
-
"fake-placeholder": "_fake-placeholder_rxmcz_124",
|
|
6416
|
-
"close-button": "_close-button_rxmcz_33",
|
|
6417
|
-
"toggle-button": "_toggle-button_rxmcz_32",
|
|
6418
|
-
"rows-wrapper": "_rows-wrapper_rxmcz_157",
|
|
6419
|
-
"chip-wrapper": "_chip-wrapper_rxmcz_167",
|
|
6420
|
-
chip: chip,
|
|
6421
|
-
listview: listview$1,
|
|
6422
|
-
empty: empty$1,
|
|
6423
|
-
Icon: Icon$1,
|
|
6424
|
-
small: small,
|
|
6425
|
-
large: large,
|
|
6426
|
-
error: error,
|
|
6427
|
-
"listview-option": "_listview-option_rxmcz_304"
|
|
6428
|
-
};
|
|
6429
|
-
|
|
6430
|
-
const ComboboxLegacySingle = function(props) {
|
|
6431
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
6432
|
-
const {
|
|
6433
|
-
className,
|
|
6434
|
-
style,
|
|
6435
|
-
children,
|
|
6436
|
-
open,
|
|
6437
|
-
disabled,
|
|
6438
|
-
readOnly,
|
|
6439
|
-
items: itemsProp,
|
|
6440
|
-
itemToString: itemToStringProp,
|
|
6441
|
-
itemToKey: itemToKeyProp,
|
|
6442
|
-
onChange,
|
|
6443
|
-
disableCloseOnClickOutside = false,
|
|
6444
|
-
disableMatchReferenceWidth = false,
|
|
6445
|
-
disableCloseOnSelectItem = false,
|
|
6446
|
-
filterOptions,
|
|
6447
|
-
loading = false,
|
|
6448
|
-
root,
|
|
6449
|
-
onInputValueChange,
|
|
6450
|
-
environment: environmentProp,
|
|
6451
|
-
...rest
|
|
6452
|
-
} = componentProps;
|
|
6453
|
-
const ComboboxLegacyClassNames = cx(styles$1["combobox"], className);
|
|
6454
|
-
const [items, setItems] = useState(itemsProp);
|
|
6455
|
-
const [hasAddNew, setHasAddNew] = useState(false);
|
|
6456
|
-
const [onSelectItemAddNew, setOnSelectItemAddNew] = useState(void 0);
|
|
6457
|
-
const [hasExactMatch, setHasExactMatch] = useState(false);
|
|
6458
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
6459
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
6460
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
6461
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
6462
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
6463
|
-
const referenceRef = useRef(null);
|
|
6464
|
-
const contentRef = useRef(null);
|
|
6465
|
-
const handleOutsidePress = (e) => {
|
|
6466
|
-
const clickedInsideReference = referenceRef.current && e.target != null && referenceRef.current.contains(e.target);
|
|
6467
|
-
if (!clickedInsideReference) {
|
|
6468
|
-
closeMenu();
|
|
6469
|
-
return true;
|
|
6470
|
-
} else {
|
|
6471
|
-
return false;
|
|
6472
|
-
}
|
|
6473
|
-
};
|
|
6474
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();
|
|
6475
|
-
const showAddNew = hasAddNew && !hasExactMatch;
|
|
6476
|
-
const combinedItems = useMemo(
|
|
6477
|
-
() => showAddNew ? [...items, ADD_NEW] : items,
|
|
6478
|
-
[items, showAddNew]
|
|
6479
|
-
);
|
|
6480
|
-
const itemToString = itemToStringProp ?? defaultItemToString;
|
|
6481
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey;
|
|
6482
|
-
const {
|
|
6483
|
-
isOpen,
|
|
6484
|
-
getLabelProps,
|
|
6485
|
-
getInputProps,
|
|
6486
|
-
getToggleButtonProps,
|
|
6487
|
-
getMenuProps,
|
|
6488
|
-
getItemProps,
|
|
6489
|
-
highlightedIndex,
|
|
6490
|
-
selectedItem,
|
|
6491
|
-
selectItem,
|
|
6492
|
-
setInputValue,
|
|
6493
|
-
inputValue,
|
|
6494
|
-
closeMenu
|
|
6495
|
-
} = useCombobox({
|
|
6496
|
-
...rest,
|
|
6497
|
-
items: combinedItems,
|
|
6498
|
-
itemToString,
|
|
6499
|
-
itemToKey,
|
|
6500
|
-
isOpen: open,
|
|
6501
|
-
initialIsOpen: open,
|
|
6502
|
-
environment: environmentProp ?? environment,
|
|
6503
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
6504
|
-
stateReducer(state, { type, changes }) {
|
|
6505
|
-
switch (type) {
|
|
6506
|
-
// keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress
|
|
6507
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
6508
|
-
return {
|
|
6509
|
-
...changes,
|
|
6510
|
-
isOpen: open != null ? open : true,
|
|
6511
|
-
highlightedIndex: state.highlightedIndex
|
|
6512
|
-
};
|
|
6513
|
-
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
6514
|
-
case useCombobox.stateChangeTypes.ItemClick:
|
|
6515
|
-
if (changes.selectedItem === ADD_NEW) {
|
|
6516
|
-
const stateInputValue = state.inputValue;
|
|
6517
|
-
setTimeout(() => {
|
|
6518
|
-
onSelectItemAddNew?.(stateInputValue);
|
|
6519
|
-
}, 0);
|
|
6520
|
-
return {
|
|
6521
|
-
...changes,
|
|
6522
|
-
selectedItem: state.selectedItem,
|
|
6523
|
-
inputValue: ""
|
|
6524
|
-
};
|
|
6525
|
-
} else {
|
|
6526
|
-
return {
|
|
6527
|
-
...changes,
|
|
6528
|
-
isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
6529
|
-
highlightedIndex: disableCloseOnSelectItem ? 0 : changes.highlightedIndex
|
|
6530
|
-
};
|
|
6531
|
-
}
|
|
6532
|
-
// prevent this from closing the popover by default
|
|
6533
|
-
case useCombobox.stateChangeTypes.InputClick:
|
|
6534
|
-
return { ...changes, isOpen: open != null ? open : true };
|
|
6535
|
-
default:
|
|
6536
|
-
return changes;
|
|
6537
|
-
}
|
|
6538
|
-
},
|
|
6539
|
-
onInputValueChange: onInputValueChange ?? (({ inputValue: inputValue2, type, selectedItem: selectedItem2 }) => {
|
|
6540
|
-
const inputValueMatchesSelectedItem = selectedItem2 != null && inputValue2 === itemToString(selectedItem2);
|
|
6541
|
-
const inputValueIsEmpty = inputValue2 == null || inputValue2 === "";
|
|
6542
|
-
if (type === useCombobox.stateChangeTypes.InputKeyDownEnter || type === useCombobox.stateChangeTypes.ItemClick) {
|
|
6543
|
-
setItems(itemsProp);
|
|
6544
|
-
setHasExactMatch(true);
|
|
6545
|
-
} else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {
|
|
6546
|
-
setItems(matchSorter(itemsProp, inputValue2, filterOptions));
|
|
6547
|
-
setHasExactMatch(
|
|
6548
|
-
matchSorter(itemsProp, inputValue2, {
|
|
6549
|
-
...filterOptions,
|
|
6550
|
-
threshold: matchSorter.rankings.EQUAL
|
|
6551
|
-
}).length > 0
|
|
6552
|
-
);
|
|
6553
|
-
} else {
|
|
6554
|
-
setItems(itemsProp);
|
|
6555
|
-
setHasExactMatch(true);
|
|
6556
|
-
}
|
|
6557
|
-
}),
|
|
6558
|
-
onSelectedItemChange(changes) {
|
|
6559
|
-
const { selectedItem: selectedItem2 } = changes;
|
|
6560
|
-
if (onChange != null)
|
|
6561
|
-
onChange(selectedItem2 != null ? selectedItem2 : null);
|
|
6562
|
-
},
|
|
6563
|
-
onIsOpenChange({ isOpen: isOpen2, inputValue: inputValue2, selectedItem: selectedItem2 }) {
|
|
6564
|
-
if (isOpen2 === false) {
|
|
6565
|
-
setItems(itemsProp);
|
|
6566
|
-
if (inputValue2 === "") {
|
|
6567
|
-
selectItem(null);
|
|
6568
|
-
} else {
|
|
6569
|
-
setInputValue(selectedItem2 != null ? itemToString(selectedItem2) : "");
|
|
6570
|
-
}
|
|
6571
|
-
}
|
|
6572
|
-
},
|
|
6573
|
-
isItemDisabled(item) {
|
|
6574
|
-
if (isDisabled || isReadOnly) {
|
|
6575
|
-
return !!isDisabled || !!isReadOnly;
|
|
6576
|
-
}
|
|
6577
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
6578
|
-
return true;
|
|
6579
|
-
}
|
|
6580
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
6581
|
-
return true;
|
|
6582
|
-
}
|
|
6583
|
-
if (disabledItems.includes(item)) {
|
|
6584
|
-
return true;
|
|
6585
|
-
}
|
|
6586
|
-
return false;
|
|
6587
|
-
}
|
|
6588
|
-
});
|
|
6589
|
-
const firstRenderRef = useRef(true);
|
|
6590
|
-
useEffect(() => {
|
|
6591
|
-
if (firstRenderRef.current === true) {
|
|
6592
|
-
firstRenderRef.current = false;
|
|
6593
|
-
}
|
|
6594
|
-
}, []);
|
|
6595
|
-
useEffect(() => {
|
|
6596
|
-
setIsDisabled(disabled);
|
|
6597
|
-
}, [disabled]);
|
|
6598
|
-
useEffect(() => {
|
|
6599
|
-
setIsReadOnly(readOnly);
|
|
6600
|
-
}, [readOnly]);
|
|
6601
|
-
useEffect(() => {
|
|
6602
|
-
if (firstRenderRef.current) return;
|
|
6603
|
-
const inputValueMatchesSelectedItem = selectedItem != null && inputValue === itemToString(selectedItem);
|
|
6604
|
-
const inputValueIsEmpty = inputValue == null || inputValue === "";
|
|
6605
|
-
if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {
|
|
6606
|
-
setItems(matchSorter(itemsProp, inputValue, filterOptions));
|
|
6607
|
-
setHasExactMatch(
|
|
6608
|
-
matchSorter(itemsProp, inputValue, {
|
|
6609
|
-
...filterOptions,
|
|
6610
|
-
threshold: matchSorter.rankings.EQUAL
|
|
6611
|
-
}).length > 0
|
|
6612
|
-
);
|
|
6613
|
-
} else {
|
|
6614
|
-
setItems(itemsProp);
|
|
6615
|
-
setHasExactMatch(true);
|
|
6616
|
-
}
|
|
6617
|
-
}, [itemsProp]);
|
|
6618
|
-
return /* @__PURE__ */ jsx(
|
|
6619
|
-
ComboboxLegacyContext.Provider,
|
|
6620
|
-
{
|
|
6621
|
-
value: {
|
|
6622
|
-
multiple: false,
|
|
6623
|
-
select: false,
|
|
6624
|
-
items,
|
|
6625
|
-
itemToString,
|
|
6626
|
-
itemToKey,
|
|
6627
|
-
isOpen,
|
|
6628
|
-
getLabelProps,
|
|
6629
|
-
getInputProps,
|
|
6630
|
-
getToggleButtonProps,
|
|
6631
|
-
getMenuProps,
|
|
6632
|
-
getItemProps,
|
|
6633
|
-
highlightedIndex,
|
|
6634
|
-
selectedItem,
|
|
6635
|
-
selectedItems: [],
|
|
6636
|
-
disabledItems,
|
|
6637
|
-
setDisabledItems,
|
|
6638
|
-
getSelectedItemProps: void 0,
|
|
6639
|
-
getDropdownProps: void 0,
|
|
6640
|
-
selectItem,
|
|
6641
|
-
inputValue,
|
|
6642
|
-
isDisabled,
|
|
6643
|
-
isReadOnly,
|
|
6644
|
-
setIsReadOnly,
|
|
6645
|
-
setIsDisabled,
|
|
6646
|
-
hasDisabledPopover,
|
|
6647
|
-
setHasDisabledPopover,
|
|
6648
|
-
hasEmpty,
|
|
6649
|
-
setHasEmpty,
|
|
6650
|
-
hasAddNew,
|
|
6651
|
-
setHasAddNew,
|
|
6652
|
-
onSelectItemAddNew,
|
|
6653
|
-
setOnSelectItemAddNew,
|
|
6654
|
-
hasExactMatch,
|
|
6655
|
-
setHasExactMatch,
|
|
6656
|
-
loading,
|
|
6657
|
-
referenceRef,
|
|
6658
|
-
contentRef,
|
|
6659
|
-
closeMenu
|
|
6660
|
-
},
|
|
6661
|
-
children: /* @__PURE__ */ jsx(
|
|
6662
|
-
"div",
|
|
6663
|
-
{
|
|
6664
|
-
className: ComboboxLegacyClassNames,
|
|
6665
|
-
"data-anv": "combobox",
|
|
6666
|
-
style: { ...style, ...layoutStyles },
|
|
6667
|
-
ref: wrapperDivRef,
|
|
6668
|
-
children: /* @__PURE__ */ jsx(
|
|
6669
|
-
Popover,
|
|
6670
|
-
{
|
|
6671
|
-
root,
|
|
6672
|
-
open: isOpen,
|
|
6673
|
-
noPadding: true,
|
|
6674
|
-
disableCaret: true,
|
|
6675
|
-
fitScreen: true,
|
|
6676
|
-
disableFlipFallback: true,
|
|
6677
|
-
placement: "bottom-start",
|
|
6678
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
6679
|
-
disableCloseOnClickOutside,
|
|
6680
|
-
onOutsidePress: handleOutsidePress,
|
|
6681
|
-
children
|
|
6682
|
-
}
|
|
6683
|
-
)
|
|
6684
|
-
}
|
|
6685
|
-
)
|
|
6686
|
-
}
|
|
6687
|
-
);
|
|
6688
|
-
};
|
|
6689
|
-
const ComboboxLegacyMultiple = function(props) {
|
|
6690
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
6691
|
-
const {
|
|
6692
|
-
className,
|
|
6693
|
-
style,
|
|
6694
|
-
children,
|
|
6695
|
-
open,
|
|
6696
|
-
items: itemsProp,
|
|
6697
|
-
itemToString: itemToStringProp,
|
|
6698
|
-
itemToKey: itemToKeyProp,
|
|
6699
|
-
onChange,
|
|
6700
|
-
onSelectedItemsChange,
|
|
6701
|
-
disableCloseOnClickOutside = false,
|
|
6702
|
-
disableMatchReferenceWidth = false,
|
|
6703
|
-
disableCloseOnSelectItem = false,
|
|
6704
|
-
disableClearInputValueOnSelectItem = false,
|
|
6705
|
-
filterOptions,
|
|
6706
|
-
loading = false,
|
|
6707
|
-
root,
|
|
6708
|
-
disabled,
|
|
6709
|
-
readOnly,
|
|
6710
|
-
stateReducer: _,
|
|
6711
|
-
onInputValueChange,
|
|
6712
|
-
initialSelectedItems,
|
|
6713
|
-
initialActiveIndex,
|
|
6714
|
-
defaultSelectedItems,
|
|
6715
|
-
defaultActiveIndex,
|
|
6716
|
-
activeIndex: activeIndexProp,
|
|
6717
|
-
selectedItems: selectedItemsProp,
|
|
6718
|
-
environment: environmentProp,
|
|
6719
|
-
...rest
|
|
6720
|
-
} = componentProps;
|
|
6721
|
-
const ComboboxLegacyClassNames = cx(styles$1["combobox"], className);
|
|
6722
|
-
const [items, setItems] = useState(itemsProp);
|
|
6723
|
-
const [hasAddNew, setHasAddNew] = useState(false);
|
|
6724
|
-
const [onSelectItemAddNew, setOnSelectItemAddNew] = useState(void 0);
|
|
6725
|
-
const [hasExactMatch, setHasExactMatch] = useState(false);
|
|
6726
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
6727
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
6728
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
6729
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
6730
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
6731
|
-
let storedSetInputValue = void 0;
|
|
6732
|
-
const referenceRef = useRef(null);
|
|
6733
|
-
const contentRef = useRef(null);
|
|
6734
|
-
const handleOutsidePress = (e) => {
|
|
6735
|
-
const clickedInsideReference = referenceRef.current && e.target != null && referenceRef.current.contains(e.target);
|
|
6736
|
-
if (!clickedInsideReference) {
|
|
6737
|
-
closeMenu();
|
|
6738
|
-
return true;
|
|
6739
|
-
} else {
|
|
6740
|
-
return false;
|
|
6741
|
-
}
|
|
6742
|
-
};
|
|
6743
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();
|
|
6744
|
-
const showAddNew = hasAddNew && !hasExactMatch;
|
|
6745
|
-
const combinedItems = useMemo(
|
|
6746
|
-
() => showAddNew ? [...items, ADD_NEW] : items,
|
|
6747
|
-
[items, showAddNew]
|
|
6748
|
-
);
|
|
6749
|
-
const itemToString = itemToStringProp ?? defaultItemToString;
|
|
6750
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey;
|
|
6751
|
-
const {
|
|
6752
|
-
getSelectedItemProps,
|
|
6753
|
-
getDropdownProps,
|
|
6754
|
-
reset,
|
|
6755
|
-
selectedItems,
|
|
6756
|
-
addSelectedItem,
|
|
6757
|
-
removeSelectedItem,
|
|
6758
|
-
setSelectedItems
|
|
6759
|
-
} = useMultipleSelection({
|
|
6760
|
-
itemToKey,
|
|
6761
|
-
initialSelectedItems,
|
|
6762
|
-
initialActiveIndex,
|
|
6763
|
-
defaultSelectedItems,
|
|
6764
|
-
defaultActiveIndex,
|
|
6765
|
-
activeIndex: activeIndexProp,
|
|
6766
|
-
selectedItems: selectedItemsProp,
|
|
6767
|
-
environment: environmentProp ?? environment,
|
|
6768
|
-
stateReducer(state, { type, changes }) {
|
|
6769
|
-
switch (type) {
|
|
6770
|
-
// the Chip itself will handle "Backspace" and "Delete"
|
|
6771
|
-
// just return previous state
|
|
6772
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace:
|
|
6773
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:
|
|
6774
|
-
return state;
|
|
6775
|
-
case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
|
|
6776
|
-
return { ...changes, activeIndex: -1 };
|
|
6777
|
-
case useMultipleSelection.stateChangeTypes.FunctionReset:
|
|
6778
|
-
return { ...changes, selectedItems: [] };
|
|
6779
|
-
default:
|
|
6780
|
-
return changes;
|
|
6781
|
-
}
|
|
6782
|
-
},
|
|
6783
|
-
onStateChange({ type }) {
|
|
6784
|
-
switch (type) {
|
|
6785
|
-
case useMultipleSelection.stateChangeTypes.FunctionReset:
|
|
6786
|
-
storedSetInputValue?.("");
|
|
6787
|
-
break;
|
|
6788
|
-
}
|
|
6789
|
-
},
|
|
6790
|
-
onSelectedItemsChange(changes) {
|
|
6791
|
-
const { selectedItems: selectedItems2 } = changes;
|
|
6792
|
-
if (onChange != null) onChange(selectedItems2);
|
|
6793
|
-
if (onSelectedItemsChange != null) onSelectedItemsChange(changes);
|
|
6794
|
-
}
|
|
6795
|
-
});
|
|
6796
|
-
const {
|
|
6797
|
-
isOpen,
|
|
6798
|
-
getLabelProps,
|
|
6799
|
-
getInputProps,
|
|
6800
|
-
getToggleButtonProps,
|
|
6801
|
-
getMenuProps,
|
|
6802
|
-
getItemProps,
|
|
6803
|
-
highlightedIndex,
|
|
6804
|
-
selectedItem,
|
|
6805
|
-
selectItem,
|
|
6806
|
-
setInputValue,
|
|
6807
|
-
inputValue,
|
|
6808
|
-
closeMenu
|
|
6809
|
-
} = useCombobox({
|
|
6810
|
-
...rest,
|
|
6811
|
-
items: combinedItems,
|
|
6812
|
-
itemToString,
|
|
6813
|
-
itemToKey,
|
|
6814
|
-
selectedItem: null,
|
|
6815
|
-
isOpen: open,
|
|
6816
|
-
initialIsOpen: open,
|
|
6817
|
-
environment: environmentProp ?? environment,
|
|
6818
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
6819
|
-
stateReducer(state, { type, changes }) {
|
|
6820
|
-
switch (type) {
|
|
6821
|
-
// keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress
|
|
6822
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
6823
|
-
return {
|
|
6824
|
-
...changes,
|
|
6825
|
-
inputValue: state.inputValue,
|
|
6826
|
-
selectedItem: null,
|
|
6827
|
-
isOpen: open != null ? open : true,
|
|
6828
|
-
highlightedIndex: state.highlightedIndex
|
|
6829
|
-
};
|
|
6830
|
-
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
6831
|
-
case useCombobox.stateChangeTypes.ItemClick:
|
|
6832
|
-
if (changes.selectedItem === ADD_NEW) {
|
|
6833
|
-
const stateInputValue = state.inputValue;
|
|
6834
|
-
setTimeout(() => {
|
|
6835
|
-
onSelectItemAddNew?.(stateInputValue);
|
|
6836
|
-
}, 0);
|
|
6837
|
-
return {
|
|
6838
|
-
...changes,
|
|
6839
|
-
selectedItem: state.selectedItem,
|
|
6840
|
-
inputValue: ""
|
|
6841
|
-
};
|
|
6842
|
-
} else {
|
|
6843
|
-
return {
|
|
6844
|
-
...changes,
|
|
6845
|
-
isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
6846
|
-
highlightedIndex: disableCloseOnSelectItem ? disableClearInputValueOnSelectItem || !state.inputValue ? state.highlightedIndex : 0 : changes.highlightedIndex,
|
|
6847
|
-
inputValue: disableClearInputValueOnSelectItem ? state.inputValue : ""
|
|
6848
|
-
};
|
|
6849
|
-
}
|
|
6850
|
-
// prevent this from closing the popover by default
|
|
6851
|
-
case useCombobox.stateChangeTypes.InputClick:
|
|
6852
|
-
return { ...changes, isOpen: open != null ? open : true };
|
|
6853
|
-
// prevent this from clearing the input value by default
|
|
6854
|
-
case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
6855
|
-
return { ...changes, inputValue: state.inputValue };
|
|
6856
|
-
default:
|
|
6857
|
-
return changes;
|
|
6858
|
-
}
|
|
6859
|
-
},
|
|
6860
|
-
onStateChange({ type, selectedItem: newSelectedItem }) {
|
|
6861
|
-
switch (type) {
|
|
6862
|
-
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
6863
|
-
case useCombobox.stateChangeTypes.ItemClick:
|
|
6864
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
6865
|
-
if (newSelectedItem != null) {
|
|
6866
|
-
const itemAlreadySelected = selectedItems.some(
|
|
6867
|
-
(item) => itemToKey(item) === itemToKey(newSelectedItem)
|
|
6868
|
-
);
|
|
6869
|
-
if (itemAlreadySelected) {
|
|
6870
|
-
removeSelectedItem(newSelectedItem);
|
|
6871
|
-
} else {
|
|
6872
|
-
addSelectedItem(newSelectedItem);
|
|
6873
|
-
}
|
|
6874
|
-
}
|
|
6875
|
-
break;
|
|
6876
|
-
}
|
|
6877
|
-
},
|
|
6878
|
-
onInputValueChange: onInputValueChange ?? (({ inputValue: inputValue2, ...changes }) => {
|
|
6879
|
-
const { type, selectedItem: selectedItem2 } = changes;
|
|
6880
|
-
const inputValueMatchesSelectedItem = selectedItem2 != null && inputValue2 === itemToString(selectedItem2);
|
|
6881
|
-
const inputValueIsEmpty = inputValue2 == null || inputValue2 === "";
|
|
6882
|
-
if (type === useCombobox.stateChangeTypes.InputKeyDownEnter || type === useCombobox.stateChangeTypes.ItemClick) {
|
|
6883
|
-
setItems(itemsProp);
|
|
6884
|
-
setHasExactMatch(true);
|
|
6885
|
-
} else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty) {
|
|
6886
|
-
setItems(matchSorter(itemsProp, inputValue2, filterOptions));
|
|
6887
|
-
setHasExactMatch(
|
|
6888
|
-
matchSorter(itemsProp, inputValue2, {
|
|
6889
|
-
...filterOptions,
|
|
6890
|
-
threshold: matchSorter.rankings.EQUAL
|
|
6891
|
-
}).length > 0
|
|
6892
|
-
);
|
|
6893
|
-
} else {
|
|
6894
|
-
setItems(itemsProp);
|
|
6895
|
-
setHasExactMatch(true);
|
|
6896
|
-
}
|
|
6897
|
-
}),
|
|
6898
|
-
onIsOpenChange({ isOpen: isOpen2 }) {
|
|
6899
|
-
if (isOpen2 === false) {
|
|
6900
|
-
setInputValue("");
|
|
6901
|
-
setItems(itemsProp);
|
|
6902
|
-
}
|
|
6903
|
-
},
|
|
6904
|
-
isItemDisabled(item) {
|
|
6905
|
-
if (isDisabled || isReadOnly) {
|
|
6906
|
-
return !!isDisabled || !!isReadOnly;
|
|
6907
|
-
}
|
|
6908
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
6909
|
-
return true;
|
|
6910
|
-
}
|
|
6911
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
6912
|
-
return true;
|
|
6913
|
-
}
|
|
6914
|
-
if (disabledItems.includes(item)) {
|
|
6915
|
-
return true;
|
|
6916
|
-
}
|
|
6917
|
-
return false;
|
|
6918
|
-
}
|
|
6919
|
-
});
|
|
6920
|
-
storedSetInputValue = setInputValue;
|
|
6921
|
-
const firstRenderRef = useRef(true);
|
|
6922
|
-
useEffect(() => {
|
|
6923
|
-
if (firstRenderRef.current === true) {
|
|
6924
|
-
firstRenderRef.current = false;
|
|
6925
|
-
}
|
|
6926
|
-
}, []);
|
|
6927
|
-
useEffect(() => {
|
|
6928
|
-
setIsDisabled(disabled);
|
|
6929
|
-
}, [disabled]);
|
|
6930
|
-
useEffect(() => {
|
|
6931
|
-
setIsReadOnly(readOnly);
|
|
6932
|
-
}, [readOnly]);
|
|
6933
|
-
useEffect(() => {
|
|
6934
|
-
if (firstRenderRef.current) return;
|
|
6935
|
-
const inputValueIsEmpty = inputValue == null || inputValue === "";
|
|
6936
|
-
if (!inputValueIsEmpty) {
|
|
6937
|
-
setItems(matchSorter(itemsProp, inputValue, filterOptions));
|
|
6938
|
-
setHasExactMatch(
|
|
6939
|
-
matchSorter(itemsProp, inputValue, {
|
|
6940
|
-
...filterOptions,
|
|
6941
|
-
threshold: matchSorter.rankings.EQUAL
|
|
6942
|
-
}).length > 0
|
|
6943
|
-
);
|
|
6944
|
-
} else {
|
|
6945
|
-
setItems(itemsProp);
|
|
6946
|
-
setHasExactMatch(true);
|
|
6947
|
-
}
|
|
6948
|
-
}, [itemsProp]);
|
|
6949
|
-
return /* @__PURE__ */ jsx(
|
|
6950
|
-
ComboboxLegacyContext.Provider,
|
|
6951
|
-
{
|
|
6952
|
-
value: {
|
|
6953
|
-
multiple: true,
|
|
6954
|
-
select: false,
|
|
6955
|
-
items,
|
|
6956
|
-
itemToString,
|
|
6957
|
-
itemToKey,
|
|
6958
|
-
isOpen,
|
|
6959
|
-
getLabelProps,
|
|
6960
|
-
getInputProps,
|
|
6961
|
-
getToggleButtonProps,
|
|
6962
|
-
getMenuProps,
|
|
6963
|
-
getItemProps,
|
|
6964
|
-
highlightedIndex,
|
|
6965
|
-
selectedItem,
|
|
6966
|
-
selectedItems,
|
|
6967
|
-
disabledItems,
|
|
6968
|
-
setDisabledItems,
|
|
6969
|
-
getSelectedItemProps,
|
|
6970
|
-
getDropdownProps,
|
|
6971
|
-
reset,
|
|
6972
|
-
addSelectedItem,
|
|
6973
|
-
removeSelectedItem,
|
|
6974
|
-
setSelectedItems,
|
|
6975
|
-
selectItem,
|
|
6976
|
-
inputValue,
|
|
6977
|
-
isDisabled,
|
|
6978
|
-
isReadOnly,
|
|
6979
|
-
setIsReadOnly,
|
|
6980
|
-
setIsDisabled,
|
|
6981
|
-
hasDisabledPopover,
|
|
6982
|
-
setHasDisabledPopover,
|
|
6983
|
-
hasEmpty,
|
|
6984
|
-
setHasEmpty,
|
|
6985
|
-
hasAddNew,
|
|
6986
|
-
setHasAddNew,
|
|
6987
|
-
onSelectItemAddNew,
|
|
6988
|
-
setOnSelectItemAddNew,
|
|
6989
|
-
hasExactMatch,
|
|
6990
|
-
setHasExactMatch,
|
|
6991
|
-
loading,
|
|
6992
|
-
referenceRef,
|
|
6993
|
-
contentRef,
|
|
6994
|
-
closeMenu
|
|
6995
|
-
},
|
|
6996
|
-
children: /* @__PURE__ */ jsx(
|
|
6997
|
-
"div",
|
|
6998
|
-
{
|
|
6999
|
-
className: ComboboxLegacyClassNames,
|
|
7000
|
-
"data-anv": "combobox",
|
|
7001
|
-
style: { ...style, ...layoutStyles },
|
|
7002
|
-
ref: wrapperDivRef,
|
|
7003
|
-
children: /* @__PURE__ */ jsx(
|
|
7004
|
-
Popover,
|
|
7005
|
-
{
|
|
7006
|
-
root,
|
|
7007
|
-
open: !isDisabled && isOpen,
|
|
7008
|
-
noPadding: true,
|
|
7009
|
-
disableCaret: true,
|
|
7010
|
-
fitScreen: true,
|
|
7011
|
-
disableFlipFallback: true,
|
|
7012
|
-
placement: "bottom-start",
|
|
7013
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
7014
|
-
disableCloseOnClickOutside,
|
|
7015
|
-
onOutsidePress: handleOutsidePress,
|
|
7016
|
-
children
|
|
7017
|
-
}
|
|
7018
|
-
)
|
|
7019
|
-
}
|
|
7020
|
-
)
|
|
7021
|
-
}
|
|
7022
|
-
);
|
|
7023
|
-
};
|
|
7024
|
-
const SelectLegacySingle = function(props) {
|
|
7025
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
7026
|
-
const {
|
|
7027
|
-
className,
|
|
7028
|
-
style,
|
|
7029
|
-
children,
|
|
7030
|
-
open,
|
|
7031
|
-
disabled,
|
|
7032
|
-
readOnly,
|
|
7033
|
-
items,
|
|
7034
|
-
itemToString: itemToStringProp,
|
|
7035
|
-
itemToKey: itemToKeyProp,
|
|
7036
|
-
onChange,
|
|
7037
|
-
disableClearSelection = false,
|
|
7038
|
-
disableCloseOnClickOutside = false,
|
|
7039
|
-
disableMatchReferenceWidth = false,
|
|
7040
|
-
disableCloseOnSelectItem = false,
|
|
7041
|
-
loading = false,
|
|
7042
|
-
root,
|
|
7043
|
-
environment: environmentProp,
|
|
7044
|
-
...rest
|
|
7045
|
-
} = componentProps;
|
|
7046
|
-
const ComboboxLegacyClassNames = cx(styles$1["combobox"], className);
|
|
7047
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
7048
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
7049
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
7050
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
7051
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
7052
|
-
const referenceRef = useRef(null);
|
|
7053
|
-
const contentRef = useRef(null);
|
|
7054
|
-
const handleOutsidePress = (e) => {
|
|
7055
|
-
const clickedInsideReference = referenceRef.current && e.target != null && referenceRef.current.contains(e.target);
|
|
7056
|
-
if (!clickedInsideReference) {
|
|
7057
|
-
closeMenu();
|
|
7058
|
-
return true;
|
|
7059
|
-
} else {
|
|
7060
|
-
return false;
|
|
7061
|
-
}
|
|
7062
|
-
};
|
|
7063
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();
|
|
7064
|
-
const itemToString = itemToStringProp ?? defaultItemToString;
|
|
7065
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey;
|
|
7066
|
-
const {
|
|
7067
|
-
isOpen,
|
|
7068
|
-
getLabelProps,
|
|
7069
|
-
getToggleButtonProps,
|
|
7070
|
-
getMenuProps,
|
|
7071
|
-
getItemProps,
|
|
7072
|
-
highlightedIndex,
|
|
7073
|
-
selectedItem,
|
|
7074
|
-
selectItem,
|
|
7075
|
-
inputValue,
|
|
7076
|
-
closeMenu
|
|
7077
|
-
} = useSelect({
|
|
7078
|
-
...rest,
|
|
7079
|
-
items,
|
|
7080
|
-
itemToString,
|
|
7081
|
-
itemToKey,
|
|
7082
|
-
isOpen: open,
|
|
7083
|
-
initialIsOpen: open,
|
|
7084
|
-
environment: environmentProp ?? environment,
|
|
7085
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
7086
|
-
stateReducer(state, { type, changes }) {
|
|
7087
|
-
switch (type) {
|
|
7088
|
-
// keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress
|
|
7089
|
-
case useSelect.stateChangeTypes.ToggleButtonBlur:
|
|
7090
|
-
return {
|
|
7091
|
-
...changes,
|
|
7092
|
-
isOpen: open != null ? open : true,
|
|
7093
|
-
highlightedIndex: state.highlightedIndex
|
|
7094
|
-
};
|
|
7095
|
-
case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
7096
|
-
case useSelect.stateChangeTypes.ItemClick:
|
|
7097
|
-
return {
|
|
7098
|
-
...changes,
|
|
7099
|
-
isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
7100
|
-
highlightedIndex: disableCloseOnSelectItem ? 0 : changes.highlightedIndex
|
|
7101
|
-
};
|
|
7102
|
-
// prevent this from closing the popover by default
|
|
7103
|
-
case useSelect.stateChangeTypes.ToggleButtonClick:
|
|
7104
|
-
return { ...changes, isOpen: open != null ? open : true };
|
|
7105
|
-
default:
|
|
7106
|
-
return changes;
|
|
7107
|
-
}
|
|
7108
|
-
},
|
|
7109
|
-
onSelectedItemChange(changes) {
|
|
7110
|
-
const { selectedItem: selectedItem2 } = changes;
|
|
7111
|
-
if (onChange != null)
|
|
7112
|
-
onChange(selectedItem2 != null ? selectedItem2 : null);
|
|
7113
|
-
},
|
|
7114
|
-
isItemDisabled(item) {
|
|
7115
|
-
if (isDisabled || isReadOnly) {
|
|
7116
|
-
return !!isDisabled || !!isReadOnly;
|
|
7117
|
-
}
|
|
7118
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
7119
|
-
return true;
|
|
7120
|
-
}
|
|
7121
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
7122
|
-
return true;
|
|
7123
|
-
}
|
|
7124
|
-
if (disabledItems.includes(item)) {
|
|
7125
|
-
return true;
|
|
7126
|
-
}
|
|
7127
|
-
return false;
|
|
7128
|
-
}
|
|
7129
|
-
});
|
|
7130
|
-
useEffect(() => {
|
|
7131
|
-
setIsDisabled(disabled);
|
|
7132
|
-
}, [disabled]);
|
|
7133
|
-
useEffect(() => {
|
|
7134
|
-
setIsReadOnly(readOnly);
|
|
7135
|
-
}, [readOnly]);
|
|
7136
|
-
return /* @__PURE__ */ jsx(
|
|
7137
|
-
ComboboxLegacyContext.Provider,
|
|
7138
|
-
{
|
|
7139
|
-
value: {
|
|
7140
|
-
multiple: false,
|
|
7141
|
-
select: true,
|
|
7142
|
-
disableClearSelection,
|
|
7143
|
-
items,
|
|
7144
|
-
itemToString,
|
|
7145
|
-
itemToKey,
|
|
7146
|
-
isOpen,
|
|
7147
|
-
getLabelProps,
|
|
7148
|
-
getToggleButtonProps,
|
|
7149
|
-
getMenuProps,
|
|
7150
|
-
getItemProps,
|
|
7151
|
-
highlightedIndex,
|
|
7152
|
-
selectedItem,
|
|
7153
|
-
selectedItems: [],
|
|
7154
|
-
disabledItems,
|
|
7155
|
-
setDisabledItems,
|
|
7156
|
-
selectItem,
|
|
7157
|
-
inputValue,
|
|
7158
|
-
isDisabled,
|
|
7159
|
-
isReadOnly,
|
|
7160
|
-
setIsReadOnly,
|
|
7161
|
-
setIsDisabled,
|
|
7162
|
-
hasDisabledPopover,
|
|
7163
|
-
setHasDisabledPopover,
|
|
7164
|
-
hasEmpty,
|
|
7165
|
-
setHasEmpty,
|
|
7166
|
-
loading,
|
|
7167
|
-
referenceRef,
|
|
7168
|
-
contentRef,
|
|
7169
|
-
closeMenu
|
|
7170
|
-
},
|
|
7171
|
-
children: /* @__PURE__ */ jsx(
|
|
7172
|
-
"div",
|
|
7173
|
-
{
|
|
7174
|
-
className: ComboboxLegacyClassNames,
|
|
7175
|
-
"data-anv": "combobox",
|
|
7176
|
-
style: { ...style, ...layoutStyles },
|
|
7177
|
-
ref: wrapperDivRef,
|
|
7178
|
-
children: /* @__PURE__ */ jsx(
|
|
7179
|
-
Popover,
|
|
7180
|
-
{
|
|
7181
|
-
root,
|
|
7182
|
-
open: isOpen,
|
|
7183
|
-
noPadding: true,
|
|
7184
|
-
disableCaret: true,
|
|
7185
|
-
fitScreen: true,
|
|
7186
|
-
disableFlipFallback: true,
|
|
7187
|
-
placement: "bottom-start",
|
|
7188
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
7189
|
-
disableCloseOnClickOutside,
|
|
7190
|
-
onOutsidePress: handleOutsidePress,
|
|
7191
|
-
children
|
|
7192
|
-
}
|
|
7193
|
-
)
|
|
7194
|
-
}
|
|
7195
|
-
)
|
|
7196
|
-
}
|
|
7197
|
-
);
|
|
7198
|
-
};
|
|
7199
|
-
const SelectLegacyMultiple = function(props) {
|
|
7200
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
7201
|
-
const {
|
|
7202
|
-
className,
|
|
7203
|
-
style,
|
|
7204
|
-
children,
|
|
7205
|
-
open,
|
|
7206
|
-
items,
|
|
7207
|
-
itemToString: itemToStringProp,
|
|
7208
|
-
itemToKey: itemToKeyProp,
|
|
7209
|
-
onChange,
|
|
7210
|
-
onSelectedItemsChange,
|
|
7211
|
-
disableCloseOnClickOutside = false,
|
|
7212
|
-
disableMatchReferenceWidth = false,
|
|
7213
|
-
disableCloseOnSelectItem = false,
|
|
7214
|
-
loading = false,
|
|
7215
|
-
root,
|
|
7216
|
-
disabled,
|
|
7217
|
-
readOnly,
|
|
7218
|
-
stateReducer: _,
|
|
7219
|
-
initialSelectedItems,
|
|
7220
|
-
initialActiveIndex,
|
|
7221
|
-
defaultSelectedItems,
|
|
7222
|
-
defaultActiveIndex,
|
|
7223
|
-
activeIndex: activeIndexProp,
|
|
7224
|
-
selectedItems: selectedItemsProp,
|
|
7225
|
-
environment: environmentProp,
|
|
7226
|
-
...rest
|
|
7227
|
-
} = componentProps;
|
|
7228
|
-
const ComboboxLegacyClassNames = cx(styles$1["combobox"], className);
|
|
7229
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
7230
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
7231
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
7232
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
7233
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
7234
|
-
const referenceRef = useRef(null);
|
|
7235
|
-
const contentRef = useRef(null);
|
|
7236
|
-
const handleOutsidePress = (e) => {
|
|
7237
|
-
const clickedInsideReference = referenceRef.current && e.target != null && referenceRef.current.contains(e.target);
|
|
7238
|
-
if (!clickedInsideReference) {
|
|
7239
|
-
closeMenu();
|
|
7240
|
-
return true;
|
|
7241
|
-
} else {
|
|
7242
|
-
return false;
|
|
7243
|
-
}
|
|
7244
|
-
};
|
|
7245
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();
|
|
7246
|
-
const itemToString = itemToStringProp ?? defaultItemToString;
|
|
7247
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey;
|
|
7248
|
-
const {
|
|
7249
|
-
getSelectedItemProps,
|
|
7250
|
-
getDropdownProps,
|
|
7251
|
-
reset,
|
|
7252
|
-
selectedItems,
|
|
7253
|
-
addSelectedItem,
|
|
7254
|
-
removeSelectedItem,
|
|
7255
|
-
setSelectedItems
|
|
7256
|
-
} = useMultipleSelection({
|
|
7257
|
-
itemToKey,
|
|
7258
|
-
initialSelectedItems,
|
|
7259
|
-
initialActiveIndex,
|
|
7260
|
-
defaultSelectedItems,
|
|
7261
|
-
defaultActiveIndex,
|
|
7262
|
-
activeIndex: activeIndexProp,
|
|
7263
|
-
selectedItems: selectedItemsProp,
|
|
7264
|
-
environment: environmentProp ?? environment,
|
|
7265
|
-
stateReducer(state, { type, changes }) {
|
|
7266
|
-
switch (type) {
|
|
7267
|
-
// the Chip itself will handle "Backspace" and "Delete"
|
|
7268
|
-
// just return previous state
|
|
7269
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace:
|
|
7270
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:
|
|
7271
|
-
return state;
|
|
7272
|
-
case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
|
|
7273
|
-
return { ...changes, activeIndex: -1 };
|
|
7274
|
-
case useMultipleSelection.stateChangeTypes.FunctionReset:
|
|
7275
|
-
return { ...changes, selectedItems: [] };
|
|
7276
|
-
default:
|
|
7277
|
-
return changes;
|
|
7278
|
-
}
|
|
7279
|
-
},
|
|
7280
|
-
onSelectedItemsChange(changes) {
|
|
7281
|
-
const { selectedItems: selectedItems2 } = changes;
|
|
7282
|
-
if (onChange != null) onChange(selectedItems2);
|
|
7283
|
-
if (onSelectedItemsChange != null) onSelectedItemsChange(changes);
|
|
7284
|
-
}
|
|
7285
|
-
});
|
|
7286
|
-
const {
|
|
7287
|
-
isOpen,
|
|
7288
|
-
getLabelProps,
|
|
7289
|
-
getToggleButtonProps,
|
|
7290
|
-
getMenuProps,
|
|
7291
|
-
getItemProps,
|
|
7292
|
-
highlightedIndex,
|
|
7293
|
-
selectedItem,
|
|
7294
|
-
selectItem,
|
|
7295
|
-
inputValue,
|
|
7296
|
-
closeMenu
|
|
7297
|
-
} = useSelect({
|
|
7298
|
-
...rest,
|
|
7299
|
-
items,
|
|
7300
|
-
itemToString,
|
|
7301
|
-
itemToKey,
|
|
7302
|
-
selectedItem: null,
|
|
7303
|
-
isOpen: open,
|
|
7304
|
-
initialIsOpen: open,
|
|
7305
|
-
environment: environmentProp ?? environment,
|
|
7306
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
7307
|
-
stateReducer(state, { type, changes }) {
|
|
7308
|
-
switch (type) {
|
|
7309
|
-
// keep ComboboxLegacy open onBlur, will call close using Popover's onOutsidePress
|
|
7310
|
-
case useSelect.stateChangeTypes.ToggleButtonBlur:
|
|
7311
|
-
return {
|
|
7312
|
-
...changes,
|
|
7313
|
-
selectedItem: null,
|
|
7314
|
-
isOpen: open != null ? open : true,
|
|
7315
|
-
highlightedIndex: state.highlightedIndex
|
|
7316
|
-
};
|
|
7317
|
-
case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
7318
|
-
case useSelect.stateChangeTypes.ItemClick:
|
|
7319
|
-
return {
|
|
7320
|
-
...changes,
|
|
7321
|
-
isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
7322
|
-
highlightedIndex: disableCloseOnSelectItem ? 0 : changes.highlightedIndex
|
|
7323
|
-
};
|
|
7324
|
-
// prevent this from closing the popover by default
|
|
7325
|
-
case useSelect.stateChangeTypes.ToggleButtonClick:
|
|
7326
|
-
return { ...changes, isOpen: open != null ? open : true };
|
|
7327
|
-
default:
|
|
7328
|
-
return changes;
|
|
7329
|
-
}
|
|
7330
|
-
},
|
|
7331
|
-
onStateChange({ type, selectedItem: newSelectedItem }) {
|
|
7332
|
-
switch (type) {
|
|
7333
|
-
case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
7334
|
-
case useSelect.stateChangeTypes.ItemClick:
|
|
7335
|
-
case useSelect.stateChangeTypes.ToggleButtonBlur:
|
|
7336
|
-
if (newSelectedItem != null) {
|
|
7337
|
-
const itemAlreadySelected = selectedItems.some(
|
|
7338
|
-
(item) => itemToKey(item) === itemToKey(newSelectedItem)
|
|
7339
|
-
);
|
|
7340
|
-
if (itemAlreadySelected) {
|
|
7341
|
-
removeSelectedItem(newSelectedItem);
|
|
7342
|
-
} else {
|
|
7343
|
-
addSelectedItem(newSelectedItem);
|
|
7344
|
-
}
|
|
7345
|
-
}
|
|
7346
|
-
break;
|
|
7347
|
-
}
|
|
7348
|
-
},
|
|
7349
|
-
isItemDisabled(item) {
|
|
7350
|
-
if (isDisabled || isReadOnly) {
|
|
7351
|
-
return !!isDisabled || !!isReadOnly;
|
|
7352
|
-
}
|
|
7353
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
7354
|
-
return true;
|
|
7355
|
-
}
|
|
7356
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
7357
|
-
return true;
|
|
7358
|
-
}
|
|
7359
|
-
if (disabledItems.includes(item)) {
|
|
7360
|
-
return true;
|
|
7361
|
-
}
|
|
7362
|
-
return false;
|
|
7363
|
-
}
|
|
7364
|
-
});
|
|
7365
|
-
useEffect(() => {
|
|
7366
|
-
setIsDisabled(disabled);
|
|
7367
|
-
}, [disabled]);
|
|
7368
|
-
useEffect(() => {
|
|
7369
|
-
setIsReadOnly(readOnly);
|
|
7370
|
-
}, [readOnly]);
|
|
7371
|
-
return /* @__PURE__ */ jsx(
|
|
7372
|
-
ComboboxLegacyContext.Provider,
|
|
7373
|
-
{
|
|
7374
|
-
value: {
|
|
7375
|
-
multiple: true,
|
|
7376
|
-
select: true,
|
|
7377
|
-
items,
|
|
7378
|
-
itemToString,
|
|
7379
|
-
itemToKey,
|
|
7380
|
-
isOpen,
|
|
7381
|
-
getLabelProps,
|
|
7382
|
-
getToggleButtonProps,
|
|
7383
|
-
getMenuProps,
|
|
7384
|
-
getItemProps,
|
|
7385
|
-
highlightedIndex,
|
|
7386
|
-
selectedItem,
|
|
7387
|
-
selectedItems,
|
|
7388
|
-
disabledItems,
|
|
7389
|
-
setDisabledItems,
|
|
7390
|
-
getSelectedItemProps,
|
|
7391
|
-
getDropdownProps,
|
|
7392
|
-
reset,
|
|
7393
|
-
addSelectedItem,
|
|
7394
|
-
removeSelectedItem,
|
|
7395
|
-
setSelectedItems,
|
|
7396
|
-
selectItem,
|
|
7397
|
-
inputValue,
|
|
7398
|
-
isDisabled,
|
|
7399
|
-
isReadOnly,
|
|
7400
|
-
setIsReadOnly,
|
|
7401
|
-
setIsDisabled,
|
|
7402
|
-
hasDisabledPopover,
|
|
7403
|
-
setHasDisabledPopover,
|
|
7404
|
-
hasEmpty,
|
|
7405
|
-
setHasEmpty,
|
|
7406
|
-
loading,
|
|
7407
|
-
referenceRef,
|
|
7408
|
-
contentRef,
|
|
7409
|
-
closeMenu
|
|
7410
|
-
},
|
|
7411
|
-
children: /* @__PURE__ */ jsx(
|
|
7412
|
-
"div",
|
|
7413
|
-
{
|
|
7414
|
-
className: ComboboxLegacyClassNames,
|
|
7415
|
-
"data-anv": "combobox",
|
|
7416
|
-
style: { ...style, ...layoutStyles },
|
|
7417
|
-
ref: wrapperDivRef,
|
|
7418
|
-
children: /* @__PURE__ */ jsx(
|
|
7419
|
-
Popover,
|
|
7420
|
-
{
|
|
7421
|
-
root,
|
|
7422
|
-
open: !isDisabled && isOpen,
|
|
7423
|
-
noPadding: true,
|
|
7424
|
-
disableCaret: true,
|
|
7425
|
-
fitScreen: true,
|
|
7426
|
-
disableFlipFallback: true,
|
|
7427
|
-
placement: "bottom-start",
|
|
7428
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
7429
|
-
disableCloseOnClickOutside,
|
|
7430
|
-
onOutsidePress: handleOutsidePress,
|
|
7431
|
-
children
|
|
7432
|
-
}
|
|
7433
|
-
)
|
|
7434
|
-
}
|
|
7435
|
-
)
|
|
7436
|
-
}
|
|
7437
|
-
);
|
|
7438
|
-
};
|
|
7439
|
-
|
|
7440
|
-
const ComboboxLegacyTrigger = ({
|
|
7441
|
-
// variant: variantProp = "combobox",
|
|
7442
|
-
className,
|
|
7443
|
-
label,
|
|
7444
|
-
size,
|
|
7445
|
-
error,
|
|
7446
|
-
hint,
|
|
7447
|
-
description,
|
|
7448
|
-
required,
|
|
7449
|
-
moreInfo,
|
|
7450
|
-
openMoreInfo,
|
|
7451
|
-
prefix,
|
|
7452
|
-
suffix,
|
|
7453
|
-
maxRows,
|
|
7454
|
-
id,
|
|
7455
|
-
disabled,
|
|
7456
|
-
readOnly,
|
|
7457
|
-
...rest
|
|
7458
|
-
}) => {
|
|
7459
|
-
const {
|
|
7460
|
-
select,
|
|
7461
|
-
disableClearSelection,
|
|
7462
|
-
itemToString,
|
|
7463
|
-
getLabelProps,
|
|
7464
|
-
getInputProps,
|
|
7465
|
-
getToggleButtonProps,
|
|
7466
|
-
selectedItem,
|
|
7467
|
-
selectedItems,
|
|
7468
|
-
getSelectedItemProps,
|
|
7469
|
-
getDropdownProps,
|
|
7470
|
-
reset,
|
|
7471
|
-
removeSelectedItem,
|
|
7472
|
-
selectItem,
|
|
7473
|
-
inputValue,
|
|
7474
|
-
isDisabled,
|
|
7475
|
-
isReadOnly,
|
|
7476
|
-
referenceRef,
|
|
7477
|
-
contentRef,
|
|
7478
|
-
closeMenu,
|
|
7479
|
-
setIsDisabled,
|
|
7480
|
-
setIsReadOnly
|
|
7481
|
-
} = useComboboxLegacy();
|
|
7482
|
-
const variant = select ? "select" : "combobox";
|
|
7483
|
-
const context = usePopoverLegacyContext();
|
|
7484
|
-
const inputRef = useRef(null);
|
|
7485
|
-
const ComboboxLegacyTriggerClassNames = cx(styles$1["search-field"], {
|
|
7486
|
-
[styles$1["select"]]: variant === "select"
|
|
7487
|
-
});
|
|
7488
|
-
const noClearButton = isDisabled || isReadOnly || disableClearSelection;
|
|
7489
|
-
const ComboboxLegacyInputWrapperClassNames = cx(
|
|
7490
|
-
styles$1["input-wrapper"],
|
|
7491
|
-
className ? {
|
|
7492
|
-
[className]: variant === "select"
|
|
7493
|
-
} : {},
|
|
7494
|
-
{
|
|
7495
|
-
[styles$1["small"]]: size === "small",
|
|
7496
|
-
[styles$1["large"]]: size === "large",
|
|
7497
|
-
[styles$1["no-clear-button"]]: noClearButton
|
|
7498
|
-
}
|
|
7499
|
-
);
|
|
7500
|
-
const ComboboxLegacyInputClassNames = cx(
|
|
7501
|
-
styles$1["input"],
|
|
7502
|
-
className ? {
|
|
7503
|
-
[className]: variant === "combobox"
|
|
7504
|
-
} : {},
|
|
7505
|
-
{
|
|
7506
|
-
[styles$1["error"]]: error
|
|
7507
|
-
}
|
|
7508
|
-
);
|
|
7509
|
-
useLayoutEffect(() => {
|
|
7510
|
-
if (typeof disabled === "undefined") return;
|
|
7511
|
-
setIsDisabled(disabled);
|
|
7512
|
-
}, [disabled, setIsDisabled]);
|
|
7513
|
-
useLayoutEffect(() => {
|
|
7514
|
-
if (typeof readOnly === "undefined") return;
|
|
7515
|
-
setIsReadOnly(readOnly);
|
|
7516
|
-
}, [readOnly, setIsReadOnly]);
|
|
7517
|
-
const labelUid = "label" + useId();
|
|
7518
|
-
const helperUid = "helper" + useId();
|
|
7519
|
-
const placeholderUid = "placeholder" + useId();
|
|
7520
|
-
const ariaDescribedBy = `${helperUid} ${placeholderUid}`;
|
|
7521
|
-
const errorMessage = typeof error !== "boolean" ? error : void 0;
|
|
7522
|
-
const handleBlur = (e) => {
|
|
7523
|
-
const target = e.relatedTarget ?? e.target;
|
|
7524
|
-
const focusedOnReference = referenceRef.current && referenceRef.current.contains(target);
|
|
7525
|
-
const focusedOnContent = contentRef.current && contentRef.current.contains(target);
|
|
7526
|
-
if (!focusedOnReference && !focusedOnContent) {
|
|
7527
|
-
closeMenu();
|
|
7528
|
-
}
|
|
7529
|
-
};
|
|
7530
|
-
const rowsRef = useRef(null);
|
|
7531
|
-
const [stillCalculating, setStillCalculating] = useState(false);
|
|
7532
|
-
const [collapsedChips, setCollapsedChips] = useState(false);
|
|
7533
|
-
const [visibleChipsCount, setVisibleChipsCount] = useState(
|
|
7534
|
-
null
|
|
7535
|
-
);
|
|
7536
|
-
const [forceRenderCount, setForceRenderCount] = useState(0);
|
|
7537
|
-
useLayoutEffect(() => {
|
|
7538
|
-
if (maxRows === void 0) return;
|
|
7539
|
-
if (stillCalculating === false) {
|
|
7540
|
-
setStillCalculating(true);
|
|
7541
|
-
setCollapsedChips(false);
|
|
7542
|
-
setVisibleChipsCount(null);
|
|
7543
|
-
setForceRenderCount((x) => x + 1);
|
|
7544
|
-
} else if (rowsRef?.current?.children) {
|
|
7545
|
-
const children = rowsRef?.current?.children;
|
|
7546
|
-
const rowData = Array.from(children).reduce(
|
|
7547
|
-
(acc, child) => {
|
|
7548
|
-
const top = child.getBoundingClientRect().top;
|
|
7549
|
-
if (!acc.length) {
|
|
7550
|
-
return [{ count: 1, top }];
|
|
7551
|
-
} else if (acc[acc.length - 1].top === top) {
|
|
7552
|
-
return [
|
|
7553
|
-
...acc.slice(0, -1),
|
|
7554
|
-
{ count: acc[acc.length - 1].count + 1, top }
|
|
7555
|
-
];
|
|
7556
|
-
} else if (acc[acc.length - 1].top !== top) {
|
|
7557
|
-
return [...acc, { count: 1, top }];
|
|
7558
|
-
} else {
|
|
7559
|
-
return acc;
|
|
7560
|
-
}
|
|
7561
|
-
},
|
|
7562
|
-
[]
|
|
7563
|
-
);
|
|
7564
|
-
if (!rowData[maxRows] || visibleChipsCount === 0) {
|
|
7565
|
-
setStillCalculating(false);
|
|
7566
|
-
} else {
|
|
7567
|
-
setCollapsedChips(true);
|
|
7568
|
-
if (visibleChipsCount == null) {
|
|
7569
|
-
const firstGuess = Math.max(
|
|
7570
|
-
rowData.reduce((sum, row) => sum + row.count, -2),
|
|
7571
|
-
0
|
|
7572
|
-
);
|
|
7573
|
-
setVisibleChipsCount(firstGuess);
|
|
7574
|
-
} else {
|
|
7575
|
-
setVisibleChipsCount(visibleChipsCount - 1);
|
|
7576
|
-
}
|
|
7577
|
-
setForceRenderCount((x) => x + 1);
|
|
7578
|
-
}
|
|
7579
|
-
}
|
|
7580
|
-
}, [selectedItems.length, maxRows, forceRenderCount]);
|
|
7581
|
-
const selectedItemsDisplayCount = collapsedChips && maxRows != null && visibleChipsCount !== null ? visibleChipsCount : selectedItems.length;
|
|
7582
|
-
return /* @__PURE__ */ jsxs(
|
|
7583
|
-
"div",
|
|
7584
|
-
{
|
|
7585
|
-
className: ComboboxLegacyTriggerClassNames,
|
|
7586
|
-
"data-anv": "combobox-searchfield",
|
|
7587
|
-
ref: referenceRef,
|
|
7588
|
-
onBlur: handleBlur,
|
|
7589
|
-
children: [
|
|
7590
|
-
label ? /* @__PURE__ */ jsx(
|
|
7591
|
-
Label,
|
|
7592
|
-
{
|
|
7593
|
-
...getLabelProps({
|
|
7594
|
-
className: styles$1["label"],
|
|
7595
|
-
required,
|
|
7596
|
-
moreInfo,
|
|
7597
|
-
openMoreInfo,
|
|
7598
|
-
id: labelUid
|
|
7599
|
-
}),
|
|
7600
|
-
children: label
|
|
7601
|
-
}
|
|
7602
|
-
) : null,
|
|
7603
|
-
/* @__PURE__ */ jsxs(
|
|
7604
|
-
"div",
|
|
7605
|
-
{
|
|
7606
|
-
className: ComboboxLegacyInputWrapperClassNames,
|
|
7607
|
-
role: "presentation",
|
|
7608
|
-
...variant === "select" ? {
|
|
7609
|
-
...getToggleButtonProps({
|
|
7610
|
-
disabled: isDisabled,
|
|
7611
|
-
readOnly: isReadOnly,
|
|
7612
|
-
ref: context.refs.setReference,
|
|
7613
|
-
id,
|
|
7614
|
-
"aria-describedby": ariaDescribedBy,
|
|
7615
|
-
"aria-labelledby": labelUid
|
|
7616
|
-
})
|
|
7617
|
-
} : {
|
|
7618
|
-
ref: context.refs.setReference,
|
|
7619
|
-
onClick: () => inputRef.current?.focus()
|
|
7620
|
-
},
|
|
7621
|
-
children: [
|
|
7622
|
-
/* @__PURE__ */ jsxs("div", { className: styles$1["buttons-wrapper"], children: [
|
|
7623
|
-
(inputValue || selectedItem || selectedItems.length) && !noClearButton ? /* @__PURE__ */ jsx("div", { className: styles$1["close-button-wrapper"], children: /* @__PURE__ */ jsx(
|
|
7624
|
-
Button,
|
|
7625
|
-
{
|
|
7626
|
-
"aria-label": "clear selection",
|
|
7627
|
-
appearance: "ghost",
|
|
7628
|
-
size: "small",
|
|
7629
|
-
icon: SvgClose,
|
|
7630
|
-
className: styles$1["close-button"],
|
|
7631
|
-
onClick: (e) => {
|
|
7632
|
-
e.stopPropagation();
|
|
7633
|
-
if (reset != null) {
|
|
7634
|
-
reset();
|
|
7635
|
-
} else {
|
|
7636
|
-
selectItem(null);
|
|
7637
|
-
}
|
|
7638
|
-
},
|
|
7639
|
-
tabIndex: -1
|
|
7640
|
-
}
|
|
7641
|
-
) }) : null,
|
|
7642
|
-
/* @__PURE__ */ jsx("div", { className: styles$1["toggle-button-wrapper"], children: /* @__PURE__ */ jsx(
|
|
7643
|
-
Button,
|
|
7644
|
-
{
|
|
7645
|
-
...variant === "select" ? { tabIndex: -1 } : getToggleButtonProps(),
|
|
7646
|
-
className: styles$1["toggle-button"],
|
|
7647
|
-
"aria-label": "toggle menu",
|
|
7648
|
-
icon: SvgChevronRight,
|
|
7649
|
-
appearance: "ghost",
|
|
7650
|
-
size: "small",
|
|
7651
|
-
disabled: isDisabled
|
|
7652
|
-
}
|
|
7653
|
-
) })
|
|
7654
|
-
] }),
|
|
7655
|
-
/* @__PURE__ */ jsxs("div", { className: styles$1["rows-wrapper"], ref: rowsRef, children: [
|
|
7656
|
-
selectedItems.length && removeSelectedItem != null && getSelectedItemProps != null ? selectedItems.slice(0, selectedItemsDisplayCount).map((item, index) => {
|
|
7657
|
-
const { onClick, ...selectedItemProps } = getSelectedItemProps({
|
|
7658
|
-
selectedItem: item,
|
|
7659
|
-
index
|
|
7660
|
-
});
|
|
7661
|
-
return /* @__PURE__ */ jsx(
|
|
7662
|
-
"div",
|
|
7663
|
-
{
|
|
7664
|
-
className: styles$1["chip-wrapper"],
|
|
7665
|
-
children: /* @__PURE__ */ jsx(
|
|
7666
|
-
Chip,
|
|
7667
|
-
{
|
|
7668
|
-
...selectedItemProps,
|
|
7669
|
-
label: itemToString(item),
|
|
7670
|
-
onClose: isDisabled || isReadOnly ? void 0 : (_e) => {
|
|
7671
|
-
removeSelectedItem(item);
|
|
7672
|
-
},
|
|
7673
|
-
className: styles$1["chip"],
|
|
7674
|
-
title: itemToString(item)
|
|
7675
|
-
}
|
|
7676
|
-
)
|
|
7677
|
-
},
|
|
7678
|
-
`selected-item-${index}`
|
|
7679
|
-
);
|
|
7680
|
-
}) : null,
|
|
7681
|
-
collapsedChips && maxRows != null ? /* @__PURE__ */ jsx("div", { className: styles$1["chip-wrapper"], children: /* @__PURE__ */ jsx(
|
|
7682
|
-
Chip,
|
|
7683
|
-
{
|
|
7684
|
-
label: `+${selectedItems.length - selectedItemsDisplayCount}`,
|
|
7685
|
-
className: styles$1["chip"],
|
|
7686
|
-
title: selectedItems.slice(selectedItemsDisplayCount).map((item) => itemToString(item)).join(", ")
|
|
7687
|
-
}
|
|
7688
|
-
) }) : null,
|
|
7689
|
-
/* @__PURE__ */ jsxs(Flex, { className: styles$1["input-flex"], alignItems: "center", children: [
|
|
7690
|
-
prefix ? /* @__PURE__ */ jsx("div", { className: styles$1["prefix"], children: prefix }) : null,
|
|
7691
|
-
variant === "select" ? /* @__PURE__ */ jsx(
|
|
7692
|
-
"div",
|
|
7693
|
-
{
|
|
7694
|
-
...getDropdownProps != null ? getDropdownProps({
|
|
7695
|
-
className: ComboboxLegacyInputClassNames,
|
|
7696
|
-
required,
|
|
7697
|
-
preventKeyAction: false
|
|
7698
|
-
}) : {
|
|
7699
|
-
className: ComboboxLegacyInputClassNames,
|
|
7700
|
-
required
|
|
7701
|
-
},
|
|
7702
|
-
children: selectedItems.length ? null : selectedItem ? itemToString(selectedItem) : /* @__PURE__ */ jsx(
|
|
7703
|
-
"span",
|
|
7704
|
-
{
|
|
7705
|
-
className: styles$1["fake-placeholder"],
|
|
7706
|
-
id: placeholderUid,
|
|
7707
|
-
children: rest.placeholder
|
|
7708
|
-
}
|
|
7709
|
-
)
|
|
7710
|
-
}
|
|
7711
|
-
) : /* @__PURE__ */ jsx(
|
|
7712
|
-
"input",
|
|
7713
|
-
{
|
|
7714
|
-
...getDropdownProps != null && getInputProps != null ? getInputProps(
|
|
7715
|
-
getDropdownProps({
|
|
7716
|
-
...rest,
|
|
7717
|
-
className: ComboboxLegacyInputClassNames,
|
|
7718
|
-
disabled: isDisabled,
|
|
7719
|
-
readOnly: isReadOnly,
|
|
7720
|
-
required,
|
|
7721
|
-
autoComplete: "off",
|
|
7722
|
-
id,
|
|
7723
|
-
"aria-describedby": ariaDescribedBy,
|
|
7724
|
-
"aria-labelledby": labelUid,
|
|
7725
|
-
preventKeyAction: false,
|
|
7726
|
-
ref: inputRef
|
|
7727
|
-
})
|
|
7728
|
-
) : getInputProps != null ? getInputProps({
|
|
7729
|
-
...rest,
|
|
7730
|
-
className: ComboboxLegacyInputClassNames,
|
|
7731
|
-
disabled: isDisabled,
|
|
7732
|
-
readOnly: isReadOnly,
|
|
7733
|
-
required,
|
|
7734
|
-
autoComplete: "off",
|
|
7735
|
-
id,
|
|
7736
|
-
"aria-describedby": ariaDescribedBy,
|
|
7737
|
-
"aria-labelledby": labelUid,
|
|
7738
|
-
ref: inputRef
|
|
7739
|
-
}) : {}
|
|
7740
|
-
}
|
|
7741
|
-
),
|
|
7742
|
-
suffix ? /* @__PURE__ */ jsx("div", { className: styles$1["suffix"], children: suffix }) : null
|
|
7743
|
-
] })
|
|
7744
|
-
] })
|
|
7745
|
-
]
|
|
7746
|
-
}
|
|
7747
|
-
),
|
|
7748
|
-
hint || errorMessage || description ? /* @__PURE__ */ jsx(
|
|
7749
|
-
Helper,
|
|
7750
|
-
{
|
|
7751
|
-
id: helperUid,
|
|
7752
|
-
errorMessage,
|
|
7753
|
-
hint,
|
|
7754
|
-
description
|
|
7755
|
-
}
|
|
7756
|
-
) : null
|
|
7757
|
-
]
|
|
7758
|
-
}
|
|
7759
|
-
);
|
|
7760
|
-
};
|
|
7761
|
-
|
|
7762
|
-
const ComboboxLegacyContent = function({
|
|
7763
|
-
children,
|
|
7764
|
-
className,
|
|
7765
|
-
disablePopover = false,
|
|
7766
|
-
...rest
|
|
7767
|
-
}) {
|
|
7768
|
-
const {
|
|
7769
|
-
items,
|
|
7770
|
-
itemToKey,
|
|
7771
|
-
inputValue,
|
|
7772
|
-
selectedItem,
|
|
7773
|
-
selectedItems,
|
|
7774
|
-
setHasDisabledPopover,
|
|
7775
|
-
getMenuProps,
|
|
7776
|
-
getItemProps,
|
|
7777
|
-
isDisabled,
|
|
7778
|
-
isReadOnly,
|
|
7779
|
-
referenceRef,
|
|
7780
|
-
contentRef,
|
|
7781
|
-
closeMenu
|
|
7782
|
-
} = useComboboxLegacy();
|
|
7783
|
-
const ComboboxLegacyPopoverContentClassNames = cx(
|
|
7784
|
-
styles$1["popover-content"],
|
|
7785
|
-
className
|
|
7786
|
-
);
|
|
7787
|
-
useEffect(() => {
|
|
7788
|
-
setHasDisabledPopover(disablePopover);
|
|
7789
|
-
return () => {
|
|
7790
|
-
setHasDisabledPopover(false);
|
|
7791
|
-
};
|
|
7792
|
-
}, [disablePopover, setHasDisabledPopover]);
|
|
7793
|
-
const handleBlur = (e) => {
|
|
7794
|
-
const target = e.relatedTarget ?? e.target;
|
|
7795
|
-
const focusedOnReference = referenceRef.current && referenceRef.current.contains(target);
|
|
7796
|
-
const focusedOnContent = contentRef.current && contentRef.current.contains(target);
|
|
7797
|
-
if (!focusedOnReference && !focusedOnContent) {
|
|
7798
|
-
closeMenu();
|
|
7799
|
-
}
|
|
7800
|
-
};
|
|
7801
|
-
return disablePopover ? /* @__PURE__ */ jsx(
|
|
7802
|
-
"div",
|
|
7803
|
-
{
|
|
7804
|
-
...rest,
|
|
7805
|
-
className: ComboboxLegacyPopoverContentClassNames,
|
|
7806
|
-
ref: contentRef,
|
|
7807
|
-
onBlur: handleBlur,
|
|
7808
|
-
children: children ? children({
|
|
7809
|
-
items,
|
|
7810
|
-
inputValue,
|
|
7811
|
-
selectedItem,
|
|
7812
|
-
getMenuProps,
|
|
7813
|
-
getItemProps,
|
|
7814
|
-
listProps: {
|
|
7815
|
-
...getMenuProps({}, { suppressRefError: true }),
|
|
7816
|
-
style: {
|
|
7817
|
-
display: items.length ? "" : "none",
|
|
7818
|
-
overflow: "auto"
|
|
7819
|
-
}
|
|
7820
|
-
},
|
|
7821
|
-
options: items.map((item, index) => ({
|
|
7822
|
-
optionProps: {
|
|
7823
|
-
...getItemProps({
|
|
7824
|
-
item,
|
|
7825
|
-
index
|
|
7826
|
-
}),
|
|
7827
|
-
selected: itemToKey(selectedItem) === itemToKey(item) || selectedItems.some(
|
|
7828
|
-
(selectedItem2) => itemToKey(selectedItem2) === itemToKey(item)
|
|
7829
|
-
),
|
|
7830
|
-
disabled: !!isDisabled || !!isReadOnly
|
|
7831
|
-
// also see "isItemDisabled" function
|
|
7832
|
-
},
|
|
7833
|
-
item,
|
|
7834
|
-
index
|
|
7835
|
-
}))
|
|
7836
|
-
}) : null
|
|
7837
|
-
}
|
|
7838
|
-
) : /* @__PURE__ */ jsx(
|
|
7839
|
-
Popover.Content,
|
|
7840
|
-
{
|
|
7841
|
-
"data-anv": "combobox-content",
|
|
7842
|
-
...rest,
|
|
7843
|
-
className: ComboboxLegacyPopoverContentClassNames,
|
|
7844
|
-
ref: getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref,
|
|
7845
|
-
onBlur: handleBlur,
|
|
7846
|
-
children: children ? children({
|
|
7847
|
-
items,
|
|
7848
|
-
inputValue,
|
|
7849
|
-
selectedItem,
|
|
7850
|
-
getMenuProps,
|
|
7851
|
-
getItemProps,
|
|
7852
|
-
listProps: {
|
|
7853
|
-
...getMenuProps({}, { suppressRefError: true }),
|
|
7854
|
-
style: {
|
|
7855
|
-
display: items.length ? void 0 : "none",
|
|
7856
|
-
overflow: "auto"
|
|
7857
|
-
}
|
|
7858
|
-
},
|
|
7859
|
-
options: items.map((item, index) => ({
|
|
7860
|
-
optionProps: {
|
|
7861
|
-
...getItemProps({
|
|
7862
|
-
item,
|
|
7863
|
-
index
|
|
7864
|
-
}),
|
|
7865
|
-
selected: itemToKey(selectedItem) === itemToKey(item) || selectedItems.some(
|
|
7866
|
-
(selectedItem2) => itemToKey(selectedItem2) === itemToKey(item)
|
|
7867
|
-
),
|
|
7868
|
-
disabled: !!isDisabled || !!isReadOnly
|
|
7869
|
-
// also see "isItemDisabled" function
|
|
7870
|
-
},
|
|
7871
|
-
item,
|
|
7872
|
-
index
|
|
7873
|
-
}))
|
|
7874
|
-
}) : null
|
|
7875
|
-
}
|
|
7876
|
-
);
|
|
7877
|
-
};
|
|
7878
|
-
|
|
7879
|
-
const ComboboxLegacyList = function({
|
|
7880
|
-
children,
|
|
7881
|
-
...rest
|
|
7882
|
-
}) {
|
|
7883
|
-
const {
|
|
7884
|
-
getMenuProps,
|
|
7885
|
-
multiple,
|
|
7886
|
-
items,
|
|
7887
|
-
hasAddNew = false,
|
|
7888
|
-
hasEmpty,
|
|
7889
|
-
loading
|
|
7890
|
-
} = useComboboxLegacy();
|
|
7891
|
-
if (multiple) {
|
|
7892
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7893
|
-
/* @__PURE__ */ jsxs(
|
|
7894
|
-
"div",
|
|
7895
|
-
{
|
|
7896
|
-
...getMenuProps(rest),
|
|
7897
|
-
"data-anv": "combobox-list",
|
|
7898
|
-
className: cx(styles$1["listview"], listViewStyles["listview"]),
|
|
7899
|
-
style: {
|
|
7900
|
-
display: items.length || hasAddNew ? void 0 : "none",
|
|
7901
|
-
overflow: "auto"
|
|
7902
|
-
},
|
|
7903
|
-
children: [
|
|
7904
|
-
children,
|
|
7905
|
-
loading ? /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Spinner, { size: "small" }) }) : null
|
|
7906
|
-
]
|
|
7907
|
-
}
|
|
7908
|
-
),
|
|
7909
|
-
!items.length && !hasEmpty ? /* @__PURE__ */ jsx("div", { className: styles$1["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) : null
|
|
7910
|
-
] });
|
|
7911
|
-
} else {
|
|
7912
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7913
|
-
/* @__PURE__ */ jsxs(
|
|
7914
|
-
"ul",
|
|
7915
|
-
{
|
|
7916
|
-
...getMenuProps(rest),
|
|
7917
|
-
"data-anv": "combobox-list",
|
|
7918
|
-
className: listboxStyles["listbox"],
|
|
7919
|
-
style: {
|
|
7920
|
-
display: items.length || hasAddNew ? void 0 : "none",
|
|
7921
|
-
overflow: "auto"
|
|
7922
|
-
},
|
|
7923
|
-
children: [
|
|
7924
|
-
children,
|
|
7925
|
-
loading ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Spinner, { size: "small" }) }) }) : null
|
|
7926
|
-
]
|
|
7927
|
-
}
|
|
7928
|
-
),
|
|
7929
|
-
!items.length && !hasEmpty ? /* @__PURE__ */ jsx("div", { className: styles$1["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) : null
|
|
7930
|
-
] });
|
|
7931
|
-
}
|
|
7932
|
-
};
|
|
7933
|
-
|
|
7934
|
-
const ComboboxLegacyItem = function({
|
|
7935
|
-
children,
|
|
7936
|
-
disabled: disabledProp,
|
|
7937
|
-
item,
|
|
7938
|
-
index,
|
|
7939
|
-
alignItems,
|
|
7940
|
-
justifyItems,
|
|
7941
|
-
alignContent,
|
|
7942
|
-
justifyContent,
|
|
7943
|
-
placeItems,
|
|
7944
|
-
placeContent,
|
|
7945
|
-
gap,
|
|
7946
|
-
rowGap,
|
|
7947
|
-
columnGap,
|
|
7948
|
-
...rest
|
|
7949
|
-
}) {
|
|
7950
|
-
const {
|
|
7951
|
-
itemToKey,
|
|
7952
|
-
getItemProps,
|
|
7953
|
-
multiple,
|
|
7954
|
-
selectedItem,
|
|
7955
|
-
selectedItems,
|
|
7956
|
-
disabledItems,
|
|
7957
|
-
setDisabledItems,
|
|
7958
|
-
highlightedIndex
|
|
7959
|
-
} = useComboboxLegacy();
|
|
7960
|
-
const disabled = disabledProp || item && item instanceof Object && "disabled" in item && item.disabled;
|
|
7961
|
-
useEffect(() => {
|
|
7962
|
-
if (disabledProp && !disabledItems.includes(item)) {
|
|
7963
|
-
setDisabledItems([...disabledItems, item]);
|
|
7964
|
-
} else if (disabledItems.includes(item)) {
|
|
7965
|
-
setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));
|
|
7966
|
-
}
|
|
7967
|
-
return () => {
|
|
7968
|
-
if (disabledItems.includes(item)) {
|
|
7969
|
-
setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));
|
|
7970
|
-
}
|
|
7971
|
-
};
|
|
7972
|
-
}, [item, disabledProp, setDisabledItems]);
|
|
7973
|
-
if (multiple) {
|
|
7974
|
-
const checked = selectedItems.some(
|
|
7975
|
-
(selectedItem2) => itemToKey(selectedItem2) === itemToKey(item)
|
|
7976
|
-
);
|
|
7977
|
-
return /* @__PURE__ */ jsxs(
|
|
7978
|
-
"div",
|
|
7979
|
-
{
|
|
7980
|
-
"data-anv": "combobox-item",
|
|
7981
|
-
...getItemProps({
|
|
7982
|
-
item,
|
|
7983
|
-
index,
|
|
7984
|
-
"aria-selected": highlightedIndex === index,
|
|
7985
|
-
...rest
|
|
7986
|
-
}),
|
|
7987
|
-
className: cx(
|
|
7988
|
-
styles$1["listview-option"],
|
|
7989
|
-
listViewStyles["listview-option"]
|
|
7990
|
-
),
|
|
7991
|
-
children: [
|
|
7992
|
-
/* @__PURE__ */ jsx("div", { className: cx(styles$1["cell"], listViewStyles["cell"]), children: /* @__PURE__ */ jsx("div", { className: checkboxStyles["wrapper"], children: /* @__PURE__ */ jsxs("div", { className: checkboxStyles["checkbox"], children: [
|
|
7993
|
-
/* @__PURE__ */ jsx(
|
|
7994
|
-
"input",
|
|
7995
|
-
{
|
|
7996
|
-
type: "checkbox",
|
|
7997
|
-
checked,
|
|
7998
|
-
"aria-checked": checked,
|
|
7999
|
-
"aria-label": "Select",
|
|
8000
|
-
readOnly: true,
|
|
8001
|
-
...disabled ? { disabled: true } : {}
|
|
8002
|
-
}
|
|
8003
|
-
),
|
|
8004
|
-
/* @__PURE__ */ jsxs("span", { className: checkboxStyles["icon-wrapper"], "aria-hidden": true, children: [
|
|
8005
|
-
/* @__PURE__ */ jsx(
|
|
8006
|
-
Icon$2,
|
|
8007
|
-
{
|
|
8008
|
-
size: "large",
|
|
8009
|
-
svg: SvgIndeterminateCheckBox,
|
|
8010
|
-
className: checkboxStyles["icon-indeterminate"]
|
|
8011
|
-
}
|
|
8012
|
-
),
|
|
8013
|
-
/* @__PURE__ */ jsx(
|
|
8014
|
-
Icon$2,
|
|
8015
|
-
{
|
|
8016
|
-
size: "large",
|
|
8017
|
-
svg: SvgCheckBox,
|
|
8018
|
-
className: checkboxStyles["icon-checked"]
|
|
8019
|
-
}
|
|
8020
|
-
),
|
|
8021
|
-
/* @__PURE__ */ jsx(
|
|
8022
|
-
Icon$2,
|
|
8023
|
-
{
|
|
8024
|
-
size: "large",
|
|
8025
|
-
svg: SvgCheckBoxOutlineBlank,
|
|
8026
|
-
className: checkboxStyles["icon-unchecked"]
|
|
8027
|
-
}
|
|
8028
|
-
)
|
|
8029
|
-
] }),
|
|
8030
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true })
|
|
8031
|
-
] }) }) }),
|
|
8032
|
-
/* @__PURE__ */ jsx(
|
|
8033
|
-
Flex,
|
|
8034
|
-
{
|
|
8035
|
-
grow: 1,
|
|
8036
|
-
shrink: 1,
|
|
8037
|
-
alignItems,
|
|
8038
|
-
justifyItems,
|
|
8039
|
-
alignContent,
|
|
8040
|
-
justifyContent,
|
|
8041
|
-
placeItems,
|
|
8042
|
-
placeContent,
|
|
8043
|
-
gap,
|
|
8044
|
-
rowGap,
|
|
8045
|
-
columnGap,
|
|
8046
|
-
children
|
|
8047
|
-
}
|
|
8048
|
-
)
|
|
8049
|
-
]
|
|
8050
|
-
}
|
|
8051
|
-
);
|
|
8052
|
-
} else {
|
|
8053
|
-
return /* @__PURE__ */ jsxs(
|
|
8054
|
-
"li",
|
|
8055
|
-
{
|
|
8056
|
-
...getItemProps({
|
|
8057
|
-
item,
|
|
8058
|
-
index,
|
|
8059
|
-
"aria-selected": highlightedIndex === index,
|
|
8060
|
-
...rest
|
|
8061
|
-
}),
|
|
8062
|
-
"data-anv": "combobox-item",
|
|
8063
|
-
"data-checked": itemToKey(selectedItem) === itemToKey(item),
|
|
8064
|
-
className: styles$1["item"],
|
|
8065
|
-
...disabled ? { "aria-disabled": true } : {},
|
|
8066
|
-
children: [
|
|
8067
|
-
/* @__PURE__ */ jsx(
|
|
8068
|
-
Flex,
|
|
8069
|
-
{
|
|
8070
|
-
className: listboxStyles["children"],
|
|
8071
|
-
grow: 1,
|
|
8072
|
-
shrink: 1,
|
|
8073
|
-
alignItems,
|
|
8074
|
-
justifyItems,
|
|
8075
|
-
alignContent,
|
|
8076
|
-
justifyContent,
|
|
8077
|
-
placeItems,
|
|
8078
|
-
placeContent,
|
|
8079
|
-
gap,
|
|
8080
|
-
rowGap,
|
|
8081
|
-
columnGap,
|
|
8082
|
-
children
|
|
8083
|
-
}
|
|
8084
|
-
),
|
|
8085
|
-
/* @__PURE__ */ jsx(
|
|
8086
|
-
Icon$2,
|
|
8087
|
-
{
|
|
8088
|
-
"aria-hidden": true,
|
|
8089
|
-
svg: SvgCheck,
|
|
8090
|
-
inherit: true,
|
|
8091
|
-
className: styles$1["Icon"],
|
|
8092
|
-
style: {
|
|
8093
|
-
opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0
|
|
8094
|
-
}
|
|
8095
|
-
}
|
|
8096
|
-
)
|
|
8097
|
-
]
|
|
8098
|
-
}
|
|
8099
|
-
);
|
|
8100
|
-
}
|
|
8101
|
-
};
|
|
8102
|
-
const ComboboxLegacyItemAddNew = function({
|
|
8103
|
-
onSelection,
|
|
8104
|
-
...props
|
|
8105
|
-
}) {
|
|
8106
|
-
const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } = useComboboxLegacy();
|
|
8107
|
-
useEffect(() => {
|
|
8108
|
-
setHasAddNew?.(true);
|
|
8109
|
-
return () => {
|
|
8110
|
-
setHasAddNew?.(false);
|
|
8111
|
-
};
|
|
8112
|
-
}, []);
|
|
8113
|
-
useEffect(() => {
|
|
8114
|
-
setOnSelectItemAddNew?.(() => onSelection);
|
|
8115
|
-
return () => {
|
|
8116
|
-
setOnSelectItemAddNew?.(void 0);
|
|
8117
|
-
};
|
|
8118
|
-
}, [setOnSelectItemAddNew, onSelection]);
|
|
8119
|
-
const firstRenderRef = useRef(true);
|
|
8120
|
-
useEffect(() => {
|
|
8121
|
-
if (firstRenderRef.current === true) {
|
|
8122
|
-
firstRenderRef.current = false;
|
|
8123
|
-
}
|
|
8124
|
-
}, []);
|
|
8125
|
-
return !hasExactMatch && !firstRenderRef.current ? /* @__PURE__ */ jsx(
|
|
8126
|
-
ComboboxLegacyItem,
|
|
8127
|
-
{
|
|
8128
|
-
...props,
|
|
8129
|
-
item: ADD_NEW,
|
|
8130
|
-
index: items.length
|
|
8131
|
-
}
|
|
8132
|
-
) : null;
|
|
8133
|
-
};
|
|
8134
|
-
|
|
8135
|
-
const ComboboxLegacyEmpty = function({
|
|
8136
|
-
children
|
|
8137
|
-
}) {
|
|
8138
|
-
const { items, setHasEmpty } = useComboboxLegacy();
|
|
8139
|
-
useEffect(() => {
|
|
8140
|
-
setHasEmpty?.(true);
|
|
8141
|
-
return () => {
|
|
8142
|
-
setHasEmpty?.(false);
|
|
8143
|
-
};
|
|
8144
|
-
});
|
|
8145
|
-
return !items.length ? children : null;
|
|
8146
|
-
};
|
|
8147
|
-
|
|
8148
|
-
const ComboboxEmptyElement = function({
|
|
8149
|
-
children
|
|
8150
|
-
}) {
|
|
8151
|
-
const { items, setHasEmpty } = useCombobox$1();
|
|
8152
|
-
useEffect(() => {
|
|
8153
|
-
setHasEmpty?.(true);
|
|
8154
|
-
return () => {
|
|
8155
|
-
setHasEmpty?.(false);
|
|
8156
|
-
};
|
|
8157
|
-
});
|
|
8158
|
-
if (!supportsPopover()) return;
|
|
8159
|
-
return !items.length ? children : null;
|
|
8160
|
-
};
|
|
8161
|
-
const ComboboxEmpty = function({
|
|
8162
|
-
children
|
|
8163
|
-
}) {
|
|
8164
|
-
if (!supportsPopover())
|
|
8165
|
-
return /* @__PURE__ */ jsx(ComboboxLegacyEmpty, { children });
|
|
8166
|
-
return /* @__PURE__ */ jsx(ComboboxEmptyElement, { children });
|
|
8167
|
-
};
|
|
8168
|
-
|
|
8169
|
-
const item = "_item_11q9l_22";
|
|
8170
|
-
const group = "_group_11q9l_35";
|
|
8171
|
-
const combobox = "_combobox_11q9l_50";
|
|
8172
|
-
const listview = "_listview_11q9l_59";
|
|
8173
|
-
const empty = "_empty_11q9l_63";
|
|
8174
|
-
const Icon = "_Icon_11q9l_117";
|
|
8175
|
-
const scrolled = "_scrolled_11q9l_165";
|
|
8176
|
-
const styles = {
|
|
8177
|
-
item: item,
|
|
8178
|
-
group: group,
|
|
8179
|
-
combobox: combobox,
|
|
8180
|
-
"popover-content": "_popover-content_11q9l_54",
|
|
8181
|
-
listview: listview,
|
|
8182
|
-
empty: empty,
|
|
8183
|
-
"group-title": "_group-title_11q9l_75",
|
|
8184
|
-
"group-list": "_group-list_11q9l_81",
|
|
8185
|
-
Icon: Icon,
|
|
8186
|
-
"scroll-sentinel": "_scroll-sentinel_11q9l_120",
|
|
8187
|
-
"listview-option": "_listview-option_11q9l_129",
|
|
8188
|
-
"select-all": "_select-all_11q9l_159",
|
|
8189
|
-
scrolled: scrolled
|
|
8190
|
-
};
|
|
8191
|
-
|
|
8192
|
-
function useGroups({
|
|
8193
|
-
items,
|
|
8194
|
-
groupBy,
|
|
8195
|
-
groupToString,
|
|
8196
|
-
groupSorter = (a, b) => `${a}`.localeCompare(`${b}`)
|
|
8197
|
-
}) {
|
|
8198
|
-
const { groups, orderedItems } = useMemo(() => {
|
|
8199
|
-
if (!groupBy) return { groups: [], orderedItems: items };
|
|
8200
|
-
const groupsSansItems = [];
|
|
8201
|
-
const groupedItems = {};
|
|
8202
|
-
items.forEach((item) => {
|
|
8203
|
-
const groupKey = item[groupBy];
|
|
8204
|
-
if (!groupedItems[groupKey]) {
|
|
8205
|
-
groupedItems[groupKey] = [];
|
|
8206
|
-
}
|
|
8207
|
-
groupedItems[groupKey].push(item);
|
|
8208
|
-
});
|
|
8209
|
-
Object.keys(groupedItems).forEach((key) => {
|
|
8210
|
-
groupsSansItems.push({
|
|
8211
|
-
key,
|
|
8212
|
-
label: groupToString ? groupToString?.(key) : key
|
|
8213
|
-
});
|
|
8214
|
-
});
|
|
8215
|
-
groupsSansItems.sort((a, b) => groupSorter(a.key, b.key));
|
|
8216
|
-
const orderedItems2 = [];
|
|
8217
|
-
const groups2 = groupsSansItems.map((group) => ({
|
|
8218
|
-
...group,
|
|
8219
|
-
items: groupedItems[group.key].map((item) => {
|
|
8220
|
-
orderedItems2.push(item);
|
|
8221
|
-
return item;
|
|
8222
|
-
})
|
|
8223
|
-
}));
|
|
8224
|
-
return { groups: groups2, orderedItems: orderedItems2 };
|
|
8225
|
-
}, [groupBy, groupSorter, groupToString, items]);
|
|
8226
|
-
return { groups, orderedItems };
|
|
8227
|
-
}
|
|
8228
|
-
|
|
8229
|
-
const SelectSingle = function(props) {
|
|
8230
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
8231
|
-
const {
|
|
8232
|
-
className,
|
|
8233
|
-
style,
|
|
8234
|
-
children,
|
|
8235
|
-
open,
|
|
8236
|
-
disabled,
|
|
8237
|
-
readOnly,
|
|
8238
|
-
items,
|
|
8239
|
-
itemToString: itemToStringProp,
|
|
8240
|
-
itemToKey: itemToKeyProp,
|
|
8241
|
-
onChange,
|
|
8242
|
-
disableClearSelection = false,
|
|
8243
|
-
disableCloseOnClickOutside = false,
|
|
8244
|
-
disableMatchReferenceWidth = false,
|
|
8245
|
-
disableCloseOnSelectItem = false,
|
|
8246
|
-
loading = false,
|
|
8247
|
-
minPopoverHeight,
|
|
8248
|
-
root,
|
|
8249
|
-
environment: environmentProp,
|
|
8250
|
-
groupBy,
|
|
8251
|
-
groupToString,
|
|
8252
|
-
...rest
|
|
8253
|
-
} = componentProps;
|
|
8254
|
-
const ComboboxClassNames = cx(styles["combobox"], className);
|
|
8255
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
8256
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
8257
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
8258
|
-
const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
|
|
8259
|
-
const [, setForceClearInputValueOnSelectItems] = useState([]);
|
|
8260
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
8261
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
8262
|
-
const referenceRef = useRef(null);
|
|
8263
|
-
const contentRef = useRef(null);
|
|
8264
|
-
const listRef = useRef(null);
|
|
8265
|
-
const handleOutsidePress = (_e) => {
|
|
8266
|
-
if (disableCloseOnClickOutside) return;
|
|
8267
|
-
closeMenu();
|
|
8268
|
-
};
|
|
8269
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment$1();
|
|
8270
|
-
const itemToString = itemToStringProp ?? defaultItemToString$1;
|
|
8271
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey$1;
|
|
8272
|
-
const { groups, orderedItems } = useGroups({
|
|
8273
|
-
items,
|
|
8274
|
-
groupBy,
|
|
8275
|
-
groupToString
|
|
8276
|
-
});
|
|
8277
|
-
const {
|
|
8278
|
-
isOpen,
|
|
8279
|
-
getLabelProps,
|
|
8280
|
-
getToggleButtonProps,
|
|
8281
|
-
getMenuProps,
|
|
8282
|
-
getItemProps,
|
|
8283
|
-
highlightedIndex,
|
|
8284
|
-
selectedItem,
|
|
8285
|
-
selectItem,
|
|
8286
|
-
inputValue,
|
|
8287
|
-
closeMenu
|
|
8288
|
-
} = useSelect({
|
|
8289
|
-
...rest,
|
|
8290
|
-
items: orderedItems,
|
|
8291
|
-
itemToString,
|
|
8292
|
-
itemToKey,
|
|
8293
|
-
isOpen: open,
|
|
8294
|
-
initialIsOpen: open,
|
|
8295
|
-
environment: environmentProp ?? environment,
|
|
8296
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
8297
|
-
stateReducer(state, { type, changes }) {
|
|
8298
|
-
switch (type) {
|
|
8299
|
-
case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
8300
|
-
case useSelect.stateChangeTypes.ItemClick:
|
|
8301
|
-
return {
|
|
8302
|
-
...changes,
|
|
8303
|
-
isOpen: open != null ? open : forceCloseOnSelectItems.includes(changes.selectedItem) ? false : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
8304
|
-
highlightedIndex: disableCloseOnSelectItem ? state.highlightedIndex : changes.highlightedIndex
|
|
8305
|
-
};
|
|
8306
|
-
default:
|
|
8307
|
-
return changes;
|
|
8308
|
-
}
|
|
8309
|
-
},
|
|
8310
|
-
onSelectedItemChange(changes) {
|
|
8311
|
-
const { selectedItem: selectedItem2 } = changes;
|
|
8312
|
-
if (onChange != null)
|
|
8313
|
-
onChange(selectedItem2 != null ? selectedItem2 : null);
|
|
8314
|
-
},
|
|
8315
|
-
isItemDisabled(item) {
|
|
8316
|
-
if (isDisabled || isReadOnly) {
|
|
8317
|
-
return !!isDisabled || !!isReadOnly;
|
|
8318
|
-
}
|
|
8319
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
8320
|
-
return true;
|
|
8321
|
-
}
|
|
8322
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
8323
|
-
return true;
|
|
8324
|
-
}
|
|
8325
|
-
if (disabledItems.includes(item)) {
|
|
8326
|
-
return true;
|
|
8327
|
-
}
|
|
8328
|
-
return false;
|
|
8329
|
-
}
|
|
8330
|
-
});
|
|
8331
|
-
useEffect(() => {
|
|
8332
|
-
setIsDisabled(disabled);
|
|
8333
|
-
}, [disabled]);
|
|
8334
|
-
useEffect(() => {
|
|
8335
|
-
setIsReadOnly(readOnly);
|
|
8336
|
-
}, [readOnly]);
|
|
8337
|
-
return /* @__PURE__ */ jsx(
|
|
8338
|
-
ComboboxContext.Provider,
|
|
8339
|
-
{
|
|
8340
|
-
value: {
|
|
8341
|
-
multiple: false,
|
|
8342
|
-
select: true,
|
|
8343
|
-
disableClearSelection,
|
|
8344
|
-
items: orderedItems,
|
|
8345
|
-
itemToString,
|
|
8346
|
-
itemToKey,
|
|
8347
|
-
isOpen,
|
|
8348
|
-
getLabelProps,
|
|
8349
|
-
getToggleButtonProps,
|
|
8350
|
-
getMenuProps,
|
|
8351
|
-
getItemProps,
|
|
8352
|
-
highlightedIndex,
|
|
8353
|
-
selectedItem,
|
|
8354
|
-
selectedItems: [],
|
|
8355
|
-
disabledItems,
|
|
8356
|
-
setDisabledItems,
|
|
8357
|
-
setForceCloseOnSelectItems,
|
|
8358
|
-
setForceClearInputValueOnSelectItems,
|
|
8359
|
-
selectItem,
|
|
8360
|
-
inputValue,
|
|
8361
|
-
isDisabled,
|
|
8362
|
-
isReadOnly,
|
|
8363
|
-
setIsReadOnly,
|
|
8364
|
-
setIsDisabled,
|
|
8365
|
-
hasDisabledPopover,
|
|
8366
|
-
setHasDisabledPopover,
|
|
8367
|
-
hasEmpty,
|
|
8368
|
-
setHasEmpty,
|
|
8369
|
-
loading,
|
|
8370
|
-
referenceRef,
|
|
8371
|
-
contentRef,
|
|
8372
|
-
closeMenu,
|
|
8373
|
-
groups,
|
|
8374
|
-
groupBy,
|
|
8375
|
-
groupToString,
|
|
8376
|
-
listRef
|
|
8377
|
-
},
|
|
8378
|
-
children: /* @__PURE__ */ jsx(
|
|
8379
|
-
"div",
|
|
8380
|
-
{
|
|
8381
|
-
className: ComboboxClassNames,
|
|
8382
|
-
"data-anv": "combobox",
|
|
8383
|
-
style: { ...style, ...layoutStyles },
|
|
8384
|
-
ref: wrapperDivRef,
|
|
8385
|
-
children: /* @__PURE__ */ jsx(
|
|
8386
|
-
Popover,
|
|
8387
|
-
{
|
|
8388
|
-
open: isOpen,
|
|
8389
|
-
noPadding: true,
|
|
8390
|
-
disableCaret: true,
|
|
8391
|
-
fitScreen: true,
|
|
8392
|
-
disableFlipFallback: true,
|
|
8393
|
-
placement: "bottom-start",
|
|
8394
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
8395
|
-
disableCloseOnClickOutside,
|
|
8396
|
-
onOutsidePress: handleOutsidePress,
|
|
8397
|
-
minHeight: minPopoverHeight,
|
|
8398
|
-
children
|
|
8399
|
-
}
|
|
8400
|
-
)
|
|
8401
|
-
}
|
|
8402
|
-
)
|
|
8403
|
-
}
|
|
8404
|
-
);
|
|
8405
|
-
};
|
|
8406
|
-
const SelectMultiple = function(props) {
|
|
8407
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
8408
|
-
const {
|
|
8409
|
-
className,
|
|
8410
|
-
style,
|
|
8411
|
-
children,
|
|
8412
|
-
open,
|
|
8413
|
-
items,
|
|
8414
|
-
itemToString: itemToStringProp,
|
|
8415
|
-
itemToKey: itemToKeyProp,
|
|
8416
|
-
onChange,
|
|
8417
|
-
onSelectedItemsChange,
|
|
8418
|
-
onStateChange,
|
|
8419
|
-
disableCloseOnClickOutside = false,
|
|
8420
|
-
disableMatchReferenceWidth = false,
|
|
8421
|
-
disableCloseOnSelectItem = false,
|
|
8422
|
-
loading = false,
|
|
8423
|
-
minPopoverHeight,
|
|
8424
|
-
root,
|
|
8425
|
-
disabled,
|
|
8426
|
-
readOnly,
|
|
8427
|
-
stateReducer: _,
|
|
8428
|
-
initialSelectedItems,
|
|
8429
|
-
initialActiveIndex,
|
|
8430
|
-
defaultSelectedItems,
|
|
8431
|
-
defaultActiveIndex,
|
|
8432
|
-
activeIndex: activeIndexProp,
|
|
8433
|
-
selectedItems: selectedItemsProp,
|
|
8434
|
-
environment: environmentProp,
|
|
8435
|
-
groupBy,
|
|
8436
|
-
groupToString,
|
|
8437
|
-
selectAll,
|
|
8438
|
-
...rest
|
|
8439
|
-
} = componentProps;
|
|
8440
|
-
const ComboboxClassNames = cx(styles["combobox"], className);
|
|
8441
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
8442
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
8443
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
8444
|
-
const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
|
|
8445
|
-
const [, setForceClearInputValueOnSelectItems] = useState([]);
|
|
8446
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
8447
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
8448
|
-
const referenceRef = useRef(null);
|
|
8449
|
-
const contentRef = useRef(null);
|
|
8450
|
-
const listRef = useRef(null);
|
|
8451
|
-
const handleOutsidePress = (_e) => {
|
|
8452
|
-
if (disableCloseOnClickOutside) return;
|
|
8453
|
-
closeMenu();
|
|
8454
|
-
};
|
|
8455
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment$1();
|
|
8456
|
-
const itemToString = itemToStringProp ?? defaultItemToString$1;
|
|
8457
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey$1;
|
|
8458
|
-
const { groups, orderedItems: orderedItemsBase } = useGroups({
|
|
8459
|
-
items,
|
|
8460
|
-
groupBy,
|
|
8461
|
-
groupToString
|
|
8462
|
-
});
|
|
8463
|
-
const orderedItems = selectAll ? [SELECT_ALL, ...orderedItemsBase] : orderedItemsBase;
|
|
8464
|
-
const {
|
|
8465
|
-
getSelectedItemProps,
|
|
8466
|
-
getDropdownProps,
|
|
8467
|
-
reset,
|
|
8468
|
-
selectedItems,
|
|
8469
|
-
addSelectedItem,
|
|
8470
|
-
removeSelectedItem,
|
|
8471
|
-
setSelectedItems
|
|
8472
|
-
} = useMultipleSelection({
|
|
8473
|
-
itemToKey,
|
|
8474
|
-
initialSelectedItems,
|
|
8475
|
-
initialActiveIndex,
|
|
8476
|
-
defaultSelectedItems,
|
|
8477
|
-
defaultActiveIndex,
|
|
8478
|
-
activeIndex: activeIndexProp,
|
|
8479
|
-
selectedItems: selectedItemsProp,
|
|
8480
|
-
environment: environmentProp ?? environment,
|
|
8481
|
-
stateReducer(state, { type, changes }) {
|
|
8482
|
-
switch (type) {
|
|
8483
|
-
// the Chip itself will handle "Backspace" and "Delete"
|
|
8484
|
-
// just return previous state
|
|
8485
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace:
|
|
8486
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:
|
|
8487
|
-
return state;
|
|
8488
|
-
case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
|
|
8489
|
-
return { ...changes, activeIndex: -1 };
|
|
8490
|
-
case useMultipleSelection.stateChangeTypes.FunctionReset:
|
|
8491
|
-
return { ...changes, selectedItems: [] };
|
|
8492
|
-
default:
|
|
8493
|
-
return changes;
|
|
8494
|
-
}
|
|
8495
|
-
},
|
|
8496
|
-
onStateChange,
|
|
8497
|
-
onSelectedItemsChange(changes) {
|
|
8498
|
-
const { selectedItems: selectedItems2 } = changes;
|
|
8499
|
-
if (onChange != null) onChange(selectedItems2);
|
|
8500
|
-
if (onSelectedItemsChange != null) onSelectedItemsChange(changes);
|
|
8501
|
-
}
|
|
8502
|
-
});
|
|
8503
|
-
const {
|
|
8504
|
-
isOpen,
|
|
8505
|
-
getLabelProps,
|
|
8506
|
-
getToggleButtonProps,
|
|
8507
|
-
getMenuProps,
|
|
8508
|
-
getItemProps,
|
|
8509
|
-
highlightedIndex,
|
|
8510
|
-
selectedItem,
|
|
8511
|
-
selectItem,
|
|
8512
|
-
inputValue,
|
|
8513
|
-
closeMenu
|
|
8514
|
-
} = useSelect({
|
|
8515
|
-
...rest,
|
|
8516
|
-
items: orderedItems,
|
|
8517
|
-
itemToString,
|
|
8518
|
-
itemToKey,
|
|
8519
|
-
selectedItem: null,
|
|
8520
|
-
isOpen: open,
|
|
8521
|
-
initialIsOpen: open,
|
|
8522
|
-
environment: environmentProp ?? environment,
|
|
8523
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
8524
|
-
stateReducer(state, { type, changes }) {
|
|
8525
|
-
switch (type) {
|
|
8526
|
-
case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
8527
|
-
case useSelect.stateChangeTypes.ItemClick:
|
|
8528
|
-
return {
|
|
8529
|
-
...changes,
|
|
8530
|
-
isOpen: open != null ? open : forceCloseOnSelectItems.includes(changes.selectedItem) ? false : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
8531
|
-
highlightedIndex: disableCloseOnSelectItem ? state.highlightedIndex : changes.highlightedIndex
|
|
8532
|
-
};
|
|
8533
|
-
default:
|
|
8534
|
-
return changes;
|
|
8535
|
-
}
|
|
8536
|
-
},
|
|
8537
|
-
onStateChange(changes) {
|
|
8538
|
-
const { type, selectedItem: newSelectedItem } = changes;
|
|
8539
|
-
switch (type) {
|
|
8540
|
-
case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
8541
|
-
case useSelect.stateChangeTypes.ItemClick:
|
|
8542
|
-
case useSelect.stateChangeTypes.ToggleButtonBlur:
|
|
8543
|
-
if (changes.selectedItem === SELECT_ALL) {
|
|
8544
|
-
selectAll?.onSelection();
|
|
8545
|
-
return {
|
|
8546
|
-
...changes,
|
|
8547
|
-
selectedItem: null
|
|
8548
|
-
};
|
|
8549
|
-
}
|
|
8550
|
-
if (newSelectedItem != null) {
|
|
8551
|
-
const itemAlreadySelected = selectedItems.some(
|
|
8552
|
-
(item) => itemToKey(item) === itemToKey(newSelectedItem)
|
|
8553
|
-
);
|
|
8554
|
-
if (itemAlreadySelected) {
|
|
8555
|
-
removeSelectedItem(newSelectedItem);
|
|
8556
|
-
} else {
|
|
8557
|
-
addSelectedItem(newSelectedItem);
|
|
8558
|
-
}
|
|
8559
|
-
}
|
|
8560
|
-
break;
|
|
8561
|
-
}
|
|
8562
|
-
onStateChange?.(changes);
|
|
8563
|
-
},
|
|
8564
|
-
isItemDisabled(item) {
|
|
8565
|
-
if (isDisabled || isReadOnly) {
|
|
8566
|
-
return !!isDisabled || !!isReadOnly;
|
|
8567
|
-
}
|
|
8568
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
8569
|
-
return true;
|
|
8570
|
-
}
|
|
8571
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
8572
|
-
return true;
|
|
8573
|
-
}
|
|
8574
|
-
if (disabledItems.includes(item)) {
|
|
8575
|
-
return true;
|
|
8576
|
-
}
|
|
8577
|
-
return false;
|
|
8578
|
-
},
|
|
8579
|
-
onHighlightedIndexChange(changes) {
|
|
8580
|
-
if (selectAll && changes.highlightedIndex === 0 && [
|
|
8581
|
-
useSelect.stateChangeTypes.ToggleButtonKeyDownArrowDown,
|
|
8582
|
-
useSelect.stateChangeTypes.ToggleButtonKeyDownArrowUp,
|
|
8583
|
-
useSelect.stateChangeTypes.ToggleButtonKeyDownPageDown,
|
|
8584
|
-
useSelect.stateChangeTypes.ToggleButtonKeyDownPageUp,
|
|
8585
|
-
useSelect.stateChangeTypes.ToggleButtonKeyDownHome,
|
|
8586
|
-
useSelect.stateChangeTypes.ToggleButtonKeyDownEnd
|
|
8587
|
-
].includes(changes.type) && listRef.current) {
|
|
8588
|
-
const scrollParent = getScrollParent(listRef.current);
|
|
8589
|
-
if (scrollParent) {
|
|
8590
|
-
scrollParent.scrollTop = 0;
|
|
8591
|
-
}
|
|
8592
|
-
}
|
|
8593
|
-
}
|
|
8594
|
-
});
|
|
8595
|
-
useEffect(() => {
|
|
8596
|
-
setIsDisabled(disabled);
|
|
8597
|
-
}, [disabled]);
|
|
8598
|
-
useEffect(() => {
|
|
8599
|
-
setIsReadOnly(readOnly);
|
|
8600
|
-
}, [readOnly]);
|
|
8601
|
-
return /* @__PURE__ */ jsx(
|
|
8602
|
-
ComboboxContext.Provider,
|
|
8603
|
-
{
|
|
8604
|
-
value: {
|
|
8605
|
-
multiple: true,
|
|
8606
|
-
select: true,
|
|
8607
|
-
items: orderedItems,
|
|
8608
|
-
itemToString,
|
|
8609
|
-
itemToKey,
|
|
8610
|
-
isOpen,
|
|
8611
|
-
getLabelProps,
|
|
8612
|
-
getToggleButtonProps,
|
|
8613
|
-
getMenuProps,
|
|
8614
|
-
getItemProps,
|
|
8615
|
-
highlightedIndex,
|
|
8616
|
-
selectedItem,
|
|
8617
|
-
selectedItems,
|
|
8618
|
-
disabledItems,
|
|
8619
|
-
setDisabledItems,
|
|
8620
|
-
setForceCloseOnSelectItems,
|
|
8621
|
-
setForceClearInputValueOnSelectItems,
|
|
8622
|
-
getSelectedItemProps,
|
|
8623
|
-
getDropdownProps,
|
|
8624
|
-
reset,
|
|
8625
|
-
addSelectedItem,
|
|
8626
|
-
removeSelectedItem,
|
|
8627
|
-
setSelectedItems,
|
|
8628
|
-
selectItem,
|
|
8629
|
-
inputValue,
|
|
8630
|
-
isDisabled,
|
|
8631
|
-
isReadOnly,
|
|
8632
|
-
setIsReadOnly,
|
|
8633
|
-
setIsDisabled,
|
|
8634
|
-
hasDisabledPopover,
|
|
8635
|
-
setHasDisabledPopover,
|
|
8636
|
-
hasEmpty,
|
|
8637
|
-
setHasEmpty,
|
|
8638
|
-
loading,
|
|
8639
|
-
referenceRef,
|
|
8640
|
-
contentRef,
|
|
8641
|
-
closeMenu,
|
|
8642
|
-
groupBy,
|
|
8643
|
-
groupToString,
|
|
8644
|
-
groups,
|
|
8645
|
-
listRef,
|
|
8646
|
-
selectAll
|
|
8647
|
-
},
|
|
8648
|
-
children: /* @__PURE__ */ jsx(
|
|
8649
|
-
"div",
|
|
8650
|
-
{
|
|
8651
|
-
className: ComboboxClassNames,
|
|
8652
|
-
"data-anv": "combobox",
|
|
8653
|
-
style: { ...style, ...layoutStyles },
|
|
8654
|
-
ref: wrapperDivRef,
|
|
8655
|
-
children: /* @__PURE__ */ jsx(
|
|
8656
|
-
Popover,
|
|
8657
|
-
{
|
|
8658
|
-
open: !isDisabled && isOpen,
|
|
8659
|
-
noPadding: true,
|
|
8660
|
-
disableCaret: true,
|
|
8661
|
-
fitScreen: true,
|
|
8662
|
-
disableFlipFallback: true,
|
|
8663
|
-
placement: "bottom-start",
|
|
8664
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
8665
|
-
disableCloseOnClickOutside,
|
|
8666
|
-
onOutsidePress: handleOutsidePress,
|
|
8667
|
-
minHeight: minPopoverHeight,
|
|
8668
|
-
children
|
|
8669
|
-
}
|
|
8670
|
-
)
|
|
8671
|
-
}
|
|
8672
|
-
)
|
|
8673
|
-
}
|
|
8674
|
-
);
|
|
8675
|
-
};
|
|
8676
|
-
const ComboboxSelect = function(props) {
|
|
8677
|
-
if (!supportsPopover()) {
|
|
8678
|
-
if (isMultiple(props)) {
|
|
8679
|
-
return /* @__PURE__ */ jsx(SelectLegacyMultiple, { ...props });
|
|
8680
|
-
} else {
|
|
8681
|
-
return /* @__PURE__ */ jsx(SelectLegacySingle, { ...props });
|
|
8682
|
-
}
|
|
8683
|
-
}
|
|
8684
|
-
if (isMultiple(props)) {
|
|
8685
|
-
return /* @__PURE__ */ jsx(SelectMultiple, { ...props });
|
|
8686
|
-
} else {
|
|
8687
|
-
return /* @__PURE__ */ jsx(SelectSingle, { ...props });
|
|
8688
|
-
}
|
|
8689
|
-
};
|
|
8690
|
-
|
|
8691
|
-
const ComboboxItemVisual = forwardRef(
|
|
8692
|
-
({
|
|
8693
|
-
children,
|
|
8694
|
-
disabled,
|
|
8695
|
-
checked,
|
|
8696
|
-
hideCheckbox,
|
|
8697
|
-
rootDivProps,
|
|
8698
|
-
flexProps
|
|
8699
|
-
}, ref) => {
|
|
8700
|
-
return /* @__PURE__ */ jsxs(
|
|
8701
|
-
"div",
|
|
8702
|
-
{
|
|
8703
|
-
ref,
|
|
8704
|
-
"data-anv": "combobox-item",
|
|
8705
|
-
...rootDivProps,
|
|
8706
|
-
className: cx(
|
|
8707
|
-
styles["listview-option"],
|
|
8708
|
-
listViewStyles["listview-option"],
|
|
8709
|
-
rootDivProps.className
|
|
8710
|
-
),
|
|
8711
|
-
children: [
|
|
8712
|
-
!hideCheckbox ? /* @__PURE__ */ jsx("div", { className: cx(styles["cell"], listViewStyles["cell"]), children: /* @__PURE__ */ jsx("div", { className: checkboxStyles["wrapper"], children: /* @__PURE__ */ jsxs("div", { className: checkboxStyles["checkbox"], children: [
|
|
8713
|
-
/* @__PURE__ */ jsx(
|
|
8714
|
-
"input",
|
|
8715
|
-
{
|
|
8716
|
-
type: "checkbox",
|
|
8717
|
-
checked,
|
|
8718
|
-
"aria-checked": checked,
|
|
8719
|
-
"aria-label": "Select",
|
|
8720
|
-
readOnly: true,
|
|
8721
|
-
tabIndex: -1,
|
|
8722
|
-
...disabled ? { disabled: true } : {}
|
|
8723
|
-
}
|
|
8724
|
-
),
|
|
8725
|
-
/* @__PURE__ */ jsxs("span", { className: checkboxStyles["icon-wrapper"], "aria-hidden": true, children: [
|
|
8726
|
-
/* @__PURE__ */ jsx(
|
|
8727
|
-
Icon$2,
|
|
8728
|
-
{
|
|
8729
|
-
size: "large",
|
|
8730
|
-
svg: SvgIndeterminateCheckBox,
|
|
8731
|
-
className: checkboxStyles["icon-indeterminate"]
|
|
8732
|
-
}
|
|
8733
|
-
),
|
|
8734
|
-
/* @__PURE__ */ jsx(
|
|
8735
|
-
Icon$2,
|
|
8736
|
-
{
|
|
8737
|
-
size: "large",
|
|
8738
|
-
svg: SvgCheckBox,
|
|
8739
|
-
className: checkboxStyles["icon-checked"]
|
|
8740
|
-
}
|
|
8741
|
-
),
|
|
8742
|
-
/* @__PURE__ */ jsx(
|
|
8743
|
-
Icon$2,
|
|
8744
|
-
{
|
|
8745
|
-
size: "large",
|
|
8746
|
-
svg: SvgCheckBoxOutlineBlank,
|
|
8747
|
-
className: checkboxStyles["icon-unchecked"]
|
|
8748
|
-
}
|
|
8749
|
-
)
|
|
8750
|
-
] }),
|
|
8751
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true })
|
|
8752
|
-
] }) }) }) : null,
|
|
8753
|
-
/* @__PURE__ */ jsx(Flex, { grow: 1, shrink: 1, ...flexProps, children })
|
|
8754
|
-
]
|
|
8755
|
-
}
|
|
8756
|
-
);
|
|
8757
|
-
}
|
|
8758
|
-
);
|
|
8759
|
-
ComboboxItemVisual.displayName = "ComboboxItemVisual";
|
|
8760
|
-
|
|
8761
|
-
const ComboboxSelectAll = function({ className }) {
|
|
8762
|
-
const {
|
|
8763
|
-
getItemProps,
|
|
8764
|
-
setForceCloseOnSelectItems,
|
|
8765
|
-
highlightedIndex,
|
|
8766
|
-
items,
|
|
8767
|
-
selectAll
|
|
8768
|
-
} = useCombobox$1();
|
|
8769
|
-
const item = SELECT_ALL;
|
|
8770
|
-
const index = items.indexOf(item);
|
|
8771
|
-
const ref = useRef(null);
|
|
8772
|
-
useEffect(() => {
|
|
8773
|
-
return () => {
|
|
8774
|
-
setForceCloseOnSelectItems((forceCloseOnSelectItems) => {
|
|
8775
|
-
if (forceCloseOnSelectItems.includes(item)) {
|
|
8776
|
-
return forceCloseOnSelectItems.filter(
|
|
8777
|
-
(prevItem) => prevItem !== item
|
|
8778
|
-
);
|
|
8779
|
-
} else {
|
|
8780
|
-
return forceCloseOnSelectItems;
|
|
8781
|
-
}
|
|
8782
|
-
});
|
|
8783
|
-
};
|
|
8784
|
-
}, [item, setForceCloseOnSelectItems]);
|
|
8785
|
-
return /* @__PURE__ */ jsx(
|
|
8786
|
-
ComboboxItemVisual,
|
|
8787
|
-
{
|
|
8788
|
-
ref,
|
|
8789
|
-
rootDivProps: getItemProps({
|
|
8790
|
-
item: SELECT_ALL,
|
|
8791
|
-
index,
|
|
8792
|
-
"aria-selected": highlightedIndex === index,
|
|
8793
|
-
className: cx(styles["select-all"], className)
|
|
8794
|
-
}),
|
|
8795
|
-
hideCheckbox: false,
|
|
8796
|
-
disabled: false,
|
|
8797
|
-
checked: !!selectAll?.isChecked,
|
|
8798
|
-
children: selectAll?.label
|
|
8799
|
-
},
|
|
8800
|
-
"select-all"
|
|
8801
|
-
);
|
|
8802
|
-
};
|
|
8803
|
-
|
|
8804
|
-
const ComboboxGroupContext = createContext(null);
|
|
8805
|
-
const useComboboxGroupContext = () => useContext(ComboboxGroupContext);
|
|
8806
|
-
|
|
8807
|
-
const ComboboxGroupList = function({
|
|
8808
|
-
children,
|
|
8809
|
-
...rest
|
|
8810
|
-
}) {
|
|
8811
|
-
const {
|
|
8812
|
-
getMenuProps,
|
|
8813
|
-
multiple,
|
|
8814
|
-
items,
|
|
8815
|
-
hasAddNew = false,
|
|
8816
|
-
hasEmpty,
|
|
8817
|
-
loading,
|
|
8818
|
-
selectAll,
|
|
8819
|
-
listRef
|
|
8820
|
-
} = useCombobox$1();
|
|
8821
|
-
const scrollSentinelRef = useRef(null);
|
|
8822
|
-
const [isScrolled, setIsScrolled] = useState(false);
|
|
8823
|
-
const { key: groupKey } = useComboboxGroupContext() ?? {};
|
|
8824
|
-
const isAGroup = !!groupKey;
|
|
8825
|
-
useEffect(() => {
|
|
8826
|
-
if (!scrollSentinelRef.current) return;
|
|
8827
|
-
const intersectionObserver = new IntersectionObserver(
|
|
8828
|
-
(entries) => {
|
|
8829
|
-
entries.forEach((entry) => {
|
|
8830
|
-
if (!entry.isIntersecting) {
|
|
8831
|
-
setIsScrolled(true);
|
|
8832
|
-
} else {
|
|
8833
|
-
setIsScrolled(false);
|
|
8834
|
-
}
|
|
8835
|
-
});
|
|
8836
|
-
},
|
|
8837
|
-
{ threshold: 0 }
|
|
8838
|
-
);
|
|
8839
|
-
intersectionObserver.observe(scrollSentinelRef.current);
|
|
8840
|
-
return () => {
|
|
8841
|
-
intersectionObserver.disconnect();
|
|
8842
|
-
};
|
|
8843
|
-
}, [scrollSentinelRef, setIsScrolled]);
|
|
8844
|
-
if (!supportsPopover())
|
|
8845
|
-
return /* @__PURE__ */ jsx(ComboboxLegacyList, { ...rest, children });
|
|
8846
|
-
if (isAGroup) {
|
|
8847
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
8848
|
-
}
|
|
8849
|
-
if (multiple) {
|
|
8850
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8851
|
-
/* @__PURE__ */ jsxs(
|
|
8852
|
-
"ul",
|
|
8853
|
-
{
|
|
8854
|
-
...getMenuProps(rest),
|
|
8855
|
-
ref: listRef,
|
|
8856
|
-
"data-anv": "combobox-list",
|
|
8857
|
-
className: cx(styles["listview"], listViewStyles["listview"], {
|
|
8858
|
-
[styles.scrolled]: isScrolled
|
|
8859
|
-
}),
|
|
8860
|
-
style: {
|
|
8861
|
-
display: items.length || hasAddNew ? void 0 : "none"
|
|
8862
|
-
},
|
|
8863
|
-
children: [
|
|
8864
|
-
/* @__PURE__ */ jsx("div", { ref: scrollSentinelRef, className: styles["scroll-sentinel"] }),
|
|
8865
|
-
!loading && selectAll && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8866
|
-
/* @__PURE__ */ jsx(ComboboxSelectAll, {}),
|
|
8867
|
-
/* @__PURE__ */ jsx(Divider, {})
|
|
8868
|
-
] }),
|
|
8869
|
-
children
|
|
8870
|
-
]
|
|
8871
|
-
}
|
|
8872
|
-
),
|
|
8873
|
-
loading ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Spinner, { size: "small" }) }) }) : !items.length && !hasEmpty ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) : null
|
|
8874
|
-
] });
|
|
8875
|
-
} else {
|
|
8876
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8877
|
-
/* @__PURE__ */ jsx(
|
|
8878
|
-
"ul",
|
|
8879
|
-
{
|
|
8880
|
-
...getMenuProps(rest),
|
|
8881
|
-
ref: listRef,
|
|
8882
|
-
"data-anv": "combobox-list",
|
|
8883
|
-
className: listboxStyles["listbox"],
|
|
8884
|
-
style: {
|
|
8885
|
-
display: items.length || hasAddNew ? void 0 : "none"
|
|
8886
|
-
},
|
|
8887
|
-
children
|
|
8888
|
-
}
|
|
8889
|
-
),
|
|
8890
|
-
loading ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Spinner, { size: "small" }) }) }) : !items.length && !hasEmpty ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) : null
|
|
8891
|
-
] });
|
|
8892
|
-
}
|
|
8893
|
-
};
|
|
8894
|
-
|
|
8895
|
-
const ComboboxGroupProvider = ComboboxGroupContext.Provider;
|
|
8896
|
-
|
|
8897
|
-
const ComboboxContentElement = function({
|
|
8898
|
-
children,
|
|
8899
|
-
className,
|
|
8900
|
-
disablePopover = false,
|
|
8901
|
-
...rest
|
|
8902
|
-
}) {
|
|
8903
|
-
const {
|
|
8904
|
-
items,
|
|
8905
|
-
itemToKey,
|
|
8906
|
-
inputValue,
|
|
8907
|
-
selectedItem,
|
|
8908
|
-
selectedItems,
|
|
8909
|
-
setHasDisabledPopover,
|
|
8910
|
-
getMenuProps,
|
|
8911
|
-
getItemProps,
|
|
8912
|
-
isDisabled,
|
|
8913
|
-
isReadOnly,
|
|
8914
|
-
contentRef,
|
|
8915
|
-
closeMenu,
|
|
8916
|
-
groups
|
|
8917
|
-
} = useCombobox$1();
|
|
8918
|
-
const ComboboxPopoverContentClassNames = cx(
|
|
8919
|
-
styles["popover-content"],
|
|
8920
|
-
className
|
|
8921
|
-
);
|
|
8922
|
-
useEffect(() => {
|
|
8923
|
-
setHasDisabledPopover(disablePopover);
|
|
8924
|
-
return () => {
|
|
8925
|
-
setHasDisabledPopover(false);
|
|
8926
|
-
};
|
|
8927
|
-
}, [disablePopover, setHasDisabledPopover]);
|
|
8928
|
-
const context = usePopoverContext();
|
|
8929
|
-
const handleBlur = (_e) => {
|
|
8930
|
-
if (context?.controlled) return;
|
|
8931
|
-
context?.popover.close?.(closeMenu);
|
|
8932
|
-
};
|
|
8933
|
-
const resolveChildren = (groupItems) => children?.({
|
|
8934
|
-
items: groupItems,
|
|
8935
|
-
inputValue,
|
|
8936
|
-
selectedItem,
|
|
8937
|
-
getMenuProps,
|
|
8938
|
-
getItemProps,
|
|
8939
|
-
listProps: {
|
|
8940
|
-
...getMenuProps({}, { suppressRefError: true }),
|
|
8941
|
-
style: {
|
|
8942
|
-
display: groupItems.length ? void 0 : "none",
|
|
8943
|
-
overflow: "auto"
|
|
8944
|
-
}
|
|
8945
|
-
},
|
|
8946
|
-
options: groupItems.map((item, index) => ({
|
|
8947
|
-
optionProps: {
|
|
8948
|
-
...getItemProps({
|
|
8949
|
-
item,
|
|
8950
|
-
index
|
|
8951
|
-
}),
|
|
8952
|
-
tabIndex: disablePopover ? -1 : void 0,
|
|
8953
|
-
selected: itemToKey(selectedItem) === itemToKey(item) || selectedItems.some(
|
|
8954
|
-
(selectedItem2) => itemToKey(selectedItem2) === itemToKey(item)
|
|
8955
|
-
),
|
|
8956
|
-
disabled: !!isDisabled || !!isReadOnly
|
|
8957
|
-
// also see "isItemDisabled" function
|
|
8958
|
-
},
|
|
8959
|
-
item,
|
|
8960
|
-
index
|
|
8961
|
-
}))
|
|
8962
|
-
});
|
|
8963
|
-
const id = useId();
|
|
8964
|
-
const filterAlreadyRenderedItems = (items2) => {
|
|
8965
|
-
return items2.filter((item) => item !== ADD_NEW$1 && item !== SELECT_ALL);
|
|
8966
|
-
};
|
|
8967
|
-
return disablePopover ? /* @__PURE__ */ jsx(
|
|
8968
|
-
"div",
|
|
8969
|
-
{
|
|
8970
|
-
...rest,
|
|
8971
|
-
className: ComboboxPopoverContentClassNames,
|
|
8972
|
-
ref: contentRef,
|
|
8973
|
-
onBlur: handleBlur,
|
|
8974
|
-
children: groups?.length ? /* @__PURE__ */ jsx(ComboboxGroupList, { children: groups.map((group, i) => /* @__PURE__ */ jsxs(ComboboxGroupProvider, { value: group, children: [
|
|
8975
|
-
i !== 0 && /* @__PURE__ */ jsx(Divider, {}),
|
|
8976
|
-
/* @__PURE__ */ jsxs(
|
|
8977
|
-
"li",
|
|
8978
|
-
{
|
|
8979
|
-
"aria-labelledby": `${id}-group-${group.key}`,
|
|
8980
|
-
className: cx(styles["group"], listboxStyles["listbox"]),
|
|
8981
|
-
"data-anv": "combobox-group",
|
|
8982
|
-
role: "group",
|
|
8983
|
-
children: [
|
|
8984
|
-
group.label != null ? /* @__PURE__ */ jsx(
|
|
8985
|
-
Text,
|
|
8986
|
-
{
|
|
8987
|
-
className: styles["group-title"],
|
|
8988
|
-
id: `${id}-group-${group.key}`,
|
|
8989
|
-
variant: "eyebrow",
|
|
8990
|
-
children: group.label
|
|
8991
|
-
}
|
|
8992
|
-
) : null,
|
|
8993
|
-
/* @__PURE__ */ jsx("ul", { className: styles["group-list"], children: resolveChildren(filterAlreadyRenderedItems(group.items)) })
|
|
8994
|
-
]
|
|
8995
|
-
}
|
|
8996
|
-
)
|
|
8997
|
-
] }, group.key)) }) : resolveChildren(filterAlreadyRenderedItems(items))
|
|
8998
|
-
}
|
|
8999
|
-
) : /* @__PURE__ */ jsx(
|
|
9000
|
-
Popover.Content,
|
|
9001
|
-
{
|
|
9002
|
-
"data-anv": "combobox-content",
|
|
9003
|
-
...rest,
|
|
9004
|
-
className: ComboboxPopoverContentClassNames,
|
|
9005
|
-
ref: getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref,
|
|
9006
|
-
tabIndex: -1,
|
|
9007
|
-
onBlur: handleBlur,
|
|
9008
|
-
children: groups?.length ? /* @__PURE__ */ jsx(ComboboxGroupList, { children: groups.map((group, i) => /* @__PURE__ */ jsxs(ComboboxGroupProvider, { value: group, children: [
|
|
9009
|
-
i !== 0 && /* @__PURE__ */ jsx(Divider, {}),
|
|
9010
|
-
/* @__PURE__ */ jsxs(
|
|
9011
|
-
"li",
|
|
9012
|
-
{
|
|
9013
|
-
"aria-labelledby": `${id}-group-${group.key}`,
|
|
9014
|
-
className: cx(styles["group"], listboxStyles["listbox"]),
|
|
9015
|
-
"data-anv": "combobox-group",
|
|
9016
|
-
role: "group",
|
|
9017
|
-
children: [
|
|
9018
|
-
group.label != null ? /* @__PURE__ */ jsx(
|
|
9019
|
-
Text,
|
|
9020
|
-
{
|
|
9021
|
-
className: styles["group-title"],
|
|
9022
|
-
id: `${id}-group-${group.key}`,
|
|
9023
|
-
variant: "eyebrow",
|
|
9024
|
-
children: group.label
|
|
9025
|
-
}
|
|
9026
|
-
) : null,
|
|
9027
|
-
/* @__PURE__ */ jsx("ul", { className: styles["group-list"], children: resolveChildren(filterAlreadyRenderedItems(group.items)) })
|
|
9028
|
-
]
|
|
9029
|
-
}
|
|
9030
|
-
)
|
|
9031
|
-
] }, group.key)) }) : resolveChildren(filterAlreadyRenderedItems(items))
|
|
9032
|
-
}
|
|
9033
|
-
);
|
|
9034
|
-
};
|
|
9035
|
-
const ComboboxContent = function({
|
|
9036
|
-
children,
|
|
9037
|
-
className,
|
|
9038
|
-
disablePopover = false,
|
|
9039
|
-
...rest
|
|
9040
|
-
}) {
|
|
9041
|
-
if (!supportsPopover())
|
|
9042
|
-
return /* @__PURE__ */ jsx(
|
|
9043
|
-
ComboboxLegacyContent,
|
|
9044
|
-
{
|
|
9045
|
-
disablePopover,
|
|
9046
|
-
className,
|
|
9047
|
-
...rest,
|
|
9048
|
-
children
|
|
9049
|
-
}
|
|
9050
|
-
);
|
|
9051
|
-
return /* @__PURE__ */ jsx(
|
|
9052
|
-
ComboboxContentElement,
|
|
9053
|
-
{
|
|
9054
|
-
className,
|
|
9055
|
-
disablePopover,
|
|
9056
|
-
...rest,
|
|
9057
|
-
children
|
|
9058
|
-
}
|
|
9059
|
-
);
|
|
9060
|
-
};
|
|
9061
|
-
|
|
9062
|
-
const ComboboxTrigger = function(props) {
|
|
9063
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
9064
|
-
const {
|
|
9065
|
-
// variant: variantProp = "combobox",
|
|
9066
|
-
className,
|
|
9067
|
-
style,
|
|
9068
|
-
label,
|
|
9069
|
-
size,
|
|
9070
|
-
error,
|
|
9071
|
-
hint,
|
|
9072
|
-
description,
|
|
9073
|
-
required,
|
|
9074
|
-
moreInfo,
|
|
9075
|
-
openMoreInfo,
|
|
9076
|
-
prefix,
|
|
9077
|
-
suffix,
|
|
9078
|
-
maxRows,
|
|
9079
|
-
selectedItemProps = () => ({}),
|
|
9080
|
-
id,
|
|
9081
|
-
placeholder,
|
|
9082
|
-
disabled,
|
|
9083
|
-
readOnly,
|
|
9084
|
-
onClear,
|
|
9085
|
-
...rest
|
|
9086
|
-
} = componentProps;
|
|
9087
|
-
const {
|
|
9088
|
-
select,
|
|
9089
|
-
disableClearSelection,
|
|
9090
|
-
itemToString,
|
|
9091
|
-
getLabelProps,
|
|
9092
|
-
getInputProps,
|
|
9093
|
-
getToggleButtonProps,
|
|
9094
|
-
getMenuProps,
|
|
9095
|
-
selectedItem,
|
|
9096
|
-
selectedItems,
|
|
9097
|
-
getSelectedItemProps,
|
|
9098
|
-
getDropdownProps,
|
|
9099
|
-
reset,
|
|
9100
|
-
removeSelectedItem,
|
|
9101
|
-
selectItem,
|
|
9102
|
-
inputValue,
|
|
9103
|
-
isDisabled,
|
|
9104
|
-
isReadOnly,
|
|
9105
|
-
referenceRef,
|
|
9106
|
-
closeMenu,
|
|
9107
|
-
setIsDisabled,
|
|
9108
|
-
setIsReadOnly
|
|
9109
|
-
} = useCombobox$1();
|
|
9110
|
-
const context = usePopoverContext();
|
|
9111
|
-
useLayoutEffect(() => {
|
|
9112
|
-
if (typeof disabled === "undefined") return;
|
|
9113
|
-
setIsDisabled(disabled);
|
|
9114
|
-
}, [disabled, setIsDisabled]);
|
|
9115
|
-
useLayoutEffect(() => {
|
|
9116
|
-
if (typeof readOnly === "undefined") return;
|
|
9117
|
-
setIsReadOnly(readOnly);
|
|
9118
|
-
}, [readOnly, setIsReadOnly]);
|
|
9119
|
-
const handleBlur = (e) => {
|
|
9120
|
-
const target = e.relatedTarget ?? e.target;
|
|
9121
|
-
const focusedOnReference = context?.invoker.ref.current && context?.invoker.ref.current.contains(target);
|
|
9122
|
-
const focusedOnContent = context?.popover.ref.current && context?.popover.ref.current.contains(target) || context?.popover.element?.contains(target);
|
|
9123
|
-
if (!focusedOnReference && !focusedOnContent || !e.relatedTarget) {
|
|
9124
|
-
closeMenu();
|
|
9125
|
-
}
|
|
9126
|
-
};
|
|
9127
|
-
const labelProps = getLabelProps({
|
|
9128
|
-
required,
|
|
9129
|
-
moreInfo,
|
|
9130
|
-
openMoreInfo
|
|
9131
|
-
});
|
|
9132
|
-
const inputRef = useRef(null);
|
|
9133
|
-
const inputWrapperProps = {
|
|
9134
|
-
...select ? {
|
|
9135
|
-
...getToggleButtonProps({
|
|
9136
|
-
disabled: isDisabled,
|
|
9137
|
-
readOnly: isReadOnly,
|
|
9138
|
-
id,
|
|
9139
|
-
ref: context?.invoker.ref
|
|
9140
|
-
})
|
|
9141
|
-
} : {
|
|
9142
|
-
onClick: () => inputRef.current?.focus(),
|
|
9143
|
-
ref: context?.invoker.ref
|
|
9144
|
-
}
|
|
9145
|
-
};
|
|
9146
|
-
const toggleButtonProps = select ? {} : getToggleButtonProps();
|
|
9147
|
-
const handleClearButtonClick = (_e) => {
|
|
9148
|
-
if (onClear) {
|
|
9149
|
-
onClear();
|
|
9150
|
-
} else {
|
|
9151
|
-
if (reset != null) {
|
|
9152
|
-
reset();
|
|
9153
|
-
} else {
|
|
9154
|
-
selectItem(null);
|
|
9155
|
-
}
|
|
9156
|
-
}
|
|
9157
|
-
};
|
|
9158
|
-
const styleCombined = {
|
|
9159
|
-
...style,
|
|
9160
|
-
...layoutStyles
|
|
9161
|
-
};
|
|
9162
|
-
return /* @__PURE__ */ jsx(
|
|
9163
|
-
SelectTriggerBase,
|
|
9164
|
-
{
|
|
9165
|
-
"data-anv": select ? "combobox-select-trigger" : "combobox-search-field",
|
|
9166
|
-
className,
|
|
9167
|
-
style: styleCombined,
|
|
9168
|
-
label,
|
|
9169
|
-
size,
|
|
9170
|
-
error,
|
|
9171
|
-
hint,
|
|
9172
|
-
description,
|
|
9173
|
-
prefix,
|
|
9174
|
-
suffix,
|
|
9175
|
-
maxRows,
|
|
9176
|
-
selectedItemProps,
|
|
9177
|
-
placeholder,
|
|
9178
|
-
labelProps,
|
|
9179
|
-
inputWrapperProps,
|
|
9180
|
-
toggleButtonProps,
|
|
9181
|
-
itemToString,
|
|
9182
|
-
removeSelectedItem,
|
|
9183
|
-
variant: select ? "select" : "combobox",
|
|
9184
|
-
disableClearSelection,
|
|
9185
|
-
selectedItem,
|
|
9186
|
-
selectedItems,
|
|
9187
|
-
inputValue,
|
|
9188
|
-
disabled: isDisabled,
|
|
9189
|
-
readOnly: isReadOnly,
|
|
9190
|
-
referenceRef,
|
|
9191
|
-
onBlur: handleBlur,
|
|
9192
|
-
onClearButtonClick: handleClearButtonClick,
|
|
9193
|
-
chipProps: (item, index) => {
|
|
9194
|
-
if (getSelectedItemProps != null) {
|
|
9195
|
-
const { onClick: _, ...chipProps } = getSelectedItemProps({
|
|
9196
|
-
selectedItem: item,
|
|
9197
|
-
index
|
|
9198
|
-
});
|
|
9199
|
-
return chipProps;
|
|
9200
|
-
}
|
|
9201
|
-
return {};
|
|
9202
|
-
},
|
|
9203
|
-
inputProps: select ? {
|
|
9204
|
-
...getDropdownProps != null ? getDropdownProps({
|
|
9205
|
-
required,
|
|
9206
|
-
preventKeyAction: false
|
|
9207
|
-
}) : {
|
|
9208
|
-
required
|
|
9209
|
-
},
|
|
9210
|
-
["aria-expanded"]: context?.invoker["aria-expanded"],
|
|
9211
|
-
["aria-details"]: getMenuProps().id,
|
|
9212
|
-
["aria-haspopup"]: context?.invoker["aria-haspopup"]
|
|
9213
|
-
} : {
|
|
9214
|
-
["aria-expanded"]: context?.invoker["aria-expanded"],
|
|
9215
|
-
["aria-details"]: getMenuProps().id,
|
|
9216
|
-
["aria-haspopup"]: context?.invoker["aria-haspopup"],
|
|
9217
|
-
["aria-controls"]: getMenuProps().id,
|
|
9218
|
-
...getDropdownProps != null && getInputProps != null ? getInputProps(
|
|
9219
|
-
getDropdownProps({
|
|
9220
|
-
...rest,
|
|
9221
|
-
disabled: isDisabled,
|
|
9222
|
-
readOnly: isReadOnly,
|
|
9223
|
-
required,
|
|
9224
|
-
autoComplete: "off",
|
|
9225
|
-
id,
|
|
9226
|
-
preventKeyAction: false,
|
|
9227
|
-
ref: inputRef
|
|
9228
|
-
})
|
|
9229
|
-
) : getInputProps != null ? getInputProps({
|
|
9230
|
-
...rest,
|
|
9231
|
-
disabled: isDisabled,
|
|
9232
|
-
readOnly: isReadOnly,
|
|
9233
|
-
required,
|
|
9234
|
-
autoComplete: "off",
|
|
9235
|
-
id,
|
|
9236
|
-
ref: inputRef
|
|
9237
|
-
}) : {}
|
|
9238
|
-
}
|
|
9239
|
-
}
|
|
9240
|
-
);
|
|
9241
|
-
};
|
|
9242
|
-
const ComboboxSearchFieldElement = function({
|
|
9243
|
-
onClear,
|
|
9244
|
-
...props
|
|
9245
|
-
}) {
|
|
9246
|
-
if (!supportsPopover())
|
|
9247
|
-
return /* @__PURE__ */ jsx(ComboboxLegacyTrigger, { ...props, variant: "combobox" });
|
|
9248
|
-
return /* @__PURE__ */ jsx(ComboboxTrigger, { onClear, ...props, variant: "combobox" });
|
|
9249
|
-
};
|
|
9250
|
-
const ComboboxSearchField = function({
|
|
9251
|
-
prefix: prefixProp,
|
|
9252
|
-
...props
|
|
9253
|
-
}) {
|
|
9254
|
-
const data = {
|
|
9255
|
-
label: childrenToString(props.label),
|
|
9256
|
-
size: props.size,
|
|
9257
|
-
required: props.required,
|
|
9258
|
-
moreInfo: props.moreInfo,
|
|
9259
|
-
openMoreInfo: props.openMoreInfo,
|
|
9260
|
-
description: childrenToString(props.description),
|
|
9261
|
-
hint: props.hint,
|
|
9262
|
-
labelProps: props.labelProps
|
|
9263
|
-
};
|
|
9264
|
-
const trackingId = useTrackingId({
|
|
9265
|
-
name: "ComboboxSearchField",
|
|
9266
|
-
data,
|
|
9267
|
-
hasOverride: !!props["data-tracking-id"]
|
|
9268
|
-
});
|
|
9269
|
-
const prefix = prefixProp == null || typeof prefixProp === "string" ? prefixProp : "icon" in prefixProp ? /* @__PURE__ */ jsx(Icon$2, { ...prefixProp.icon }) : "avatar" in prefixProp ? /* @__PURE__ */ jsx(
|
|
9270
|
-
Avatar,
|
|
9271
|
-
{
|
|
9272
|
-
...prefixProp.avatar,
|
|
9273
|
-
size: props.size === "small" ? "small" : "medium"
|
|
9274
|
-
}
|
|
9275
|
-
) : prefixProp;
|
|
9276
|
-
return /* @__PURE__ */ jsx(
|
|
9277
|
-
ComboboxSearchFieldElement,
|
|
9278
|
-
{
|
|
9279
|
-
"data-tracking-id": trackingId,
|
|
9280
|
-
...props,
|
|
9281
|
-
prefix
|
|
9282
|
-
}
|
|
9283
|
-
);
|
|
9284
|
-
};
|
|
9285
|
-
const ComboboxSelectTriggerElement = function(props) {
|
|
9286
|
-
if (!supportsPopover())
|
|
9287
|
-
return /* @__PURE__ */ jsx(ComboboxLegacyTrigger, { ...props, variant: "select" });
|
|
9288
|
-
return /* @__PURE__ */ jsx(ComboboxTrigger, { ...props, variant: "select" });
|
|
9289
|
-
};
|
|
9290
|
-
const ComboboxSelectTrigger = function({
|
|
9291
|
-
prefix: prefixProp,
|
|
9292
|
-
...props
|
|
9293
|
-
}) {
|
|
9294
|
-
const data = {
|
|
9295
|
-
label: childrenToString(props.label),
|
|
9296
|
-
size: props.size,
|
|
9297
|
-
required: props.required,
|
|
9298
|
-
moreInfo: props.moreInfo,
|
|
9299
|
-
openMoreInfo: props.openMoreInfo,
|
|
9300
|
-
description: childrenToString(props.description),
|
|
9301
|
-
hint: props.hint,
|
|
9302
|
-
labelProps: props.labelProps
|
|
9303
|
-
};
|
|
9304
|
-
const trackingId = useTrackingId({
|
|
9305
|
-
name: "ComboboxSearchField",
|
|
9306
|
-
data,
|
|
9307
|
-
hasOverride: !!props["data-tracking-id"]
|
|
9308
|
-
});
|
|
9309
|
-
const prefix = prefixProp == null || typeof prefixProp === "string" ? prefixProp : "icon" in prefixProp ? /* @__PURE__ */ jsx(Icon$2, { ...prefixProp.icon }) : "avatar" in prefixProp ? /* @__PURE__ */ jsx(
|
|
9310
|
-
Avatar,
|
|
9311
|
-
{
|
|
9312
|
-
...prefixProp.avatar,
|
|
9313
|
-
size: props.size === "small" ? "small" : "medium"
|
|
9314
|
-
}
|
|
9315
|
-
) : prefixProp;
|
|
9316
|
-
return /* @__PURE__ */ jsx(
|
|
9317
|
-
ComboboxSelectTriggerElement,
|
|
9318
|
-
{
|
|
9319
|
-
"data-tracking-id": trackingId,
|
|
9320
|
-
...props,
|
|
9321
|
-
prefix
|
|
9322
|
-
}
|
|
9323
|
-
);
|
|
9324
|
-
};
|
|
9325
|
-
|
|
9326
|
-
const CoreComboboxItemElement = function({
|
|
9327
|
-
children,
|
|
9328
|
-
disabled: disabledProp,
|
|
9329
|
-
item,
|
|
9330
|
-
index: indexProp,
|
|
9331
|
-
hideCheckbox,
|
|
9332
|
-
forceCloseOnSelect,
|
|
9333
|
-
forceClearInputValueOnSelect,
|
|
9334
|
-
alignItems,
|
|
9335
|
-
justifyItems,
|
|
9336
|
-
alignContent,
|
|
9337
|
-
justifyContent,
|
|
9338
|
-
placeItems,
|
|
9339
|
-
placeContent,
|
|
9340
|
-
gap,
|
|
9341
|
-
rowGap,
|
|
9342
|
-
columnGap,
|
|
9343
|
-
...rest
|
|
9344
|
-
}) {
|
|
9345
|
-
const {
|
|
9346
|
-
itemToKey,
|
|
9347
|
-
getItemProps,
|
|
9348
|
-
multiple,
|
|
9349
|
-
selectedItem,
|
|
9350
|
-
selectedItems,
|
|
9351
|
-
disabledItems,
|
|
9352
|
-
setDisabledItems,
|
|
9353
|
-
setForceCloseOnSelectItems,
|
|
9354
|
-
setForceClearInputValueOnSelectItems,
|
|
9355
|
-
highlightedIndex,
|
|
9356
|
-
items
|
|
9357
|
-
} = useCombobox$1();
|
|
9358
|
-
const index = item === ADD_NEW$1 && !multiple ? indexProp : items.indexOf(item);
|
|
9359
|
-
const disabled = disabledProp || item && item instanceof Object && "disabled" in item && item.disabled;
|
|
9360
|
-
useEffect(() => {
|
|
9361
|
-
if (disabledProp && !disabledItems.includes(item)) {
|
|
9362
|
-
setDisabledItems([...disabledItems, item]);
|
|
9363
|
-
} else if (disabledItems.includes(item)) {
|
|
9364
|
-
setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));
|
|
9365
|
-
}
|
|
9366
|
-
return () => {
|
|
9367
|
-
if (disabledItems.includes(item)) {
|
|
9368
|
-
setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));
|
|
9369
|
-
}
|
|
9370
|
-
};
|
|
9371
|
-
}, [item, disabledProp, setDisabledItems]);
|
|
9372
|
-
useEffect(() => {
|
|
9373
|
-
if (forceCloseOnSelect) {
|
|
9374
|
-
setForceCloseOnSelectItems((forceCloseOnSelectItems) => {
|
|
9375
|
-
if (forceCloseOnSelectItems.includes(item)) {
|
|
9376
|
-
return forceCloseOnSelectItems;
|
|
9377
|
-
} else {
|
|
9378
|
-
return [...forceCloseOnSelectItems, item];
|
|
9379
|
-
}
|
|
9380
|
-
});
|
|
9381
|
-
}
|
|
9382
|
-
return () => {
|
|
9383
|
-
setForceCloseOnSelectItems((forceCloseOnSelectItems) => {
|
|
9384
|
-
if (forceCloseOnSelectItems.includes(item)) {
|
|
9385
|
-
return forceCloseOnSelectItems.filter(
|
|
9386
|
-
(prevItem) => prevItem !== item
|
|
9387
|
-
);
|
|
9388
|
-
} else {
|
|
9389
|
-
return forceCloseOnSelectItems;
|
|
9390
|
-
}
|
|
9391
|
-
});
|
|
9392
|
-
};
|
|
9393
|
-
}, [item, forceCloseOnSelect, setForceCloseOnSelectItems]);
|
|
9394
|
-
useEffect(() => {
|
|
9395
|
-
if (forceClearInputValueOnSelect) {
|
|
9396
|
-
setForceClearInputValueOnSelectItems(
|
|
9397
|
-
(forceClearInputValueOnSelectItems) => {
|
|
9398
|
-
if (forceClearInputValueOnSelectItems.includes(item)) {
|
|
9399
|
-
return forceClearInputValueOnSelectItems;
|
|
9400
|
-
} else {
|
|
9401
|
-
return [...forceClearInputValueOnSelectItems, item];
|
|
9402
|
-
}
|
|
9403
|
-
}
|
|
9404
|
-
);
|
|
9405
|
-
}
|
|
9406
|
-
return () => {
|
|
9407
|
-
setForceClearInputValueOnSelectItems(
|
|
9408
|
-
(forceClearInputValueOnSelectItems) => {
|
|
9409
|
-
if (forceClearInputValueOnSelectItems.includes(item)) {
|
|
9410
|
-
return forceClearInputValueOnSelectItems.filter(
|
|
9411
|
-
(prevItem) => prevItem !== item
|
|
9412
|
-
);
|
|
9413
|
-
} else {
|
|
9414
|
-
return forceClearInputValueOnSelectItems;
|
|
9415
|
-
}
|
|
9416
|
-
}
|
|
9417
|
-
);
|
|
9418
|
-
};
|
|
9419
|
-
}, [
|
|
9420
|
-
item,
|
|
9421
|
-
forceClearInputValueOnSelect,
|
|
9422
|
-
setForceClearInputValueOnSelectItems
|
|
9423
|
-
]);
|
|
9424
|
-
const flexProps = {
|
|
9425
|
-
alignItems,
|
|
9426
|
-
justifyItems,
|
|
9427
|
-
alignContent,
|
|
9428
|
-
justifyContent,
|
|
9429
|
-
placeItems,
|
|
9430
|
-
placeContent,
|
|
9431
|
-
gap,
|
|
9432
|
-
rowGap,
|
|
9433
|
-
columnGap
|
|
9434
|
-
};
|
|
9435
|
-
if (multiple) {
|
|
9436
|
-
const checked = selectedItems.some(
|
|
9437
|
-
(selectedItem2) => itemToKey(selectedItem2) === itemToKey(item)
|
|
9438
|
-
);
|
|
9439
|
-
return /* @__PURE__ */ jsx(
|
|
9440
|
-
ComboboxItemVisual,
|
|
9441
|
-
{
|
|
9442
|
-
rootDivProps: getItemProps({
|
|
9443
|
-
item,
|
|
9444
|
-
index,
|
|
9445
|
-
"aria-selected": highlightedIndex === index,
|
|
9446
|
-
...rest
|
|
9447
|
-
}),
|
|
9448
|
-
disabled,
|
|
9449
|
-
checked,
|
|
9450
|
-
hideCheckbox: hideCheckbox || item === ADD_NEW$1,
|
|
9451
|
-
flexProps,
|
|
9452
|
-
children
|
|
9453
|
-
}
|
|
9454
|
-
);
|
|
9455
|
-
} else {
|
|
9456
|
-
return /* @__PURE__ */ jsxs(
|
|
9457
|
-
"li",
|
|
9458
|
-
{
|
|
9459
|
-
...getItemProps({
|
|
9460
|
-
item,
|
|
9461
|
-
index,
|
|
9462
|
-
"aria-selected": highlightedIndex === index,
|
|
9463
|
-
...rest
|
|
9464
|
-
}),
|
|
9465
|
-
"data-anv": "combobox-item",
|
|
9466
|
-
"data-checked": itemToKey(selectedItem) === itemToKey(item),
|
|
9467
|
-
className: styles["item"],
|
|
9468
|
-
...disabled ? { "aria-disabled": true } : {},
|
|
9469
|
-
children: [
|
|
9470
|
-
/* @__PURE__ */ jsx(
|
|
9471
|
-
Flex,
|
|
9472
|
-
{
|
|
9473
|
-
className: listboxStyles["children"],
|
|
9474
|
-
grow: 1,
|
|
9475
|
-
shrink: 1,
|
|
9476
|
-
...flexProps,
|
|
9477
|
-
children
|
|
9478
|
-
}
|
|
9479
|
-
),
|
|
9480
|
-
/* @__PURE__ */ jsx(
|
|
9481
|
-
Icon$2,
|
|
9482
|
-
{
|
|
9483
|
-
"aria-hidden": true,
|
|
9484
|
-
svg: SvgCheck,
|
|
9485
|
-
inherit: true,
|
|
9486
|
-
className: styles["Icon"],
|
|
9487
|
-
style: {
|
|
9488
|
-
opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0
|
|
9489
|
-
}
|
|
9490
|
-
}
|
|
9491
|
-
)
|
|
9492
|
-
]
|
|
9493
|
-
}
|
|
9494
|
-
);
|
|
9495
|
-
}
|
|
9496
|
-
};
|
|
9497
|
-
const ComboboxItemElement = function(props) {
|
|
9498
|
-
if (!supportsPopover()) return /* @__PURE__ */ jsx(ComboboxLegacyItem, { ...props });
|
|
9499
|
-
return /* @__PURE__ */ jsx(CoreComboboxItemElement, { ...props });
|
|
9500
|
-
};
|
|
9501
|
-
const ComboboxItem = function(props) {
|
|
9502
|
-
const data = {
|
|
9503
|
-
item: props.item
|
|
9504
|
-
};
|
|
9505
|
-
const trackingId = useTrackingId({
|
|
9506
|
-
name: "ComboboxItem",
|
|
9507
|
-
data,
|
|
9508
|
-
hasOverride: !!props["data-tracking-id"]
|
|
9509
|
-
});
|
|
9510
|
-
return /* @__PURE__ */ jsx(ComboboxItemElement, { "data-tracking-id": trackingId, ...props });
|
|
9511
|
-
};
|
|
9512
|
-
const CoreComboboxItemAddNewElement = function({
|
|
9513
|
-
onSelection,
|
|
9514
|
-
...props
|
|
9515
|
-
}) {
|
|
9516
|
-
const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } = useCombobox$1();
|
|
9517
|
-
useEffect(() => {
|
|
9518
|
-
setHasAddNew?.(true);
|
|
9519
|
-
return () => {
|
|
9520
|
-
setHasAddNew?.(false);
|
|
9521
|
-
};
|
|
9522
|
-
}, []);
|
|
9523
|
-
useEffect(() => {
|
|
9524
|
-
setOnSelectItemAddNew?.(() => onSelection);
|
|
9525
|
-
return () => {
|
|
9526
|
-
setOnSelectItemAddNew?.(void 0);
|
|
9527
|
-
};
|
|
9528
|
-
}, [setOnSelectItemAddNew, onSelection]);
|
|
9529
|
-
const firstRenderRef = useRef(true);
|
|
9530
|
-
useEffect(() => {
|
|
9531
|
-
if (firstRenderRef.current === true) {
|
|
9532
|
-
firstRenderRef.current = false;
|
|
9533
|
-
}
|
|
9534
|
-
}, []);
|
|
9535
|
-
return !hasExactMatch && !firstRenderRef.current ? /* @__PURE__ */ jsx(
|
|
9536
|
-
ComboboxItem,
|
|
9537
|
-
{
|
|
9538
|
-
...props,
|
|
9539
|
-
item: ADD_NEW$1,
|
|
9540
|
-
index: items.length
|
|
9541
|
-
}
|
|
9542
|
-
) : null;
|
|
9543
|
-
};
|
|
9544
|
-
const ComboboxItemAddNewElement = function(props) {
|
|
9545
|
-
if (!supportsPopover()) return /* @__PURE__ */ jsx(ComboboxLegacyItemAddNew, { ...props });
|
|
9546
|
-
return /* @__PURE__ */ jsx(CoreComboboxItemAddNewElement, { ...props });
|
|
9547
|
-
};
|
|
9548
|
-
const ComboboxItemAddNew = function(props) {
|
|
9549
|
-
const data = {
|
|
9550
|
-
item: "add-new"
|
|
9551
|
-
};
|
|
9552
|
-
const trackingId = useTrackingId({
|
|
9553
|
-
name: "ComboboxItemAddNew",
|
|
9554
|
-
data,
|
|
9555
|
-
hasOverride: !!props["data-tracking-id"]
|
|
9556
|
-
});
|
|
9557
|
-
return /* @__PURE__ */ jsx(ComboboxItemAddNewElement, { "data-tracking-id": trackingId, ...props });
|
|
9558
|
-
};
|
|
9559
|
-
|
|
9560
|
-
const ComboboxListElement = function({
|
|
9561
|
-
children,
|
|
9562
|
-
...rest
|
|
9563
|
-
}) {
|
|
9564
|
-
const {
|
|
9565
|
-
getMenuProps,
|
|
9566
|
-
multiple,
|
|
9567
|
-
items,
|
|
9568
|
-
hasAddNew = false,
|
|
9569
|
-
hasEmpty,
|
|
9570
|
-
loading,
|
|
9571
|
-
selectAll,
|
|
9572
|
-
listRef
|
|
9573
|
-
} = useCombobox$1();
|
|
9574
|
-
const scrollSentinelRef = useRef(null);
|
|
9575
|
-
const [isScrolled, setIsScrolled] = useState(false);
|
|
9576
|
-
const { key: groupKey } = useComboboxGroupContext() ?? {};
|
|
9577
|
-
const isAGroup = !!groupKey;
|
|
9578
|
-
useEffect(() => {
|
|
9579
|
-
if (!scrollSentinelRef.current) return;
|
|
9580
|
-
const intersectionObserver = new IntersectionObserver(
|
|
9581
|
-
(entries) => {
|
|
9582
|
-
entries.forEach((entry) => {
|
|
9583
|
-
if (!entry.isIntersecting) {
|
|
9584
|
-
setIsScrolled(true);
|
|
9585
|
-
} else {
|
|
9586
|
-
setIsScrolled(false);
|
|
9587
|
-
}
|
|
9588
|
-
});
|
|
9589
|
-
},
|
|
9590
|
-
{ threshold: 0 }
|
|
9591
|
-
);
|
|
9592
|
-
intersectionObserver.observe(scrollSentinelRef.current);
|
|
9593
|
-
return () => {
|
|
9594
|
-
intersectionObserver.disconnect();
|
|
9595
|
-
};
|
|
9596
|
-
}, [scrollSentinelRef, setIsScrolled]);
|
|
9597
|
-
if (!supportsPopover())
|
|
9598
|
-
return /* @__PURE__ */ jsx(ComboboxLegacyList, { ...rest, children });
|
|
9599
|
-
if (isAGroup) {
|
|
9600
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
9601
|
-
}
|
|
9602
|
-
if (multiple) {
|
|
9603
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9604
|
-
/* @__PURE__ */ jsxs(
|
|
9605
|
-
"ul",
|
|
9606
|
-
{
|
|
9607
|
-
...getMenuProps(rest),
|
|
9608
|
-
ref: listRef,
|
|
9609
|
-
"data-anv": "combobox-list",
|
|
9610
|
-
className: cx(styles["listview"], listViewStyles["listview"], {
|
|
9611
|
-
[styles.scrolled]: isScrolled
|
|
9612
|
-
}),
|
|
9613
|
-
style: {
|
|
9614
|
-
display: items.length || hasAddNew ? void 0 : "none"
|
|
9615
|
-
},
|
|
9616
|
-
children: [
|
|
9617
|
-
/* @__PURE__ */ jsx("div", { ref: scrollSentinelRef, className: styles["scroll-sentinel"] }),
|
|
9618
|
-
!loading && selectAll && /* @__PURE__ */ jsx(ComboboxSelectAll, {}),
|
|
9619
|
-
children
|
|
9620
|
-
]
|
|
9621
|
-
}
|
|
9622
|
-
),
|
|
9623
|
-
loading ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Spinner, { size: "small" }) }) }) : !items.length && !hasEmpty ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) : null
|
|
9624
|
-
] });
|
|
9625
|
-
} else {
|
|
9626
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9627
|
-
/* @__PURE__ */ jsx(
|
|
9628
|
-
"ul",
|
|
9629
|
-
{
|
|
9630
|
-
...getMenuProps(rest),
|
|
9631
|
-
ref: listRef,
|
|
9632
|
-
"data-anv": "combobox-list",
|
|
9633
|
-
className: listboxStyles["listbox"],
|
|
9634
|
-
style: {
|
|
9635
|
-
display: items.length || hasAddNew ? void 0 : "none"
|
|
9636
|
-
},
|
|
9637
|
-
children
|
|
9638
|
-
}
|
|
9639
|
-
),
|
|
9640
|
-
loading ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Spinner, { size: "small" }) }) }) : !items.length && !hasEmpty ? /* @__PURE__ */ jsx("div", { className: styles["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) : null
|
|
9641
|
-
] });
|
|
9642
|
-
}
|
|
9643
|
-
};
|
|
9644
|
-
const ComboboxList = function({
|
|
9645
|
-
children,
|
|
9646
|
-
className,
|
|
9647
|
-
...rest
|
|
9648
|
-
}) {
|
|
9649
|
-
if (!supportsPopover())
|
|
9650
|
-
return /* @__PURE__ */ jsx(ComboboxLegacyList, { className, ...rest, children });
|
|
9651
|
-
return /* @__PURE__ */ jsx(ComboboxListElement, { className, ...rest, children });
|
|
9652
|
-
};
|
|
9653
|
-
|
|
9654
|
-
const ComboboxSingle = function(props) {
|
|
9655
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
9656
|
-
const {
|
|
9657
|
-
className,
|
|
9658
|
-
style,
|
|
9659
|
-
children,
|
|
9660
|
-
open,
|
|
9661
|
-
disabled,
|
|
9662
|
-
readOnly,
|
|
9663
|
-
items: itemsProp,
|
|
9664
|
-
itemToString: itemToStringProp,
|
|
9665
|
-
itemToKey: itemToKeyProp,
|
|
9666
|
-
onChange,
|
|
9667
|
-
disableCloseOnClickOutside = false,
|
|
9668
|
-
disableMatchReferenceWidth = false,
|
|
9669
|
-
disableCloseOnSelectItem = false,
|
|
9670
|
-
filterOptions,
|
|
9671
|
-
disableFilter = false,
|
|
9672
|
-
loading = false,
|
|
9673
|
-
minPopoverHeight,
|
|
9674
|
-
root,
|
|
9675
|
-
onInputValueChange,
|
|
9676
|
-
environment: environmentProp,
|
|
9677
|
-
groupBy,
|
|
9678
|
-
groupToString,
|
|
9679
|
-
groupSorter,
|
|
9680
|
-
...rest
|
|
9681
|
-
} = componentProps;
|
|
9682
|
-
const ComboboxClassNames = cx(styles["combobox"], className);
|
|
9683
|
-
const [items, setItems] = useState(itemsProp);
|
|
9684
|
-
const [hasAddNew, setHasAddNew] = useState(false);
|
|
9685
|
-
const [onSelectItemAddNew, setOnSelectItemAddNew] = useState(void 0);
|
|
9686
|
-
const [hasExactMatch, setHasExactMatch] = useState(false);
|
|
9687
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
9688
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
9689
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
9690
|
-
const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
|
|
9691
|
-
const [, setForceClearInputValueOnSelectItems] = useState([]);
|
|
9692
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
9693
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
9694
|
-
const referenceRef = useRef(null);
|
|
9695
|
-
const contentRef = useRef(null);
|
|
9696
|
-
const listRef = useRef(null);
|
|
9697
|
-
const handleOutsidePress = (_e) => {
|
|
9698
|
-
if (disableCloseOnClickOutside) return;
|
|
9699
|
-
closeMenu();
|
|
9700
|
-
};
|
|
9701
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment$1();
|
|
9702
|
-
const { orderedItems: allItemsOrderedByGroup } = useGroups({
|
|
9703
|
-
items: itemsProp,
|
|
9704
|
-
groupBy,
|
|
9705
|
-
groupToString,
|
|
9706
|
-
groupSorter
|
|
9707
|
-
});
|
|
9708
|
-
const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } = useGroups({
|
|
9709
|
-
items,
|
|
9710
|
-
groupBy,
|
|
9711
|
-
groupToString,
|
|
9712
|
-
groupSorter
|
|
9713
|
-
});
|
|
9714
|
-
const showAddNew = hasAddNew && !hasExactMatch;
|
|
9715
|
-
const combinedItems = useMemo(
|
|
9716
|
-
() => showAddNew ? [...searchedItemsOrderedByGroup, ADD_NEW$1] : searchedItemsOrderedByGroup,
|
|
9717
|
-
[searchedItemsOrderedByGroup, showAddNew]
|
|
9718
|
-
);
|
|
9719
|
-
const itemToString = itemToStringProp ?? defaultItemToString$1;
|
|
9720
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey$1;
|
|
9721
|
-
const {
|
|
9722
|
-
isOpen,
|
|
9723
|
-
getLabelProps,
|
|
9724
|
-
getInputProps,
|
|
9725
|
-
getToggleButtonProps,
|
|
9726
|
-
getMenuProps,
|
|
9727
|
-
getItemProps,
|
|
9728
|
-
highlightedIndex,
|
|
9729
|
-
selectedItem,
|
|
9730
|
-
selectItem,
|
|
9731
|
-
setInputValue,
|
|
9732
|
-
inputValue,
|
|
9733
|
-
closeMenu
|
|
9734
|
-
} = useCombobox({
|
|
9735
|
-
...rest,
|
|
9736
|
-
items: combinedItems,
|
|
9737
|
-
itemToString,
|
|
9738
|
-
itemToKey,
|
|
9739
|
-
isOpen: open,
|
|
9740
|
-
initialIsOpen: open,
|
|
9741
|
-
environment: environmentProp ?? environment,
|
|
9742
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
9743
|
-
stateReducer(state, { type, changes }) {
|
|
9744
|
-
switch (type) {
|
|
9745
|
-
// keep Combobox open onBlur, will call close using Popover's onOutsidePress
|
|
9746
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
9747
|
-
return {
|
|
9748
|
-
...changes,
|
|
9749
|
-
isOpen: open != null ? open : true,
|
|
9750
|
-
highlightedIndex: state.highlightedIndex
|
|
9751
|
-
};
|
|
9752
|
-
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
9753
|
-
case useCombobox.stateChangeTypes.ItemClick:
|
|
9754
|
-
if (changes.selectedItem === ADD_NEW$1) {
|
|
9755
|
-
const stateInputValue = state.inputValue;
|
|
9756
|
-
setTimeout(() => {
|
|
9757
|
-
onSelectItemAddNew?.(stateInputValue);
|
|
9758
|
-
}, 250);
|
|
9759
|
-
return {
|
|
9760
|
-
...changes,
|
|
9761
|
-
selectedItem: state.selectedItem,
|
|
9762
|
-
inputValue: ""
|
|
9763
|
-
};
|
|
9764
|
-
} else {
|
|
9765
|
-
const forceClose = forceCloseOnSelectItems.includes(
|
|
9766
|
-
changes.selectedItem
|
|
9767
|
-
);
|
|
9768
|
-
return {
|
|
9769
|
-
...changes,
|
|
9770
|
-
isOpen: open != null ? open : forceClose ? false : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
9771
|
-
highlightedIndex: disableCloseOnSelectItem ? itemToString(state.selectedItem) === state.inputValue || !state.inputValue ? state.highlightedIndex : 0 : changes.highlightedIndex
|
|
9772
|
-
};
|
|
9773
|
-
}
|
|
9774
|
-
// prevent this from closing the popover by default
|
|
9775
|
-
case useCombobox.stateChangeTypes.InputClick:
|
|
9776
|
-
return { ...changes, isOpen: open != null ? open : true };
|
|
9777
|
-
default:
|
|
9778
|
-
return changes;
|
|
9779
|
-
}
|
|
9780
|
-
},
|
|
9781
|
-
onInputValueChange: onInputValueChange ?? (({ inputValue: inputValue2, type, selectedItem: selectedItem2 }) => {
|
|
9782
|
-
const inputValueMatchesSelectedItem = selectedItem2 != null && inputValue2 === itemToString(selectedItem2);
|
|
9783
|
-
const inputValueIsEmpty = inputValue2 == null || inputValue2 === "";
|
|
9784
|
-
if (type === useCombobox.stateChangeTypes.InputKeyDownEnter || type === useCombobox.stateChangeTypes.ItemClick) {
|
|
9785
|
-
setItems(allItemsOrderedByGroup);
|
|
9786
|
-
setHasExactMatch(true);
|
|
9787
|
-
} else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty && !disableFilter) {
|
|
9788
|
-
setItems(
|
|
9789
|
-
matchSorter(allItemsOrderedByGroup, inputValue2, filterOptions)
|
|
9790
|
-
);
|
|
9791
|
-
setHasExactMatch(
|
|
9792
|
-
matchSorter(allItemsOrderedByGroup, inputValue2, {
|
|
9793
|
-
...filterOptions,
|
|
9794
|
-
threshold: matchSorter.rankings.EQUAL
|
|
9795
|
-
}).length > 0
|
|
9796
|
-
);
|
|
9797
|
-
} else {
|
|
9798
|
-
setItems(allItemsOrderedByGroup);
|
|
9799
|
-
setHasExactMatch(true);
|
|
9800
|
-
}
|
|
9801
|
-
}),
|
|
9802
|
-
onSelectedItemChange(changes) {
|
|
9803
|
-
const { selectedItem: selectedItem2 } = changes;
|
|
9804
|
-
if (onChange != null)
|
|
9805
|
-
onChange(selectedItem2 != null ? selectedItem2 : null);
|
|
9806
|
-
},
|
|
9807
|
-
onIsOpenChange({ isOpen: isOpen2, inputValue: inputValue2, selectedItem: selectedItem2 }) {
|
|
9808
|
-
if (isOpen2 === false) {
|
|
9809
|
-
setTimeout(() => {
|
|
9810
|
-
setItems(allItemsOrderedByGroup);
|
|
9811
|
-
if (inputValue2 === "") {
|
|
9812
|
-
selectItem(null);
|
|
9813
|
-
} else {
|
|
9814
|
-
setInputValue(
|
|
9815
|
-
selectedItem2 != null ? itemToString(selectedItem2) : ""
|
|
9816
|
-
);
|
|
9817
|
-
}
|
|
9818
|
-
}, 200);
|
|
9819
|
-
}
|
|
9820
|
-
},
|
|
9821
|
-
isItemDisabled(item) {
|
|
9822
|
-
if (isDisabled || isReadOnly) {
|
|
9823
|
-
return !!isDisabled || !!isReadOnly;
|
|
9824
|
-
}
|
|
9825
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
9826
|
-
return true;
|
|
9827
|
-
}
|
|
9828
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
9829
|
-
return true;
|
|
9830
|
-
}
|
|
9831
|
-
if (disabledItems.includes(item)) {
|
|
9832
|
-
return true;
|
|
9833
|
-
}
|
|
9834
|
-
return false;
|
|
9835
|
-
}
|
|
9836
|
-
});
|
|
9837
|
-
const firstRenderRef = useRef(true);
|
|
9838
|
-
useEffect(() => {
|
|
9839
|
-
if (firstRenderRef.current === true) {
|
|
9840
|
-
firstRenderRef.current = false;
|
|
9841
|
-
}
|
|
9842
|
-
}, []);
|
|
9843
|
-
useEffect(() => {
|
|
9844
|
-
setIsDisabled(disabled);
|
|
9845
|
-
}, [disabled]);
|
|
9846
|
-
useEffect(() => {
|
|
9847
|
-
setIsReadOnly(readOnly);
|
|
9848
|
-
}, [readOnly]);
|
|
9849
|
-
useEffect(() => {
|
|
9850
|
-
if (firstRenderRef.current) return;
|
|
9851
|
-
setTimeout(() => {
|
|
9852
|
-
const inputValueMatchesSelectedItem = selectedItem != null && inputValue === itemToString(selectedItem);
|
|
9853
|
-
const inputValueIsEmpty = inputValue == null || inputValue === "";
|
|
9854
|
-
if (!inputValueMatchesSelectedItem && !inputValueIsEmpty && !disableFilter) {
|
|
9855
|
-
setItems(
|
|
9856
|
-
matchSorter(allItemsOrderedByGroup, inputValue, filterOptions)
|
|
9857
|
-
);
|
|
9858
|
-
setHasExactMatch(
|
|
9859
|
-
matchSorter(allItemsOrderedByGroup, inputValue, {
|
|
9860
|
-
...filterOptions,
|
|
9861
|
-
threshold: matchSorter.rankings.EQUAL
|
|
9862
|
-
}).length > 0
|
|
9863
|
-
);
|
|
9864
|
-
} else {
|
|
9865
|
-
setItems(allItemsOrderedByGroup);
|
|
9866
|
-
setHasExactMatch(true);
|
|
9867
|
-
}
|
|
9868
|
-
}, 200);
|
|
9869
|
-
}, [allItemsOrderedByGroup]);
|
|
9870
|
-
return /* @__PURE__ */ jsx(
|
|
9871
|
-
ComboboxContext.Provider,
|
|
9872
|
-
{
|
|
9873
|
-
value: {
|
|
9874
|
-
multiple: false,
|
|
9875
|
-
select: false,
|
|
9876
|
-
items: searchedItemsOrderedByGroup,
|
|
9877
|
-
itemToString,
|
|
9878
|
-
itemToKey,
|
|
9879
|
-
isOpen,
|
|
9880
|
-
getLabelProps,
|
|
9881
|
-
getInputProps,
|
|
9882
|
-
getToggleButtonProps,
|
|
9883
|
-
getMenuProps,
|
|
9884
|
-
getItemProps,
|
|
9885
|
-
highlightedIndex,
|
|
9886
|
-
selectedItem,
|
|
9887
|
-
selectedItems: [],
|
|
9888
|
-
disabledItems,
|
|
9889
|
-
setDisabledItems,
|
|
9890
|
-
setForceCloseOnSelectItems,
|
|
9891
|
-
setForceClearInputValueOnSelectItems,
|
|
9892
|
-
getSelectedItemProps: void 0,
|
|
9893
|
-
getDropdownProps: void 0,
|
|
9894
|
-
selectItem,
|
|
9895
|
-
inputValue,
|
|
9896
|
-
isDisabled,
|
|
9897
|
-
isReadOnly,
|
|
9898
|
-
setIsReadOnly,
|
|
9899
|
-
setIsDisabled,
|
|
9900
|
-
hasDisabledPopover,
|
|
9901
|
-
setHasDisabledPopover,
|
|
9902
|
-
hasEmpty,
|
|
9903
|
-
setHasEmpty,
|
|
9904
|
-
hasAddNew,
|
|
9905
|
-
setHasAddNew,
|
|
9906
|
-
onSelectItemAddNew,
|
|
9907
|
-
setOnSelectItemAddNew,
|
|
9908
|
-
hasExactMatch,
|
|
9909
|
-
setHasExactMatch,
|
|
9910
|
-
loading,
|
|
9911
|
-
referenceRef,
|
|
9912
|
-
contentRef,
|
|
9913
|
-
listRef,
|
|
9914
|
-
closeMenu,
|
|
9915
|
-
groupBy,
|
|
9916
|
-
groupToString,
|
|
9917
|
-
groups: searchedGroups
|
|
9918
|
-
},
|
|
9919
|
-
children: /* @__PURE__ */ jsx(
|
|
9920
|
-
"div",
|
|
9921
|
-
{
|
|
9922
|
-
className: ComboboxClassNames,
|
|
9923
|
-
"data-anv": "combobox",
|
|
9924
|
-
style: { ...style, ...layoutStyles },
|
|
9925
|
-
ref: wrapperDivRef,
|
|
9926
|
-
children: /* @__PURE__ */ jsx(
|
|
9927
|
-
Popover,
|
|
9928
|
-
{
|
|
9929
|
-
open: isOpen,
|
|
9930
|
-
noPadding: true,
|
|
9931
|
-
disableCaret: true,
|
|
9932
|
-
fitScreen: true,
|
|
9933
|
-
disableFlipFallback: true,
|
|
9934
|
-
placement: "bottom-start",
|
|
9935
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
9936
|
-
disableCloseOnClickOutside,
|
|
9937
|
-
onOutsidePress: handleOutsidePress,
|
|
9938
|
-
minHeight: minPopoverHeight,
|
|
9939
|
-
children
|
|
9940
|
-
}
|
|
9941
|
-
)
|
|
9942
|
-
}
|
|
9943
|
-
)
|
|
9944
|
-
}
|
|
9945
|
-
);
|
|
9946
|
-
};
|
|
9947
|
-
const ComboboxMultiple = function(props) {
|
|
9948
|
-
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
9949
|
-
const {
|
|
9950
|
-
className,
|
|
9951
|
-
style,
|
|
9952
|
-
children,
|
|
9953
|
-
open,
|
|
9954
|
-
items: itemsProp,
|
|
9955
|
-
itemToString: itemToStringProp,
|
|
9956
|
-
itemToKey: itemToKeyProp,
|
|
9957
|
-
onChange,
|
|
9958
|
-
onSelectedItemsChange,
|
|
9959
|
-
onStateChange,
|
|
9960
|
-
disableCloseOnClickOutside = false,
|
|
9961
|
-
disableMatchReferenceWidth = false,
|
|
9962
|
-
disableCloseOnSelectItem = false,
|
|
9963
|
-
disableClearInputValueOnSelectItem = false,
|
|
9964
|
-
filterOptions,
|
|
9965
|
-
disableFilter = false,
|
|
9966
|
-
loading = false,
|
|
9967
|
-
minPopoverHeight,
|
|
9968
|
-
root,
|
|
9969
|
-
disabled,
|
|
9970
|
-
readOnly,
|
|
9971
|
-
stateReducer: _,
|
|
9972
|
-
onInputValueChange,
|
|
9973
|
-
initialSelectedItems,
|
|
9974
|
-
initialActiveIndex,
|
|
9975
|
-
defaultSelectedItems,
|
|
9976
|
-
defaultActiveIndex,
|
|
9977
|
-
activeIndex: activeIndexProp,
|
|
9978
|
-
selectedItems: selectedItemsProp,
|
|
9979
|
-
environment: environmentProp,
|
|
9980
|
-
selectAll,
|
|
9981
|
-
groupBy,
|
|
9982
|
-
groupToString,
|
|
9983
|
-
...rest
|
|
9984
|
-
} = componentProps;
|
|
9985
|
-
const ComboboxClassNames = cx(styles["combobox"], className);
|
|
9986
|
-
const [items, setItems] = useState(itemsProp);
|
|
9987
|
-
const [hasAddNew, setHasAddNew] = useState(false);
|
|
9988
|
-
const [onSelectItemAddNew, setOnSelectItemAddNew] = useState(void 0);
|
|
9989
|
-
const [hasExactMatch, setHasExactMatch] = useState(false);
|
|
9990
|
-
const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
|
|
9991
|
-
const [hasEmpty, setHasEmpty] = useState(false);
|
|
9992
|
-
const [disabledItems, setDisabledItems] = useState([]);
|
|
9993
|
-
const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
|
|
9994
|
-
const [
|
|
9995
|
-
forceClearInputValueOnSelectItems,
|
|
9996
|
-
setForceClearInputValueOnSelectItems
|
|
9997
|
-
] = useState([]);
|
|
9998
|
-
const [isReadOnly, setIsReadOnly] = useState(readOnly);
|
|
9999
|
-
const [isDisabled, setIsDisabled] = useState(disabled);
|
|
10000
|
-
let storedSetInputValue = void 0;
|
|
10001
|
-
const referenceRef = useRef(null);
|
|
10002
|
-
const contentRef = useRef(null);
|
|
10003
|
-
const listRef = useRef(null);
|
|
10004
|
-
const handleOutsidePress = (_e) => {
|
|
10005
|
-
if (disableCloseOnClickOutside) return;
|
|
10006
|
-
closeMenu();
|
|
10007
|
-
};
|
|
10008
|
-
const { ref: wrapperDivRef, environment } = useDownshiftEnvironment$1();
|
|
10009
|
-
const { orderedItems: allItemsOrderedByGroup } = useGroups({
|
|
10010
|
-
items: itemsProp,
|
|
10011
|
-
groupBy,
|
|
10012
|
-
groupToString
|
|
10013
|
-
});
|
|
10014
|
-
const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } = useGroups({
|
|
10015
|
-
items,
|
|
10016
|
-
groupBy,
|
|
10017
|
-
groupToString
|
|
10018
|
-
});
|
|
10019
|
-
const showAddNew = hasAddNew && !hasExactMatch;
|
|
10020
|
-
const combinedItems = useMemo(() => {
|
|
10021
|
-
let items2 = searchedItemsOrderedByGroup;
|
|
10022
|
-
if (showAddNew) {
|
|
10023
|
-
items2 = [...items2, ADD_NEW$1];
|
|
10024
|
-
}
|
|
10025
|
-
if (selectAll) {
|
|
10026
|
-
items2 = [SELECT_ALL, ...items2];
|
|
10027
|
-
}
|
|
10028
|
-
return items2;
|
|
10029
|
-
}, [searchedItemsOrderedByGroup, showAddNew, selectAll]);
|
|
10030
|
-
const itemToString = itemToStringProp ?? defaultItemToString$1;
|
|
10031
|
-
const itemToKey = itemToKeyProp ?? defaultItemToKey$1;
|
|
10032
|
-
const {
|
|
10033
|
-
getSelectedItemProps,
|
|
10034
|
-
getDropdownProps,
|
|
10035
|
-
reset,
|
|
10036
|
-
selectedItems,
|
|
10037
|
-
addSelectedItem,
|
|
10038
|
-
removeSelectedItem,
|
|
10039
|
-
setSelectedItems
|
|
10040
|
-
} = useMultipleSelection({
|
|
10041
|
-
itemToKey,
|
|
10042
|
-
initialSelectedItems,
|
|
10043
|
-
initialActiveIndex,
|
|
10044
|
-
defaultSelectedItems,
|
|
10045
|
-
defaultActiveIndex,
|
|
10046
|
-
activeIndex: activeIndexProp,
|
|
10047
|
-
selectedItems: selectedItemsProp,
|
|
10048
|
-
environment: environmentProp ?? environment,
|
|
10049
|
-
stateReducer(state, { type, changes }) {
|
|
10050
|
-
switch (type) {
|
|
10051
|
-
// the Chip itself will handle "Backspace" and "Delete"
|
|
10052
|
-
// just return previous state
|
|
10053
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace:
|
|
10054
|
-
case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:
|
|
10055
|
-
return state;
|
|
10056
|
-
case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
|
|
10057
|
-
return { ...changes, activeIndex: -1 };
|
|
10058
|
-
case useMultipleSelection.stateChangeTypes.FunctionReset:
|
|
10059
|
-
return { ...changes, selectedItems: [] };
|
|
10060
|
-
default:
|
|
10061
|
-
return changes;
|
|
10062
|
-
}
|
|
10063
|
-
},
|
|
10064
|
-
onStateChange(changes) {
|
|
10065
|
-
const { type } = changes;
|
|
10066
|
-
switch (type) {
|
|
10067
|
-
case useMultipleSelection.stateChangeTypes.FunctionReset:
|
|
10068
|
-
storedSetInputValue?.("");
|
|
10069
|
-
break;
|
|
10070
|
-
}
|
|
10071
|
-
onStateChange?.(changes);
|
|
10072
|
-
},
|
|
10073
|
-
onSelectedItemsChange(changes) {
|
|
10074
|
-
const { selectedItems: selectedItems2 } = changes;
|
|
10075
|
-
if (onChange != null) onChange(selectedItems2);
|
|
10076
|
-
if (onSelectedItemsChange != null) onSelectedItemsChange(changes);
|
|
10077
|
-
}
|
|
10078
|
-
});
|
|
10079
|
-
const {
|
|
10080
|
-
isOpen,
|
|
10081
|
-
getLabelProps,
|
|
10082
|
-
getInputProps,
|
|
10083
|
-
getToggleButtonProps,
|
|
10084
|
-
getMenuProps,
|
|
10085
|
-
getItemProps,
|
|
10086
|
-
highlightedIndex,
|
|
10087
|
-
selectedItem,
|
|
10088
|
-
selectItem,
|
|
10089
|
-
setInputValue,
|
|
10090
|
-
inputValue,
|
|
10091
|
-
closeMenu
|
|
10092
|
-
} = useCombobox({
|
|
10093
|
-
...rest,
|
|
10094
|
-
items: combinedItems,
|
|
10095
|
-
itemToString,
|
|
10096
|
-
itemToKey,
|
|
10097
|
-
selectedItem: null,
|
|
10098
|
-
isOpen: open,
|
|
10099
|
-
initialIsOpen: open,
|
|
10100
|
-
environment: environmentProp ?? environment,
|
|
10101
|
-
// NOTE: Reducer needs to be pure, side-effects should be in event handlers
|
|
10102
|
-
stateReducer(state, { type, changes }) {
|
|
10103
|
-
switch (type) {
|
|
10104
|
-
// keep Combobox open onBlur, will call close using Popover's onOutsidePress
|
|
10105
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
10106
|
-
return {
|
|
10107
|
-
...changes,
|
|
10108
|
-
inputValue: state.inputValue,
|
|
10109
|
-
selectedItem: null,
|
|
10110
|
-
isOpen: open != null ? open : true,
|
|
10111
|
-
highlightedIndex: state.highlightedIndex
|
|
10112
|
-
};
|
|
10113
|
-
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
10114
|
-
case useCombobox.stateChangeTypes.ItemClick:
|
|
10115
|
-
if (changes.selectedItem === ADD_NEW$1) {
|
|
10116
|
-
const stateInputValue = state.inputValue;
|
|
10117
|
-
setTimeout(() => {
|
|
10118
|
-
onSelectItemAddNew?.(stateInputValue);
|
|
10119
|
-
}, 250);
|
|
10120
|
-
return {
|
|
10121
|
-
...changes,
|
|
10122
|
-
selectedItem: state.selectedItem,
|
|
10123
|
-
inputValue: ""
|
|
10124
|
-
};
|
|
10125
|
-
} else if (changes.selectedItem === SELECT_ALL) {
|
|
10126
|
-
selectAll?.onSelection();
|
|
10127
|
-
return {
|
|
10128
|
-
...changes,
|
|
10129
|
-
selectedItem: null
|
|
10130
|
-
};
|
|
10131
|
-
} else {
|
|
10132
|
-
const forceClose = forceCloseOnSelectItems.includes(
|
|
10133
|
-
changes.selectedItem
|
|
10134
|
-
);
|
|
10135
|
-
const forceClearInputValue = forceClearInputValueOnSelectItems.includes(
|
|
10136
|
-
changes.selectedItem
|
|
10137
|
-
);
|
|
10138
|
-
return {
|
|
10139
|
-
...changes,
|
|
10140
|
-
isOpen: open != null ? open : forceClose ? false : disableCloseOnSelectItem ? true : changes.isOpen,
|
|
10141
|
-
highlightedIndex: forceClearInputValue ? 0 : disableCloseOnSelectItem ? disableClearInputValueOnSelectItem || !state.inputValue ? state.highlightedIndex : 0 : changes.highlightedIndex,
|
|
10142
|
-
inputValue: forceClearInputValue ? "" : disableClearInputValueOnSelectItem ? state.inputValue : ""
|
|
10143
|
-
};
|
|
10144
|
-
}
|
|
10145
|
-
// prevent this from closing the popover by default
|
|
10146
|
-
case useCombobox.stateChangeTypes.InputClick:
|
|
10147
|
-
return { ...changes, isOpen: open != null ? open : true };
|
|
10148
|
-
// prevent this from clearing the input value by default
|
|
10149
|
-
case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
10150
|
-
return { ...changes, inputValue: state.inputValue };
|
|
10151
|
-
default:
|
|
10152
|
-
return changes;
|
|
10153
|
-
}
|
|
10154
|
-
},
|
|
10155
|
-
onStateChange(changes) {
|
|
10156
|
-
const { type, selectedItem: newSelectedItem } = changes;
|
|
10157
|
-
switch (type) {
|
|
10158
|
-
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
10159
|
-
case useCombobox.stateChangeTypes.ItemClick:
|
|
10160
|
-
case useCombobox.stateChangeTypes.InputBlur:
|
|
10161
|
-
if (newSelectedItem != null) {
|
|
10162
|
-
const itemAlreadySelected = selectedItems.some(
|
|
10163
|
-
(item) => itemToKey(item) === itemToKey(newSelectedItem)
|
|
10164
|
-
);
|
|
10165
|
-
if (itemAlreadySelected) {
|
|
10166
|
-
removeSelectedItem(newSelectedItem);
|
|
10167
|
-
} else {
|
|
10168
|
-
addSelectedItem(newSelectedItem);
|
|
10169
|
-
}
|
|
10170
|
-
}
|
|
10171
|
-
break;
|
|
10172
|
-
}
|
|
10173
|
-
onStateChange?.(changes);
|
|
10174
|
-
},
|
|
10175
|
-
onInputValueChange: onInputValueChange ?? (({ inputValue: inputValue2, ...changes }) => {
|
|
10176
|
-
const { type, selectedItem: selectedItem2 } = changes;
|
|
10177
|
-
const inputValueMatchesSelectedItem = selectedItem2 != null && inputValue2 === itemToString(selectedItem2);
|
|
10178
|
-
const inputValueIsEmpty = inputValue2 == null || inputValue2 === "";
|
|
10179
|
-
if (type === useCombobox.stateChangeTypes.InputKeyDownEnter || type === useCombobox.stateChangeTypes.ItemClick) {
|
|
10180
|
-
setItems(allItemsOrderedByGroup);
|
|
10181
|
-
setHasExactMatch(true);
|
|
10182
|
-
} else if (!inputValueMatchesSelectedItem && !inputValueIsEmpty && !disableFilter) {
|
|
10183
|
-
setItems(
|
|
10184
|
-
matchSorter(allItemsOrderedByGroup, inputValue2, filterOptions)
|
|
10185
|
-
);
|
|
10186
|
-
setHasExactMatch(
|
|
10187
|
-
matchSorter(allItemsOrderedByGroup, inputValue2, {
|
|
10188
|
-
...filterOptions,
|
|
10189
|
-
threshold: matchSorter.rankings.EQUAL
|
|
10190
|
-
}).length > 0
|
|
10191
|
-
);
|
|
10192
|
-
} else {
|
|
10193
|
-
setItems(allItemsOrderedByGroup);
|
|
10194
|
-
setHasExactMatch(true);
|
|
10195
|
-
}
|
|
10196
|
-
}),
|
|
10197
|
-
onIsOpenChange({ isOpen: isOpen2 }) {
|
|
10198
|
-
if (isOpen2 === false) {
|
|
10199
|
-
setTimeout(() => {
|
|
10200
|
-
setInputValue("");
|
|
10201
|
-
setItems(allItemsOrderedByGroup);
|
|
10202
|
-
}, 200);
|
|
10203
|
-
}
|
|
10204
|
-
},
|
|
10205
|
-
isItemDisabled(item) {
|
|
10206
|
-
if (isDisabled || isReadOnly) {
|
|
10207
|
-
return !!isDisabled || !!isReadOnly;
|
|
10208
|
-
}
|
|
10209
|
-
if (item && item instanceof Object && "disabled" in item && item.disabled) {
|
|
10210
|
-
return true;
|
|
10211
|
-
}
|
|
10212
|
-
if (item && item instanceof Object && "readOnly" in item && item.readOnly) {
|
|
10213
|
-
return true;
|
|
10214
|
-
}
|
|
10215
|
-
if (disabledItems.includes(item)) {
|
|
10216
|
-
return true;
|
|
10217
|
-
}
|
|
10218
|
-
return false;
|
|
10219
|
-
},
|
|
10220
|
-
onHighlightedIndexChange(changes) {
|
|
10221
|
-
if (selectAll && changes.highlightedIndex === 0 && [
|
|
10222
|
-
useCombobox.stateChangeTypes.InputKeyDownHome,
|
|
10223
|
-
useCombobox.stateChangeTypes.InputKeyDownEnd,
|
|
10224
|
-
useCombobox.stateChangeTypes.InputKeyDownArrowDown,
|
|
10225
|
-
useCombobox.stateChangeTypes.InputKeyDownArrowUp,
|
|
10226
|
-
useCombobox.stateChangeTypes.InputKeyDownPageDown,
|
|
10227
|
-
useCombobox.stateChangeTypes.InputKeyDownPageUp
|
|
10228
|
-
].includes(changes.type) && listRef.current) {
|
|
10229
|
-
const scrollParent = getScrollParent(listRef.current);
|
|
10230
|
-
if (scrollParent) {
|
|
10231
|
-
scrollParent.scrollTop = 0;
|
|
10232
|
-
}
|
|
10233
|
-
}
|
|
10234
|
-
}
|
|
10235
|
-
});
|
|
10236
|
-
storedSetInputValue = setInputValue;
|
|
10237
|
-
const firstRenderRef = useRef(true);
|
|
10238
|
-
useEffect(() => {
|
|
10239
|
-
if (firstRenderRef.current === true) {
|
|
10240
|
-
firstRenderRef.current = false;
|
|
10241
|
-
}
|
|
10242
|
-
}, []);
|
|
10243
|
-
useEffect(() => {
|
|
10244
|
-
setIsDisabled(disabled);
|
|
10245
|
-
}, [disabled]);
|
|
10246
|
-
useEffect(() => {
|
|
10247
|
-
setIsReadOnly(readOnly);
|
|
10248
|
-
}, [readOnly]);
|
|
10249
|
-
useEffect(() => {
|
|
10250
|
-
if (firstRenderRef.current) return;
|
|
10251
|
-
setTimeout(() => {
|
|
10252
|
-
const inputValueIsEmpty = inputValue == null || inputValue === "";
|
|
10253
|
-
if (!inputValueIsEmpty && !disableFilter) {
|
|
10254
|
-
setItems(matchSorter(itemsProp, inputValue, filterOptions));
|
|
10255
|
-
setHasExactMatch(
|
|
10256
|
-
matchSorter(itemsProp, inputValue, {
|
|
10257
|
-
...filterOptions,
|
|
10258
|
-
threshold: matchSorter.rankings.EQUAL
|
|
10259
|
-
}).length > 0
|
|
10260
|
-
);
|
|
10261
|
-
} else {
|
|
10262
|
-
setItems(itemsProp);
|
|
10263
|
-
setHasExactMatch(true);
|
|
10264
|
-
}
|
|
10265
|
-
}, 200);
|
|
10266
|
-
}, [itemsProp]);
|
|
10267
|
-
return /* @__PURE__ */ jsx(
|
|
10268
|
-
ComboboxContext.Provider,
|
|
10269
|
-
{
|
|
10270
|
-
value: {
|
|
10271
|
-
multiple: true,
|
|
10272
|
-
select: false,
|
|
10273
|
-
items: combinedItems,
|
|
10274
|
-
itemToString,
|
|
10275
|
-
itemToKey,
|
|
10276
|
-
isOpen,
|
|
10277
|
-
getLabelProps,
|
|
10278
|
-
getInputProps,
|
|
10279
|
-
getToggleButtonProps,
|
|
10280
|
-
getMenuProps,
|
|
10281
|
-
getItemProps,
|
|
10282
|
-
highlightedIndex,
|
|
10283
|
-
selectedItem,
|
|
10284
|
-
selectedItems,
|
|
10285
|
-
disabledItems,
|
|
10286
|
-
setDisabledItems,
|
|
10287
|
-
setForceCloseOnSelectItems,
|
|
10288
|
-
setForceClearInputValueOnSelectItems,
|
|
10289
|
-
getSelectedItemProps,
|
|
10290
|
-
getDropdownProps,
|
|
10291
|
-
reset,
|
|
10292
|
-
addSelectedItem,
|
|
10293
|
-
removeSelectedItem,
|
|
10294
|
-
setSelectedItems,
|
|
10295
|
-
selectItem,
|
|
10296
|
-
inputValue,
|
|
10297
|
-
isDisabled,
|
|
10298
|
-
isReadOnly,
|
|
10299
|
-
setIsReadOnly,
|
|
10300
|
-
setIsDisabled,
|
|
10301
|
-
hasDisabledPopover,
|
|
10302
|
-
setHasDisabledPopover,
|
|
10303
|
-
hasEmpty,
|
|
10304
|
-
setHasEmpty,
|
|
10305
|
-
hasAddNew,
|
|
10306
|
-
setHasAddNew,
|
|
10307
|
-
onSelectItemAddNew,
|
|
10308
|
-
setOnSelectItemAddNew,
|
|
10309
|
-
hasExactMatch,
|
|
10310
|
-
setHasExactMatch,
|
|
10311
|
-
loading,
|
|
10312
|
-
referenceRef,
|
|
10313
|
-
contentRef,
|
|
10314
|
-
listRef,
|
|
10315
|
-
closeMenu,
|
|
10316
|
-
groupBy,
|
|
10317
|
-
groupToString,
|
|
10318
|
-
groups: searchedGroups,
|
|
10319
|
-
selectAll
|
|
10320
|
-
},
|
|
10321
|
-
children: /* @__PURE__ */ jsx(
|
|
10322
|
-
"div",
|
|
10323
|
-
{
|
|
10324
|
-
className: ComboboxClassNames,
|
|
10325
|
-
"data-anv": "combobox",
|
|
10326
|
-
style: { ...style, ...layoutStyles },
|
|
10327
|
-
ref: wrapperDivRef,
|
|
10328
|
-
children: /* @__PURE__ */ jsx(
|
|
10329
|
-
Popover,
|
|
10330
|
-
{
|
|
10331
|
-
open: !isDisabled && isOpen,
|
|
10332
|
-
noPadding: true,
|
|
10333
|
-
disableCaret: true,
|
|
10334
|
-
fitScreen: true,
|
|
10335
|
-
disableFlipFallback: true,
|
|
10336
|
-
placement: "bottom-start",
|
|
10337
|
-
matchReferenceWidth: !disableMatchReferenceWidth,
|
|
10338
|
-
disableCloseOnClickOutside,
|
|
10339
|
-
onOutsidePress: handleOutsidePress,
|
|
10340
|
-
minHeight: minPopoverHeight,
|
|
10341
|
-
children
|
|
10342
|
-
}
|
|
10343
|
-
)
|
|
10344
|
-
}
|
|
10345
|
-
)
|
|
10346
|
-
}
|
|
10347
|
-
);
|
|
10348
|
-
};
|
|
10349
|
-
const ComboboxElement = function(props) {
|
|
10350
|
-
if (!supportsPopover()) {
|
|
10351
|
-
if (isMultiple(props)) {
|
|
10352
|
-
return /* @__PURE__ */ jsx(ComboboxLegacyMultiple, { ...props });
|
|
10353
|
-
} else {
|
|
10354
|
-
return /* @__PURE__ */ jsx(ComboboxLegacySingle, { ...props });
|
|
10355
|
-
}
|
|
10356
|
-
}
|
|
10357
|
-
if (isMultiple(props)) {
|
|
10358
|
-
return /* @__PURE__ */ jsx(ComboboxMultiple, { ...props });
|
|
10359
|
-
} else {
|
|
10360
|
-
return /* @__PURE__ */ jsx(ComboboxSingle, { ...props });
|
|
10361
|
-
}
|
|
10362
|
-
};
|
|
10363
|
-
const Combobox = Object.assign(ComboboxElement, {
|
|
10364
|
-
/**
|
|
10365
|
-
* ComboboxSelect component for selecting items from a predefined list.
|
|
10366
|
-
*
|
|
10367
|
-
* Features:
|
|
10368
|
-
* - Single and multiple item selection from predefined options
|
|
10369
|
-
* - Dropdown-style selection interface
|
|
10370
|
-
* - Grouping support with custom group labels and sorting
|
|
10371
|
-
* - Loading states with spinner indicators
|
|
10372
|
-
* - Disabled and read-only states
|
|
10373
|
-
* - Customizable popover behavior and positioning
|
|
10374
|
-
* - Full accessibility support with ARIA attributes
|
|
10375
|
-
* - Keyboard navigation support
|
|
10376
|
-
* - Layout utility props for positioning and spacing
|
|
10377
|
-
* - Automatic tracking ID generation for analytics
|
|
10378
|
-
*
|
|
10379
|
-
* @example
|
|
10380
|
-
* <Combobox.Select
|
|
10381
|
-
* items={items}
|
|
10382
|
-
* itemToString={(item) => item.name}
|
|
10383
|
-
* onChange={setSelectedItem}
|
|
10384
|
-
* >
|
|
10385
|
-
* <Combobox.SelectTrigger label="Select an item" />
|
|
10386
|
-
* <Combobox.Content>
|
|
10387
|
-
* {({ items }) => (
|
|
10388
|
-
* <Combobox.List>
|
|
10389
|
-
* {items.map((item, i) => (
|
|
10390
|
-
* <Combobox.Item key={item.id} item={item} index={i}>
|
|
10391
|
-
* {item.name}
|
|
10392
|
-
* </Combobox.Item>
|
|
10393
|
-
* ))}
|
|
10394
|
-
* </Combobox.List>
|
|
10395
|
-
* )}
|
|
10396
|
-
* </Combobox.Content>
|
|
10397
|
-
* </Combobox.Select>
|
|
10398
|
-
*/
|
|
10399
|
-
Select: ComboboxSelect,
|
|
10400
|
-
/**
|
|
10401
|
-
* ComboboxSearchField component for the search input field.
|
|
10402
|
-
*
|
|
10403
|
-
* Features:
|
|
10404
|
-
* - Search input with clear button functionality
|
|
10405
|
-
* - Supports multiple selection with chip display
|
|
10406
|
-
* - Handles keyboard navigation and accessibility
|
|
10407
|
-
* - Integrates with combobox state management
|
|
10408
|
-
* - Supports custom styling and layout
|
|
10409
|
-
* - Manages focus and blur events
|
|
10410
|
-
* - Enhanced prefix support for icons and avatars
|
|
10411
|
-
* - Automatic tracking ID generation for analytics
|
|
10412
|
-
*
|
|
10413
|
-
* @example
|
|
10414
|
-
* <Combobox.SearchField
|
|
10415
|
-
* label="Search users"
|
|
10416
|
-
* placeholder="Type to search..."
|
|
10417
|
-
* prefix={{ icon: { svg: SearchIcon } }}
|
|
10418
|
-
* />
|
|
10419
|
-
*/
|
|
10420
|
-
SearchField: ComboboxSearchField,
|
|
10421
|
-
/**
|
|
10422
|
-
* ComboboxSelectTrigger component for the select trigger field.
|
|
10423
|
-
*
|
|
10424
|
-
* Features:
|
|
10425
|
-
* - Select input with dropdown trigger
|
|
10426
|
-
* - Supports single selection display
|
|
10427
|
-
* - Handles keyboard navigation and accessibility
|
|
10428
|
-
* - Integrates with combobox state management
|
|
10429
|
-
* - Supports custom styling and layout
|
|
10430
|
-
* - Manages focus and blur events
|
|
10431
|
-
* - Enhanced prefix support for icons and avatars
|
|
10432
|
-
* - Automatic tracking ID generation for analytics
|
|
10433
|
-
*
|
|
10434
|
-
* @example
|
|
10435
|
-
* <Combobox.SelectTrigger
|
|
10436
|
-
* label="Select user"
|
|
10437
|
-
* placeholder="Choose a user..."
|
|
10438
|
-
* prefix={{ avatar: { name: "User" } }}
|
|
10439
|
-
* />
|
|
10440
|
-
*/
|
|
10441
|
-
SelectTrigger: ComboboxSelectTrigger,
|
|
10442
|
-
/**
|
|
10443
|
-
* ComboboxContent component for rendering the content area of a combobox.
|
|
10444
|
-
*
|
|
10445
|
-
* Features:
|
|
10446
|
-
* - Supports both popover and inline rendering modes
|
|
10447
|
-
* - Provides render props pattern for flexible content rendering
|
|
10448
|
-
* - Handles grouped items with proper ARIA labels
|
|
10449
|
-
* - Integrates with combobox state management
|
|
10450
|
-
* - Supports custom styling and layout
|
|
10451
|
-
* - Manages focus and blur events for popover behavior
|
|
10452
|
-
*
|
|
10453
|
-
* @example
|
|
10454
|
-
* <Combobox.Content>
|
|
10455
|
-
* {({ items }) => (
|
|
10456
|
-
* <Combobox.List>
|
|
10457
|
-
* {items.map((item, index) => (
|
|
10458
|
-
* <Combobox.Item key={item.id} item={item} index={index}>
|
|
10459
|
-
* {item.name}
|
|
10460
|
-
* </Combobox.Item>
|
|
10461
|
-
* ))}
|
|
10462
|
-
* </Combobox.List>
|
|
10463
|
-
* )}
|
|
10464
|
-
* </Combobox.Content>
|
|
10465
|
-
*/
|
|
10466
|
-
Content: ComboboxContent,
|
|
10467
|
-
/**
|
|
10468
|
-
* ComboboxList component for rendering the list of items.
|
|
10469
|
-
*
|
|
10470
|
-
* Features:
|
|
10471
|
-
* - Renders list of items with proper accessibility
|
|
10472
|
-
* - Supports both single and multiple selection modes
|
|
10473
|
-
* - Loading state with spinner
|
|
10474
|
-
* - Empty state handling
|
|
10475
|
-
* - Automatic tracking ID generation for analytics
|
|
10476
|
-
*
|
|
10477
|
-
* @example
|
|
10478
|
-
* <Combobox.List>
|
|
10479
|
-
* {items.map((item, i) => (
|
|
10480
|
-
* <Combobox.Item key={item.id} item={item} index={i}>
|
|
10481
|
-
* {item.name}
|
|
10482
|
-
* </Combobox.Item>
|
|
10483
|
-
* ))}
|
|
10484
|
-
* </Combobox.List>
|
|
10485
|
-
*/
|
|
10486
|
-
List: ComboboxList,
|
|
10487
|
-
/**
|
|
10488
|
-
* ComboboxItem component for rendering individual items in the list.
|
|
10489
|
-
*
|
|
10490
|
-
* Features:
|
|
10491
|
-
* - Individual item rendering with proper accessibility
|
|
10492
|
-
* - Support for disabled state
|
|
10493
|
-
* - Custom content rendering
|
|
10494
|
-
* - Automatic tracking ID generation for analytics
|
|
10495
|
-
*
|
|
10496
|
-
* @example
|
|
10497
|
-
* <Combobox.Item item={item} index={index}>
|
|
10498
|
-
* <Flex direction="column">
|
|
10499
|
-
* <Text>{item.name}</Text>
|
|
10500
|
-
* <Text size="small" subdued>{item.description}</Text>
|
|
10501
|
-
* </Flex>
|
|
10502
|
-
* </Combobox.Item>
|
|
10503
|
-
*/
|
|
10504
|
-
Item: ComboboxItem,
|
|
10505
|
-
/**
|
|
10506
|
-
* ComboboxItemAddNew component for rendering an "Add New" option.
|
|
10507
|
-
*
|
|
10508
|
-
* Features:
|
|
10509
|
-
* - "Add New" option that appears when no exact match is found
|
|
10510
|
-
* - Customizable content rendering
|
|
10511
|
-
* - Callback when selected
|
|
10512
|
-
* - Automatic tracking ID generation for analytics
|
|
10513
|
-
*
|
|
10514
|
-
* @example
|
|
10515
|
-
* <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>
|
|
10516
|
-
* Add "{inputValue}" as new item
|
|
10517
|
-
* </Combobox.ItemAddNew>
|
|
10518
|
-
*/
|
|
10519
|
-
ItemAddNew: ComboboxItemAddNew,
|
|
10520
|
-
/**
|
|
10521
|
-
* ComboboxEmpty component for rendering content when no items are available.
|
|
10522
|
-
*
|
|
10523
|
-
* Features:
|
|
10524
|
-
* - Renders content when list is empty
|
|
10525
|
-
* - Customizable empty state message
|
|
10526
|
-
* - Automatic tracking ID generation for analytics
|
|
10527
|
-
*
|
|
10528
|
-
* @example
|
|
10529
|
-
* <Combobox.Empty>
|
|
10530
|
-
* <Text>No items found. Try adjusting your search.</Text>
|
|
10531
|
-
* </Combobox.Empty>
|
|
10532
|
-
*/
|
|
10533
|
-
Empty: ComboboxEmpty
|
|
10534
|
-
});
|
|
10535
|
-
|
|
10536
|
-
export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxContent as c, ComboboxList as d, ComboboxItem as e, ComboboxItemAddNew as f, ComboboxSearchField as g, ComboboxSelectTrigger as h, ComboboxEmpty as i };
|
|
10537
|
-
//# sourceMappingURL=Combobox-RjBDpgFV.js.map
|
|
6262
|
+
export { useMultipleSelection as a, useSelect as b, matchSorter as m, useCombobox as u };
|
|
6263
|
+
//# sourceMappingURL=match-sorter.esm-CtBw0MrM.js.map
|