@servicetitan/anvil2 2.2.0 → 2.3.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 (230) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{Alert-DXoEusod.js → Alert-D9mBPs6z.js} +2 -2
  3. package/dist/{Alert-DXoEusod.js.map → Alert-D9mBPs6z.js.map} +1 -1
  4. package/dist/Alert.js +1 -1
  5. package/dist/{Announcement-SAypScAu.js → Announcement-B34cD6BC.js} +2 -2
  6. package/dist/{Announcement-SAypScAu.js.map → Announcement-B34cD6BC.js.map} +1 -1
  7. package/dist/Announcement.js +1 -1
  8. package/dist/{Button-l7pTJdPc.js → Button-DrNDkO2f.js} +2 -2
  9. package/dist/{Button-l7pTJdPc.js.map → Button-DrNDkO2f.js.map} +1 -1
  10. package/dist/Button.css +50 -50
  11. package/dist/Button.js +1 -1
  12. package/dist/Button.module-DwCq9XU0.js +26 -0
  13. package/dist/Button.module-DwCq9XU0.js.map +1 -0
  14. package/dist/{ButtonCompound-CX2kHgWe.js → ButtonCompound-D9VTKcL4.js} +2 -2
  15. package/dist/{ButtonCompound-CX2kHgWe.js.map → ButtonCompound-D9VTKcL4.js.map} +1 -1
  16. package/dist/ButtonCompound.js +1 -1
  17. package/dist/{ButtonLink-CRlyK750.js → ButtonLink-DDtrmbVM.js} +3 -2
  18. package/dist/ButtonLink-DDtrmbVM.js.map +1 -0
  19. package/dist/ButtonLink.js +1 -1
  20. package/dist/{ButtonToggle-BOVP_jEN.js → ButtonToggle-DrFewgOG.js} +3 -3
  21. package/dist/{ButtonToggle-BOVP_jEN.js.map → ButtonToggle-DrFewgOG.js.map} +1 -1
  22. package/dist/ButtonToggle.js +1 -1
  23. package/dist/{Calendar-oNlBgZKB.js → Calendar-CkgpKD7Q.js} +2 -2
  24. package/dist/{Calendar-oNlBgZKB.js.map → Calendar-CkgpKD7Q.js.map} +1 -1
  25. package/dist/{Calendar-D0CczOpQ.js → Calendar-CtkL4zYU.js} +3 -3
  26. package/dist/{Calendar-D0CczOpQ.js.map → Calendar-CtkL4zYU.js.map} +1 -1
  27. package/dist/Calendar.js +2 -2
  28. package/dist/{Checkbox-DuzAqrE7.js → Checkbox-CFgjreAl.js} +2 -2
  29. package/dist/{Checkbox-DuzAqrE7.js.map → Checkbox-CFgjreAl.js.map} +1 -1
  30. package/dist/{Checkbox-DIY-6agd.js → Checkbox-CxjZpzPp.js} +3 -3
  31. package/dist/{Checkbox-DIY-6agd.js.map → Checkbox-CxjZpzPp.js.map} +1 -1
  32. package/dist/Checkbox.js +1 -1
  33. package/dist/{Combobox-CSGn20KQ.js → Combobox-B6saoDAP.js} +4 -4
  34. package/dist/{Combobox-CSGn20KQ.js.map → Combobox-B6saoDAP.js.map} +1 -1
  35. package/dist/Combobox.js +1 -1
  36. package/dist/{DataTable-D30sE1Xt.js → DataTable-NzX8SCYT.js} +42 -12
  37. package/dist/{DataTable-D30sE1Xt.js.map → DataTable-NzX8SCYT.js.map} +1 -1
  38. package/dist/DataTable.css +9 -5
  39. package/dist/{DateFieldRange-DBOiqaML.js → DateFieldRange-DgGgNSzN.js} +4 -4
  40. package/dist/{DateFieldRange-DBOiqaML.js.map → DateFieldRange-DgGgNSzN.js.map} +1 -1
  41. package/dist/DateFieldRange.js +1 -1
  42. package/dist/{DateFieldSingle-C4hU55MP.js → DateFieldSingle-BR4nJNVl.js} +4 -4
  43. package/dist/{DateFieldSingle-C4hU55MP.js.map → DateFieldSingle-BR4nJNVl.js.map} +1 -1
  44. package/dist/DateFieldSingle.js +1 -1
  45. package/dist/{DateFieldYearless-BXkUiHIR.js → DateFieldYearless-mqvM2uVP.js} +4 -4
  46. package/dist/{DateFieldYearless-BXkUiHIR.js.map → DateFieldYearless-mqvM2uVP.js.map} +1 -1
  47. package/dist/DateFieldYearless.js +1 -1
  48. package/dist/{DateFieldYearlessRange-CGffFnVT.js → DateFieldYearlessRange-CLuyUoGF.js} +4 -4
  49. package/dist/{DateFieldYearlessRange-CGffFnVT.js.map → DateFieldYearlessRange-CLuyUoGF.js.map} +1 -1
  50. package/dist/DateFieldYearlessRange.js +1 -1
  51. package/dist/{DaysOfTheWeek-DJEDopC9.js → DaysOfTheWeek-D-WPj18i.js} +3 -3
  52. package/dist/{DaysOfTheWeek-DJEDopC9.js.map → DaysOfTheWeek-D-WPj18i.js.map} +1 -1
  53. package/dist/DaysOfTheWeek.js +1 -1
  54. package/dist/{Dialog-BbsZMnCA.js → Dialog-yA2jYtgv.js} +4 -4
  55. package/dist/{Dialog-BbsZMnCA.js.map → Dialog-yA2jYtgv.js.map} +1 -1
  56. package/dist/Dialog.js +1 -1
  57. package/dist/{DialogCancelButton-GuN5lgR-.js → DialogCancelButton-BfI9K4a4.js} +2 -2
  58. package/dist/{DialogCancelButton-GuN5lgR-.js.map → DialogCancelButton-BfI9K4a4.js.map} +1 -1
  59. package/dist/Dnd.js +1 -1
  60. package/dist/DndSort.js +2 -2
  61. package/dist/{Drawer-Dhq76ot3.js → Drawer-Dt4dqAxQ.js} +4 -4
  62. package/dist/{Drawer-Dhq76ot3.js.map → Drawer-Dt4dqAxQ.js.map} +1 -1
  63. package/dist/Drawer.js +1 -1
  64. package/dist/DrillDown.js +1 -1
  65. package/dist/{EditCard-DAiE-Hsc.js → EditCard-CH-JE4ba.js} +2 -2
  66. package/dist/{EditCard-DAiE-Hsc.js.map → EditCard-CH-JE4ba.js.map} +1 -1
  67. package/dist/EditCard.js +1 -1
  68. package/dist/{FieldDialog-CAuhkCZY.js → FieldDialog-BghhsL2B.js} +121 -36
  69. package/dist/FieldDialog-BghhsL2B.js.map +1 -0
  70. package/dist/FieldMessage-OeP_xSUE.js +132 -0
  71. package/dist/FieldMessage-OeP_xSUE.js.map +1 -0
  72. package/dist/FieldMessage.js +1 -1
  73. package/dist/{Helper-PNGm_U2X.js → Helper-B2UrgJvr.js} +2 -2
  74. package/dist/{Helper-PNGm_U2X.js.map → Helper-B2UrgJvr.js.map} +1 -1
  75. package/dist/{InputMask-Ds0W2fKy.js → InputMask-B7ZnJoR5.js} +2 -2
  76. package/dist/{InputMask-Ds0W2fKy.js.map → InputMask-B7ZnJoR5.js.map} +1 -1
  77. package/dist/InputMask.js +1 -1
  78. package/dist/{ListView-MMmJDM--.js → ListView-CN8zu-cq.js} +2 -2
  79. package/dist/{ListView-MMmJDM--.js.map → ListView-CN8zu-cq.js.map} +1 -1
  80. package/dist/ListView.js +1 -1
  81. package/dist/{Menu-3LIfRdTk.js → Menu-CpRnsr0v.js} +2 -2
  82. package/dist/{Menu-3LIfRdTk.js.map → Menu-CpRnsr0v.js.map} +1 -1
  83. package/dist/Menu.js +1 -1
  84. package/dist/MultiSelectField.js +1 -1
  85. package/dist/{MultiSelectFieldSync-Bey99LzJ.js → MultiSelectFieldSync-ChDuxvhE.js} +876 -255
  86. package/dist/MultiSelectFieldSync-ChDuxvhE.js.map +1 -0
  87. package/dist/{NumberField-CDkEUfXW.js → NumberField-ecubQsaf.js} +4 -4
  88. package/dist/{NumberField-CDkEUfXW.js.map → NumberField-ecubQsaf.js.map} +1 -1
  89. package/dist/NumberField.js +1 -1
  90. package/dist/{Page-BVxybI-j.js → Page-CkcnGPPK.js} +8 -8
  91. package/dist/{Page-BVxybI-j.js.map → Page-CkcnGPPK.js.map} +1 -1
  92. package/dist/Page.js +1 -1
  93. package/dist/{Pagination-DIatYUXX.js → Pagination-DO9NORlw.js} +4 -4
  94. package/dist/{Pagination-DIatYUXX.js.map → Pagination-DO9NORlw.js.map} +1 -1
  95. package/dist/Pagination.js +1 -1
  96. package/dist/{Popover-4C5IVk8T.js → Popover-D_BmwIOW.js} +3 -3
  97. package/dist/{Popover-4C5IVk8T.js.map → Popover-D_BmwIOW.js.map} +1 -1
  98. package/dist/Popover.js +1 -1
  99. package/dist/{ProgressBar-BGwp-qnf.js → ProgressBar-CBhVZIzK.js} +2 -2
  100. package/dist/{ProgressBar-BGwp-qnf.js.map → ProgressBar-CBhVZIzK.js.map} +1 -1
  101. package/dist/ProgressBar.js +1 -1
  102. package/dist/{Radio-D7hNws2b.js → Radio-BMFwnzyz.js} +2 -2
  103. package/dist/{Radio-D7hNws2b.js.map → Radio-BMFwnzyz.js.map} +1 -1
  104. package/dist/{Radio-BRcpSu-d.js → Radio-DtYoRq3m.js} +3 -3
  105. package/dist/{Radio-BRcpSu-d.js.map → Radio-DtYoRq3m.js.map} +1 -1
  106. package/dist/Radio.js +1 -1
  107. package/dist/{SearchField-CoeaOip5.js → SearchField-CtdtcrVV.js} +12 -4
  108. package/dist/SearchField-CtdtcrVV.js.map +1 -0
  109. package/dist/SearchField.js +1 -1
  110. package/dist/{SelectCard-Bag44PmE.js → SelectCard-yWBNnm7t.js} +32 -8
  111. package/dist/SelectCard-yWBNnm7t.js.map +1 -0
  112. package/dist/SelectCard.js +1 -1
  113. package/dist/SelectField.js +1 -1
  114. package/dist/SelectFieldSync-DfP3eETZ.js +1248 -0
  115. package/dist/SelectFieldSync-DfP3eETZ.js.map +1 -0
  116. package/dist/{SelectTrigger-DgsvUfyl.js → SelectTrigger-Cs5CGc4D.js} +2 -2
  117. package/dist/{SelectTrigger-DgsvUfyl.js.map → SelectTrigger-Cs5CGc4D.js.map} +1 -1
  118. package/dist/SelectTrigger.js +1 -1
  119. package/dist/{SelectTriggerBase-OxfNqdIq.js → SelectTriggerBase-Cs827tDp.js} +3 -3
  120. package/dist/{SelectTriggerBase-OxfNqdIq.js.map → SelectTriggerBase-Cs827tDp.js.map} +1 -1
  121. package/dist/{Stepper-D8lkCP8Y.js → Stepper-CzVKDg-N.js} +2 -2
  122. package/dist/{Stepper-D8lkCP8Y.js.map → Stepper-CzVKDg-N.js.map} +1 -1
  123. package/dist/Stepper.js +1 -1
  124. package/dist/{Switch-D0zwZCg4.js → Switch-CEmjmSiL.js} +2 -2
  125. package/dist/{Switch-D0zwZCg4.js.map → Switch-CEmjmSiL.js.map} +1 -1
  126. package/dist/Switch.js +1 -1
  127. package/dist/Table.js +1 -1
  128. package/dist/{TextField-Dfzn2HeL.js → TextField-D9VWORek.js} +2 -2
  129. package/dist/{TextField-Dfzn2HeL.js.map → TextField-D9VWORek.js.map} +1 -1
  130. package/dist/{TextField-BycenT6H.js → TextField-atI4M79b.js} +3 -3
  131. package/dist/{TextField-BycenT6H.js.map → TextField-atI4M79b.js.map} +1 -1
  132. package/dist/TextField.css +29 -25
  133. package/dist/TextField.js +1 -1
  134. package/dist/TextField.module-BP-hDP5m.js +22 -0
  135. package/dist/TextField.module-BP-hDP5m.js.map +1 -0
  136. package/dist/{Textarea-BwbwJP6z.js → Textarea-D-kPIsIN.js} +2 -2
  137. package/dist/{Textarea-BwbwJP6z.js.map → Textarea-D-kPIsIN.js.map} +1 -1
  138. package/dist/Textarea.js +1 -1
  139. package/dist/{TimeField-B0WSzSfJ.js → TimeField-CbdxhawY.js} +3 -3
  140. package/dist/{TimeField-B0WSzSfJ.js.map → TimeField-CbdxhawY.js.map} +1 -1
  141. package/dist/TimeField.js +1 -1
  142. package/dist/Toast.js +2 -2
  143. package/dist/{Toaster-9Q_yaKGu.js → Toaster-B652KIzq.js} +4 -4
  144. package/dist/{Toaster-9Q_yaKGu.js.map → Toaster-B652KIzq.js.map} +1 -1
  145. package/dist/{Toaster-DHo8dnWH.js → Toaster-Bisc1mlh.js} +2 -2
  146. package/dist/{Toaster-DHo8dnWH.js.map → Toaster-Bisc1mlh.js.map} +1 -1
  147. package/dist/{Toolbar-CVOenuCF.js → Toolbar-4VdevLJd.js} +78 -64
  148. package/dist/Toolbar-4VdevLJd.js.map +1 -0
  149. package/dist/Toolbar.css +37 -55
  150. package/dist/Toolbar.js +1 -1
  151. package/dist/{YearlessDateInputWithPicker-ztozRk-X.js → YearlessDateInputWithPicker-BADNBDmy.js} +3 -3
  152. package/dist/{YearlessDateInputWithPicker-ztozRk-X.js.map → YearlessDateInputWithPicker-BADNBDmy.js.map} +1 -1
  153. package/dist/beta/components/MultiSelectField/MultiSelectField.d.ts +1 -10
  154. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +5 -0
  155. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +0 -2
  156. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +3 -7
  157. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +6 -0
  158. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +30 -0
  159. package/dist/beta/components/MultiSelectField/internal/types.d.ts +67 -0
  160. package/dist/beta/components/MultiSelectField/internal/useChipLayout.d.ts +19 -0
  161. package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +1 -2
  162. package/dist/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +40 -0
  163. package/dist/beta/components/MultiSelectField/internal/useToggleSelection.d.ts +21 -0
  164. package/dist/beta/components/MultiSelectField/types.d.ts +7 -0
  165. package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +1 -1
  166. package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +3 -4
  167. package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +6 -0
  168. package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +0 -2
  169. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +4 -3
  170. package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +3 -7
  171. package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +2 -4
  172. package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +6 -0
  173. package/dist/beta/components/SelectField/internal/SelectFieldTrigger.d.ts +27 -0
  174. package/dist/beta/components/SelectField/internal/buildDownshiftItems.d.ts +22 -0
  175. package/dist/beta/components/SelectField/internal/types.d.ts +57 -0
  176. package/dist/beta/components/SelectField/internal/useCombo.d.ts +1 -5
  177. package/dist/beta/components/SelectField/internal/useProcessedOptions.d.ts +19 -0
  178. package/dist/beta/components/SelectField/internal/useSelectMode.d.ts +34 -0
  179. package/dist/beta/components/SelectField/types.d.ts +7 -0
  180. package/dist/beta/components/Table/DataTable/DataTable.d.ts +9 -2
  181. package/dist/beta/components/Table/DataTable/types.d.ts +20 -0
  182. package/dist/beta/components/Toolbar/Toolbar.d.ts +17 -7
  183. package/dist/beta/components/Toolbar/ToolbarButton.d.ts +0 -1
  184. package/dist/beta/components/Toolbar/ToolbarButtonLink.d.ts +0 -1
  185. package/dist/beta/components/Toolbar/ToolbarButtonToggle.d.ts +0 -1
  186. package/dist/beta/components/Toolbar/ToolbarSearchField.d.ts +2 -3
  187. package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +0 -1
  188. package/dist/beta/components/Toolbar/internal/{ToolbarOverflowContext.d.ts → ToolbarContext.d.ts} +14 -5
  189. package/dist/beta/components/Toolbar/internal/utils/test.d.ts +5 -3
  190. package/dist/beta/components/Toolbar/types.d.ts +5 -1
  191. package/dist/beta.js +7 -7
  192. package/dist/components/ButtonLink/ButtonLink.d.ts +3 -3
  193. package/dist/components/SearchField/SearchField.d.ts +8 -26
  194. package/dist/components/SearchField/internal/SearchField.d.ts +73 -0
  195. package/dist/components/Toolbar/Toolbar.d.ts +11 -5
  196. package/dist/components/Toolbar/ToolbarButton.d.ts +0 -1
  197. package/dist/components/Toolbar/ToolbarButtonLink.d.ts +0 -1
  198. package/dist/components/Toolbar/ToolbarButtonToggle.d.ts +0 -1
  199. package/dist/components/Toolbar/ToolbarSelect.d.ts +0 -1
  200. package/dist/components/Toolbar/internal/{ToolbarOverflowContext.d.ts → ToolbarContext.d.ts} +14 -5
  201. package/dist/components/Toolbar/internal/utils/test.d.ts +5 -3
  202. package/dist/components/Toolbar/types.d.ts +5 -1
  203. package/dist/{index-DFvIVS57.js → index-ClUtwV8V.js} +2 -2
  204. package/dist/{index-DFvIVS57.js.map → index-ClUtwV8V.js.map} +1 -1
  205. package/dist/{index.esm-K9kxJhLx.js → index.esm-BZV0wNKZ.js} +1 -2
  206. package/dist/{index.esm-K9kxJhLx.js.map → index.esm-BZV0wNKZ.js.map} +1 -1
  207. package/dist/index.js +80 -69
  208. package/dist/index.js.map +1 -1
  209. package/dist/index2.css +17 -23
  210. package/dist/{match-sorter.esm-B3vwg1-X.js → match-sorter.esm-adzV1NDp.js} +2 -2
  211. package/dist/{match-sorter.esm-B3vwg1-X.js.map → match-sorter.esm-adzV1NDp.js.map} +1 -1
  212. package/dist/{useDrilldown-jbU4Cs5l.js → useDrilldown-C8TRwNE9.js} +3 -3
  213. package/dist/{useDrilldown-jbU4Cs5l.js.map → useDrilldown-C8TRwNE9.js.map} +1 -1
  214. package/dist/{useInitialFocus-BRRbylek.js → useInitialFocus-CdoVwSbr.js} +2 -2
  215. package/dist/{useInitialFocus-BRRbylek.js.map → useInitialFocus-CdoVwSbr.js.map} +1 -1
  216. package/package.json +3 -2
  217. package/dist/Button.module-Ck7VrMqw.js +0 -26
  218. package/dist/Button.module-Ck7VrMqw.js.map +0 -1
  219. package/dist/ButtonLink-CRlyK750.js.map +0 -1
  220. package/dist/FieldDialog-CAuhkCZY.js.map +0 -1
  221. package/dist/FieldMessage-DS0COrjp.js +0 -132
  222. package/dist/FieldMessage-DS0COrjp.js.map +0 -1
  223. package/dist/MultiSelectFieldSync-Bey99LzJ.js.map +0 -1
  224. package/dist/SearchField-CoeaOip5.js.map +0 -1
  225. package/dist/SelectCard-Bag44PmE.js.map +0 -1
  226. package/dist/SelectFieldSync-CigqXq3T.js +0 -763
  227. package/dist/SelectFieldSync-CigqXq3T.js.map +0 -1
  228. package/dist/TextField.module-pD1felN8.js +0 -20
  229. package/dist/TextField.module-pD1felN8.js.map +0 -1
  230. package/dist/Toolbar-CVOenuCF.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { MultiSelectFieldComboboxInternalProps } from './types';
2
+ /**
3
+ * Combobox mode: searchable multi-select using useCombobox.
4
+ */
5
+ export declare const MultiSelectFieldComboboxMode: ({ id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, labelNode, hideLabel, hint, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, debounceMs, selectAll, selectFiltered, singleRow, maxChips, onSearchChange, handleRemoveOption, handleClear, }: MultiSelectFieldComboboxInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -12,7 +12,6 @@ import { MultiSelectFieldOption } from '../types';
12
12
  * @property {boolean} [error] - Shows error styling on the input when true
13
13
  * @property {() => void} [onClear] - Callback fired when the clear button is clicked
14
14
  * @property {string} [id] - HTML id attribute for the input element
15
- * @property {string} [popoverTarget] - Target identifier for popover association
16
15
  * @property {RefObject<HTMLDivElement>} [inputWrapperRef] - Ref for the input wrapper div element
17
16
  * @property {PassThroughProps<"div">} [htmlInputWrapperProps] - Additional props passed to the wrapper div
18
17
  * @property {PassThroughProps<"input">} [inputProps] - Additional props passed to the input element
@@ -34,7 +33,6 @@ export type MultiSelectFieldInputProps = {
34
33
  error?: boolean;
35
34
  onClear?: () => void;
36
35
  id?: string;
37
- popoverTarget?: string;
38
36
  inputWrapperRef?: RefObject<HTMLDivElement>;
39
37
  htmlInputWrapperProps?: PassThroughProps<"div">;
40
38
  inputProps?: PassThroughProps<"input">;
@@ -1,15 +1,12 @@
1
1
  import { MultiSelectFieldDownshiftItem, MultiSelectFieldOption } from '../types';
2
- import { UseComboboxPropGetters } from 'downshift';
3
2
  import { CSSProperties, MutableRefObject } from 'react';
4
3
  import { FieldListBaseHandle } from '../../SelectField/internal/FieldListBase';
5
- import { SectionMeta } from '../../SelectField/internal/types';
6
- type GetMenuProps = UseComboboxPropGetters<MultiSelectFieldDownshiftItem>["getMenuProps"];
7
- type GetItemProps = UseComboboxPropGetters<MultiSelectFieldDownshiftItem>["getItemProps"];
4
+ import { GetItemPropsFn, GetMenuPropsFn, SectionMeta } from '../../SelectField/internal/types';
8
5
  export type MultiSelectFieldListProps = {
9
6
  isOpen: boolean;
10
7
  items: MultiSelectFieldDownshiftItem[];
11
- getMenuProps: GetMenuProps;
12
- getItemProps: GetItemProps;
8
+ getMenuProps: GetMenuPropsFn;
9
+ getItemProps: GetItemPropsFn;
13
10
  highlightedIndex: number;
14
11
  highlightChangeTypeRef?: MutableRefObject<string>;
15
12
  selectedOptions: MultiSelectFieldOption[];
@@ -25,4 +22,3 @@ export type MultiSelectFieldListProps = {
25
22
  virtualize?: boolean;
26
23
  };
27
24
  export declare const MultiSelectFieldList: import('react').ForwardRefExoticComponent<MultiSelectFieldListProps & import('react').RefAttributes<FieldListBaseHandle>>;
28
- export {};
@@ -0,0 +1,6 @@
1
+ import { MultiSelectFieldBaseInternalProps } from './types';
2
+ /**
3
+ * Select mode: non-searchable multi-select using useSelect.
4
+ * Active when disableSearch is true.
5
+ */
6
+ export declare const MultiSelectFieldSelectMode: ({ id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, labelNode, hideLabel, hint, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, selectAll, singleRow, maxChips, handleRemoveOption, handleClear, }: MultiSelectFieldBaseInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,30 @@
1
+ import { Size } from '../../../../types';
2
+ import { ReactElement, RefObject } from 'react';
3
+ import { MultiSelectFieldOption } from '../types';
4
+ export type MultiSelectFieldTriggerProps = {
5
+ placeholder?: string;
6
+ size?: Extract<Size, "small" | "medium" | "large">;
7
+ disableClearButton?: boolean;
8
+ disabled?: boolean;
9
+ readOnly?: boolean;
10
+ error?: boolean;
11
+ onClear?: () => void;
12
+ id?: string;
13
+ popoverTarget?: string;
14
+ inputWrapperRef?: RefObject<HTMLDivElement>;
15
+ toggleButtonProps?: Record<string, any>;
16
+ prefix?: string | ReactElement;
17
+ suffix?: string | ReactElement;
18
+ selectedOptions?: MultiSelectFieldOption[];
19
+ onRemoveOption?: (option: MultiSelectFieldOption) => void;
20
+ singleRow?: boolean;
21
+ maxChips?: number;
22
+ };
23
+ /**
24
+ * Non-searchable trigger for MultiSelectField when disableSearch is true.
25
+ * Renders chips for selected items in a div-based trigger (no input element).
26
+ */
27
+ export declare const MultiSelectFieldTrigger: {
28
+ ({ placeholder, size, disableClearButton, disabled, readOnly, error, onClear, id, inputWrapperRef, toggleButtonProps, prefix, suffix, selectedOptions, onRemoveOption, singleRow, maxChips, popoverTarget, }: MultiSelectFieldTriggerProps): import("react/jsx-runtime").JSX.Element;
29
+ displayName: string;
30
+ };
@@ -0,0 +1,67 @@
1
+ import { ReactElement, RefObject } from 'react';
2
+ import { CheckState } from '../../../../types';
3
+ import { MultiSelectFieldOption, MultiSelectFieldProps } from '../types';
4
+ export type MultiSelectFieldBaseInternalProps = {
5
+ id: string;
6
+ helperUid: string;
7
+ selectedOptions: MultiSelectFieldOption[];
8
+ onSelectedOptionsChange: (options: MultiSelectFieldOption[]) => void;
9
+ displayAs: "popover" | "dialog";
10
+ isDisabledOrReadOnly: boolean;
11
+ disabled?: boolean;
12
+ readOnly?: boolean;
13
+ required?: boolean;
14
+ placeholder?: string;
15
+ size?: "small" | "medium" | "large";
16
+ error?: boolean | string | ReactElement | string[];
17
+ hasHelperText: boolean;
18
+ disableClearButton: boolean;
19
+ prefix?: string | ReactElement;
20
+ suffix?: string | ReactElement;
21
+ label: string;
22
+ labelNode?: React.ReactNode;
23
+ hideLabel?: boolean;
24
+ hint?: ReactElement | string;
25
+ errorMessages?: string | ReactElement | string[];
26
+ warning?: string | string[];
27
+ description?: ReactElement | string;
28
+ className?: string;
29
+ style?: React.CSSProperties;
30
+ layoutStyles?: React.CSSProperties;
31
+ pinned?: MultiSelectFieldProps["pinned"];
32
+ groupToString?: (groupValue: string | number) => string;
33
+ groupSorter?: (a: string | number, b: string | number) => number;
34
+ virtualize?: boolean;
35
+ options: MultiSelectFieldOption[];
36
+ loading: boolean;
37
+ loadingMore: boolean;
38
+ hasMore: boolean;
39
+ loadOptions: (searchValue: string, opts?: {
40
+ initial?: boolean;
41
+ }) => Promise<void>;
42
+ loadMore: (searchValue: string) => Promise<void>;
43
+ initialLoad: "immediate" | "open";
44
+ initialLoadPerformed: boolean;
45
+ setInitialLoadPerformed: (val: boolean) => void;
46
+ inputWrapperRef: RefObject<HTMLDivElement>;
47
+ selectAll?: {
48
+ label: string;
49
+ onClick: () => void;
50
+ checkState: CheckState;
51
+ };
52
+ singleRow?: boolean;
53
+ maxChips?: number;
54
+ handleRemoveOption: (option: {
55
+ id: string | number;
56
+ }) => void;
57
+ handleClear: () => void;
58
+ };
59
+ export type MultiSelectFieldComboboxInternalProps = MultiSelectFieldBaseInternalProps & {
60
+ debounceMs: number;
61
+ selectFiltered?: (searchValue: string) => {
62
+ label?: string;
63
+ onClick: () => void;
64
+ checkState: CheckState;
65
+ };
66
+ onSearchChange?: (searchValue: string) => void;
67
+ };
@@ -0,0 +1,19 @@
1
+ import { RefObject } from 'react';
2
+ type UseChipLayoutOptions = {
3
+ selectedOptionsLength: number;
4
+ singleRow?: boolean;
5
+ maxChips?: number;
6
+ };
7
+ /**
8
+ * Manages chip layout calculations shared between MultiSelectFieldInput and
9
+ * MultiSelectFieldTrigger. Handles single-row overflow detection, visible chip
10
+ * count, and the "+N" hidden chip indicator.
11
+ * @param options - Configuration for chip layout behaviour
12
+ * @returns rowsRef to attach to the chip container, plus computed display/hidden counts
13
+ */
14
+ export declare function useChipLayout({ selectedOptionsLength, singleRow, maxChips, }: UseChipLayoutOptions): {
15
+ rowsRef: RefObject<HTMLDivElement>;
16
+ displayCount: number;
17
+ hiddenCount: number;
18
+ };
19
+ export {};
@@ -1,7 +1,6 @@
1
1
  import { UseComboboxProps } from 'downshift';
2
2
  import { MultiSelectFieldDownshiftItem, MultiSelectFieldGroupByValue, MultiSelectFieldOption, MultiSelectFieldPinnedOptions } from '../types';
3
3
  import { CheckState } from '../../../../types';
4
- import { SectionMeta } from '../../SelectField/internal/types';
5
4
  export type UseComboMultipleOptions = {
6
5
  /** An array of currently loaded options */
7
6
  options: MultiSelectFieldOption[];
@@ -54,7 +53,7 @@ export declare const useComboMultiple: ({ options, pinned, groupToString, groupS
54
53
  highlightChangeTypeRef: import('react').MutableRefObject<string>;
55
54
  isOpen: boolean;
56
55
  downshiftItems: import('../..').SelectFieldDownshiftItem[];
57
- sectionsMeta: SectionMeta[];
56
+ sectionsMeta: import('../../SelectField/internal/types').SectionMeta[];
58
57
  closeMenu: () => void;
59
58
  openMenu: () => void;
60
59
  toggleMenu: () => void;
@@ -0,0 +1,40 @@
1
+ import { MultiSelectFieldGroupByValue, MultiSelectFieldOption, MultiSelectFieldPinnedOptions } from '../types';
2
+ import { CheckState } from '../../../../types';
3
+ export type UseSelectModeMultipleOptions = {
4
+ options: MultiSelectFieldOption[];
5
+ pinned?: MultiSelectFieldPinnedOptions;
6
+ groupToString?: (groupValue: MultiSelectFieldGroupByValue) => string;
7
+ groupSorter?: (a: MultiSelectFieldGroupByValue, b: MultiSelectFieldGroupByValue) => number;
8
+ selectAll?: {
9
+ label: string;
10
+ onClick: () => void;
11
+ checkState: CheckState;
12
+ };
13
+ selectedOptions: MultiSelectFieldOption[];
14
+ onSelectedOptionsChange: (options: MultiSelectFieldOption[]) => void;
15
+ onIsOpenChange?: (changes: {
16
+ isOpen?: boolean;
17
+ }) => void;
18
+ displayAs: "popover" | "dialog";
19
+ disabled: boolean;
20
+ virtualize?: boolean;
21
+ };
22
+ /**
23
+ * Wraps downshift's useSelect for non-searchable multi-select fields.
24
+ * Keeps menu open after selection and handles bulk actions.
25
+ */
26
+ export declare const useSelectModeMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectedOptions, onSelectedOptionsChange, onIsOpenChange, displayAs, disabled, virtualize, }: UseSelectModeMultipleOptions) => {
27
+ wrapperDivRef: import('react').RefObject<HTMLDivElement>;
28
+ getToggleButtonProps: <Options>(options?: import('downshift').UseSelectGetToggleButtonPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetToggleButtonReturnValue, Options>;
29
+ getLabelProps: <Options>(options?: import('downshift').UseSelectGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseSelectGetLabelPropsReturnValue, Options>;
30
+ getMenuProps: <Options>(options?: import('downshift').UseSelectGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetMenuReturnValue, Options>;
31
+ getItemProps: <Options>(options: import('downshift').UseSelectGetItemPropsOptions<import('../..').SelectFieldDownshiftItem> & Options) => Omit<import('downshift').Overwrite<import('downshift').UseSelectGetItemPropsReturnValue, Options>, "item" | "index">;
32
+ highlightedIndex: number;
33
+ isOpen: boolean;
34
+ downshiftItems: import('../..').SelectFieldDownshiftItem[];
35
+ sectionsMeta: import('../../SelectField/internal/types').SectionMeta[];
36
+ closeMenu: () => void;
37
+ openMenu: () => void;
38
+ toggleMenu: () => void;
39
+ selectedOptions: import('../..').SelectFieldOption[];
40
+ };
@@ -0,0 +1,21 @@
1
+ import { SelectFieldOption } from '../../SelectField/types';
2
+ import { NormalizedPinnedSection } from '../../SelectField/internal/usePinnedOptions';
3
+ type UseToggleSelectionParams = {
4
+ options: SelectFieldOption[];
5
+ pinnedSections: NormalizedPinnedSection[];
6
+ selectedOptions: SelectFieldOption[];
7
+ onSelectedOptionsChange: (options: SelectFieldOption[]) => void;
8
+ };
9
+ /**
10
+ * Shared multi-select toggle logic: computes allPinnedOptions and provides
11
+ * handleItemClick to add/remove an option from the selection.
12
+ * Used by both useComboMultiple and useSelectModeMultiple.
13
+ */
14
+ export declare const useToggleSelection: ({ options, pinnedSections, selectedOptions, onSelectedOptionsChange, }: UseToggleSelectionParams) => {
15
+ handleItemClick: (option: {
16
+ id: string | number;
17
+ label: string;
18
+ }) => void;
19
+ allPinnedOptions: SelectFieldOption[];
20
+ };
21
+ export {};
@@ -268,6 +268,13 @@ type MultiSelectFieldCommonProps = {
268
268
  * @default false
269
269
  */
270
270
  virtualize?: boolean;
271
+ /**
272
+ * Whether to disable the search input.
273
+ * When true, the input is replaced with a non-editable select trigger and the ARIA pattern
274
+ * changes from combobox to listbox.
275
+ * @default false
276
+ */
277
+ disableSearch?: boolean;
271
278
  } & MultiSelectFieldSearchProps & LayoutUtilProps;
272
279
  type MultiSelectFieldGroupingProps = {
273
280
  /**
@@ -4,7 +4,7 @@ export declare const FieldDialog: ({ id, isOpen, onClose, field, children, title
4
4
  isOpen: boolean;
5
5
  onClose: () => void;
6
6
  title: string;
7
- field: React.ReactNode;
7
+ field?: React.ReactNode;
8
8
  children: React.ReactNode;
9
9
  initialFocusResolver?: (focusables: FocusableElement[]) => FocusableElement;
10
10
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1,16 +1,15 @@
1
- import { UseComboboxPropGetters } from 'downshift';
2
1
  import { SelectFieldDownshiftItem } from '../types';
3
2
  import { CSSProperties, MutableRefObject } from 'react';
4
3
  import { CheckState } from '../../../../types';
5
- import { SectionMeta } from './types';
4
+ import { GetItemPropsFn, GetMenuPropsFn, SectionMeta } from './types';
6
5
  export type FieldListBaseHandle = {
7
6
  scrollToTop: () => void;
8
7
  };
9
8
  export type FieldListBaseProps = {
10
9
  isOpen: boolean;
11
10
  items: SelectFieldDownshiftItem[];
12
- getMenuProps: UseComboboxPropGetters<SelectFieldDownshiftItem>["getMenuProps"];
13
- getItemProps: UseComboboxPropGetters<SelectFieldDownshiftItem>["getItemProps"];
11
+ getMenuProps: GetMenuPropsFn;
12
+ getItemProps: GetItemPropsFn;
14
13
  highlightedIndex: number;
15
14
  highlightChangeTypeRef?: MutableRefObject<string>;
16
15
  getCheckedState: (item: SelectFieldDownshiftItem) => CheckState;
@@ -0,0 +1,6 @@
1
+ import { SelectFieldComboboxInternalProps } from './types';
2
+ /**
3
+ * Combobox mode: searchable select using useCombobox.
4
+ * This is the default behavior when disableSearch is false.
5
+ */
6
+ export declare const SelectFieldComboboxMode: ({ id, helperUid, selectedOption, onSelectedOptionChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, labelNode, hideLabel, hint, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, debounceMs, }: SelectFieldComboboxInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -12,7 +12,6 @@ import { ReactElement, RefObject } from 'react';
12
12
  * @property {boolean} [error] - Shows error styling on the input when true
13
13
  * @property {() => void} [onClear] - Callback fired when the clear button is clicked
14
14
  * @property {string} [id] - HTML id attribute for the input element
15
- * @property {string} [popoverTarget] - Target identifier for popover association
16
15
  * @property {RefObject<HTMLDivElement>} [inputWrapperRef] - Ref for the input wrapper div element
17
16
  * @property {PassThroughProps<"div">} [htmlInputWrapperProps] - Additional props passed to the wrapper div
18
17
  * @property {PassThroughProps<"input">} [inputProps] - Additional props passed to the input element
@@ -31,7 +30,6 @@ export type SelectFieldInputProps = {
31
30
  error?: boolean;
32
31
  onClear?: () => void;
33
32
  id?: string;
34
- popoverTarget?: string;
35
33
  inputWrapperRef?: RefObject<HTMLDivElement>;
36
34
  htmlInputWrapperProps?: PassThroughProps<"div">;
37
35
  inputProps?: PassThroughProps<"input">;
@@ -1,7 +1,8 @@
1
1
  import { ReactNode } from 'react';
2
- import { UseComboboxPropGetters } from 'downshift';
3
- import { SelectFieldDownshiftItem } from '../types';
4
- type GetLabelProps = UseComboboxPropGetters<SelectFieldDownshiftItem>["getLabelProps"];
2
+ type GetLabelProps = (options?: object) => {
3
+ id: string;
4
+ htmlFor: string;
5
+ };
5
6
  /**
6
7
  * Props for the SelectFieldLabel component
7
8
  * @property {string} label - The text content to display as the label
@@ -1,14 +1,11 @@
1
1
  import { SelectFieldDownshiftItem, SelectFieldOption } from '../types';
2
- import { UseComboboxPropGetters } from 'downshift';
3
2
  import { CSSProperties, MutableRefObject } from 'react';
4
- import { SectionMeta } from './types';
5
- type GetMenuProps = UseComboboxPropGetters<SelectFieldDownshiftItem>["getMenuProps"];
6
- type GetItemProps = UseComboboxPropGetters<SelectFieldDownshiftItem>["getItemProps"];
3
+ import { GetItemPropsFn, GetMenuPropsFn, SectionMeta } from './types';
7
4
  export type SelectFieldListProps = {
8
5
  isOpen: boolean;
9
6
  items: SelectFieldDownshiftItem[];
10
- getMenuProps: GetMenuProps;
11
- getItemProps: GetItemProps;
7
+ getMenuProps: GetMenuPropsFn;
8
+ getItemProps: GetItemPropsFn;
12
9
  highlightedIndex: number;
13
10
  highlightChangeTypeRef?: MutableRefObject<string>;
14
11
  selectedOption: SelectFieldOption | null;
@@ -27,4 +24,3 @@ export declare const SelectFieldList: {
27
24
  ({ selectedOption, virtualize, ...rest }: SelectFieldListProps): import("react/jsx-runtime").JSX.Element;
28
25
  displayName: string;
29
26
  };
30
- export {};
@@ -1,16 +1,14 @@
1
- import { UseComboboxPropGetters } from 'downshift';
2
1
  import { SelectFieldDownshiftItem } from '../types';
3
2
  import { CheckState } from '../../../../types';
4
- type GetItemProps = UseComboboxPropGetters<SelectFieldDownshiftItem>["getItemProps"];
3
+ import { GetItemPropsFn } from './types';
5
4
  export type SelectFieldListItemProps = {
6
5
  item: SelectFieldDownshiftItem;
7
6
  index: number;
8
7
  highlighted: boolean;
9
8
  disabled: boolean;
10
- getItemProps: GetItemProps;
9
+ getItemProps: GetItemPropsFn;
11
10
  selectionType: "single" | "multiple";
12
11
  checked: CheckState;
13
12
  isListScrolled?: boolean;
14
13
  };
15
14
  export declare const SelectFieldListItem: ({ item, index, highlighted, disabled, getItemProps, selectionType, checked, isListScrolled, }: SelectFieldListItemProps) => import("react/jsx-runtime").JSX.Element;
16
- export {};
@@ -0,0 +1,6 @@
1
+ import { SelectFieldBaseInternalProps } from './types';
2
+ /**
3
+ * Select mode: non-searchable select using useSelect.
4
+ * Active when disableSearch is true.
5
+ */
6
+ export declare const SelectFieldSelectMode: ({ id, helperUid, selectedOption, onSelectedOptionChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, labelNode, hideLabel, hint, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, required, }: SelectFieldBaseInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { Size } from '../../../../types';
2
+ import { ReactElement, RefObject } from 'react';
3
+ export type SelectFieldTriggerProps = {
4
+ placeholder?: string;
5
+ size?: Extract<Size, "small" | "medium" | "large">;
6
+ disableClearButton?: boolean;
7
+ disabled?: boolean;
8
+ readOnly?: boolean;
9
+ error?: boolean;
10
+ onClear?: () => void;
11
+ id?: string;
12
+ popoverTarget?: string;
13
+ inputWrapperRef?: RefObject<HTMLDivElement>;
14
+ toggleButtonProps?: Record<string, any>;
15
+ /** The display text (selected option label or empty) */
16
+ displayValue?: string;
17
+ prefix?: string | ReactElement;
18
+ suffix?: string | ReactElement;
19
+ };
20
+ /**
21
+ * Non-searchable select trigger for SelectField when disableSearch is true.
22
+ * Renders a div-based trigger instead of an input, suitable for the listbox ARIA pattern.
23
+ */
24
+ export declare const SelectFieldTrigger: {
25
+ ({ placeholder, size, disableClearButton, disabled, readOnly, error, onClear, id, inputWrapperRef, toggleButtonProps, displayValue, prefix, suffix, popoverTarget, }: SelectFieldTriggerProps): import("react/jsx-runtime").JSX.Element;
26
+ displayName: string;
27
+ };
@@ -0,0 +1,22 @@
1
+ import { SelectFieldDownshiftItem, SelectFieldOption } from '../types';
2
+ import { SectionMeta } from './types';
3
+ import { NormalizedPinnedSection } from './usePinnedOptions';
4
+ import { NormalizedGroupSection } from './useGroupedOptions';
5
+ export declare function mapOptionToDownshiftItem(option: SelectFieldOption): SelectFieldDownshiftItem;
6
+ type BuildDownshiftItemsParams = {
7
+ prefixItems?: SelectFieldDownshiftItem[];
8
+ pinnedSections: NormalizedPinnedSection[];
9
+ groupSections: NormalizedGroupSection[];
10
+ ungroupedItems: SelectFieldDownshiftItem[];
11
+ };
12
+ /**
13
+ * Assembles the flat downshiftItems array and sectionsMeta.
14
+ * Order: prefixItems → pinned sections → group sections → ungrouped items.
15
+ * Multi-select hooks pass bulk action items (select-all / select-filtered) as prefixItems;
16
+ * single-select hooks omit it.
17
+ */
18
+ export declare function buildDownshiftItems({ prefixItems, pinnedSections, groupSections, ungroupedItems, }: BuildDownshiftItemsParams): {
19
+ downshiftItems: SelectFieldDownshiftItem[];
20
+ sectionsMeta: SectionMeta[];
21
+ };
22
+ export {};
@@ -1,3 +1,5 @@
1
+ import { ReactElement, RefObject } from 'react';
2
+ import { SelectFieldOption, SelectFieldProps } from '../types';
1
3
  /**
2
4
  * Metadata about list sections for rendering purposes.
3
5
  * Used by both SelectFieldList and MultiSelectFieldList to render section headers and dividers.
@@ -14,3 +16,58 @@ export type SectionMeta = {
14
16
  endIndex: number;
15
17
  loading?: boolean;
16
18
  };
19
+ export type SelectFieldBaseInternalProps = {
20
+ id: string;
21
+ helperUid: string;
22
+ selectedOption: SelectFieldOption | null;
23
+ onSelectedOptionChange: (option: SelectFieldOption | null) => void;
24
+ displayAs: "popover" | "dialog";
25
+ isDisabledOrReadOnly: boolean;
26
+ disabled?: boolean;
27
+ readOnly?: boolean;
28
+ required?: boolean;
29
+ placeholder?: string;
30
+ size?: "small" | "medium" | "large";
31
+ error?: boolean | string | ReactElement | string[];
32
+ hasHelperText: boolean;
33
+ disableClearButton: boolean;
34
+ prefix?: string | ReactElement;
35
+ suffix?: string | ReactElement;
36
+ label: string;
37
+ labelNode?: React.ReactNode;
38
+ hideLabel?: boolean;
39
+ hint?: ReactElement | string;
40
+ errorMessages?: string | ReactElement | string[];
41
+ warning?: string | string[];
42
+ description?: ReactElement | string;
43
+ className?: string;
44
+ style?: React.CSSProperties;
45
+ layoutStyles?: React.CSSProperties;
46
+ pinned?: SelectFieldProps["pinned"];
47
+ groupToString?: (groupValue: string | number) => string;
48
+ groupSorter?: (a: string | number, b: string | number) => number;
49
+ virtualize?: boolean;
50
+ options: SelectFieldOption[];
51
+ loading: boolean;
52
+ loadingMore: boolean;
53
+ hasMore: boolean;
54
+ loadOptions: (searchValue: string, opts?: {
55
+ initial?: boolean;
56
+ }) => Promise<void>;
57
+ loadMore: (searchValue: string) => Promise<void>;
58
+ initialLoad: "immediate" | "open";
59
+ initialLoadPerformed: boolean;
60
+ setInitialLoadPerformed: (val: boolean) => void;
61
+ inputWrapperRef: RefObject<HTMLDivElement>;
62
+ };
63
+ export type SelectFieldComboboxInternalProps = SelectFieldBaseInternalProps & {
64
+ debounceMs: number;
65
+ };
66
+ /**
67
+ * Loose prop getter types compatible with both downshift's useCombobox and useSelect.
68
+ * Using `any` for the return types is intentional: the actual runtime shapes are identical
69
+ * between the two hooks, but their compile-time generic types diverge.
70
+ */
71
+ export type GetMenuPropsFn = (...args: any[]) => any;
72
+ export type GetItemPropsFn = (...args: any[]) => any;
73
+ export type GetLabelPropsFn = (...args: any[]) => any;
@@ -7,10 +7,6 @@ export type UseComboOptions = {
7
7
  pinned?: SelectFieldPinnedOptions;
8
8
  groupToString?: (groupValue: SelectFieldGroupByValue) => string;
9
9
  groupSorter?: (a: SelectFieldGroupByValue, b: SelectFieldGroupByValue) => number;
10
- selectAll?: {
11
- label: string;
12
- onClick: () => void;
13
- };
14
10
  selectedOption: SelectFieldOption | null;
15
11
  onSelectedOptionChange: (option: SelectFieldOption | null) => void;
16
12
  displayAs: "popover" | "dialog";
@@ -21,7 +17,7 @@ export type UseComboOptions = {
21
17
  /**
22
18
  * The purpose of useCombo is to provide an abstraction over the downshift combobox hook.
23
19
  */
24
- export declare const useCombo: ({ options, pinned, groupToString, groupSorter, selectAll, selectedOption, onSelectedOptionChange, onInputValueChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, virtualize, }: UseComboOptions) => {
20
+ export declare const useCombo: ({ options, pinned, groupToString, groupSorter, selectedOption, onSelectedOptionChange, onInputValueChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, virtualize, }: UseComboOptions) => {
25
21
  inputValue: string;
26
22
  wrapperDivRef: import('react').RefObject<HTMLDivElement>;
27
23
  getToggleButtonProps: <Options>(options?: import('downshift').UseComboboxGetToggleButtonPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetToggleButtonPropsReturnValue, Options>;
@@ -0,0 +1,19 @@
1
+ import { SelectFieldGroupByValue, SelectFieldOption, SelectFieldPinnedOptions } from '../types';
2
+ type UseProcessedOptionsParams = {
3
+ options: SelectFieldOption[];
4
+ pinned?: SelectFieldPinnedOptions;
5
+ searchValue: string;
6
+ groupToString?: (groupValue: SelectFieldGroupByValue) => string;
7
+ groupSorter?: (a: SelectFieldGroupByValue, b: SelectFieldGroupByValue) => number;
8
+ };
9
+ /**
10
+ * Shared pipeline for processing options: pinned → grouped → sorted.
11
+ * Used by all four downshift-wrapping hooks (useCombo, useSelectMode,
12
+ * useComboMultiple, useSelectModeMultiple).
13
+ */
14
+ export declare const useProcessedOptions: ({ options, pinned, searchValue, groupToString, groupSorter, }: UseProcessedOptionsParams) => {
15
+ pinnedSections: import('./usePinnedOptions').NormalizedPinnedSection[];
16
+ ungroupedItems: import('..').SelectFieldDownshiftItem[];
17
+ groupSections: import('./useGroupedOptions').NormalizedGroupSection[];
18
+ };
19
+ export {};
@@ -0,0 +1,34 @@
1
+ import { SelectFieldDownshiftItem, SelectFieldGroupByValue, SelectFieldOption, SelectFieldPinnedOptions } from '../types';
2
+ export type UseSelectModeOptions = {
3
+ options: SelectFieldOption[];
4
+ pinned?: SelectFieldPinnedOptions;
5
+ groupToString?: (groupValue: SelectFieldGroupByValue) => string;
6
+ groupSorter?: (a: SelectFieldGroupByValue, b: SelectFieldGroupByValue) => number;
7
+ selectedOption: SelectFieldOption | null;
8
+ onSelectedOptionChange: (option: SelectFieldOption | null) => void;
9
+ onIsOpenChange?: (changes: {
10
+ isOpen?: boolean;
11
+ }) => void;
12
+ displayAs: "popover" | "dialog";
13
+ disableHighlightOnOpen?: boolean;
14
+ disabled: boolean;
15
+ virtualize?: boolean;
16
+ };
17
+ /**
18
+ * Wraps downshift's useSelect for non-searchable select fields.
19
+ * Returns a compatible interface to useCombo (minus getInputProps/inputValue).
20
+ */
21
+ export declare const useSelectMode: ({ options, pinned, groupToString, groupSorter, selectedOption, onSelectedOptionChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, virtualize, }: UseSelectModeOptions) => {
22
+ wrapperDivRef: import('react').RefObject<HTMLDivElement>;
23
+ getToggleButtonProps: <Options>(options?: import('downshift').UseSelectGetToggleButtonPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetToggleButtonReturnValue, Options>;
24
+ getLabelProps: <Options>(options?: import('downshift').UseSelectGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseSelectGetLabelPropsReturnValue, Options>;
25
+ getMenuProps: <Options>(options?: import('downshift').UseSelectGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetMenuReturnValue, Options>;
26
+ getItemProps: <Options>(options: import('downshift').UseSelectGetItemPropsOptions<SelectFieldDownshiftItem> & Options) => Omit<import('downshift').Overwrite<import('downshift').UseSelectGetItemPropsReturnValue, Options>, "item" | "index">;
27
+ highlightedIndex: number;
28
+ highlightChangeTypeRef: import('react').MutableRefObject<string>;
29
+ isOpen: boolean;
30
+ downshiftItems: SelectFieldDownshiftItem[];
31
+ sectionsMeta: import('./types').SectionMeta[];
32
+ closeMenu: () => void;
33
+ openMenu: () => void;
34
+ };
@@ -239,6 +239,13 @@ type SelectFieldCommonSelectFieldProps = {
239
239
  * @default false
240
240
  */
241
241
  virtualize?: boolean;
242
+ /**
243
+ * Whether to disable the search input.
244
+ * When true, the input is replaced with a non-editable select trigger and the ARIA pattern
245
+ * changes from combobox to listbox.
246
+ * @default false
247
+ */
248
+ disableSearch?: boolean;
242
249
  } & SelectFieldSearchProps & SelectFieldAddNewOptionProps & LayoutUtilProps;
243
250
  type SelectFieldGroupingProps = {
244
251
  /**
@@ -1,8 +1,8 @@
1
1
  import { ComponentPropsWithoutRef, Ref } from 'react';
2
2
  import { LayoutUtilProps } from '../../../../types';
3
3
  import { ColumnDef, CustomTableFooterCellProps, TableRow } from '../types';
4
- import { DataTablePaginationConfig, DataTableRef } from './types';
5
- export type { DataTableRef };
4
+ import { DataTableEmptyState, DataTablePaginationConfig, DataTableRef } from './types';
5
+ export type { DataTableRef, DataTableEmptyState };
6
6
  /**
7
7
  * Represents a sorted column configuration for DataTable
8
8
  */
@@ -81,6 +81,11 @@ export type DataTableProps<T> = LayoutUtilProps & ComponentPropsWithoutRef<"div"
81
81
  * The sorted column.
82
82
  */
83
83
  sortedColumn?: SortedColumn;
84
+ /**
85
+ * Configuration for the empty state displayed when the table has no data.
86
+ * Only shown when data is empty and the table is not loading.
87
+ */
88
+ emptyState?: DataTableEmptyState;
84
89
  };
85
90
  declare function DataTableInner<T>(props: DataTableProps<T>, ref: Ref<DataTableRef>): import("react/jsx-runtime").JSX.Element;
86
91
  /**
@@ -99,6 +104,7 @@ declare function DataTableInner<T>(props: DataTableProps<T>, ref: Ref<DataTableR
99
104
  * - Default and Strong backgrounds
100
105
  * - Pagination support with configurable items per page
101
106
  * - Imperative refresh via ref
107
+ * - Customizable empty state with optional SVG illustration and content
102
108
  *
103
109
  * @param props - The props for the DataTable component
104
110
  * @param props.data - The data for the table. Must be an array of objects with an `id` property.
@@ -115,6 +121,7 @@ declare function DataTableInner<T>(props: DataTableProps<T>, ref: Ref<DataTableR
115
121
  * @param props.pagination - Pagination configuration. When provided, enables pagination and filters data to show only the current page. When undefined, all data is shown and no pagination controls are rendered.
116
122
  * @param props.selectedRowIds - The selected row ids.
117
123
  * @param props.sortedColumn - The sorted column.
124
+ * @param props.emptyState - Configuration for the empty state displayed when the table has no data.
118
125
  * @param props.style - The style of the table container.
119
126
  * @param props.rest - The rest of the props for the DataTable component, spread to the div surrounding the table.
120
127
  *