@servicetitan/anvil2 3.9.0 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/Combobox.js +1 -1
  3. package/dist/{DataTable-CRzQKN_P.js → DataTable-D-SKKt5w.js} +53 -16
  4. package/dist/DataTable-D-SKKt5w.js.map +1 -0
  5. package/dist/{DateFieldRange-CHbrYgsD.js → DateFieldRange-DUFfyknZ.js} +51 -31
  6. package/dist/DateFieldRange-DUFfyknZ.js.map +1 -0
  7. package/dist/DateFieldRange.js +1 -1
  8. package/dist/{DateFieldSingle-D-KZ3NL0.js → DateFieldSingle-BZjlO0hX.js} +49 -28
  9. package/dist/DateFieldSingle-BZjlO0hX.js.map +1 -0
  10. package/dist/DateFieldSingle.js +1 -1
  11. package/dist/{DateFieldYearless-DouEX24o.js → DateFieldYearless-TcKb9jE2.js} +4 -2
  12. package/dist/DateFieldYearless-TcKb9jE2.js.map +1 -0
  13. package/dist/DateFieldYearless.js +1 -1
  14. package/dist/{DateFieldYearlessRange-B_bImgyn.js → DateFieldYearlessRange-D9XtRNWi.js} +16 -4
  15. package/dist/DateFieldYearlessRange-D9XtRNWi.js.map +1 -0
  16. package/dist/DateFieldYearlessRange.js +1 -1
  17. package/dist/DrillDown.js +1 -1
  18. package/dist/{FilterBar-CBTAkEri.js → FilterBar-luqnJzAK.js} +27 -6
  19. package/dist/FilterBar-luqnJzAK.js.map +1 -0
  20. package/dist/FilterBar.js +1 -1
  21. package/dist/{MenuFooter-BXcNxNnX.js → MenuFooter--lBF8OjJ.js} +5 -1
  22. package/dist/MenuFooter--lBF8OjJ.js.map +1 -0
  23. package/dist/MultiSelectField.js +1 -1
  24. package/dist/{MultiSelectFieldSync-CpfsWecG.js → MultiSelectFieldSync-HhFKGtQM.js} +60 -15
  25. package/dist/MultiSelectFieldSync-HhFKGtQM.js.map +1 -0
  26. package/dist/MultiSelectMenu.js +1 -1
  27. package/dist/{MultiSelectMenuSync-CtyLYyDE.js → MultiSelectMenuSync-C3Y7jnJQ.js} +22 -8
  28. package/dist/MultiSelectMenuSync-C3Y7jnJQ.js.map +1 -0
  29. package/dist/{Page-B6E3Gbji.js → Page-Pk0-Sxf_.js} +11 -10
  30. package/dist/Page-Pk0-Sxf_.js.map +1 -0
  31. package/dist/Page.js +1 -1
  32. package/dist/{Pagination-DF7iMeJe.js → Pagination-Bx_u6Uea.js} +32 -6
  33. package/dist/Pagination-Bx_u6Uea.js.map +1 -0
  34. package/dist/Pagination.js +1 -1
  35. package/dist/{RichTextEditor-CLo8yoUP.js → RichTextEditor-CTIGe6xA.js} +3 -3
  36. package/dist/{RichTextEditor-CLo8yoUP.js.map → RichTextEditor-CTIGe6xA.js.map} +1 -1
  37. package/dist/RichTextEditor.js +1 -1
  38. package/dist/{SavedFiltersButton-FcYVncxU.js → SavedFiltersButton-CpnoAIrw.js} +250 -164
  39. package/dist/SavedFiltersButton-CpnoAIrw.js.map +1 -0
  40. package/dist/SavedFiltersButton.js +1 -1
  41. package/dist/SelectField.js +1 -1
  42. package/dist/{SelectFieldSync-Bi8HsMYP.js → SelectFieldSync-Dyug8Fgk.js} +35 -7
  43. package/dist/SelectFieldSync-Dyug8Fgk.js.map +1 -0
  44. package/dist/SelectMenu.js +1 -1
  45. package/dist/{SelectMenuSync-DKg4g5nN.js → SelectMenuSync-BkC0FD5P.js} +22 -8
  46. package/dist/SelectMenuSync-BkC0FD5P.js.map +1 -0
  47. package/dist/{SelectOptions-DszNAjxB.js → SelectOptions-B3Vmtb_k.js} +2 -2
  48. package/dist/{SelectOptions-DszNAjxB.js.map → SelectOptions-B3Vmtb_k.js.map} +1 -1
  49. package/dist/{SelectTrigger-DNIc5ttg.js → SelectTrigger-Do1puyA_.js} +2 -2
  50. package/dist/{SelectTrigger-DNIc5ttg.js.map → SelectTrigger-Do1puyA_.js.map} +1 -1
  51. package/dist/SelectTrigger.js +1 -1
  52. package/dist/{SelectTriggerBase-1Cc6EUBw.js → SelectTriggerBase-rxHXMSb4.js} +3 -1
  53. package/dist/SelectTriggerBase-rxHXMSb4.js.map +1 -0
  54. package/dist/Table.js +1 -1
  55. package/dist/{Toolbar-2VQIjU5b.js → Toolbar-BOgHhw7K.js} +12 -3
  56. package/dist/Toolbar-BOgHhw7K.js.map +1 -0
  57. package/dist/{Toolbar-BbImThIu.js → Toolbar-DDWUuQm_.js} +24 -2
  58. package/dist/Toolbar-DDWUuQm_.js.map +1 -0
  59. package/dist/Toolbar.js +2 -2
  60. package/dist/{ToolbarButtonToggle-Bc0XvCM9.js → ToolbarButtonToggle-BbtKfezH.js} +18 -2
  61. package/dist/ToolbarButtonToggle-BbtKfezH.js.map +1 -0
  62. package/dist/TreeSelectField.js +1 -1
  63. package/dist/{TreeSelectFieldSync-DUHVmOQa.js → TreeSelectFieldSync-Cd87uR6b.js} +35 -12
  64. package/dist/TreeSelectFieldSync-Cd87uR6b.js.map +1 -0
  65. package/dist/TreeSelectMenu.js +1 -1
  66. package/dist/{TreeSelectMenuSync-DVoYUG7F.js → TreeSelectMenuSync-88q0ydo5.js} +18 -6
  67. package/dist/TreeSelectMenuSync-88q0ydo5.js.map +1 -0
  68. package/dist/{YearlessDateInputWithPicker-CM9mmz8s.js → YearlessDateInputWithPicker-BquY4bCd.js} +19 -5
  69. package/dist/YearlessDateInputWithPicker-BquY4bCd.js.map +1 -0
  70. package/dist/anvParts-BGg5dgfl.js +43 -0
  71. package/dist/anvParts-BGg5dgfl.js.map +1 -0
  72. package/dist/beta.js +13 -13
  73. package/dist/{bulkActionTypes-BnZNAru6.js → bulkActionTypes-CWcUhKFS.js} +2 -2
  74. package/dist/{bulkActionTypes-BnZNAru6.js.map → bulkActionTypes-CWcUhKFS.js.map} +1 -1
  75. package/dist/{filter-state-XmqhkURU.js → filter-state-BQOX7_rO.js} +152 -80
  76. package/dist/filter-state-BQOX7_rO.js.map +1 -0
  77. package/dist/{index-BwNeldDw.js → index-DjirBR0l.js} +2 -2
  78. package/dist/{index-BwNeldDw.js.map → index-DjirBR0l.js.map} +1 -1
  79. package/dist/index.js +14 -14
  80. package/dist/src/beta/components/FilterBar/FilterBar.d.ts +3 -3
  81. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +17 -3
  82. package/dist/src/beta/components/FilterBar/parts.d.ts +38 -0
  83. package/dist/src/beta/components/SavedFiltersButton/parts.d.ts +37 -0
  84. package/dist/src/beta/components/SavedFiltersButton/types.d.ts +2 -1
  85. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +3 -2
  86. package/dist/src/beta/components/Table/DataTable/parts.d.ts +30 -0
  87. package/dist/src/beta/components/Table/internal/ResizeHandle.d.ts +3 -2
  88. package/dist/src/beta/components/Toolbar/Toolbar.d.ts +4 -4
  89. package/dist/src/beta/components/Toolbar/parts.d.ts +19 -0
  90. package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +6 -5
  91. package/dist/src/beta/components/TreeSelectField/parts.d.ts +23 -0
  92. package/dist/src/beta/components/TreeSelectField/types.d.ts +11 -4
  93. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +33 -2
  94. package/dist/src/beta/components/TreeSelectMenu/parts.d.ts +12 -0
  95. package/dist/src/beta/components/TreeSelectMenu/types.d.ts +3 -2
  96. package/dist/src/components/Combobox/ComboboxTypes.d.ts +2 -2
  97. package/dist/src/components/Combobox/parts.d.ts +19 -0
  98. package/dist/src/components/DateFieldRange/DateFieldRange.d.ts +2 -2
  99. package/dist/src/components/DateFieldRange/parts.d.ts +16 -0
  100. package/dist/src/components/DateFieldSingle/DateFieldSingle.d.ts +2 -2
  101. package/dist/src/components/DateFieldSingle/parts.d.ts +16 -0
  102. package/dist/src/components/DateFieldYearless/DateFieldYearless.d.ts +2 -2
  103. package/dist/src/components/DateFieldYearless/parts.d.ts +15 -0
  104. package/dist/src/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +2 -2
  105. package/dist/src/components/DateFieldYearlessRange/parts.d.ts +12 -0
  106. package/dist/src/components/DrillDown/DrillDown.d.ts +11 -0
  107. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  108. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  109. package/dist/src/components/MultiSelectField/internal/types.d.ts +3 -1
  110. package/dist/src/components/MultiSelectField/parts.d.ts +20 -0
  111. package/dist/src/components/MultiSelectField/types.d.ts +2 -2
  112. package/dist/src/components/MultiSelectMenu/parts.d.ts +12 -0
  113. package/dist/src/components/MultiSelectMenu/types.d.ts +3 -2
  114. package/dist/src/components/Pagination/Pagination.d.ts +4 -3
  115. package/dist/src/components/Pagination/parts.d.ts +28 -0
  116. package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  117. package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  118. package/dist/src/components/SelectField/parts.d.ts +18 -0
  119. package/dist/src/components/SelectField/types.d.ts +7 -2
  120. package/dist/src/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -6
  121. package/dist/src/components/SelectMenu/parts.d.ts +12 -0
  122. package/dist/src/components/SelectMenu/types.d.ts +3 -2
  123. package/dist/src/components/SelectTrigger/internal/SelectTriggerBase.d.ts +6 -5
  124. package/dist/src/components/Toolbar/Toolbar.d.ts +3 -3
  125. package/dist/src/components/Toolbar/parts.d.ts +18 -0
  126. package/dist/src/internal/constants/anvParts.d.ts +81 -0
  127. package/dist/src/internal/testing/anvPartsContract.d.ts +24 -0
  128. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +3 -1
  129. package/dist/{syncFilterUtils-UVNoFsDr.js → syncFilterUtils-YB6gRuuR.js} +11 -4
  130. package/dist/syncFilterUtils-YB6gRuuR.js.map +1 -0
  131. package/dist/{treeSync-CiU5d6rF.js → treeSync-DOen59wP.js} +24 -4
  132. package/dist/treeSync-DOen59wP.js.map +1 -0
  133. package/dist/{useAdaptiveView-C_WvM4-P.js → useAdaptiveView-DmhhcX-B.js} +3 -1
  134. package/dist/useAdaptiveView-DmhhcX-B.js.map +1 -0
  135. package/dist/{useDrilldown-D7DKSs7E.js → useDrilldown-UAm0-l1l.js} +10 -3
  136. package/dist/{useDrilldown-D7DKSs7E.js.map → useDrilldown-UAm0-l1l.js.map} +1 -1
  137. package/dist/{useInfiniteCombobox-COJTJxCZ.js → useInfiniteCombobox-V94SoOiU.js} +70 -23
  138. package/dist/useInfiniteCombobox-V94SoOiU.js.map +1 -0
  139. package/dist/{useMenuInteraction-AgrXU8kv.js → useMenuInteraction-nNF1dsrp.js} +7 -4
  140. package/dist/useMenuInteraction-nNF1dsrp.js.map +1 -0
  141. package/package.json +7 -5
  142. package/dist/DataTable-CRzQKN_P.js.map +0 -1
  143. package/dist/DateFieldRange-CHbrYgsD.js.map +0 -1
  144. package/dist/DateFieldSingle-D-KZ3NL0.js.map +0 -1
  145. package/dist/DateFieldYearless-DouEX24o.js.map +0 -1
  146. package/dist/DateFieldYearlessRange-B_bImgyn.js.map +0 -1
  147. package/dist/FilterBar-CBTAkEri.js.map +0 -1
  148. package/dist/MenuFooter-BXcNxNnX.js.map +0 -1
  149. package/dist/MultiSelectFieldSync-CpfsWecG.js.map +0 -1
  150. package/dist/MultiSelectMenuSync-CtyLYyDE.js.map +0 -1
  151. package/dist/Page-B6E3Gbji.js.map +0 -1
  152. package/dist/Pagination-DF7iMeJe.js.map +0 -1
  153. package/dist/SavedFiltersButton-FcYVncxU.js.map +0 -1
  154. package/dist/SelectFieldSync-Bi8HsMYP.js.map +0 -1
  155. package/dist/SelectMenuSync-DKg4g5nN.js.map +0 -1
  156. package/dist/SelectTriggerBase-1Cc6EUBw.js.map +0 -1
  157. package/dist/Toolbar-2VQIjU5b.js.map +0 -1
  158. package/dist/Toolbar-BbImThIu.js.map +0 -1
  159. package/dist/ToolbarButtonToggle-Bc0XvCM9.js.map +0 -1
  160. package/dist/TreeSelectFieldSync-DUHVmOQa.js.map +0 -1
  161. package/dist/TreeSelectMenuSync-DVoYUG7F.js.map +0 -1
  162. package/dist/YearlessDateInputWithPicker-CM9mmz8s.js.map +0 -1
  163. package/dist/filter-state-XmqhkURU.js.map +0 -1
  164. package/dist/syncFilterUtils-UVNoFsDr.js.map +0 -1
  165. package/dist/treeSync-CiU5d6rF.js.map +0 -1
  166. package/dist/useAdaptiveView-C_WvM4-P.js.map +0 -1
  167. package/dist/useInfiniteCombobox-COJTJxCZ.js.map +0 -1
  168. package/dist/useMenuInteraction-AgrXU8kv.js.map +0 -1
@@ -1,13 +1,14 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { createContext, useContext, useEffect, useMemo, useState, useRef, forwardRef, useId, useLayoutEffect, useDeferredValue, useCallback } from 'react';
3
3
  import { P as Popover, u as usePopoverContext } from './Popover-CjsE5FG0.js';
4
- import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-1Cc6EUBw.js';
4
+ import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-rxHXMSb4.js';
5
5
  import { c as cx } from './index-De1g9FRV.js';
6
6
  import { u as useDownshiftEnvironment, c as useMultipleSelection, b as useSelect, a as useCombobox$1 } from './downshift.esm-xtSnQp44.js';
7
7
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
8
8
  import { l as listboxStyles } from './Listbox.module-K85jTwXo.js';
9
9
  import { T as Text } from './Text-CIoD_RK4.js';
10
10
  import { D as Divider } from './Divider-C7fp5Xb6.js';
11
+ import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-BGg5dgfl.js';
11
12
  import { F as Flex } from './Flex-CRF7gj0_.js';
12
13
  import { S as Spinner } from './Spinner-B7tTWcP6.js';
13
14
  import { s as styles$1 } from './ListView.module-DfqtCL3Q.js';
@@ -104,6 +105,15 @@ function useGroups({
104
105
  return { groups, orderedItems };
105
106
  }
106
107
 
108
+ function splitDataAttributes$1(rest) {
109
+ const dataAttributes = Object.fromEntries(
110
+ Object.entries(rest).filter(([key]) => key.startsWith("data-"))
111
+ );
112
+ const restWithoutData = Object.fromEntries(
113
+ Object.entries(rest).filter(([key]) => !key.startsWith("data-"))
114
+ );
115
+ return { dataAttributes, restWithoutData };
116
+ }
107
117
  const SelectSingle = (props) => {
108
118
  const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
109
119
  const {
@@ -130,6 +140,7 @@ const SelectSingle = (props) => {
130
140
  groupSorter,
131
141
  ...rest
132
142
  } = componentProps;
143
+ const { dataAttributes, restWithoutData } = splitDataAttributes$1(rest);
133
144
  const ComboboxClassNames = cx(styles["combobox"], className);
134
145
  const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
135
146
  const [hasEmpty, setHasEmpty] = useState(false);
@@ -166,7 +177,7 @@ const SelectSingle = (props) => {
166
177
  inputValue,
167
178
  closeMenu
168
179
  } = useSelect({
169
- ...rest,
180
+ ...restWithoutData,
170
181
  items: orderedItems,
171
182
  itemToString,
172
183
  itemToKey,
@@ -214,11 +225,6 @@ const SelectSingle = (props) => {
214
225
  useEffect(() => {
215
226
  setIsReadOnly(readOnly);
216
227
  }, [readOnly]);
217
- useEffect(() => {
218
- if (disabled || readOnly) {
219
- closeMenu();
220
- }
221
- }, [disabled, readOnly, closeMenu]);
222
228
  return /* @__PURE__ */ jsx(
223
229
  ComboboxContext.Provider,
224
230
  {
@@ -263,6 +269,7 @@ const SelectSingle = (props) => {
263
269
  children: /* @__PURE__ */ jsx(
264
270
  "div",
265
271
  {
272
+ ...dataAttributes,
266
273
  className: ComboboxClassNames,
267
274
  "data-anv": "combobox",
268
275
  style: { ...style, ...layoutStyles },
@@ -323,6 +330,7 @@ const SelectMultiple = (props) => {
323
330
  selectAll,
324
331
  ...rest
325
332
  } = componentProps;
333
+ const { dataAttributes, restWithoutData } = splitDataAttributes$1(rest);
326
334
  const ComboboxClassNames = cx(styles["combobox"], className);
327
335
  const [hasDisabledPopover, setHasDisabledPopover] = useState(false);
328
336
  const [hasEmpty, setHasEmpty] = useState(false);
@@ -399,7 +407,7 @@ const SelectMultiple = (props) => {
399
407
  inputValue,
400
408
  closeMenu
401
409
  } = useSelect({
402
- ...rest,
410
+ ...restWithoutData,
403
411
  items: orderedItems,
404
412
  itemToString,
405
413
  itemToKey,
@@ -485,11 +493,6 @@ const SelectMultiple = (props) => {
485
493
  useEffect(() => {
486
494
  setIsReadOnly(readOnly);
487
495
  }, [readOnly]);
488
- useEffect(() => {
489
- if (disabled || readOnly) {
490
- closeMenu();
491
- }
492
- }, [disabled, readOnly, closeMenu]);
493
496
  return /* @__PURE__ */ jsx(
494
497
  ComboboxContext.Provider,
495
498
  {
@@ -540,6 +543,7 @@ const SelectMultiple = (props) => {
540
543
  children: /* @__PURE__ */ jsx(
541
544
  "div",
542
545
  {
546
+ ...dataAttributes,
543
547
  className: ComboboxClassNames,
544
548
  "data-anv": "combobox",
545
549
  style: { ...style, ...layoutStyles },
@@ -767,6 +771,17 @@ const ComboboxGroupList = ({
767
771
 
768
772
  const ComboboxGroupProvider = ComboboxGroupContext.Provider;
769
773
 
774
+ const PARTS = {
775
+ input: COMMON_PART.input,
776
+ trigger: COMMON_PART.trigger,
777
+ clearButton: COMMON_PART.clearButton,
778
+ toggleButton: COMMON_PART.toggleButton,
779
+ chip: COMMON_PART.chip,
780
+ menu: COMMON_PART.menu,
781
+ option: COMMON_PART.option,
782
+ popover: COMMON_PART.popover
783
+ };
784
+
770
785
  const ComboboxContentElement = ({
771
786
  children,
772
787
  className,
@@ -872,6 +887,7 @@ const ComboboxContentElement = ({
872
887
  {
873
888
  "data-anv": "combobox-content",
874
889
  ...rest,
890
+ ...{ [ANV_PART_ATTR]: PARTS.popover },
875
891
  className: popoverContentClassNames,
876
892
  ref: getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref,
877
893
  tabIndex: -1,
@@ -1001,7 +1017,10 @@ const ComboboxTrigger = (props) => {
1001
1017
  ref: context?.invoker.ref
1002
1018
  }
1003
1019
  };
1004
- const toggleButtonProps = select ? {} : getToggleButtonProps();
1020
+ const toggleButtonProps = select ? {} : {
1021
+ ...getToggleButtonProps(),
1022
+ [ANV_PART_ATTR]: PARTS.toggleButton
1023
+ };
1005
1024
  const handleClearButtonClick = (_e) => {
1006
1025
  if (onClear) {
1007
1026
  onClear();
@@ -1036,6 +1055,7 @@ const ComboboxTrigger = (props) => {
1036
1055
  labelProps,
1037
1056
  inputWrapperProps,
1038
1057
  toggleButtonProps,
1058
+ clearButtonProps: { [ANV_PART_ATTR]: PARTS.clearButton },
1039
1059
  itemToString,
1040
1060
  removeSelectedItem,
1041
1061
  variant: select ? "select" : "combobox",
@@ -1055,9 +1075,12 @@ const ComboboxTrigger = (props) => {
1055
1075
  selectedItem: item,
1056
1076
  index
1057
1077
  });
1058
- return chipProps;
1078
+ return {
1079
+ ...chipProps,
1080
+ [ANV_PART_ATTR]: PARTS.chip
1081
+ };
1059
1082
  }
1060
- return {};
1083
+ return { [ANV_PART_ATTR]: PARTS.chip };
1061
1084
  },
1062
1085
  inputProps: select ? {
1063
1086
  ...getDropdownProps != null ? getDropdownProps({
@@ -1068,7 +1091,8 @@ const ComboboxTrigger = (props) => {
1068
1091
  },
1069
1092
  ["aria-expanded"]: context?.invoker["aria-expanded"],
1070
1093
  ["aria-details"]: getMenuProps().id,
1071
- ["aria-haspopup"]: context?.invoker["aria-haspopup"]
1094
+ ["aria-haspopup"]: context?.invoker["aria-haspopup"],
1095
+ [ANV_PART_ATTR]: PARTS.trigger
1072
1096
  } : {
1073
1097
  ["aria-expanded"]: context?.invoker["aria-expanded"],
1074
1098
  ["aria-details"]: getMenuProps().id,
@@ -1093,7 +1117,8 @@ const ComboboxTrigger = (props) => {
1093
1117
  autoComplete: "off",
1094
1118
  id,
1095
1119
  ref: inputRef
1096
- }) : {}
1120
+ }) : {},
1121
+ [ANV_PART_ATTR]: PARTS.input
1097
1122
  }
1098
1123
  }
1099
1124
  );
@@ -1172,6 +1197,9 @@ const ComboboxSelectTrigger = ({
1172
1197
  );
1173
1198
  };
1174
1199
 
1200
+ function optionDataId(key) {
1201
+ return typeof key === "string" || typeof key === "number" ? { "data-id": String(key) } : {};
1202
+ }
1175
1203
  const CoreComboboxItemElement = ({
1176
1204
  children,
1177
1205
  disabled: disabledProp,
@@ -1292,7 +1320,9 @@ const CoreComboboxItemElement = ({
1292
1320
  item,
1293
1321
  index,
1294
1322
  "aria-selected": highlightedIndex === index,
1295
- ...rest
1323
+ ...rest,
1324
+ [ANV_PART_ATTR]: PARTS.option,
1325
+ ...optionDataId(itemToKey(item))
1296
1326
  }),
1297
1327
  disabled,
1298
1328
  checked,
@@ -1309,7 +1339,9 @@ const CoreComboboxItemElement = ({
1309
1339
  item,
1310
1340
  index,
1311
1341
  "aria-selected": highlightedIndex === index,
1312
- ...rest
1342
+ ...rest,
1343
+ [ANV_PART_ATTR]: PARTS.option,
1344
+ ...optionDataId(itemToKey(item))
1313
1345
  }),
1314
1346
  "data-anv": "combobox-item",
1315
1347
  "data-checked": itemToKey(selectedItem) === itemToKey(item),
@@ -1441,6 +1473,7 @@ const ComboboxListElement = ({
1441
1473
  ...getMenuProps(rest),
1442
1474
  ref: listRef,
1443
1475
  "data-anv": "combobox-list",
1476
+ ...{ [ANV_PART_ATTR]: PARTS.menu },
1444
1477
  className: cx(styles["listview"], styles$1["listview"], {
1445
1478
  [styles.scrolled]: isScrolled
1446
1479
  }),
@@ -1464,6 +1497,7 @@ const ComboboxListElement = ({
1464
1497
  ...getMenuProps(rest),
1465
1498
  ref: listRef,
1466
1499
  "data-anv": "combobox-list",
1500
+ ...{ [ANV_PART_ATTR]: PARTS.menu },
1467
1501
  className: listboxStyles["listbox"],
1468
1502
  style: {
1469
1503
  display: items.length || hasAddNew ? void 0 : "none"
@@ -1481,6 +1515,15 @@ const ComboboxList = ({
1481
1515
  ...rest
1482
1516
  }) => /* @__PURE__ */ jsx(ComboboxListElement, { className, ...rest, children });
1483
1517
 
1518
+ function splitDataAttributes(rest) {
1519
+ const dataAttributes = Object.fromEntries(
1520
+ Object.entries(rest).filter(([key]) => key.startsWith("data-"))
1521
+ );
1522
+ const restWithoutData = Object.fromEntries(
1523
+ Object.entries(rest).filter(([key]) => !key.startsWith("data-"))
1524
+ );
1525
+ return { dataAttributes, restWithoutData };
1526
+ }
1484
1527
  const COMBOBOX_DEPRECATION_MESSAGE = "[Anvil2] Combobox is deprecated. Use SelectField or MultiSelectField instead. Combobox will be removed in Anvil2 5.0.";
1485
1528
  const ComboboxSingle = (props) => {
1486
1529
  const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
@@ -1510,6 +1553,7 @@ const ComboboxSingle = (props) => {
1510
1553
  groupSorter,
1511
1554
  ...rest
1512
1555
  } = componentProps;
1556
+ const { dataAttributes, restWithoutData } = splitDataAttributes(rest);
1513
1557
  const ComboboxClassNames = cx(styles["combobox"], className);
1514
1558
  const [items, setItems] = useState(itemsProp);
1515
1559
  const [hasAddNew, setHasAddNew] = useState(false);
@@ -1563,7 +1607,7 @@ const ComboboxSingle = (props) => {
1563
1607
  inputValue,
1564
1608
  closeMenu
1565
1609
  } = useCombobox$1({
1566
- ...rest,
1610
+ ...restWithoutData,
1567
1611
  items: combinedItems,
1568
1612
  itemToString,
1569
1613
  itemToKey,
@@ -1811,6 +1855,7 @@ const ComboboxSingle = (props) => {
1811
1855
  return /* @__PURE__ */ jsx(ComboboxContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
1812
1856
  "div",
1813
1857
  {
1858
+ ...dataAttributes,
1814
1859
  className: ComboboxClassNames,
1815
1860
  "data-anv": "combobox",
1816
1861
  style: { ...style, ...layoutStyles },
@@ -1873,6 +1918,7 @@ const ComboboxMultiple = (props) => {
1873
1918
  groupSorter,
1874
1919
  ...rest
1875
1920
  } = componentProps;
1921
+ const { dataAttributes, restWithoutData } = splitDataAttributes(rest);
1876
1922
  const ComboboxClassNames = cx(styles["combobox"], className);
1877
1923
  const [items, setItems] = useState(itemsProp);
1878
1924
  const [hasAddNew, setHasAddNew] = useState(false);
@@ -1983,7 +2029,7 @@ const ComboboxMultiple = (props) => {
1983
2029
  inputValue,
1984
2030
  closeMenu
1985
2031
  } = useCombobox$1({
1986
- ...rest,
2032
+ ...restWithoutData,
1987
2033
  items: combinedItems,
1988
2034
  itemToString,
1989
2035
  itemToKey,
@@ -2271,6 +2317,7 @@ const ComboboxMultiple = (props) => {
2271
2317
  return /* @__PURE__ */ jsx(ComboboxContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
2272
2318
  "div",
2273
2319
  {
2320
+ ...dataAttributes,
2274
2321
  className: ComboboxClassNames,
2275
2322
  "data-anv": "combobox",
2276
2323
  style: { ...style, ...layoutStyles },
@@ -2656,4 +2703,4 @@ function useInfiniteCombobox({
2656
2703
  }
2657
2704
 
2658
2705
  export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxList as c, useInfiniteCombobox as u };
2659
- //# sourceMappingURL=useInfiniteCombobox-COJTJxCZ.js.map
2706
+ //# sourceMappingURL=useInfiniteCombobox-V94SoOiU.js.map