@servicetitan/anvil2 3.8.0 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/{AiMark-voHPSerQ.js → AiMark-2_O4tKv_.js} +4 -4
  3. package/dist/AiMark-2_O4tKv_.js.map +1 -0
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-CPe0yh6A.js → Alert-DtM7NDN9.js} +3 -3
  6. package/dist/Alert-DtM7NDN9.js.map +1 -0
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-DU0J4111.js → Announcement-CGglhMfd.js} +3 -3
  9. package/dist/Announcement-CGglhMfd.js.map +1 -0
  10. package/dist/Announcement.js +1 -1
  11. package/dist/AnvilProvider-b3gvW6Md.js.map +1 -1
  12. package/dist/Avatar-CoQcOHWU.js.map +1 -1
  13. package/dist/Avatar-DX96Mxe7.js.map +1 -1
  14. package/dist/Badge-BNrYBFiU.js.map +1 -1
  15. package/dist/Badge.css +2 -3
  16. package/dist/{Breadcrumbs-VzOM2nBU.js → Breadcrumbs-Bmqmw5F5.js} +4 -4
  17. package/dist/Breadcrumbs-Bmqmw5F5.js.map +1 -0
  18. package/dist/Breadcrumbs.js +1 -1
  19. package/dist/{Button-BNzCI47m.js → Button-Dwh_Nd4l.js} +6 -8
  20. package/dist/Button-Dwh_Nd4l.js.map +1 -0
  21. package/dist/Button.js +1 -1
  22. package/dist/ButtonCompound-D7kA0qXr.js.map +1 -1
  23. package/dist/{ButtonLink-PlW08u41.js → ButtonLink-DOFAxNvC.js} +2 -2
  24. package/dist/ButtonLink-DOFAxNvC.js.map +1 -0
  25. package/dist/ButtonLink.js +1 -1
  26. package/dist/{ButtonToggle-DBGc7dIn.js → ButtonToggle-DKDBD1g3.js} +2 -2
  27. package/dist/ButtonToggle-DKDBD1g3.js.map +1 -0
  28. package/dist/ButtonToggle.js +1 -1
  29. package/dist/{Calendar-MRUB0XU7.js → Calendar-CUgFbnKj.js} +2 -2
  30. package/dist/Calendar-CUgFbnKj.js.map +1 -0
  31. package/dist/{Calendar-CekTYzdT.js → Calendar-D_fqe0-J.js} +11 -4
  32. package/dist/Calendar-D_fqe0-J.js.map +1 -0
  33. package/dist/Calendar.js +2 -2
  34. package/dist/Card-Bt0F6RTq.js.map +1 -1
  35. package/dist/{Checkbox-zz9TyZWn.js → Checkbox-4wRmrann.js} +2 -2
  36. package/dist/Checkbox-4wRmrann.js.map +1 -0
  37. package/dist/{Checkbox-C3rtd-Xe.js → Checkbox-DoxWcbfv.js} +5 -5
  38. package/dist/Checkbox-DoxWcbfv.js.map +1 -0
  39. package/dist/Checkbox.js +1 -1
  40. package/dist/{Chip-CxgryK86.js → Chip-D6Q0J0Xe.js} +3 -3
  41. package/dist/Chip-D6Q0J0Xe.js.map +1 -0
  42. package/dist/Chip.js +1 -1
  43. package/dist/Combobox.js +1 -1
  44. package/dist/{DataTable-Bvsijiqn.js → DataTable-D-SKKt5w.js} +60 -23
  45. package/dist/DataTable-D-SKKt5w.js.map +1 -0
  46. package/dist/DataTable.css +2 -3
  47. package/dist/{DateFieldRange-CP7QgS6P.js → DateFieldRange-DUFfyknZ.js} +62 -35
  48. package/dist/DateFieldRange-DUFfyknZ.js.map +1 -0
  49. package/dist/DateFieldRange.js +1 -1
  50. package/dist/{DateFieldSingle-CgMPTi1v.js → DateFieldSingle-BZjlO0hX.js} +60 -32
  51. package/dist/DateFieldSingle-BZjlO0hX.js.map +1 -0
  52. package/dist/DateFieldSingle.js +1 -1
  53. package/dist/{DateFieldYearless-BDSbVQx0.js → DateFieldYearless-TcKb9jE2.js} +7 -5
  54. package/dist/DateFieldYearless-TcKb9jE2.js.map +1 -0
  55. package/dist/DateFieldYearless.js +1 -1
  56. package/dist/{DateFieldYearlessRange-Dk7HVYTA.js → DateFieldYearlessRange-D9XtRNWi.js} +19 -7
  57. package/dist/DateFieldYearlessRange-D9XtRNWi.js.map +1 -0
  58. package/dist/DateFieldYearlessRange.js +1 -1
  59. package/dist/{DaysOfTheWeek-Ci-SKebP.js → DaysOfTheWeek--FBi44iw.js} +5 -5
  60. package/dist/DaysOfTheWeek--FBi44iw.js.map +1 -0
  61. package/dist/DaysOfTheWeek.js +1 -1
  62. package/dist/{Details-DkteVZbk.js → Details-CVA5zbrR.js} +2 -2
  63. package/dist/Details-CVA5zbrR.js.map +1 -0
  64. package/dist/Details.js +1 -1
  65. package/dist/{Dialog-BxulNN8n.js → Dialog-Clh3jaX8.js} +4 -4
  66. package/dist/Dialog-Clh3jaX8.js.map +1 -0
  67. package/dist/Dialog.js +1 -1
  68. package/dist/{DialogCancelButton-DmSUPuCR.js → DialogCancelButton-DBL0aKTK.js} +2 -2
  69. package/dist/DialogCancelButton-DBL0aKTK.js.map +1 -0
  70. package/dist/DialogContext-DBgtApl9.js.map +1 -1
  71. package/dist/Divider-C7fp5Xb6.js.map +1 -1
  72. package/dist/Dnd.js +2 -2
  73. package/dist/{DndHandleButton-Ck5nc8w2.js → DndHandleButton-BRlodkDO.js} +2 -2
  74. package/dist/{DndHandleButton-Ck5nc8w2.js.map → DndHandleButton-BRlodkDO.js.map} +1 -1
  75. package/dist/DndSort.js +4 -4
  76. package/dist/DndSort.js.map +1 -1
  77. package/dist/{Drawer-DzvM9MRB.js → Drawer-h2Mut1lB.js} +5 -5
  78. package/dist/Drawer-h2Mut1lB.js.map +1 -0
  79. package/dist/Drawer.js +1 -1
  80. package/dist/DrawerContext-BSpnzXVZ.js.map +1 -1
  81. package/dist/DrillDown.js +1 -1
  82. package/dist/DrillDown.module-D1Bf9_yP.js.map +1 -1
  83. package/dist/{EditCard-ZpF032WP.js → EditCard-QohYSylF.js} +4 -4
  84. package/dist/EditCard-QohYSylF.js.map +1 -0
  85. package/dist/EditCard.js +1 -1
  86. package/dist/{FieldLabel-Cm5A1Jcx.js → FieldLabel-SzH61hCb.js} +3 -3
  87. package/dist/FieldLabel-SzH61hCb.js.map +1 -0
  88. package/dist/FieldLabel.js +1 -1
  89. package/dist/{FilterBar-DBVW3LL3.js → FilterBar-luqnJzAK.js} +32 -11
  90. package/dist/FilterBar-luqnJzAK.js.map +1 -0
  91. package/dist/FilterBar.js +1 -1
  92. package/dist/{Flex-Bb3iHExM.js → Flex-CRF7gj0_.js} +3 -3
  93. package/dist/Flex-CRF7gj0_.js.map +1 -0
  94. package/dist/Flex.css +2 -4
  95. package/dist/Flex.js +1 -1
  96. package/dist/{Grid-ho1pGJ5L.js → Grid-CvGQrIhE.js} +4 -4
  97. package/dist/Grid-CvGQrIhE.js.map +1 -0
  98. package/dist/Grid.css +3 -5
  99. package/dist/Grid.js +1 -1
  100. package/dist/{Helper-B_VAFgGd.js → Helper-Bq6Npkgh.js} +2 -2
  101. package/dist/Helper-Bq6Npkgh.js.map +1 -0
  102. package/dist/{Icon-B4uCvMU9.js → Icon-B5zwN7GD.js} +4 -4
  103. package/dist/Icon-B5zwN7GD.js.map +1 -0
  104. package/dist/Icon.js +1 -1
  105. package/dist/{InputMask-CX6XiOOm.js → InputMask-CQONHcTq.js} +3 -3
  106. package/dist/InputMask-CQONHcTq.js.map +1 -0
  107. package/dist/InputMask.js +1 -1
  108. package/dist/InteractiveCard-C0g5PxB6.js.map +1 -1
  109. package/dist/Layout-C2Q2hyLG.js.map +1 -1
  110. package/dist/{Link-C7dtI5K6.js → Link-D7ycmfQ_.js} +2 -2
  111. package/dist/Link-D7ycmfQ_.js.map +1 -0
  112. package/dist/Link.css +2 -4
  113. package/dist/Link.js +1 -1
  114. package/dist/LinkButton-C0wps8r1.js.map +1 -1
  115. package/dist/List-BvzfZ9TW.js.map +1 -1
  116. package/dist/{ListView-DpveXOsN.js → ListView-BgGEwal3.js} +3 -3
  117. package/dist/ListView-BgGEwal3.js.map +1 -0
  118. package/dist/ListView.js +1 -1
  119. package/dist/{Listbox-Cdwaofd2.js → Listbox-Cw_2W62S.js} +4 -4
  120. package/dist/Listbox-Cw_2W62S.js.map +1 -0
  121. package/dist/Listbox.js +1 -1
  122. package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
  123. package/dist/LocalizationProvider-BPcOU7YX.js.map +1 -1
  124. package/dist/{Menu-DmEXQLXt.js → Menu-DNOOmDQC.js} +3 -3
  125. package/dist/Menu-DNOOmDQC.js.map +1 -0
  126. package/dist/Menu.js +1 -1
  127. package/dist/{MenuFooter-Ck9L599M.js → MenuFooter--lBF8OjJ.js} +6 -2
  128. package/dist/MenuFooter--lBF8OjJ.js.map +1 -0
  129. package/dist/MultiSelectField.js +1 -1
  130. package/dist/{MultiSelectFieldSync-B1tkEtft.js → MultiSelectFieldSync-HhFKGtQM.js} +74 -19
  131. package/dist/MultiSelectFieldSync-HhFKGtQM.js.map +1 -0
  132. package/dist/MultiSelectMenu.js +1 -1
  133. package/dist/{MultiSelectMenuSync-Deki_z-0.js → MultiSelectMenuSync-C3Y7jnJQ.js} +26 -10
  134. package/dist/MultiSelectMenuSync-C3Y7jnJQ.js.map +1 -0
  135. package/dist/{NumberField-CjC6KHKl.js → NumberField-B1761jkf.js} +7 -7
  136. package/dist/NumberField-B1761jkf.js.map +1 -0
  137. package/dist/NumberField.css +2 -3
  138. package/dist/NumberField.js +1 -1
  139. package/dist/Overflow.js +1 -1
  140. package/dist/Overflow.js.map +1 -1
  141. package/dist/{Page-BreBQ3pG.js → Page-Pk0-Sxf_.js} +22 -21
  142. package/dist/Page-Pk0-Sxf_.js.map +1 -0
  143. package/dist/Page.js +1 -1
  144. package/dist/{Pagination-CmqAut6y.js → Pagination-Bx_u6Uea.js} +37 -11
  145. package/dist/Pagination-Bx_u6Uea.js.map +1 -0
  146. package/dist/Pagination.js +1 -1
  147. package/dist/{Popover-CdRuNv3C.js → Popover-CjsE5FG0.js} +2 -2
  148. package/dist/Popover-CjsE5FG0.js.map +1 -0
  149. package/dist/Popover.js +1 -1
  150. package/dist/PortalProvider-Cj_y3gbC.js.map +1 -1
  151. package/dist/{ProgressBar-065vjsQ0.js → ProgressBar-Coh2nTJ1.js} +6 -6
  152. package/dist/ProgressBar-Coh2nTJ1.js.map +1 -0
  153. package/dist/ProgressBar.js +1 -1
  154. package/dist/{Radio-D9w_-JYw.js → Radio-BxSL1PoP.js} +2 -2
  155. package/dist/Radio-BxSL1PoP.js.map +1 -0
  156. package/dist/{Radio-dyLcVmUw.js → Radio-J4Iv3wbJ.js} +5 -5
  157. package/dist/Radio-J4Iv3wbJ.js.map +1 -0
  158. package/dist/Radio.js +1 -1
  159. package/dist/{RichTextEditor-byoMZaJy.js → RichTextEditor-CTIGe6xA.js} +13 -13
  160. package/dist/RichTextEditor-CTIGe6xA.js.map +1 -0
  161. package/dist/RichTextEditor.css +1 -2
  162. package/dist/RichTextEditor.js +1 -1
  163. package/dist/{SavedFiltersButton-BHgS4akL.js → SavedFiltersButton-CpnoAIrw.js} +256 -170
  164. package/dist/SavedFiltersButton-CpnoAIrw.js.map +1 -0
  165. package/dist/SavedFiltersButton.js +1 -1
  166. package/dist/{SearchField-B7fIOJf-.js → SearchField-ChoNtw8w.js} +2 -2
  167. package/dist/SearchField-ChoNtw8w.js.map +1 -0
  168. package/dist/{SearchField-X4B7f23E.js → SearchField-DX8hZyo2.js} +2 -2
  169. package/dist/SearchField-DX8hZyo2.js.map +1 -0
  170. package/dist/SearchField.js +1 -1
  171. package/dist/{SegmentedControl-Be6jCglV.js → SegmentedControl-CQ6DrbDc.js} +2 -2
  172. package/dist/SegmentedControl-CQ6DrbDc.js.map +1 -0
  173. package/dist/SegmentedControl.css +2 -3
  174. package/dist/SegmentedControl.js +1 -1
  175. package/dist/{SelectCard-CMSG_ba1.js → SelectCard-BTfhPyHH.js} +4 -4
  176. package/dist/SelectCard-BTfhPyHH.js.map +1 -0
  177. package/dist/SelectCard.js +1 -1
  178. package/dist/SelectField.js +1 -1
  179. package/dist/{SelectFieldLabel-dKVBaki2.js → SelectFieldLabel-CjY6zFJA.js} +2 -2
  180. package/dist/SelectFieldLabel-CjY6zFJA.js.map +1 -0
  181. package/dist/{SelectFieldSync-VShqP5J0.js → SelectFieldSync-Dyug8Fgk.js} +48 -10
  182. package/dist/SelectFieldSync-Dyug8Fgk.js.map +1 -0
  183. package/dist/SelectMenu.js +1 -1
  184. package/dist/{SelectMenuSync-BDx1yhZT.js → SelectMenuSync-BkC0FD5P.js} +23 -9
  185. package/dist/SelectMenuSync-BkC0FD5P.js.map +1 -0
  186. package/dist/{SelectOptions-BIVTviOh.js → SelectOptions-B3Vmtb_k.js} +2 -2
  187. package/dist/SelectOptions-B3Vmtb_k.js.map +1 -0
  188. package/dist/{SelectTrigger-APxYfL3V.js → SelectTrigger-Do1puyA_.js} +4 -4
  189. package/dist/SelectTrigger-Do1puyA_.js.map +1 -0
  190. package/dist/SelectTrigger.js +1 -1
  191. package/dist/{SelectTriggerBase-lYieONTb.js → SelectTriggerBase-rxHXMSb4.js} +12 -14
  192. package/dist/SelectTriggerBase-rxHXMSb4.js.map +1 -0
  193. package/dist/SelectTriggerBase.css +2 -3
  194. package/dist/{SideNav-DoxX8Vi-.js → SideNav-DZRXOYHs.js} +2 -2
  195. package/dist/SideNav-DZRXOYHs.js.map +1 -0
  196. package/dist/SideNav.js +1 -1
  197. package/dist/Skeleton.js.map +1 -1
  198. package/dist/Spinner-B7tTWcP6.js.map +1 -1
  199. package/dist/SrOnly-pnf8ajnh.js.map +1 -1
  200. package/dist/{Stepper-CvaR7OoT.js → Stepper-BX_gDWLE.js} +4 -4
  201. package/dist/Stepper-BX_gDWLE.js.map +1 -0
  202. package/dist/Stepper.css +1 -2
  203. package/dist/Stepper.js +1 -1
  204. package/dist/{Switch-Bm3qqjd6.js → Switch-BpjBYm-U.js} +5 -5
  205. package/dist/Switch-BpjBYm-U.js.map +1 -0
  206. package/dist/Switch.js +1 -1
  207. package/dist/{Tab-Cy4G562A.js → Tab-Bqfvg8Ce.js} +53 -23
  208. package/dist/Tab-Bqfvg8Ce.js.map +1 -0
  209. package/dist/Tab.css +35 -31
  210. package/dist/Tab.js +1 -1
  211. package/dist/Table.js +1 -1
  212. package/dist/{Text-mDcQHC2U.js → Text-CIoD_RK4.js} +2 -2
  213. package/dist/Text-CIoD_RK4.js.map +1 -0
  214. package/dist/Text.js +1 -1
  215. package/dist/{TextField-CUVsDfWo.js → TextField-CzzvLI5_.js} +4 -4
  216. package/dist/TextField-CzzvLI5_.js.map +1 -0
  217. package/dist/{TextField-WQTlqKso.js → TextField-D3sRS5q1.js} +2 -2
  218. package/dist/TextField-D3sRS5q1.js.map +1 -0
  219. package/dist/TextField.js +1 -1
  220. package/dist/{Textarea-CW3KGuB9.js → Textarea-B3C7AkPj.js} +4 -4
  221. package/dist/Textarea-B3C7AkPj.js.map +1 -0
  222. package/dist/Textarea.js +1 -1
  223. package/dist/ThemeProvider-Sd8LK0A9.js.map +1 -1
  224. package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
  225. package/dist/{TimeField-JA3gXyS7.js → TimeField-L9B_X6-H.js} +31 -9
  226. package/dist/TimeField-L9B_X6-H.js.map +1 -0
  227. package/dist/TimeField.js +1 -1
  228. package/dist/TimezoneMessage-BrKB_psP.js.map +1 -1
  229. package/dist/Toast.js +2 -2
  230. package/dist/{Toaster-DMZng3Im.js → Toaster-CAI7tX8q.js} +4 -4
  231. package/dist/Toaster-CAI7tX8q.js.map +1 -0
  232. package/dist/{Toaster-fPcgIF7Q.js → Toaster-DZxf0N9g.js} +2 -2
  233. package/dist/Toaster-DZxf0N9g.js.map +1 -0
  234. package/dist/{Toolbar-BfGcDXgC.js → Toolbar-BOgHhw7K.js} +19 -10
  235. package/dist/Toolbar-BOgHhw7K.js.map +1 -0
  236. package/dist/{Toolbar-Dlu39v69.js → Toolbar-DDWUuQm_.js} +30 -8
  237. package/dist/Toolbar-DDWUuQm_.js.map +1 -0
  238. package/dist/Toolbar.js +2 -2
  239. package/dist/{ToolbarButtonToggle-3xbnm1Qr.js → ToolbarButtonToggle-BbtKfezH.js} +19 -3
  240. package/dist/ToolbarButtonToggle-BbtKfezH.js.map +1 -0
  241. package/dist/Tooltip-BC8lnFhe.js.map +1 -1
  242. package/dist/TrackingProvider-Co4lyoI9.js.map +1 -1
  243. package/dist/TrackingProviderContext-CrVA7KHv.js.map +1 -1
  244. package/dist/TreeSelectField.js +1 -1
  245. package/dist/{TreeSelectFieldSync-CdtC8d3Q.js → TreeSelectFieldSync-Cd87uR6b.js} +51 -17
  246. package/dist/TreeSelectFieldSync-Cd87uR6b.js.map +1 -0
  247. package/dist/TreeSelectMenu.js +1 -1
  248. package/dist/{TreeSelectMenuSync-CPuQWUNU.js → TreeSelectMenuSync-88q0ydo5.js} +22 -10
  249. package/dist/TreeSelectMenuSync-88q0ydo5.js.map +1 -0
  250. package/dist/{TypeaheadTextField-BkLECKZY.js → TypeaheadTextField-9Nkkd4c4.js} +3 -3
  251. package/dist/TypeaheadTextField-9Nkkd4c4.js.map +1 -0
  252. package/dist/TypeaheadTextField.js +1 -1
  253. package/dist/{YearlessDateInputWithPicker-DLtMQhDw.js → YearlessDateInputWithPicker-BquY4bCd.js} +29 -8
  254. package/dist/YearlessDateInputWithPicker-BquY4bCd.js.map +1 -0
  255. package/dist/anvParts-BGg5dgfl.js +43 -0
  256. package/dist/anvParts-BGg5dgfl.js.map +1 -0
  257. package/dist/beta.js +16 -16
  258. package/dist/{bulkActionTypes-CTKwMpO7.js → bulkActionTypes-CWcUhKFS.js} +2 -2
  259. package/dist/bulkActionTypes-CWcUhKFS.js.map +1 -0
  260. package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
  261. package/dist/{filter-state-DKXF5MeW.js → filter-state-BQOX7_rO.js} +177 -101
  262. package/dist/filter-state-BQOX7_rO.js.map +1 -0
  263. package/dist/{index-SZMmvI3D.js → index-BwV_Pz7v.js} +2 -2
  264. package/dist/index-BwV_Pz7v.js.map +1 -0
  265. package/dist/{index-B7BIlotN.js → index-DjirBR0l.js} +2 -2
  266. package/dist/{index-B7BIlotN.js.map → index-DjirBR0l.js.map} +1 -1
  267. package/dist/index.js +56 -56
  268. package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
  269. package/dist/src/beta/components/FilterBar/FilterBar.d.ts +3 -3
  270. package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
  271. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +17 -3
  272. package/dist/src/beta/components/FilterBar/parts.d.ts +38 -0
  273. package/dist/src/beta/components/SavedFiltersButton/parts.d.ts +37 -0
  274. package/dist/src/beta/components/SavedFiltersButton/types.d.ts +2 -1
  275. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +3 -2
  276. package/dist/src/beta/components/Table/DataTable/parts.d.ts +30 -0
  277. package/dist/src/beta/components/Table/internal/ResizeHandle.d.ts +3 -2
  278. package/dist/src/beta/components/Toolbar/Toolbar.d.ts +4 -4
  279. package/dist/src/beta/components/Toolbar/index.d.ts +1 -1
  280. package/dist/src/beta/components/Toolbar/parts.d.ts +19 -0
  281. package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +6 -5
  282. package/dist/src/beta/components/TreeSelectField/parts.d.ts +23 -0
  283. package/dist/src/beta/components/TreeSelectField/types.d.ts +11 -4
  284. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +33 -2
  285. package/dist/src/beta/components/TreeSelectMenu/parts.d.ts +12 -0
  286. package/dist/src/beta/components/TreeSelectMenu/types.d.ts +3 -2
  287. package/dist/src/components/Alert/Alert.d.ts +2 -4
  288. package/dist/src/components/Announcement/Announcement.d.ts +2 -4
  289. package/dist/src/components/Breadcrumbs/index.d.ts +1 -1
  290. package/dist/src/components/ButtonCompound/ButtonCompound.d.ts +2 -4
  291. package/dist/src/components/ButtonLink/ButtonLink.d.ts +2 -4
  292. package/dist/src/components/ButtonToggle/ButtonToggle.d.ts +2 -4
  293. package/dist/src/components/Calendar/Calendar.d.ts +3 -1
  294. package/dist/src/components/Calendar/index.d.ts +1 -1
  295. package/dist/src/components/Checkbox/index.d.ts +2 -2
  296. package/dist/src/components/Combobox/Combobox.d.ts +2 -2
  297. package/dist/src/components/Combobox/ComboboxEmpty.d.ts +1 -1
  298. package/dist/src/components/Combobox/ComboboxTypes.d.ts +2 -2
  299. package/dist/src/components/Combobox/index.d.ts +2 -2
  300. package/dist/src/components/Combobox/parts.d.ts +19 -0
  301. package/dist/src/components/DateFieldRange/DateFieldRange.d.ts +2 -2
  302. package/dist/src/components/DateFieldRange/parts.d.ts +16 -0
  303. package/dist/src/components/DateFieldSingle/DateFieldSingle.d.ts +2 -2
  304. package/dist/src/components/DateFieldSingle/index.d.ts +1 -1
  305. package/dist/src/components/DateFieldSingle/parts.d.ts +16 -0
  306. package/dist/src/components/DateFieldYearless/DateFieldYearless.d.ts +2 -2
  307. package/dist/src/components/DateFieldYearless/index.d.ts +1 -1
  308. package/dist/src/components/DateFieldYearless/parts.d.ts +15 -0
  309. package/dist/src/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +2 -2
  310. package/dist/src/components/DateFieldYearlessRange/parts.d.ts +12 -0
  311. package/dist/src/components/Details/index.d.ts +2 -2
  312. package/dist/src/components/Dialog/index.d.ts +4 -4
  313. package/dist/src/components/DndSort/index.d.ts +3 -3
  314. package/dist/src/components/Drawer/index.d.ts +4 -4
  315. package/dist/src/components/DrillDown/DrillDown.d.ts +11 -0
  316. package/dist/src/components/Grid/index.d.ts +1 -1
  317. package/dist/src/components/List/index.d.ts +1 -1
  318. package/dist/src/components/Listbox/index.d.ts +2 -2
  319. package/dist/src/components/Menu/index.d.ts +1 -1
  320. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  321. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  322. package/dist/src/components/MultiSelectField/internal/types.d.ts +3 -1
  323. package/dist/src/components/MultiSelectField/parts.d.ts +20 -0
  324. package/dist/src/components/MultiSelectField/types.d.ts +2 -2
  325. package/dist/src/components/MultiSelectMenu/parts.d.ts +12 -0
  326. package/dist/src/components/MultiSelectMenu/types.d.ts +3 -2
  327. package/dist/src/components/Overflow/index.d.ts +1 -1
  328. package/dist/src/components/Pagination/Pagination.d.ts +4 -3
  329. package/dist/src/components/Pagination/parts.d.ts +28 -0
  330. package/dist/src/components/Popover/index.d.ts +4 -4
  331. package/dist/src/components/Radio/index.d.ts +2 -2
  332. package/dist/src/components/SelectCard/index.d.ts +1 -1
  333. package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  334. package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  335. package/dist/src/components/SelectField/parts.d.ts +18 -0
  336. package/dist/src/components/SelectField/types.d.ts +7 -2
  337. package/dist/src/components/SelectMenu/internal/useMenuInteraction.d.ts +15 -7
  338. package/dist/src/components/SelectMenu/parts.d.ts +12 -0
  339. package/dist/src/components/SelectMenu/types.d.ts +3 -2
  340. package/dist/src/components/SelectTrigger/internal/SelectTriggerBase.d.ts +6 -5
  341. package/dist/src/components/SideNav/index.d.ts +3 -3
  342. package/dist/src/components/Stepper/index.d.ts +6 -6
  343. package/dist/src/components/Tab/index.d.ts +3 -3
  344. package/dist/src/components/TimeField/index.d.ts +1 -1
  345. package/dist/src/components/Toolbar/Toolbar.d.ts +3 -3
  346. package/dist/src/components/Toolbar/index.d.ts +5 -5
  347. package/dist/src/components/Toolbar/parts.d.ts +18 -0
  348. package/dist/src/components/Tooltip/index.d.ts +2 -2
  349. package/dist/src/internal/components/Popover/index.d.ts +4 -4
  350. package/dist/src/internal/constants/anvParts.d.ts +81 -0
  351. package/dist/src/internal/testing/anvPartsContract.d.ts +24 -0
  352. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +3 -1
  353. package/dist/src/providers/ThemeProvider/index.d.ts +2 -2
  354. package/dist/src/providers/TrackingProvider/index.d.ts +1 -1
  355. package/dist/src/types/index.d.ts +3 -3
  356. package/dist/{stripInlineMarkdown-BZzgG-Zm.js → stripInlineMarkdown-BfNNOWPk.js} +2 -2
  357. package/dist/{stripInlineMarkdown-BZzgG-Zm.js.map → stripInlineMarkdown-BfNNOWPk.js.map} +1 -1
  358. package/dist/{syncFilterUtils-BVclVovw.js → syncFilterUtils-YB6gRuuR.js} +14 -7
  359. package/dist/syncFilterUtils-YB6gRuuR.js.map +1 -0
  360. package/dist/{treeSync-oC-VZpP0.js → treeSync-DOen59wP.js} +26 -6
  361. package/dist/treeSync-DOen59wP.js.map +1 -0
  362. package/dist/{useAdaptiveView-AvsDkChF.js → useAdaptiveView-DmhhcX-B.js} +8 -6
  363. package/dist/useAdaptiveView-DmhhcX-B.js.map +1 -0
  364. package/dist/useChipLayout-BWZfKDgd.js.map +1 -1
  365. package/dist/{useDrilldown-PmrZ4BXn.js → useDrilldown-UAm0-l1l.js} +13 -6
  366. package/dist/{useDrilldown-PmrZ4BXn.js.map → useDrilldown-UAm0-l1l.js.map} +1 -1
  367. package/dist/useFocusWithin-hi77jsrB.js.map +1 -1
  368. package/dist/{useInfiniteCombobox-C78WQZx4.js → useInfiniteCombobox-V94SoOiU.js} +128 -79
  369. package/dist/useInfiniteCombobox-V94SoOiU.js.map +1 -0
  370. package/dist/useInitialFocus-BUxEDMEG.js.map +1 -1
  371. package/dist/useLayoutPropsUtil-DjqeAJZ9.js.map +1 -1
  372. package/dist/{useMenuInteraction-NEJXUD4I.js → useMenuInteraction-nNF1dsrp.js} +14 -5
  373. package/dist/useMenuInteraction-nNF1dsrp.js.map +1 -0
  374. package/dist/{useNumberField-D_ic9i2q.js → useNumberField-CXFYUZ_n.js} +4 -2
  375. package/dist/useNumberField-CXFYUZ_n.js.map +1 -0
  376. package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
  377. package/dist/useSize.js.map +1 -1
  378. package/dist/useSwipe-Cp-CJxLU.js.map +1 -1
  379. package/package.json +8 -6
  380. package/dist/AiMark-voHPSerQ.js.map +0 -1
  381. package/dist/Alert-CPe0yh6A.js.map +0 -1
  382. package/dist/Announcement-DU0J4111.js.map +0 -1
  383. package/dist/Breadcrumbs-VzOM2nBU.js.map +0 -1
  384. package/dist/Button-BNzCI47m.js.map +0 -1
  385. package/dist/ButtonLink-PlW08u41.js.map +0 -1
  386. package/dist/ButtonToggle-DBGc7dIn.js.map +0 -1
  387. package/dist/Calendar-CekTYzdT.js.map +0 -1
  388. package/dist/Calendar-MRUB0XU7.js.map +0 -1
  389. package/dist/Checkbox-C3rtd-Xe.js.map +0 -1
  390. package/dist/Checkbox-zz9TyZWn.js.map +0 -1
  391. package/dist/Chip-CxgryK86.js.map +0 -1
  392. package/dist/DataTable-Bvsijiqn.js.map +0 -1
  393. package/dist/DateFieldRange-CP7QgS6P.js.map +0 -1
  394. package/dist/DateFieldSingle-CgMPTi1v.js.map +0 -1
  395. package/dist/DateFieldYearless-BDSbVQx0.js.map +0 -1
  396. package/dist/DateFieldYearlessRange-Dk7HVYTA.js.map +0 -1
  397. package/dist/DaysOfTheWeek-Ci-SKebP.js.map +0 -1
  398. package/dist/Details-DkteVZbk.js.map +0 -1
  399. package/dist/Dialog-BxulNN8n.js.map +0 -1
  400. package/dist/DialogCancelButton-DmSUPuCR.js.map +0 -1
  401. package/dist/Drawer-DzvM9MRB.js.map +0 -1
  402. package/dist/EditCard-ZpF032WP.js.map +0 -1
  403. package/dist/FieldLabel-Cm5A1Jcx.js.map +0 -1
  404. package/dist/FilterBar-DBVW3LL3.js.map +0 -1
  405. package/dist/Flex-Bb3iHExM.js.map +0 -1
  406. package/dist/Grid-ho1pGJ5L.js.map +0 -1
  407. package/dist/Helper-B_VAFgGd.js.map +0 -1
  408. package/dist/Icon-B4uCvMU9.js.map +0 -1
  409. package/dist/InputMask-CX6XiOOm.js.map +0 -1
  410. package/dist/Link-C7dtI5K6.js.map +0 -1
  411. package/dist/ListView-DpveXOsN.js.map +0 -1
  412. package/dist/Listbox-Cdwaofd2.js.map +0 -1
  413. package/dist/Menu-DmEXQLXt.js.map +0 -1
  414. package/dist/MenuFooter-Ck9L599M.js.map +0 -1
  415. package/dist/MultiSelectFieldSync-B1tkEtft.js.map +0 -1
  416. package/dist/MultiSelectMenuSync-Deki_z-0.js.map +0 -1
  417. package/dist/NumberField-CjC6KHKl.js.map +0 -1
  418. package/dist/Page-BreBQ3pG.js.map +0 -1
  419. package/dist/Pagination-CmqAut6y.js.map +0 -1
  420. package/dist/Popover-CdRuNv3C.js.map +0 -1
  421. package/dist/ProgressBar-065vjsQ0.js.map +0 -1
  422. package/dist/Radio-D9w_-JYw.js.map +0 -1
  423. package/dist/Radio-dyLcVmUw.js.map +0 -1
  424. package/dist/RichTextEditor-byoMZaJy.js.map +0 -1
  425. package/dist/SavedFiltersButton-BHgS4akL.js.map +0 -1
  426. package/dist/SearchField-B7fIOJf-.js.map +0 -1
  427. package/dist/SearchField-X4B7f23E.js.map +0 -1
  428. package/dist/SegmentedControl-Be6jCglV.js.map +0 -1
  429. package/dist/SelectCard-CMSG_ba1.js.map +0 -1
  430. package/dist/SelectFieldLabel-dKVBaki2.js.map +0 -1
  431. package/dist/SelectFieldSync-VShqP5J0.js.map +0 -1
  432. package/dist/SelectMenuSync-BDx1yhZT.js.map +0 -1
  433. package/dist/SelectOptions-BIVTviOh.js.map +0 -1
  434. package/dist/SelectTrigger-APxYfL3V.js.map +0 -1
  435. package/dist/SelectTriggerBase-lYieONTb.js.map +0 -1
  436. package/dist/SideNav-DoxX8Vi-.js.map +0 -1
  437. package/dist/Stepper-CvaR7OoT.js.map +0 -1
  438. package/dist/Switch-Bm3qqjd6.js.map +0 -1
  439. package/dist/Tab-Cy4G562A.js.map +0 -1
  440. package/dist/Text-mDcQHC2U.js.map +0 -1
  441. package/dist/TextField-CUVsDfWo.js.map +0 -1
  442. package/dist/TextField-WQTlqKso.js.map +0 -1
  443. package/dist/Textarea-CW3KGuB9.js.map +0 -1
  444. package/dist/TimeField-JA3gXyS7.js.map +0 -1
  445. package/dist/Toaster-DMZng3Im.js.map +0 -1
  446. package/dist/Toaster-fPcgIF7Q.js.map +0 -1
  447. package/dist/Toolbar-BfGcDXgC.js.map +0 -1
  448. package/dist/Toolbar-Dlu39v69.js.map +0 -1
  449. package/dist/ToolbarButtonToggle-3xbnm1Qr.js.map +0 -1
  450. package/dist/TreeSelectFieldSync-CdtC8d3Q.js.map +0 -1
  451. package/dist/TreeSelectMenuSync-CPuQWUNU.js.map +0 -1
  452. package/dist/TypeaheadTextField-BkLECKZY.js.map +0 -1
  453. package/dist/YearlessDateInputWithPicker-DLtMQhDw.js.map +0 -1
  454. package/dist/bulkActionTypes-CTKwMpO7.js.map +0 -1
  455. package/dist/filter-state-DKXF5MeW.js.map +0 -1
  456. package/dist/index-SZMmvI3D.js.map +0 -1
  457. package/dist/syncFilterUtils-BVclVovw.js.map +0 -1
  458. package/dist/treeSync-oC-VZpP0.js.map +0 -1
  459. package/dist/useAdaptiveView-AvsDkChF.js.map +0 -1
  460. package/dist/useInfiniteCombobox-C78WQZx4.js.map +0 -1
  461. package/dist/useMenuInteraction-NEJXUD4I.js.map +0 -1
  462. package/dist/useNumberField-D_ic9i2q.js.map +0 -1
@@ -732,9 +732,8 @@
732
732
  opacity: var(--a2-table-resize-handle-opacity, 1);
733
733
  position: absolute;
734
734
  touch-action: none;
735
- -webkit-user-select: none;
736
- -moz-user-select: none;
737
- user-select: none;
735
+ -moz-user-select: none;
736
+ user-select: none;
738
737
  width: var(--a2-size-3);
739
738
  }th:hover ._resize-handle_18cik_4, div[role=columnheader]:hover ._resize-handle_18cik_4 {
740
739
  --a2-table-resize-handle-bg: var(--a2-overlay-color-hover);
@@ -1,14 +1,15 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-BGg5dgfl.js';
2
3
  import { c as maskitoDateRangeOptionsGenerator, a as maskitoWithPlaceholder, u as useMaskito, b as maskitoParseDate } from './index.esm-C2ZhC_8d.js';
3
- import { T as TextField } from './TextField-CUVsDfWo.js';
4
+ import { T as TextField } from './TextField-CzzvLI5_.js';
4
5
  import { forwardRef, useState, useRef, useEffect, useMemo, useImperativeHandle, useCallback } from 'react';
5
- import { u as useMergeRefs, P as Popover } from './AiMark-voHPSerQ.js';
6
- import { I as Icon } from './Icon-B4uCvMU9.js';
6
+ import { u as useMergeRefs, P as Popover } from './AiMark-2_O4tKv_.js';
7
+ import { I as Icon } from './Icon-B5zwN7GD.js';
7
8
  import { D as DateModeToPlaceholderMap, a as DateModeToFormatMap, S as SvgEvent, j as jsDateToUtcDateTime, c as convertStringToDate, T as TimezoneMessage, i as isoToUtcDate, v as validateDate } from './TimezoneMessage-BrKB_psP.js';
8
9
  import { m as makeZeroShortcutPreprocessor } from './makeZeroShortcutPreprocessor-CxsiGTRW.js';
9
10
  import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
10
11
  import { D as DateTime } from './luxon-wpz4A-OQ.js';
11
- import { a as Calendar } from './Calendar-CekTYzdT.js';
12
+ import { a as Calendar } from './Calendar-D_fqe0-J.js';
12
13
  import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
13
14
  import { m as mergeRefs } from './useMergeRefs-Dfmtq9cI.js';
14
15
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
@@ -140,21 +141,24 @@ const MaskedDateRangeInput = forwardRef(
140
141
  }
141
142
  });
142
143
  }, [mode, halfPlaceholder]);
143
- return /* @__PURE__ */ jsx(
144
- TextField,
145
- {
146
- ref: combinedRef,
147
- "data-start-date": startDate?.toISODate() ?? "",
148
- "data-end-date": endDate?.toISODate() ?? "",
149
- "data-input-valid": currentParsedData.isInputValid,
150
- "data-input-empty": currentParsedData.isInputEmpty,
151
- ...props,
152
- showCounter: false,
153
- value: inputValue,
154
- onChange: handleChange,
155
- prefix: /* @__PURE__ */ jsx(Icon, { svg: SvgEvent }),
156
- hint: disableHint ? void 0 : `Format: ${mode}`
157
- }
144
+ return (
145
+ // anv-parts-allow-interactive -- PARTS.input forwarded via {...props} from DateFieldRange
146
+ /* @__PURE__ */ jsx(
147
+ TextField,
148
+ {
149
+ ref: combinedRef,
150
+ "data-start-date": startDate?.toISODate() ?? "",
151
+ "data-end-date": endDate?.toISODate() ?? "",
152
+ "data-input-valid": currentParsedData.isInputValid,
153
+ "data-input-empty": currentParsedData.isInputEmpty,
154
+ ...props,
155
+ showCounter: false,
156
+ value: inputValue,
157
+ onChange: handleChange,
158
+ prefix: /* @__PURE__ */ jsx(Icon, { svg: SvgEvent }),
159
+ hint: disableHint ? void 0 : `Format: ${mode}`
160
+ }
161
+ )
158
162
  );
159
163
  }
160
164
  );
@@ -412,6 +416,12 @@ const DateFieldRangeCalendar = ({
412
416
  ] });
413
417
  };
414
418
 
419
+ const PARTS = {
420
+ input: COMMON_PART.dateInput,
421
+ popover: COMMON_PART.popover,
422
+ calendar: COMMON_PART.dateCalendar
423
+ };
424
+
415
425
  function validateDateRange({
416
426
  required,
417
427
  startDate,
@@ -455,9 +465,15 @@ const DateFieldRange = (props) => {
455
465
  unavailable: unavailableProp,
456
466
  onChange: onChangeProp,
457
467
  timezone,
468
+ disabled,
458
469
  ...rest
459
470
  } = props;
460
471
  const popoverRef = useRef(null);
472
+ useEffect(() => {
473
+ if (disabled) {
474
+ popoverRef.current?.closePopover();
475
+ }
476
+ }, [disabled]);
461
477
  const handleInputKeyDown = (ev) => {
462
478
  if (ev.key === "ArrowDown") {
463
479
  ev.preventDefault();
@@ -528,6 +544,7 @@ const DateFieldRange = (props) => {
528
544
  }, [required, startDate, endDate, minDate, maxDate, unavailable]);
529
545
  const commonFieldProps = {
530
546
  ...rest,
547
+ disabled,
531
548
  mode,
532
549
  label,
533
550
  onChange: handleInputChange,
@@ -535,8 +552,10 @@ const DateFieldRange = (props) => {
535
552
  endDate: endDate ?? null,
536
553
  required,
537
554
  autoComplete: "off",
555
+ "data-anv": "date-field-range",
538
556
  "data-date-range-valid": currentValidity,
539
557
  "data-tracking-id": trackingId,
558
+ [ANV_PART_ATTR]: PARTS.input,
540
559
  "aria-label": label ? void 0 : "Select a date range"
541
560
  };
542
561
  const justTheField = /* @__PURE__ */ jsx(MaskedDateRangeInput, { ...commonFieldProps, ref: inputRef });
@@ -564,27 +583,35 @@ const DateFieldRange = (props) => {
564
583
  }
565
584
  );
566
585
  } }),
567
- /* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-testid": "calendar-popover", children: /* @__PURE__ */ jsx(
568
- DateFieldRangeCalendar,
586
+ /* @__PURE__ */ jsx(
587
+ Popover.Content,
569
588
  {
570
- startDate,
571
- endDate,
572
- onSelection: (v) => {
573
- if (v.endDate) {
574
- inputRef.current?.focus();
575
- popoverRef.current?.closePopover();
589
+ ref: popoverContentRef,
590
+ "data-testid": "calendar-popover",
591
+ ...{ [ANV_PART_ATTR]: PARTS.popover },
592
+ children: /* @__PURE__ */ jsx("div", { ...{ [ANV_PART_ATTR]: PARTS.calendar }, children: /* @__PURE__ */ jsx(
593
+ DateFieldRangeCalendar,
594
+ {
595
+ startDate,
596
+ endDate,
597
+ onSelection: (v) => {
598
+ if (v.endDate) {
599
+ inputRef.current?.focus();
600
+ popoverRef.current?.closePopover();
601
+ }
602
+ handleCalendarSelection(v);
603
+ },
604
+ minDate,
605
+ maxDate,
606
+ unavailable,
607
+ timezone
576
608
  }
577
- handleCalendarSelection(v);
578
- },
579
- minDate,
580
- maxDate,
581
- unavailable,
582
- timezone
609
+ ) })
583
610
  }
584
- ) })
611
+ )
585
612
  ] }) });
586
613
  };
587
614
  DateFieldRange.displayName = "DateFieldRange";
588
615
 
589
616
  export { DateFieldRange as D, MaskedDateRangeInput as M, useDateFieldRangeState as a, DateFieldRangeCalendar as b, useDateFieldRangeConversion as u };
590
- //# sourceMappingURL=DateFieldRange-CP7QgS6P.js.map
617
+ //# sourceMappingURL=DateFieldRange-DUFfyknZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFieldRange-DUFfyknZ.js","sources":["../src/components/DateFieldRange/internal/maskito/dateRangePlaceholderMask.ts","../src/components/DateFieldRange/internal/MaskedDateRangeInput.tsx","../src/components/DateFieldRange/internal/useDateFieldRangeConversion.ts","../src/components/DateFieldRange/internal/useDateFieldRangeState.ts","../src/components/DateFieldRange/internal/DateFieldRangeCalendar.tsx","../src/components/DateFieldRange/parts.ts","../src/components/DateFieldRange/internal/utils.ts","../src/components/DateFieldRange/DateFieldRange.tsx"],"sourcesContent":["import type { MaskitoOptions } from \"@maskito/core\";\nimport {\n type MaskitoDateMode,\n maskitoDateRangeOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\n\nexport type DateMode = Extract<\n MaskitoDateMode,\n \"dd/mm/yyyy\" | \"mm/dd/yyyy\" | \"yyyy/mm/dd\"\n>;\n\nconst datePlaceholderMask = ({\n mode,\n dateSeparator = \"/\",\n rangeSeparator = \" - \",\n placeholder,\n}: {\n mode: DateMode;\n dateSeparator?: string;\n rangeSeparator?: string;\n placeholder: string;\n}) => {\n const dateRangeOptions = maskitoDateRangeOptionsGenerator({\n mode,\n dateSeparator,\n rangeSeparator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateRangeOptions,\n plugins: plugins.concat(dateRangeOptions.plugins || []),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateRangeOptions.preprocessors,\n makeZeroShortcutPreprocessor(placeholder, dateSeparator),\n ],\n postprocessors: [\n // NOTE this is super fragile. If Maskito maintainers change the order of the post-processors, this will break.\n // The last postprocessor is the date swap postprocessor, which we don't want to run.\n // A unit test is added to ensure this doesn't break on a dependency update.\n ...dateRangeOptions.postprocessors.slice(0, -1),\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n return { options: datePlaceholderMask, removePlaceholder };\n};\n\nexport default datePlaceholderMask;\n","import { maskitoParseDate } from \"@maskito/kit\";\nimport { useMaskito } from \"@maskito/react\";\nimport {\n TextField,\n type TextFieldProps,\n} from \"../../TextField/internal/TextField\";\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport type { DateTime } from \"luxon\";\nimport { Icon } from \"../../Icon\";\nimport Event from \"@servicetitan/hammer-icon/mdi/round/event.svg\";\nimport dateRangePlaceholderMask from \"./maskito/dateRangePlaceholderMask\";\nimport {\n DateModeToFormatMap,\n DateModeToPlaceholderMap,\n} from \"../../DateFieldSingle/internal/constants\";\nimport type { DateMode } from \"../../DateFieldSingle/types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport { jsDateToUtcDateTime } from \"../../DateFieldSingle/internal/utils\";\n\nconst RANGE_SEPARATOR = \" - \";\n\nexport type MaskedDateRangeInputChange = {\n startDate: DateTime | null;\n endDate: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type MaskedDateRangeInputChangeHandler = (\n change: MaskedDateRangeInputChange,\n) => void;\n\nexport type MaskedDateRangeInputProps = Omit<\n TextFieldProps,\n \"onChange\" | \"value\" | \"ref\" | \"showCounter\" | \"hint\" | \"prefix\"\n> & {\n onChange: MaskedDateRangeInputChangeHandler;\n mode?: DateMode;\n startDate: DateTime | null;\n endDate: DateTime | null;\n disableHint?: boolean;\n};\n\nexport type MaskedDateRangeInputRef = HTMLInputElement & {\n setDateRange: (startDate: DateTime | null, endDate: DateTime | null) => void;\n};\n\n/**\n * A masked date input component that allows for the input of a date in a specific format.\n *\n * Provides a `setDates` method that can be used to set the date from outside the component (e.g from a calendar).\n *\n * @internal This component is not intended to be used directly in consumer code.\n *\n * @param props - The props for the MaskedDateRangeInput component.\n * @param props.onChange - The function to call when the date changes.\n * @param props.mode - The mode of the date input.\n * @param props.startDate - The start date.\n * @param props.endDate - The end date.\n * @param props.disableHint - Whether to disable the hint.\n */\nexport const MaskedDateRangeInput = forwardRef<\n MaskedDateRangeInputRef,\n MaskedDateRangeInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd/yyyy\",\n startDate,\n endDate,\n disableHint = false,\n ...props\n },\n ref,\n ) => {\n const halfPlaceholder = DateModeToPlaceholderMap[mode];\n const fullPlaceholder = `${halfPlaceholder}${RANGE_SEPARATOR}${halfPlaceholder}`;\n\n // Tracks the value of the input as it is being typed.\n const [inputValue, setInputValue] = useState(fullPlaceholder);\n\n const { options, removePlaceholder } = dateRangePlaceholderMask({\n mode,\n placeholder: fullPlaceholder,\n dateSeparator: \"/\",\n rangeSeparator: RANGE_SEPARATOR,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousStartDate = usePrevious(startDate);\n const previousEndDate = usePrevious(endDate);\n const previousMode = usePrevious(mode);\n\n // Update the input value when the mode changes.\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((previousInputValue) =>\n swapMode(previousInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, fullPlaceholder, previousMode]);\n\n // Update the input value when the parent's start date or end date changes.\n useEffect(() => {\n if (startDate === undefined || endDate === undefined) return;\n // Return early if the values haven't actually changed.\n if (startDate === previousStartDate && endDate === previousEndDate)\n return;\n if (\n // plus one just represents a date that is guaranteed to be different.\n startDate?.equals(previousStartDate ?? startDate?.plus({ days: 1 })) &&\n (endDate?.equals(previousEndDate ?? endDate?.plus({ days: 1 })) ||\n endDate === previousEndDate)\n )\n return;\n const startDateString =\n startDate?.toFormat(DateModeToFormatMap[mode]) ?? halfPlaceholder;\n const endDateString =\n endDate?.toFormat(DateModeToFormatMap[mode]) ?? halfPlaceholder;\n const newInputValue = `${startDateString}${RANGE_SEPARATOR}${endDateString}`;\n setInputValue(newInputValue);\n }, [\n startDate,\n endDate,\n mode,\n halfPlaceholder,\n previousStartDate,\n previousEndDate,\n ]);\n\n const currentParsedData = useMemo(() => {\n return parseRangeInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const {\n startDate: newlyParsedStartDate,\n endDate: newlyParsedEndDate,\n isInputValid,\n isInputEmpty,\n isHalfEmpty,\n } = parseRangeInputValue(event.target.value, mode, removePlaceholder);\n\n // We only want to call onChange for substantive changes.\n // This is to avoid unnecessary re-renders of upstream components.\n const isValueDifferent =\n isInputValid !== currentParsedData.isInputValid || // The input has changed validity\n isInputEmpty !== currentParsedData.isInputEmpty || // The input has changed emptiness\n (newlyParsedStartDate === null) !==\n (currentParsedData.startDate === null) || // The start date has changed from empty to non-empty or vice versa\n (newlyParsedEndDate === null) !==\n (currentParsedData.endDate === null) || // The end date has changed from empty to non-empty or vice versa\n isHalfEmpty !== currentParsedData.isHalfEmpty || // The half has changed from empty to non-empty or vice versa\n (newlyParsedStartDate !== null &&\n currentParsedData.startDate !== null &&\n !newlyParsedStartDate.equals(currentParsedData.startDate)) || // The start date has changed\n (newlyParsedEndDate !== null &&\n currentParsedData.endDate !== null &&\n !newlyParsedEndDate.equals(currentParsedData.endDate)); // The end date has changed\n\n // If the value has not changed, we do not need to call onChange.\n if (!isValueDifferent) return;\n onChange?.({\n startDate: isInputEmpty\n ? null\n : (newlyParsedStartDate ?? startDate ?? null),\n endDate:\n isInputEmpty || isHalfEmpty\n ? null\n : (newlyParsedEndDate ?? endDate ?? null),\n isInputValid,\n isInputEmpty,\n });\n };\n\n // Extend the input ref with additional methods.\n // This provides a way to set the input value from outside the component.\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as MaskedDateRangeInputRef;\n return Object.assign(input, {\n setDateRange: (\n startDate: DateTime | null,\n endDate: DateTime | null,\n ) => {\n const startDateString = startDate?.toFormat(\n DateModeToFormatMap[mode],\n );\n const endDateString = endDate?.toFormat(DateModeToFormatMap[mode]);\n const newInputValue = `${startDateString ?? halfPlaceholder}${RANGE_SEPARATOR}${endDateString ?? halfPlaceholder}`;\n setInputValue(newInputValue);\n },\n });\n }, [mode, halfPlaceholder]);\n\n return (\n // anv-parts-allow-interactive -- PARTS.input forwarded via {...props} from DateFieldRange\n <TextField\n ref={combinedRef}\n data-start-date={startDate?.toISODate() ?? \"\"}\n data-end-date={endDate?.toISODate() ?? \"\"}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n {...props}\n showCounter={false}\n value={inputValue}\n onChange={handleChange}\n prefix={<Icon svg={Event} />}\n hint={disableHint ? undefined : `Format: ${mode}`}\n />\n );\n },\n);\n\nMaskedDateRangeInput.displayName = \"MaskedDateRangeInput\";\n\nfunction parseRangeInputValue(\n value: string,\n mode: DateMode,\n removePlaceholder: (value: string) => string,\n) {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [startDate, endDate] = valueMinusPlaceholder.split(RANGE_SEPARATOR);\n const startJsDate = maskitoParseDate(startDate, { mode });\n const endJsDate = endDate ? maskitoParseDate(endDate, { mode }) : null;\n const startLuxonDate = startJsDate ? jsDateToUtcDateTime(startJsDate) : null;\n const endLuxonDate = endJsDate ? jsDateToUtcDateTime(endJsDate) : null;\n return {\n startDate: startLuxonDate,\n endDate: endLuxonDate,\n isInputValid: !!(startLuxonDate && endLuxonDate), // input valid if both dates are filled\n isInputEmpty: valueMinusPlaceholder === \"\", // input empty if nothing is typed\n isHalfEmpty: endDate === undefined,\n };\n}\n\nfunction swapMode(inputString: string, previousMode: DateMode, mode: DateMode) {\n const halves = inputString.split(RANGE_SEPARATOR);\n const segments = halves.map((half) => half.split(\"/\"));\n\n let startDay, startMonth, startYear, endDay, endMonth, endYear;\n if (previousMode === \"mm/dd/yyyy\") {\n startDay = segments[0][1];\n startMonth = segments[0][0];\n startYear = segments[0][2];\n endDay = segments[1][1];\n endMonth = segments[1][0];\n endYear = segments[1][2];\n }\n if (previousMode === \"dd/mm/yyyy\") {\n startDay = segments[0][0];\n startMonth = segments[0][1];\n startYear = segments[0][2];\n endDay = segments[1][0];\n endMonth = segments[1][1];\n endYear = segments[1][2];\n }\n if (previousMode === \"yyyy/mm/dd\") {\n startDay = segments[0][2];\n startMonth = segments[0][1];\n startYear = segments[0][0];\n endDay = segments[1][2];\n endMonth = segments[1][1];\n endYear = segments[1][0];\n }\n\n if (mode === \"mm/dd/yyyy\") {\n return `${startMonth}/${startDay}/${startYear}${RANGE_SEPARATOR}${endMonth}/${endDay}/${endYear}`;\n }\n if (mode === \"dd/mm/yyyy\") {\n return `${startDay}/${startMonth}/${startYear}${RANGE_SEPARATOR}${endDay}/${endMonth}/${endYear}`;\n }\n if (mode === \"yyyy/mm/dd\") {\n return `${startYear}/${startMonth}/${startDay}${RANGE_SEPARATOR}${endYear}/${endMonth}/${endDay}`;\n }\n\n return inputString;\n}\n","import { useCallback, useMemo } from \"react\";\nimport type {\n DateFieldRangeChange,\n DateFieldRangeProps,\n} from \"../DateFieldRange\";\nimport { convertStringToDate } from \"../../DateFieldSingle/internal/utils\";\nimport type { DateTime } from \"luxon\";\n\n/**\n * This hook is used to convert the string props of a DateFieldRange component to a DateTime format.\n *\n * @param props - The props of the DateFieldRange component.\n * @returns The normalized value, defaultValue, minDate, maxDate, and unavailable dates in DateTime format.\n * @internal This hook is not intended to be used directly in consumer code.\n */\nexport const useDateFieldRangeConversion = (props: DateFieldRangeProps) => {\n const { value, defaultValue, minDate, maxDate, unavailable, onChange } =\n props;\n\n const normalizedValue = useMemo(() => {\n if (value === null || value === undefined) return value;\n return {\n startDate: convertStringToDate(value.startDate) ?? null,\n endDate: convertStringToDate(value.endDate) ?? null,\n };\n }, [value]);\n\n const normalizedDefaultValue = useMemo(() => {\n if (defaultValue === null || defaultValue === undefined)\n return defaultValue;\n return {\n startDate: convertStringToDate(defaultValue.startDate) ?? null,\n endDate: convertStringToDate(defaultValue.endDate) ?? null,\n };\n }, [defaultValue]);\n\n const normalizedMinDate = useMemo(\n () => convertStringToDate(minDate),\n [minDate],\n );\n const normalizedMaxDate = useMemo(\n () => convertStringToDate(maxDate),\n [maxDate],\n );\n\n const normalizedUnavailableDates = useMemo(() => {\n return unavailable?.dates\n ?.map((date) => convertStringToDate(date))\n .filter((date) => date !== null && date !== undefined);\n }, [unavailable?.dates]);\n\n const handleChange = useCallback(\n (\n change: Omit<DateFieldRangeChange, \"startDate\" | \"endDate\"> & {\n startDate: DateTime | null;\n endDate: DateTime | null;\n },\n ) => {\n onChange?.({\n ...change,\n startDate: change.startDate?.toISODate() ?? null,\n endDate: change.endDate?.toISODate() ?? null,\n });\n },\n [onChange],\n );\n\n return {\n value: normalizedValue,\n defaultValue: normalizedDefaultValue,\n minDate: normalizedMinDate,\n maxDate: normalizedMaxDate,\n unavailable: {\n dates: normalizedUnavailableDates,\n daysOfWeek: unavailable?.daysOfWeek,\n },\n onChange: handleChange,\n };\n};\n","import type { DateTime } from \"luxon\";\nimport { useOptionallyControlledState } from \"../../../internal/hooks\";\nimport type { MaskedDateRangeInputChange } from \"./MaskedDateRangeInput\";\n\nexport type DateFieldRangeStateChange = {\n startDate: DateTime | null;\n endDate: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type DateFieldRangeStateChangeHandler = (\n change: DateFieldRangeStateChange,\n) => void;\n\nexport type DateFieldRangeStateParam = {\n /**\n * The controlled value of the start date.\n */\n valueProp?: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n } | null;\n /**\n * The default value of the start date.\n */\n defaultValueProp?: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n } | null;\n /**\n * The function to call when the state changes.\n */\n onChange: DateFieldRangeStateChangeHandler;\n};\n\n/**\n * This hook is used to keep the state of a DateFieldRange component in sync with the input and calendar.\n */\nexport type DateFieldRangeState = {\n /**\n * The start date.\n */\n startDate: DateTime | null;\n /**\n * The end date.\n */\n endDate: DateTime | null;\n /**\n * The function to set the start date.\n */\n setStartDate: (date: DateTime | null) => void;\n /**\n * The function to set the end date.\n */\n setEndDate: (date: DateTime | null) => void;\n /**\n * The function to handle the input change.\n */\n handleInputChange: (change: MaskedDateRangeInputChange) => void;\n /**\n * The function to handle the calendar selection.\n */\n handleCalendarSelection: ({\n startDate,\n endDate,\n }: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => void;\n};\n\n/**\n * This is a hook for keeping state in sync between a date input and calendar.\n */\nexport function useDateFieldRangeState({\n valueProp,\n defaultValueProp,\n onChange,\n}: DateFieldRangeStateParam): DateFieldRangeState {\n const [startDate, setStartDate] =\n useOptionallyControlledState<DateTime | null>({\n controlledValue:\n valueProp !== undefined ? valueProp?.startDate : undefined,\n defaultValue:\n defaultValueProp !== undefined\n ? defaultValueProp?.startDate\n : undefined,\n });\n const [endDate, setEndDate] = useOptionallyControlledState<DateTime | null>({\n controlledValue: valueProp !== undefined ? valueProp?.endDate : undefined,\n defaultValue:\n defaultValueProp !== undefined ? defaultValueProp?.endDate : undefined,\n });\n\n const setSharedValue = (value: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => {\n setStartDate(value.startDate);\n setEndDate(value.endDate);\n };\n\n const handleInputChange = (change: MaskedDateRangeInputChange) => {\n const range = change.isInputEmpty\n ? null\n : {\n startDate: change.startDate?.startOf(\"day\") ?? null,\n endDate: change.endDate?.startOf(\"day\") ?? null,\n };\n\n onChange?.({\n startDate: range?.startDate ?? null,\n endDate: range?.endDate ?? null,\n isInputValid: change.isInputValid,\n isInputEmpty: change.isInputEmpty,\n });\n\n setStartDate(range?.startDate ?? null);\n setEndDate(range?.endDate ?? null);\n };\n\n const handleCalendarSelection = ({\n startDate,\n endDate,\n }: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => {\n setSharedValue({ startDate, endDate });\n onChange?.({\n startDate,\n endDate,\n isInputValid: true,\n isInputEmpty: false,\n });\n };\n\n return {\n startDate,\n endDate,\n setStartDate,\n setEndDate,\n handleInputChange,\n handleCalendarSelection,\n };\n}\n","import { DateTime, type WeekdayNumbers } from \"luxon\";\nimport { Calendar, type CalendarRangeValue } from \"../../Calendar/Calendar\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport type { IanaZone } from \"../../../types\";\nimport { TimezoneMessage } from \"../../DateFieldSingle/internal/TimezoneMessage\";\nimport { isoToUtcDate } from \"../../DateFieldSingle/internal/utils\";\n\nexport type DateFieldRangeCalendarProps = {\n startDate: DateTime | null;\n endDate: DateTime | null;\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n onSelection: ({\n startDate,\n endDate,\n }: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => void;\n minDate?: DateTime | null;\n maxDate?: DateTime | null;\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: WeekdayNumbers[];\n };\n timezone?: IanaZone;\n};\n\nexport const DateFieldRangeCalendar = ({\n startDate,\n endDate,\n onKeyDown,\n onSelection,\n minDate,\n maxDate,\n unavailable,\n timezone: timezoneProp,\n}: DateFieldRangeCalendarProps) => {\n const previousStartDate = usePrevious(startDate);\n const previousEndDate = usePrevious(endDate);\n\n const calendarRef = useRef<HTMLDivElement>(null);\n const focusSentinelRef = useRef<HTMLDivElement>(null);\n\n const timezone: IanaZone = useMemo(() => {\n return (\n timezoneProp ??\n (Intl.DateTimeFormat().resolvedOptions().timeZone as IanaZone)\n );\n }, [timezoneProp]);\n\n // After the user selects a date, the Calendar remounts (due to the key hack\n // below) and focus falls to body. Restore focus to the just-picked date button\n // so consumers that keep the calendar mounted (e.g. FilterDateRange's popover)\n // don't get their focus-out handlers triggered, and keyboard users don't lose\n // their place. Two cases:\n // - start picked, no end yet → focus the start button so the user can\n // continue navigating to pick an end.\n // - end just picked → focus the end button. Consumers that close the popover\n // synchronously on end-pick (legacy DateFieldRange) have already moved\n // focus to their input by rAF time, and the INPUT guard skips us out.\n // Guard: if focus is already on an INPUT (typing) or no longer inside the\n // calendar (consumer moved it elsewhere), skip — the user owns focus.\n useEffect(() => {\n const targetDateId =\n startDate && startDate !== previousStartDate && endDate === null\n ? startDate.toISODate()\n : endDate && endDate !== previousEndDate\n ? endDate.toISODate()\n : null;\n if (!targetDateId) return;\n\n // When typing, the input retains focus. When selecting via calendar keyboard\n // or mouse, the Calendar remounts and focus falls to body. Only restore in\n // the latter case. In Shadow DOM, document.activeElement is the host —\n // traverse into the shadow root to find the actual focused element.\n const root = (calendarRef.current?.getRootNode() ?? document) as\n | Document\n | ShadowRoot;\n const deepActiveEl =\n root.activeElement?.shadowRoot?.activeElement ?? root.activeElement;\n if (deepActiveEl?.tagName === \"INPUT\") return;\n requestAnimationFrame(() => {\n // Re-check the input guard inside rAF: a consumer that closes the popover\n // synchronously on end-pick (legacy DateFieldRange) will have moved focus\n // to its input by now, and we should leave it there.\n const rootNow = (calendarRef.current?.getRootNode() ?? document) as\n | Document\n | ShadowRoot;\n const activeNow =\n rootNow.activeElement?.shadowRoot?.activeElement ??\n rootNow.activeElement;\n if (activeNow?.tagName === \"INPUT\") return;\n calendarRef.current\n ?.querySelector<HTMLButtonElement>(`button[id$=\"${targetDateId}\"]`)\n ?.focus();\n });\n }, [startDate, endDate, previousStartDate, previousEndDate]);\n\n const handleCalendarSelection = (data: { value: CalendarRangeValue }) => {\n if (!data.value) return;\n const calStartDate = data.value.start\n ? isoToUtcDate(data.value.start)\n : null;\n const calEndDate = data.value.end ? isoToUtcDate(data.value.end) : null;\n // Park focus on a stable sentinel inside this component *before* the state\n // update so the Calendar's key-remount doesn't drop focus to body. Without\n // this, host containers that listen for focus-out (e.g. OptionsPopover)\n // close prematurely on end-date pick. The post-remount effect below then\n // restores focus to the just-picked date button via rAF.\n focusSentinelRef.current?.focus();\n onSelection({\n startDate: calStartDate,\n endDate: calEndDate,\n });\n };\n\n const defaultFocusedDate = useMemo(() => {\n const todayISODate = DateTime.now().setZone(timezone).toISODate();\n // Nothing selected, focus today\n if (!startDate && !endDate) return todayISODate;\n if (!startDate) return endDate?.toISODate();\n if (!endDate) return startDate?.toISODate();\n if (endDate && !previousEndDate?.equals(endDate)) {\n return endDate.toISODate();\n } else if (startDate && !previousStartDate?.equals(startDate)) {\n return startDate.toISODate();\n }\n\n if (endDate) return endDate.toISODate();\n if (startDate) return startDate.toISODate();\n return todayISODate;\n }, [previousStartDate, previousEndDate, startDate, endDate, timezone]);\n\n return (\n <>\n <div\n ref={focusSentinelRef}\n tabIndex={-1}\n aria-hidden=\"true\"\n style={{ outline: \"none\", position: \"absolute\", width: 0, height: 0 }}\n />\n <Calendar\n ref={calendarRef}\n // Crappy hack because the Calendar does not update when the value changes.\n key={`${startDate?.toISODate()}-${endDate?.toISODate()}`}\n range={true}\n onKeyDown={onKeyDown}\n defaultFocusedDate={defaultFocusedDate}\n value={{\n start: startDate?.toISODate() || undefined,\n end: endDate?.toISODate() || undefined,\n }}\n onSelection={handleCalendarSelection}\n defaultTimeZone={timezone ?? \"UTC\"}\n minDate={minDate?.toISODate() ?? undefined}\n maxDate={maxDate?.toISODate() ?? undefined}\n unavailable={\n unavailable\n ? {\n dates: unavailable.dates?.map((d) => d.toISODate() ?? \"\"),\n daysOfWeek: unavailable.daysOfWeek,\n }\n : undefined\n }\n _disableAutofocus\n _disableFocus\n />\n <TimezoneMessage timezone={timezone} />\n </>\n );\n};\n","import { COMMON_PART } from \"../../internal/constants/anvParts\";\n\n/**\n * `data-anv-part` names for DateFieldRange's interactive sub-elements.\n *\n * Consumer `data-*` (e.g. `data-cy`) is forwarded to the masked text input —\n * the one element present in every mode (including `disableCalendar`). The\n * calendar and its popover render in the top layer, outside the input's\n * subtree, so target them by part attribute directly or by the popover's\n * `data-testid=\"calendar-popover\"`.\n *\n * Every role is a shared one, so values come from `COMMON_PART`.\n */\nexport const PARTS = {\n input: COMMON_PART.dateInput,\n popover: COMMON_PART.popover,\n calendar: COMMON_PART.dateCalendar,\n} as const;\n","import type { DateTime } from \"luxon\";\nimport { validateDate } from \"../../DateFieldSingle/internal/utils\";\n\ntype DateConstraints = {\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: number[];\n };\n minDate?: DateTime;\n maxDate?: DateTime;\n};\n\nexport function validateDateRange({\n required,\n startDate,\n endDate,\n startDateConstraints,\n endDateConstraints,\n}: {\n required?: boolean;\n startDate: DateTime | null;\n endDate: DateTime | null;\n startDateConstraints: DateConstraints;\n endDateConstraints: DateConstraints;\n}) {\n if (!required && !startDate && !endDate) return true;\n return (\n validateDate({\n date: startDate,\n constraints: { ...startDateConstraints, required: true },\n }) &&\n validateDate({\n date: endDate,\n constraints: { ...endDateConstraints, required: true },\n }) &&\n (!startDate || !endDate || startDate <= endDate)\n );\n}\n","import { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport type { DataAttributes, DataTrackingId, IanaZone } from \"../../types\";\nimport { ANV_PART_ATTR } from \"../../internal/constants/anvParts\";\nimport { PARTS } from \"./parts\";\nimport {\n MaskedDateRangeInput,\n type MaskedDateRangeInputProps,\n type MaskedDateRangeInputRef,\n} from \"./internal/MaskedDateRangeInput\";\nimport type { DateMode } from \"../DateFieldSingle/types\";\nimport { DateFieldRangeCalendar } from \"./internal/DateFieldRangeCalendar\";\nimport { type Ref, useEffect, useMemo, useRef } from \"react\";\nimport { useDateFieldRangeConversion } from \"./internal/useDateFieldRangeConversion\";\nimport {\n type DateFieldRangeStateChange,\n useDateFieldRangeState,\n} from \"./internal/useDateFieldRangeState\";\nimport { useFocusWithin } from \"../../internal/hooks\";\nimport { validateDateRange } from \"./internal/utils\";\nimport Popover from \"../../internal/components/Popover\";\nimport { mergeRefs } from \"../../hooks/useMergeRefs/useMergeRefs\";\n\nexport type DateFieldRangeChange = {\n /**\n * The start date in ISO 8601 format.\n * @example \"2025-03-22\"\n */\n startDate: string | null;\n /**\n * The end date in ISO 8601 format.\n * @example \"2025-07-02\"\n */\n endDate: string | null;\n /**\n * Whether the input field contains two parsable dates.\n * This is not the same as the date range being valid.\n *\n */\n isInputValid: boolean;\n /**\n * Whether the input field is empty.\n */\n isInputEmpty: boolean;\n /**\n * Whether the start and end dates are valid according to the constraints.\n * Constraints include:\n * - Required\n * - Unavailable dates\n * - Unavailable days of the week\n * - Min date\n * - Max date\n */\n isDateRangeValid: boolean;\n};\n\nexport type DateFieldRangeChangeHandler = (\n change: DateFieldRangeChange,\n) => void;\n\nexport type DateFieldRangeValue = {\n startDate: string | null;\n endDate: string | null;\n} | null;\n\nexport type DateFieldRangeProps = Omit<\n MaskedDateRangeInputProps,\n | \"onChange\"\n | \"value\"\n | \"autoComplete\"\n | \"onClick\"\n | \"onKeyDown\"\n | \"ref\"\n | \"required\"\n | \"startDate\"\n | \"endDate\"\n | \"defaultValue\"\n | \"onFocus\"\n | \"onBlur\"\n> & {\n value?: DateFieldRangeValue;\n defaultValue?: DateFieldRangeValue;\n onChange?: DateFieldRangeChangeHandler;\n mode?: Extract<DateMode, \"mm/dd/yyyy\" | \"dd/mm/yyyy\">;\n disableHint?: boolean;\n disableCalendar?: boolean;\n unavailable?: {\n dates?: string[];\n daysOfWeek?: (1 | 2 | 3 | 4 | 5 | 6 | 7)[];\n };\n minDate?: string;\n maxDate?: string;\n required?: boolean;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n /**\n * The IANA timezone to use for the calendar. Controls the meaning of the \"Today\"\n * button and which month/year is initially displayed. When the timezone differs\n * from the user's locale timezone, a disambiguation message is shown below the calendar.\n * @example \"America/Los_Angeles\"\n */\n timezone?: IanaZone;\n} & DataTrackingId &\n DataAttributes;\n\n/**\n * DateFieldRange component for entering a start and end date via a masked\n * text input, with an optional popover calendar for picking the range\n * visually.\n *\n * Features:\n * - Masked start/end date input with configurable mm/dd/yyyy or dd/mm/yyyy mode\n * - Optional popover range calendar\n * - Min/max date and unavailable-date/day-of-week constraints applied to both ends\n * - Reports input validity and range validity separately via `onChange`\n * - Full keyboard support (arrow-down opens the calendar from the input)\n *\n * @example\n * <DateFieldRange\n * label=\"Trip dates\"\n * value={{ startDate: \"2025-07-02\", endDate: \"2025-07-10\" }}\n * onChange={({ startDate, endDate, isDateRangeValid }) =>\n * console.log(startDate, endDate, isDateRangeValid)\n * }\n * />\n */\nexport const DateFieldRange = (props: DateFieldRangeProps) => {\n const { aiMark, ...labelPropsWithoutAiMark } = props.labelProps || {};\n\n const data = {\n label: childrenToString(props.label),\n labelProps: labelPropsWithoutAiMark,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldRange\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const {\n onFocus,\n onBlur,\n disableCalendar,\n required,\n mode,\n label,\n value: valueProp,\n defaultValue: defaultValueProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n onChange: onChangeProp,\n timezone,\n disabled,\n ...rest\n } = props;\n\n const popoverRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n\n useEffect(() => {\n if (disabled) {\n popoverRef.current?.closePopover();\n }\n }, [disabled]);\n\n const handleInputKeyDown = (ev: React.KeyboardEvent<HTMLInputElement>) => {\n if (ev.key === \"ArrowDown\") {\n ev.preventDefault();\n popoverRef.current?.openPopover();\n requestAnimationFrame(() => {\n popoverContentRef.current?.querySelector(\"button\")?.focus();\n });\n }\n };\n\n const { props: wrapperProps } = useFocusWithin({\n onBlur: (e) => {\n onBlur?.(e);\n popoverRef.current?.closePopover();\n },\n onFocus: onFocus,\n });\n\n const { value, defaultValue, minDate, maxDate, unavailable, onChange } =\n useDateFieldRangeConversion({\n value: valueProp,\n defaultValue: defaultValueProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n onChange: onChangeProp,\n });\n\n const inputRef = useRef<MaskedDateRangeInputRef>(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n\n const handleChange = (change: DateFieldRangeStateChange) => {\n const sharedConstraints = {\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n };\n\n onChange?.({\n startDate: change.startDate?.startOf(\"day\") ?? null,\n endDate: change.endDate?.startOf(\"day\") ?? null,\n isInputValid: change.isInputValid,\n isInputEmpty: change.isInputEmpty,\n isDateRangeValid: validateDateRange({\n required: required,\n startDate: change.startDate?.startOf(\"day\") ?? null,\n endDate: change.endDate?.startOf(\"day\") ?? null,\n startDateConstraints: sharedConstraints,\n endDateConstraints: sharedConstraints,\n }),\n });\n };\n\n const { startDate, endDate, handleInputChange, handleCalendarSelection } =\n useDateFieldRangeState({\n valueProp: value,\n defaultValueProp: defaultValue,\n onChange: handleChange,\n });\n\n const currentValidity = useMemo(() => {\n return validateDateRange({\n required,\n startDate,\n endDate,\n startDateConstraints: {\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n endDateConstraints: {\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n });\n }, [required, startDate, endDate, minDate, maxDate, unavailable]);\n\n const commonFieldProps = {\n ...rest,\n disabled,\n mode,\n label,\n onChange: handleInputChange,\n startDate: startDate ?? null,\n endDate: endDate ?? null,\n required,\n autoComplete: \"off\",\n \"data-anv\": \"date-field-range\",\n \"data-date-range-valid\": currentValidity,\n \"data-tracking-id\": trackingId,\n [ANV_PART_ATTR]: PARTS.input,\n \"aria-label\": label ? undefined : \"Select a date range\",\n };\n\n const justTheField = (\n <MaskedDateRangeInput {...commonFieldProps} ref={inputRef} />\n );\n\n if (disableCalendar) {\n return justTheField;\n }\n\n return (\n <div {...wrapperProps}>\n <Popover ref={popoverRef} placement=\"bottom-start\" role=\"grid\">\n <Popover.Trigger>\n {({ ref: iRef, onKeyDown }) => {\n const mergedRef = mergeRefs([\n inputRef,\n iRef as Ref<HTMLInputElement>,\n ]);\n return (\n <MaskedDateRangeInput\n {...commonFieldProps}\n ref={mergedRef}\n onKeyDown={(ev) => {\n onKeyDown?.(ev);\n handleInputKeyDown(ev);\n }}\n onClick={() => popoverRef.current?.openPopover()}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n );\n }}\n </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n data-testid=\"calendar-popover\"\n {...{ [ANV_PART_ATTR]: PARTS.popover }}\n >\n {/* DateFieldRangeCalendar does not forward arbitrary props, so the\n part attribute goes on a wrapping element. */}\n <div {...{ [ANV_PART_ATTR]: PARTS.calendar }}>\n <DateFieldRangeCalendar\n startDate={startDate}\n endDate={endDate}\n onSelection={(v) => {\n if (v.endDate) {\n inputRef.current?.focus();\n popoverRef.current?.closePopover();\n }\n handleCalendarSelection(v);\n }}\n minDate={minDate}\n maxDate={maxDate}\n unavailable={unavailable}\n timezone={timezone}\n />\n </div>\n </Popover.Content>\n </Popover>\n </div>\n );\n};\n\nDateFieldRange.displayName = \"DateFieldRange\";\n"],"names":["datePlaceholderMask","dateRangePlaceholderMask","startDate","endDate","Event"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { D as DateFieldRange } from './DateFieldRange-CP7QgS6P.js';
1
+ export { D as DateFieldRange } from './DateFieldRange-DUFfyknZ.js';
2
2
  //# sourceMappingURL=DateFieldRange.js.map
@@ -1,20 +1,27 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-BGg5dgfl.js';
2
3
  import { forwardRef, useState, useRef, useEffect, useMemo, useImperativeHandle, useCallback } from 'react';
3
4
  import { m as maskitoDateOptionsGenerator, a as maskitoWithPlaceholder, u as useMaskito, b as maskitoParseDate } from './index.esm-C2ZhC_8d.js';
4
- import { T as TextField } from './TextField-CUVsDfWo.js';
5
- import { u as useMergeRefs, P as Popover } from './AiMark-voHPSerQ.js';
5
+ import { T as TextField } from './TextField-CzzvLI5_.js';
6
+ import { u as useMergeRefs, P as Popover } from './AiMark-2_O4tKv_.js';
6
7
  import { D as DateTime } from './luxon-wpz4A-OQ.js';
7
8
  import { m as makeZeroShortcutPreprocessor } from './makeZeroShortcutPreprocessor-CxsiGTRW.js';
8
- import { I as Icon } from './Icon-B4uCvMU9.js';
9
+ import { I as Icon } from './Icon-B5zwN7GD.js';
9
10
  import { D as DateModeToPlaceholderMap, a as DateModeToFormatMap, S as SvgEvent, j as jsDateToUtcDateTime, c as convertStringToDate, T as TimezoneMessage, i as isoToUtcDate, v as validateDate } from './TimezoneMessage-BrKB_psP.js';
10
11
  import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
11
12
  import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
12
- import { a as Calendar } from './Calendar-CekTYzdT.js';
13
+ import { a as Calendar } from './Calendar-D_fqe0-J.js';
13
14
  import { m as mergeRefs } from './useMergeRefs-Dfmtq9cI.js';
14
15
  import { u as useFocusWithin } from './useFocusWithin-hi77jsrB.js';
15
16
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
16
17
  import { useTrackingId } from './useTrackingId.js';
17
18
 
19
+ const PARTS = {
20
+ input: COMMON_PART.dateInput,
21
+ popover: COMMON_PART.popover,
22
+ calendar: COMMON_PART.dateCalendar
23
+ };
24
+
18
25
  const datePlaceholderMask = ({
19
26
  mode,
20
27
  separator = "/",
@@ -109,20 +116,23 @@ const MaskedDateInput = forwardRef(
109
116
  }
110
117
  });
111
118
  }, [mode, placeholder]);
112
- return /* @__PURE__ */ jsx(
113
- TextField,
114
- {
115
- ref: combinedRef,
116
- "data-date": lastValidDate?.toISODate() ?? "",
117
- "data-input-valid": currentParsedData.isInputValid,
118
- "data-input-empty": currentParsedData.isInputEmpty,
119
- ...props,
120
- showCounter: false,
121
- value: inputValue,
122
- onChange: handleChange,
123
- prefix: /* @__PURE__ */ jsx(Icon, { svg: SvgEvent }),
124
- hint: disableHint ? void 0 : `Format: ${mode}`
125
- }
119
+ return (
120
+ // anv-parts-allow-interactive -- PARTS.input forwarded via {...props} from DateFieldSingle
121
+ /* @__PURE__ */ jsx(
122
+ TextField,
123
+ {
124
+ ref: combinedRef,
125
+ "data-date": lastValidDate?.toISODate() ?? "",
126
+ "data-input-valid": currentParsedData.isInputValid,
127
+ "data-input-empty": currentParsedData.isInputEmpty,
128
+ ...props,
129
+ showCounter: false,
130
+ value: inputValue,
131
+ onChange: handleChange,
132
+ prefix: /* @__PURE__ */ jsx(Icon, { svg: SvgEvent }),
133
+ hint: disableHint ? void 0 : `Format: ${mode}`
134
+ }
135
+ )
126
136
  );
127
137
  }
128
138
  );
@@ -324,9 +334,15 @@ const DateFieldSingle = (props) => {
324
334
  onChange: onChangeProp,
325
335
  label,
326
336
  timezone,
337
+ disabled,
327
338
  ...rest
328
339
  } = props;
329
340
  const popoverRef = useRef(null);
341
+ useEffect(() => {
342
+ if (disabled) {
343
+ popoverRef.current?.closePopover();
344
+ }
345
+ }, [disabled]);
330
346
  const inputRef = useRef(null);
331
347
  const {
332
348
  value: normalizedValue,
@@ -392,14 +408,17 @@ const DateFieldSingle = (props) => {
392
408
  };
393
409
  const commonFieldProps = {
394
410
  ...rest,
411
+ disabled,
395
412
  label,
396
413
  mode,
397
414
  onChange: handleInputChange,
398
415
  lastValidDate: value,
399
416
  required,
400
417
  autoComplete: "off",
418
+ "data-anv": "date-field-single",
401
419
  "data-date-valid": currentValidity,
402
420
  "data-tracking-id": trackingId,
421
+ [ANV_PART_ATTR]: PARTS.input,
403
422
  "aria-label": label ? void 0 : "Select a Date"
404
423
  };
405
424
  if (disableCalendar) {
@@ -426,24 +445,33 @@ const DateFieldSingle = (props) => {
426
445
  }
427
446
  );
428
447
  } }),
429
- /* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-testid": "calendar-popover", children: /* @__PURE__ */ jsx(
430
- DateFieldSingleCalendar,
448
+ /* @__PURE__ */ jsx(
449
+ Popover.Content,
431
450
  {
432
- value,
433
- onSelection: (v) => {
434
- inputRef.current?.focus();
435
- handleCalendarSelection(v);
436
- popoverRef.current?.closePopover();
437
- },
438
- minDate,
439
- maxDate,
440
- unavailable,
441
- timezone
451
+ ref: popoverContentRef,
452
+ "data-testid": "calendar-popover",
453
+ ...{ [ANV_PART_ATTR]: PARTS.popover },
454
+ children: /* @__PURE__ */ jsx(
455
+ DateFieldSingleCalendar,
456
+ {
457
+ value,
458
+ onSelection: (v) => {
459
+ inputRef.current?.focus();
460
+ handleCalendarSelection(v);
461
+ popoverRef.current?.closePopover();
462
+ },
463
+ minDate,
464
+ maxDate,
465
+ unavailable,
466
+ timezone,
467
+ ...{ [ANV_PART_ATTR]: PARTS.calendar }
468
+ }
469
+ )
442
470
  }
443
- ) })
471
+ )
444
472
  ] }) });
445
473
  };
446
474
  DateFieldSingle.displayName = "DateFieldSingle";
447
475
 
448
476
  export { DateFieldSingle as D, MaskedDateInput as M, useDateFieldSingleState as a, DateFieldSingleCalendar as b, useDateFieldSingleConversion as u };
449
- //# sourceMappingURL=DateFieldSingle-CgMPTi1v.js.map
477
+ //# sourceMappingURL=DateFieldSingle-BZjlO0hX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFieldSingle-BZjlO0hX.js","sources":["../src/components/DateFieldSingle/parts.ts","../src/components/DateFieldSingle/internal/maskito/datePlaceholderMask.ts","../src/components/DateFieldSingle/internal/MaskedDateInput.tsx","../src/components/DateFieldSingle/internal/useDateFieldSingleConversion.ts","../src/components/DateFieldSingle/internal/useDateFieldSingleState.ts","../src/components/DateFieldSingle/internal/DateFieldSingleCalendar.tsx","../src/components/DateFieldSingle/DateFieldSingle.tsx"],"sourcesContent":["import { COMMON_PART } from \"../../internal/constants/anvParts\";\n\n/**\n * `data-anv-part` names for DateFieldSingle's interactive sub-elements.\n *\n * Consumer `data-*` (e.g. `data-cy`) is forwarded to the masked text input —\n * the one element present in every mode (including `disableCalendar`). The\n * calendar and its popover render in the top layer, outside the input's\n * subtree, so target them by part attribute directly or by the popover's\n * `data-testid=\"calendar-popover\"`.\n *\n * Every role is a shared one, so values come from `COMMON_PART`.\n */\nexport const PARTS = {\n input: COMMON_PART.dateInput,\n popover: COMMON_PART.popover,\n calendar: COMMON_PART.dateCalendar,\n} as const;\n","import type { MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\nimport { makeZeroShortcutPreprocessor } from \"./makeZeroShortcutPreprocessor\";\nimport type { DateMode } from \"../../types\";\n\nconst datePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n}: {\n mode: DateMode;\n separator?: string;\n placeholder: string;\n}) => {\n const dateOptions = maskitoDateOptionsGenerator({\n mode,\n separator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateOptions,\n plugins: plugins.concat(dateOptions.plugins || []),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateOptions.preprocessors,\n makeZeroShortcutPreprocessor(mode, separator),\n ],\n postprocessors: [\n ...dateOptions.postprocessors,\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n return { options: datePlaceholderMask, removePlaceholder };\n};\n\nexport default datePlaceholderMask;\n","import { maskitoParseDate } from \"@maskito/kit\";\nimport { useMaskito } from \"@maskito/react\";\nimport {\n TextField,\n type TextFieldProps,\n} from \"../../TextField/internal/TextField\";\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { DateTime } from \"luxon\";\nimport datePlaceholderMask from \"./maskito/datePlaceholderMask\";\nimport { Icon } from \"../../Icon\";\nimport Event from \"@servicetitan/hammer-icon/mdi/round/event.svg\";\nimport { DateModeToFormatMap, DateModeToPlaceholderMap } from \"./constants\";\nimport type { DateMode } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport { jsDateToUtcDateTime } from \"./utils\";\n\nexport type MaskedDateInputChange = {\n date: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type MaskedDateInputChangeHandler = (\n change: MaskedDateInputChange,\n) => void;\n\nexport type MaskedDateInputProps = Omit<\n TextFieldProps,\n \"onChange\" | \"value\" | \"ref\" | \"showCounter\" | \"hint\" | \"prefix\"\n> & {\n onChange: MaskedDateInputChangeHandler;\n mode?: DateMode;\n lastValidDate: DateTime | null;\n disableHint?: boolean;\n};\n\nexport type MaskedDateInputRef = HTMLInputElement & {\n setDate: (date: DateTime | null) => void;\n};\n\n/**\n * A masked date input component that allows for the input of a date in a specific format.\n *\n * Provides a `setDate` method that can be used to set the date from outside the component (e.g from a calendar).\n *\n * @internal This component is not intended to be used directly in consumer code.\n *\n * @param props - The props for the MaskedDateInput component.\n * @param props.onChange - The function to call when the date changes.\n * @param props.mode - The mode of the date input.\n */\nexport const MaskedDateInput = forwardRef<\n MaskedDateInputRef,\n MaskedDateInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd/yyyy\",\n lastValidDate,\n disableHint = false,\n ...props\n },\n ref,\n ) => {\n const placeholder = DateModeToPlaceholderMap[mode];\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder } = datePlaceholderMask({\n mode,\n placeholder,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousDateRef = useRef<DateTime | null>(null);\n const previousMode = usePrevious(mode);\n\n // Update the input value when the mode changes.\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((oldInputValue) =>\n swapMode(oldInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, previousMode]);\n\n // Update the input value when the parent's date changes.\n useEffect(() => {\n if (lastValidDate === undefined) return;\n if (lastValidDate === previousDateRef.current) return; // Note: Reference equality is intentional here\n if (!lastValidDate?.equals(previousDateRef.current ?? DateTime.now())) {\n setInputValue(\n lastValidDate?.toFormat(DateModeToFormatMap[mode]) ?? placeholder,\n );\n previousDateRef.current = lastValidDate;\n }\n }, [lastValidDate, mode, placeholder]);\n\n const currentParsedData = useMemo(() => {\n return parseInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const { date, isInputValid, isInputEmpty } = parseInputValue(\n event.target.value,\n mode,\n removePlaceholder,\n );\n\n // We only want to call onChange for substantive changes.\n // This is to avoid unnecessary re-renders of upstream components.\n const isValueDifferent =\n isInputValid !== currentParsedData.isInputValid || // The input has changed validity\n isInputEmpty !== currentParsedData.isInputEmpty || // The input has changed emptiness\n (date === null) !== (currentParsedData.date === null) || // The input has changed from empty to non-empty or vice versa\n (date !== null &&\n lastValidDate !== null &&\n !date.equals(lastValidDate)); // The date has changed\n\n // If the value has not changed, we do not need to call onChange.\n if (!isValueDifferent) return;\n onChange?.({\n date: date ?? lastValidDate ?? null,\n isInputValid,\n isInputEmpty,\n });\n };\n\n // Extend the input ref with additional methods.\n // This provides a way to set the input value from outside the component.\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as MaskedDateInputRef;\n return Object.assign(input, {\n setDate: (date: DateTime | null) => {\n setInputValue(\n date?.toFormat(DateModeToFormatMap[mode]) ?? placeholder,\n );\n },\n });\n }, [mode, placeholder]);\n\n return (\n // anv-parts-allow-interactive -- PARTS.input forwarded via {...props} from DateFieldSingle\n <TextField\n ref={combinedRef}\n data-date={lastValidDate?.toISODate() ?? \"\"}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n {...props}\n showCounter={false}\n value={inputValue}\n onChange={handleChange}\n prefix={<Icon svg={Event} />}\n hint={disableHint ? undefined : `Format: ${mode}`}\n />\n );\n },\n);\n\nMaskedDateInput.displayName = \"MaskedDateInput\";\n\nfunction parseInputValue(\n value: string,\n mode: DateMode,\n removePlaceholder: (value: string) => string,\n) {\n const valueMinusPlaceholder = removePlaceholder(value);\n const jsDate = maskitoParseDate(valueMinusPlaceholder, { mode });\n const luxonDate = jsDate ? jsDateToUtcDateTime(jsDate) : null;\n return {\n date: luxonDate,\n isInputValid: !!luxonDate,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\nfunction swapMode(inputString: string, previousMode: DateMode, mode: DateMode) {\n const { day, month, year } = divideSegments(inputString, previousMode);\n return orderSegmentsByMode(day, month, year, mode);\n}\n\nfunction divideSegments(\n value: string,\n mode: DateMode,\n): {\n day: string;\n month: string;\n year: string;\n} {\n const [segment1, segment2, segment3] = value.split(\"/\");\n if (mode === \"dd/mm/yyyy\") {\n return { day: segment1, month: segment2, year: segment3 };\n } else if (mode === \"mm/dd/yyyy\") {\n return { day: segment2, month: segment1, year: segment3 };\n } else if (mode === \"yyyy/mm/dd\") {\n return { day: segment3, month: segment2, year: segment1 };\n }\n return { day: \"__\", month: \"__\", year: \"____\" };\n}\n\nfunction orderSegmentsByMode(\n day: string,\n month: string,\n year: string,\n mode: DateMode,\n) {\n if (mode === \"dd/mm/yyyy\") {\n return `${day}/${month}/${year}`;\n } else if (mode === \"mm/dd/yyyy\") {\n return `${month}/${day}/${year}`;\n } else if (mode === \"yyyy/mm/dd\") {\n return `${year}/${month}/${day}`;\n } else {\n return \"\";\n }\n}\n","import { useCallback, useMemo } from \"react\";\nimport { convertStringToDate } from \"./utils\";\nimport type {\n DateFieldSingleChange,\n DateFieldSingleProps,\n} from \"../DateFieldSingle\";\nimport type { DateTime, WeekdayNumbers } from \"luxon\";\n\nexport type DateFieldSingleConversion = {\n /**\n * The current value of the date field.\n */\n value?: DateTime | null;\n /**\n * The default (uncontrolled) value of the date field.\n */\n defaultValue?: DateTime | null;\n /**\n * The minimum date of the date field.\n */\n minDate?: DateTime | null;\n /**\n * The maximum date of the date field.\n */\n maxDate?: DateTime | null;\n /**\n * The unavailable dates of the date field.\n */\n unavailable: {\n /**\n * The unavailable dates of the date field.\n */\n dates?: DateTime[];\n /**\n * The unavailable days of the week of the date field.\n */\n daysOfWeek?: WeekdayNumbers[];\n };\n /**\n * The callback for when the date changes.\n */\n onChange: (\n change: Omit<DateFieldSingleChange, \"date\"> & { date: DateTime | null },\n ) => void;\n};\n\n/**\n * Converts the props of the DateFieldSingle component to Luxon DateTime objects for easier internal use.\n * @param props - The props of the DateFieldSingle component using ISO 8601 strings.\n * @returns The converted props using Luxon DateTime objects.\n */\nexport function useDateFieldSingleConversion({\n value,\n defaultValue,\n minDate,\n maxDate,\n unavailable,\n onChange,\n}: DateFieldSingleProps): DateFieldSingleConversion {\n const normalizedValue = useMemo(() => convertStringToDate(value), [value]);\n const normalizedDefaultValue = useMemo(\n () => convertStringToDate(defaultValue),\n [defaultValue],\n );\n const normalizedMinDate = useMemo(\n () => convertStringToDate(minDate),\n [minDate],\n );\n const normalizedMaxDate = useMemo(\n () => convertStringToDate(maxDate),\n [maxDate],\n );\n const normalizedUnavailableDates = useMemo(\n () =>\n unavailable?.dates\n ?.map((d) => convertStringToDate(d))\n .filter((d) => d !== null && d !== undefined),\n [unavailable?.dates],\n );\n\n const handleChange = useCallback(\n (\n change: Omit<DateFieldSingleChange, \"date\"> & { date: DateTime | null },\n ) => {\n onChange?.({\n ...change,\n date: change.date?.toISODate() ?? null,\n });\n },\n [onChange],\n );\n\n return {\n value: normalizedValue,\n defaultValue: normalizedDefaultValue,\n minDate: normalizedMinDate,\n maxDate: normalizedMaxDate,\n unavailable: {\n dates: normalizedUnavailableDates,\n daysOfWeek: unavailable?.daysOfWeek,\n },\n onChange: handleChange,\n };\n}\n","import type { DateTime } from \"luxon\";\nimport { useOptionallyControlledState } from \"../../../internal/hooks\";\nimport type { MaskedDateInputChange } from \"./MaskedDateInput\";\n\nexport type DateFieldSingleStateChange = {\n date: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type DateFieldSingleStateChangeHandler = (\n change: DateFieldSingleStateChange,\n) => void;\n\nexport type DateFieldSingleStateParam = {\n /**\n * The controlled value of the date field.\n */\n valueProp?: DateTime | null;\n /**\n * The default (uncontrolled) value of the date field.\n */\n defaultValueProp?: DateTime | null;\n /**\n * Callback for when the date changes.\n */\n onChange: DateFieldSingleStateChangeHandler;\n};\n\nexport type DateFieldSingleState = {\n /**\n * The current value (DateTime) of the date field.\n */\n value: DateTime | null;\n /**\n * Sets the value of the date field.\n */\n setValue: (value: DateTime | null) => void;\n /**\n * Handles the change of the input field.\n */\n handleInputChange: (change: MaskedDateInputChange) => void;\n /**\n * Handles the selection of a date in the calendar.\n */\n handleCalendarSelection: (date: DateTime) => void;\n};\n\n/**\n * This is a hook for keeping state in sync between a date input and calendar.\n */\nexport function useDateFieldSingleState({\n valueProp,\n defaultValueProp,\n onChange,\n}: DateFieldSingleStateParam): DateFieldSingleState {\n const [value, setValue] = useOptionallyControlledState<DateTime | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n\n const handleInputChange = (change: MaskedDateInputChange) => {\n const date = change.isInputEmpty\n ? null\n : (change.date?.startOf(\"day\") ?? null);\n onChange?.({\n date,\n isInputValid: change.isInputValid,\n isInputEmpty: change.isInputEmpty,\n });\n if (change.isInputValid) {\n setValue(change.isInputEmpty ? null : change.date);\n }\n if (change.isInputEmpty) {\n setValue(null);\n return;\n }\n if (change.date) {\n setValue(change.date);\n }\n };\n\n const handleCalendarSelection = (date: DateTime) => {\n setValue(date);\n onChange?.({\n date,\n isInputValid: true,\n isInputEmpty: false,\n });\n };\n\n return {\n value,\n setValue,\n handleInputChange,\n handleCalendarSelection,\n };\n}\n","import { DateTime, type WeekdayNumbers } from \"luxon\";\nimport {\n Calendar,\n type CalendarProps,\n type CalendarValue,\n} from \"../../Calendar\";\nimport type { IanaZone } from \"../../../types\";\nimport { TimezoneMessage } from \"./TimezoneMessage\";\nimport { isoToUtcDate } from \"./utils\";\nimport { useMemo } from \"react\";\n\ntype DateFieldSingleCalendarProps = Omit<\n CalendarProps,\n | \"onSelection\"\n | \"value\"\n | \"onKeyDown\"\n | \"defaultFocusedDate\"\n | \"range\"\n | \"defaultTimeZone\"\n | \"unavailable\"\n | \"minDate\"\n | \"maxDate\"\n | \"defaultValue\"\n | \"_disableAutofocus\"\n> & {\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n value: DateTime | null;\n onSelection: (date: DateTime) => void;\n minDate?: DateTime | null;\n maxDate?: DateTime | null;\n unavailable?: { dates?: DateTime[]; daysOfWeek?: WeekdayNumbers[] };\n timezone?: IanaZone;\n};\n\nexport function DateFieldSingleCalendar({\n onKeyDown,\n value,\n onSelection,\n minDate,\n maxDate,\n unavailable,\n timezone: timezoneProp,\n ...rest\n}: DateFieldSingleCalendarProps) {\n const timezone: IanaZone = useMemo(() => {\n return (\n timezoneProp ??\n (Intl.DateTimeFormat().resolvedOptions().timeZone as IanaZone)\n );\n }, [timezoneProp]);\n\n const handleCalendarSelection = (data: { value: CalendarValue }) => {\n if (data.value) {\n const date = isoToUtcDate(data.value);\n onSelection(date);\n }\n };\n\n return (\n <>\n <Calendar\n {...rest}\n range={false}\n onKeyDown={onKeyDown}\n defaultFocusedDate={\n value?.toISODate() || DateTime.now().setZone(timezone).toISODate()\n }\n value={value?.toISODate() || undefined}\n onSelection={handleCalendarSelection}\n defaultTimeZone={timezone}\n minDate={minDate?.toISODate() ?? undefined}\n maxDate={maxDate?.toISODate() ?? undefined}\n unavailable={\n unavailable\n ? {\n dates: unavailable.dates?.map((d) => d.toISODate() ?? \"\"),\n daysOfWeek: unavailable.daysOfWeek,\n }\n : undefined\n }\n _disableAutofocus\n _disableFocus\n />\n <TimezoneMessage timezone={timezone} />\n </>\n );\n}\n","import { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport type { DataAttributes, DataTrackingId, IanaZone } from \"../../types\";\nimport Popover from \"../../internal/components/Popover\";\nimport { ANV_PART_ATTR } from \"../../internal/constants/anvParts\";\nimport { PARTS } from \"./parts\";\nimport { type Ref, useEffect, useMemo, useRef } from \"react\";\nimport {\n MaskedDateInput,\n type MaskedDateInputProps,\n type MaskedDateInputRef,\n} from \"./internal/MaskedDateInput\";\nimport type { DateMode } from \"./types\";\nimport { useDateFieldSingleConversion } from \"./internal/useDateFieldSingleConversion\";\nimport {\n type DateFieldSingleStateChangeHandler,\n useDateFieldSingleState,\n} from \"./internal/useDateFieldSingleState\";\nimport { validateDate } from \"./internal/utils\";\nimport { useFocusWithin } from \"../../internal/hooks\";\nimport { DateFieldSingleCalendar } from \"./internal/DateFieldSingleCalendar\";\nimport { mergeRefs } from \"../../hooks/useMergeRefs/useMergeRefs\";\n\nexport type DateFieldSingleProps = Omit<\n MaskedDateInputProps,\n | \"onChange\"\n | \"value\"\n | \"autoComplete\"\n | \"onClick\"\n | \"onKeyDown\"\n | \"ref\"\n | \"lastValidDate\"\n | \"setLastValidDate\"\n | \"required\"\n | \"onFocus\"\n | \"onBlur\"\n> & {\n value?: string | null;\n defaultValue?: string | null;\n onChange?: DateFieldSingleChangeHandler;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n mode?: Extract<DateMode, \"mm/dd/yyyy\" | \"dd/mm/yyyy\">;\n disableHint?: boolean;\n disableCalendar?: boolean;\n unavailable?: {\n /**\n * The specific dates that are unavailable. ISO 8601 format.\n * @example [\"2025-07-02\"]\n */\n dates?: string[];\n /**\n * The days of the week that are unavailable.\n * (1-7, where 1 is Monday and 7 is Sunday)\n */\n daysOfWeek?: (1 | 2 | 3 | 4 | 5 | 6 | 7)[];\n };\n minDate?: string;\n maxDate?: string;\n required?: boolean;\n /**\n * The IANA timezone to use for the calendar. Controls the meaning of the \"Today\"\n * button and which month/year is initially displayed. When the timezone differs\n * from the user's locale timezone, a disambiguation message is shown below the calendar.\n * @example \"America/Los_Angeles\"\n */\n timezone?: IanaZone;\n} & DataTrackingId &\n DataAttributes;\n\nexport type DateFieldSingleChange = {\n /**\n * The date in ISO 8601 format.\n * @example \"2025-07-02\"\n */\n date: string | null;\n /**\n * Whether the input is valid. That is, it matches the format and is not empty.\n * This does not mean that the date is valid according to the constraints.\n */\n isInputValid: boolean;\n /**\n * Whether the input is empty.\n */\n isInputEmpty: boolean;\n /**\n * Whether the date is valid according to the constraints.\n * Constraints include:\n * - Required\n * - Unavailable dates\n * - Unavailable days of the week\n * - Min date\n * - Max date\n */\n isDateValid: boolean;\n};\n\nexport type DateFieldSingleChangeHandler = (\n change: DateFieldSingleChange,\n) => void;\n\n/**\n * DateFieldSingle component for entering a single date via a masked text\n * input, with an optional popover calendar for picking the date visually.\n *\n * Features:\n * - Masked date input with configurable mm/dd/yyyy or dd/mm/yyyy mode\n * - Optional popover calendar (disable with `disableCalendar`)\n * - Min/max date and unavailable-date/day-of-week constraints\n * - Timezone-aware \"Today\" navigation via `timezone`\n * - Reports input validity and constraint validity separately via `onChange`\n * - Full keyboard support (arrow-down opens the calendar from the input)\n *\n * @example\n * <DateFieldSingle\n * label=\"Appointment date\"\n * value=\"2025-07-02\"\n * onChange={({ date, isDateValid }) => console.log(date, isDateValid)}\n * minDate=\"2025-01-01\"\n * />\n */\nexport const DateFieldSingle = (props: DateFieldSingleProps) => {\n const { aiMark, ...labelPropsWithoutAiMark } = props.labelProps || {};\n\n const data = {\n label: childrenToString(props.label),\n labelProps: labelPropsWithoutAiMark,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldSingle\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const {\n onFocus,\n onBlur,\n disableCalendar,\n required,\n mode,\n value: valueProp,\n defaultValue: defaultValueProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n onChange: onChangeProp,\n label,\n timezone,\n disabled,\n ...rest\n } = props;\n\n const popoverRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n\n useEffect(() => {\n if (disabled) {\n popoverRef.current?.closePopover();\n }\n }, [disabled]);\n\n const inputRef = useRef<MaskedDateInputRef>(null);\n // We convert any props that deal in ISO 8601 strings to Luxon DateTime objects for easier internal use.\n const {\n value: normalizedValue,\n defaultValue: normalizedDefaultValue,\n minDate,\n maxDate,\n unavailable,\n onChange,\n } = useDateFieldSingleConversion({\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n });\n\n const handleChange: DateFieldSingleStateChangeHandler = (change) => {\n onChange?.({\n ...change,\n isDateValid: validateDate({\n date: change.date,\n constraints: {\n required,\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n }),\n });\n };\n\n // We use a hook to keep the value of input and the calendar in sync.\n const { value, handleInputChange, handleCalendarSelection } =\n useDateFieldSingleState({\n valueProp: normalizedValue,\n defaultValueProp: normalizedDefaultValue,\n onChange: handleChange,\n });\n\n const { props: wrapperProps } = useFocusWithin({\n onBlur: (e) => {\n onBlur?.(e);\n popoverRef.current?.closePopover();\n },\n onFocus,\n });\n\n const popoverContentRef = useRef<HTMLDivElement>(null);\n\n const currentValidity = useMemo(\n () =>\n validateDate({\n date: value,\n constraints: {\n required,\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const handleInputKeyDown = (ev: React.KeyboardEvent<HTMLInputElement>) => {\n if (ev.key === \"ArrowDown\") {\n popoverRef.current?.openPopover();\n requestAnimationFrame(() => {\n popoverContentRef.current?.querySelector(\"button\")?.focus();\n });\n }\n };\n\n const commonFieldProps = {\n ...rest,\n disabled,\n label,\n mode,\n onChange: handleInputChange,\n lastValidDate: value,\n required,\n autoComplete: \"off\",\n \"data-anv\": \"date-field-single\",\n \"data-date-valid\": currentValidity,\n \"data-tracking-id\": trackingId,\n [ANV_PART_ATTR]: PARTS.input,\n \"aria-label\": label ? undefined : \"Select a Date\",\n };\n if (disableCalendar) {\n return <MaskedDateInput ref={inputRef} {...commonFieldProps} />;\n }\n\n return (\n <div {...wrapperProps}>\n <Popover ref={popoverRef} placement=\"bottom-start\" role=\"grid\">\n <Popover.Trigger>\n {({ ref: iRef, onKeyDown }) => {\n const mergedRef = mergeRefs([\n iRef as Ref<HTMLInputElement>,\n inputRef,\n ]);\n return (\n <MaskedDateInput\n {...commonFieldProps}\n ref={mergedRef}\n onKeyDown={(ev) => {\n onKeyDown?.(ev);\n handleInputKeyDown(ev);\n }}\n onClick={() => popoverRef.current?.openPopover()}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n );\n }}\n </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n data-testid=\"calendar-popover\"\n {...{ [ANV_PART_ATTR]: PARTS.popover }}\n >\n <DateFieldSingleCalendar\n value={value}\n onSelection={(v) => {\n inputRef.current?.focus();\n handleCalendarSelection(v);\n popoverRef.current?.closePopover();\n }}\n minDate={minDate}\n maxDate={maxDate}\n unavailable={unavailable}\n timezone={timezone}\n {...{ [ANV_PART_ATTR]: PARTS.calendar }}\n />\n </Popover.Content>\n </Popover>\n </div>\n );\n};\n\nDateFieldSingle.displayName = \"DateFieldSingle\";\n"],"names":["datePlaceholderMask","Event"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { D as DateFieldSingle } from './DateFieldSingle-CgMPTi1v.js';
1
+ export { D as DateFieldSingle } from './DateFieldSingle-BZjlO0hX.js';
2
2
  //# sourceMappingURL=DateFieldSingle.js.map
@@ -1,7 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { Y as YearlessDateInputWithPicker } from './YearlessDateInputWithPicker-DLtMQhDw.js';
2
+ import { A as ANV_PART_ATTR } from './anvParts-BGg5dgfl.js';
3
+ import { Y as YearlessDateInputWithPicker, P as PARTS } from './YearlessDateInputWithPicker-BquY4bCd.js';
3
4
  import { useRef, useId, isValidElement } from 'react';
4
- import { F as FieldLabel } from './FieldLabel-Cm5A1Jcx.js';
5
+ import { F as FieldLabel } from './FieldLabel-SzH61hCb.js';
5
6
  import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
6
7
  import { t as textFieldStyles } from './TextField.module-DklyLNKz.js';
7
8
  import { c as cx } from './index-De1g9FRV.js';
@@ -9,8 +10,8 @@ import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
9
10
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
10
11
  import { useTrackingId } from './useTrackingId.js';
11
12
  import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
12
- import { s as stripInlineMarkdown } from './stripInlineMarkdown-BZzgG-Zm.js';
13
- import { H as Helper } from './Helper-B_VAFgGd.js';
13
+ import { s as stripInlineMarkdown } from './stripInlineMarkdown-BfNNOWPk.js';
14
+ import { H as Helper } from './Helper-Bq6Npkgh.js';
14
15
 
15
16
  const DateFieldYearless = (props) => {
16
17
  const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
@@ -94,6 +95,7 @@ const DateFieldYearless = (props) => {
94
95
  YearlessDateInputWithPicker,
95
96
  {
96
97
  ...restProps,
98
+ ...{ [ANV_PART_ATTR]: PARTS.input },
97
99
  ref: inputRef,
98
100
  mode,
99
101
  required,
@@ -139,4 +141,4 @@ const DateFieldYearless = (props) => {
139
141
  DateFieldYearless.displayName = "DateFieldYearless";
140
142
 
141
143
  export { DateFieldYearless as D };
142
- //# sourceMappingURL=DateFieldYearless-BDSbVQx0.js.map
144
+ //# sourceMappingURL=DateFieldYearless-TcKb9jE2.js.map