@servicetitan/anvil2 3.3.0 → 3.4.1

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 (225) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/{AiMark-D6ScGfyP.js → AiMark-BL2p0EKB.js} +16 -6
  3. package/dist/AiMark-BL2p0EKB.js.map +1 -0
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-Dgq96HR4.js → Alert-Cgo8pwhb.js} +3 -3
  6. package/dist/{Alert-Dgq96HR4.js.map → Alert-Cgo8pwhb.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-DXF8slQf.js → Announcement-4w6XjLcB.js} +2 -2
  9. package/dist/{Announcement-DXF8slQf.js.map → Announcement-4w6XjLcB.js.map} +1 -1
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{Breadcrumbs-CklKFLSl.js → Breadcrumbs-DcMJdSC5.js} +2 -2
  12. package/dist/{Breadcrumbs-CklKFLSl.js.map → Breadcrumbs-DcMJdSC5.js.map} +1 -1
  13. package/dist/Breadcrumbs.js +1 -1
  14. package/dist/{Button-ChQARW0y.js → Button-CjeF1Agb.js} +15 -9
  15. package/dist/Button-CjeF1Agb.js.map +1 -0
  16. package/dist/Button.css +21 -21
  17. package/dist/Button.js +1 -1
  18. package/dist/Button.module-BuOc7iPY.js +23 -0
  19. package/dist/Button.module-BuOc7iPY.js.map +1 -0
  20. package/dist/{ButtonCompound-_0ddykI_.js → ButtonCompound-D7kA0qXr.js} +2 -2
  21. package/dist/{ButtonCompound-_0ddykI_.js.map → ButtonCompound-D7kA0qXr.js.map} +1 -1
  22. package/dist/ButtonCompound.js +1 -1
  23. package/dist/{ButtonLink-CWbYzTTz.js → ButtonLink-BSReBbc3.js} +2 -2
  24. package/dist/{ButtonLink-CWbYzTTz.js.map → ButtonLink-BSReBbc3.js.map} +1 -1
  25. package/dist/ButtonLink.js +1 -1
  26. package/dist/{ButtonToggle-BVv94C4U.js → ButtonToggle-CnOsM7-u.js} +2 -2
  27. package/dist/{ButtonToggle-BVv94C4U.js.map → ButtonToggle-CnOsM7-u.js.map} +1 -1
  28. package/dist/ButtonToggle.js +1 -1
  29. package/dist/{Calendar-DWyW5gvQ.js → Calendar-C05ESFqK.js} +3 -3
  30. package/dist/{Calendar-DWyW5gvQ.js.map → Calendar-C05ESFqK.js.map} +1 -1
  31. package/dist/{Calendar-Qlnpl3zR.js → Calendar-Dmsp_qIo.js} +2 -2
  32. package/dist/{Calendar-Qlnpl3zR.js.map → Calendar-Dmsp_qIo.js.map} +1 -1
  33. package/dist/Calendar.js +2 -2
  34. package/dist/{Checkbox-BE8Jmz3t.js → Checkbox-DEU2CtNu.js} +2 -2
  35. package/dist/{Checkbox-BE8Jmz3t.js.map → Checkbox-DEU2CtNu.js.map} +1 -1
  36. package/dist/{Checkbox-QIaS16gS.js → Checkbox-DqY9bRng.js} +3 -3
  37. package/dist/{Checkbox-QIaS16gS.js.map → Checkbox-DqY9bRng.js.map} +1 -1
  38. package/dist/Checkbox.js +1 -1
  39. package/dist/{Chip-BYK1b3lZ.js → Chip-Cb3dnZht.js} +2 -2
  40. package/dist/{Chip-BYK1b3lZ.js.map → Chip-Cb3dnZht.js.map} +1 -1
  41. package/dist/Chip.js +1 -1
  42. package/dist/Combobox.js +1 -1
  43. package/dist/{DataTable-CnRkAUpI.js → DataTable-QWgY5s7o.js} +15 -9
  44. package/dist/{DataTable-CnRkAUpI.js.map → DataTable-QWgY5s7o.js.map} +1 -1
  45. package/dist/{DateFieldRange-OiVF8sye.js → DateFieldRange-BWE-utxz.js} +4 -4
  46. package/dist/{DateFieldRange-OiVF8sye.js.map → DateFieldRange-BWE-utxz.js.map} +1 -1
  47. package/dist/DateFieldRange.js +1 -1
  48. package/dist/{DateFieldSingle-CSCcHt9Z.js → DateFieldSingle-DOJZRbkP.js} +4 -4
  49. package/dist/{DateFieldSingle-CSCcHt9Z.js.map → DateFieldSingle-DOJZRbkP.js.map} +1 -1
  50. package/dist/DateFieldSingle.js +1 -1
  51. package/dist/{DateFieldYearless-DU9No74i.js → DateFieldYearless-BHGGAa4K.js} +4 -4
  52. package/dist/{DateFieldYearless-DU9No74i.js.map → DateFieldYearless-BHGGAa4K.js.map} +1 -1
  53. package/dist/DateFieldYearless.js +1 -1
  54. package/dist/{DateFieldYearlessRange-BkXIgh59.js → DateFieldYearlessRange-CxEaZnI6.js} +3 -3
  55. package/dist/{DateFieldYearlessRange-BkXIgh59.js.map → DateFieldYearlessRange-CxEaZnI6.js.map} +1 -1
  56. package/dist/DateFieldYearlessRange.js +1 -1
  57. package/dist/{DaysOfTheWeek-BYw91Qr-.js → DaysOfTheWeek-or-V9aOL.js} +3 -3
  58. package/dist/{DaysOfTheWeek-BYw91Qr-.js.map → DaysOfTheWeek-or-V9aOL.js.map} +1 -1
  59. package/dist/DaysOfTheWeek.js +1 -1
  60. package/dist/{Dialog-DMR_uvde.js → Dialog-D7wWgUiC.js} +4 -4
  61. package/dist/{Dialog-DMR_uvde.js.map → Dialog-D7wWgUiC.js.map} +1 -1
  62. package/dist/Dialog.js +1 -1
  63. package/dist/{DialogCancelButton-lAq4bhHS.js → DialogCancelButton-CIGGMaOE.js} +2 -2
  64. package/dist/{DialogCancelButton-lAq4bhHS.js.map → DialogCancelButton-CIGGMaOE.js.map} +1 -1
  65. package/dist/Dnd.js +2 -2
  66. package/dist/{DndHandleButton-Cj7pIegT.js → DndHandleButton-B_Geiaeb.js} +2 -2
  67. package/dist/{DndHandleButton-Cj7pIegT.js.map → DndHandleButton-B_Geiaeb.js.map} +1 -1
  68. package/dist/DndSort.js +3 -3
  69. package/dist/{Drawer-vxmKqraS.js → Drawer-rHhrkb8I.js} +4 -4
  70. package/dist/{Drawer-vxmKqraS.js.map → Drawer-rHhrkb8I.js.map} +1 -1
  71. package/dist/Drawer.js +1 -1
  72. package/dist/DrillDown.js +1 -1
  73. package/dist/{EditCard-h7sDGB-x.js → EditCard-BygUiJyq.js} +3 -3
  74. package/dist/{EditCard-h7sDGB-x.js.map → EditCard-BygUiJyq.js.map} +1 -1
  75. package/dist/EditCard.js +1 -1
  76. package/dist/{FieldLabel-tFSfJ7OJ.js → FieldLabel-BLH70tsq.js} +2 -2
  77. package/dist/{FieldLabel-tFSfJ7OJ.js.map → FieldLabel-BLH70tsq.js.map} +1 -1
  78. package/dist/FieldLabel.js +1 -1
  79. package/dist/{FilterBar-l8aCxO9c.js → FilterBar-kN4R0B_m.js} +7 -7
  80. package/dist/{FilterBar-l8aCxO9c.js.map → FilterBar-kN4R0B_m.js.map} +1 -1
  81. package/dist/FilterBar.js +1 -1
  82. package/dist/{InputMask-r8vH_Gh3.js → InputMask-G9TeTPS8.js} +3 -3
  83. package/dist/{InputMask-r8vH_Gh3.js.map → InputMask-G9TeTPS8.js.map} +1 -1
  84. package/dist/InputMask.js +1 -1
  85. package/dist/{ListView-D_xAfZD-.js → ListView-A4v-kbPH.js} +2 -2
  86. package/dist/{ListView-D_xAfZD-.js.map → ListView-A4v-kbPH.js.map} +1 -1
  87. package/dist/ListView.js +1 -1
  88. package/dist/{Listbox-iUUghImt.js → Listbox-DTxGVQQ9.js} +2 -2
  89. package/dist/{Listbox-iUUghImt.js.map → Listbox-DTxGVQQ9.js.map} +1 -1
  90. package/dist/Listbox.js +1 -1
  91. package/dist/{Menu-qcHhgf-t.js → Menu-BAya9Qnd.js} +2 -2
  92. package/dist/{Menu-qcHhgf-t.js.map → Menu-BAya9Qnd.js.map} +1 -1
  93. package/dist/Menu.js +1 -1
  94. package/dist/{MenuFooter-Dtckm9vY.js → MenuFooter-BZTsAaOz.js} +2 -2
  95. package/dist/{MenuFooter-Dtckm9vY.js.map → MenuFooter-BZTsAaOz.js.map} +1 -1
  96. package/dist/MultiSelectField.js +1 -1
  97. package/dist/{MultiSelectFieldSync-DNJ1TBf8.js → MultiSelectFieldSync-Zr6ObmiY.js} +7 -7
  98. package/dist/{MultiSelectFieldSync-DNJ1TBf8.js.map → MultiSelectFieldSync-Zr6ObmiY.js.map} +1 -1
  99. package/dist/MultiSelectMenu.js +1 -1
  100. package/dist/{MultiSelectMenuSync-LD931FAV.js → MultiSelectMenuSync-Cdsp2_ZA.js} +5 -5
  101. package/dist/{MultiSelectMenuSync-LD931FAV.js.map → MultiSelectMenuSync-Cdsp2_ZA.js.map} +1 -1
  102. package/dist/{NumberField-CFYbODNe.js → NumberField-CigVFXzW.js} +4 -4
  103. package/dist/{NumberField-CFYbODNe.js.map → NumberField-CigVFXzW.js.map} +1 -1
  104. package/dist/NumberField.js +1 -1
  105. package/dist/Overflow.js +5 -2
  106. package/dist/Overflow.js.map +1 -1
  107. package/dist/{Page-DgSimS7u.js → Page-DMvEouPp.js} +10 -10
  108. package/dist/{Page-DgSimS7u.js.map → Page-DMvEouPp.js.map} +1 -1
  109. package/dist/Page.js +1 -1
  110. package/dist/{Pagination-DQ2fjkmT.js → Pagination-Bur581V_.js} +5 -5
  111. package/dist/{Pagination-DQ2fjkmT.js.map → Pagination-Bur581V_.js.map} +1 -1
  112. package/dist/Pagination.js +1 -1
  113. package/dist/{Popover-DeBxKuqc.js → Popover-C-pv_ah6.js} +15 -2
  114. package/dist/Popover-C-pv_ah6.js.map +1 -0
  115. package/dist/Popover.js +1 -1
  116. package/dist/{ProgressBar-BFvc2jm3.js → ProgressBar-CJwF0L2j.js} +2 -2
  117. package/dist/{ProgressBar-BFvc2jm3.js.map → ProgressBar-CJwF0L2j.js.map} +1 -1
  118. package/dist/ProgressBar.js +1 -1
  119. package/dist/{Radio-BV4SflBA.js → Radio-CspG2mD_.js} +3 -3
  120. package/dist/{Radio-BV4SflBA.js.map → Radio-CspG2mD_.js.map} +1 -1
  121. package/dist/{Radio-v3lT3AoB.js → Radio-DAsbQWNO.js} +2 -2
  122. package/dist/{Radio-v3lT3AoB.js.map → Radio-DAsbQWNO.js.map} +1 -1
  123. package/dist/Radio.js +1 -1
  124. package/dist/{RichTextEditor-Cm29o9RK.js → RichTextEditor-D1IBYQyU.js} +11 -11
  125. package/dist/{RichTextEditor-Cm29o9RK.js.map → RichTextEditor-D1IBYQyU.js.map} +1 -1
  126. package/dist/RichTextEditor.js +1 -1
  127. package/dist/{SavedFiltersButton-3VadkBsA.js → SavedFiltersButton-CtClXIW1.js} +10 -10
  128. package/dist/{SavedFiltersButton-3VadkBsA.js.map → SavedFiltersButton-CtClXIW1.js.map} +1 -1
  129. package/dist/SavedFiltersButton.js +1 -1
  130. package/dist/{SelectCard-CkZEENl6.js → SelectCard-Bk2JEIie.js} +3 -3
  131. package/dist/{SelectCard-CkZEENl6.js.map → SelectCard-Bk2JEIie.js.map} +1 -1
  132. package/dist/SelectCard.js +1 -1
  133. package/dist/SelectField.js +1 -1
  134. package/dist/{SelectFieldLabel-CvJhwy_6.js → SelectFieldLabel-VLPS25_a.js} +2 -2
  135. package/dist/{SelectFieldLabel-CvJhwy_6.js.map → SelectFieldLabel-VLPS25_a.js.map} +1 -1
  136. package/dist/{SelectFieldSync-z_kyrBvL.js → SelectFieldSync-DO03WeCx.js} +6 -6
  137. package/dist/{SelectFieldSync-z_kyrBvL.js.map → SelectFieldSync-DO03WeCx.js.map} +1 -1
  138. package/dist/SelectMenu.js +1 -1
  139. package/dist/{SelectMenuSync-BD8oedGs.js → SelectMenuSync-DStox_Zy.js} +5 -5
  140. package/dist/{SelectMenuSync-BD8oedGs.js.map → SelectMenuSync-DStox_Zy.js.map} +1 -1
  141. package/dist/{SelectOptions-CBSsSyFd.js → SelectOptions-DmqnJbq5.js} +2 -2
  142. package/dist/{SelectOptions-CBSsSyFd.js.map → SelectOptions-DmqnJbq5.js.map} +1 -1
  143. package/dist/{SelectTrigger-CtiLCoHx.js → SelectTrigger-C--mlQPY.js} +2 -2
  144. package/dist/{SelectTrigger-CtiLCoHx.js.map → SelectTrigger-C--mlQPY.js.map} +1 -1
  145. package/dist/SelectTrigger.js +1 -1
  146. package/dist/{SelectTriggerBase-aE_iVDpL.js → SelectTriggerBase-DCdVK5FM.js} +4 -4
  147. package/dist/{SelectTriggerBase-aE_iVDpL.js.map → SelectTriggerBase-DCdVK5FM.js.map} +1 -1
  148. package/dist/{Stepper-BXgMeUHu.js → Stepper-Bp5XkY2q.js} +2 -2
  149. package/dist/{Stepper-BXgMeUHu.js.map → Stepper-Bp5XkY2q.js.map} +1 -1
  150. package/dist/Stepper.js +1 -1
  151. package/dist/{Switch-DibokoJL.js → Switch-97v6BcuM.js} +2 -2
  152. package/dist/{Switch-DibokoJL.js.map → Switch-97v6BcuM.js.map} +1 -1
  153. package/dist/Switch.js +1 -1
  154. package/dist/Table.js +1 -1
  155. package/dist/{Text-BTCfqeSr.js → Text-CXf0c8th.js} +2 -2
  156. package/dist/{Text-BTCfqeSr.js.map → Text-CXf0c8th.js.map} +1 -1
  157. package/dist/Text.js +1 -1
  158. package/dist/{TextField-CqJ9s4SG.js → TextField-B_LS82U2.js} +2 -2
  159. package/dist/{TextField-CqJ9s4SG.js.map → TextField-B_LS82U2.js.map} +1 -1
  160. package/dist/{TextField-KZkRXCbH.js → TextField-ttW-PfxW.js} +3 -3
  161. package/dist/{TextField-KZkRXCbH.js.map → TextField-ttW-PfxW.js.map} +1 -1
  162. package/dist/TextField.js +1 -1
  163. package/dist/{Textarea-DlvbIRKO.js → Textarea-B58yhkqk.js} +3 -3
  164. package/dist/{Textarea-DlvbIRKO.js.map → Textarea-B58yhkqk.js.map} +1 -1
  165. package/dist/Textarea.js +1 -1
  166. package/dist/{TimeField-bdJArRXM.js → TimeField-CacCU22y.js} +4 -4
  167. package/dist/{TimeField-bdJArRXM.js.map → TimeField-CacCU22y.js.map} +1 -1
  168. package/dist/TimeField.js +1 -1
  169. package/dist/Toast.js +2 -2
  170. package/dist/{Toaster-De3dmRbW.js → Toaster-BMUQLR4X.js} +4 -4
  171. package/dist/{Toaster-De3dmRbW.js.map → Toaster-BMUQLR4X.js.map} +1 -1
  172. package/dist/{Toaster-DW9Bx-5k.js → Toaster-CggpDaEy.js} +2 -2
  173. package/dist/{Toaster-DW9Bx-5k.js.map → Toaster-CggpDaEy.js.map} +1 -1
  174. package/dist/{Toolbar-j9Y2YleC.js → Toolbar-BObGbcb3.js} +6 -6
  175. package/dist/{Toolbar-j9Y2YleC.js.map → Toolbar-BObGbcb3.js.map} +1 -1
  176. package/dist/{Toolbar-DksrjUsE.js → Toolbar-CGI7ilfn.js} +6 -6
  177. package/dist/{Toolbar-DksrjUsE.js.map → Toolbar-CGI7ilfn.js.map} +1 -1
  178. package/dist/Toolbar.js +2 -2
  179. package/dist/{ToolbarButtonToggle-CywNpsGX.js → ToolbarButtonToggle-DsaG1BWZ.js} +2 -2
  180. package/dist/{ToolbarButtonToggle-CywNpsGX.js.map → ToolbarButtonToggle-DsaG1BWZ.js.map} +1 -1
  181. package/dist/TreeSelectField.js +1 -1
  182. package/dist/{TreeSelectFieldSync-CB1H4ZTC.js → TreeSelectFieldSync-BHSzJlYx.js} +6 -6
  183. package/dist/{TreeSelectFieldSync-CB1H4ZTC.js.map → TreeSelectFieldSync-BHSzJlYx.js.map} +1 -1
  184. package/dist/TreeSelectMenu.js +1 -1
  185. package/dist/{TreeSelectMenuSync-D4l3zik4.js → TreeSelectMenuSync-BfYc8PHd.js} +4 -4
  186. package/dist/{TreeSelectMenuSync-D4l3zik4.js.map → TreeSelectMenuSync-BfYc8PHd.js.map} +1 -1
  187. package/dist/{TypeaheadTextField-BJrrlLjP.js → TypeaheadTextField-DU10rQHH.js} +3 -3
  188. package/dist/{TypeaheadTextField-BJrrlLjP.js.map → TypeaheadTextField-DU10rQHH.js.map} +1 -1
  189. package/dist/TypeaheadTextField.js +1 -1
  190. package/dist/{YearlessDateInputWithPicker-BmRkNzK0.js → YearlessDateInputWithPicker-DtikVrWk.js} +2 -2
  191. package/dist/{YearlessDateInputWithPicker-BmRkNzK0.js.map → YearlessDateInputWithPicker-DtikVrWk.js.map} +1 -1
  192. package/dist/assets/icons/st/ai_mark_gradient.svg +1 -1
  193. package/dist/beta.js +16 -16
  194. package/dist/{filter-state-C-4lebJG.js → filter-state-BL17jEUz.js} +43 -31
  195. package/dist/filter-state-BL17jEUz.js.map +1 -0
  196. package/dist/{index-iTige6rD.js → index-Bg9IAYMO.js} +2 -2
  197. package/dist/{index-iTige6rD.js.map → index-Bg9IAYMO.js.map} +1 -1
  198. package/dist/{index-mKaF0gwp.js → index-Deyzt7C3.js} +2 -2
  199. package/dist/{index-mKaF0gwp.js.map → index-Deyzt7C3.js.map} +1 -1
  200. package/dist/index.js +48 -48
  201. package/dist/src/beta/components/FilterBar/internal/types.d.ts +9 -3
  202. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +12 -6
  203. package/dist/src/components/Overflow/Overflow.d.ts +8 -1
  204. package/dist/src/internal/components/Popover/internal/PopoverContext.d.ts +2 -0
  205. package/dist/{stripInlineMarkdown-CQCRopqY.js → stripInlineMarkdown-D8j76cz_.js} +2 -2
  206. package/dist/{stripInlineMarkdown-CQCRopqY.js.map → stripInlineMarkdown-D8j76cz_.js.map} +1 -1
  207. package/dist/{syncFilterUtils-JUsufAHA.js → syncFilterUtils-DV1H8ZIz.js} +4 -4
  208. package/dist/{syncFilterUtils-JUsufAHA.js.map → syncFilterUtils-DV1H8ZIz.js.map} +1 -1
  209. package/dist/{treeSync-CXMjwQ4X.js → treeSync-DluwQlVs.js} +3 -3
  210. package/dist/{treeSync-CXMjwQ4X.js.map → treeSync-DluwQlVs.js.map} +1 -1
  211. package/dist/{useAdaptiveView-BdzXyicd.js → useAdaptiveView-0Cd-y9FC.js} +4 -4
  212. package/dist/{useAdaptiveView-BdzXyicd.js.map → useAdaptiveView-0Cd-y9FC.js.map} +1 -1
  213. package/dist/{useDrilldown-CWNTo5uR.js → useDrilldown-C5jP2l0a.js} +3 -3
  214. package/dist/{useDrilldown-CWNTo5uR.js.map → useDrilldown-C5jP2l0a.js.map} +1 -1
  215. package/dist/{useInfiniteCombobox-D77w-hHb.js → useInfiniteCombobox-BlP6jZ6d.js} +4 -4
  216. package/dist/{useInfiniteCombobox-D77w-hHb.js.map → useInfiniteCombobox-BlP6jZ6d.js.map} +1 -1
  217. package/dist/{useToggleSelection-a18uaSE7.js → useToggleSelection-qzKkgwTj.js} +2 -2
  218. package/dist/{useToggleSelection-a18uaSE7.js.map → useToggleSelection-qzKkgwTj.js.map} +1 -1
  219. package/package.json +1 -1
  220. package/dist/AiMark-D6ScGfyP.js.map +0 -1
  221. package/dist/Button-ChQARW0y.js.map +0 -1
  222. package/dist/Button.module-y-kLMLvt.js +0 -23
  223. package/dist/Button.module-y-kLMLvt.js.map +0 -1
  224. package/dist/Popover-DeBxKuqc.js.map +0 -1
  225. package/dist/filter-state-C-4lebJG.js.map +0 -1
@@ -1,2 +1,2 @@
1
- export { T as TypeaheadTextField } from './TypeaheadTextField-BJrrlLjP.js';
1
+ export { T as TypeaheadTextField } from './TypeaheadTextField-DU10rQHH.js';
2
2
  //# sourceMappingURL=TypeaheadTextField.js.map
@@ -5,7 +5,7 @@ import { F as Flex } from './Flex-Bb3iHExM.js';
5
5
  import { S as SvgCheck } from './check-Cf67OWrZ.js';
6
6
  import { c as cx } from './index-De1g9FRV.js';
7
7
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
8
- import { P as Popover, u as useMergeRefs } from './AiMark-D6ScGfyP.js';
8
+ import { P as Popover, u as useMergeRefs } from './AiMark-BL2p0EKB.js';
9
9
  import { g as maskitoUpdateElement, m as maskitoDateOptionsGenerator, a as maskitoWithPlaceholder, h as maskitoTransform, u as useMaskito } from './index.esm-C2ZhC_8d.js';
10
10
  import { m as makeZeroShortcutPreprocessor } from './makeZeroShortcutPreprocessor-CxsiGTRW.js';
11
11
  import { t as textFieldStyles } from './TextField.module-DklyLNKz.js';
@@ -939,4 +939,4 @@ const YearlessDateInputWithPicker = forwardRef((props, ref) => {
939
939
  YearlessDateInputWithPicker.displayName = "YearlessDateInputWithPicker";
940
940
 
941
941
  export { YearlessDateInputWithPicker as Y };
942
- //# sourceMappingURL=YearlessDateInputWithPicker-BmRkNzK0.js.map
942
+ //# sourceMappingURL=YearlessDateInputWithPicker-DtikVrWk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"YearlessDateInputWithPicker-BmRkNzK0.js","sources":["../src/components/DateFieldYearless/internal/PickerListOption.tsx","../src/components/DateFieldYearless/internal/PickerList.tsx","../src/components/DateFieldYearless/internal/utils.ts","../src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.tsx","../src/components/DateFieldYearless/internal/maskito/yearlessDateSegmentsStepping.ts","../src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.ts","../src/components/DateFieldYearless/internal/YearlessDateInput.tsx","../src/components/DateFieldYearless/internal/YearlessDateInputWithPicker.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from \"react\";\nimport { Icon } from \"../../Icon\";\nimport { Flex, FlexProps } from \"../../Flex\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { DataTrackingId } from \"../../../types\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\n/**\n * Props for the PickerListOption component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type PickerListOptionProps = ComponentPropsWithoutRef<\"li\"> & {\n /** The item object containing label, value, and optional disabled state */\n item: { label: string; value: number; disabled?: boolean };\n /** Whether this option is currently selected */\n isSelected: boolean;\n /** Callback when this option is selected */\n onSelectionChange: (\n selected: { label: string; value: number } | undefined,\n ) => void;\n /** Flex alignment for items */\n alignItems?: FlexProps[\"alignItems\"];\n /** Flex justification for items */\n justifyItems?: FlexProps[\"justifyItems\"];\n /** Flex alignment for content */\n alignContent?: FlexProps[\"alignContent\"];\n /** Flex justification for content */\n justifyContent?: FlexProps[\"justifyContent\"];\n /** Flex place-items property */\n placeItems?: FlexProps[\"placeItems\"];\n /** Flex place-content property */\n placeContent?: FlexProps[\"placeContent\"];\n} & DataTrackingId;\n\nexport const PickerListOption = forwardRef<\n HTMLLIElement,\n PickerListOptionProps\n>((props, ref) => {\n const {\n className,\n children,\n onClick,\n item,\n isSelected,\n onSelectionChange,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n\n const disabled = item.disabled || false;\n\n const handleSelection = () => {\n if (disabled) return;\n\n if (isSelected) {\n onSelectionChange(undefined);\n } else {\n onSelectionChange(item);\n }\n };\n\n const onClickHandler = (e: MouseEvent<HTMLLIElement>) => {\n onClick?.(e);\n handleSelection();\n };\n\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLLIElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelection();\n }\n };\n\n const PickerListOptionClassNames = cx(\n styles[\"picker-list-option\"],\n className,\n );\n\n return (\n <li\n className={PickerListOptionClassNames}\n data-anv=\"picker-list-option\"\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={isSelected}\n data-item-label={item.label}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={-1}\n ref={ref}\n {...rest}\n >\n <Flex\n className={styles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n >\n {children || item.label}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{ opacity: isSelected ? 1 : 0 }}\n />\n </li>\n );\n});\n\nPickerListOption.displayName = \"PickerListOption\";\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { PickerListOption } from \"./PickerListOption\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\n/**\n * Represents an item in the picker list with a label and optional disabled state.\n */\nexport type PickerListItem = {\n /** The display label for the item */\n label: string;\n /** The value of the item */\n value: number;\n /** Whether the item is disabled and cannot be selected */\n disabled?: boolean;\n};\n\n/**\n * Props for the PickerList component\n * @extends ComponentPropsWithoutRef<\"ul\">\n * @extends LayoutUtilProps\n */\nexport type PickerListProps = Omit<ComponentPropsWithoutRef<\"ul\">, \"children\"> &\n LayoutUtilProps & {\n /** Array of items to render */\n items: PickerListItem[];\n /** Currently selected item (controlled) */\n selected?: PickerListItem;\n /** Callback when selection changes */\n onSelectionChange?: (selected: PickerListItem | undefined) => void;\n };\n\n/**\n * Ref methods exposed by PickerList\n */\nexport type PickerListRef = {\n /** Scroll to a specific item by label */\n scrollToItem: (label: string, behavior?: ScrollBehavior) => void;\n /** Scroll to a specific item by value */\n scrollToValue: (value: number, behavior?: ScrollBehavior) => void;\n};\n\n/**\n * PickerList component for selecting items from a list.\n *\n * Features:\n * - Single selection mode only\n * - Mouse click selection\n * - Programmatic scrolling to specific items\n * - Support for disabled items\n * - Accessible with proper ARIA attributes\n * - Visual consistency with Listbox component\n *\n * @example\n * <PickerList\n * items={months}\n * selected={selectedMonth}\n * onSelectionChange={handleMonthChange}\n * />\n */\nexport const PickerList = forwardRef<PickerListRef, PickerListProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n items,\n onSelectionChange,\n selected: selectedProp,\n style,\n ...rest\n } = componentProps;\n\n const listRef = useRef<HTMLUListElement>(null);\n\n const scrollToItem = (\n label: string,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const listElement = listRef.current;\n const itemElement = listElement?.querySelector(\n `li[data-item-label=\"${label}\"]`,\n ) as HTMLLIElement | null;\n\n if (listElement && itemElement) {\n // Calculate the target scroll position to center the item\n const itemTop = itemElement.offsetTop;\n const itemHeight = itemElement.offsetHeight;\n const listHeight = listElement.clientHeight;\n\n // Center the item vertically in the list\n const targetScrollTop = itemTop - listHeight / 2 + itemHeight / 2;\n\n // Ensure we don't scroll beyond the bounds\n const maxScrollTop = listElement.scrollHeight - listHeight;\n const clampedScrollTop = Math.max(\n 0,\n Math.min(targetScrollTop, maxScrollTop),\n );\n\n listElement.scrollTo({\n top: clampedScrollTop,\n behavior,\n });\n }\n };\n\n const scrollToValue = (\n value: number,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const item = items.find((item) => item.value === value);\n if (item) {\n scrollToItem(item.label, behavior);\n }\n };\n\n useImperativeHandle(ref, () => ({\n scrollToItem,\n scrollToValue,\n }));\n\n const handleSelectionChange = (item: PickerListItem | undefined) => {\n onSelectionChange?.(item);\n };\n\n const PickerListClassNames = cx(styles[\"picker-list\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ul\n role=\"listbox\"\n style={styleCombined}\n className={PickerListClassNames}\n data-anv=\"picker-list\"\n ref={listRef}\n {...rest}\n tabIndex={-1}\n >\n {items.map((item) => (\n <PickerListOption\n key={item.label}\n item={item}\n isSelected={selectedProp?.value === item.value}\n onSelectionChange={handleSelectionChange}\n />\n ))}\n </ul>\n );\n },\n);\n\nPickerList.displayName = \"PickerList\";\n","import { YearlessDate, YearlessDateMode } from \"../types\";\n\nexport function validateYearlessDate({\n value,\n constraints,\n}: {\n value: YearlessDate | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: YearlessDate[];\n };\n minDate?: YearlessDate | null;\n maxDate?: YearlessDate | null;\n };\n}): boolean {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!value || (!value?.day && !value?.month)) {\n return required ? false : true;\n }\n if (value.day === null || value.month === null) {\n return false;\n }\n if (\n unavailable?.dates?.some(\n (d) => d.day === value.day && d.month === value.month,\n )\n ) {\n return false;\n }\n const minDateMonth = minDate?.month ?? 1;\n const minDateDay = minDate?.day ?? 1;\n const maxDateMonth = maxDate?.month ?? 12;\n const maxDateDay = maxDate?.day ?? 31;\n if (\n value.month < minDateMonth || // Earlier month\n (value.month === minDateMonth && value.day < minDateDay) // Same month, earlier day\n ) {\n return false;\n }\n if (\n value.month > maxDateMonth || // Later month\n (value.month === maxDateMonth && value.day > maxDateDay) // Same month, later day\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * Return list of months\n * 🌍 localeName: name of local,\n * ✅ monthFormat: short, numeric, long (Default)\n */\nexport function getMonthNames({\n locale,\n format,\n}: {\n locale: string;\n format: Intl.DateTimeFormatOptions[\"month\"];\n}): string[] {\n const formatFn = new Intl.DateTimeFormat(locale, { month: format }).format;\n return [...Array(12).keys()].map((m) =>\n formatFn(new Date(Date.UTC(2021, (m + 1) % 12))),\n );\n}\n\n/**\n * Given a text value, parse it into a YearlessDate object and validate it.\n * @param value - The text value to parse.\n * @param mode - The mode of the date input.\n * @param removePlaceholder - The function to remove the placeholder from the text value.\n * @returns An object containing the parsed YearlessDate object, the input validity, and the input emptiness.\n */\nexport function parseInputValue(\n value: string,\n mode: YearlessDateMode,\n removePlaceholder: (value: string) => string,\n): {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n} {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [segment1, segment2] = valueMinusPlaceholder.split(\"/\");\n const incompleteFirstSegment = segment1?.length !== 2;\n const incompleteSecondSegment = segment2?.length !== 2;\n if (mode === \"dd/mm\") {\n return {\n value: {\n day: incompleteFirstSegment ? null : parseInt(segment1),\n month: incompleteSecondSegment ? null : parseInt(segment2),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n }\n return {\n value: {\n day: incompleteSecondSegment ? null : parseInt(segment2),\n month: incompleteFirstSegment ? null : parseInt(segment1),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\n/**\n * Swap the mode of a date input.\n * @param inputString - The text value to swap the mode of.\n * @param previousMode - The previous mode of the date input.\n * @param mode - The new mode of the date input.\n * @returns The text value with the new mode.\n */\nexport function swapMode(\n inputString: string,\n previousMode: YearlessDateMode,\n mode: YearlessDateMode,\n) {\n const { day, month } = divideSegments(inputString, previousMode);\n return stringifyYearlessDate(day, month, mode);\n}\n\n/**\n * Given a text value and a mode, divide the segments of a date input.\n * @param value - The text value to divide the segments of.\n * @param mode - The mode of the date input.\n * @returns An object containing the day and month segments.\n */\nfunction divideSegments(\n value: string,\n mode: YearlessDateMode,\n): {\n day: string;\n month: string;\n} {\n const [segment1, segment2] = value.split(\"/\");\n if (mode === \"dd/mm\") {\n return { day: segment1, month: segment2 };\n }\n return { day: segment2, month: segment1 };\n}\n\n/**\n * Convert a YearlessDate object into a text value.\n * @param day - The day of the date.\n * @param month - The month of the date.\n * @param mode - The mode of the date input.\n * @returns The stringified date.\n */\nexport function stringifyYearlessDate(\n day: number | string | null,\n month: number | string | null,\n mode: YearlessDateMode,\n) {\n const dd = (day ?? \"__\").toString().padStart(2, \"0\");\n const mm = (month ?? \"__\").toString().padStart(2, \"0\");\n if (mode === \"dd/mm\") {\n return `${dd}/${mm}`;\n }\n return `${mm}/${dd}`;\n}\n\n/**\n * Get the number of days in a given month.\n * @param month - The month number (1-12)\n * @returns The number of days in the month\n */\nexport function getDaysInMonth(month: number): number {\n // Use a leap year (2024) to account for February having 29 days\n return new Date(2024, month, 0).getDate();\n}\n\n/**\n * Get months that don't have enough days for the given day.\n * @param day - The day number (1-31)\n * @returns Array of month numbers that don't have enough days for the given day\n */\nexport function getInvalidMonthsForDay(day: number): number[] {\n const invalidMonths: number[] = [];\n\n for (let month = 1; month <= 12; month++) {\n const daysInMonth = getDaysInMonth(month);\n if (day > daysInMonth) {\n invalidMonths.push(month);\n }\n }\n\n return invalidMonths;\n}\n","import { RefObject, useEffect, useMemo, useRef } from \"react\";\nimport Popover from \"../../../internal/components/Popover\";\nimport { PickerList, PickerListRef } from \"./PickerList\";\nimport { getMonthNames, getDaysInMonth, getInvalidMonthsForDay } from \"./utils\";\nimport { Flex } from \"../../Flex\";\nimport { YearlessDateMode } from \"..\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport type { PopoverTriggerProps } from \"../../../internal/components/Popover/PopoverTrigger\";\n\n/**\n * Props for the YearlessDateSelectionPopover component\n */\nexport type YearlessDateSelectionPopoverProps = {\n popoverRef: RefObject<{\n openPopover: () => void;\n closePopover: () => void;\n }>;\n popoverContentRef: RefObject<HTMLDivElement>;\n month: number | null;\n day: number | null;\n onMonthChange: (month: number | null) => void;\n onDayChange: (day: number | null) => void;\n onClose: () => void;\n mode: YearlessDateMode;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n} & PopoverTriggerProps;\n\n/**\n * A yearless date selection tool built into a popover.\n * @param param0\n * @returns\n */\nexport function YearlessDateSelectionPopover({\n children,\n popoverRef,\n popoverContentRef,\n month,\n day,\n onMonthChange,\n onDayChange,\n onClose,\n mode,\n onFocus,\n onBlur,\n}: YearlessDateSelectionPopoverProps) {\n const monthListboxRef = useRef<PickerListRef>(null);\n const dayListboxRef = useRef<PickerListRef>(null);\n\n const months = useMemo(() => {\n return getMonthNames({ locale: \"en-US\", format: \"short\" }).map(\n (name, index) => ({\n label: name,\n value: index + 1,\n }),\n );\n }, []);\n\n const days = useMemo(() => {\n return Array.from({ length: 31 }, (_, i) => ({\n label: `${i + 1}`,\n value: i + 1,\n }));\n }, []);\n\n const invalidDays = useMemo(() => {\n if (!month) {\n return [];\n }\n const daysInMonth = getDaysInMonth(month);\n return Array.from(\n { length: 31 - daysInMonth },\n (_, i) => daysInMonth + i + 1,\n );\n }, [month]);\n\n const invalidMonths = useMemo(() => {\n if (!day) {\n return [];\n }\n return getInvalidMonthsForDay(day);\n }, [day]);\n\n const scrollToSelectedOption = (\n value: number | null,\n ref: RefObject<PickerListRef>,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n if (value && ref.current) {\n ref.current.scrollToValue(value, behavior);\n }\n };\n\n useEffect(() => {\n scrollToSelectedOption(month, monthListboxRef, \"smooth\");\n }, [month]);\n\n useEffect(() => {\n scrollToSelectedOption(day, dayListboxRef, \"smooth\");\n }, [day]);\n\n const handleMonthChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onMonthChange?.(selected.value);\n\n // If current day is invalid for the new month, clear it\n if (day && invalidDays.includes(day)) {\n onDayChange?.(null);\n }\n }\n };\n\n const handleDayChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onDayChange?.(selected.value);\n\n // If current month is invalid for the new day, clear it\n if (month && invalidMonths.includes(month)) {\n onMonthChange?.(null);\n }\n }\n };\n\n const monthPicker = (\n <PickerList\n ref={monthListboxRef}\n items={months.map((item) => ({\n ...item,\n disabled: invalidMonths.includes(item.value),\n }))}\n selected={months.find((m) => m.value === month)}\n style={{ maxHeight: \"240px\", overflow: \"auto\" }}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleMonthChange}\n />\n );\n\n const dayPicker = (\n <PickerList\n ref={dayListboxRef}\n items={days.map((item) => ({\n ...item,\n disabled: invalidDays.includes(item.value),\n }))}\n selected={days.find((d) => d.value === day)}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleDayChange}\n />\n );\n\n return (\n <Popover\n ref={popoverRef}\n placement=\"bottom-start\"\n role=\"listbox\"\n onClose={onClose}\n onOpenAnimationStart={() => {\n scrollToSelectedOption(month, monthListboxRef, \"instant\");\n scrollToSelectedOption(day, dayListboxRef, \"instant\");\n }}\n >\n <Popover.Trigger>\n {(triggerProps) => <>{children(triggerProps)}</>}\n </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n onFocus={onFocus}\n onBlur={onBlur}\n hideWhileClosed\n >\n <Flex gap={2} style={{ maxHeight: \"240px\" }}>\n {mode === \"dd/mm\" ? (\n <>\n {dayPicker}\n {monthPicker}\n </>\n ) : (\n <>\n {monthPicker}\n {dayPicker}\n </>\n )}\n </Flex>\n </Popover.Content>\n </Popover>\n );\n}\n","import type { MaskitoPlugin, MaskitoElement } from \"@maskito/core\";\nimport { maskitoUpdateElement } from \"@maskito/core\";\n\nimport { YearlessDateMode } from \"../../types\";\nimport { getDaysInMonth } from \"../utils\";\n\ntype YearlessDateSegments = {\n month: number;\n day: number;\n};\n\ntype SegmentRange = [number, number];\n\n// Constants\nconst MIN_MONTH = 1;\nconst MAX_MONTH = 12;\nconst MIN_DAY = 1;\nconst MAX_DAY = 31;\nconst SEGMENT_LENGTH = 2;\n\n/**\n * Creates a Maskito plugin for yearless date segment stepping\n * @param mode - The date format mode (mm/dd or dd/mm)\n * @returns MaskitoPlugin that handles arrow key navigation\n * @example\n * const plugin = createYearlessDateSegmentsSteppingPlugin({ mode: \"mm/dd\" });\n */\nexport function createYearlessDateSegmentsSteppingPlugin({\n mode,\n}: {\n mode: YearlessDateMode;\n}): MaskitoPlugin {\n const segmentsIndexes = createSegmentIndexes(mode);\n\n return (element) => {\n const listener = (event: KeyboardEvent): void => {\n if (event.key === \"ArrowRight\") {\n handleArrowRight(element, event);\n return;\n }\n\n if (event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") {\n return;\n }\n\n event.preventDefault();\n\n const selectionStart = element.selectionStart ?? 0;\n const activeSegment = getActiveSegment({\n segmentsIndexes,\n selectionStart,\n });\n\n if (!activeSegment) {\n return;\n }\n\n const segmentSelection = segmentsIndexes.get(activeSegment);\n if (!segmentSelection) {\n return;\n }\n\n const maxValue = getMaxValueForSegment(\n activeSegment,\n element.value,\n segmentsIndexes,\n );\n\n const updatedValue = updateSegmentValue({\n selection: segmentSelection,\n value: element.value,\n increment: event.key === \"ArrowUp\" ? -1 : 1,\n min: MIN_DAY,\n max: maxValue,\n });\n\n // If we're updating the month, check if the day needs to be adjusted\n const finalValue =\n activeSegment === \"month\"\n ? adjustDayForNewMonth(updatedValue, segmentsIndexes)\n : updatedValue;\n\n maskitoUpdateElement(element, {\n value: finalValue,\n selection: [selectionStart, selectionStart],\n });\n };\n\n element.addEventListener(\"keydown\", listener);\n return () => element.removeEventListener(\"keydown\", listener);\n };\n}\n\nfunction createSegmentIndexes(\n mode: YearlessDateMode,\n): Map<keyof YearlessDateSegments, SegmentRange> {\n const map = new Map<keyof YearlessDateSegments, SegmentRange>();\n\n if (mode === \"mm/dd\") {\n map.set(\"month\", [0, SEGMENT_LENGTH]);\n map.set(\"day\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n } else if (mode === \"dd/mm\") {\n map.set(\"day\", [0, SEGMENT_LENGTH]);\n map.set(\"month\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n }\n\n return map;\n}\n\n/**\n * Handle ArrowRight key to insert separator at the right position\n */\nfunction handleArrowRight(element: MaskitoElement, event: KeyboardEvent): void {\n const selectionStart = element.selectionStart ?? 0;\n const value = element.value;\n\n // Position 3 is where the separator should be (after the first segment)\n if (selectionStart === SEGMENT_LENGTH && value.includes(\"__\")) {\n // Insert the separator\n event.preventDefault();\n maskitoUpdateElement(element, {\n value: value + \"/\",\n selection: [selectionStart + 1, selectionStart + 1],\n });\n }\n}\n\n/**\n * Adjust the day value if it's out of bounds for the new month\n */\nfunction adjustDayForNewMonth(\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): string {\n const monthSelection = segmentsIndexes.get(\"month\");\n const daySelection = segmentsIndexes.get(\"day\");\n\n if (!monthSelection || !daySelection) {\n return value;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n const dayValue = parseSegmentValue(value, daySelection);\n\n // If month or day is invalid, return original value\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH || dayValue < MIN_DAY) {\n return value;\n }\n\n const maxDaysInMonth = getDaysInMonth(monthValue);\n\n // If day is within bounds, no adjustment needed\n if (dayValue <= maxDaysInMonth) {\n return value;\n }\n\n // Adjust day to the last valid day of the month\n const [dayFrom, dayTo] = daySelection;\n const adjustedDay = String(maxDaysInMonth).padStart(dayTo - dayFrom, \"0\");\n\n return (\n value.slice(0, dayFrom) + adjustedDay + value.slice(dayTo, value.length)\n );\n}\n\n/**\n * Parse a segment value from the input string, treating empty segments as 0\n */\nfunction parseSegmentValue(value: string, selection: SegmentRange): number {\n const [from, to] = selection;\n const segmentText = value.slice(from, to);\n if (segmentText.includes(\"_\")) return 0;\n return Number(segmentText.padEnd(to - from, \"0\"));\n}\n\nfunction getMaxValueForSegment(\n segment: keyof YearlessDateSegments,\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): number {\n if (segment === \"month\") {\n return MAX_MONTH;\n }\n\n // For day segment, get the current month value to determine max days\n const monthSelection = segmentsIndexes.get(\"month\");\n if (!monthSelection) {\n return MAX_DAY;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n\n // If month is not valid, use default max\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH) {\n return MAX_DAY;\n }\n\n return getDaysInMonth(monthValue);\n}\n\nfunction getActiveSegment({\n segmentsIndexes,\n selectionStart,\n}: {\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>;\n selectionStart: number;\n}): keyof YearlessDateSegments | null {\n for (const [segmentName, segmentRange] of segmentsIndexes.entries()) {\n const [from, to] = segmentRange;\n if (from <= selectionStart && selectionStart <= to) {\n return segmentName;\n }\n }\n return null;\n}\n\nfunction updateSegmentValue({\n selection,\n value,\n increment,\n min,\n max,\n}: {\n selection: SegmentRange;\n value: string;\n increment: number;\n min: number;\n max: number;\n}): string {\n const [from, to] = selection;\n const segmentValue = parseSegmentValue(value, selection);\n // Prevent decrementing 0 losing negative and rolling up to 1.\n if (segmentValue === 0 && increment < 0) return value;\n const newSegmentValue = Math.max(\n min,\n Math.min(max, segmentValue + increment),\n );\n\n return (\n value.slice(0, from) +\n String(newSegmentValue).padStart(to - from, \"0\") +\n value.slice(to, value.length)\n );\n}\n","import { maskitoTransform, type MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\n\nimport { YearlessDateMode } from \"../../types\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\nimport { createYearlessDateSegmentsSteppingPlugin } from \"./yearlessDateSegmentsStepping\";\n\nconst yearlessDatePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n enableStepping = false,\n}: {\n mode: YearlessDateMode;\n enableStepping: boolean;\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([\n ...(dateOptions.plugins || []),\n ...(enableStepping\n ? [createYearlessDateSegmentsSteppingPlugin({ mode })]\n : []),\n ]),\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 const transform = (value: string) => {\n return maskitoTransform(value, datePlaceholderMask);\n };\n\n return { options: datePlaceholderMask, removePlaceholder, transform };\n};\n\nexport default yearlessDatePlaceholderMask;\n","import { useMaskito } from \"@maskito/react\";\nimport {\n forwardRef,\n InputHTMLAttributes,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { YearlessDateMode, YearlessDate } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport yearlessDatePlaceholderMask from \"./maskito/yearlessDatePlaceholderMask\";\nimport { swapMode, stringifyYearlessDate, parseInputValue } from \"./utils\";\nimport textFieldStyles from \"../../TextField/TextField.module.scss\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport cx from \"classnames\";\nimport { PassThroughPropsWithRef, Size } from \"../../../types\";\nimport { Spinner } from \"../../Spinner\";\n\nexport type YearlessDateInputChange = {\n event: React.ChangeEvent<HTMLInputElement> | null;\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type YearlessDateInputChangeHandler = (\n change: YearlessDateInputChange,\n) => void;\n\nexport type YearlessDateInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\"\n> & {\n onChange: YearlessDateInputChangeHandler;\n mode?: YearlessDateMode;\n value?: YearlessDate | null;\n error?: boolean;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n wrapperProps?: PassThroughPropsWithRef<\"div\">;\n rootProps?: PassThroughPropsWithRef<\"div\">;\n loading?: boolean;\n enableStepping?: boolean;\n};\n\nexport type YearlessDateInputRef = HTMLInputElement & {\n setValue: (value: YearlessDate | null) => {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n };\n removePlaceholder: (value: string) => string;\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 YearlessDateInput = forwardRef<\n YearlessDateInputRef,\n YearlessDateInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd\",\n value,\n error,\n size,\n wrapperProps,\n rootProps,\n loading = false,\n enableStepping = false,\n className: classNameProp,\n ...restProps\n },\n ref,\n ) => {\n const placeholder = \"__/__\";\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder, transform } =\n yearlessDatePlaceholderMask({\n mode,\n placeholder,\n enableStepping,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousValue = usePrevious(value);\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 const triggerAutoChange = useCallback(\n (stringValue: string) => {\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(stringValue, mode, removePlaceholder);\n onChange?.({\n event: null,\n value: v,\n isInputValid,\n isInputEmpty,\n });\n },\n [mode, removePlaceholder, onChange],\n );\n\n // Update the input value when the parent's value changes.\n useEffect(() => {\n if (\n previousValue?.day !== value?.day ||\n previousValue?.month !== value?.month\n ) {\n if (value?.day && value?.month) {\n const stringValue = stringifyYearlessDate(\n value.day,\n value.month,\n mode,\n );\n const transformedValue = transform(stringValue);\n setInputValue(transformedValue);\n if (transformedValue !== stringValue) {\n triggerAutoChange(transformedValue);\n }\n } else if (\n previousValue !== null &&\n previousValue !== undefined &&\n (value === null || (value?.day === null && value?.month === null))\n ) {\n setInputValue(placeholder);\n } else {\n return;\n }\n }\n }, [value, mode, previousValue, transform, triggerAutoChange]);\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 {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(event.target.value, mode, removePlaceholder);\n\n const isDateDifferent =\n (v === null) !== (currentParsedData.value === null) ||\n v?.day !== currentParsedData.value?.day ||\n v?.month !== currentParsedData.value?.month;\n if (!isDateDifferent) {\n return;\n }\n\n onChange?.({\n event,\n value: v ?? currentParsedData.value ?? 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 YearlessDateInputRef;\n return Object.assign(input, {\n setValue: (value: YearlessDate | null) => {\n if (!value) {\n setInputValue(placeholder);\n return parseInputValue(placeholder, mode, removePlaceholder);\n }\n const valueAsString = stringifyYearlessDate(\n value.day ?? null,\n value.month ?? null,\n mode,\n );\n const transformedValue = transform(valueAsString);\n setInputValue(transformedValue);\n return parseInputValue(transformedValue, mode, removePlaceholder);\n },\n removePlaceholder,\n });\n }, [mode, placeholder, removePlaceholder, transform]);\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"])}\n data-anv=\"yearless-date-input\"\n {...rootProps}\n >\n <div\n {...wrapperProps}\n className={cx(\n textFieldStyles[\"input-wrapper\"],\n wrapperProps?.className,\n {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [dateFieldYearlessStyles[\"small\"]]: size === \"small\",\n [dateFieldYearlessStyles[\"large\"]]: size === \"large\",\n },\n )}\n >\n <input\n {...restProps}\n ref={combinedRef}\n data-month-value={value?.month}\n data-day-value={value?.day}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n value={inputValue}\n onChange={handleChange}\n type=\"text\"\n className={cx(\n textFieldStyles[\"input\"],\n dateFieldYearlessStyles[\"input\"],\n {\n [textFieldStyles[\"error\"]]: error ?? false,\n },\n classNameProp,\n )}\n />\n {loading ? (\n <div className={textFieldStyles[\"loading-spinner-wrapper\"]}>\n <Spinner />\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nYearlessDateInput.displayName = \"YearlessDateInput\";\n","import {\n forwardRef,\n InputHTMLAttributes,\n Ref,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { YearlessDateMode, YearlessDate } from \"../types\";\nimport { YearlessDateSelectionPopover } from \"./YearlessDateSelectionPopover\";\nimport { DateFieldYearlessChangeHandler } from \"../DateFieldYearless\";\nimport {\n YearlessDateInput,\n YearlessDateInputChange,\n YearlessDateInputRef,\n} from \"./YearlessDateInput\";\nimport { validateYearlessDate } from \"./utils\";\nimport {\n useFocusWithin,\n useOptionallyControlledState,\n} from \"../../../internal\";\nimport { Size } from \"../../../types\";\nimport { mergeRefs } from \"../../../hooks/useMergeRefs/useMergeRefs\";\n\nexport type YearlessDateInputWithPickerProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\" | \"defaultValue\" | \"onFocus\" | \"onBlur\"\n> & {\n /**\n * The controlled value of the date field\n */\n value?: YearlessDate | null;\n /**\n * The default value for uncontrolled usage\n */\n defaultValue?: YearlessDate | null;\n /**\n * The function to call when the date value changes\n */\n onChange?: DateFieldYearlessChangeHandler;\n /**\n * The date format mode (mm/dd or dd/mm)\n */\n mode?: YearlessDateMode;\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * The minimum allowed date\n */\n minDate?: YearlessDate | null;\n /**\n * The maximum allowed date\n */\n maxDate?: YearlessDate | null;\n /**\n * Configuration for unavailable dates\n */\n unavailable?: {\n /**\n * Array of dates that are not selectable\n */\n dates?: YearlessDate[];\n };\n /**\n * Whether the picker is disabled\n */\n disablePicker?: boolean;\n /**\n * The size of the input\n */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n /**\n * Whether the input has an error\n */\n error?: boolean;\n /**\n * Whether the input is in loading state\n */\n loading?: boolean;\n /**\n * Function to call when the input is focused\n */\n onFocus?: (event: React.FocusEvent) => void;\n /**\n * Function to call when the input is blurred\n */\n onBlur?: (event: React.FocusEvent) => void;\n};\n\nexport type YearlessDateInputWithPickerRef = {\n focus: () => void;\n setValue: (value: YearlessDate | null) => void;\n};\n\nexport const YearlessDateInputWithPicker = forwardRef<\n YearlessDateInputWithPickerRef,\n YearlessDateInputWithPickerProps\n>((props, ref) => {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n minDate,\n maxDate,\n unavailable,\n required,\n disablePicker = false,\n mode = \"mm/dd\",\n size = \"medium\",\n error = false,\n loading = false,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...restProps\n } = props;\n\n const inputRef = useRef<YearlessDateInputRef>(null);\n const popoverRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useOptionallyControlledState<YearlessDate | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n const [tempPickerValue, setTempPickerValue] = useState<YearlessDate | null>(\n value,\n );\n\n useImperativeHandle(\n ref,\n (): YearlessDateInputWithPickerRef => ({\n focus: () => {\n if (!inputRef.current) return;\n return inputRef.current.focus();\n },\n setValue: (value: YearlessDate | null) => {\n if (!inputRef.current) return;\n inputRef.current.setValue(value);\n },\n }),\n [inputRef],\n );\n\n const currentValidity = useMemo(\n () =>\n validateYearlessDate({\n value: value ?? null,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const handleInputChange = (change: YearlessDateInputChange) => {\n const { event, value, ...restChange } = change;\n setValue(value);\n setTempPickerValue(value);\n onChangeProp?.({\n ...restChange,\n value,\n isValid: validateYearlessDate({\n value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n };\n\n const inputProps = {\n required,\n mode,\n autoComplete: \"off\",\n ...restProps,\n value: value,\n onChange: handleInputChange,\n \"data-valid\": currentValidity,\n size,\n error,\n loading,\n };\n\n const { props: focusWithinProps } = useFocusWithin({\n onFocus: (e) => {\n requestAnimationFrame(() => {\n onFocusProp?.(e);\n });\n },\n onBlur: (e) => {\n requestAnimationFrame(() => {\n onBlurProp?.(e);\n });\n popoverRef.current?.closePopover();\n },\n otherRelatedElements: popoverContentRef?.current\n ? [popoverContentRef.current]\n : [],\n });\n\n if (disablePicker) {\n return <YearlessDateInput ref={inputRef} {...inputProps} />;\n }\n\n const handlePickerChange = (newValue: YearlessDate) => {\n setTempPickerValue(newValue);\n if (!inputRef.current) return;\n if (\n (mode === \"mm/dd\" && newValue.month) ||\n (mode === \"dd/mm\" && newValue.day)\n ) {\n const valueSet = inputRef.current.setValue(newValue);\n setValue(valueSet.value);\n onChangeProp?.({\n ...valueSet,\n isValid: validateYearlessDate({\n value: valueSet.value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n }\n };\n\n const handlePickerMonthChange = (month: number | null) => {\n handlePickerChange({\n day: value?.day ?? tempPickerValue?.day ?? null,\n month,\n });\n };\n\n const handlePickerDayChange = (day: number | null) => {\n handlePickerChange({\n day,\n month: value?.month ?? tempPickerValue?.month ?? null,\n });\n };\n\n const handlePickerClose = () => {\n setTempPickerValue(null);\n };\n\n const handleInputFocus = (event: React.FocusEvent) => {\n focusWithinProps.onFocus?.(event as React.FocusEvent<HTMLElement>);\n };\n const handleInputBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n const handlePopoverBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n return (\n <YearlessDateSelectionPopover\n popoverRef={popoverRef}\n popoverContentRef={popoverContentRef}\n month={value?.month ?? tempPickerValue?.month ?? null}\n day={value?.day ?? tempPickerValue?.day ?? null}\n onMonthChange={handlePickerMonthChange}\n onDayChange={handlePickerDayChange}\n onClose={handlePickerClose}\n mode={mode}\n onBlur={handlePopoverBlur}\n >\n {({ ref, onKeyDown }) => (\n <YearlessDateInput\n {...inputProps}\n ref={mergeRefs([\n inputRef,\n ref as unknown as Ref<YearlessDateInputRef>,\n ])}\n onKeyDown={(ev) => {\n onKeyDown?.(ev);\n inputProps.onKeyDown?.(ev);\n }}\n onClick={(ev) => {\n inputProps.onClick?.(ev);\n popoverRef.current?.openPopover();\n }}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n enableStepping\n />\n )}\n </YearlessDateSelectionPopover>\n );\n});\n\nYearlessDateInputWithPicker.displayName = \"YearlessDateInputWithPicker\";\n"],"names":["Check","item","value","ref"],"mappings":"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"}
1
+ {"version":3,"file":"YearlessDateInputWithPicker-DtikVrWk.js","sources":["../src/components/DateFieldYearless/internal/PickerListOption.tsx","../src/components/DateFieldYearless/internal/PickerList.tsx","../src/components/DateFieldYearless/internal/utils.ts","../src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.tsx","../src/components/DateFieldYearless/internal/maskito/yearlessDateSegmentsStepping.ts","../src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.ts","../src/components/DateFieldYearless/internal/YearlessDateInput.tsx","../src/components/DateFieldYearless/internal/YearlessDateInputWithPicker.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from \"react\";\nimport { Icon } from \"../../Icon\";\nimport { Flex, FlexProps } from \"../../Flex\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { DataTrackingId } from \"../../../types\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\n/**\n * Props for the PickerListOption component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type PickerListOptionProps = ComponentPropsWithoutRef<\"li\"> & {\n /** The item object containing label, value, and optional disabled state */\n item: { label: string; value: number; disabled?: boolean };\n /** Whether this option is currently selected */\n isSelected: boolean;\n /** Callback when this option is selected */\n onSelectionChange: (\n selected: { label: string; value: number } | undefined,\n ) => void;\n /** Flex alignment for items */\n alignItems?: FlexProps[\"alignItems\"];\n /** Flex justification for items */\n justifyItems?: FlexProps[\"justifyItems\"];\n /** Flex alignment for content */\n alignContent?: FlexProps[\"alignContent\"];\n /** Flex justification for content */\n justifyContent?: FlexProps[\"justifyContent\"];\n /** Flex place-items property */\n placeItems?: FlexProps[\"placeItems\"];\n /** Flex place-content property */\n placeContent?: FlexProps[\"placeContent\"];\n} & DataTrackingId;\n\nexport const PickerListOption = forwardRef<\n HTMLLIElement,\n PickerListOptionProps\n>((props, ref) => {\n const {\n className,\n children,\n onClick,\n item,\n isSelected,\n onSelectionChange,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n\n const disabled = item.disabled || false;\n\n const handleSelection = () => {\n if (disabled) return;\n\n if (isSelected) {\n onSelectionChange(undefined);\n } else {\n onSelectionChange(item);\n }\n };\n\n const onClickHandler = (e: MouseEvent<HTMLLIElement>) => {\n onClick?.(e);\n handleSelection();\n };\n\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLLIElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelection();\n }\n };\n\n const PickerListOptionClassNames = cx(\n styles[\"picker-list-option\"],\n className,\n );\n\n return (\n <li\n className={PickerListOptionClassNames}\n data-anv=\"picker-list-option\"\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={isSelected}\n data-item-label={item.label}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={-1}\n ref={ref}\n {...rest}\n >\n <Flex\n className={styles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n >\n {children || item.label}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{ opacity: isSelected ? 1 : 0 }}\n />\n </li>\n );\n});\n\nPickerListOption.displayName = \"PickerListOption\";\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { PickerListOption } from \"./PickerListOption\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\n/**\n * Represents an item in the picker list with a label and optional disabled state.\n */\nexport type PickerListItem = {\n /** The display label for the item */\n label: string;\n /** The value of the item */\n value: number;\n /** Whether the item is disabled and cannot be selected */\n disabled?: boolean;\n};\n\n/**\n * Props for the PickerList component\n * @extends ComponentPropsWithoutRef<\"ul\">\n * @extends LayoutUtilProps\n */\nexport type PickerListProps = Omit<ComponentPropsWithoutRef<\"ul\">, \"children\"> &\n LayoutUtilProps & {\n /** Array of items to render */\n items: PickerListItem[];\n /** Currently selected item (controlled) */\n selected?: PickerListItem;\n /** Callback when selection changes */\n onSelectionChange?: (selected: PickerListItem | undefined) => void;\n };\n\n/**\n * Ref methods exposed by PickerList\n */\nexport type PickerListRef = {\n /** Scroll to a specific item by label */\n scrollToItem: (label: string, behavior?: ScrollBehavior) => void;\n /** Scroll to a specific item by value */\n scrollToValue: (value: number, behavior?: ScrollBehavior) => void;\n};\n\n/**\n * PickerList component for selecting items from a list.\n *\n * Features:\n * - Single selection mode only\n * - Mouse click selection\n * - Programmatic scrolling to specific items\n * - Support for disabled items\n * - Accessible with proper ARIA attributes\n * - Visual consistency with Listbox component\n *\n * @example\n * <PickerList\n * items={months}\n * selected={selectedMonth}\n * onSelectionChange={handleMonthChange}\n * />\n */\nexport const PickerList = forwardRef<PickerListRef, PickerListProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n items,\n onSelectionChange,\n selected: selectedProp,\n style,\n ...rest\n } = componentProps;\n\n const listRef = useRef<HTMLUListElement>(null);\n\n const scrollToItem = (\n label: string,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const listElement = listRef.current;\n const itemElement = listElement?.querySelector(\n `li[data-item-label=\"${label}\"]`,\n ) as HTMLLIElement | null;\n\n if (listElement && itemElement) {\n // Calculate the target scroll position to center the item\n const itemTop = itemElement.offsetTop;\n const itemHeight = itemElement.offsetHeight;\n const listHeight = listElement.clientHeight;\n\n // Center the item vertically in the list\n const targetScrollTop = itemTop - listHeight / 2 + itemHeight / 2;\n\n // Ensure we don't scroll beyond the bounds\n const maxScrollTop = listElement.scrollHeight - listHeight;\n const clampedScrollTop = Math.max(\n 0,\n Math.min(targetScrollTop, maxScrollTop),\n );\n\n listElement.scrollTo({\n top: clampedScrollTop,\n behavior,\n });\n }\n };\n\n const scrollToValue = (\n value: number,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const item = items.find((item) => item.value === value);\n if (item) {\n scrollToItem(item.label, behavior);\n }\n };\n\n useImperativeHandle(ref, () => ({\n scrollToItem,\n scrollToValue,\n }));\n\n const handleSelectionChange = (item: PickerListItem | undefined) => {\n onSelectionChange?.(item);\n };\n\n const PickerListClassNames = cx(styles[\"picker-list\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ul\n role=\"listbox\"\n style={styleCombined}\n className={PickerListClassNames}\n data-anv=\"picker-list\"\n ref={listRef}\n {...rest}\n tabIndex={-1}\n >\n {items.map((item) => (\n <PickerListOption\n key={item.label}\n item={item}\n isSelected={selectedProp?.value === item.value}\n onSelectionChange={handleSelectionChange}\n />\n ))}\n </ul>\n );\n },\n);\n\nPickerList.displayName = \"PickerList\";\n","import { YearlessDate, YearlessDateMode } from \"../types\";\n\nexport function validateYearlessDate({\n value,\n constraints,\n}: {\n value: YearlessDate | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: YearlessDate[];\n };\n minDate?: YearlessDate | null;\n maxDate?: YearlessDate | null;\n };\n}): boolean {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!value || (!value?.day && !value?.month)) {\n return required ? false : true;\n }\n if (value.day === null || value.month === null) {\n return false;\n }\n if (\n unavailable?.dates?.some(\n (d) => d.day === value.day && d.month === value.month,\n )\n ) {\n return false;\n }\n const minDateMonth = minDate?.month ?? 1;\n const minDateDay = minDate?.day ?? 1;\n const maxDateMonth = maxDate?.month ?? 12;\n const maxDateDay = maxDate?.day ?? 31;\n if (\n value.month < minDateMonth || // Earlier month\n (value.month === minDateMonth && value.day < minDateDay) // Same month, earlier day\n ) {\n return false;\n }\n if (\n value.month > maxDateMonth || // Later month\n (value.month === maxDateMonth && value.day > maxDateDay) // Same month, later day\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * Return list of months\n * 🌍 localeName: name of local,\n * ✅ monthFormat: short, numeric, long (Default)\n */\nexport function getMonthNames({\n locale,\n format,\n}: {\n locale: string;\n format: Intl.DateTimeFormatOptions[\"month\"];\n}): string[] {\n const formatFn = new Intl.DateTimeFormat(locale, { month: format }).format;\n return [...Array(12).keys()].map((m) =>\n formatFn(new Date(Date.UTC(2021, (m + 1) % 12))),\n );\n}\n\n/**\n * Given a text value, parse it into a YearlessDate object and validate it.\n * @param value - The text value to parse.\n * @param mode - The mode of the date input.\n * @param removePlaceholder - The function to remove the placeholder from the text value.\n * @returns An object containing the parsed YearlessDate object, the input validity, and the input emptiness.\n */\nexport function parseInputValue(\n value: string,\n mode: YearlessDateMode,\n removePlaceholder: (value: string) => string,\n): {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n} {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [segment1, segment2] = valueMinusPlaceholder.split(\"/\");\n const incompleteFirstSegment = segment1?.length !== 2;\n const incompleteSecondSegment = segment2?.length !== 2;\n if (mode === \"dd/mm\") {\n return {\n value: {\n day: incompleteFirstSegment ? null : parseInt(segment1),\n month: incompleteSecondSegment ? null : parseInt(segment2),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n }\n return {\n value: {\n day: incompleteSecondSegment ? null : parseInt(segment2),\n month: incompleteFirstSegment ? null : parseInt(segment1),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\n/**\n * Swap the mode of a date input.\n * @param inputString - The text value to swap the mode of.\n * @param previousMode - The previous mode of the date input.\n * @param mode - The new mode of the date input.\n * @returns The text value with the new mode.\n */\nexport function swapMode(\n inputString: string,\n previousMode: YearlessDateMode,\n mode: YearlessDateMode,\n) {\n const { day, month } = divideSegments(inputString, previousMode);\n return stringifyYearlessDate(day, month, mode);\n}\n\n/**\n * Given a text value and a mode, divide the segments of a date input.\n * @param value - The text value to divide the segments of.\n * @param mode - The mode of the date input.\n * @returns An object containing the day and month segments.\n */\nfunction divideSegments(\n value: string,\n mode: YearlessDateMode,\n): {\n day: string;\n month: string;\n} {\n const [segment1, segment2] = value.split(\"/\");\n if (mode === \"dd/mm\") {\n return { day: segment1, month: segment2 };\n }\n return { day: segment2, month: segment1 };\n}\n\n/**\n * Convert a YearlessDate object into a text value.\n * @param day - The day of the date.\n * @param month - The month of the date.\n * @param mode - The mode of the date input.\n * @returns The stringified date.\n */\nexport function stringifyYearlessDate(\n day: number | string | null,\n month: number | string | null,\n mode: YearlessDateMode,\n) {\n const dd = (day ?? \"__\").toString().padStart(2, \"0\");\n const mm = (month ?? \"__\").toString().padStart(2, \"0\");\n if (mode === \"dd/mm\") {\n return `${dd}/${mm}`;\n }\n return `${mm}/${dd}`;\n}\n\n/**\n * Get the number of days in a given month.\n * @param month - The month number (1-12)\n * @returns The number of days in the month\n */\nexport function getDaysInMonth(month: number): number {\n // Use a leap year (2024) to account for February having 29 days\n return new Date(2024, month, 0).getDate();\n}\n\n/**\n * Get months that don't have enough days for the given day.\n * @param day - The day number (1-31)\n * @returns Array of month numbers that don't have enough days for the given day\n */\nexport function getInvalidMonthsForDay(day: number): number[] {\n const invalidMonths: number[] = [];\n\n for (let month = 1; month <= 12; month++) {\n const daysInMonth = getDaysInMonth(month);\n if (day > daysInMonth) {\n invalidMonths.push(month);\n }\n }\n\n return invalidMonths;\n}\n","import { RefObject, useEffect, useMemo, useRef } from \"react\";\nimport Popover from \"../../../internal/components/Popover\";\nimport { PickerList, PickerListRef } from \"./PickerList\";\nimport { getMonthNames, getDaysInMonth, getInvalidMonthsForDay } from \"./utils\";\nimport { Flex } from \"../../Flex\";\nimport { YearlessDateMode } from \"..\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport type { PopoverTriggerProps } from \"../../../internal/components/Popover/PopoverTrigger\";\n\n/**\n * Props for the YearlessDateSelectionPopover component\n */\nexport type YearlessDateSelectionPopoverProps = {\n popoverRef: RefObject<{\n openPopover: () => void;\n closePopover: () => void;\n }>;\n popoverContentRef: RefObject<HTMLDivElement>;\n month: number | null;\n day: number | null;\n onMonthChange: (month: number | null) => void;\n onDayChange: (day: number | null) => void;\n onClose: () => void;\n mode: YearlessDateMode;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n} & PopoverTriggerProps;\n\n/**\n * A yearless date selection tool built into a popover.\n * @param param0\n * @returns\n */\nexport function YearlessDateSelectionPopover({\n children,\n popoverRef,\n popoverContentRef,\n month,\n day,\n onMonthChange,\n onDayChange,\n onClose,\n mode,\n onFocus,\n onBlur,\n}: YearlessDateSelectionPopoverProps) {\n const monthListboxRef = useRef<PickerListRef>(null);\n const dayListboxRef = useRef<PickerListRef>(null);\n\n const months = useMemo(() => {\n return getMonthNames({ locale: \"en-US\", format: \"short\" }).map(\n (name, index) => ({\n label: name,\n value: index + 1,\n }),\n );\n }, []);\n\n const days = useMemo(() => {\n return Array.from({ length: 31 }, (_, i) => ({\n label: `${i + 1}`,\n value: i + 1,\n }));\n }, []);\n\n const invalidDays = useMemo(() => {\n if (!month) {\n return [];\n }\n const daysInMonth = getDaysInMonth(month);\n return Array.from(\n { length: 31 - daysInMonth },\n (_, i) => daysInMonth + i + 1,\n );\n }, [month]);\n\n const invalidMonths = useMemo(() => {\n if (!day) {\n return [];\n }\n return getInvalidMonthsForDay(day);\n }, [day]);\n\n const scrollToSelectedOption = (\n value: number | null,\n ref: RefObject<PickerListRef>,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n if (value && ref.current) {\n ref.current.scrollToValue(value, behavior);\n }\n };\n\n useEffect(() => {\n scrollToSelectedOption(month, monthListboxRef, \"smooth\");\n }, [month]);\n\n useEffect(() => {\n scrollToSelectedOption(day, dayListboxRef, \"smooth\");\n }, [day]);\n\n const handleMonthChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onMonthChange?.(selected.value);\n\n // If current day is invalid for the new month, clear it\n if (day && invalidDays.includes(day)) {\n onDayChange?.(null);\n }\n }\n };\n\n const handleDayChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onDayChange?.(selected.value);\n\n // If current month is invalid for the new day, clear it\n if (month && invalidMonths.includes(month)) {\n onMonthChange?.(null);\n }\n }\n };\n\n const monthPicker = (\n <PickerList\n ref={monthListboxRef}\n items={months.map((item) => ({\n ...item,\n disabled: invalidMonths.includes(item.value),\n }))}\n selected={months.find((m) => m.value === month)}\n style={{ maxHeight: \"240px\", overflow: \"auto\" }}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleMonthChange}\n />\n );\n\n const dayPicker = (\n <PickerList\n ref={dayListboxRef}\n items={days.map((item) => ({\n ...item,\n disabled: invalidDays.includes(item.value),\n }))}\n selected={days.find((d) => d.value === day)}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleDayChange}\n />\n );\n\n return (\n <Popover\n ref={popoverRef}\n placement=\"bottom-start\"\n role=\"listbox\"\n onClose={onClose}\n onOpenAnimationStart={() => {\n scrollToSelectedOption(month, monthListboxRef, \"instant\");\n scrollToSelectedOption(day, dayListboxRef, \"instant\");\n }}\n >\n <Popover.Trigger>\n {(triggerProps) => <>{children(triggerProps)}</>}\n </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n onFocus={onFocus}\n onBlur={onBlur}\n hideWhileClosed\n >\n <Flex gap={2} style={{ maxHeight: \"240px\" }}>\n {mode === \"dd/mm\" ? (\n <>\n {dayPicker}\n {monthPicker}\n </>\n ) : (\n <>\n {monthPicker}\n {dayPicker}\n </>\n )}\n </Flex>\n </Popover.Content>\n </Popover>\n );\n}\n","import type { MaskitoPlugin, MaskitoElement } from \"@maskito/core\";\nimport { maskitoUpdateElement } from \"@maskito/core\";\n\nimport { YearlessDateMode } from \"../../types\";\nimport { getDaysInMonth } from \"../utils\";\n\ntype YearlessDateSegments = {\n month: number;\n day: number;\n};\n\ntype SegmentRange = [number, number];\n\n// Constants\nconst MIN_MONTH = 1;\nconst MAX_MONTH = 12;\nconst MIN_DAY = 1;\nconst MAX_DAY = 31;\nconst SEGMENT_LENGTH = 2;\n\n/**\n * Creates a Maskito plugin for yearless date segment stepping\n * @param mode - The date format mode (mm/dd or dd/mm)\n * @returns MaskitoPlugin that handles arrow key navigation\n * @example\n * const plugin = createYearlessDateSegmentsSteppingPlugin({ mode: \"mm/dd\" });\n */\nexport function createYearlessDateSegmentsSteppingPlugin({\n mode,\n}: {\n mode: YearlessDateMode;\n}): MaskitoPlugin {\n const segmentsIndexes = createSegmentIndexes(mode);\n\n return (element) => {\n const listener = (event: KeyboardEvent): void => {\n if (event.key === \"ArrowRight\") {\n handleArrowRight(element, event);\n return;\n }\n\n if (event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") {\n return;\n }\n\n event.preventDefault();\n\n const selectionStart = element.selectionStart ?? 0;\n const activeSegment = getActiveSegment({\n segmentsIndexes,\n selectionStart,\n });\n\n if (!activeSegment) {\n return;\n }\n\n const segmentSelection = segmentsIndexes.get(activeSegment);\n if (!segmentSelection) {\n return;\n }\n\n const maxValue = getMaxValueForSegment(\n activeSegment,\n element.value,\n segmentsIndexes,\n );\n\n const updatedValue = updateSegmentValue({\n selection: segmentSelection,\n value: element.value,\n increment: event.key === \"ArrowUp\" ? -1 : 1,\n min: MIN_DAY,\n max: maxValue,\n });\n\n // If we're updating the month, check if the day needs to be adjusted\n const finalValue =\n activeSegment === \"month\"\n ? adjustDayForNewMonth(updatedValue, segmentsIndexes)\n : updatedValue;\n\n maskitoUpdateElement(element, {\n value: finalValue,\n selection: [selectionStart, selectionStart],\n });\n };\n\n element.addEventListener(\"keydown\", listener);\n return () => element.removeEventListener(\"keydown\", listener);\n };\n}\n\nfunction createSegmentIndexes(\n mode: YearlessDateMode,\n): Map<keyof YearlessDateSegments, SegmentRange> {\n const map = new Map<keyof YearlessDateSegments, SegmentRange>();\n\n if (mode === \"mm/dd\") {\n map.set(\"month\", [0, SEGMENT_LENGTH]);\n map.set(\"day\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n } else if (mode === \"dd/mm\") {\n map.set(\"day\", [0, SEGMENT_LENGTH]);\n map.set(\"month\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n }\n\n return map;\n}\n\n/**\n * Handle ArrowRight key to insert separator at the right position\n */\nfunction handleArrowRight(element: MaskitoElement, event: KeyboardEvent): void {\n const selectionStart = element.selectionStart ?? 0;\n const value = element.value;\n\n // Position 3 is where the separator should be (after the first segment)\n if (selectionStart === SEGMENT_LENGTH && value.includes(\"__\")) {\n // Insert the separator\n event.preventDefault();\n maskitoUpdateElement(element, {\n value: value + \"/\",\n selection: [selectionStart + 1, selectionStart + 1],\n });\n }\n}\n\n/**\n * Adjust the day value if it's out of bounds for the new month\n */\nfunction adjustDayForNewMonth(\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): string {\n const monthSelection = segmentsIndexes.get(\"month\");\n const daySelection = segmentsIndexes.get(\"day\");\n\n if (!monthSelection || !daySelection) {\n return value;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n const dayValue = parseSegmentValue(value, daySelection);\n\n // If month or day is invalid, return original value\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH || dayValue < MIN_DAY) {\n return value;\n }\n\n const maxDaysInMonth = getDaysInMonth(monthValue);\n\n // If day is within bounds, no adjustment needed\n if (dayValue <= maxDaysInMonth) {\n return value;\n }\n\n // Adjust day to the last valid day of the month\n const [dayFrom, dayTo] = daySelection;\n const adjustedDay = String(maxDaysInMonth).padStart(dayTo - dayFrom, \"0\");\n\n return (\n value.slice(0, dayFrom) + adjustedDay + value.slice(dayTo, value.length)\n );\n}\n\n/**\n * Parse a segment value from the input string, treating empty segments as 0\n */\nfunction parseSegmentValue(value: string, selection: SegmentRange): number {\n const [from, to] = selection;\n const segmentText = value.slice(from, to);\n if (segmentText.includes(\"_\")) return 0;\n return Number(segmentText.padEnd(to - from, \"0\"));\n}\n\nfunction getMaxValueForSegment(\n segment: keyof YearlessDateSegments,\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): number {\n if (segment === \"month\") {\n return MAX_MONTH;\n }\n\n // For day segment, get the current month value to determine max days\n const monthSelection = segmentsIndexes.get(\"month\");\n if (!monthSelection) {\n return MAX_DAY;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n\n // If month is not valid, use default max\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH) {\n return MAX_DAY;\n }\n\n return getDaysInMonth(monthValue);\n}\n\nfunction getActiveSegment({\n segmentsIndexes,\n selectionStart,\n}: {\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>;\n selectionStart: number;\n}): keyof YearlessDateSegments | null {\n for (const [segmentName, segmentRange] of segmentsIndexes.entries()) {\n const [from, to] = segmentRange;\n if (from <= selectionStart && selectionStart <= to) {\n return segmentName;\n }\n }\n return null;\n}\n\nfunction updateSegmentValue({\n selection,\n value,\n increment,\n min,\n max,\n}: {\n selection: SegmentRange;\n value: string;\n increment: number;\n min: number;\n max: number;\n}): string {\n const [from, to] = selection;\n const segmentValue = parseSegmentValue(value, selection);\n // Prevent decrementing 0 losing negative and rolling up to 1.\n if (segmentValue === 0 && increment < 0) return value;\n const newSegmentValue = Math.max(\n min,\n Math.min(max, segmentValue + increment),\n );\n\n return (\n value.slice(0, from) +\n String(newSegmentValue).padStart(to - from, \"0\") +\n value.slice(to, value.length)\n );\n}\n","import { maskitoTransform, type MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\n\nimport { YearlessDateMode } from \"../../types\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\nimport { createYearlessDateSegmentsSteppingPlugin } from \"./yearlessDateSegmentsStepping\";\n\nconst yearlessDatePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n enableStepping = false,\n}: {\n mode: YearlessDateMode;\n enableStepping: boolean;\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([\n ...(dateOptions.plugins || []),\n ...(enableStepping\n ? [createYearlessDateSegmentsSteppingPlugin({ mode })]\n : []),\n ]),\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 const transform = (value: string) => {\n return maskitoTransform(value, datePlaceholderMask);\n };\n\n return { options: datePlaceholderMask, removePlaceholder, transform };\n};\n\nexport default yearlessDatePlaceholderMask;\n","import { useMaskito } from \"@maskito/react\";\nimport {\n forwardRef,\n InputHTMLAttributes,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { YearlessDateMode, YearlessDate } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport yearlessDatePlaceholderMask from \"./maskito/yearlessDatePlaceholderMask\";\nimport { swapMode, stringifyYearlessDate, parseInputValue } from \"./utils\";\nimport textFieldStyles from \"../../TextField/TextField.module.scss\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport cx from \"classnames\";\nimport { PassThroughPropsWithRef, Size } from \"../../../types\";\nimport { Spinner } from \"../../Spinner\";\n\nexport type YearlessDateInputChange = {\n event: React.ChangeEvent<HTMLInputElement> | null;\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type YearlessDateInputChangeHandler = (\n change: YearlessDateInputChange,\n) => void;\n\nexport type YearlessDateInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\"\n> & {\n onChange: YearlessDateInputChangeHandler;\n mode?: YearlessDateMode;\n value?: YearlessDate | null;\n error?: boolean;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n wrapperProps?: PassThroughPropsWithRef<\"div\">;\n rootProps?: PassThroughPropsWithRef<\"div\">;\n loading?: boolean;\n enableStepping?: boolean;\n};\n\nexport type YearlessDateInputRef = HTMLInputElement & {\n setValue: (value: YearlessDate | null) => {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n };\n removePlaceholder: (value: string) => string;\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 YearlessDateInput = forwardRef<\n YearlessDateInputRef,\n YearlessDateInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd\",\n value,\n error,\n size,\n wrapperProps,\n rootProps,\n loading = false,\n enableStepping = false,\n className: classNameProp,\n ...restProps\n },\n ref,\n ) => {\n const placeholder = \"__/__\";\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder, transform } =\n yearlessDatePlaceholderMask({\n mode,\n placeholder,\n enableStepping,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousValue = usePrevious(value);\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 const triggerAutoChange = useCallback(\n (stringValue: string) => {\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(stringValue, mode, removePlaceholder);\n onChange?.({\n event: null,\n value: v,\n isInputValid,\n isInputEmpty,\n });\n },\n [mode, removePlaceholder, onChange],\n );\n\n // Update the input value when the parent's value changes.\n useEffect(() => {\n if (\n previousValue?.day !== value?.day ||\n previousValue?.month !== value?.month\n ) {\n if (value?.day && value?.month) {\n const stringValue = stringifyYearlessDate(\n value.day,\n value.month,\n mode,\n );\n const transformedValue = transform(stringValue);\n setInputValue(transformedValue);\n if (transformedValue !== stringValue) {\n triggerAutoChange(transformedValue);\n }\n } else if (\n previousValue !== null &&\n previousValue !== undefined &&\n (value === null || (value?.day === null && value?.month === null))\n ) {\n setInputValue(placeholder);\n } else {\n return;\n }\n }\n }, [value, mode, previousValue, transform, triggerAutoChange]);\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 {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(event.target.value, mode, removePlaceholder);\n\n const isDateDifferent =\n (v === null) !== (currentParsedData.value === null) ||\n v?.day !== currentParsedData.value?.day ||\n v?.month !== currentParsedData.value?.month;\n if (!isDateDifferent) {\n return;\n }\n\n onChange?.({\n event,\n value: v ?? currentParsedData.value ?? 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 YearlessDateInputRef;\n return Object.assign(input, {\n setValue: (value: YearlessDate | null) => {\n if (!value) {\n setInputValue(placeholder);\n return parseInputValue(placeholder, mode, removePlaceholder);\n }\n const valueAsString = stringifyYearlessDate(\n value.day ?? null,\n value.month ?? null,\n mode,\n );\n const transformedValue = transform(valueAsString);\n setInputValue(transformedValue);\n return parseInputValue(transformedValue, mode, removePlaceholder);\n },\n removePlaceholder,\n });\n }, [mode, placeholder, removePlaceholder, transform]);\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"])}\n data-anv=\"yearless-date-input\"\n {...rootProps}\n >\n <div\n {...wrapperProps}\n className={cx(\n textFieldStyles[\"input-wrapper\"],\n wrapperProps?.className,\n {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [dateFieldYearlessStyles[\"small\"]]: size === \"small\",\n [dateFieldYearlessStyles[\"large\"]]: size === \"large\",\n },\n )}\n >\n <input\n {...restProps}\n ref={combinedRef}\n data-month-value={value?.month}\n data-day-value={value?.day}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n value={inputValue}\n onChange={handleChange}\n type=\"text\"\n className={cx(\n textFieldStyles[\"input\"],\n dateFieldYearlessStyles[\"input\"],\n {\n [textFieldStyles[\"error\"]]: error ?? false,\n },\n classNameProp,\n )}\n />\n {loading ? (\n <div className={textFieldStyles[\"loading-spinner-wrapper\"]}>\n <Spinner />\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nYearlessDateInput.displayName = \"YearlessDateInput\";\n","import {\n forwardRef,\n InputHTMLAttributes,\n Ref,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { YearlessDateMode, YearlessDate } from \"../types\";\nimport { YearlessDateSelectionPopover } from \"./YearlessDateSelectionPopover\";\nimport { DateFieldYearlessChangeHandler } from \"../DateFieldYearless\";\nimport {\n YearlessDateInput,\n YearlessDateInputChange,\n YearlessDateInputRef,\n} from \"./YearlessDateInput\";\nimport { validateYearlessDate } from \"./utils\";\nimport {\n useFocusWithin,\n useOptionallyControlledState,\n} from \"../../../internal\";\nimport { Size } from \"../../../types\";\nimport { mergeRefs } from \"../../../hooks/useMergeRefs/useMergeRefs\";\n\nexport type YearlessDateInputWithPickerProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\" | \"defaultValue\" | \"onFocus\" | \"onBlur\"\n> & {\n /**\n * The controlled value of the date field\n */\n value?: YearlessDate | null;\n /**\n * The default value for uncontrolled usage\n */\n defaultValue?: YearlessDate | null;\n /**\n * The function to call when the date value changes\n */\n onChange?: DateFieldYearlessChangeHandler;\n /**\n * The date format mode (mm/dd or dd/mm)\n */\n mode?: YearlessDateMode;\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * The minimum allowed date\n */\n minDate?: YearlessDate | null;\n /**\n * The maximum allowed date\n */\n maxDate?: YearlessDate | null;\n /**\n * Configuration for unavailable dates\n */\n unavailable?: {\n /**\n * Array of dates that are not selectable\n */\n dates?: YearlessDate[];\n };\n /**\n * Whether the picker is disabled\n */\n disablePicker?: boolean;\n /**\n * The size of the input\n */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n /**\n * Whether the input has an error\n */\n error?: boolean;\n /**\n * Whether the input is in loading state\n */\n loading?: boolean;\n /**\n * Function to call when the input is focused\n */\n onFocus?: (event: React.FocusEvent) => void;\n /**\n * Function to call when the input is blurred\n */\n onBlur?: (event: React.FocusEvent) => void;\n};\n\nexport type YearlessDateInputWithPickerRef = {\n focus: () => void;\n setValue: (value: YearlessDate | null) => void;\n};\n\nexport const YearlessDateInputWithPicker = forwardRef<\n YearlessDateInputWithPickerRef,\n YearlessDateInputWithPickerProps\n>((props, ref) => {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n minDate,\n maxDate,\n unavailable,\n required,\n disablePicker = false,\n mode = \"mm/dd\",\n size = \"medium\",\n error = false,\n loading = false,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...restProps\n } = props;\n\n const inputRef = useRef<YearlessDateInputRef>(null);\n const popoverRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useOptionallyControlledState<YearlessDate | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n const [tempPickerValue, setTempPickerValue] = useState<YearlessDate | null>(\n value,\n );\n\n useImperativeHandle(\n ref,\n (): YearlessDateInputWithPickerRef => ({\n focus: () => {\n if (!inputRef.current) return;\n return inputRef.current.focus();\n },\n setValue: (value: YearlessDate | null) => {\n if (!inputRef.current) return;\n inputRef.current.setValue(value);\n },\n }),\n [inputRef],\n );\n\n const currentValidity = useMemo(\n () =>\n validateYearlessDate({\n value: value ?? null,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const handleInputChange = (change: YearlessDateInputChange) => {\n const { event, value, ...restChange } = change;\n setValue(value);\n setTempPickerValue(value);\n onChangeProp?.({\n ...restChange,\n value,\n isValid: validateYearlessDate({\n value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n };\n\n const inputProps = {\n required,\n mode,\n autoComplete: \"off\",\n ...restProps,\n value: value,\n onChange: handleInputChange,\n \"data-valid\": currentValidity,\n size,\n error,\n loading,\n };\n\n const { props: focusWithinProps } = useFocusWithin({\n onFocus: (e) => {\n requestAnimationFrame(() => {\n onFocusProp?.(e);\n });\n },\n onBlur: (e) => {\n requestAnimationFrame(() => {\n onBlurProp?.(e);\n });\n popoverRef.current?.closePopover();\n },\n otherRelatedElements: popoverContentRef?.current\n ? [popoverContentRef.current]\n : [],\n });\n\n if (disablePicker) {\n return <YearlessDateInput ref={inputRef} {...inputProps} />;\n }\n\n const handlePickerChange = (newValue: YearlessDate) => {\n setTempPickerValue(newValue);\n if (!inputRef.current) return;\n if (\n (mode === \"mm/dd\" && newValue.month) ||\n (mode === \"dd/mm\" && newValue.day)\n ) {\n const valueSet = inputRef.current.setValue(newValue);\n setValue(valueSet.value);\n onChangeProp?.({\n ...valueSet,\n isValid: validateYearlessDate({\n value: valueSet.value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n }\n };\n\n const handlePickerMonthChange = (month: number | null) => {\n handlePickerChange({\n day: value?.day ?? tempPickerValue?.day ?? null,\n month,\n });\n };\n\n const handlePickerDayChange = (day: number | null) => {\n handlePickerChange({\n day,\n month: value?.month ?? tempPickerValue?.month ?? null,\n });\n };\n\n const handlePickerClose = () => {\n setTempPickerValue(null);\n };\n\n const handleInputFocus = (event: React.FocusEvent) => {\n focusWithinProps.onFocus?.(event as React.FocusEvent<HTMLElement>);\n };\n const handleInputBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n const handlePopoverBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n return (\n <YearlessDateSelectionPopover\n popoverRef={popoverRef}\n popoverContentRef={popoverContentRef}\n month={value?.month ?? tempPickerValue?.month ?? null}\n day={value?.day ?? tempPickerValue?.day ?? null}\n onMonthChange={handlePickerMonthChange}\n onDayChange={handlePickerDayChange}\n onClose={handlePickerClose}\n mode={mode}\n onBlur={handlePopoverBlur}\n >\n {({ ref, onKeyDown }) => (\n <YearlessDateInput\n {...inputProps}\n ref={mergeRefs([\n inputRef,\n ref as unknown as Ref<YearlessDateInputRef>,\n ])}\n onKeyDown={(ev) => {\n onKeyDown?.(ev);\n inputProps.onKeyDown?.(ev);\n }}\n onClick={(ev) => {\n inputProps.onClick?.(ev);\n popoverRef.current?.openPopover();\n }}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n enableStepping\n />\n )}\n </YearlessDateSelectionPopover>\n );\n});\n\nYearlessDateInputWithPicker.displayName = \"YearlessDateInputWithPicker\";\n"],"names":["Check","item","value","ref"],"mappings":"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"}
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="url(#a)" d="m10.5 4.5 2.387 6.614 6.613 2.385-6.613 2.387-2.388 6.614-2.386-6.613L1.5 13.499l6.613-2.386z"/><path fill="url(#b)" d="m18 1.5 1.193 3.307L22.5 6l-3.307 1.193L18 10.5l-1.193-3.307L13.5 6l3.307-1.193z"/><defs><linearGradient id="a" x1="19.5" x2="3.604" y1="14.583" y2="20.367" gradientUnits="userSpaceOnUse"><stop stop-color="light-dark(#026EE4, #77C5EA)"/><stop offset="1" stop-color="light-dark(#27AEEE, #D0D8E1)"/></linearGradient><linearGradient id="b" x1="22.5" x2="14.552" y1="6.542" y2="9.433" gradientUnits="userSpaceOnUse"><stop stop-color="light-dark(#026EE4, #77C5EA)"/><stop offset="1" stop-color="light-dark(#27AEEE, #D0D8E1)"/></linearGradient></defs></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="url(#ai-mark-gradient-large)" d="m10.5 4.5 2.387 6.614 6.613 2.385-6.613 2.387-2.388 6.614-2.386-6.613L1.5 13.499l6.613-2.386z"/><path fill="url(#ai-mark-gradient-small)" d="m18 1.5 1.193 3.307L22.5 6l-3.307 1.193L18 10.5l-1.193-3.307L13.5 6l3.307-1.193z"/><defs><linearGradient id="ai-mark-gradient-large" x1="19.5" x2="3.604" y1="14.583" y2="20.367" gradientUnits="userSpaceOnUse"><stop stop-color="light-dark(#026EE4, #77C5EA)"/><stop offset="1" stop-color="light-dark(#27AEEE, #D0D8E1)"/></linearGradient><linearGradient id="ai-mark-gradient-small" x1="22.5" x2="14.552" y1="6.542" y2="9.433" gradientUnits="userSpaceOnUse"><stop stop-color="light-dark(#026EE4, #77C5EA)"/><stop offset="1" stop-color="light-dark(#27AEEE, #D0D8E1)"/></linearGradient></defs></svg>
package/dist/beta.js CHANGED
@@ -1,22 +1,22 @@
1
- export { F as FilterBar } from './FilterBar-l8aCxO9c.js';
2
- export { C as COLUMN_TYPE_DEFAULTS, D as DataTable, b as booleanFormatter, a as chipsFormatter, c as createColumnHelper, d as currencyFormatter, i as dateFormatPresets, e as dateFormatter, f as dateTimeFormatter, g as getColumnTypeDefaults, h as htmlFormatter, m as markdownFormatter, n as numberFormatter, p as percentFormatter, r as resolveColumnTypeConfig, t as timeFormatPresets, j as timeFormatter, y as yearlessDateFormatter } from './DataTable-CnRkAUpI.js';
3
- export { T as Toolbar, a as ToolbarButton, b as ToolbarButtonLink, d as ToolbarControlGroup, f as ToolbarElement, e as ToolbarSearchField, c as ToolbarSelect } from './Toolbar-j9Y2YleC.js';
4
- export { T as ToolbarButtonToggle } from './ToolbarButtonToggle-CywNpsGX.js';
5
- export { u as useCalendarBetaProps } from './Calendar-DWyW5gvQ.js';
6
- export { C as Calendar } from './Calendar-Qlnpl3zR.js';
7
- import { S as SelectField$1, a as SelectFieldSync$1 } from './SelectFieldSync-z_kyrBvL.js';
1
+ export { F as FilterBar } from './FilterBar-kN4R0B_m.js';
2
+ export { C as COLUMN_TYPE_DEFAULTS, D as DataTable, b as booleanFormatter, a as chipsFormatter, c as createColumnHelper, d as currencyFormatter, i as dateFormatPresets, e as dateFormatter, f as dateTimeFormatter, g as getColumnTypeDefaults, h as htmlFormatter, m as markdownFormatter, n as numberFormatter, p as percentFormatter, r as resolveColumnTypeConfig, t as timeFormatPresets, j as timeFormatter, y as yearlessDateFormatter } from './DataTable-QWgY5s7o.js';
3
+ export { T as Toolbar, a as ToolbarButton, b as ToolbarButtonLink, d as ToolbarControlGroup, f as ToolbarElement, e as ToolbarSearchField, c as ToolbarSelect } from './Toolbar-BObGbcb3.js';
4
+ export { T as ToolbarButtonToggle } from './ToolbarButtonToggle-DsaG1BWZ.js';
5
+ export { u as useCalendarBetaProps } from './Calendar-C05ESFqK.js';
6
+ export { C as Calendar } from './Calendar-Dmsp_qIo.js';
7
+ import { S as SelectField$1, a as SelectFieldSync$1 } from './SelectFieldSync-DO03WeCx.js';
8
8
  import { forwardRef, createElement } from 'react';
9
9
  import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
10
- import { M as MultiSelectField$1, a as MultiSelectFieldSync$1 } from './MultiSelectFieldSync-DNJ1TBf8.js';
11
- import { S as SelectMenu$1, a as SelectMenuSync$1 } from './SelectMenuSync-BD8oedGs.js';
12
- import { M as MultiSelectMenu$1, a as MultiSelectMenuSync$1 } from './MultiSelectMenuSync-LD931FAV.js';
13
- export { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-CB1H4ZTC.js';
14
- export { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-D4l3zik4.js';
10
+ import { M as MultiSelectField$1, a as MultiSelectFieldSync$1 } from './MultiSelectFieldSync-Zr6ObmiY.js';
11
+ import { S as SelectMenu$1, a as SelectMenuSync$1 } from './SelectMenuSync-DStox_Zy.js';
12
+ import { M as MultiSelectMenu$1, a as MultiSelectMenuSync$1 } from './MultiSelectMenuSync-Cdsp2_ZA.js';
13
+ export { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-BHSzJlYx.js';
14
+ export { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-BfYc8PHd.js';
15
15
  export { I as InteractiveCard } from './InteractiveCard-CyUR_VLW.js';
16
- export { R as RichTextEditor } from './RichTextEditor-Cm29o9RK.js';
17
- export { S as SavedFiltersButton } from './SavedFiltersButton-3VadkBsA.js';
18
- export { T as TypeaheadTextField } from './TypeaheadTextField-BJrrlLjP.js';
19
- export { u as useAdaptiveView } from './useAdaptiveView-BdzXyicd.js';
16
+ export { R as RichTextEditor } from './RichTextEditor-D1IBYQyU.js';
17
+ export { S as SavedFiltersButton } from './SavedFiltersButton-CtClXIW1.js';
18
+ export { T as TypeaheadTextField } from './TypeaheadTextField-DU10rQHH.js';
19
+ export { u as useAdaptiveView } from './useAdaptiveView-0Cd-y9FC.js';
20
20
 
21
21
  const BETA_EXPORT_REMOVED_VERSION = "4.0";
22
22
  const STABLE_PROMOTION_PATHS = {
@@ -1,33 +1,33 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useMemo, forwardRef, createElement, createContext, useRef, useId, useState, useContext, useEffect, useCallback } from 'react';
3
- import { C as Chip } from './Chip-BYK1b3lZ.js';
4
- import { d as ToolbarItemWrapper, u as useToolbarSize, T as ToolbarButtonToggle } from './ToolbarButtonToggle-CywNpsGX.js';
3
+ import { C as Chip } from './Chip-Cb3dnZht.js';
4
+ import { d as ToolbarItemWrapper, u as useToolbarSize, T as ToolbarButtonToggle } from './ToolbarButtonToggle-DsaG1BWZ.js';
5
5
  import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
6
6
  import { S as SvgEvent } from './TimezoneMessage-BrKB_psP.js';
7
7
  import { c as cx } from './index-De1g9FRV.js';
8
- import { B as Button } from './Button-ChQARW0y.js';
9
- import { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-DNJ1TBf8.js';
10
- import { M as MultiSelectMenu, a as MultiSelectMenuSync } from './MultiSelectMenuSync-LD931FAV.js';
11
- import { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-z_kyrBvL.js';
12
- import { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-BD8oedGs.js';
13
- import { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-CB1H4ZTC.js';
14
- import { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-D4l3zik4.js';
15
- import { C as Checkbox } from './Checkbox-BE8Jmz3t.js';
16
- import { a as OptionsPopover } from './useAdaptiveView-BdzXyicd.js';
17
- import { M as MenuFooter } from './MenuFooter-Dtckm9vY.js';
8
+ import { B as Button } from './Button-CjeF1Agb.js';
9
+ import { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-Zr6ObmiY.js';
10
+ import { M as MultiSelectMenu, a as MultiSelectMenuSync } from './MultiSelectMenuSync-Cdsp2_ZA.js';
11
+ import { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-DO03WeCx.js';
12
+ import { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-DStox_Zy.js';
13
+ import { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-BHSzJlYx.js';
14
+ import { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-BfYc8PHd.js';
15
+ import { C as Checkbox } from './Checkbox-DEU2CtNu.js';
16
+ import { a as OptionsPopover } from './useAdaptiveView-0Cd-y9FC.js';
17
+ import { M as MenuFooter } from './MenuFooter-BZTsAaOz.js';
18
18
  import { D as DateTime } from './luxon-wpz4A-OQ.js';
19
- import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-CSCcHt9Z.js';
19
+ import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-DOJZRbkP.js';
20
20
  import { F as Flex } from './Flex-Bb3iHExM.js';
21
21
  import { u as useConfirmationDraft } from './confirmationTypes-CG7xl50f.js';
22
- import { D as Dialog } from './Dialog-DMR_uvde.js';
23
- import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-OiVF8sye.js';
22
+ import { D as Dialog } from './Dialog-D7wWgUiC.js';
23
+ import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-BWE-utxz.js';
24
24
  import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
25
- import { F as FieldLabel } from './FieldLabel-tFSfJ7OJ.js';
25
+ import { F as FieldLabel } from './FieldLabel-BLH70tsq.js';
26
26
  import { G as Grid } from './Grid-ho1pGJ5L.js';
27
- import { N as NumberField } from './NumberField-CFYbODNe.js';
28
- import { T as Text } from './Text-BTCfqeSr.js';
29
- import { R as Radio } from './Radio-v3lT3AoB.js';
30
- import { T as TextField } from './TextField-CqJ9s4SG.js';
27
+ import { N as NumberField } from './NumberField-CigVFXzW.js';
28
+ import { T as Text } from './Text-CXf0c8th.js';
29
+ import { R as Radio } from './Radio-DAsbQWNO.js';
30
+ import { T as TextField } from './TextField-B_LS82U2.js';
31
31
 
32
32
  import './filter-state.css';const FilterItemWrapper = ({ children }) => {
33
33
  const props = useMemo(
@@ -950,6 +950,11 @@ const dateListLibraryOptions = LIBRARY_OPTION_IDS_ORDERED.map((id) => ({
950
950
  id,
951
951
  label: `${LIBRARY_OPTION_LABELS[id]}…`
952
952
  }));
953
+ const getVisibleDateListDefaultOptions = (filter) => {
954
+ const excluded = new Set(filter.excludeDefaultOptions ?? []);
955
+ if (excluded.size === 0) return dateListLibraryOptions;
956
+ return dateListLibraryOptions.filter((opt) => !excluded.has(opt.id));
957
+ };
953
958
  const isDateListRangeLibraryId = (id) => id === "customRange";
954
959
  const formatDateForLabel = (iso) => {
955
960
  const d = DateTime.fromISO(iso, { zone: "local" });
@@ -1071,8 +1076,13 @@ const FilterDateList = ({
1071
1076
  clear
1072
1077
  }) => {
1073
1078
  const [openLibraryId, setOpenLibraryId] = useState(null);
1079
+ const excludeDefaultOptions = filter.excludeDefaultOptions;
1080
+ const visibleLibraryOptions = useMemo(
1081
+ () => getVisibleDateListDefaultOptions({ excludeDefaultOptions }),
1082
+ [excludeDefaultOptions]
1083
+ );
1074
1084
  useEffect(() => {
1075
- const libraryLabels = new Set(dateListLibraryOptions.map((o) => o.label));
1085
+ const libraryLabels = new Set(visibleLibraryOptions.map((o) => o.label));
1076
1086
  filter.options.forEach((opt) => {
1077
1087
  if (isDateListLibraryOptionId(opt.id)) {
1078
1088
  warnOnce(
@@ -1085,17 +1095,19 @@ const FilterDateList = ({
1085
1095
  );
1086
1096
  }
1087
1097
  });
1088
- }, [filter.options]);
1098
+ }, [filter.options, visibleLibraryOptions]);
1089
1099
  const options = useMemo(
1090
1100
  () => [
1091
- ...filter.options.map(
1092
- (opt) => ({ id: opt.id, label: opt.label })
1093
- ),
1094
- ...dateListLibraryOptions.map(
1095
- (opt) => ({ id: opt.id, label: opt.label })
1096
- )
1101
+ ...filter.options.map((opt) => ({
1102
+ id: opt.id,
1103
+ label: opt.label
1104
+ })),
1105
+ ...visibleLibraryOptions.map((opt) => ({
1106
+ id: opt.id,
1107
+ label: opt.label
1108
+ }))
1097
1109
  ],
1098
- [filter.options]
1110
+ [filter.options, visibleLibraryOptions]
1099
1111
  );
1100
1112
  const selectedOption = useMemo(
1101
1113
  () => committedValue ? options.find((opt) => opt.id === committedValue.id) ?? null : null,
@@ -1203,7 +1215,7 @@ const dateListAdapter = {
1203
1215
  label: opt.label,
1204
1216
  extra: { value: opt.value }
1205
1217
  }));
1206
- const librarySelectOptions = dateListLibraryOptions.map((opt) => ({
1218
+ const librarySelectOptions = getVisibleDateListDefaultOptions(originalFilter).map((opt) => ({
1207
1219
  id: opt.id,
1208
1220
  label: opt.label,
1209
1221
  extra: { value: null }
@@ -1864,4 +1876,4 @@ const cloneFiltersWithItemRefs = (filters) => filters.map(
1864
1876
  );
1865
1877
 
1866
1878
  export { DateListDialog as D, FilterGroupContext as F, checkActiveFilters as a, getAdapter as b, cloneFiltersWithItemRefs as c, FilterItemWrapper as d, FilterTriggerButton as e, getActiveFilters as g, hasFilterSelectionChanged as h, preserveFilterState as p, resetFilters as r, styles as s, updateSingleFilter as u };
1867
- //# sourceMappingURL=filter-state-C-4lebJG.js.map
1879
+ //# sourceMappingURL=filter-state-BL17jEUz.js.map