@servicetitan/anvil2 1.44.1 → 1.44.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @servicetitan/anvil2
2
2
 
3
+ ## 1.44.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1514](https://github.com/servicetitan/hammer/pull/1514) [`4e84d2b`](https://github.com/servicetitan/hammer/commit/4e84d2b47fa26eaaf62ad58b6cfea7bc61723c1c) Thanks [@rgdelato](https://github.com/rgdelato)! - [Combobox] Fix `Combobox` controlled `items` change firing before `onIsOpenChange` (adds 200ms delay to `items` update)
8
+
9
+ - [#1514](https://github.com/servicetitan/hammer/pull/1514) [`b43e5f4`](https://github.com/servicetitan/hammer/commit/b43e5f49690d5d72b8eb4ab2241a07e37fe374d3) Thanks [@rgdelato](https://github.com/rgdelato)! - [Combobox] Allow `groupToString` to return `null` to render empty group labels
10
+
11
+ - [#1514](https://github.com/servicetitan/hammer/pull/1514) [`eeac4b5`](https://github.com/servicetitan/hammer/commit/eeac4b54d5df83dfb07b3acc9d4cefa1baa58599) Thanks [@rgdelato](https://github.com/rgdelato)! - [Combobox] Add `hideCheckbox` prop to `Combobox.Item`
12
+
13
+ - [#1514](https://github.com/servicetitan/hammer/pull/1514) [`c4ced28`](https://github.com/servicetitan/hammer/commit/c4ced28bfaf44403758ca527026a16139de7d649) Thanks [@rgdelato](https://github.com/rgdelato)! - [Combobox] Add `forceCloseOnSelect` and `forceClearInputValueOnSelect` props to `Combobox.Item`
14
+
15
+ - Updated dependencies [[`4e84d2b`](https://github.com/servicetitan/hammer/commit/4e84d2b47fa26eaaf62ad58b6cfea7bc61723c1c), [`b43e5f4`](https://github.com/servicetitan/hammer/commit/b43e5f49690d5d72b8eb4ab2241a07e37fe374d3), [`eeac4b5`](https://github.com/servicetitan/hammer/commit/eeac4b54d5df83dfb07b3acc9d4cefa1baa58599), [`c4ced28`](https://github.com/servicetitan/hammer/commit/c4ced28bfaf44403758ca527026a16139de7d649)]:
16
+ - @servicetitan/hammer-react@1.42.1
17
+
3
18
  ## 1.44.1
4
19
 
5
20
  ### Patch Changes
@@ -4,6 +4,7 @@ import React__default, { useRef, useEffect, useMemo, useCallback, useLayoutEffec
4
4
  import { g as getDefaultExportFromCjs, c as cx } from './index-tZvMCc77.js';
5
5
  import { a as _extends, _ as _objectWithoutPropertiesLoose } from './extends-Bg2s_OKl.js';
6
6
  import { e as PopoverLegacy, P as Popover, u as usePopoverLegacyContext, f as usePopoverContext } from './Popover-CU2cGVD8-Casl3vM1.js';
7
+ import { D as Divider } from './Divider-B0xGfyWE-f5-ThMiS.js';
7
8
  import { s as styles$3 } from './Listbox.module-DcBE8Zmo-DcBE8Zmo.js';
8
9
  import { L as Label, s as supportsPopover } from './ProgressBar-BRvB-bD4-DppwBrFg.js';
9
10
  import { F as Flex } from './Flex-CiK7uNUu-BfxHG4L0.js';
@@ -19,7 +20,7 @@ import { I as Icon$2 } from './Icon-B6HmlQiR-BxQkO3X5.js';
19
20
  import { c as checkboxStyles, S as SvgIndeterminateCheckBox, a as SvgCheckBox, b as SvgCheckBoxOutlineBlank } from './Checkbox.module-DZ58p15b-BUsQC1lW.js';
20
21
  import { S as SvgCheck } from './check-Cf67OWrZ.js';
21
22
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DWACCL8v-CZNrcQT-.js';
22
- import { u as useDownshiftEnvironment$1, a as defaultItemToKey$1, d as defaultItemToString$1, S as SelectTriggerBase } from './SelectTriggerBase-C0fhFfuj-DfR6h1Lq.js';
23
+ import { u as useDownshiftEnvironment$1, a as defaultItemToKey$1, d as defaultItemToString$1, A as ADD_NEW$1, S as SelectTriggerBase } from './SelectTriggerBase-Dj154EN4-BtTvR-Nh.js';
23
24
  import { c as childrenToString } from './childrenToString-Bz9MqbHb-Bz9MqbHb.js';
24
25
  import { a as Avatar } from './Avatar-C7cbRTCt-DCvzmr2C.js';
25
26
 
@@ -6343,7 +6344,7 @@ const styles$1 = {
6343
6344
  "listview-option": "_listview-option_rxmcz_304"
6344
6345
  };
6345
6346
 
6346
- const ADD_NEW$1 = Symbol.for("add-new");
6347
+ const ADD_NEW = Symbol.for("add-new");
6347
6348
  const ComboboxLegacyContext = createContext(null);
6348
6349
  const useComboboxLegacy = function() {
6349
6350
  const context = useContext(
@@ -6401,7 +6402,7 @@ const ComboboxLegacySingle = function(props) {
6401
6402
  const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();
6402
6403
  const showAddNew = hasAddNew && !hasExactMatch;
6403
6404
  const combinedItems = useMemo(
6404
- () => showAddNew ? [...items, ADD_NEW$1] : items,
6405
+ () => showAddNew ? [...items, ADD_NEW] : items,
6405
6406
  [items, showAddNew]
6406
6407
  );
6407
6408
  const itemToString = itemToStringProp ?? defaultItemToString;
@@ -6439,7 +6440,7 @@ const ComboboxLegacySingle = function(props) {
6439
6440
  };
6440
6441
  case useCombobox$1.stateChangeTypes.InputKeyDownEnter:
6441
6442
  case useCombobox$1.stateChangeTypes.ItemClick:
6442
- if (changes.selectedItem === ADD_NEW$1) {
6443
+ if (changes.selectedItem === ADD_NEW) {
6443
6444
  const stateInputValue = state.inputValue;
6444
6445
  setTimeout(() => {
6445
6446
  onSelectItemAddNew?.(stateInputValue);
@@ -6670,7 +6671,7 @@ const ComboboxLegacyMultiple = function(props) {
6670
6671
  const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();
6671
6672
  const showAddNew = hasAddNew && !hasExactMatch;
6672
6673
  const combinedItems = useMemo(
6673
- () => showAddNew ? [...items, ADD_NEW$1] : items,
6674
+ () => showAddNew ? [...items, ADD_NEW] : items,
6674
6675
  [items, showAddNew]
6675
6676
  );
6676
6677
  const itemToString = itemToStringProp ?? defaultItemToString;
@@ -6756,7 +6757,7 @@ const ComboboxLegacyMultiple = function(props) {
6756
6757
  };
6757
6758
  case useCombobox$1.stateChangeTypes.InputKeyDownEnter:
6758
6759
  case useCombobox$1.stateChangeTypes.ItemClick:
6759
- if (changes.selectedItem === ADD_NEW$1) {
6760
+ if (changes.selectedItem === ADD_NEW) {
6760
6761
  const stateInputValue = state.inputValue;
6761
6762
  setTimeout(() => {
6762
6763
  onSelectItemAddNew?.(stateInputValue);
@@ -8053,7 +8054,7 @@ const ComboboxLegacyItemAddNew = function({
8053
8054
  ComboboxLegacyItem,
8054
8055
  {
8055
8056
  ...props,
8056
- item: ADD_NEW$1,
8057
+ item: ADD_NEW,
8057
8058
  index: items.length
8058
8059
  }
8059
8060
  ) : null;
@@ -8354,7 +8355,7 @@ const ComboboxContentElement = function({
8354
8355
  className: ComboboxPopoverContentClassNames,
8355
8356
  ref: contentRef,
8356
8357
  onBlur: handleBlur,
8357
- children: groups?.length ? groups.map((group) => /* @__PURE__ */ jsx(ComboboxGroupProvider, { value: group, children: /* @__PURE__ */ jsx(
8358
+ children: groups?.length ? groups.map((group, i) => /* @__PURE__ */ jsx(ComboboxGroupProvider, { value: group, children: /* @__PURE__ */ jsx(
8358
8359
  "ul",
8359
8360
  {
8360
8361
  "aria-labelledby": `${id}-group-${group.key}`,
@@ -8362,7 +8363,7 @@ const ComboboxContentElement = function({
8362
8363
  "data-anv": "combobox-group",
8363
8364
  role: "group",
8364
8365
  children: /* @__PURE__ */ jsxs("li", { children: [
8365
- /* @__PURE__ */ jsx(
8366
+ group.label != null ? /* @__PURE__ */ jsx(
8366
8367
  Text,
8367
8368
  {
8368
8369
  className: styles["group-title"],
@@ -8370,7 +8371,7 @@ const ComboboxContentElement = function({
8370
8371
  variant: "eyebrow",
8371
8372
  children: group.label
8372
8373
  }
8373
- ),
8374
+ ) : i !== 0 ? /* @__PURE__ */ jsx(Divider, {}) : null,
8374
8375
  resolveChildren(group.items)
8375
8376
  ] })
8376
8377
  }
@@ -8385,7 +8386,7 @@ const ComboboxContentElement = function({
8385
8386
  ref: getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref,
8386
8387
  tabIndex: -1,
8387
8388
  onBlur: handleBlur,
8388
- children: groups?.length ? groups.map((group) => /* @__PURE__ */ jsx(ComboboxGroupProvider, { value: group, children: /* @__PURE__ */ jsx(
8389
+ children: groups?.length ? groups.map((group, i) => /* @__PURE__ */ jsx(ComboboxGroupProvider, { value: group, children: /* @__PURE__ */ jsx(
8389
8390
  "ul",
8390
8391
  {
8391
8392
  "aria-labelledby": `${id}-group-${group.key}`,
@@ -8393,7 +8394,7 @@ const ComboboxContentElement = function({
8393
8394
  "data-anv": "combobox-group",
8394
8395
  role: "group",
8395
8396
  children: /* @__PURE__ */ jsxs("li", { children: [
8396
- /* @__PURE__ */ jsx(
8397
+ group.label != null ? /* @__PURE__ */ jsx(
8397
8398
  Text,
8398
8399
  {
8399
8400
  className: styles["group-title"],
@@ -8401,7 +8402,7 @@ const ComboboxContentElement = function({
8401
8402
  variant: "eyebrow",
8402
8403
  children: group.label
8403
8404
  }
8404
- ),
8405
+ ) : i !== 0 ? /* @__PURE__ */ jsx(Divider, {}) : null,
8405
8406
  resolveChildren(group.items)
8406
8407
  ] })
8407
8408
  }
@@ -8501,6 +8502,9 @@ const ComboboxItemElement = function({
8501
8502
  disabled: disabledProp,
8502
8503
  item,
8503
8504
  index: indexProp,
8505
+ hideCheckbox,
8506
+ forceCloseOnSelect,
8507
+ forceClearInputValueOnSelect,
8504
8508
  alignItems,
8505
8509
  justifyItems,
8506
8510
  alignContent,
@@ -8520,6 +8524,8 @@ const ComboboxItemElement = function({
8520
8524
  selectedItems,
8521
8525
  disabledItems,
8522
8526
  setDisabledItems,
8527
+ setForceCloseOnSelectItems,
8528
+ setForceClearInputValueOnSelectItems,
8523
8529
  highlightedIndex,
8524
8530
  items,
8525
8531
  groupBy
@@ -8530,14 +8536,66 @@ const ComboboxItemElement = function({
8530
8536
  if (disabledProp && !disabledItems.includes(item)) {
8531
8537
  setDisabledItems([...disabledItems, item]);
8532
8538
  } else if (disabledItems.includes(item)) {
8533
- setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));
8539
+ setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));
8534
8540
  }
8535
8541
  return () => {
8536
8542
  if (disabledItems.includes(item)) {
8537
- setDisabledItems(disabledItems.filter((prevItem) => prevItem === item));
8543
+ setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));
8538
8544
  }
8539
8545
  };
8540
8546
  }, [item, disabledProp, setDisabledItems]);
8547
+ useEffect(() => {
8548
+ if (forceCloseOnSelect) {
8549
+ setForceCloseOnSelectItems((forceCloseOnSelectItems) => {
8550
+ if (forceCloseOnSelectItems.includes(item)) {
8551
+ return forceCloseOnSelectItems;
8552
+ } else {
8553
+ return [...forceCloseOnSelectItems, item];
8554
+ }
8555
+ });
8556
+ }
8557
+ return () => {
8558
+ setForceCloseOnSelectItems((forceCloseOnSelectItems) => {
8559
+ if (forceCloseOnSelectItems.includes(item)) {
8560
+ return forceCloseOnSelectItems.filter(
8561
+ (prevItem) => prevItem !== item
8562
+ );
8563
+ } else {
8564
+ return forceCloseOnSelectItems;
8565
+ }
8566
+ });
8567
+ };
8568
+ }, [item, forceCloseOnSelect, setForceCloseOnSelectItems]);
8569
+ useEffect(() => {
8570
+ if (forceClearInputValueOnSelect) {
8571
+ setForceClearInputValueOnSelectItems(
8572
+ (forceClearInputValueOnSelectItems) => {
8573
+ if (forceClearInputValueOnSelectItems.includes(item)) {
8574
+ return forceClearInputValueOnSelectItems;
8575
+ } else {
8576
+ return [...forceClearInputValueOnSelectItems, item];
8577
+ }
8578
+ }
8579
+ );
8580
+ }
8581
+ return () => {
8582
+ setForceClearInputValueOnSelectItems(
8583
+ (forceClearInputValueOnSelectItems) => {
8584
+ if (forceClearInputValueOnSelectItems.includes(item)) {
8585
+ return forceClearInputValueOnSelectItems.filter(
8586
+ (prevItem) => prevItem !== item
8587
+ );
8588
+ } else {
8589
+ return forceClearInputValueOnSelectItems;
8590
+ }
8591
+ }
8592
+ );
8593
+ };
8594
+ }, [
8595
+ item,
8596
+ forceClearInputValueOnSelect,
8597
+ setForceClearInputValueOnSelectItems
8598
+ ]);
8541
8599
  if (multiple) {
8542
8600
  const checked = selectedItems.some(
8543
8601
  (selectedItem2) => itemToKey(selectedItem2) === itemToKey(item)
@@ -8557,7 +8615,7 @@ const ComboboxItemElement = function({
8557
8615
  styles$2["listview-option"]
8558
8616
  ),
8559
8617
  children: [
8560
- item !== ADD_NEW ? /* @__PURE__ */ jsx("div", { className: cx(styles["cell"], styles$2["cell"]), children: /* @__PURE__ */ jsx("div", { className: checkboxStyles["wrapper"], children: /* @__PURE__ */ jsxs("div", { className: checkboxStyles["checkbox"], children: [
8618
+ item !== ADD_NEW$1 && !hideCheckbox ? /* @__PURE__ */ jsx("div", { className: cx(styles["cell"], styles$2["cell"]), children: /* @__PURE__ */ jsx("div", { className: checkboxStyles["wrapper"], children: /* @__PURE__ */ jsxs("div", { className: checkboxStyles["checkbox"], children: [
8561
8619
  /* @__PURE__ */ jsx(
8562
8620
  "input",
8563
8621
  {
@@ -8699,7 +8757,7 @@ const ComboboxItemAddNewElement = function({
8699
8757
  ComboboxItem$1,
8700
8758
  {
8701
8759
  ...props,
8702
- item: ADD_NEW,
8760
+ item: ADD_NEW$1,
8703
8761
  index: items.length
8704
8762
  }
8705
8763
  ) : null;
@@ -8748,7 +8806,10 @@ function useGroups({
8748
8806
  groupedItems[groupKey].push(item);
8749
8807
  });
8750
8808
  Object.keys(groupedItems).forEach((key) => {
8751
- groupsSansItems.push({ key, label: groupToString?.(key) ?? key });
8809
+ groupsSansItems.push({
8810
+ key,
8811
+ label: groupToString ? groupToString?.(key) : key
8812
+ });
8752
8813
  });
8753
8814
  groupsSansItems.sort((a, b) => groupSorter(a.key, b.key));
8754
8815
  const orderedItems2 = [];
@@ -8764,7 +8825,6 @@ function useGroups({
8764
8825
  return { groups, orderedItems };
8765
8826
  }
8766
8827
 
8767
- const ADD_NEW = Symbol.for("add-new");
8768
8828
  const ComboboxContext = createContext(null);
8769
8829
  const useCombobox = function() {
8770
8830
  const context = useContext(
@@ -8814,6 +8874,8 @@ const ComboboxSingle = function(props) {
8814
8874
  const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
8815
8875
  const [hasEmpty, setHasEmpty] = useState(false);
8816
8876
  const [disabledItems, setDisabledItems] = useState([]);
8877
+ const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
8878
+ const [, setForceClearInputValueOnSelectItems] = useState([]);
8817
8879
  const [isReadOnly, setIsReadOnly] = useState(readOnly);
8818
8880
  const [isDisabled, setIsDisabled] = useState(disabled);
8819
8881
  const referenceRef = useRef(null);
@@ -8837,7 +8899,7 @@ const ComboboxSingle = function(props) {
8837
8899
  });
8838
8900
  const showAddNew = hasAddNew && !hasExactMatch;
8839
8901
  const combinedItems = useMemo(
8840
- () => showAddNew ? [...searchedItemsOrderedByGroup, ADD_NEW] : searchedItemsOrderedByGroup,
8902
+ () => showAddNew ? [...searchedItemsOrderedByGroup, ADD_NEW$1] : searchedItemsOrderedByGroup,
8841
8903
  [searchedItemsOrderedByGroup, showAddNew]
8842
8904
  );
8843
8905
  const itemToString = itemToStringProp ?? defaultItemToString$1;
@@ -8875,7 +8937,7 @@ const ComboboxSingle = function(props) {
8875
8937
  };
8876
8938
  case useCombobox$1.stateChangeTypes.InputKeyDownEnter:
8877
8939
  case useCombobox$1.stateChangeTypes.ItemClick:
8878
- if (changes.selectedItem === ADD_NEW) {
8940
+ if (changes.selectedItem === ADD_NEW$1) {
8879
8941
  const stateInputValue = state.inputValue;
8880
8942
  setTimeout(() => {
8881
8943
  onSelectItemAddNew?.(stateInputValue);
@@ -8886,9 +8948,12 @@ const ComboboxSingle = function(props) {
8886
8948
  inputValue: ""
8887
8949
  };
8888
8950
  } else {
8951
+ const forceClose = forceCloseOnSelectItems.includes(
8952
+ changes.selectedItem
8953
+ );
8889
8954
  return {
8890
8955
  ...changes,
8891
- isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
8956
+ isOpen: open != null ? open : forceClose ? false : disableCloseOnSelectItem ? true : changes.isOpen,
8892
8957
  highlightedIndex: disableCloseOnSelectItem ? itemToString(state.selectedItem) === state.inputValue || !state.inputValue ? state.highlightedIndex : 0 : changes.highlightedIndex
8893
8958
  };
8894
8959
  }
@@ -8969,20 +9034,24 @@ const ComboboxSingle = function(props) {
8969
9034
  }, [readOnly]);
8970
9035
  useEffect(() => {
8971
9036
  if (firstRenderRef.current) return;
8972
- const inputValueMatchesSelectedItem = selectedItem != null && inputValue === itemToString(selectedItem);
8973
- const inputValueIsEmpty = inputValue == null || inputValue === "";
8974
- if (!inputValueMatchesSelectedItem && !inputValueIsEmpty && !disableFilter) {
8975
- setItems(matchSorter(allItemsOrderedByGroup, inputValue, filterOptions));
8976
- setHasExactMatch(
8977
- matchSorter(allItemsOrderedByGroup, inputValue, {
8978
- ...filterOptions,
8979
- threshold: matchSorter.rankings.EQUAL
8980
- }).length > 0
8981
- );
8982
- } else {
8983
- setItems(allItemsOrderedByGroup);
8984
- setHasExactMatch(true);
8985
- }
9037
+ setTimeout(() => {
9038
+ const inputValueMatchesSelectedItem = selectedItem != null && inputValue === itemToString(selectedItem);
9039
+ const inputValueIsEmpty = inputValue == null || inputValue === "";
9040
+ if (!inputValueMatchesSelectedItem && !inputValueIsEmpty && !disableFilter) {
9041
+ setItems(
9042
+ matchSorter(allItemsOrderedByGroup, inputValue, filterOptions)
9043
+ );
9044
+ setHasExactMatch(
9045
+ matchSorter(allItemsOrderedByGroup, inputValue, {
9046
+ ...filterOptions,
9047
+ threshold: matchSorter.rankings.EQUAL
9048
+ }).length > 0
9049
+ );
9050
+ } else {
9051
+ setItems(allItemsOrderedByGroup);
9052
+ setHasExactMatch(true);
9053
+ }
9054
+ }, 200);
8986
9055
  }, [allItemsOrderedByGroup]);
8987
9056
  return /* @__PURE__ */ jsx(
8988
9057
  ComboboxContext.Provider,
@@ -9004,6 +9073,8 @@ const ComboboxSingle = function(props) {
9004
9073
  selectedItems: [],
9005
9074
  disabledItems,
9006
9075
  setDisabledItems,
9076
+ setForceCloseOnSelectItems,
9077
+ setForceClearInputValueOnSelectItems,
9007
9078
  getSelectedItemProps: void 0,
9008
9079
  getDropdownProps: void 0,
9009
9080
  selectItem,
@@ -9103,6 +9174,11 @@ const ComboboxMultiple = function(props) {
9103
9174
  const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
9104
9175
  const [hasEmpty, setHasEmpty] = useState(false);
9105
9176
  const [disabledItems, setDisabledItems] = useState([]);
9177
+ const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
9178
+ const [
9179
+ forceClearInputValueOnSelectItems,
9180
+ setForceClearInputValueOnSelectItems
9181
+ ] = useState([]);
9106
9182
  const [isReadOnly, setIsReadOnly] = useState(readOnly);
9107
9183
  const [isDisabled, setIsDisabled] = useState(disabled);
9108
9184
  let storedSetInputValue = void 0;
@@ -9125,7 +9201,7 @@ const ComboboxMultiple = function(props) {
9125
9201
  });
9126
9202
  const showAddNew = hasAddNew && !hasExactMatch;
9127
9203
  const combinedItems = useMemo(
9128
- () => showAddNew ? [...items, ADD_NEW] : searchedItemsOrderedByGroup,
9204
+ () => showAddNew ? [...items, ADD_NEW$1] : searchedItemsOrderedByGroup,
9129
9205
  [items, searchedItemsOrderedByGroup, showAddNew]
9130
9206
  );
9131
9207
  const itemToString = itemToStringProp ?? defaultItemToString$1;
@@ -9213,7 +9289,7 @@ const ComboboxMultiple = function(props) {
9213
9289
  };
9214
9290
  case useCombobox$1.stateChangeTypes.InputKeyDownEnter:
9215
9291
  case useCombobox$1.stateChangeTypes.ItemClick:
9216
- if (changes.selectedItem === ADD_NEW) {
9292
+ if (changes.selectedItem === ADD_NEW$1) {
9217
9293
  const stateInputValue = state.inputValue;
9218
9294
  setTimeout(() => {
9219
9295
  onSelectItemAddNew?.(stateInputValue);
@@ -9224,11 +9300,17 @@ const ComboboxMultiple = function(props) {
9224
9300
  inputValue: ""
9225
9301
  };
9226
9302
  } else {
9303
+ const forceClose = forceCloseOnSelectItems.includes(
9304
+ changes.selectedItem
9305
+ );
9306
+ const forceClearInputValue = forceClearInputValueOnSelectItems.includes(
9307
+ changes.selectedItem
9308
+ );
9227
9309
  return {
9228
9310
  ...changes,
9229
- isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
9230
- highlightedIndex: disableCloseOnSelectItem ? disableClearInputValueOnSelectItem || !state.inputValue ? state.highlightedIndex : 0 : changes.highlightedIndex,
9231
- inputValue: disableClearInputValueOnSelectItem ? state.inputValue : ""
9311
+ isOpen: open != null ? open : forceClose ? false : disableCloseOnSelectItem ? true : changes.isOpen,
9312
+ highlightedIndex: forceClearInputValue ? 0 : disableCloseOnSelectItem ? disableClearInputValueOnSelectItem || !state.inputValue ? state.highlightedIndex : 0 : changes.highlightedIndex,
9313
+ inputValue: forceClearInputValue ? "" : disableClearInputValueOnSelectItem ? state.inputValue : ""
9232
9314
  };
9233
9315
  }
9234
9316
  // prevent this from closing the popover by default
@@ -9322,19 +9404,21 @@ const ComboboxMultiple = function(props) {
9322
9404
  }, [readOnly]);
9323
9405
  useEffect(() => {
9324
9406
  if (firstRenderRef.current) return;
9325
- const inputValueIsEmpty = inputValue == null || inputValue === "";
9326
- if (!inputValueIsEmpty && !disableFilter) {
9327
- setItems(matchSorter(itemsProp, inputValue, filterOptions));
9328
- setHasExactMatch(
9329
- matchSorter(itemsProp, inputValue, {
9330
- ...filterOptions,
9331
- threshold: matchSorter.rankings.EQUAL
9332
- }).length > 0
9333
- );
9334
- } else {
9335
- setItems(itemsProp);
9336
- setHasExactMatch(true);
9337
- }
9407
+ setTimeout(() => {
9408
+ const inputValueIsEmpty = inputValue == null || inputValue === "";
9409
+ if (!inputValueIsEmpty && !disableFilter) {
9410
+ setItems(matchSorter(itemsProp, inputValue, filterOptions));
9411
+ setHasExactMatch(
9412
+ matchSorter(itemsProp, inputValue, {
9413
+ ...filterOptions,
9414
+ threshold: matchSorter.rankings.EQUAL
9415
+ }).length > 0
9416
+ );
9417
+ } else {
9418
+ setItems(itemsProp);
9419
+ setHasExactMatch(true);
9420
+ }
9421
+ }, 200);
9338
9422
  }, [itemsProp]);
9339
9423
  return /* @__PURE__ */ jsx(
9340
9424
  ComboboxContext.Provider,
@@ -9356,6 +9440,8 @@ const ComboboxMultiple = function(props) {
9356
9440
  selectedItems,
9357
9441
  disabledItems,
9358
9442
  setDisabledItems,
9443
+ setForceCloseOnSelectItems,
9444
+ setForceClearInputValueOnSelectItems,
9359
9445
  getSelectedItemProps,
9360
9446
  getDropdownProps,
9361
9447
  reset,
@@ -9443,6 +9529,8 @@ const SelectSingle = function(props) {
9443
9529
  const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
9444
9530
  const [hasEmpty, setHasEmpty] = useState(false);
9445
9531
  const [disabledItems, setDisabledItems] = useState([]);
9532
+ const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
9533
+ const [, setForceClearInputValueOnSelectItems] = useState([]);
9446
9534
  const [isReadOnly, setIsReadOnly] = useState(readOnly);
9447
9535
  const [isDisabled, setIsDisabled] = useState(disabled);
9448
9536
  const referenceRef = useRef(null);
@@ -9485,7 +9573,7 @@ const SelectSingle = function(props) {
9485
9573
  case useSelect.stateChangeTypes.ItemClick:
9486
9574
  return {
9487
9575
  ...changes,
9488
- isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
9576
+ isOpen: open != null ? open : forceCloseOnSelectItems.includes(changes.selectedItem) ? false : disableCloseOnSelectItem ? true : changes.isOpen,
9489
9577
  highlightedIndex: disableCloseOnSelectItem ? state.highlightedIndex : changes.highlightedIndex
9490
9578
  };
9491
9579
  default:
@@ -9539,6 +9627,8 @@ const SelectSingle = function(props) {
9539
9627
  selectedItems: [],
9540
9628
  disabledItems,
9541
9629
  setDisabledItems,
9630
+ setForceCloseOnSelectItems,
9631
+ setForceClearInputValueOnSelectItems,
9542
9632
  selectItem,
9543
9633
  inputValue,
9544
9634
  isDisabled,
@@ -9622,6 +9712,8 @@ const SelectMultiple = function(props) {
9622
9712
  const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
9623
9713
  const [hasEmpty, setHasEmpty] = useState(false);
9624
9714
  const [disabledItems, setDisabledItems] = useState([]);
9715
+ const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState([]);
9716
+ const [, setForceClearInputValueOnSelectItems] = useState([]);
9625
9717
  const [isReadOnly, setIsReadOnly] = useState(readOnly);
9626
9718
  const [isDisabled, setIsDisabled] = useState(disabled);
9627
9719
  const referenceRef = useRef(null);
@@ -9700,7 +9792,7 @@ const SelectMultiple = function(props) {
9700
9792
  case useSelect.stateChangeTypes.ItemClick:
9701
9793
  return {
9702
9794
  ...changes,
9703
- isOpen: open != null ? open : disableCloseOnSelectItem ? true : changes.isOpen,
9795
+ isOpen: open != null ? open : forceCloseOnSelectItems.includes(changes.selectedItem) ? false : disableCloseOnSelectItem ? true : changes.isOpen,
9704
9796
  highlightedIndex: disableCloseOnSelectItem ? state.highlightedIndex : changes.highlightedIndex
9705
9797
  };
9706
9798
  default:
@@ -9768,6 +9860,8 @@ const SelectMultiple = function(props) {
9768
9860
  selectedItems,
9769
9861
  disabledItems,
9770
9862
  setDisabledItems,
9863
+ setForceCloseOnSelectItems,
9864
+ setForceClearInputValueOnSelectItems,
9771
9865
  getSelectedItemProps,
9772
9866
  getDropdownProps,
9773
9867
  reset,
@@ -10315,4 +10409,4 @@ const Combobox = Object.assign(ComboboxElement, {
10315
10409
  });
10316
10410
 
10317
10411
  export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxContent as c, ComboboxSearchField as d, ComboboxSelectTrigger as e, ComboboxList as f, ComboboxItem as g, ComboboxItemAddNew as h, ComboboxEmpty as i, useInfiniteCombobox as u };
10318
- //# sourceMappingURL=Combobox-Ct30JT3y.js.map
10412
+ //# sourceMappingURL=Combobox-BOpe_NUu.js.map