@servicetitan/anvil2 3.0.5 → 3.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/{AiMark-DjOf60tj.js → AiMark-BXL0sWIV.js} +2 -2
  3. package/dist/{AiMark-DjOf60tj.js.map → AiMark-BXL0sWIV.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-BTesdKK7.js → Alert-BNH0UD2s.js} +2 -2
  6. package/dist/{Alert-BTesdKK7.js.map → Alert-BNH0UD2s.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Breadcrumbs-DTi5RqT-.js → Breadcrumbs-Bzxbdu-S.js} +2 -2
  9. package/dist/{Breadcrumbs-DTi5RqT-.js.map → Breadcrumbs-Bzxbdu-S.js.map} +1 -1
  10. package/dist/Breadcrumbs.js +1 -1
  11. package/dist/{Calendar-ddGQKSGU.js → Calendar-BYNFAWpZ.js} +2 -2
  12. package/dist/{Calendar-ddGQKSGU.js.map → Calendar-BYNFAWpZ.js.map} +1 -1
  13. package/dist/{Calendar-CpCRxcue.js → Calendar-DS5eWpGF.js} +2 -2
  14. package/dist/{Calendar-CpCRxcue.js.map → Calendar-DS5eWpGF.js.map} +1 -1
  15. package/dist/Calendar.js +2 -2
  16. package/dist/{Checkbox-CJ8eYejR.js → Checkbox-BB3BDJsK.js} +4 -4
  17. package/dist/{Checkbox-CJ8eYejR.js.map → Checkbox-BB3BDJsK.js.map} +1 -1
  18. package/dist/{Checkbox-CVidv1sO.js → Checkbox-BeIzx_ZX.js} +2 -2
  19. package/dist/{Checkbox-CVidv1sO.js.map → Checkbox-BeIzx_ZX.js.map} +1 -1
  20. package/dist/Checkbox.css +40 -37
  21. package/dist/Checkbox.js +1 -1
  22. package/dist/Checkbox.module-CURNX27M.js +28 -0
  23. package/dist/Checkbox.module-CURNX27M.js.map +1 -0
  24. package/dist/{Chip-0-Yx9SGX.js → Chip-D2k5X_wX.js} +2 -2
  25. package/dist/{Chip-0-Yx9SGX.js.map → Chip-D2k5X_wX.js.map} +1 -1
  26. package/dist/Chip.js +1 -1
  27. package/dist/Combobox.js +1 -2
  28. package/dist/Combobox.js.map +1 -1
  29. package/dist/{DataTable-BFzj8cZG.js → DataTable-E8z0H8c7.js} +144 -17
  30. package/dist/{DataTable-BFzj8cZG.js.map → DataTable-E8z0H8c7.js.map} +1 -1
  31. package/dist/DataTable.css +47 -5
  32. package/dist/{DateFieldRange-CO2C776E.js → DateFieldRange-BN_uIvHI.js} +27 -15
  33. package/dist/DateFieldRange-BN_uIvHI.js.map +1 -0
  34. package/dist/DateFieldRange.js +1 -1
  35. package/dist/{DateFieldSingle-DjmHpn1y.js → DateFieldSingle-h3YkdwPo.js} +5 -5
  36. package/dist/{DateFieldSingle-DjmHpn1y.js.map → DateFieldSingle-h3YkdwPo.js.map} +1 -1
  37. package/dist/DateFieldSingle.js +1 -1
  38. package/dist/{DateFieldYearless-CCJAopYd.js → DateFieldYearless-m_Hl2gMY.js} +5 -5
  39. package/dist/{DateFieldYearless-CCJAopYd.js.map → DateFieldYearless-m_Hl2gMY.js.map} +1 -1
  40. package/dist/DateFieldYearless.js +1 -1
  41. package/dist/{DateFieldYearlessRange-BUv1mGJg.js → DateFieldYearlessRange-DNqSTBDr.js} +4 -4
  42. package/dist/{DateFieldYearlessRange-BUv1mGJg.js.map → DateFieldYearlessRange-DNqSTBDr.js.map} +1 -1
  43. package/dist/DateFieldYearlessRange.js +1 -1
  44. package/dist/{DaysOfTheWeek-BihTU2No.js → DaysOfTheWeek-D58z_eF3.js} +10 -9
  45. package/dist/{DaysOfTheWeek-BihTU2No.js.map → DaysOfTheWeek-D58z_eF3.js.map} +1 -1
  46. package/dist/DaysOfTheWeek.css +10 -6
  47. package/dist/DaysOfTheWeek.js +1 -1
  48. package/dist/{Dialog-BZTo4hbX.js → Dialog-CvYSMvfD.js} +23 -21
  49. package/dist/{Dialog-BZTo4hbX.js.map → Dialog-CvYSMvfD.js.map} +1 -1
  50. package/dist/Dialog.css +43 -29
  51. package/dist/Dialog.js +1 -1
  52. package/dist/{Drawer-Dg35inxH.js → Drawer-s2y0xcgV.js} +3 -3
  53. package/dist/{Drawer-Dg35inxH.js.map → Drawer-s2y0xcgV.js.map} +1 -1
  54. package/dist/Drawer.js +1 -1
  55. package/dist/DrillDown.js +1 -1
  56. package/dist/{EditCard-BfNq-T8n.js → EditCard-B25pj0Jx.js} +2 -2
  57. package/dist/{EditCard-BfNq-T8n.js.map → EditCard-B25pj0Jx.js.map} +1 -1
  58. package/dist/EditCard.js +1 -1
  59. package/dist/{FieldLabel-xV6EdVwo.js → FieldLabel-D1qPAGtB.js} +3 -3
  60. package/dist/{FieldLabel-xV6EdVwo.js.map → FieldLabel-D1qPAGtB.js.map} +1 -1
  61. package/dist/FieldLabel.js +1 -1
  62. package/dist/FilterBar-B4ZAs73g.js +412 -0
  63. package/dist/FilterBar-B4ZAs73g.js.map +1 -0
  64. package/dist/FilterBar.js +1 -1
  65. package/dist/{InputMask-8rI6UIb8.js → InputMask-BDl09V4u.js} +3 -3
  66. package/dist/{InputMask-8rI6UIb8.js.map → InputMask-BDl09V4u.js.map} +1 -1
  67. package/dist/InputMask.js +1 -1
  68. package/dist/{ListView-CIa981KJ.js → ListView-DO5psxd4.js} +6 -6
  69. package/dist/{ListView-CIa981KJ.js.map → ListView-DO5psxd4.js.map} +1 -1
  70. package/dist/ListView.js +1 -1
  71. package/dist/{ListView.module-CKUQP3kf.js → ListView.module-DfqtCL3Q.js} +3 -3
  72. package/dist/ListView.module-DfqtCL3Q.js.map +1 -0
  73. package/dist/{Listbox-DRznPBCr.js → Listbox-CvQHBFWb.js} +2 -2
  74. package/dist/{Listbox-DRznPBCr.js.map → Listbox-CvQHBFWb.js.map} +1 -1
  75. package/dist/Listbox.js +1 -1
  76. package/dist/MultiSelectField.js +1 -1
  77. package/dist/{MultiSelectFieldSync-BxyQiVPQ.js → MultiSelectFieldSync-CXX2F0ru.js} +62 -32
  78. package/dist/MultiSelectFieldSync-CXX2F0ru.js.map +1 -0
  79. package/dist/MultiSelectFieldSync.css +72 -65
  80. package/dist/MultiSelectMenu.js +1 -1
  81. package/dist/{MultiSelectMenuSync-BJfvZGf3.js → MultiSelectMenuSync-EKtvlL62.js} +218 -47
  82. package/dist/MultiSelectMenuSync-EKtvlL62.js.map +1 -0
  83. package/dist/{NumberField-D7YYo4Rl.js → NumberField-BymFZhIJ.js} +4 -4
  84. package/dist/{NumberField-D7YYo4Rl.js.map → NumberField-BymFZhIJ.js.map} +1 -1
  85. package/dist/NumberField.js +1 -1
  86. package/dist/{Page-cELP59Hm.js → Page-C2_Hm27h.js} +8 -8
  87. package/dist/{Page-cELP59Hm.js.map → Page-C2_Hm27h.js.map} +1 -1
  88. package/dist/Page.js +1 -1
  89. package/dist/{Pagination-DTN4FovY.js → Pagination-Bmd4JORe.js} +3 -3
  90. package/dist/{Pagination-DTN4FovY.js.map → Pagination-Bmd4JORe.js.map} +1 -1
  91. package/dist/Pagination.js +1 -1
  92. package/dist/{Popover-B3Vw4lDW.js → Popover-8mTJoMy7.js} +2 -2
  93. package/dist/{Popover-B3Vw4lDW.js.map → Popover-8mTJoMy7.js.map} +1 -1
  94. package/dist/Popover.js +1 -1
  95. package/dist/{ProgressBar-kzCNhaCO.js → ProgressBar-C1CkQHV5.js} +2 -2
  96. package/dist/{ProgressBar-kzCNhaCO.js.map → ProgressBar-C1CkQHV5.js.map} +1 -1
  97. package/dist/ProgressBar.js +1 -1
  98. package/dist/{Radio-CSBetBV6.js → Radio-BcHMk8dD.js} +2 -2
  99. package/dist/{Radio-CSBetBV6.js.map → Radio-BcHMk8dD.js.map} +1 -1
  100. package/dist/{Radio-BDE1xGel.js → Radio-D5WyQN2i.js} +16 -16
  101. package/dist/{Radio-BDE1xGel.js.map → Radio-D5WyQN2i.js.map} +1 -1
  102. package/dist/Radio.css +40 -37
  103. package/dist/Radio.js +1 -1
  104. package/dist/{RichTextEditor-BFFXj0zS.js → RichTextEditor-DstVbYch.js} +8 -8
  105. package/dist/{RichTextEditor-BFFXj0zS.js.map → RichTextEditor-DstVbYch.js.map} +1 -1
  106. package/dist/RichTextEditor.js +1 -1
  107. package/dist/SavedFiltersButton-2qba2Cgu.js +650 -0
  108. package/dist/SavedFiltersButton-2qba2Cgu.js.map +1 -0
  109. package/dist/SavedFiltersButton.css +8 -0
  110. package/dist/SavedFiltersButton.d.ts +1 -0
  111. package/dist/SavedFiltersButton.js +2 -0
  112. package/dist/SavedFiltersButton.js.map +1 -0
  113. package/dist/{SearchField-Dl7sh_M4.js → SearchField-BMHJCVFu.js} +2 -2
  114. package/dist/{SearchField-Dl7sh_M4.js.map → SearchField-BMHJCVFu.js.map} +1 -1
  115. package/dist/{SearchField-CO9BHCYB.js → SearchField-fXc_vWEr.js} +3 -3
  116. package/dist/{SearchField-CO9BHCYB.js.map → SearchField-fXc_vWEr.js.map} +1 -1
  117. package/dist/SearchField.js +1 -1
  118. package/dist/{SelectCard-CLCLIBoq.js → SelectCard-BN-LI14f.js} +3 -3
  119. package/dist/{SelectCard-CLCLIBoq.js.map → SelectCard-BN-LI14f.js.map} +1 -1
  120. package/dist/SelectCard.js +1 -1
  121. package/dist/SelectField.js +1 -1
  122. package/dist/{SelectFieldLabel-Db9w6O6r.js → SelectFieldLabel-UbQT7fDD.js} +2 -2
  123. package/dist/{SelectFieldLabel-Db9w6O6r.js.map → SelectFieldLabel-UbQT7fDD.js.map} +1 -1
  124. package/dist/{SelectFieldSync-z8b41JZz.js → SelectFieldSync-DykGkR_w.js} +6 -6
  125. package/dist/SelectFieldSync-DykGkR_w.js.map +1 -0
  126. package/dist/SelectMenu.js +1 -1
  127. package/dist/{SelectMenuSync-Cf1Zradm.js → SelectMenuSync-DTQ8Ofoz.js} +21 -9
  128. package/dist/SelectMenuSync-DTQ8Ofoz.js.map +1 -0
  129. package/dist/{SelectOptions-BgT1V6qp.js → SelectOptions-DVSOJwRy.js} +2 -2
  130. package/dist/{SelectOptions-BgT1V6qp.js.map → SelectOptions-DVSOJwRy.js.map} +1 -1
  131. package/dist/{SelectTrigger-37HzF-VI.js → SelectTrigger-CHk0KO-P.js} +2 -2
  132. package/dist/{SelectTrigger-37HzF-VI.js.map → SelectTrigger-CHk0KO-P.js.map} +1 -1
  133. package/dist/SelectTrigger.js +1 -1
  134. package/dist/{SelectTriggerBase-4o1cqEbR.js → SelectTriggerBase-B2S5SOZr.js} +137 -41
  135. package/dist/SelectTriggerBase-B2S5SOZr.js.map +1 -0
  136. package/dist/SelectTriggerBase.css +46 -42
  137. package/dist/SelectTriggerBase.module-DsPvTQE7.js +37 -0
  138. package/dist/SelectTriggerBase.module-DsPvTQE7.js.map +1 -0
  139. package/dist/{Switch-p4yVJTNy.js → Switch-onmiKoRd.js} +2 -2
  140. package/dist/{Switch-p4yVJTNy.js.map → Switch-onmiKoRd.js.map} +1 -1
  141. package/dist/Switch.js +1 -1
  142. package/dist/Table.js +1 -1
  143. package/dist/{Text-BgPuOXJM.js → Text-BTzgTpqu.js} +2 -2
  144. package/dist/{Text-BgPuOXJM.js.map → Text-BTzgTpqu.js.map} +1 -1
  145. package/dist/Text.js +1 -1
  146. package/dist/{TextField-DzuM8vvd.js → TextField-WTYZJlX3.js} +2 -2
  147. package/dist/{TextField-DzuM8vvd.js.map → TextField-WTYZJlX3.js.map} +1 -1
  148. package/dist/{TextField-D7NyaKId.js → TextField-rVfctM1E.js} +4 -4
  149. package/dist/{TextField-D7NyaKId.js.map → TextField-rVfctM1E.js.map} +1 -1
  150. package/dist/TextField.css +22 -58
  151. package/dist/TextField.js +1 -1
  152. package/dist/TextField.module-C8FsjTpx.js +23 -0
  153. package/dist/TextField.module-C8FsjTpx.js.map +1 -0
  154. package/dist/{Textarea-Dks15Zt3.js → Textarea-PXjppEQ6.js} +3 -3
  155. package/dist/{Textarea-Dks15Zt3.js.map → Textarea-PXjppEQ6.js.map} +1 -1
  156. package/dist/Textarea.js +1 -1
  157. package/dist/{TimeField-lN_5V6-X.js → TimeField-BJPXIv6W.js} +4 -4
  158. package/dist/{TimeField-lN_5V6-X.js.map → TimeField-BJPXIv6W.js.map} +1 -1
  159. package/dist/TimeField.js +1 -1
  160. package/dist/Toast.js +2 -2
  161. package/dist/{Toaster-3GI_qJxj.js → Toaster-CoChsMD0.js} +3 -3
  162. package/dist/{Toaster-3GI_qJxj.js.map → Toaster-CoChsMD0.js.map} +1 -1
  163. package/dist/{Toaster-2pAMQXRk.js → Toaster-DXLc86VD.js} +2 -2
  164. package/dist/{Toaster-2pAMQXRk.js.map → Toaster-DXLc86VD.js.map} +1 -1
  165. package/dist/{Toolbar-BRQpvj9U.js → Toolbar-Bt3kShho.js} +4 -4
  166. package/dist/{Toolbar-BRQpvj9U.js.map → Toolbar-Bt3kShho.js.map} +1 -1
  167. package/dist/{Toolbar-B0WHsX9W.js → Toolbar-DaUKbbsL.js} +6 -6
  168. package/dist/{Toolbar-B0WHsX9W.js.map → Toolbar-DaUKbbsL.js.map} +1 -1
  169. package/dist/Toolbar.js +2 -2
  170. package/dist/{ToolbarButtonToggle-xvMWRxzC.js → ToolbarButtonToggle-BPu81Wuv.js} +5 -4
  171. package/dist/ToolbarButtonToggle-BPu81Wuv.js.map +1 -0
  172. package/dist/{Tooltip-DGo3OWqL.js → Tooltip-yr1D06BE.js} +5 -5
  173. package/dist/{Tooltip-DGo3OWqL.js.map → Tooltip-yr1D06BE.js.map} +1 -1
  174. package/dist/Tooltip.css +6 -7
  175. package/dist/Tooltip.js +1 -1
  176. package/dist/{YearlessDateInputWithPicker-BhbR5F22.js → YearlessDateInputWithPicker-BIcVgz-J.js} +3 -3
  177. package/dist/{YearlessDateInputWithPicker-BhbR5F22.js.map → YearlessDateInputWithPicker-BIcVgz-J.js.map} +1 -1
  178. package/dist/assets/icons/st/batch.svg +1 -1
  179. package/dist/assets/icons/st/call.svg +1 -1
  180. package/dist/assets/icons/st/customer.svg +1 -1
  181. package/dist/assets/icons/st/enterprise_hub.svg +1 -1
  182. package/dist/assets/icons/st/equipment.svg +1 -1
  183. package/dist/assets/icons/st/estimate.svg +1 -1
  184. package/dist/assets/icons/st/full_fluid.svg +1 -1
  185. package/dist/assets/icons/st/gnav_titan_advisor_active.svg +1 -1
  186. package/dist/assets/icons/st/gnav_titan_advisor_inactive.svg +1 -1
  187. package/dist/assets/icons/st/job.svg +1 -1
  188. package/dist/assets/icons/st/leads.svg +1 -1
  189. package/dist/assets/icons/st/proposal.svg +1 -1
  190. package/dist/assets/icons/st/roofing.svg +1 -1
  191. package/dist/beta.js +13 -12
  192. package/dist/beta.js.map +1 -1
  193. package/dist/filter-state-Bx3aYS1r.js +1627 -0
  194. package/dist/filter-state-Bx3aYS1r.js.map +1 -0
  195. package/dist/{FilterBar.css → filter-state.css} +19 -33
  196. package/dist/{index-B6Demgr-.js → index-DVYRUKtW.js} +2 -2
  197. package/dist/{index-B6Demgr-.js.map → index-DVYRUKtW.js.map} +1 -1
  198. package/dist/index.js +38 -39
  199. package/dist/index.js.map +1 -1
  200. package/dist/src/beta/components/FilterBar/FilterBar.d.ts +12 -10
  201. package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +47 -0
  202. package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +34 -29
  203. package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +31 -22
  204. package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -1
  205. package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +4 -12
  206. package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +29 -0
  207. package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +86 -0
  208. package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +2 -2
  209. package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +50 -0
  210. package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
  211. package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +5 -9
  212. package/dist/src/beta/components/FilterBar/internal/adapters/asyncMultiSelect.d.ts +6 -0
  213. package/dist/src/beta/components/FilterBar/internal/adapters/asyncSelect.d.ts +6 -0
  214. package/dist/src/beta/components/FilterBar/internal/adapters/boolean.d.ts +3 -0
  215. package/dist/src/beta/components/FilterBar/internal/adapters/custom.d.ts +3 -0
  216. package/dist/src/beta/components/FilterBar/internal/adapters/date.d.ts +5 -0
  217. package/dist/src/beta/components/FilterBar/internal/adapters/dateList.d.ts +5 -0
  218. package/dist/src/beta/components/FilterBar/internal/adapters/dateRange.d.ts +8 -0
  219. package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +15 -0
  220. package/dist/src/beta/components/FilterBar/internal/adapters/multiSelect.d.ts +6 -0
  221. package/dist/src/beta/components/FilterBar/internal/adapters/numericRange.d.ts +3 -0
  222. package/dist/src/beta/components/FilterBar/internal/adapters/singleSelect.d.ts +6 -0
  223. package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +78 -0
  224. package/dist/src/beta/components/FilterBar/internal/types.d.ts +204 -61
  225. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +29 -0
  226. package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +2 -38
  227. package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +14 -28
  228. package/dist/src/beta/components/FilterBar/internal/utils/value-compare.d.ts +14 -0
  229. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  230. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  231. package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +4 -2
  232. package/dist/src/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +7 -5
  233. package/dist/src/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +5 -2
  234. package/dist/src/beta/components/MultiSelectField/types.d.ts +21 -36
  235. package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
  236. package/dist/src/beta/components/MultiSelectMenu/types.d.ts +52 -12
  237. package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +40 -0
  238. package/dist/src/beta/components/SavedFiltersButton/index.d.ts +2 -0
  239. package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +27 -0
  240. package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +38 -0
  241. package/dist/src/beta/components/SavedFiltersButton/types.d.ts +147 -0
  242. package/dist/src/beta/components/SelectField/types.d.ts +7 -11
  243. package/dist/src/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -1
  244. package/dist/src/beta/components/SelectMenu/types.d.ts +21 -1
  245. package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +6 -0
  246. package/dist/src/beta/components/Table/DataTable/types.d.ts +43 -10
  247. package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +3 -2
  248. package/dist/src/beta/components/index.d.ts +1 -0
  249. package/dist/src/internal/components/MenuFooter/MenuFooter.d.ts +43 -0
  250. package/dist/src/internal/components/OptionCheckbox.d.ts +6 -0
  251. package/dist/src/internal/components/OptionContentArea.d.ts +8 -0
  252. package/dist/src/internal/components/OptionRow.d.ts +10 -0
  253. package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +4 -4
  254. package/dist/src/internal/hooks/index.d.ts +2 -0
  255. package/dist/src/internal/hooks/useBulkActionRunner.d.ts +41 -0
  256. package/dist/src/internal/hooks/useConfirmationDraft.d.ts +21 -0
  257. package/dist/src/internal/types/bulkActionTypes.d.ts +39 -0
  258. package/dist/src/internal/types/confirmationTypes.d.ts +19 -0
  259. package/dist/src/internal/types/optionContent.d.ts +19 -0
  260. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -0
  261. package/dist/{stripInlineMarkdown-D_eHogvh.js → stripInlineMarkdown-C5DNxxwf.js} +2 -2
  262. package/dist/{stripInlineMarkdown-D_eHogvh.js.map → stripInlineMarkdown-C5DNxxwf.js.map} +1 -1
  263. package/dist/{syncFilterUtils-Dpp7gt05.js → syncFilterUtils-BEKek64h.js} +497 -458
  264. package/dist/syncFilterUtils-BEKek64h.js.map +1 -0
  265. package/dist/syncFilterUtils.css +96 -59
  266. package/dist/{useDrilldown-bIRsbg1m.js → useDrilldown-KZ9rRsXQ.js} +2 -2
  267. package/dist/{useDrilldown-bIRsbg1m.js.map → useDrilldown-KZ9rRsXQ.js.map} +1 -1
  268. package/dist/{Combobox-BXQFOwX4.js → useInfiniteCombobox-CknXmqlQ.js} +188 -13
  269. package/dist/useInfiniteCombobox-CknXmqlQ.js.map +1 -0
  270. package/dist/{useMenuInteraction-C4RU5Fdq.js → useMenuInteraction-CpAOHSJu.js} +118 -5
  271. package/dist/useMenuInteraction-CpAOHSJu.js.map +1 -0
  272. package/dist/useMenuInteraction.css +28 -0
  273. package/dist/{useToggleSelection-DBqr4HwT.js → useToggleSelection-B-Z80gy2.js} +53 -4
  274. package/dist/useToggleSelection-B-Z80gy2.js.map +1 -0
  275. package/package.json +1 -1
  276. package/dist/Checkbox.module-DVbXNsaN.js +0 -28
  277. package/dist/Checkbox.module-DVbXNsaN.js.map +0 -1
  278. package/dist/Combobox-BXQFOwX4.js.map +0 -1
  279. package/dist/DateFieldRange-CO2C776E.js.map +0 -1
  280. package/dist/FilterBar-GjMlLOME.js +0 -1442
  281. package/dist/FilterBar-GjMlLOME.js.map +0 -1
  282. package/dist/ListView.module-CKUQP3kf.js.map +0 -1
  283. package/dist/MultiSelectFieldSync-BxyQiVPQ.js.map +0 -1
  284. package/dist/MultiSelectMenuSync-BJfvZGf3.js.map +0 -1
  285. package/dist/SelectFieldSync-z8b41JZz.js.map +0 -1
  286. package/dist/SelectMenuSync-Cf1Zradm.js.map +0 -1
  287. package/dist/SelectTriggerBase-4o1cqEbR.js.map +0 -1
  288. package/dist/SelectTriggerBase.module-BgZSNZfE.js +0 -37
  289. package/dist/SelectTriggerBase.module-BgZSNZfE.js.map +0 -1
  290. package/dist/TextField.module-DkZwywjf.js +0 -23
  291. package/dist/TextField.module-DkZwywjf.js.map +0 -1
  292. package/dist/ToolbarButtonToggle-xvMWRxzC.js.map +0 -1
  293. package/dist/src/beta/components/FilterBar/FilterButton.d.ts +0 -30
  294. package/dist/src/beta/components/FilterBar/FilterSelect.d.ts +0 -29
  295. package/dist/syncFilterUtils-Dpp7gt05.js.map +0 -1
  296. package/dist/useInfiniteCombobox-WcRgC9p6.js +0 -179
  297. package/dist/useInfiniteCombobox-WcRgC9p6.js.map +0 -1
  298. package/dist/useMenuInteraction-C4RU5Fdq.js.map +0 -1
  299. package/dist/useToggleSelection-DBqr4HwT.js.map +0 -1
  300. /package/dist/{Combobox.css → useInfiniteCombobox.css} +0 -0
@@ -1,20 +1,20 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { S as Spinner } from './Spinner-B7tTWcP6.js';
3
3
  import { B as Button } from './Button-C_V2xQAs.js';
4
4
  import { c as cx } from './index-De1g9FRV.js';
5
- import { useState, useRef, useCallback, useEffect, useMemo, forwardRef, useId, useImperativeHandle } from 'react';
5
+ import { useState, useRef, useCallback, useEffect, forwardRef, useMemo, useId, useImperativeHandle } from 'react';
6
6
  import { u as useIntersectionObserver } from './useIntersectionObserver-BEmMDO3P.js';
7
- import { T as Text } from './Text-BgPuOXJM.js';
7
+ import { T as Text } from './Text-BTzgTpqu.js';
8
8
  import { D as Divider } from './Divider-CxtTyw8_.js';
9
9
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
10
10
  import { S as SrOnly } from './SrOnly-pnf8ajnh.js';
11
- import { F as Flex } from './Flex-_orhvoxS.js';
12
11
  import { I as Icon } from './Icon-feeG7gXA.js';
13
- import { A as Avatar } from './Avatar-B_cRQqKR.js';
14
- import { C as Chip } from './Chip-0-Yx9SGX.js';
15
- import { S as SvgCheckBox, a as SvgCheckBoxOutlineBlank } from './check_box-0U1tbEAd.js';
16
- import { S as SvgIndeterminateCheckBox } from './indeterminate_check_box-jjLG4UY6.js';
17
12
  import { S as SvgCheck } from './check-Cf67OWrZ.js';
13
+ import { a as SvgCheckBoxOutlineBlank, S as SvgCheckBox } from './check_box-0U1tbEAd.js';
14
+ import { S as SvgIndeterminateCheckBox } from './indeterminate_check_box-jjLG4UY6.js';
15
+ import { F as Flex } from './Flex-_orhvoxS.js';
16
+ import { A as Avatar } from './Avatar-B_cRQqKR.js';
17
+ import { C as Chip } from './Chip-D2k5X_wX.js';
18
18
  import { d as defaultRangeExtractor, u as useVirtualizer } from './index-DXeGMe23.js';
19
19
  import { a as useOnClickOutside } from './useOnClickOutside-Zw5vzxSq.js';
20
20
  import { c as computePosition, o as offset, v as autoPlacement, g as size, a as autoUpdate } from './floating-ui.react-dom-CHrYz13o.js';
@@ -181,7 +181,7 @@ function useSelectFieldLoading(config) {
181
181
  const empty = "_empty_1stqb_7";
182
182
  const scroller = "_scroller_1stqb_23";
183
183
  const divider = "_divider_1stqb_59";
184
- const styles$3 = {
184
+ const styles$6 = {
185
185
  "select-field-list": "_select-field-list_1stqb_2",
186
186
  empty: empty,
187
187
  "load-more": "_load-more_1stqb_15",
@@ -193,31 +193,120 @@ const styles$3 = {
193
193
  divider: divider
194
194
  };
195
195
 
196
- const floating = "_floating_1rq2x_30";
197
- const highlighted = "_highlighted_1rq2x_43";
198
- const disabled = "_disabled_1rq2x_59";
199
- const description = "_description_1rq2x_71";
200
- const checkbox = "_checkbox_1rq2x_79";
201
- const checked = "_checked_1rq2x_84";
202
- const indeterminate = "_indeterminate_1rq2x_85";
203
- const unchecked = "_unchecked_1rq2x_89";
204
- const styles$2 = {
205
- "select-field-list-item": "_select-field-list-item_1rq2x_2",
196
+ const floating = "_floating_1d3fe_2";
197
+ const highlighted = "_highlighted_1d3fe_15";
198
+ const checkmark = "_checkmark_1d3fe_36";
199
+ const styles$5 = {
206
200
  floating: floating,
207
- "bulk-action": "_bulk-action_1rq2x_37",
201
+ "bulk-action": "_bulk-action_1d3fe_9",
208
202
  highlighted: highlighted,
209
- "single-selected": "_single-selected_1rq2x_49",
210
- "single-selected-highlighted": "_single-selected-highlighted_1rq2x_54",
211
- disabled: disabled,
212
- "side-content": "_side-content_1rq2x_64",
213
- description: description,
214
- "chips-row": "_chips-row_1rq2x_75",
203
+ "single-selected": "_single-selected_1d3fe_22",
204
+ "single-selected-highlighted": "_single-selected-highlighted_1d3fe_29",
205
+ checkmark: checkmark
206
+ };
207
+
208
+ const checkbox = "_checkbox_1xh9p_1";
209
+ const checked = "_checked_1xh9p_9";
210
+ const unchecked = "_unchecked_1xh9p_13";
211
+ const indeterminate = "_indeterminate_1xh9p_17";
212
+ const loading = "_loading_1xh9p_21";
213
+ const styles$4 = {
215
214
  checkbox: checkbox,
216
215
  checked: checked,
216
+ unchecked: unchecked,
217
217
  indeterminate: indeterminate,
218
- unchecked: unchecked
218
+ loading: loading
219
+ };
220
+
221
+ const iconMap = {
222
+ checked: SvgCheckBox,
223
+ unchecked: SvgCheckBoxOutlineBlank,
224
+ indeterminate: SvgIndeterminateCheckBox
225
+ };
226
+ function OptionCheckbox({ checkState, className }) {
227
+ if (checkState === "loading") {
228
+ return /* @__PURE__ */ jsx("span", { className: cx(styles$4["loading"], className), children: /* @__PURE__ */ jsx(Spinner, { size: "small", "aria-hidden": "true" }) });
229
+ }
230
+ return /* @__PURE__ */ jsx(
231
+ Icon,
232
+ {
233
+ "aria-hidden": "true",
234
+ size: "large",
235
+ svg: iconMap[checkState],
236
+ className: cx(styles$4["checkbox"], styles$4[checkState], className)
237
+ }
238
+ );
239
+ }
240
+
241
+ const disabled = "_disabled_1tqi5_27";
242
+ const styles$3 = {
243
+ "option-row": "_option-row_1tqi5_2",
244
+ disabled: disabled,
245
+ "side-content": "_side-content_1tqi5_35"
246
+ };
247
+
248
+ const OptionRow = forwardRef(
249
+ function OptionRow2({ disabled, children, className, ...rest }, ref) {
250
+ const optionRowClass = cx(
251
+ styles$3["option-row"],
252
+ { [styles$3["disabled"]]: disabled },
253
+ className
254
+ );
255
+ return /* @__PURE__ */ jsx("div", { ref, ...rest, className: optionRowClass, children });
256
+ }
257
+ );
258
+ const OptionRowSideContent = forwardRef(function OptionRowSideContent2({ children, className, ...rest }, ref) {
259
+ const sideContentClass = cx(styles$3["side-content"], className);
260
+ return /* @__PURE__ */ jsx("div", { ref, ...rest, className: sideContentClass, children });
261
+ });
262
+
263
+ const title = "_title_te5wz_1";
264
+ const description = "_description_te5wz_10";
265
+ const styles$2 = {
266
+ title: title,
267
+ description: description,
268
+ "chips-row": "_chips-row_te5wz_21"
219
269
  };
220
270
 
271
+ function OptionContentArea({
272
+ label,
273
+ content,
274
+ children
275
+ }) {
276
+ const hasAvatar = !!content?.avatar;
277
+ const hasChips = !!content?.chips?.length;
278
+ const hasIcon = !!content?.icon;
279
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
280
+ hasAvatar && /* @__PURE__ */ jsx(OptionRowSideContent, { "aria-hidden": "true", children: /* @__PURE__ */ jsx(Avatar, { size: "medium", ...content.avatar }) }),
281
+ /* @__PURE__ */ jsxs(Flex, { grow: 1, shrink: 1, direction: "column", justifyContent: "center", children: [
282
+ /* @__PURE__ */ jsx(Text, { size: "small", className: styles$2["title"], children: content?.title ?? label }),
283
+ content?.description && /* @__PURE__ */ jsx(Text, { size: "small", className: styles$2["description"], children: content.description }),
284
+ hasChips && /* @__PURE__ */ jsx(
285
+ Flex,
286
+ {
287
+ wrap: "wrap",
288
+ gap: "1",
289
+ className: styles$2["chips-row"],
290
+ role: "group",
291
+ "aria-label": "Tags",
292
+ children: content.chips.map((chip, i) => /* @__PURE__ */ jsx(Chip, { size: "small", ...chip }, `${chip.label}-${i}`))
293
+ }
294
+ ),
295
+ children
296
+ ] }),
297
+ hasIcon && /* @__PURE__ */ jsx(OptionRowSideContent, { children: /* @__PURE__ */ jsx(
298
+ Icon,
299
+ {
300
+ size: "large",
301
+ svg: content.icon.svg,
302
+ color: content.icon.color,
303
+ "aria-hidden": content.icon.label ? void 0 : "true",
304
+ "aria-label": content.icon.label
305
+ }
306
+ ) })
307
+ ] });
308
+ }
309
+
221
310
  const SelectOption = ({
222
311
  item,
223
312
  index,
@@ -230,92 +319,39 @@ const SelectOption = ({
230
319
  }) => {
231
320
  const isBulkAction = item.type === "select-all" || item.type === "select-filtered";
232
321
  const isSingleSelected = selectionType === "single" && checked === "checked";
233
- const checkbox = useMemo(() => {
234
- if (checked === "checked")
235
- return { icon: SvgCheckBox, class: styles$2["checked"] };
236
- if (checked === "unchecked")
237
- return { icon: SvgCheckBoxOutlineBlank, class: styles$2["unchecked"] };
238
- if (checked === "indeterminate")
239
- return { icon: SvgIndeterminateCheckBox, class: styles$2["indeterminate"] };
240
- return { icon: SvgCheckBoxOutlineBlank, class: styles$2["unchecked"] };
241
- }, [checked]);
242
- const content = item.original.content;
243
- const hasAvatar = !!content?.avatar;
244
- const hasChips = !!content?.chips?.length;
245
- const hasIcon = !!content?.icon;
246
322
  return /* @__PURE__ */ jsxs(
247
- "div",
323
+ OptionRow,
248
324
  {
249
325
  "data-item-index": index,
326
+ disabled,
250
327
  ...getItemProps({
251
328
  item,
252
329
  index,
253
330
  "data-type": item.type,
254
- className: cx(styles$2["select-field-list-item"], {
255
- [styles$2.highlighted]: highlighted && !isSingleSelected,
256
- [styles$2["single-selected"]]: isSingleSelected && !highlighted,
257
- [styles$2["single-selected-highlighted"]]: isSingleSelected && highlighted,
258
- [styles$2.disabled]: disabled,
259
- [styles$2["bulk-action"]]: isBulkAction,
260
- [styles$2.floating]: isBulkAction && isListScrolled
331
+ className: cx(styles$5["select-option"], {
332
+ [styles$5.highlighted]: highlighted && !isSingleSelected,
333
+ [styles$5["single-selected"]]: isSingleSelected && !highlighted,
334
+ [styles$5["single-selected-highlighted"]]: isSingleSelected && highlighted,
335
+ [styles$5["bulk-action"]]: isBulkAction,
336
+ [styles$5.floating]: isBulkAction && isListScrolled
261
337
  })
262
338
  }),
263
339
  children: [
264
- selectionType === "multiple" && /* @__PURE__ */ jsx("div", { className: styles$2["side-content"], children: checked === "loading" ? /* @__PURE__ */ jsx(
265
- Flex,
340
+ selectionType === "multiple" && /* @__PURE__ */ jsx(OptionRowSideContent, { children: /* @__PURE__ */ jsx(OptionCheckbox, { checkState: checked }) }),
341
+ /* @__PURE__ */ jsx(
342
+ OptionContentArea,
266
343
  {
267
- alignItems: "center",
268
- justifyContent: "center",
269
- style: { height: "1.5rem", width: "1.5rem" },
270
- children: /* @__PURE__ */ jsx(Spinner, { size: "small" })
344
+ label: item.original.label,
345
+ content: item.original.content
271
346
  }
272
- ) : (
273
- // Decorative: selection state is conveyed by aria-selected on the <li>
274
- /* @__PURE__ */ jsx(
275
- Icon,
276
- {
277
- "aria-hidden": "true",
278
- size: "large",
279
- svg: checkbox.icon,
280
- className: cx(styles$2["checkbox"], checkbox.class)
281
- }
282
- )
283
- ) }),
284
- hasAvatar && // aria-hidden: Avatar has internal <SrOnly> text that would duplicate the option label
285
- /* @__PURE__ */ jsx("div", { className: styles$2["side-content"], "aria-hidden": "true", children: /* @__PURE__ */ jsx(Avatar, { size: "medium", ...content.avatar }) }),
286
- /* @__PURE__ */ jsxs(Flex, { grow: 1, shrink: 1, direction: "column", children: [
287
- /* @__PURE__ */ jsx(Text, { size: "medium", children: content?.title ?? item.original.label }),
288
- content?.description && /* @__PURE__ */ jsx(Text, { size: "small", className: styles$2["description"], children: content.description }),
289
- hasChips && // Group label gives screen readers context that these are tags
290
- /* @__PURE__ */ jsx(
291
- Flex,
292
- {
293
- wrap: "wrap",
294
- gap: "1",
295
- className: styles$2["chips-row"],
296
- role: "group",
297
- "aria-label": "Tags",
298
- children: content.chips.map((chip, i) => /* @__PURE__ */ jsx(Chip, { size: "small", ...chip }, `${chip.label}-${i}`))
299
- }
300
- )
301
- ] }),
302
- hasIcon && /* @__PURE__ */ jsx("div", { className: styles$2["side-content"], children: /* @__PURE__ */ jsx(
303
- Icon,
304
- {
305
- size: "large",
306
- svg: content.icon.svg,
307
- color: content.icon.color,
308
- "aria-hidden": content.icon.label ? void 0 : "true",
309
- "aria-label": content.icon.label
310
- }
311
- ) }),
312
- selectionType === "single" && checked === "checked" && /* @__PURE__ */ jsx("div", { className: styles$2["side-content"], children: /* @__PURE__ */ jsx(
347
+ ),
348
+ selectionType === "single" && checked === "checked" && /* @__PURE__ */ jsx(OptionRowSideContent, { children: /* @__PURE__ */ jsx(
313
349
  Icon,
314
350
  {
315
351
  "aria-hidden": "true",
316
352
  size: "medium",
317
353
  svg: SvgCheck,
318
- className: cx(styles$2["checkbox"], styles$2["checked"])
354
+ className: styles$5["checkmark"]
319
355
  }
320
356
  ) })
321
357
  ]
@@ -531,10 +567,10 @@ const OptionsPanel = forwardRef(
531
567
  {
532
568
  role: "group",
533
569
  "aria-labelledby": labelId,
534
- className: styles$3["pinned-section"],
570
+ className: styles$6["pinned-section"],
535
571
  children: [
536
- /* @__PURE__ */ jsx("span", { id: labelId, className: styles$3["pinned-section-header"], children: /* @__PURE__ */ jsx(Text, { variant: "eyebrow", children: section.label }) }),
537
- /* @__PURE__ */ jsx("div", { className: styles$3["pinned-section-list"], children: section.items.map(
572
+ /* @__PURE__ */ jsx("span", { id: labelId, className: styles$6["pinned-section-header"], children: /* @__PURE__ */ jsx(Text, { variant: "eyebrow", children: section.label }) }),
573
+ /* @__PURE__ */ jsx("div", { className: styles$6["pinned-section-list"], children: section.items.map(
538
574
  ({ item, index }) => renderItem(item, index)
539
575
  ) })
540
576
  ]
@@ -550,7 +586,7 @@ const OptionsPanel = forwardRef(
550
586
  {
551
587
  role: "presentation",
552
588
  "aria-hidden": "true",
553
- className: styles$3["divider"],
589
+ className: styles$6["divider"],
554
590
  children: /* @__PURE__ */ jsx(Divider, {})
555
591
  },
556
592
  `divider-${sectionIndex}`
@@ -566,22 +602,22 @@ const OptionsPanel = forwardRef(
566
602
  return result;
567
603
  };
568
604
  const menuProps = getMenuProps({
569
- className: cx(styles$3["scroller"], className),
605
+ className: cx(styles$6["scroller"], className),
570
606
  style
571
607
  });
572
608
  const menuRef = useMergeRefs([menuProps.ref, scrollerRef]);
573
- return /* @__PURE__ */ jsx("div", { ...menuProps, ref: menuRef, children: /* @__PURE__ */ jsxs("div", { className: styles$3["select-field-list"], children: [
609
+ return /* @__PURE__ */ jsx("div", { ...menuProps, ref: menuRef, children: /* @__PURE__ */ jsxs("div", { className: styles$6["select-field-list"], children: [
574
610
  isOpen && /* @__PURE__ */ jsx(
575
611
  "div",
576
612
  {
577
613
  ref: scrollSentinelRef,
578
- className: styles$3["scroll-sentinel"],
614
+ className: styles$6["scroll-sentinel"],
579
615
  role: "presentation",
580
616
  "aria-hidden": "true"
581
617
  }
582
618
  ),
583
- isOpen && /* @__PURE__ */ jsx(Fragment, { children: loading || anyPinnedLoading ? /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$3["empty"], children: /* @__PURE__ */ jsx(Spinner, { size: "medium" }) }) : items.length > 0 ? renderSections() : /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$3["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) }),
584
- loadingMore ? /* @__PURE__ */ jsxs("div", { role: "presentation", className: styles$3["load-more"], children: [
619
+ isOpen && /* @__PURE__ */ jsx(Fragment, { children: loading || anyPinnedLoading ? /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$6["empty"], children: /* @__PURE__ */ jsx(Spinner, { size: "medium" }) }) : items.length > 0 ? renderSections() : /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$6["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) }),
620
+ loadingMore ? /* @__PURE__ */ jsxs("div", { role: "presentation", className: styles$6["load-more"], children: [
585
621
  /* @__PURE__ */ jsx(Spinner, { size: "small" }),
586
622
  /* @__PURE__ */ jsx(SrOnly, { children: "Loading more..." })
587
623
  ] }) : hasMore && !loading ? /* @__PURE__ */ jsx("div", { role: "presentation", children: /* @__PURE__ */ jsx(
@@ -589,7 +625,7 @@ const OptionsPanel = forwardRef(
589
625
  {
590
626
  onVisibilityChange: handleLoaderVisibilityChange,
591
627
  rootMargin: "0px 0px -100px 0px",
592
- children: /* @__PURE__ */ jsx("div", { className: styles$3["load-more"], children: /* @__PURE__ */ jsx(
628
+ children: /* @__PURE__ */ jsx("div", { className: styles$6["load-more"], children: /* @__PURE__ */ jsx(
593
629
  Button,
594
630
  {
595
631
  appearance: "secondary",
@@ -780,7 +816,7 @@ const VirtualizedOptionsPanel = forwardRef(
780
816
  {
781
817
  role: "presentation",
782
818
  "aria-hidden": "true",
783
- className: styles$3["pinned-section-header"],
819
+ className: styles$6["pinned-section-header"],
784
820
  children: /* @__PURE__ */ jsx("span", { id: labelId, children: /* @__PURE__ */ jsx(Text, { variant: "eyebrow", children: row.label }) })
785
821
  }
786
822
  );
@@ -793,7 +829,7 @@ const VirtualizedOptionsPanel = forwardRef(
793
829
  {
794
830
  role: "presentation",
795
831
  "aria-hidden": "true",
796
- className: styles$3["divider"],
832
+ className: styles$6["divider"],
797
833
  children: /* @__PURE__ */ jsx(Divider, {})
798
834
  }
799
835
  )
@@ -801,12 +837,12 @@ const VirtualizedOptionsPanel = forwardRef(
801
837
  }
802
838
  if (row.type === "load-more") {
803
839
  if (loadingMore) {
804
- return /* @__PURE__ */ jsxs("div", { role: "presentation", className: styles$3["load-more"], children: [
840
+ return /* @__PURE__ */ jsxs("div", { role: "presentation", className: styles$6["load-more"], children: [
805
841
  /* @__PURE__ */ jsx(Spinner, { size: "small" }),
806
842
  /* @__PURE__ */ jsx(SrOnly, { children: "Loading more..." })
807
843
  ] });
808
844
  }
809
- return /* @__PURE__ */ jsx("div", { role: "presentation", children: /* @__PURE__ */ jsx("div", { className: styles$3["load-more"], children: /* @__PURE__ */ jsx(
845
+ return /* @__PURE__ */ jsx("div", { role: "presentation", children: /* @__PURE__ */ jsx("div", { className: styles$6["load-more"], children: /* @__PURE__ */ jsx(
810
846
  Button,
811
847
  {
812
848
  appearance: "secondary",
@@ -819,21 +855,21 @@ const VirtualizedOptionsPanel = forwardRef(
819
855
  return null;
820
856
  };
821
857
  const menuProps = getMenuProps({
822
- className: cx(styles$3["scroller"], className),
858
+ className: cx(styles$6["scroller"], className),
823
859
  style
824
860
  });
825
861
  const menuRef = useMergeRefs([menuProps.ref, scrollerRef]);
826
- return /* @__PURE__ */ jsx("div", { ...menuProps, ref: menuRef, children: /* @__PURE__ */ jsxs("div", { className: styles$3["select-field-list"], children: [
862
+ return /* @__PURE__ */ jsx("div", { ...menuProps, ref: menuRef, children: /* @__PURE__ */ jsxs("div", { className: styles$6["select-field-list"], children: [
827
863
  isOpen && /* @__PURE__ */ jsx(
828
864
  "div",
829
865
  {
830
866
  ref: scrollSentinelRef,
831
- className: styles$3["scroll-sentinel"],
867
+ className: styles$6["scroll-sentinel"],
832
868
  role: "presentation",
833
869
  "aria-hidden": "true"
834
870
  }
835
871
  ),
836
- isOpen && /* @__PURE__ */ jsx(Fragment, { children: loading || anyPinnedLoading ? /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$3["empty"], children: /* @__PURE__ */ jsx(Spinner, { size: "medium" }) }) : items.length > 0 ? /* @__PURE__ */ jsx(
872
+ isOpen && /* @__PURE__ */ jsx(Fragment, { children: loading || anyPinnedLoading ? /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$6["empty"], children: /* @__PURE__ */ jsx(Spinner, { size: "medium" }) }) : items.length > 0 ? /* @__PURE__ */ jsx(
837
873
  "div",
838
874
  {
839
875
  role: "presentation",
@@ -868,7 +904,7 @@ const VirtualizedOptionsPanel = forwardRef(
868
904
  );
869
905
  })
870
906
  }
871
- ) : /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$3["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) })
907
+ ) : /* @__PURE__ */ jsx("div", { role: "presentation", className: styles$6["empty"], children: /* @__PURE__ */ jsx(Text, { subdued: true, size: "small", children: "No match found" }) }) })
872
908
  ] }) });
873
909
  }
874
910
  );
@@ -903,352 +939,95 @@ function useDebouncedCallback(callback, delay = 300) {
903
939
  return debouncedCallback;
904
940
  }
905
941
 
906
- const styles$1 = {
907
- "options-popover": "_options-popover_1a8y0_2",
908
- "options-popover-body": "_options-popover-body_1a8y0_39",
909
- "options-popover-footer": "_options-popover-footer_1a8y0_48"
910
- };
911
-
912
- function resolveWidth(width, referenceWidth) {
913
- if (width === "reference") return `${referenceWidth}px`;
914
- if (typeof width === "number") return `${width}px`;
915
- if (typeof width === "string") return width;
916
- return void 0;
917
- }
918
- const OptionsPopover = (props) => {
919
- const ref = useRef(null);
920
- const { id, children, referenceElement, open, onClose, width, footer } = props;
921
- const lastCloseRef = useRef(0);
922
- const safeClose = useCallback(() => {
923
- const now = Date.now();
924
- if (now - lastCloseRef.current < 50) return;
925
- lastCloseRef.current = now;
926
- onClose();
927
- }, [onClose]);
928
- useOnClickOutside({
929
- targets: [ref.current ?? void 0, referenceElement.current ?? void 0],
930
- onClickOutside: safeClose,
931
- disable: !open
932
- });
933
- useEffect(() => {
934
- if (open) {
935
- ref.current?.showPopover();
936
- } else {
937
- ref.current?.hidePopover();
942
+ const DEFAULT_CACHE_SIZE = 15;
943
+ const STATIC_CACHE_KEY = "__static__";
944
+ function cacheSet(sectionCache, key, value, maxSize) {
945
+ if (sectionCache.has(key)) {
946
+ sectionCache.delete(key);
947
+ }
948
+ sectionCache.set(key, value);
949
+ while (sectionCache.size > maxSize) {
950
+ const oldest = sectionCache.keys().next().value;
951
+ if (oldest !== void 0) {
952
+ sectionCache.delete(oldest);
938
953
  }
939
- }, [open]);
954
+ }
955
+ }
956
+ function usePinnedOptions(pinned, searchValue) {
957
+ const [dynamicResults, setDynamicResults] = useState({});
958
+ const [loadingSet, setLoadingSet] = useState(/* @__PURE__ */ new Set());
959
+ const latestSearchValueRef = useRef(searchValue);
960
+ latestSearchValueRef.current = searchValue;
961
+ const cacheRef = useRef(
962
+ /* @__PURE__ */ new Map()
963
+ );
964
+ const nonReactiveTriggeredRef = useRef(/* @__PURE__ */ new Set());
965
+ const sections = useMemo(() => {
966
+ if (!pinned) return [];
967
+ return Array.isArray(pinned) ? pinned : [pinned];
968
+ }, [pinned]);
969
+ const sectionConfig = useMemo(() => {
970
+ return sections.map((section) => {
971
+ const isDynamic = typeof section.options === "function";
972
+ return {
973
+ label: section.label,
974
+ isDynamic,
975
+ searchReactive: section.searchReactive ?? true,
976
+ cacheSize: section.cacheSize ?? DEFAULT_CACHE_SIZE,
977
+ staticOptions: isDynamic ? void 0 : section.options,
978
+ loader: isDynamic ? section.options : void 0
979
+ };
980
+ });
981
+ }, [sections]);
940
982
  useEffect(() => {
941
- if (!open) return;
942
- const popoverEl = ref.current;
943
- if (!popoverEl) return;
944
- const handleFocusOut = (e) => {
945
- const next = e.relatedTarget;
946
- if (!next) {
947
- safeClose();
948
- return;
983
+ cacheRef.current = /* @__PURE__ */ new Map();
984
+ nonReactiveTriggeredRef.current = /* @__PURE__ */ new Set();
985
+ }, [sectionConfig]);
986
+ const getSectionCache = useCallback(
987
+ (index) => {
988
+ let sectionCache = cacheRef.current.get(index);
989
+ if (!sectionCache) {
990
+ sectionCache = /* @__PURE__ */ new Map();
991
+ cacheRef.current.set(index, sectionCache);
949
992
  }
950
- if (popoverEl.contains(next)) return;
951
- const trigger = referenceElement.current;
952
- if (trigger && trigger.contains(next)) return;
953
- safeClose();
954
- };
955
- popoverEl.addEventListener("focusout", handleFocusOut);
956
- return () => popoverEl.removeEventListener("focusout", handleFocusOut);
957
- }, [open, safeClose, referenceElement]);
958
- useEffect(() => {
959
- if (!open) return;
960
- const popoverEl = ref.current;
961
- if (!popoverEl) return;
962
- const handleKeyDown = (e) => {
963
- if (e.key !== "Escape" || e.defaultPrevented) return;
964
- e.preventDefault();
965
- safeClose();
966
- };
967
- popoverEl.addEventListener("keydown", handleKeyDown);
968
- return () => popoverEl.removeEventListener("keydown", handleKeyDown);
969
- }, [open, safeClose]);
970
- const updatePosition = useCallback(async () => {
971
- if (!ref.current || !referenceElement.current) return;
972
- const position = await computePosition(
973
- referenceElement.current,
974
- ref.current,
975
- {
976
- placement: "bottom-start",
977
- middleware: [
978
- offset(8),
979
- autoPlacement({
980
- allowedPlacements: [
981
- "bottom-start",
982
- "bottom-end",
983
- "top-start",
984
- "top-end"
985
- ],
986
- padding: 8
987
- }),
988
- size({
989
- padding: 8,
990
- apply({ rects, elements, availableHeight, availableWidth }) {
991
- const resolved = resolveWidth(width, rects.reference.width);
992
- Object.assign(elements.floating.style, {
993
- ...resolved != null && { width: resolved },
994
- maxWidth: `${Math.max(0, availableWidth)}px`,
995
- maxHeight: `${Math.max(0, availableHeight)}px`
996
- });
997
- }
998
- })
999
- ]
993
+ return sectionCache;
994
+ },
995
+ []
996
+ );
997
+ const loadSection = useCallback(
998
+ (config, index, loaderArg) => {
999
+ const cacheKey = config.searchReactive ? loaderArg : STATIC_CACHE_KEY;
1000
+ const handleResult = (options) => {
1001
+ if (!config.searchReactive || latestSearchValueRef.current === loaderArg) {
1002
+ const sectionCache = getSectionCache(index);
1003
+ cacheSet(sectionCache, cacheKey, options, config.cacheSize);
1004
+ setDynamicResults((prev) => ({ ...prev, [index]: options }));
1005
+ setLoadingSet((prev) => {
1006
+ const next = new Set(prev);
1007
+ next.delete(index);
1008
+ return next;
1009
+ });
1010
+ }
1011
+ };
1012
+ const handleError = (error) => {
1013
+ console.error("Failed to load pinned options:", error);
1014
+ if (!config.searchReactive || latestSearchValueRef.current === loaderArg) {
1015
+ setDynamicResults((prev) => ({ ...prev, [index]: [] }));
1016
+ setLoadingSet((prev) => {
1017
+ const next = new Set(prev);
1018
+ next.delete(index);
1019
+ return next;
1020
+ });
1021
+ }
1022
+ };
1023
+ try {
1024
+ Promise.resolve(config.loader(loaderArg)).then(handleResult).catch(handleError);
1025
+ } catch (error) {
1026
+ handleError(error);
1000
1027
  }
1001
- );
1002
- ref.current.style.left = `${position.x}px`;
1003
- ref.current.style.top = `${position.y}px`;
1004
- }, [ref, referenceElement, width]);
1005
- useEffect(() => {
1006
- if (!ref.current || !referenceElement.current || !open) return;
1007
- const cleanup = autoUpdate(
1008
- referenceElement.current,
1009
- ref.current,
1010
- updatePosition
1011
- );
1012
- return () => {
1013
- cleanup();
1014
- };
1015
- }, [referenceElement, ref, updatePosition, open]);
1016
- return /* @__PURE__ */ jsxs(
1017
- "div",
1018
- {
1019
- ref,
1020
- id,
1021
- className: styles$1["options-popover"],
1022
- popover: "manual",
1023
- children: [
1024
- /* @__PURE__ */ jsx("div", { className: styles$1["options-popover-body"], children }),
1025
- footer ? /* @__PURE__ */ jsx("div", { className: styles$1["options-popover-footer"], children: footer }) : null
1026
- ]
1027
- }
1028
- );
1029
- };
1030
-
1031
- const header = "_header_1v2a3_41";
1032
- const field = "_field_1v2a3_2";
1033
- const content = "_content_1v2a3_54";
1034
- const footer = "_footer_1v2a3_60";
1035
- const styles = {
1036
- "field-dialog": "_field-dialog_1v2a3_2",
1037
- "field-dialog-visual-viewport-height": "_field-dialog-visual-viewport-height_1v2a3_21",
1038
- header: header,
1039
- field: field,
1040
- content: content,
1041
- footer: footer
1042
- };
1043
-
1044
- const OptionsDialog = ({
1045
- id,
1046
- isOpen,
1047
- onClose,
1048
- field,
1049
- children,
1050
- title,
1051
- initialFocusResolver,
1052
- footer
1053
- }) => {
1054
- const elRef = useRef(null);
1055
- const visualViewportHeightRef = useRef(null);
1056
- useDialogScrollLock({
1057
- open: isOpen,
1058
- id,
1059
- enableScrollChaining: false,
1060
- elementRef: elRef
1061
- });
1062
- const computeFocus = useCallback(
1063
- (focusables) => {
1064
- if (initialFocusResolver) {
1065
- return initialFocusResolver(focusables);
1066
- }
1067
- return focusables.find(
1068
- (focusable) => focusable.dataset.anv !== "dialog-cancel-button"
1069
- ) || focusables[0];
1070
- },
1071
- [initialFocusResolver]
1072
- );
1073
- useEffect(() => {
1074
- if (isOpen) {
1075
- elRef.current?.showModal();
1076
- if (elRef.current) {
1077
- computeFocus(tabbable(elRef.current)).focus();
1078
- }
1079
- } else {
1080
- elRef.current?.close();
1081
- }
1082
- }, [isOpen]);
1083
- useEffect(() => {
1084
- if (isOpen) {
1085
- const handleResize = () => {
1086
- if (!visualViewportHeightRef.current) return;
1087
- visualViewportHeightRef.current.style.height = `${window.visualViewport?.height ?? 0}px`;
1088
- visualViewportHeightRef.current.style.maxHeight = `${window.visualViewport?.height ?? 0}px`;
1089
- };
1090
- window.visualViewport?.addEventListener("resize", handleResize);
1091
- return () => {
1092
- window.visualViewport?.removeEventListener("resize", handleResize);
1093
- };
1094
- }
1095
- }, [isOpen]);
1096
- return /* @__PURE__ */ jsx(
1097
- "dialog",
1098
- {
1099
- ref: elRef,
1100
- id,
1101
- "data-anv": "field-dialog",
1102
- className: styles["field-dialog"],
1103
- onKeyDown: (e) => {
1104
- if (e.code === "Escape") {
1105
- e.preventDefault();
1106
- onClose();
1107
- }
1108
- },
1109
- children: /* @__PURE__ */ jsxs(
1110
- "div",
1111
- {
1112
- className: styles["field-dialog-visual-viewport-height"],
1113
- ref: visualViewportHeightRef,
1114
- children: [
1115
- /* @__PURE__ */ jsxs(Flex, { direction: "row", className: styles["header"], children: [
1116
- /* @__PURE__ */ jsx(Text, { variant: "headline", el: "h1", children: title }),
1117
- /* @__PURE__ */ jsx("span", { className: styles["close-container"], children: /* @__PURE__ */ jsx(DialogContext.Provider, { value: { close: onClose }, children: /* @__PURE__ */ jsx(
1118
- DialogCancelButton,
1119
- {
1120
- className: styles["close-button"],
1121
- size: "small",
1122
- appearance: "ghost",
1123
- "aria-label": "Close dialog",
1124
- icon: SvgClose
1125
- }
1126
- ) }) })
1127
- ] }),
1128
- field ? /* @__PURE__ */ jsx(Flex, { direction: "column", className: styles["field"], children: field }) : null,
1129
- /* @__PURE__ */ jsx(Flex, { direction: "column", className: styles["content"], children }),
1130
- footer ? /* @__PURE__ */ jsx("div", { className: styles["footer"], children: footer }) : null
1131
- ]
1132
- }
1133
- )
1134
- }
1135
- );
1136
- };
1137
-
1138
- const AddNewItemButton = ({
1139
- searchText,
1140
- addItemLabel,
1141
- onAddNewItem,
1142
- onCloseMenu
1143
- }) => {
1144
- if (!onAddNewItem) return null;
1145
- const resolvedLabel = typeof addItemLabel === "function" ? addItemLabel(searchText) : addItemLabel ?? "Add new item";
1146
- return /* @__PURE__ */ jsx(
1147
- Button,
1148
- {
1149
- appearance: "secondary",
1150
- size: "small",
1151
- icon: { before: SvgAdd },
1152
- onClick: () => {
1153
- onCloseMenu?.();
1154
- onAddNewItem(searchText);
1155
- },
1156
- style: { width: "100%" },
1157
- children: resolvedLabel
1158
- }
1159
- );
1160
- };
1161
- AddNewItemButton.displayName = "AddNewItemButton";
1162
-
1163
- const DEFAULT_CACHE_SIZE = 15;
1164
- const STATIC_CACHE_KEY = "__static__";
1165
- function cacheSet(sectionCache, key, value, maxSize) {
1166
- if (sectionCache.has(key)) {
1167
- sectionCache.delete(key);
1168
- }
1169
- sectionCache.set(key, value);
1170
- while (sectionCache.size > maxSize) {
1171
- const oldest = sectionCache.keys().next().value;
1172
- if (oldest !== void 0) {
1173
- sectionCache.delete(oldest);
1174
- }
1175
- }
1176
- }
1177
- function usePinnedOptions(pinned, searchValue) {
1178
- const [dynamicResults, setDynamicResults] = useState({});
1179
- const [loadingSet, setLoadingSet] = useState(/* @__PURE__ */ new Set());
1180
- const latestSearchValueRef = useRef(searchValue);
1181
- latestSearchValueRef.current = searchValue;
1182
- const cacheRef = useRef(
1183
- /* @__PURE__ */ new Map()
1184
- );
1185
- const nonReactiveTriggeredRef = useRef(/* @__PURE__ */ new Set());
1186
- const sections = useMemo(() => {
1187
- if (!pinned) return [];
1188
- return Array.isArray(pinned) ? pinned : [pinned];
1189
- }, [pinned]);
1190
- const sectionConfig = useMemo(() => {
1191
- return sections.map((section) => {
1192
- const isDynamic = typeof section.options === "function";
1193
- return {
1194
- label: section.label,
1195
- isDynamic,
1196
- searchReactive: section.searchReactive ?? true,
1197
- cacheSize: section.cacheSize ?? DEFAULT_CACHE_SIZE,
1198
- staticOptions: isDynamic ? void 0 : section.options,
1199
- loader: isDynamic ? section.options : void 0
1200
- };
1201
- });
1202
- }, [sections]);
1203
- useEffect(() => {
1204
- cacheRef.current = /* @__PURE__ */ new Map();
1205
- nonReactiveTriggeredRef.current = /* @__PURE__ */ new Set();
1206
- }, [sectionConfig]);
1207
- const getSectionCache = useCallback(
1208
- (index) => {
1209
- let sectionCache = cacheRef.current.get(index);
1210
- if (!sectionCache) {
1211
- sectionCache = /* @__PURE__ */ new Map();
1212
- cacheRef.current.set(index, sectionCache);
1213
- }
1214
- return sectionCache;
1215
- },
1216
- []
1217
- );
1218
- const loadSection = useCallback(
1219
- (config, index, loaderArg) => {
1220
- const cacheKey = config.searchReactive ? loaderArg : STATIC_CACHE_KEY;
1221
- const handleResult = (options) => {
1222
- if (!config.searchReactive || latestSearchValueRef.current === loaderArg) {
1223
- const sectionCache = getSectionCache(index);
1224
- cacheSet(sectionCache, cacheKey, options, config.cacheSize);
1225
- setDynamicResults((prev) => ({ ...prev, [index]: options }));
1226
- setLoadingSet((prev) => {
1227
- const next = new Set(prev);
1228
- next.delete(index);
1229
- return next;
1230
- });
1231
- }
1232
- };
1233
- const handleError = (error) => {
1234
- console.error("Failed to load pinned options:", error);
1235
- if (!config.searchReactive || latestSearchValueRef.current === loaderArg) {
1236
- setDynamicResults((prev) => ({ ...prev, [index]: [] }));
1237
- setLoadingSet((prev) => {
1238
- const next = new Set(prev);
1239
- next.delete(index);
1240
- return next;
1241
- });
1242
- }
1243
- };
1244
- try {
1245
- Promise.resolve(config.loader(loaderArg)).then(handleResult).catch(handleError);
1246
- } catch (error) {
1247
- handleError(error);
1248
- }
1249
- },
1250
- [getSectionCache]
1251
- );
1028
+ },
1029
+ [getSectionCache]
1030
+ );
1252
1031
  useEffect(() => {
1253
1032
  const dynamicEntries = sectionConfig.map((config, index) => ({ config, index })).filter(({ config }) => config.isDynamic);
1254
1033
  if (dynamicEntries.length === 0) return;
@@ -1432,6 +1211,266 @@ function buildSelectItems({
1432
1211
  return { items, sectionsMeta: meta };
1433
1212
  }
1434
1213
 
1214
+ const styles$1 = {
1215
+ "options-popover": "_options-popover_1gogz_2",
1216
+ "options-popover-body": "_options-popover-body_1gogz_37",
1217
+ "options-popover-footer": "_options-popover-footer_1gogz_46"
1218
+ };
1219
+
1220
+ function resolveWidth(width, referenceWidth) {
1221
+ if (width === "reference") return `${referenceWidth}px`;
1222
+ if (typeof width === "number") return `${width}px`;
1223
+ if (typeof width === "string") return width;
1224
+ return void 0;
1225
+ }
1226
+ const OptionsPopover = (props) => {
1227
+ const ref = useRef(null);
1228
+ const { id, children, referenceElement, open, onClose, width, footer } = props;
1229
+ const lastCloseRef = useRef(0);
1230
+ const safeClose = useCallback(() => {
1231
+ const now = Date.now();
1232
+ if (now - lastCloseRef.current < 50) return;
1233
+ lastCloseRef.current = now;
1234
+ onClose();
1235
+ }, [onClose]);
1236
+ useOnClickOutside({
1237
+ targets: [ref.current ?? void 0, referenceElement.current ?? void 0],
1238
+ onClickOutside: safeClose,
1239
+ disable: !open
1240
+ });
1241
+ useEffect(() => {
1242
+ if (open) {
1243
+ ref.current?.showPopover();
1244
+ } else {
1245
+ ref.current?.hidePopover();
1246
+ }
1247
+ }, [open]);
1248
+ useEffect(() => {
1249
+ if (!open) return;
1250
+ const popoverEl = ref.current;
1251
+ if (!popoverEl) return;
1252
+ const handleFocusOut = (e) => {
1253
+ const next = e.relatedTarget;
1254
+ if (!next) {
1255
+ safeClose();
1256
+ return;
1257
+ }
1258
+ if (popoverEl.contains(next)) return;
1259
+ const trigger = referenceElement.current;
1260
+ if (trigger && trigger.contains(next)) return;
1261
+ safeClose();
1262
+ };
1263
+ popoverEl.addEventListener("focusout", handleFocusOut);
1264
+ return () => popoverEl.removeEventListener("focusout", handleFocusOut);
1265
+ }, [open, safeClose, referenceElement]);
1266
+ useEffect(() => {
1267
+ if (!open) return;
1268
+ const popoverEl = ref.current;
1269
+ if (!popoverEl) return;
1270
+ const handleKeyDown = (e) => {
1271
+ if (e.key !== "Escape" || e.defaultPrevented) return;
1272
+ e.preventDefault();
1273
+ referenceElement.current?.focus();
1274
+ safeClose();
1275
+ };
1276
+ popoverEl.addEventListener("keydown", handleKeyDown);
1277
+ return () => popoverEl.removeEventListener("keydown", handleKeyDown);
1278
+ }, [open, safeClose, referenceElement]);
1279
+ const updatePosition = useCallback(async () => {
1280
+ if (!ref.current || !referenceElement.current) return;
1281
+ const position = await computePosition(
1282
+ referenceElement.current,
1283
+ ref.current,
1284
+ {
1285
+ placement: "bottom-start",
1286
+ middleware: [
1287
+ offset(8),
1288
+ autoPlacement({
1289
+ allowedPlacements: [
1290
+ "bottom-start",
1291
+ "bottom-end",
1292
+ "top-start",
1293
+ "top-end"
1294
+ ],
1295
+ padding: 8
1296
+ }),
1297
+ size({
1298
+ padding: 8,
1299
+ apply({ rects, elements, availableHeight, availableWidth }) {
1300
+ const resolved = resolveWidth(width, rects.reference.width);
1301
+ Object.assign(elements.floating.style, {
1302
+ ...resolved != null && { width: resolved },
1303
+ maxWidth: `${Math.max(0, availableWidth)}px`,
1304
+ maxHeight: `${Math.max(0, availableHeight)}px`
1305
+ });
1306
+ }
1307
+ })
1308
+ ]
1309
+ }
1310
+ );
1311
+ ref.current.style.left = `${position.x}px`;
1312
+ ref.current.style.top = `${position.y}px`;
1313
+ }, [ref, referenceElement, width]);
1314
+ useEffect(() => {
1315
+ if (!ref.current || !referenceElement.current || !open) return;
1316
+ const cleanup = autoUpdate(
1317
+ referenceElement.current,
1318
+ ref.current,
1319
+ updatePosition
1320
+ );
1321
+ return () => {
1322
+ cleanup();
1323
+ };
1324
+ }, [referenceElement, ref, updatePosition, open]);
1325
+ return /* @__PURE__ */ jsxs(
1326
+ "div",
1327
+ {
1328
+ ref,
1329
+ id,
1330
+ className: styles$1["options-popover"],
1331
+ popover: "manual",
1332
+ "data-anv": "popover-content",
1333
+ children: [
1334
+ /* @__PURE__ */ jsx("div", { className: styles$1["options-popover-body"], children }),
1335
+ footer ? /* @__PURE__ */ jsx("div", { className: styles$1["options-popover-footer"], children: footer }) : null
1336
+ ]
1337
+ }
1338
+ );
1339
+ };
1340
+
1341
+ const header = "_header_1lxz8_41";
1342
+ const field = "_field_1lxz8_2";
1343
+ const content = "_content_1lxz8_54";
1344
+ const footer = "_footer_1lxz8_60";
1345
+ const styles = {
1346
+ "field-dialog": "_field-dialog_1lxz8_2",
1347
+ "field-dialog-visual-viewport-height": "_field-dialog-visual-viewport-height_1lxz8_21",
1348
+ header: header,
1349
+ field: field,
1350
+ content: content,
1351
+ footer: footer
1352
+ };
1353
+
1354
+ const OptionsDialog = ({
1355
+ id,
1356
+ isOpen,
1357
+ onClose,
1358
+ field,
1359
+ children,
1360
+ title,
1361
+ initialFocusResolver,
1362
+ footer
1363
+ }) => {
1364
+ const elRef = useRef(null);
1365
+ const visualViewportHeightRef = useRef(null);
1366
+ useDialogScrollLock({
1367
+ open: isOpen,
1368
+ id,
1369
+ enableScrollChaining: false,
1370
+ elementRef: elRef
1371
+ });
1372
+ const computeFocus = useCallback(
1373
+ (focusables) => {
1374
+ if (initialFocusResolver) {
1375
+ return initialFocusResolver(focusables);
1376
+ }
1377
+ return focusables.find(
1378
+ (focusable) => focusable.dataset.anv !== "dialog-cancel-button"
1379
+ ) || focusables[0];
1380
+ },
1381
+ [initialFocusResolver]
1382
+ );
1383
+ useEffect(() => {
1384
+ if (isOpen) {
1385
+ elRef.current?.showModal();
1386
+ if (elRef.current) {
1387
+ computeFocus(tabbable(elRef.current)).focus();
1388
+ }
1389
+ } else {
1390
+ elRef.current?.close();
1391
+ }
1392
+ }, [isOpen]);
1393
+ useEffect(() => {
1394
+ if (isOpen) {
1395
+ const handleResize = () => {
1396
+ if (!visualViewportHeightRef.current) return;
1397
+ visualViewportHeightRef.current.style.height = `${window.visualViewport?.height ?? 0}px`;
1398
+ visualViewportHeightRef.current.style.maxHeight = `${window.visualViewport?.height ?? 0}px`;
1399
+ };
1400
+ window.visualViewport?.addEventListener("resize", handleResize);
1401
+ return () => {
1402
+ window.visualViewport?.removeEventListener("resize", handleResize);
1403
+ };
1404
+ }
1405
+ }, [isOpen]);
1406
+ return /* @__PURE__ */ jsx(
1407
+ "dialog",
1408
+ {
1409
+ ref: elRef,
1410
+ id,
1411
+ "data-anv": "field-dialog",
1412
+ className: styles["field-dialog"],
1413
+ onKeyDown: (e) => {
1414
+ if (e.code === "Escape") {
1415
+ e.preventDefault();
1416
+ onClose();
1417
+ }
1418
+ },
1419
+ children: /* @__PURE__ */ jsxs(
1420
+ "div",
1421
+ {
1422
+ className: styles["field-dialog-visual-viewport-height"],
1423
+ ref: visualViewportHeightRef,
1424
+ children: [
1425
+ /* @__PURE__ */ jsxs(Flex, { direction: "row", className: styles["header"], children: [
1426
+ /* @__PURE__ */ jsx(Text, { variant: "headline", el: "h1", children: title }),
1427
+ /* @__PURE__ */ jsx("span", { className: styles["close-container"], children: /* @__PURE__ */ jsx(DialogContext.Provider, { value: { close: onClose }, children: /* @__PURE__ */ jsx(
1428
+ DialogCancelButton,
1429
+ {
1430
+ className: styles["close-button"],
1431
+ size: "small",
1432
+ appearance: "ghost",
1433
+ "aria-label": "Close dialog",
1434
+ icon: SvgClose
1435
+ }
1436
+ ) }) })
1437
+ ] }),
1438
+ field ? /* @__PURE__ */ jsx(Flex, { direction: "column", className: styles["field"], children: field }) : null,
1439
+ /* @__PURE__ */ jsx(Flex, { direction: "column", className: styles["content"], children }),
1440
+ footer ? /* @__PURE__ */ jsx("div", { className: styles["footer"], children: footer }) : null
1441
+ ]
1442
+ }
1443
+ )
1444
+ }
1445
+ );
1446
+ };
1447
+
1448
+ const AddNewItemButton = ({
1449
+ searchText,
1450
+ addItemLabel,
1451
+ onAddNewItem,
1452
+ onCloseMenu
1453
+ }) => {
1454
+ if (!onAddNewItem) return null;
1455
+ const resolvedLabel = typeof addItemLabel === "function" ? addItemLabel(searchText) : addItemLabel ?? "Add new item";
1456
+ return /* @__PURE__ */ jsx(
1457
+ Button,
1458
+ {
1459
+ appearance: "secondary",
1460
+ size: "small",
1461
+ icon: { before: SvgAdd },
1462
+ onMouseDown: (e) => e.preventDefault(),
1463
+ onClick: () => {
1464
+ onCloseMenu?.();
1465
+ onAddNewItem(searchText);
1466
+ },
1467
+ style: { width: "100%" },
1468
+ children: resolvedLabel
1469
+ }
1470
+ );
1471
+ };
1472
+ AddNewItemButton.displayName = "AddNewItemButton";
1473
+
1435
1474
  function detectCoarsePointer() {
1436
1475
  if (typeof window === "undefined" || !window.matchMedia) {
1437
1476
  return false;
@@ -1574,4 +1613,4 @@ const sortByGroup = (options, groupSorter) => {
1574
1613
  };
1575
1614
 
1576
1615
  export { AddNewItemButton as A, OptionsPanel as O, VirtualizedOptionsPanel as V, useSelectOrchestration as a, useProcessedOptions as b, buildSelectItems as c, useDebouncedCallback as d, OptionsDialog as e, OptionsPopover as f, defaultSyncFilter as g, toSelectItem as h, sortByGroup as s, toSyncFilterFn as t, useAdaptiveView as u };
1577
- //# sourceMappingURL=syncFilterUtils-Dpp7gt05.js.map
1616
+ //# sourceMappingURL=syncFilterUtils-BEKek64h.js.map