@servicetitan/anvil2 3.0.4 → 3.0.6

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 (240) hide show
  1. package/CHANGELOG.md +28 -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/{AnvilProvider-JXEbeQjR.js → AnvilProvider-J9DjoJiB.js} +13 -2
  9. package/dist/AnvilProvider-J9DjoJiB.js.map +1 -0
  10. package/dist/AnvilProvider.js +1 -1
  11. package/dist/{Breadcrumbs-DTi5RqT-.js → Breadcrumbs-Bzxbdu-S.js} +2 -2
  12. package/dist/{Breadcrumbs-DTi5RqT-.js.map → Breadcrumbs-Bzxbdu-S.js.map} +1 -1
  13. package/dist/Breadcrumbs.js +1 -1
  14. package/dist/{Calendar-ddGQKSGU.js → Calendar-BYNFAWpZ.js} +2 -2
  15. package/dist/{Calendar-ddGQKSGU.js.map → Calendar-BYNFAWpZ.js.map} +1 -1
  16. package/dist/{Calendar-CpCRxcue.js → Calendar-DS5eWpGF.js} +2 -2
  17. package/dist/{Calendar-CpCRxcue.js.map → Calendar-DS5eWpGF.js.map} +1 -1
  18. package/dist/Calendar.js +2 -2
  19. package/dist/{Checkbox-CJ8eYejR.js → Checkbox-BB3BDJsK.js} +4 -4
  20. package/dist/{Checkbox-CJ8eYejR.js.map → Checkbox-BB3BDJsK.js.map} +1 -1
  21. package/dist/{Checkbox-CVidv1sO.js → Checkbox-BeIzx_ZX.js} +2 -2
  22. package/dist/{Checkbox-CVidv1sO.js.map → Checkbox-BeIzx_ZX.js.map} +1 -1
  23. package/dist/Checkbox.css +40 -37
  24. package/dist/Checkbox.js +1 -1
  25. package/dist/Checkbox.module-CURNX27M.js +28 -0
  26. package/dist/Checkbox.module-CURNX27M.js.map +1 -0
  27. package/dist/{Chip-0-Yx9SGX.js → Chip-D2k5X_wX.js} +2 -2
  28. package/dist/{Chip-0-Yx9SGX.js.map → Chip-D2k5X_wX.js.map} +1 -1
  29. package/dist/Chip.js +1 -1
  30. package/dist/{Combobox-C9-3tlcP.js → Combobox-Cp7M4-4r.js} +5 -5
  31. package/dist/{Combobox-C9-3tlcP.js.map → Combobox-Cp7M4-4r.js.map} +1 -1
  32. package/dist/Combobox.js +1 -1
  33. package/dist/{DataTable-Dr5A6RDe.js → DataTable-0kOuVgSB.js} +8 -8
  34. package/dist/{DataTable-Dr5A6RDe.js.map → DataTable-0kOuVgSB.js.map} +1 -1
  35. package/dist/{DateFieldRange-CO2C776E.js → DateFieldRange-Be_I9GTp.js} +4 -4
  36. package/dist/{DateFieldRange-CO2C776E.js.map → DateFieldRange-Be_I9GTp.js.map} +1 -1
  37. package/dist/DateFieldRange.js +1 -1
  38. package/dist/{DateFieldSingle-DjmHpn1y.js → DateFieldSingle-CsrsY9i8.js} +4 -4
  39. package/dist/{DateFieldSingle-DjmHpn1y.js.map → DateFieldSingle-CsrsY9i8.js.map} +1 -1
  40. package/dist/DateFieldSingle.js +1 -1
  41. package/dist/{DateFieldYearless-CCJAopYd.js → DateFieldYearless-m_Hl2gMY.js} +5 -5
  42. package/dist/{DateFieldYearless-CCJAopYd.js.map → DateFieldYearless-m_Hl2gMY.js.map} +1 -1
  43. package/dist/DateFieldYearless.js +1 -1
  44. package/dist/{DateFieldYearlessRange-BUv1mGJg.js → DateFieldYearlessRange-DNqSTBDr.js} +4 -4
  45. package/dist/{DateFieldYearlessRange-BUv1mGJg.js.map → DateFieldYearlessRange-DNqSTBDr.js.map} +1 -1
  46. package/dist/DateFieldYearlessRange.js +1 -1
  47. package/dist/{DaysOfTheWeek-BihTU2No.js → DaysOfTheWeek-D58z_eF3.js} +10 -9
  48. package/dist/{DaysOfTheWeek-BihTU2No.js.map → DaysOfTheWeek-D58z_eF3.js.map} +1 -1
  49. package/dist/DaysOfTheWeek.css +10 -6
  50. package/dist/DaysOfTheWeek.js +1 -1
  51. package/dist/{Dialog-BZTo4hbX.js → Dialog-CD-SDfPT.js} +22 -20
  52. package/dist/{Dialog-BZTo4hbX.js.map → Dialog-CD-SDfPT.js.map} +1 -1
  53. package/dist/Dialog.css +43 -29
  54. package/dist/Dialog.js +1 -1
  55. package/dist/{Drawer-Dg35inxH.js → Drawer-s2y0xcgV.js} +3 -3
  56. package/dist/{Drawer-Dg35inxH.js.map → Drawer-s2y0xcgV.js.map} +1 -1
  57. package/dist/Drawer.js +1 -1
  58. package/dist/DrillDown.js +1 -1
  59. package/dist/{EditCard-BfNq-T8n.js → EditCard-B25pj0Jx.js} +2 -2
  60. package/dist/{EditCard-BfNq-T8n.js.map → EditCard-B25pj0Jx.js.map} +1 -1
  61. package/dist/EditCard.js +1 -1
  62. package/dist/{FieldLabel-xV6EdVwo.js → FieldLabel-D1qPAGtB.js} +3 -3
  63. package/dist/{FieldLabel-xV6EdVwo.js.map → FieldLabel-D1qPAGtB.js.map} +1 -1
  64. package/dist/FieldLabel.js +1 -1
  65. package/dist/{FilterBar-BUfajdQU.js → FilterBar-yysyZ-t1.js} +378 -23
  66. package/dist/FilterBar-yysyZ-t1.js.map +1 -0
  67. package/dist/FilterBar.js +1 -1
  68. package/dist/{InputMask-8rI6UIb8.js → InputMask-BDl09V4u.js} +3 -3
  69. package/dist/{InputMask-8rI6UIb8.js.map → InputMask-BDl09V4u.js.map} +1 -1
  70. package/dist/InputMask.js +1 -1
  71. package/dist/{ListView-CIa981KJ.js → ListView-CcRRh1ap.js} +2 -2
  72. package/dist/{ListView-CIa981KJ.js.map → ListView-CcRRh1ap.js.map} +1 -1
  73. package/dist/ListView.js +1 -1
  74. package/dist/{Listbox-DRznPBCr.js → Listbox-CvQHBFWb.js} +2 -2
  75. package/dist/{Listbox-DRznPBCr.js.map → Listbox-CvQHBFWb.js.map} +1 -1
  76. package/dist/Listbox.js +1 -1
  77. package/dist/MultiSelectField.js +1 -1
  78. package/dist/{MultiSelectFieldSync-DXIBQABc.js → MultiSelectFieldSync-BMVROOjy.js} +58 -28
  79. package/dist/MultiSelectFieldSync-BMVROOjy.js.map +1 -0
  80. package/dist/MultiSelectFieldSync.css +63 -57
  81. package/dist/MultiSelectMenu.js +1 -1
  82. package/dist/{MultiSelectMenuSync-CCINebbr.js → MultiSelectMenuSync-BNPp_2Bm.js} +20 -7
  83. package/dist/MultiSelectMenuSync-BNPp_2Bm.js.map +1 -0
  84. package/dist/{NumberField-D7YYo4Rl.js → NumberField-BymFZhIJ.js} +4 -4
  85. package/dist/{NumberField-D7YYo4Rl.js.map → NumberField-BymFZhIJ.js.map} +1 -1
  86. package/dist/NumberField.js +1 -1
  87. package/dist/{Page-cELP59Hm.js → Page-SBy27-Wv.js} +8 -8
  88. package/dist/{Page-cELP59Hm.js.map → Page-SBy27-Wv.js.map} +1 -1
  89. package/dist/Page.js +1 -1
  90. package/dist/{Pagination-DTN4FovY.js → Pagination-Cm8-K6VH.js} +2 -2
  91. package/dist/{Pagination-DTN4FovY.js.map → Pagination-Cm8-K6VH.js.map} +1 -1
  92. package/dist/Pagination.js +1 -1
  93. package/dist/{Popover-B3Vw4lDW.js → Popover-8mTJoMy7.js} +2 -2
  94. package/dist/{Popover-B3Vw4lDW.js.map → Popover-8mTJoMy7.js.map} +1 -1
  95. package/dist/Popover.js +1 -1
  96. package/dist/{ProgressBar-kzCNhaCO.js → ProgressBar-C1CkQHV5.js} +2 -2
  97. package/dist/{ProgressBar-kzCNhaCO.js.map → ProgressBar-C1CkQHV5.js.map} +1 -1
  98. package/dist/ProgressBar.js +1 -1
  99. package/dist/{Radio-CSBetBV6.js → Radio-BcHMk8dD.js} +2 -2
  100. package/dist/{Radio-CSBetBV6.js.map → Radio-BcHMk8dD.js.map} +1 -1
  101. package/dist/{Radio-BDE1xGel.js → Radio-D5WyQN2i.js} +16 -16
  102. package/dist/{Radio-BDE1xGel.js.map → Radio-D5WyQN2i.js.map} +1 -1
  103. package/dist/Radio.css +40 -37
  104. package/dist/Radio.js +1 -1
  105. package/dist/{RichTextEditor-BFFXj0zS.js → RichTextEditor-DstVbYch.js} +8 -8
  106. package/dist/{RichTextEditor-BFFXj0zS.js.map → RichTextEditor-DstVbYch.js.map} +1 -1
  107. package/dist/RichTextEditor.js +1 -1
  108. package/dist/{SearchField-Dl7sh_M4.js → SearchField-3tUPU8hH.js} +2 -2
  109. package/dist/{SearchField-Dl7sh_M4.js.map → SearchField-3tUPU8hH.js.map} +1 -1
  110. package/dist/{SearchField-CO9BHCYB.js → SearchField-BcQZ5e0x.js} +2 -2
  111. package/dist/{SearchField-CO9BHCYB.js.map → SearchField-BcQZ5e0x.js.map} +1 -1
  112. package/dist/SearchField.js +1 -1
  113. package/dist/{SelectCard-CLCLIBoq.js → SelectCard-BN-LI14f.js} +3 -3
  114. package/dist/{SelectCard-CLCLIBoq.js.map → SelectCard-BN-LI14f.js.map} +1 -1
  115. package/dist/SelectCard.js +1 -1
  116. package/dist/SelectField.js +1 -1
  117. package/dist/{SelectFieldLabel-Db9w6O6r.js → SelectFieldLabel-UbQT7fDD.js} +2 -2
  118. package/dist/{SelectFieldLabel-Db9w6O6r.js.map → SelectFieldLabel-UbQT7fDD.js.map} +1 -1
  119. package/dist/{SelectFieldSync-DqIDTKqt.js → SelectFieldSync-BeDYbJ2M.js} +41 -11
  120. package/dist/SelectFieldSync-BeDYbJ2M.js.map +1 -0
  121. package/dist/SelectMenu.js +1 -1
  122. package/dist/{SelectMenuSync-DYPEX5wc.js → SelectMenuSync-C-PFemsQ.js} +20 -7
  123. package/dist/SelectMenuSync-C-PFemsQ.js.map +1 -0
  124. package/dist/{SelectOptions-DuMbmJjh.js → SelectOptions-Tr11Ckqw.js} +2 -2
  125. package/dist/{SelectOptions-DuMbmJjh.js.map → SelectOptions-Tr11Ckqw.js.map} +1 -1
  126. package/dist/{SelectTrigger-RiRjgwXd.js → SelectTrigger-DTz7V-Xx.js} +2 -2
  127. package/dist/{SelectTrigger-RiRjgwXd.js.map → SelectTrigger-DTz7V-Xx.js.map} +1 -1
  128. package/dist/SelectTrigger.js +1 -1
  129. package/dist/{SelectTriggerBase-CWxP7nPA.js → SelectTriggerBase-Ds6I7Qbr.js} +4 -4
  130. package/dist/{SelectTriggerBase-CWxP7nPA.js.map → SelectTriggerBase-Ds6I7Qbr.js.map} +1 -1
  131. package/dist/SelectTriggerBase.css +48 -42
  132. package/dist/SelectTriggerBase.module-DsPvTQE7.js +37 -0
  133. package/dist/SelectTriggerBase.module-DsPvTQE7.js.map +1 -0
  134. package/dist/{Switch-p4yVJTNy.js → Switch-onmiKoRd.js} +2 -2
  135. package/dist/{Switch-p4yVJTNy.js.map → Switch-onmiKoRd.js.map} +1 -1
  136. package/dist/Switch.js +1 -1
  137. package/dist/Table.js +1 -1
  138. package/dist/{Text-BgPuOXJM.js → Text-BTzgTpqu.js} +2 -2
  139. package/dist/{Text-BgPuOXJM.js.map → Text-BTzgTpqu.js.map} +1 -1
  140. package/dist/Text.js +1 -1
  141. package/dist/{TextField-DzuM8vvd.js → TextField-WTYZJlX3.js} +2 -2
  142. package/dist/{TextField-DzuM8vvd.js.map → TextField-WTYZJlX3.js.map} +1 -1
  143. package/dist/{TextField-D7NyaKId.js → TextField-rVfctM1E.js} +4 -4
  144. package/dist/{TextField-D7NyaKId.js.map → TextField-rVfctM1E.js.map} +1 -1
  145. package/dist/TextField.css +22 -58
  146. package/dist/TextField.js +1 -1
  147. package/dist/TextField.module-C8FsjTpx.js +23 -0
  148. package/dist/TextField.module-C8FsjTpx.js.map +1 -0
  149. package/dist/{Textarea-Dks15Zt3.js → Textarea-PXjppEQ6.js} +3 -3
  150. package/dist/{Textarea-Dks15Zt3.js.map → Textarea-PXjppEQ6.js.map} +1 -1
  151. package/dist/Textarea.js +1 -1
  152. package/dist/{TimeField-lN_5V6-X.js → TimeField-BJPXIv6W.js} +4 -4
  153. package/dist/{TimeField-lN_5V6-X.js.map → TimeField-BJPXIv6W.js.map} +1 -1
  154. package/dist/TimeField.js +1 -1
  155. package/dist/Toast.js +2 -2
  156. package/dist/{Toaster-3GI_qJxj.js → Toaster-CoChsMD0.js} +3 -3
  157. package/dist/{Toaster-3GI_qJxj.js.map → Toaster-CoChsMD0.js.map} +1 -1
  158. package/dist/{Toaster-2pAMQXRk.js → Toaster-DXLc86VD.js} +2 -2
  159. package/dist/{Toaster-2pAMQXRk.js.map → Toaster-DXLc86VD.js.map} +1 -1
  160. package/dist/{Toolbar-B0WHsX9W.js → Toolbar-BUd9eNkq.js} +6 -6
  161. package/dist/{Toolbar-B0WHsX9W.js.map → Toolbar-BUd9eNkq.js.map} +1 -1
  162. package/dist/{Toolbar-BRQpvj9U.js → Toolbar-Bt3kShho.js} +4 -4
  163. package/dist/{Toolbar-BRQpvj9U.js.map → Toolbar-Bt3kShho.js.map} +1 -1
  164. package/dist/Toolbar.js +2 -2
  165. package/dist/{ToolbarButtonToggle-xvMWRxzC.js → ToolbarButtonToggle-C06cqJ6F.js} +2 -2
  166. package/dist/{ToolbarButtonToggle-xvMWRxzC.js.map → ToolbarButtonToggle-C06cqJ6F.js.map} +1 -1
  167. package/dist/{Tooltip-DGo3OWqL.js → Tooltip-yr1D06BE.js} +5 -5
  168. package/dist/{Tooltip-DGo3OWqL.js.map → Tooltip-yr1D06BE.js.map} +1 -1
  169. package/dist/Tooltip.css +6 -7
  170. package/dist/Tooltip.js +1 -1
  171. package/dist/{YearlessDateInputWithPicker-BhbR5F22.js → YearlessDateInputWithPicker-BIcVgz-J.js} +3 -3
  172. package/dist/{YearlessDateInputWithPicker-BhbR5F22.js.map → YearlessDateInputWithPicker-BIcVgz-J.js.map} +1 -1
  173. package/dist/assets/icons/st/batch.svg +1 -1
  174. package/dist/assets/icons/st/call.svg +1 -1
  175. package/dist/assets/icons/st/customer.svg +1 -1
  176. package/dist/assets/icons/st/enterprise_hub.svg +1 -1
  177. package/dist/assets/icons/st/equipment.svg +1 -1
  178. package/dist/assets/icons/st/estimate.svg +1 -1
  179. package/dist/assets/icons/st/full_fluid.svg +1 -1
  180. package/dist/assets/icons/st/gnav_titan_advisor_active.svg +1 -1
  181. package/dist/assets/icons/st/gnav_titan_advisor_inactive.svg +1 -1
  182. package/dist/assets/icons/st/job.svg +1 -1
  183. package/dist/assets/icons/st/leads.svg +1 -1
  184. package/dist/assets/icons/st/proposal.svg +1 -1
  185. package/dist/assets/icons/st/roofing.svg +1 -1
  186. package/dist/beta.js +12 -12
  187. package/dist/{index-B6Demgr-.js → index-DVYRUKtW.js} +2 -2
  188. package/dist/{index-B6Demgr-.js.map → index-DVYRUKtW.js.map} +1 -1
  189. package/dist/index.js +39 -39
  190. package/dist/src/beta/components/FilterBar/FilterButton.d.ts +6 -3
  191. package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +37 -0
  192. package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
  193. package/dist/src/beta/components/FilterBar/internal/types.d.ts +40 -2
  194. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +29 -0
  195. package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +2 -0
  196. package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +2 -1
  197. package/dist/src/beta/components/MultiSelectField/MultiSelectField.d.ts +1 -0
  198. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  199. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  200. package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +2 -1
  201. package/dist/src/beta/components/MultiSelectField/types.d.ts +2 -1
  202. package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
  203. package/dist/src/beta/components/MultiSelectMenu/types.d.ts +2 -1
  204. package/dist/src/beta/components/SelectField/SelectField.d.ts +21 -0
  205. package/dist/src/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  206. package/dist/src/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  207. package/dist/src/beta/components/SelectField/types.d.ts +2 -1
  208. package/dist/src/beta/components/SelectMenu/SelectMenu.d.ts +1 -0
  209. package/dist/src/beta/components/SelectMenu/types.d.ts +2 -1
  210. package/dist/src/internal/components/AddNewItemButton.d.ts +40 -0
  211. package/dist/src/internal/components/OptionsDialog/OptionsDialog.d.ts +3 -1
  212. package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +13 -1
  213. package/dist/src/internal/types/addNewItemTypes.d.ts +12 -0
  214. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -1
  215. package/dist/{stripInlineMarkdown-D_eHogvh.js → stripInlineMarkdown-C5DNxxwf.js} +2 -2
  216. package/dist/{stripInlineMarkdown-D_eHogvh.js.map → stripInlineMarkdown-C5DNxxwf.js.map} +1 -1
  217. package/dist/{syncFilterUtils-hlw11Ud8.js → syncFilterUtils-COxBIkt6.js} +271 -199
  218. package/dist/syncFilterUtils-COxBIkt6.js.map +1 -0
  219. package/dist/syncFilterUtils.css +44 -23
  220. package/dist/{useDrilldown-bIRsbg1m.js → useDrilldown-KZ9rRsXQ.js} +2 -2
  221. package/dist/{useDrilldown-bIRsbg1m.js.map → useDrilldown-KZ9rRsXQ.js.map} +1 -1
  222. package/dist/{useMenuInteraction-BwZ2ORo9.js → useMenuInteraction-C4RU5Fdq.js} +1 -5
  223. package/dist/useMenuInteraction-C4RU5Fdq.js.map +1 -0
  224. package/dist/{useToggleSelection-VwlBkdZo.js → useToggleSelection-B5PnTuT2.js} +2 -2
  225. package/dist/{useToggleSelection-VwlBkdZo.js.map → useToggleSelection-B5PnTuT2.js.map} +1 -1
  226. package/package.json +1 -1
  227. package/dist/AnvilProvider-JXEbeQjR.js.map +0 -1
  228. package/dist/Checkbox.module-DVbXNsaN.js +0 -28
  229. package/dist/Checkbox.module-DVbXNsaN.js.map +0 -1
  230. package/dist/FilterBar-BUfajdQU.js.map +0 -1
  231. package/dist/MultiSelectFieldSync-DXIBQABc.js.map +0 -1
  232. package/dist/MultiSelectMenuSync-CCINebbr.js.map +0 -1
  233. package/dist/SelectFieldSync-DqIDTKqt.js.map +0 -1
  234. package/dist/SelectMenuSync-DYPEX5wc.js.map +0 -1
  235. package/dist/SelectTriggerBase.module-CCLOnHm1.js +0 -37
  236. package/dist/SelectTriggerBase.module-CCLOnHm1.js.map +0 -1
  237. package/dist/TextField.module-DkZwywjf.js +0 -23
  238. package/dist/TextField.module-DkZwywjf.js.map +0 -1
  239. package/dist/syncFilterUtils-hlw11Ud8.js.map +0 -1
  240. package/dist/useMenuInteraction-BwZ2ORo9.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,73 +1,73 @@
1
1
  export { DndSort, DndSortCard, DndSortZone } from './DndSort.js';
2
- export { A as Alert } from './Alert-BTesdKK7.js';
3
- export { A as AiMark } from './AiMark-DjOf60tj.js';
2
+ export { A as Alert } from './Alert-BNH0UD2s.js';
3
+ export { A as AiMark } from './AiMark-BXL0sWIV.js';
4
4
  export { A as Announcement } from './Announcement-CgTqDU8A.js';
5
5
  export { A as Avatar } from './Avatar-B_cRQqKR.js';
6
6
  export { A as AvatarGroup } from './Avatar-FDHyqiCy.js';
7
7
  export { B as Badge } from './Badge-DtUI2AEk.js';
8
- export { B as Breadcrumbs } from './Breadcrumbs-DTi5RqT-.js';
8
+ export { B as Breadcrumbs } from './Breadcrumbs-Bzxbdu-S.js';
9
9
  export { B as Button } from './Button-C_V2xQAs.js';
10
10
  export { B as ButtonCompound } from './ButtonCompound-BQb2gfAl.js';
11
11
  export { B as ButtonLink } from './ButtonLink-UhLks0vM.js';
12
12
  export { B as ButtonToggle } from './ButtonToggle-jnDMPSyK.js';
13
- export { a as Calendar, g as CalendarMonth, f as CalendarMonthButton, e as CalendarNext, b as CalendarNow, d as CalendarPrev, c as CalendarYearButton } from './Calendar-ddGQKSGU.js';
13
+ export { a as Calendar, g as CalendarMonth, f as CalendarMonthButton, e as CalendarNext, b as CalendarNow, d as CalendarPrev, c as CalendarYearButton } from './Calendar-BYNFAWpZ.js';
14
14
  export { C as Card } from './Card-fBqg853U.js';
15
- export { C as Checkbox } from './Checkbox-CVidv1sO.js';
16
- export { C as Chip } from './Chip-0-Yx9SGX.js';
17
- export { C as Combobox, a as ComboboxElement, c as ComboboxList, b as ComboboxSelect } from './Combobox-C9-3tlcP.js';
15
+ export { C as Checkbox } from './Checkbox-BeIzx_ZX.js';
16
+ export { C as Chip } from './Chip-D2k5X_wX.js';
17
+ export { C as Combobox, a as ComboboxElement, c as ComboboxList, b as ComboboxSelect } from './Combobox-Cp7M4-4r.js';
18
18
  export { u as useInfiniteCombobox } from './useInfiniteCombobox-WcRgC9p6.js';
19
- export { D as DateFieldRange } from './DateFieldRange-CO2C776E.js';
20
- export { D as DateFieldSingle } from './DateFieldSingle-DjmHpn1y.js';
21
- export { D as DateFieldYearless } from './DateFieldYearless-CCJAopYd.js';
22
- export { D as DateFieldYearlessRange } from './DateFieldYearlessRange-BUv1mGJg.js';
23
- export { D as DaysOfTheWeek } from './DaysOfTheWeek-BihTU2No.js';
19
+ export { D as DateFieldRange } from './DateFieldRange-Be_I9GTp.js';
20
+ export { D as DateFieldSingle } from './DateFieldSingle-CsrsY9i8.js';
21
+ export { D as DateFieldYearless } from './DateFieldYearless-m_Hl2gMY.js';
22
+ export { D as DateFieldYearlessRange } from './DateFieldYearlessRange-DNqSTBDr.js';
23
+ export { D as DaysOfTheWeek } from './DaysOfTheWeek-D58z_eF3.js';
24
24
  export { D as Details } from './Details-s2pVu-YL.js';
25
- export { D as Dialog } from './Dialog-BZTo4hbX.js';
25
+ export { D as Dialog } from './Dialog-CD-SDfPT.js';
26
26
  export { D as Divider } from './Divider-CxtTyw8_.js';
27
27
  export { D as Dnd } from './index-CukEaIHB.js';
28
- export { D as Drawer } from './Drawer-Dg35inxH.js';
29
- export { D as DrillDown, b as DrillDownContent, c as DrillDownFooter, a as DrillDownHeader, d as DrillDownNextButton, e as DrillDownPrevButton, u as useDrillDown } from './useDrilldown-bIRsbg1m.js';
30
- export { E as EditCard } from './EditCard-BfNq-T8n.js';
31
- export { F as FieldLabel } from './FieldLabel-xV6EdVwo.js';
28
+ export { D as Drawer } from './Drawer-s2y0xcgV.js';
29
+ export { D as DrillDown, b as DrillDownContent, c as DrillDownFooter, a as DrillDownHeader, d as DrillDownNextButton, e as DrillDownPrevButton, u as useDrillDown } from './useDrilldown-KZ9rRsXQ.js';
30
+ export { E as EditCard } from './EditCard-B25pj0Jx.js';
31
+ export { F as FieldLabel } from './FieldLabel-D1qPAGtB.js';
32
32
  export { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
33
33
  export { F as FieldMessage } from './FieldMessage-mTGdycSA.js';
34
34
  export { F as Flex } from './Flex-_orhvoxS.js';
35
35
  export { G as Grid } from './Grid-BAN8WD_V.js';
36
36
  export { I as Icon } from './Icon-feeG7gXA.js';
37
- export { I as InputMask } from './InputMask-8rI6UIb8.js';
37
+ export { I as InputMask } from './InputMask-BDl09V4u.js';
38
38
  export { L as Layout, b as LayoutElement, a as LayoutItem } from './Layout-C2Q2hyLG.js';
39
39
  export { L as Link, u as useLinkStyles } from './Link-D8A_WT94.js';
40
40
  export { L as LinkButton } from './LinkButton-DxYsWiXB.js';
41
41
  export { L as List } from './List-GPS-GqH7.js';
42
- export { L as Listbox } from './Listbox-DRznPBCr.js';
43
- export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-CIa981KJ.js';
42
+ export { L as Listbox } from './Listbox-CvQHBFWb.js';
43
+ export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-CcRRh1ap.js';
44
44
  export { M as Menu } from './Menu-W0c-xKdX.js';
45
- export { N as NumberField } from './NumberField-D7YYo4Rl.js';
45
+ export { N as NumberField } from './NumberField-BymFZhIJ.js';
46
46
  export { Overflow, OverflowText } from './Overflow.js';
47
- export { P as Page } from './Page-cELP59Hm.js';
48
- export { P as Pagination } from './Pagination-DTN4FovY.js';
49
- export { P as Popover } from './Popover-B3Vw4lDW.js';
50
- export { P as ProgressBar } from './ProgressBar-kzCNhaCO.js';
51
- export { R as Radio } from './Radio-CSBetBV6.js';
52
- export { S as SearchField } from './SearchField-Dl7sh_M4.js';
47
+ export { P as Page } from './Page-SBy27-Wv.js';
48
+ export { P as Pagination } from './Pagination-Cm8-K6VH.js';
49
+ export { P as Popover } from './Popover-8mTJoMy7.js';
50
+ export { P as ProgressBar } from './ProgressBar-C1CkQHV5.js';
51
+ export { R as Radio } from './Radio-BcHMk8dD.js';
52
+ export { S as SearchField } from './SearchField-3tUPU8hH.js';
53
53
  export { S as SegmentedControl, a as SegmentedControlSegment } from './SegmentedControl-PwLdTdrd.js';
54
- export { S as SelectCard } from './SelectCard-CLCLIBoq.js';
55
- export { S as SelectTrigger } from './SelectTrigger-RiRjgwXd.js';
54
+ export { S as SelectCard } from './SelectCard-BN-LI14f.js';
55
+ export { S as SelectTrigger } from './SelectTrigger-DTz7V-Xx.js';
56
56
  export { S as SideNav } from './SideNav-JzIIZSK_.js';
57
57
  export { Skeleton, SkeletonCircle, SkeletonPill, SkeletonRectangle, SkeletonText } from './Skeleton.js';
58
58
  export { S as Spinner } from './Spinner-B7tTWcP6.js';
59
59
  export { S as SrOnly } from './SrOnly-pnf8ajnh.js';
60
60
  export { S as Stepper } from './Stepper-lYywxPU5.js';
61
- export { S as Switch } from './Switch-p4yVJTNy.js';
61
+ export { S as Switch } from './Switch-onmiKoRd.js';
62
62
  export { T as Tab } from './Tab-CIY6BO2e.js';
63
- export { T as Text } from './Text-BgPuOXJM.js';
64
- export { T as Textarea } from './Textarea-Dks15Zt3.js';
65
- export { T as TextField } from './TextField-DzuM8vvd.js';
66
- export { T as TimeField } from './TimeField-lN_5V6-X.js';
67
- export { T as Toaster } from './Toaster-2pAMQXRk.js';
68
- export { t as toast } from './Toaster-3GI_qJxj.js';
69
- export { T as Toolbar } from './Toolbar-BRQpvj9U.js';
70
- export { T as Tooltip } from './Tooltip-DGo3OWqL.js';
63
+ export { T as Text } from './Text-BTzgTpqu.js';
64
+ export { T as Textarea } from './Textarea-PXjppEQ6.js';
65
+ export { T as TextField } from './TextField-WTYZJlX3.js';
66
+ export { T as TimeField } from './TimeField-BJPXIv6W.js';
67
+ export { T as Toaster } from './Toaster-DXLc86VD.js';
68
+ export { t as toast } from './Toaster-CoChsMD0.js';
69
+ export { T as Toolbar } from './Toolbar-Bt3kShho.js';
70
+ export { T as Tooltip } from './Tooltip-yr1D06BE.js';
71
71
  export { u as useAccessibleColor } from './useAccessibleColor-BYKjkGRg.js';
72
72
  export { u as useBreakpoint } from './useBreakpoint-CeaUyHxh.js';
73
73
  export { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
@@ -75,7 +75,7 @@ export { u as usePrefersColorScheme } from './usePrefersColorScheme-_hT7dK7_.js'
75
75
  export { u as usePrefersReducedMotion } from './usePrefersReducedMotion-DR9B_D6w.js';
76
76
  export { u as useSwipe } from './useSwipe-Cp-CJxLU.js';
77
77
  export { useTrackingId } from './useTrackingId.js';
78
- export { A as AnvilProvider, a as AnvilProviderContext } from './AnvilProvider-JXEbeQjR.js';
78
+ export { A as AnvilProvider, a as AnvilProviderContext } from './AnvilProvider-J9DjoJiB.js';
79
79
  export { L as LocalizationProvider } from './LocalizationProvider-CO8fQGqs.js';
80
80
  export { L as LocalizationContext, u as useLocalizationContext } from './LocalizationContext-UsmB5mnR.js';
81
81
  export { P as PortalProvider, a as PortalProviderContext } from './PortalProvider-Cj_y3gbC.js';
@@ -14,14 +14,17 @@ interface FilterButtonProps {
14
14
  /**
15
15
  * FilterButton component provides a popover interface for filter selection.
16
16
  * Handles both controlled and uncontrolled filter updates.
17
- * Built into FilterGroup for single-select, multi-select, date, and date range filter rendering.
17
+ * Built into FilterGroup for single-select, multi-select, date, date range,
18
+ * and date list filter rendering.
18
19
  *
19
20
  * Features:
20
21
  * - Maintains draft state for controlled filters
21
22
  * - Updates immediately for uncontrolled filters
22
- * - Provides Apply and Cancel actions in controlled mode
23
+ * - Provides Apply and Cancel actions in controlled mode (except dateList,
24
+ * which always commits and closes on selection)
23
25
  * - Supports keyboard navigation and accessibility
24
- * - Renders custom, single-select, multi-select, date, and date range filter types
26
+ * - Renders custom, single-select, multi-select, date, date range, and date
27
+ * list filter types
25
28
  * - Integrates with FilterGroup context for state management
26
29
  * - Displays appropriate icons for date-based filters
27
30
  * - Shows formatted date values in button labels
@@ -0,0 +1,37 @@
1
+ import { DateFieldSingleProps } from '../../../components/DateFieldSingle';
2
+ import { DateListFilter, DateListLibraryOptionId, DateListOption } from './internal/types';
3
+ interface DateListDialogProps {
4
+ /** Library option whose dialog is open; null when closed. */
5
+ libraryId: DateListLibraryOptionId | null;
6
+ /** Parent filter id; used to derive unique DOM ids for the synthetic date pickers inside the dialog. */
7
+ parentFilterId: string;
8
+ /** Pre-seed value when re-opening an already-selected library option. */
9
+ initialValue?: string | {
10
+ startDate: string;
11
+ endDate: string;
12
+ };
13
+ mode?: DateFieldSingleProps["mode"];
14
+ /** Primary CTA label. "Apply" in popover, "Save" in drawer. */
15
+ dialogCtaLabel: "Apply" | "Save";
16
+ onCommit: (option: DateListOption) => void;
17
+ onCancel: () => void;
18
+ }
19
+ /**
20
+ * Dialog shared by FilterDateList (popover) and FilterDrawer's dateList case.
21
+ * Renders a date or range picker for the chosen library option and commits
22
+ * up on Apply/Save.
23
+ */
24
+ export declare const DateListDialog: ({ libraryId, parentFilterId, initialValue, mode, dialogCtaLabel, onCommit, onCancel, }: DateListDialogProps) => import("react/jsx-runtime").JSX.Element;
25
+ interface FilterDateListProps {
26
+ filter: DateListFilter;
27
+ draftValue: DateListOption | undefined;
28
+ onDraftChange: (value: DateListOption | undefined) => void;
29
+ /** Primary CTA label for the library-option dialog. */
30
+ dialogCtaLabel: "Apply" | "Save";
31
+ }
32
+ /**
33
+ * FilterDateList renders the dateList filter's option list inside a popover.
34
+ * Consumer options commit immediately; library options open a Dialog.
35
+ */
36
+ export declare const FilterDateList: ({ filter, draftValue, onDraftChange, dialogCtaLabel, }: FilterDateListProps) => import("react/jsx-runtime").JSX.Element;
37
+ export {};
@@ -1,3 +1,3 @@
1
1
  export * from './FilterBar';
2
2
  export { FilterBar as default, type FilterBarProps } from './FilterBar';
3
- export { type Filter, type BooleanFilter, type CustomFilter, type SingleSelectFilter, type MultiSelectFilter, type DateFilter, type DateRangeFilter, type FilterValue, type FilterRenderProps, type BaseFilter, } from './internal/types';
3
+ export { type Filter, type BooleanFilter, type CustomFilter, type SingleSelectFilter, type MultiSelectFilter, type DateFilter, type DateRangeFilter, type DateListFilter, type DateListOption, type DateListLibraryOptionId, type FilterValue, type FilterRenderProps, type BaseFilter, } from './internal/types';
@@ -121,10 +121,48 @@ export type DateFilter = BaseFilter & Pick<DateFieldSingleProps, "value" | "mode
121
121
  export type DateRangeFilter = BaseFilter & Pick<DateFieldRangeProps, "value" | "mode"> & {
122
122
  type: "dateRange";
123
123
  };
124
+ /**
125
+ * Pre-defined library options the dateList filter always renders below the
126
+ * consumer's options. Each opens a Dialog with a date picker. Callers must
127
+ * not use these ids in their own `options`.
128
+ */
129
+ export type DateListLibraryOptionId = "on" | "before" | "after" | "customRange";
130
+ /**
131
+ * An option in a dateList filter. Consumer-supplied options commit their
132
+ * `value` immediately on click. Library options share this shape with one
133
+ * of the reserved `DateListLibraryOptionId` ids.
134
+ */
135
+ export type DateListOption = {
136
+ /** Unique identifier for the option */
137
+ id: string;
138
+ /** Display label for the option */
139
+ label: string;
140
+ /**
141
+ * Concrete value the option resolves to: an ISO date string, a date range,
142
+ * or `null` to represent "no filter applied" (treated as inactive).
143
+ */
144
+ value: string | {
145
+ startDate: string;
146
+ endDate: string;
147
+ } | null;
148
+ };
149
+ /**
150
+ * Date list filter type. Renders the consumer's options followed by four
151
+ * library options (On…, Before…, After…, Custom Range…) that open a Dialog
152
+ * with the appropriate date picker.
153
+ */
154
+ export type DateListFilter = BaseFilter & Pick<DateFieldSingleProps, "mode"> & {
155
+ /** Identifies this as a date list filter */
156
+ type: "dateList";
157
+ /** Consumer-supplied options. Library options are auto-rendered below. */
158
+ options: DateListOption[];
159
+ /** The currently selected option (consumer or library) */
160
+ selectedOption?: DateListOption;
161
+ };
124
162
  /**
125
163
  * Union type of all available filter types
126
164
  * Uses unknown instead of any for better type safety
127
165
  */
128
- export type Filter = BooleanFilter | CustomFilter<any> | SingleSelectFilter<any> | MultiSelectFilter<any> | DateFilter | DateRangeFilter;
166
+ export type Filter = BooleanFilter | CustomFilter<any> | SingleSelectFilter<any> | MultiSelectFilter<any> | DateFilter | DateRangeFilter | DateListFilter;
129
167
  /** Type representing all possible filter values */
130
- export type FilterValue = boolean | CustomFilter["value"] | SingleSelectFilter["selectedItem"] | MultiSelectFilter["selectedItems"] | DateFilter["value"] | DateRangeFilter["value"];
168
+ export type FilterValue = boolean | CustomFilter["value"] | SingleSelectFilter["selectedItem"] | MultiSelectFilter["selectedItems"] | DateFilter["value"] | DateRangeFilter["value"] | DateListFilter["selectedOption"];
@@ -0,0 +1,29 @@
1
+ import { DateListLibraryOptionId, DateListOption } from '../types';
2
+ /** Type guard for the four reserved library option ids. */
3
+ export declare const isDateListLibraryOptionId: (id: string) => id is DateListLibraryOptionId;
4
+ /** Label for a given library option id. */
5
+ export declare const getDateListLibraryOptionLabel: (id: DateListLibraryOptionId) => string;
6
+ /**
7
+ * Library options the dateList filter always renders below the consumer's
8
+ * options. Used by FilterDateList (popover) and FilterDrawer (drawer). The
9
+ * "…" suffix signals that picking the option opens a dialog; once a date is
10
+ * committed, the bare label (without "…") is what gets stored and shown in
11
+ * the filter trigger.
12
+ */
13
+ export declare const dateListLibraryOptions: ReadonlyArray<{
14
+ id: DateListLibraryOptionId;
15
+ label: string;
16
+ }>;
17
+ /** True when the library option opens a date-range dialog. */
18
+ export declare const isDateListRangeLibraryId: (id: DateListLibraryOptionId) => boolean;
19
+ /**
20
+ * Build the display label for a committed dateList selection. Used by both
21
+ * the FilterButton trigger and the FilterDrawer SelectField so the two
22
+ * surfaces stay in sync.
23
+ *
24
+ * - Selection with `value: null` (e.g. "Any day") → option label only.
25
+ * - Custom Range library option → just the formatted range (label omitted
26
+ * since the range is self-explanatory).
27
+ * - Other library or consumer options → `"<label>: <formatted>"`.
28
+ */
29
+ export declare const formatDateListSelectionLabel: (selection: DateListOption) => string;
@@ -33,6 +33,8 @@ export declare const updateSingleFilter: (filters: Filter[], filterId: string, v
33
33
  * Determines if two filter values are different.
34
34
  * For arrays (multiSelect), compares by id set (order-insensitive, avoids JSON serialization).
35
35
  * For singleSelect, compares by id if both are objects with id.
36
+ * For dateList selections (objects with both id and value), compares id AND value
37
+ * so re-picking the same library option with a different date still counts as a change.
36
38
  *
37
39
  * @param {T} a - First value to compare
38
40
  * @param {T} b - Second value to compare
@@ -1,4 +1,4 @@
1
- import { Filter, BooleanFilter, CustomFilter, SingleSelectFilter, MultiSelectFilter, DateFilter, DateRangeFilter } from '../types';
1
+ import { Filter, BooleanFilter, CustomFilter, SingleSelectFilter, MultiSelectFilter, DateFilter, DateListFilter, DateRangeFilter } from '../types';
2
2
  export type TestValue = {
3
3
  id: number;
4
4
  label: string;
@@ -54,5 +54,6 @@ export declare function createMockMultiSelectFilter<T = {
54
54
  }>(overrides?: Partial<MultiSelectFilter<T>>): MultiSelectFilter<T>;
55
55
  export declare function createMockDateFilter(overrides?: Partial<DateFilter>): DateFilter;
56
56
  export declare function createMockDateRangeFilter(overrides?: Partial<DateRangeFilter>): DateRangeFilter;
57
+ export declare function createMockDateListFilter(overrides?: Partial<DateListFilter>): DateListFilter;
57
58
  export declare const setupDesktopContainer: () => void;
58
59
  export declare const setupMobileContainer: () => void;
@@ -16,5 +16,6 @@ import { MultiSelectFieldHandle, MultiSelectFieldProps } from './types';
16
16
  * - Chip count limiting (maxChips prop)
17
17
  * - Full accessibility support with ARIA attributes
18
18
  * - Controlled selection state
19
+ * - Optional "Add new item" affordance below the option list with consumer-owned dialog
19
20
  */
20
21
  export declare const MultiSelectField: import('react').ForwardRefExoticComponent<MultiSelectFieldProps & import('react').RefAttributes<MultiSelectFieldHandle>>;
@@ -2,4 +2,4 @@ import { MultiSelectFieldComboboxInternalProps } from './types';
2
2
  /**
3
3
  * Combobox mode: searchable multi-select using useCombobox.
4
4
  */
5
- export declare const MultiSelectFieldComboboxMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, 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, getChipProps, onSearchChange, handleRemoveOption, handleClear, }: MultiSelectFieldComboboxInternalProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const MultiSelectFieldComboboxMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, 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, getChipProps, onSearchChange, addItemLabel, onAddNewItem, handleRemoveOption, handleClear, }: MultiSelectFieldComboboxInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -3,4 +3,4 @@ import { MultiSelectFieldBaseInternalProps } from './types';
3
3
  * Select mode: non-searchable multi-select using useSelect.
4
4
  * Active when disableSearch is true.
5
5
  */
6
- export declare const MultiSelectFieldSelectMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, selectAll, singleRow, maxChips, getChipProps, handleRemoveOption, handleClear, }: MultiSelectFieldBaseInternalProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const MultiSelectFieldSelectMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, selectAll, singleRow, maxChips, getChipProps, addItemLabel, onAddNewItem, handleRemoveOption, handleClear, }: MultiSelectFieldBaseInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  import { ReactElement, ReactNode, RefObject } from 'react';
2
2
  import { AiMarkWithTooltipOrPopoverProps, CheckState } from '../../../../types';
3
+ import { AddNewItemProps } from '../../../../internal/types/addNewItemTypes';
3
4
  import { MultiSelectFieldChipProps, MultiSelectFieldOption, MultiSelectFieldProps } from '../types';
4
5
  export type MultiSelectFieldBaseInternalProps = {
5
6
  id: string;
@@ -58,7 +59,7 @@ export type MultiSelectFieldBaseInternalProps = {
58
59
  id: string | number;
59
60
  }) => void;
60
61
  handleClear: () => void;
61
- };
62
+ } & AddNewItemProps;
62
63
  export type MultiSelectFieldComboboxInternalProps = MultiSelectFieldBaseInternalProps & {
63
64
  debounceMs: number;
64
65
  selectFiltered?: (searchValue: string) => {
@@ -2,6 +2,7 @@ import { AriaAttributes, CSSProperties, ReactElement, ReactNode } from 'react';
2
2
  import { AiMarkWithTooltipOrPopoverProps, CheckState, LayoutUtilProps, Size } from '../../../types';
3
3
  import { SelectFieldGroupByValue, SelectFieldOption } from '../SelectField/types';
4
4
  import { ChipProps } from '../../../components/Chip';
5
+ import { AddNewItemProps } from '../../../internal/types/addNewItemTypes';
5
6
  /**
6
7
  * Partial chip props that can be returned from the `getChipProps` callback.
7
8
  * Supports `icon` or `avatar` (mutually exclusive) and all other chip props as optional overrides.
@@ -300,7 +301,7 @@ type MultiSelectFieldCommonProps = {
300
301
  * @returns Partial chip props to merge onto the chip
301
302
  */
302
303
  getChipProps?: (option: MultiSelectFieldOption) => MultiSelectFieldChipProps;
303
- } & MultiSelectFieldSearchProps & LayoutUtilProps;
304
+ } & MultiSelectFieldSearchProps & LayoutUtilProps & AddNewItemProps;
304
305
  type MultiSelectFieldGroupingProps = {
305
306
  /**
306
307
  * Function to convert a group value to a display label.
@@ -17,6 +17,7 @@ import { MultiSelectMenuHandle, MultiSelectMenuProps } from './types';
17
17
  * - Full accessibility support with ARIA attributes
18
18
  * - Controlled selection state
19
19
  * - Configurable popover width
20
+ * - Optional "Add new item" affordance below the option list with consumer-owned dialog
20
21
  *
21
22
  * @example
22
23
  * <MultiSelectMenu
@@ -2,6 +2,7 @@ import { KeyboardEvent, ReactElement, RefObject } from 'react';
2
2
  import { CheckState } from '../../../types';
3
3
  import { SelectFieldGroupByValue, SelectFieldOption } from '../SelectField/types';
4
4
  import { MultiSelectFieldCacheOptions, MultiSelectFieldEagerLoader, MultiSelectFieldGroupLazyLoader, MultiSelectFieldOffsetLazyLoader, MultiSelectFieldPageLazyLoader, MultiSelectFieldPinnedOptions, MultiSelectFieldSearchProps } from '../MultiSelectField/types';
5
+ import { AddNewItemProps } from '../../../internal/types/addNewItemTypes';
5
6
  export type MultiSelectMenuOption = SelectFieldOption;
6
7
  export type MultiSelectMenuGroupByValue = SelectFieldGroupByValue;
7
8
  /**
@@ -142,7 +143,7 @@ type MultiSelectMenuCommonProps = {
142
143
  * @default 320
143
144
  */
144
145
  popoverWidth?: "reference" | number | string;
145
- } & MultiSelectMenuSearchProps;
146
+ } & MultiSelectMenuSearchProps & AddNewItemProps;
146
147
  type MultiSelectMenuGroupingProps = {
147
148
  /**
148
149
  * Function to convert a group value to a display label.
@@ -1,2 +1,23 @@
1
1
  import { SelectFieldHandle, SelectFieldProps } from './types';
2
+ /**
3
+ * SelectField component for selecting a single option from a searchable dropdown.
4
+ *
5
+ * Features:
6
+ * - Async option loading with caching, lazy pagination (page, offset, group), and debounced search
7
+ * - Supports pinned option sections (static or dynamically loaded)
8
+ * - Grouped options with custom sort and label functions
9
+ * - Combobox mode (searchable) and select mode (non-searchable) via disableSearch
10
+ * - Dialog and popover display modes with auto-detection based on viewport
11
+ * - Imperative handle for cache management (clearCache, invalidate)
12
+ * - Optional "Add new item" affordance below the option list with consumer-owned dialog
13
+ * - Supports layout utilities for positioning and spacing
14
+ *
15
+ * @example
16
+ * <SelectField
17
+ * label="Technician"
18
+ * value={selected}
19
+ * onSelectedOptionChange={setSelected}
20
+ * loadOptions={async (search) => fetchTechnicians(search)}
21
+ * />
22
+ */
2
23
  export declare const SelectField: import('react').ForwardRefExoticComponent<SelectFieldProps & import('react').RefAttributes<SelectFieldHandle>>;
@@ -3,4 +3,4 @@ import { SelectFieldComboboxInternalProps } from '../../../../internal/types/sel
3
3
  * Combobox mode: searchable select using useCombobox.
4
4
  * This is the default behavior when disableSearch is false.
5
5
  */
6
- export declare const SelectFieldComboboxMode: ({ id, helperUid, selectedOption, onSelectedOptionChange, displayAs, isDisabledOrReadOnly, disabled, labelAiMark, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, 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;
6
+ export declare const SelectFieldComboboxMode: ({ id, helperUid, selectedOption, onSelectedOptionChange, displayAs, isDisabledOrReadOnly, disabled, labelAiMark, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, debounceMs, addItemLabel, onAddNewItem, }: SelectFieldComboboxInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -3,4 +3,4 @@ import { SelectFieldBaseInternalProps } from '../../../../internal/types/selectF
3
3
  * Select mode: non-searchable select using useSelect.
4
4
  * Active when disableSearch is true.
5
5
  */
6
- export declare const SelectFieldSelectMode: ({ labelAiMark, id, helperUid, selectedOption, onSelectedOptionChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, 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;
6
+ export declare const SelectFieldSelectMode: ({ labelAiMark, id, helperUid, selectedOption, onSelectedOptionChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, required, addItemLabel, onAddNewItem, }: SelectFieldBaseInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import { AriaAttributes, CSSProperties, ReactElement, ReactNode } from 'react';
2
2
  import { AiMarkWithTooltipOrPopoverProps, LayoutUtilProps, Size } from '../../../types';
3
3
  import { AvatarProps, ChipProps, IconProps } from '../../..';
4
+ import { AddNewItemProps } from '../../../internal/types/addNewItemTypes';
4
5
  /**
5
6
  * Configuration options for the SelectField cache.
6
7
  * @property enabled - Whether caching is enabled. Defaults to true.
@@ -250,7 +251,7 @@ type SelectFieldCommonSelectFieldProps = {
250
251
  * @default false
251
252
  */
252
253
  disableSearch?: boolean;
253
- } & SelectFieldSearchProps & SelectFieldAddNewOptionProps & LayoutUtilProps;
254
+ } & SelectFieldSearchProps & SelectFieldAddNewOptionProps & LayoutUtilProps & AddNewItemProps;
254
255
  type SelectFieldGroupingProps = {
255
256
  /**
256
257
  * Function to convert a group value to a display label.
@@ -14,6 +14,7 @@ import { SelectMenuHandle, SelectMenuProps } from './types';
14
14
  * - Full accessibility support with ARIA attributes
15
15
  * - Controlled selection state
16
16
  * - Configurable popover width
17
+ * - Optional "Add new item" affordance below the option list with consumer-owned dialog
17
18
  *
18
19
  * @example
19
20
  * <SelectMenu
@@ -1,5 +1,6 @@
1
1
  import { KeyboardEvent, ReactElement, RefObject } from 'react';
2
2
  import { SelectFieldCacheOptions, SelectFieldEagerLoader, SelectFieldGroupByValue, SelectFieldGroupLazyLoader, SelectFieldGroupedOption, SelectFieldOffsetLazyLoader, SelectFieldOption, SelectFieldPageLazyLoader, SelectFieldPinnedOptions, SelectFieldSearchProps } from '../SelectField/types';
3
+ import { AddNewItemProps } from '../../../internal/types/addNewItemTypes';
3
4
  export type SelectMenuOption = SelectFieldOption;
4
5
  export type SelectMenuGroupByValue = SelectFieldGroupByValue;
5
6
  export type SelectMenuGroupedOption = SelectFieldGroupedOption;
@@ -124,7 +125,7 @@ type SelectMenuCommonProps = {
124
125
  * @default 320
125
126
  */
126
127
  popoverWidth?: "reference" | number | string;
127
- } & SelectMenuSearchProps;
128
+ } & SelectMenuSearchProps & AddNewItemProps;
128
129
  type SelectMenuGroupingProps = {
129
130
  /**
130
131
  * Function to convert a group value to a display label.
@@ -0,0 +1,40 @@
1
+ import { AddNewItemProps } from '../types/addNewItemTypes';
2
+ /**
3
+ * Props for the AddNewItemButton component.
4
+ *
5
+ * @property {string} searchText - The current search text, forwarded to the consumer's handler and label callback.
6
+ * @property {() => void} [onCloseMenu] - Internal hook for the host menu to close itself when the button is clicked. Fires before the consumer's handler.
7
+ * @extends AddNewItemProps
8
+ */
9
+ export type AddNewItemButtonProps = AddNewItemProps & {
10
+ /** The current search text, forwarded to the consumer's handler and label callback. */
11
+ searchText: string;
12
+ /** Internal hook for the host menu to close itself when the button is clicked. */
13
+ onCloseMenu?: () => void;
14
+ };
15
+ /**
16
+ * AddNewItemButton renders the consumer's "Add new item" affordance for the
17
+ * Select* / MultiSelect* components. Positioning, padding, background tint,
18
+ * and the visual separator from the option list are owned by the surrounding
19
+ * popover/dialog footer slot — this component is only responsible for the
20
+ * button itself.
21
+ *
22
+ * Features:
23
+ * - Renders nothing when no `onAddNewItem` handler is provided
24
+ * - Static or dynamic label resolved against the current search text
25
+ * - Closes the host menu via `onCloseMenu` when clicked, before invoking the consumer's handler
26
+ *
27
+ * @example
28
+ * <AddNewItemButton
29
+ * searchText={searchText}
30
+ * addItemLabel={(s) => `Add "${s}"`}
31
+ * onAddNewItem={(text) => openAddDialog(text)}
32
+ * onCloseMenu={closeMenu}
33
+ * />
34
+ *
35
+ * @returns The button, or null when the feature is not enabled.
36
+ */
37
+ export declare const AddNewItemButton: {
38
+ ({ searchText, addItemLabel, onAddNewItem, onCloseMenu, }: AddNewItemButtonProps): import("react/jsx-runtime").JSX.Element | null;
39
+ displayName: string;
40
+ };
@@ -1,5 +1,5 @@
1
1
  import { FocusableElement } from '../../..';
2
- export declare const OptionsDialog: ({ id, isOpen, onClose, field, children, title, initialFocusResolver, }: {
2
+ export declare const OptionsDialog: ({ id, isOpen, onClose, field, children, title, initialFocusResolver, footer, }: {
3
3
  id: string;
4
4
  isOpen: boolean;
5
5
  onClose: () => void;
@@ -7,4 +7,6 @@ export declare const OptionsDialog: ({ id, isOpen, onClose, field, children, tit
7
7
  field?: React.ReactNode;
8
8
  children: React.ReactNode;
9
9
  initialFocusResolver?: (focusables: FocusableElement[]) => FocusableElement;
10
+ /** Optional content rendered below the dialog body. */
11
+ footer?: React.ReactNode;
10
12
  }) => import("react/jsx-runtime").JSX.Element;
@@ -4,7 +4,13 @@ export type OptionsPopoverProps = {
4
4
  children: ReactNode;
5
5
  referenceElement: RefObject<HTMLElement>;
6
6
  open: boolean;
7
- onClickOutside: () => void;
7
+ /**
8
+ * Fired when the popover should close — either because the user clicked
9
+ * outside it, focus moved to an element outside the popover or its
10
+ * reference (trigger) element, or the user pressed Escape inside the
11
+ * popover.
12
+ */
13
+ onClose: () => void;
8
14
  /** Controls the popover width strategy.
9
15
  * - `"reference"` — match the reference element's width
10
16
  * - `number` — fixed width in px
@@ -12,5 +18,11 @@ export type OptionsPopoverProps = {
12
18
  * - `undefined` (default) — intrinsic sizing (`max-content`)
13
19
  */
14
20
  width?: "reference" | number | string;
21
+ /**
22
+ * Optional content rendered as a full-bleed footer region inside the popover
23
+ * shell, separated from the body by a top border. The popover suppresses its
24
+ * own bottom padding so the footer can hug the popover's lower edge.
25
+ */
26
+ footer?: ReactNode;
15
27
  };
16
28
  export declare const OptionsPopover: (props: OptionsPopoverProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * Shared prop set for the "Add new item" affordance available on
4
+ * SelectField, SelectMenu, MultiSelectField, and MultiSelectMenu.
5
+ *
6
+ * @property addItemLabel - Label rendered inside the "Add new item" button. May be a static node or a callback that receives the current search text and returns a dynamic label (e.g. `Add "${searchText}"`). When omitted but `onAddNewItem` is provided, falls back to `"Add new item"`.
7
+ * @property onAddNewItem - Click handler for the "Add new item" button. Presence of this prop is what gates rendering the button. Receives the current search text. The menu auto-closes synchronously on click; the handler runs immediately after — typically opening a Dialog or Drawer to collect the new item's details. Consumers manage their own overlay presentation, focus return, option list updates, and selection state.
8
+ */
9
+ export type AddNewItemProps = {
10
+ addItemLabel?: ReactNode | ((searchText: string) => ReactNode);
11
+ onAddNewItem?: (searchText: string) => void;
12
+ };
@@ -1,6 +1,7 @@
1
1
  import { ReactElement, ReactNode, RefObject } from 'react';
2
2
  import { AiMarkWithTooltipOrPopoverProps, CheckState } from '../../types';
3
3
  import { SelectFieldOption, SelectFieldProps } from '../../beta/components/SelectField/types';
4
+ import { AddNewItemProps } from './addNewItemTypes';
4
5
  /**
5
6
  * Metadata about list sections for rendering purposes.
6
7
  * Used by SelectOptions, MultiSelectOptions, and their Menu counterparts to render section headers and dividers.
@@ -62,7 +63,7 @@ export type SelectFieldBaseInternalProps = {
62
63
  initialLoadPerformed: boolean;
63
64
  setInitialLoadPerformed: (val: boolean) => void;
64
65
  inputWrapperRef: RefObject<HTMLDivElement>;
65
- };
66
+ } & AddNewItemProps;
66
67
  export type SelectFieldComboboxInternalProps = SelectFieldBaseInternalProps & {
67
68
  debounceMs: number;
68
69
  };
@@ -1,4 +1,4 @@
1
- import { I as INLINE_MARKDOWN_REGEX } from './FieldLabel-xV6EdVwo.js';
1
+ import { I as INLINE_MARKDOWN_REGEX } from './FieldLabel-D1qPAGtB.js';
2
2
 
3
3
  const stripInlineMarkdown = (str) => {
4
4
  const parts = [];
@@ -22,4 +22,4 @@ const stripInlineMarkdown = (str) => {
22
22
  };
23
23
 
24
24
  export { stripInlineMarkdown as s };
25
- //# sourceMappingURL=stripInlineMarkdown-D_eHogvh.js.map
25
+ //# sourceMappingURL=stripInlineMarkdown-C5DNxxwf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripInlineMarkdown-D_eHogvh.js","sources":["../src/internal/functions/stripInlineMarkdown.ts"],"sourcesContent":["import { INLINE_MARKDOWN_REGEX } from \"../utils/inlineMarkdownRegex\";\n\n/**\n * Strips inline markdown syntax from a string, returning plain text.\n * Intended for accessibility contexts (e.g. `aria-label`) where only plain text is appropriate.\n *\n * @param str - The string to strip\n * @returns The string with all inline markdown syntax removed\n */\nexport const stripInlineMarkdown = (str: string): string => {\n const parts: string[] = [];\n let lastIndex = 0;\n\n INLINE_MARKDOWN_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = INLINE_MARKDOWN_REGEX.exec(str)) !== null) {\n if (match.index > lastIndex) {\n parts.push(str.substring(lastIndex, match.index));\n }\n\n const savedIndex = INLINE_MARKDOWN_REGEX.lastIndex;\n const inner =\n match[1] ?? match[2] ?? match[3] ?? match[4] ?? match[5] ?? \"\";\n\n // code spans don't support nested markdown, matching parseInlineMarkdown behavior\n parts.push(match[5] ? inner : stripInlineMarkdown(inner));\n\n INLINE_MARKDOWN_REGEX.lastIndex = savedIndex;\n lastIndex = savedIndex;\n }\n\n if (lastIndex < str.length) {\n parts.push(str.substring(lastIndex));\n }\n\n return parts.join(\"\");\n};\n"],"names":[],"mappings":";;AASO,MAAM,mBAAA,GAAsB,CAAC,GAAA,KAAwB;AAC1D,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,qBAAA,CAAsB,SAAA,GAAY,CAAA;AAClC,EAAA,IAAI,KAAA;AAEJ,EAAA,OAAA,CAAQ,KAAA,GAAQ,qBAAA,CAAsB,IAAA,CAAK,GAAG,OAAO,IAAA,EAAM;AACzD,IAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,MAAA,KAAA,CAAM,KAAK,GAAA,CAAI,SAAA,CAAU,SAAA,EAAW,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IAClD;AAEA,IAAA,MAAM,aAAa,qBAAA,CAAsB,SAAA;AACzC,IAAA,MAAM,KAAA,GACJ,KAAA,CAAM,CAAC,CAAA,IAAK,MAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,KAAK,KAAA,CAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAG9D,IAAA,KAAA,CAAM,KAAK,KAAA,CAAM,CAAC,IAAI,KAAA,GAAQ,mBAAA,CAAoB,KAAK,CAAC,CAAA;AAExD,IAAA,qBAAA,CAAsB,SAAA,GAAY,UAAA;AAClC,IAAA,SAAA,GAAY,UAAA;AAAA,EACd;AAEA,EAAA,IAAI,SAAA,GAAY,IAAI,MAAA,EAAQ;AAC1B,IAAA,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,CAAA;AACtB;;;;"}
1
+ {"version":3,"file":"stripInlineMarkdown-C5DNxxwf.js","sources":["../src/internal/functions/stripInlineMarkdown.ts"],"sourcesContent":["import { INLINE_MARKDOWN_REGEX } from \"../utils/inlineMarkdownRegex\";\n\n/**\n * Strips inline markdown syntax from a string, returning plain text.\n * Intended for accessibility contexts (e.g. `aria-label`) where only plain text is appropriate.\n *\n * @param str - The string to strip\n * @returns The string with all inline markdown syntax removed\n */\nexport const stripInlineMarkdown = (str: string): string => {\n const parts: string[] = [];\n let lastIndex = 0;\n\n INLINE_MARKDOWN_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = INLINE_MARKDOWN_REGEX.exec(str)) !== null) {\n if (match.index > lastIndex) {\n parts.push(str.substring(lastIndex, match.index));\n }\n\n const savedIndex = INLINE_MARKDOWN_REGEX.lastIndex;\n const inner =\n match[1] ?? match[2] ?? match[3] ?? match[4] ?? match[5] ?? \"\";\n\n // code spans don't support nested markdown, matching parseInlineMarkdown behavior\n parts.push(match[5] ? inner : stripInlineMarkdown(inner));\n\n INLINE_MARKDOWN_REGEX.lastIndex = savedIndex;\n lastIndex = savedIndex;\n }\n\n if (lastIndex < str.length) {\n parts.push(str.substring(lastIndex));\n }\n\n return parts.join(\"\");\n};\n"],"names":[],"mappings":";;AASO,MAAM,mBAAA,GAAsB,CAAC,GAAA,KAAwB;AAC1D,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,qBAAA,CAAsB,SAAA,GAAY,CAAA;AAClC,EAAA,IAAI,KAAA;AAEJ,EAAA,OAAA,CAAQ,KAAA,GAAQ,qBAAA,CAAsB,IAAA,CAAK,GAAG,OAAO,IAAA,EAAM;AACzD,IAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,MAAA,KAAA,CAAM,KAAK,GAAA,CAAI,SAAA,CAAU,SAAA,EAAW,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IAClD;AAEA,IAAA,MAAM,aAAa,qBAAA,CAAsB,SAAA;AACzC,IAAA,MAAM,KAAA,GACJ,KAAA,CAAM,CAAC,CAAA,IAAK,MAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,KAAK,KAAA,CAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAG9D,IAAA,KAAA,CAAM,KAAK,KAAA,CAAM,CAAC,IAAI,KAAA,GAAQ,mBAAA,CAAoB,KAAK,CAAC,CAAA;AAExD,IAAA,qBAAA,CAAsB,SAAA,GAAY,UAAA;AAClC,IAAA,SAAA,GAAY,UAAA;AAAA,EACd;AAEA,EAAA,IAAI,SAAA,GAAY,IAAI,MAAA,EAAQ;AAC1B,IAAA,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,CAAA;AACtB;;;;"}