@cdx-ui/primitives 0.0.1-beta.140 → 0.0.1-beta.141

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 (384) hide show
  1. package/lib/commonjs/calendar/CalendarGrid.js +33 -0
  2. package/lib/commonjs/calendar/CalendarGrid.js.map +1 -0
  3. package/lib/commonjs/calendar/CalendarRoot.js +95 -0
  4. package/lib/commonjs/calendar/CalendarRoot.js.map +1 -0
  5. package/lib/commonjs/calendar/context.js +17 -0
  6. package/lib/commonjs/calendar/context.js.map +1 -0
  7. package/lib/commonjs/calendar/index.js +27 -0
  8. package/lib/commonjs/calendar/index.js.map +1 -0
  9. package/lib/commonjs/calendar/types.js +6 -0
  10. package/lib/commonjs/calendar/types.js.map +1 -0
  11. package/lib/commonjs/date-field/DateFieldHiddenInput.js +148 -0
  12. package/lib/commonjs/date-field/DateFieldHiddenInput.js.map +1 -0
  13. package/lib/commonjs/date-field/DateFieldInput.js +122 -0
  14. package/lib/commonjs/date-field/DateFieldInput.js.map +1 -0
  15. package/lib/commonjs/date-field/DateFieldRoot.js +85 -0
  16. package/lib/commonjs/date-field/DateFieldRoot.js.map +1 -0
  17. package/lib/commonjs/date-field/DateFieldSegment.js +92 -0
  18. package/lib/commonjs/date-field/DateFieldSegment.js.map +1 -0
  19. package/lib/commonjs/date-field/context.js +19 -0
  20. package/lib/commonjs/date-field/context.js.map +1 -0
  21. package/lib/commonjs/date-field/index.js +34 -0
  22. package/lib/commonjs/date-field/index.js.map +1 -0
  23. package/lib/commonjs/date-field/segmentIndex.js +23 -0
  24. package/lib/commonjs/date-field/segmentIndex.js.map +1 -0
  25. package/lib/commonjs/date-field/segmentKeyboard.js +169 -0
  26. package/lib/commonjs/date-field/segmentKeyboard.js.map +1 -0
  27. package/lib/commonjs/date-field/types.js +6 -0
  28. package/lib/commonjs/date-field/types.js.map +1 -0
  29. package/lib/commonjs/date-field/useDateFieldSegmentState.js +381 -0
  30. package/lib/commonjs/date-field/useDateFieldSegmentState.js.map +1 -0
  31. package/lib/commonjs/date-field/useRangeDateFieldBridge.js +67 -0
  32. package/lib/commonjs/date-field/useRangeDateFieldBridge.js.map +1 -0
  33. package/lib/commonjs/date-picker/DatePickerRoot.js +123 -0
  34. package/lib/commonjs/date-picker/DatePickerRoot.js.map +1 -0
  35. package/lib/commonjs/date-picker/context.js +17 -0
  36. package/lib/commonjs/date-picker/context.js.map +1 -0
  37. package/lib/commonjs/date-picker/index.js +26 -0
  38. package/lib/commonjs/date-picker/index.js.map +1 -0
  39. package/lib/commonjs/date-range-picker/DateRangePickerRoot.js +144 -0
  40. package/lib/commonjs/date-range-picker/DateRangePickerRoot.js.map +1 -0
  41. package/lib/commonjs/date-range-picker/context.js +23 -0
  42. package/lib/commonjs/date-range-picker/context.js.map +1 -0
  43. package/lib/commonjs/date-range-picker/index.js +26 -0
  44. package/lib/commonjs/date-range-picker/index.js.map +1 -0
  45. package/lib/commonjs/date-time-field/DateTimeFieldHiddenInput.js +150 -0
  46. package/lib/commonjs/date-time-field/DateTimeFieldHiddenInput.js.map +1 -0
  47. package/lib/commonjs/date-time-field/DateTimeFieldInput.js +104 -0
  48. package/lib/commonjs/date-time-field/DateTimeFieldInput.js.map +1 -0
  49. package/lib/commonjs/date-time-field/DateTimeFieldRoot.js +159 -0
  50. package/lib/commonjs/date-time-field/DateTimeFieldRoot.js.map +1 -0
  51. package/lib/commonjs/date-time-field/DateTimeFieldSegment.js +87 -0
  52. package/lib/commonjs/date-time-field/DateTimeFieldSegment.js.map +1 -0
  53. package/lib/commonjs/date-time-field/context.js +17 -0
  54. package/lib/commonjs/date-time-field/context.js.map +1 -0
  55. package/lib/commonjs/date-time-field/index.js +40 -0
  56. package/lib/commonjs/date-time-field/index.js.map +1 -0
  57. package/lib/commonjs/date-time-field/useDateTimeFieldSegmentState.js +564 -0
  58. package/lib/commonjs/date-time-field/useDateTimeFieldSegmentState.js.map +1 -0
  59. package/lib/commonjs/date-time-list/DateTimeListRoot.js +418 -0
  60. package/lib/commonjs/date-time-list/DateTimeListRoot.js.map +1 -0
  61. package/lib/commonjs/date-time-list/context.js +26 -0
  62. package/lib/commonjs/date-time-list/context.js.map +1 -0
  63. package/lib/commonjs/date-time-list/index.js +62 -0
  64. package/lib/commonjs/date-time-list/index.js.map +1 -0
  65. package/lib/commonjs/date-time-picker/DateTimePickerRoot.js +134 -0
  66. package/lib/commonjs/date-time-picker/DateTimePickerRoot.js.map +1 -0
  67. package/lib/commonjs/date-time-picker/context.js +17 -0
  68. package/lib/commonjs/date-time-picker/context.js.map +1 -0
  69. package/lib/commonjs/date-time-picker/index.js +26 -0
  70. package/lib/commonjs/date-time-picker/index.js.map +1 -0
  71. package/lib/commonjs/dialog/DialogRoot.js +1 -1
  72. package/lib/commonjs/dialog/DialogRoot.js.map +1 -1
  73. package/lib/commonjs/index.js +148 -0
  74. package/lib/commonjs/index.js.map +1 -1
  75. package/lib/commonjs/month-calendar/MonthCalendarCell.js +64 -0
  76. package/lib/commonjs/month-calendar/MonthCalendarCell.js.map +1 -0
  77. package/lib/commonjs/month-calendar/MonthCalendarRoot.js +103 -0
  78. package/lib/commonjs/month-calendar/MonthCalendarRoot.js.map +1 -0
  79. package/lib/commonjs/month-calendar/MonthCalendarYearCell.js +63 -0
  80. package/lib/commonjs/month-calendar/MonthCalendarYearCell.js.map +1 -0
  81. package/lib/commonjs/month-calendar/context.js +17 -0
  82. package/lib/commonjs/month-calendar/context.js.map +1 -0
  83. package/lib/commonjs/month-calendar/index.js +34 -0
  84. package/lib/commonjs/month-calendar/index.js.map +1 -0
  85. package/lib/commonjs/month-picker/MonthPickerRoot.js +118 -0
  86. package/lib/commonjs/month-picker/MonthPickerRoot.js.map +1 -0
  87. package/lib/commonjs/month-picker/context.js +17 -0
  88. package/lib/commonjs/month-picker/context.js.map +1 -0
  89. package/lib/commonjs/month-picker/index.js +26 -0
  90. package/lib/commonjs/month-picker/index.js.map +1 -0
  91. package/lib/commonjs/overlay/useAnchorPosition.js +27 -16
  92. package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
  93. package/lib/commonjs/overlay/useDismissOverlay.web.js +10 -2
  94. package/lib/commonjs/overlay/useDismissOverlay.web.js.map +1 -1
  95. package/lib/commonjs/overlay/useOverlayPosition.js +5 -2
  96. package/lib/commonjs/overlay/useOverlayPosition.js.map +1 -1
  97. package/lib/commonjs/portal/portal.js +59 -2
  98. package/lib/commonjs/portal/portal.js.map +1 -1
  99. package/lib/commonjs/range-calendar/RangeCalendarRoot.js +148 -0
  100. package/lib/commonjs/range-calendar/RangeCalendarRoot.js.map +1 -0
  101. package/lib/commonjs/range-calendar/context.js +17 -0
  102. package/lib/commonjs/range-calendar/context.js.map +1 -0
  103. package/lib/commonjs/range-calendar/index.js +20 -0
  104. package/lib/commonjs/range-calendar/index.js.map +1 -0
  105. package/lib/commonjs/select/SelectRoot.js +1 -1
  106. package/lib/commonjs/select/SelectRoot.js.map +1 -1
  107. package/lib/commonjs/utils/accessibleLabel.js +23 -0
  108. package/lib/commonjs/utils/accessibleLabel.js.map +1 -0
  109. package/lib/commonjs/utils/createPortal.web.js +21 -0
  110. package/lib/commonjs/utils/createPortal.web.js.map +1 -0
  111. package/lib/module/calendar/CalendarGrid.js +29 -0
  112. package/lib/module/calendar/CalendarGrid.js.map +1 -0
  113. package/lib/module/calendar/CalendarRoot.js +91 -0
  114. package/lib/module/calendar/CalendarRoot.js.map +1 -0
  115. package/lib/module/calendar/context.js +12 -0
  116. package/lib/module/calendar/context.js.map +1 -0
  117. package/lib/module/calendar/index.js +6 -0
  118. package/lib/module/calendar/index.js.map +1 -0
  119. package/lib/module/calendar/types.js +4 -0
  120. package/lib/module/calendar/types.js.map +1 -0
  121. package/lib/module/date-field/DateFieldHiddenInput.js +146 -0
  122. package/lib/module/date-field/DateFieldHiddenInput.js.map +1 -0
  123. package/lib/module/date-field/DateFieldInput.js +118 -0
  124. package/lib/module/date-field/DateFieldInput.js.map +1 -0
  125. package/lib/module/date-field/DateFieldRoot.js +81 -0
  126. package/lib/module/date-field/DateFieldRoot.js.map +1 -0
  127. package/lib/module/date-field/DateFieldSegment.js +88 -0
  128. package/lib/module/date-field/DateFieldSegment.js.map +1 -0
  129. package/lib/module/date-field/context.js +15 -0
  130. package/lib/module/date-field/context.js.map +1 -0
  131. package/lib/module/date-field/index.js +7 -0
  132. package/lib/module/date-field/index.js.map +1 -0
  133. package/lib/module/date-field/segmentIndex.js +18 -0
  134. package/lib/module/date-field/segmentIndex.js.map +1 -0
  135. package/lib/module/date-field/segmentKeyboard.js +157 -0
  136. package/lib/module/date-field/segmentKeyboard.js.map +1 -0
  137. package/lib/module/date-field/types.js +4 -0
  138. package/lib/module/date-field/types.js.map +1 -0
  139. package/lib/module/date-field/useDateFieldSegmentState.js +378 -0
  140. package/lib/module/date-field/useDateFieldSegmentState.js.map +1 -0
  141. package/lib/module/date-field/useRangeDateFieldBridge.js +63 -0
  142. package/lib/module/date-field/useRangeDateFieldBridge.js.map +1 -0
  143. package/lib/module/date-picker/DatePickerRoot.js +119 -0
  144. package/lib/module/date-picker/DatePickerRoot.js.map +1 -0
  145. package/lib/module/date-picker/context.js +12 -0
  146. package/lib/module/date-picker/context.js.map +1 -0
  147. package/lib/module/date-picker/index.js +5 -0
  148. package/lib/module/date-picker/index.js.map +1 -0
  149. package/lib/module/date-range-picker/DateRangePickerRoot.js +140 -0
  150. package/lib/module/date-range-picker/DateRangePickerRoot.js.map +1 -0
  151. package/lib/module/date-range-picker/context.js +19 -0
  152. package/lib/module/date-range-picker/context.js.map +1 -0
  153. package/lib/module/date-range-picker/index.js +5 -0
  154. package/lib/module/date-range-picker/index.js.map +1 -0
  155. package/lib/module/date-time-field/DateTimeFieldHiddenInput.js +148 -0
  156. package/lib/module/date-time-field/DateTimeFieldHiddenInput.js.map +1 -0
  157. package/lib/module/date-time-field/DateTimeFieldInput.js +100 -0
  158. package/lib/module/date-time-field/DateTimeFieldInput.js.map +1 -0
  159. package/lib/module/date-time-field/DateTimeFieldRoot.js +154 -0
  160. package/lib/module/date-time-field/DateTimeFieldRoot.js.map +1 -0
  161. package/lib/module/date-time-field/DateTimeFieldSegment.js +83 -0
  162. package/lib/module/date-time-field/DateTimeFieldSegment.js.map +1 -0
  163. package/lib/module/date-time-field/context.js +12 -0
  164. package/lib/module/date-time-field/context.js.map +1 -0
  165. package/lib/module/date-time-field/index.js +7 -0
  166. package/lib/module/date-time-field/index.js.map +1 -0
  167. package/lib/module/date-time-field/useDateTimeFieldSegmentState.js +561 -0
  168. package/lib/module/date-time-field/useDateTimeFieldSegmentState.js.map +1 -0
  169. package/lib/module/date-time-list/DateTimeListRoot.js +416 -0
  170. package/lib/module/date-time-list/DateTimeListRoot.js.map +1 -0
  171. package/lib/module/date-time-list/context.js +20 -0
  172. package/lib/module/date-time-list/context.js.map +1 -0
  173. package/lib/module/date-time-list/index.js +5 -0
  174. package/lib/module/date-time-list/index.js.map +1 -0
  175. package/lib/module/date-time-picker/DateTimePickerRoot.js +130 -0
  176. package/lib/module/date-time-picker/DateTimePickerRoot.js.map +1 -0
  177. package/lib/module/date-time-picker/context.js +12 -0
  178. package/lib/module/date-time-picker/context.js.map +1 -0
  179. package/lib/module/date-time-picker/index.js +5 -0
  180. package/lib/module/date-time-picker/index.js.map +1 -0
  181. package/lib/module/dialog/DialogRoot.js +1 -1
  182. package/lib/module/dialog/DialogRoot.js.map +1 -1
  183. package/lib/module/index.js +11 -2
  184. package/lib/module/index.js.map +1 -1
  185. package/lib/module/month-calendar/MonthCalendarCell.js +60 -0
  186. package/lib/module/month-calendar/MonthCalendarCell.js.map +1 -0
  187. package/lib/module/month-calendar/MonthCalendarRoot.js +99 -0
  188. package/lib/module/month-calendar/MonthCalendarRoot.js.map +1 -0
  189. package/lib/module/month-calendar/MonthCalendarYearCell.js +59 -0
  190. package/lib/module/month-calendar/MonthCalendarYearCell.js.map +1 -0
  191. package/lib/module/month-calendar/context.js +12 -0
  192. package/lib/module/month-calendar/context.js.map +1 -0
  193. package/lib/module/month-calendar/index.js +7 -0
  194. package/lib/module/month-calendar/index.js.map +1 -0
  195. package/lib/module/month-picker/MonthPickerRoot.js +114 -0
  196. package/lib/module/month-picker/MonthPickerRoot.js.map +1 -0
  197. package/lib/module/month-picker/context.js +12 -0
  198. package/lib/module/month-picker/context.js.map +1 -0
  199. package/lib/module/month-picker/index.js +5 -0
  200. package/lib/module/month-picker/index.js.map +1 -0
  201. package/lib/module/overlay/useAnchorPosition.js +27 -16
  202. package/lib/module/overlay/useAnchorPosition.js.map +1 -1
  203. package/lib/module/overlay/useDismissOverlay.web.js +9 -2
  204. package/lib/module/overlay/useDismissOverlay.web.js.map +1 -1
  205. package/lib/module/overlay/useOverlayPosition.js +5 -2
  206. package/lib/module/overlay/useOverlayPosition.js.map +1 -1
  207. package/lib/module/portal/portal.js +59 -2
  208. package/lib/module/portal/portal.js.map +1 -1
  209. package/lib/module/range-calendar/RangeCalendarRoot.js +144 -0
  210. package/lib/module/range-calendar/RangeCalendarRoot.js.map +1 -0
  211. package/lib/module/range-calendar/context.js +12 -0
  212. package/lib/module/range-calendar/context.js.map +1 -0
  213. package/lib/module/range-calendar/index.js +5 -0
  214. package/lib/module/range-calendar/index.js.map +1 -0
  215. package/lib/module/select/SelectRoot.js +1 -1
  216. package/lib/module/select/SelectRoot.js.map +1 -1
  217. package/lib/module/utils/accessibleLabel.js +18 -0
  218. package/lib/module/utils/accessibleLabel.js.map +1 -0
  219. package/lib/module/utils/createPortal.web.js +17 -0
  220. package/lib/module/utils/createPortal.web.js.map +1 -0
  221. package/lib/typescript/calendar/CalendarGrid.d.ts +7 -0
  222. package/lib/typescript/calendar/CalendarGrid.d.ts.map +1 -0
  223. package/lib/typescript/calendar/CalendarRoot.d.ts +10 -0
  224. package/lib/typescript/calendar/CalendarRoot.d.ts.map +1 -0
  225. package/lib/typescript/calendar/context.d.ts +18 -0
  226. package/lib/typescript/calendar/context.d.ts.map +1 -0
  227. package/lib/typescript/calendar/index.d.ts +5 -0
  228. package/lib/typescript/calendar/index.d.ts.map +1 -0
  229. package/lib/typescript/calendar/types.d.ts +29 -0
  230. package/lib/typescript/calendar/types.d.ts.map +1 -0
  231. package/lib/typescript/date-field/DateFieldHiddenInput.d.ts +4 -0
  232. package/lib/typescript/date-field/DateFieldHiddenInput.d.ts.map +1 -0
  233. package/lib/typescript/date-field/DateFieldInput.d.ts +8 -0
  234. package/lib/typescript/date-field/DateFieldInput.d.ts.map +1 -0
  235. package/lib/typescript/date-field/DateFieldRoot.d.ts +10 -0
  236. package/lib/typescript/date-field/DateFieldRoot.d.ts.map +1 -0
  237. package/lib/typescript/date-field/DateFieldSegment.d.ts +9 -0
  238. package/lib/typescript/date-field/DateFieldSegment.d.ts.map +1 -0
  239. package/lib/typescript/date-field/context.d.ts +33 -0
  240. package/lib/typescript/date-field/context.d.ts.map +1 -0
  241. package/lib/typescript/date-field/index.d.ts +9 -0
  242. package/lib/typescript/date-field/index.d.ts.map +1 -0
  243. package/lib/typescript/date-field/segmentIndex.d.ts +7 -0
  244. package/lib/typescript/date-field/segmentIndex.d.ts.map +1 -0
  245. package/lib/typescript/date-field/segmentKeyboard.d.ts +23 -0
  246. package/lib/typescript/date-field/segmentKeyboard.d.ts.map +1 -0
  247. package/lib/typescript/date-field/types.d.ts +38 -0
  248. package/lib/typescript/date-field/types.d.ts.map +1 -0
  249. package/lib/typescript/date-field/useDateFieldSegmentState.d.ts +26 -0
  250. package/lib/typescript/date-field/useDateFieldSegmentState.d.ts.map +1 -0
  251. package/lib/typescript/date-field/useRangeDateFieldBridge.d.ts +4 -0
  252. package/lib/typescript/date-field/useRangeDateFieldBridge.d.ts.map +1 -0
  253. package/lib/typescript/date-picker/DatePickerRoot.d.ts +28 -0
  254. package/lib/typescript/date-picker/DatePickerRoot.d.ts.map +1 -0
  255. package/lib/typescript/date-picker/context.d.ts +25 -0
  256. package/lib/typescript/date-picker/context.d.ts.map +1 -0
  257. package/lib/typescript/date-picker/index.d.ts +5 -0
  258. package/lib/typescript/date-picker/index.d.ts.map +1 -0
  259. package/lib/typescript/date-range-picker/DateRangePickerRoot.d.ts +43 -0
  260. package/lib/typescript/date-range-picker/DateRangePickerRoot.d.ts.map +1 -0
  261. package/lib/typescript/date-range-picker/context.d.ts +42 -0
  262. package/lib/typescript/date-range-picker/context.d.ts.map +1 -0
  263. package/lib/typescript/date-range-picker/index.d.ts +4 -0
  264. package/lib/typescript/date-range-picker/index.d.ts.map +1 -0
  265. package/lib/typescript/date-time-field/DateTimeFieldHiddenInput.d.ts +4 -0
  266. package/lib/typescript/date-time-field/DateTimeFieldHiddenInput.d.ts.map +1 -0
  267. package/lib/typescript/date-time-field/DateTimeFieldInput.d.ts +10 -0
  268. package/lib/typescript/date-time-field/DateTimeFieldInput.d.ts.map +1 -0
  269. package/lib/typescript/date-time-field/DateTimeFieldRoot.d.ts +24 -0
  270. package/lib/typescript/date-time-field/DateTimeFieldRoot.d.ts.map +1 -0
  271. package/lib/typescript/date-time-field/DateTimeFieldSegment.d.ts +10 -0
  272. package/lib/typescript/date-time-field/DateTimeFieldSegment.d.ts.map +1 -0
  273. package/lib/typescript/date-time-field/context.d.ts +27 -0
  274. package/lib/typescript/date-time-field/context.d.ts.map +1 -0
  275. package/lib/typescript/date-time-field/index.d.ts +8 -0
  276. package/lib/typescript/date-time-field/index.d.ts.map +1 -0
  277. package/lib/typescript/date-time-field/useDateTimeFieldSegmentState.d.ts +26 -0
  278. package/lib/typescript/date-time-field/useDateTimeFieldSegmentState.d.ts.map +1 -0
  279. package/lib/typescript/date-time-list/DateTimeListRoot.d.ts +42 -0
  280. package/lib/typescript/date-time-list/DateTimeListRoot.d.ts.map +1 -0
  281. package/lib/typescript/date-time-list/context.d.ts +29 -0
  282. package/lib/typescript/date-time-list/context.d.ts.map +1 -0
  283. package/lib/typescript/date-time-list/index.d.ts +4 -0
  284. package/lib/typescript/date-time-list/index.d.ts.map +1 -0
  285. package/lib/typescript/date-time-picker/DateTimePickerRoot.d.ts +36 -0
  286. package/lib/typescript/date-time-picker/DateTimePickerRoot.d.ts.map +1 -0
  287. package/lib/typescript/date-time-picker/context.d.ts +25 -0
  288. package/lib/typescript/date-time-picker/context.d.ts.map +1 -0
  289. package/lib/typescript/date-time-picker/index.d.ts +4 -0
  290. package/lib/typescript/date-time-picker/index.d.ts.map +1 -0
  291. package/lib/typescript/dialog/types.d.ts +2 -1
  292. package/lib/typescript/dialog/types.d.ts.map +1 -1
  293. package/lib/typescript/index.d.ts +11 -2
  294. package/lib/typescript/index.d.ts.map +1 -1
  295. package/lib/typescript/month-calendar/MonthCalendarCell.d.ts +9 -0
  296. package/lib/typescript/month-calendar/MonthCalendarCell.d.ts.map +1 -0
  297. package/lib/typescript/month-calendar/MonthCalendarRoot.d.ts +30 -0
  298. package/lib/typescript/month-calendar/MonthCalendarRoot.d.ts.map +1 -0
  299. package/lib/typescript/month-calendar/MonthCalendarYearCell.d.ts +9 -0
  300. package/lib/typescript/month-calendar/MonthCalendarYearCell.d.ts.map +1 -0
  301. package/lib/typescript/month-calendar/context.d.ts +20 -0
  302. package/lib/typescript/month-calendar/context.d.ts.map +1 -0
  303. package/lib/typescript/month-calendar/index.d.ts +7 -0
  304. package/lib/typescript/month-calendar/index.d.ts.map +1 -0
  305. package/lib/typescript/month-picker/MonthPickerRoot.d.ts +29 -0
  306. package/lib/typescript/month-picker/MonthPickerRoot.d.ts.map +1 -0
  307. package/lib/typescript/month-picker/context.d.ts +23 -0
  308. package/lib/typescript/month-picker/context.d.ts.map +1 -0
  309. package/lib/typescript/month-picker/index.d.ts +4 -0
  310. package/lib/typescript/month-picker/index.d.ts.map +1 -0
  311. package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
  312. package/lib/typescript/overlay/useDismissOverlay.web.d.ts.map +1 -1
  313. package/lib/typescript/overlay/useOverlayPosition.d.ts.map +1 -1
  314. package/lib/typescript/portal/portal.d.ts.map +1 -1
  315. package/lib/typescript/range-calendar/RangeCalendarRoot.d.ts +34 -0
  316. package/lib/typescript/range-calendar/RangeCalendarRoot.d.ts.map +1 -0
  317. package/lib/typescript/range-calendar/context.d.ts +26 -0
  318. package/lib/typescript/range-calendar/context.d.ts.map +1 -0
  319. package/lib/typescript/range-calendar/index.d.ts +5 -0
  320. package/lib/typescript/range-calendar/index.d.ts.map +1 -0
  321. package/lib/typescript/select/types.d.ts +2 -1
  322. package/lib/typescript/select/types.d.ts.map +1 -1
  323. package/lib/typescript/utils/accessibleLabel.d.ts +13 -0
  324. package/lib/typescript/utils/accessibleLabel.d.ts.map +1 -0
  325. package/lib/typescript/utils/createPortal.web.d.ts +17 -0
  326. package/lib/typescript/utils/createPortal.web.d.ts.map +1 -0
  327. package/package.json +3 -2
  328. package/src/calendar/CalendarGrid.tsx +29 -0
  329. package/src/calendar/CalendarRoot.tsx +138 -0
  330. package/src/calendar/context.tsx +28 -0
  331. package/src/calendar/index.ts +4 -0
  332. package/src/calendar/types.ts +30 -0
  333. package/src/date-field/DateFieldHiddenInput.tsx +152 -0
  334. package/src/date-field/DateFieldInput.tsx +138 -0
  335. package/src/date-field/DateFieldRoot.tsx +117 -0
  336. package/src/date-field/DateFieldSegment.tsx +97 -0
  337. package/src/date-field/context.tsx +48 -0
  338. package/src/date-field/index.ts +8 -0
  339. package/src/date-field/segmentIndex.tsx +17 -0
  340. package/src/date-field/segmentKeyboard.ts +207 -0
  341. package/src/date-field/types.ts +40 -0
  342. package/src/date-field/useDateFieldSegmentState.ts +455 -0
  343. package/src/date-field/useRangeDateFieldBridge.ts +78 -0
  344. package/src/date-picker/DatePickerRoot.tsx +186 -0
  345. package/src/date-picker/context.tsx +34 -0
  346. package/src/date-picker/index.ts +4 -0
  347. package/src/date-range-picker/DateRangePickerRoot.tsx +236 -0
  348. package/src/date-range-picker/context.tsx +48 -0
  349. package/src/date-range-picker/index.ts +8 -0
  350. package/src/date-time-field/DateTimeFieldHiddenInput.tsx +156 -0
  351. package/src/date-time-field/DateTimeFieldInput.tsx +119 -0
  352. package/src/date-time-field/DateTimeFieldRoot.tsx +209 -0
  353. package/src/date-time-field/DateTimeFieldSegment.tsx +95 -0
  354. package/src/date-time-field/context.tsx +41 -0
  355. package/src/date-time-field/index.ts +7 -0
  356. package/src/date-time-field/useDateTimeFieldSegmentState.ts +672 -0
  357. package/src/date-time-list/DateTimeListRoot.tsx +530 -0
  358. package/src/date-time-list/context.tsx +45 -0
  359. package/src/date-time-list/index.ts +16 -0
  360. package/src/date-time-picker/DateTimePickerRoot.tsx +210 -0
  361. package/src/date-time-picker/context.tsx +33 -0
  362. package/src/date-time-picker/index.ts +7 -0
  363. package/src/dialog/DialogRoot.tsx +1 -1
  364. package/src/dialog/types.ts +2 -1
  365. package/src/index.ts +21 -2
  366. package/src/month-calendar/MonthCalendarCell.tsx +53 -0
  367. package/src/month-calendar/MonthCalendarRoot.tsx +153 -0
  368. package/src/month-calendar/MonthCalendarYearCell.tsx +54 -0
  369. package/src/month-calendar/context.tsx +30 -0
  370. package/src/month-calendar/index.ts +6 -0
  371. package/src/month-picker/MonthPickerRoot.tsx +183 -0
  372. package/src/month-picker/context.tsx +31 -0
  373. package/src/month-picker/index.ts +3 -0
  374. package/src/overlay/useAnchorPosition.ts +25 -11
  375. package/src/overlay/useDismissOverlay.web.ts +10 -2
  376. package/src/overlay/useOverlayPosition.ts +5 -2
  377. package/src/portal/portal.tsx +79 -2
  378. package/src/range-calendar/RangeCalendarRoot.tsx +213 -0
  379. package/src/range-calendar/context.tsx +33 -0
  380. package/src/range-calendar/index.ts +4 -0
  381. package/src/select/SelectRoot.tsx +1 -1
  382. package/src/select/types.ts +2 -1
  383. package/src/utils/accessibleLabel.ts +22 -0
  384. package/src/utils/createPortal.web.ts +18 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback } from 'react';
4
+ import { Platform, Pressable, Text } from 'react-native';
5
+ import { getDateSegmentAccessibilityLabel } from '@cdx-ui/formatters';
6
+ import { useDateFieldSegmentIndex } from '../date-field/segmentIndex';
7
+ import { Slot } from '../slot';
8
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
9
+ import { useDateTimeFieldContext } from './context';
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ export const DateTimeFieldSegment = /*#__PURE__*/forwardRef(({
12
+ asChild,
13
+ segment,
14
+ segmentIndex: segmentIndexProp,
15
+ style,
16
+ ...props
17
+ }, ref) => {
18
+ const contextSegmentIndex = useDateFieldSegmentIndex();
19
+ const segmentIndex = segmentIndexProp ?? contextSegmentIndex;
20
+ const {
21
+ disabled,
22
+ readOnly,
23
+ focusedSegmentIndex,
24
+ focusSegment,
25
+ getSegmentDisplayText,
26
+ labels
27
+ } = useDateTimeFieldContext();
28
+ const isFocused = focusedSegmentIndex === segmentIndex;
29
+ const displayText = getSegmentDisplayText(segmentIndex);
30
+ const handlePress = useCallback(() => {
31
+ focusSegment(segmentIndex);
32
+ }, [focusSegment, segmentIndex]);
33
+ const preventWebFocusSteal = useCallback(event => {
34
+ if (Platform.OS !== 'web') {
35
+ return;
36
+ }
37
+ const maybeDom = event;
38
+ maybeDom.preventDefault?.();
39
+ }, []);
40
+ const dataProps = mergeDataAttributes(props, dataAttributes({
41
+ slot: 'date-time-field-segment',
42
+ focus: isFocused,
43
+ placeholder: segment.text === displayText && !segment.value
44
+ }));
45
+ if (segment.isEditable && !asChild) {
46
+ return /*#__PURE__*/_jsx(Pressable, {
47
+ accessibilityRole: "spinbutton",
48
+ accessibilityLabel: getDateSegmentAccessibilityLabel(segment.type, labels),
49
+ accessibilityState: {
50
+ disabled,
51
+ selected: isFocused
52
+ },
53
+ disabled: disabled || readOnly,
54
+ onPress: handlePress,
55
+ onPressIn: preventWebFocusSteal,
56
+ style: [{
57
+ zIndex: 1
58
+ }, style],
59
+ ...props,
60
+ ...dataProps,
61
+ ...(Platform.OS === 'web' ? {
62
+ onMouseDown: e => {
63
+ e.preventDefault();
64
+ }
65
+ } : null),
66
+ children: /*#__PURE__*/_jsx(Text, {
67
+ children: displayText
68
+ })
69
+ });
70
+ }
71
+ const Comp = asChild ? Slot : Text;
72
+ return /*#__PURE__*/_jsx(Comp, {
73
+ ref: ref,
74
+ style: style,
75
+ ...props,
76
+ ...dataProps,
77
+ accessibilityRole: "text",
78
+ importantForAccessibility: "no",
79
+ children: displayText
80
+ });
81
+ });
82
+ DateTimeFieldSegment.displayName = 'DateTimeFieldSegment';
83
+ //# sourceMappingURL=DateTimeFieldSegment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","Platform","Pressable","Text","getDateSegmentAccessibilityLabel","useDateFieldSegmentIndex","Slot","dataAttributes","mergeDataAttributes","useDateTimeFieldContext","jsx","_jsx","DateTimeFieldSegment","asChild","segment","segmentIndex","segmentIndexProp","style","props","ref","contextSegmentIndex","disabled","readOnly","focusedSegmentIndex","focusSegment","getSegmentDisplayText","labels","isFocused","displayText","handlePress","preventWebFocusSteal","event","OS","maybeDom","preventDefault","dataProps","slot","focus","placeholder","text","value","isEditable","accessibilityRole","accessibilityLabel","type","accessibilityState","selected","onPress","onPressIn","zIndex","onMouseDown","e","children","Comp","importantForAccessibility","displayName"],"sourceRoot":"../../../src","sources":["date-time-field/DateTimeFieldSegment.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+ export const DateTimeFieldContext = /*#__PURE__*/createContext(null);
5
+ export function useDateTimeFieldContext() {
6
+ const ctx = useContext(DateTimeFieldContext);
7
+ if (!ctx) {
8
+ throw new Error('DateTimeField compound components must be used within DateTimeFieldRoot');
9
+ }
10
+ return ctx;
11
+ }
12
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","DateTimeFieldContext","useDateTimeFieldContext","ctx","Error"],"sourceRoot":"../../../src","sources":["date-time-field/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAgCjD,OAAO,MAAMC,oBAAoB,gBAAGF,aAAa,CAAmC,IAAI,CAAC;AAEzF,OAAO,SAASG,uBAAuBA,CAAA,EAA8B;EACnE,MAAMC,GAAG,GAAGH,UAAU,CAACC,oBAAoB,CAAC;EAC5C,IAAI,CAACE,GAAG,EAAE;IACR,MAAM,IAAIC,KAAK,CAAC,yEAAyE,CAAC;EAC5F;EACA,OAAOD,GAAG;AACZ","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ export { DateTimeFieldRoot, applyDateTimePartChange } from './DateTimeFieldRoot';
4
+ export { DateTimeFieldInput } from './DateTimeFieldInput';
5
+ export { DateTimeFieldSegment } from './DateTimeFieldSegment';
6
+ export { useDateTimeFieldContext } from './context';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DateTimeFieldRoot","applyDateTimePartChange","DateTimeFieldInput","DateTimeFieldSegment","useDateTimeFieldContext"],"sourceRoot":"../../../src","sources":["date-time-field/index.ts"],"mappings":";;AAAA,SAASA,iBAAiB,EAAEC,uBAAuB,QAAQ,qBAAqB;AAEhF,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD,SAASC,oBAAoB,QAAQ,wBAAwB;AAE7D,SAASC,uBAAuB,QAAQ,WAAW","ignoreList":[]}
@@ -0,0 +1,561 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef, useState } from 'react';
4
+ import { formatDateSegment, formatDateTimeId, formatDateTimeListPeriod, getDateTimeSegmentVisibility, getEmptyDateSegmentText, parseDateTimeId } from '@cdx-ui/formatters';
5
+ import { applySegmentDigit, commitDayPeriodDraft, commitSegmentDraft, findAdjacentEditableIndex, getSegmentMaxLength, isSegmentDraftComplete, toHour12, toHour24 } from '../date-field/segmentKeyboard';
6
+
7
+ /** In-progress parts. Wire `value` is only written when required parts are complete. */
8
+
9
+ function partsFromValue(value, hour12) {
10
+ if (!value) {
11
+ return {};
12
+ }
13
+ const parsed = parseDateTimeId(value);
14
+ if (!parsed) {
15
+ return {};
16
+ }
17
+ return {
18
+ year: parsed.year,
19
+ month: parsed.month,
20
+ day: parsed.day,
21
+ hour: parsed.hour,
22
+ minute: parsed.minute,
23
+ second: parsed.second,
24
+ ...(hour12 ? {
25
+ dayPeriod: parsed.hour >= 12 ? 1 : 0
26
+ } : {})
27
+ };
28
+ }
29
+ function requiredPartKeys(granularity, hour12) {
30
+ const keys = ['year', 'month', 'day'];
31
+ if (granularity === 'day') {
32
+ return keys;
33
+ }
34
+ const {
35
+ showMinute,
36
+ showSecond
37
+ } = getDateTimeSegmentVisibility(granularity);
38
+ keys.push('hour');
39
+ if (showMinute) {
40
+ keys.push('minute');
41
+ }
42
+ if (showSecond) {
43
+ keys.push('second');
44
+ }
45
+ if (hour12) {
46
+ keys.push('dayPeriod');
47
+ }
48
+ return keys;
49
+ }
50
+ function isComplete(parts, granularity, hour12) {
51
+ return requiredPartKeys(granularity, hour12).every(key => parts[key] != null);
52
+ }
53
+ function partialPartsToWire(parts, granularity) {
54
+ const {
55
+ year,
56
+ month,
57
+ day,
58
+ hour,
59
+ minute,
60
+ second
61
+ } = parts;
62
+ if (year == null || month == null || day == null) {
63
+ return undefined;
64
+ }
65
+ if (granularity === 'day') {
66
+ return formatDateTimeId({
67
+ year,
68
+ month,
69
+ day,
70
+ hour: 0,
71
+ minute: 0
72
+ });
73
+ }
74
+ if (hour == null) {
75
+ return undefined;
76
+ }
77
+ if (granularity === 'hour') {
78
+ return formatDateTimeId({
79
+ year,
80
+ month,
81
+ day,
82
+ hour,
83
+ minute: 0
84
+ });
85
+ }
86
+ if (minute == null) {
87
+ return undefined;
88
+ }
89
+ if (granularity === 'second') {
90
+ if (second == null) {
91
+ return undefined;
92
+ }
93
+ return formatDateTimeId({
94
+ year,
95
+ month,
96
+ day,
97
+ hour,
98
+ minute,
99
+ second
100
+ });
101
+ }
102
+ return formatDateTimeId({
103
+ year,
104
+ month,
105
+ day,
106
+ hour,
107
+ minute
108
+ });
109
+ }
110
+ function formatHourDisplay(hour24, hour12) {
111
+ if (hour12) {
112
+ return String(toHour12(hour24));
113
+ }
114
+ return formatDateSegment('hour', hour24);
115
+ }
116
+ function formatDayPeriodDisplay(period, locale) {
117
+ return formatDateTimeListPeriod(period === 1 ? 13 : 9, {
118
+ locale
119
+ });
120
+ }
121
+ export function useDateTimeFieldSegmentState({
122
+ granularity,
123
+ hour12,
124
+ locale,
125
+ segments,
126
+ value,
127
+ setValue,
128
+ disabled,
129
+ readOnly
130
+ }) {
131
+ const keyboardOptions = {
132
+ hour12
133
+ };
134
+ const [focusedSegmentIndex, setFocusedSegmentIndex] = useState(null);
135
+ const [segmentDraft, setSegmentDraft] = useState('');
136
+ const [isDraftDirty, setIsDraftDirty] = useState(false);
137
+ const [partialParts, setPartialParts] = useState(() => partsFromValue(value, hour12));
138
+ const focusedSegmentIndexRef = useRef(focusedSegmentIndex);
139
+ const segmentDraftRef = useRef(segmentDraft);
140
+ const isDraftDirtyRef = useRef(isDraftDirty);
141
+ const segmentsRef = useRef(segments);
142
+ const valueRef = useRef(value);
143
+ const partialPartsRef = useRef(partialParts);
144
+ focusedSegmentIndexRef.current = focusedSegmentIndex;
145
+ segmentDraftRef.current = segmentDraft;
146
+ isDraftDirtyRef.current = isDraftDirty;
147
+ segmentsRef.current = segments;
148
+ valueRef.current = value;
149
+ partialPartsRef.current = partialParts;
150
+ useEffect(() => {
151
+ if (!value) {
152
+ if (focusedSegmentIndexRef.current == null && !isDraftDirtyRef.current) {
153
+ partialPartsRef.current = {};
154
+ setPartialParts({});
155
+ }
156
+ return;
157
+ }
158
+ const next = partsFromValue(value, hour12);
159
+ partialPartsRef.current = next;
160
+ setPartialParts(next);
161
+ }, [value, hour12]);
162
+ const setDraftState = (draft, dirty, index = focusedSegmentIndexRef.current) => {
163
+ if (index != null) {
164
+ setFocusedSegmentIndex(index);
165
+ focusedSegmentIndexRef.current = index;
166
+ }
167
+ setSegmentDraft(draft);
168
+ setIsDraftDirty(dirty);
169
+ segmentDraftRef.current = draft;
170
+ isDraftDirtyRef.current = dirty;
171
+ };
172
+ const writePartial = useCallback(next => {
173
+ partialPartsRef.current = next;
174
+ setPartialParts(next);
175
+
176
+ // Only publish complete values — mid-entry keeps the last wire value for controlled parents
177
+ // whose `onValueChange` does not accept `undefined`.
178
+ if (isComplete(next, granularity, hour12)) {
179
+ const wire = partialPartsToWire(next, granularity);
180
+ if (wire !== undefined) {
181
+ setValue(wire);
182
+ valueRef.current = wire;
183
+ }
184
+ }
185
+ }, [granularity, hour12, setValue]);
186
+ const clearAll = useCallback(() => {
187
+ partialPartsRef.current = {};
188
+ setPartialParts({});
189
+ }, []);
190
+ const commitNumericPart = useCallback((segmentType, segmentValue) => {
191
+ if (disabled || readOnly) {
192
+ return;
193
+ }
194
+ if (segmentType === 'hour') {
195
+ if (hour12) {
196
+ const period = partialPartsRef.current.dayPeriod ?? 0;
197
+ writePartial({
198
+ ...partialPartsRef.current,
199
+ hour: toHour24(segmentValue, period),
200
+ dayPeriod: period
201
+ });
202
+ return;
203
+ }
204
+ writePartial({
205
+ ...partialPartsRef.current,
206
+ hour: segmentValue
207
+ });
208
+ return;
209
+ }
210
+ if (segmentType === 'year' || segmentType === 'month' || segmentType === 'day' || segmentType === 'minute' || segmentType === 'second') {
211
+ writePartial({
212
+ ...partialPartsRef.current,
213
+ [segmentType]: segmentValue
214
+ });
215
+ }
216
+ }, [disabled, hour12, readOnly, writePartial]);
217
+ const commitDayPeriod = useCallback(period => {
218
+ if (disabled || readOnly) {
219
+ return;
220
+ }
221
+ const current = partialPartsRef.current;
222
+ const hour12Value = current.hour != null ? toHour12(current.hour) : undefined;
223
+ writePartial({
224
+ ...current,
225
+ dayPeriod: period,
226
+ ...(hour12Value != null ? {
227
+ hour: toHour24(hour12Value, period)
228
+ } : {})
229
+ });
230
+ }, [disabled, readOnly, writePartial]);
231
+ const clearSegmentValue = useCallback(segmentType => {
232
+ if (segmentType === 'dayPeriod') {
233
+ const {
234
+ dayPeriod: _cleared,
235
+ ...next
236
+ } = partialPartsRef.current;
237
+ writePartial(next);
238
+ return;
239
+ }
240
+ if (segmentType === 'year' || segmentType === 'month' || segmentType === 'day' || segmentType === 'hour' || segmentType === 'minute' || segmentType === 'second') {
241
+ const key = segmentType;
242
+ const {
243
+ [key]: _cleared,
244
+ ...next
245
+ } = partialPartsRef.current;
246
+ writePartial(next);
247
+ }
248
+ }, [writePartial]);
249
+ const commitFocusedSegment = useCallback(draft => {
250
+ const index = focusedSegmentIndexRef.current;
251
+ if (index == null) {
252
+ return;
253
+ }
254
+ const segment = segmentsRef.current[index];
255
+ if (!segment?.isEditable) {
256
+ return;
257
+ }
258
+ if (draft === '') {
259
+ clearSegmentValue(segment.type);
260
+ return;
261
+ }
262
+ if (segment.type === 'dayPeriod') {
263
+ const parsed = commitDayPeriodDraft(draft);
264
+ if (parsed != null) {
265
+ commitDayPeriod(parsed);
266
+ }
267
+ return;
268
+ }
269
+ const parsed = commitSegmentDraft(segment, draft);
270
+ if (parsed != null) {
271
+ commitNumericPart(segment.type, parsed);
272
+ }
273
+ }, [clearSegmentValue, commitDayPeriod, commitNumericPart]);
274
+ const initialDraftForSegment = segment => {
275
+ if (!segment) {
276
+ return '';
277
+ }
278
+ if (segment.type === 'dayPeriod') {
279
+ if (partialPartsRef.current.dayPeriod != null) {
280
+ return formatDayPeriodDisplay(partialPartsRef.current.dayPeriod, locale);
281
+ }
282
+ if (segment.value == null) {
283
+ return '';
284
+ }
285
+ return segment.text;
286
+ }
287
+ if (segment.type === 'hour') {
288
+ if (partialPartsRef.current.hour != null) {
289
+ return formatHourDisplay(partialPartsRef.current.hour, hour12);
290
+ }
291
+ if (segment.value == null) {
292
+ return '';
293
+ }
294
+ return segment.text;
295
+ }
296
+ const partial = partialPartsRef.current[segment.type];
297
+ if (partial != null) {
298
+ return formatDateSegment(segment.type, partial);
299
+ }
300
+ if (segment.value == null) {
301
+ return '';
302
+ }
303
+ return segment.text;
304
+ };
305
+ const focusSegment = useCallback(index => {
306
+ if (disabled || readOnly) {
307
+ return;
308
+ }
309
+ const segment = segmentsRef.current[index];
310
+ if (!segment?.isEditable) {
311
+ return;
312
+ }
313
+ setDraftState(initialDraftForSegment(segment), false, index);
314
+ }, [disabled, hour12, locale, readOnly]);
315
+ const blurSegment = useCallback(index => {
316
+ if (focusedSegmentIndexRef.current !== index) {
317
+ return;
318
+ }
319
+ const segment = segmentsRef.current[index];
320
+ if (segment?.isEditable && isDraftDirtyRef.current) {
321
+ commitFocusedSegment(segmentDraftRef.current);
322
+ }
323
+ setFocusedSegmentIndex(null);
324
+ setSegmentDraft('');
325
+ setIsDraftDirty(false);
326
+ focusedSegmentIndexRef.current = null;
327
+ segmentDraftRef.current = '';
328
+ isDraftDirtyRef.current = false;
329
+ }, [commitFocusedSegment]);
330
+ const focusNextEditableSegment = useCallback(() => {
331
+ const current = focusedSegmentIndexRef.current;
332
+ if (current == null) {
333
+ return;
334
+ }
335
+ const next = findAdjacentEditableIndex(segmentsRef.current, current, 1);
336
+ if (next == null) {
337
+ return;
338
+ }
339
+ setDraftState(initialDraftForSegment(segmentsRef.current[next]), false, next);
340
+ }, [hour12, locale]);
341
+ const focusPrevEditableSegment = useCallback(() => {
342
+ const current = focusedSegmentIndexRef.current;
343
+ if (current == null) {
344
+ return;
345
+ }
346
+ const prev = findAdjacentEditableIndex(segmentsRef.current, current, -1);
347
+ if (prev == null) {
348
+ return;
349
+ }
350
+ setDraftState(initialDraftForSegment(segmentsRef.current[prev]), false, prev);
351
+ }, [hour12, locale]);
352
+ const advanceAfterCommit = (fromIndex, spillDigit) => {
353
+ const next = findAdjacentEditableIndex(segmentsRef.current, fromIndex, 1);
354
+ if (next == null) {
355
+ return {
356
+ index: fromIndex,
357
+ draft: segmentDraftRef.current,
358
+ dirty: false,
359
+ spill: undefined
360
+ };
361
+ }
362
+ return {
363
+ index: next,
364
+ draft: initialDraftForSegment(segmentsRef.current[next]),
365
+ dirty: false,
366
+ spill: spillDigit
367
+ };
368
+ };
369
+ const handleSegmentDigit = useCallback(input => {
370
+ if (focusedSegmentIndexRef.current == null || disabled || readOnly) {
371
+ return;
372
+ }
373
+ let index = focusedSegmentIndexRef.current;
374
+ let draft = segmentDraftRef.current;
375
+ let dirty = isDraftDirtyRef.current;
376
+ const currentSegments = segmentsRef.current;
377
+ const queue = input.split('').filter(char => /^\d$/.test(char));
378
+ while (queue.length > 0) {
379
+ const digit = queue.shift() ?? '';
380
+ const segment = currentSegments[index];
381
+ if (!segment?.isEditable) {
382
+ break;
383
+ }
384
+ if (segment.type === 'dayPeriod') {
385
+ const parsed = commitDayPeriodDraft(digit);
386
+ if (parsed != null) {
387
+ commitDayPeriod(parsed);
388
+ const advanced = advanceAfterCommit(index);
389
+ index = advanced.index;
390
+ draft = advanced.draft;
391
+ dirty = advanced.dirty;
392
+ }
393
+ continue;
394
+ }
395
+ const {
396
+ draft: nextDraft,
397
+ isDraftDirty: nextDirty,
398
+ shouldCommit,
399
+ spillDigit
400
+ } = applySegmentDigit(draft, segment.text, dirty, digit, segment.type, keyboardOptions);
401
+ draft = nextDraft;
402
+ dirty = nextDirty;
403
+ if (shouldCommit) {
404
+ const parsed = commitSegmentDraft(segment, draft);
405
+ if (parsed != null) {
406
+ commitNumericPart(segment.type, parsed);
407
+ }
408
+ const advanced = advanceAfterCommit(index, spillDigit);
409
+ index = advanced.index;
410
+ draft = advanced.draft;
411
+ dirty = advanced.dirty;
412
+ if (advanced.spill) {
413
+ queue.unshift(advanced.spill);
414
+ }
415
+ }
416
+ }
417
+ setDraftState(draft, dirty, index);
418
+ }, [commitDayPeriod, commitNumericPart, disabled, hour12, locale, readOnly]);
419
+ const handleDayPeriodKey = useCallback(key => {
420
+ if (focusedSegmentIndexRef.current == null || disabled || readOnly) {
421
+ return;
422
+ }
423
+ const index = focusedSegmentIndexRef.current;
424
+ const segment = segmentsRef.current[index];
425
+ if (segment?.type !== 'dayPeriod') {
426
+ return;
427
+ }
428
+ const parsed = commitDayPeriodDraft(key);
429
+ if (parsed == null) {
430
+ return;
431
+ }
432
+ commitDayPeriod(parsed);
433
+ const next = findAdjacentEditableIndex(segmentsRef.current, index, 1);
434
+ if (next == null) {
435
+ setDraftState(formatDayPeriodDisplay(parsed, locale), false, index);
436
+ return;
437
+ }
438
+ setDraftState(initialDraftForSegment(segmentsRef.current[next]), false, next);
439
+ }, [commitDayPeriod, disabled, hour12, locale, readOnly]);
440
+ const handleSegmentInputChange = useCallback(raw => {
441
+ if (focusedSegmentIndexRef.current == null || disabled || readOnly) {
442
+ return;
443
+ }
444
+ const index = focusedSegmentIndexRef.current;
445
+ const segment = segmentsRef.current[index];
446
+ if (!segment?.isEditable) {
447
+ return;
448
+ }
449
+ if (segment.type === 'dayPeriod') {
450
+ const letter = raw.replace(/[^aApP12]/g, '').slice(-1);
451
+ if (!letter) {
452
+ setDraftState('', true, index);
453
+ clearSegmentValue('dayPeriod');
454
+ return;
455
+ }
456
+ handleDayPeriodKey(letter);
457
+ return;
458
+ }
459
+ const maxLength = getSegmentMaxLength(segment.type);
460
+ const digits = raw.replace(/\D/g, '');
461
+ const prevDigits = segmentDraftRef.current.replace(/\D/g, '');
462
+ if (digits === prevDigits) {
463
+ return;
464
+ }
465
+ if (digits.length === 0) {
466
+ setDraftState('', true, index);
467
+ clearSegmentValue(segment.type);
468
+ return;
469
+ }
470
+ if (digits.length > prevDigits.length && digits.startsWith(prevDigits)) {
471
+ handleSegmentDigit(digits.slice(prevDigits.length));
472
+ return;
473
+ }
474
+ if (digits.length > maxLength) {
475
+ setDraftState('', true, index);
476
+ handleSegmentDigit(digits);
477
+ return;
478
+ }
479
+ setDraftState(digits, true, index);
480
+ if (isSegmentDraftComplete(segment.type, digits, keyboardOptions)) {
481
+ const parsed = commitSegmentDraft(segment, digits);
482
+ if (parsed != null) {
483
+ commitNumericPart(segment.type, parsed);
484
+ }
485
+ const next = findAdjacentEditableIndex(segmentsRef.current, index, 1);
486
+ if (next == null) {
487
+ setDraftState(digits, false, index);
488
+ return;
489
+ }
490
+ setDraftState(initialDraftForSegment(segmentsRef.current[next]), false, next);
491
+ }
492
+ }, [clearSegmentValue, commitNumericPart, disabled, handleDayPeriodKey, handleSegmentDigit, hour12, locale, readOnly]);
493
+ const handleSegmentBackspace = useCallback(() => {
494
+ if (focusedSegmentIndexRef.current == null || disabled || readOnly) {
495
+ return;
496
+ }
497
+ const index = focusedSegmentIndexRef.current;
498
+ const segment = segmentsRef.current[index];
499
+ const draft = segment?.type === 'dayPeriod' ? segmentDraftRef.current : segmentDraftRef.current.replace(/\D/g, '');
500
+ if (draft.length > 0) {
501
+ const nextDraft = draft.slice(0, -1);
502
+ setDraftState(nextDraft, true, index);
503
+ if (nextDraft.length === 0 && segment) {
504
+ clearSegmentValue(segment.type);
505
+ }
506
+ return;
507
+ }
508
+ const prev = findAdjacentEditableIndex(segmentsRef.current, index, -1);
509
+ if (prev == null) {
510
+ clearAll();
511
+ return;
512
+ }
513
+ setDraftState(initialDraftForSegment(segmentsRef.current[prev]), false, prev);
514
+ }, [clearAll, clearSegmentValue, disabled, hour12, locale, readOnly]);
515
+ const getSegmentDisplayText = useCallback(index => {
516
+ const segment = segments[index];
517
+ if (!segment) {
518
+ return '';
519
+ }
520
+ if (focusedSegmentIndex === index) {
521
+ if (segmentDraft === '') {
522
+ return getEmptyDateSegmentText(segment.type) || segment.text;
523
+ }
524
+ return segmentDraft;
525
+ }
526
+ if (segment.type === 'dayPeriod') {
527
+ if (partialParts.dayPeriod != null) {
528
+ return formatDayPeriodDisplay(partialParts.dayPeriod, locale);
529
+ }
530
+ return getEmptyDateSegmentText('dayPeriod') || segment.text;
531
+ }
532
+ if (segment.type === 'hour') {
533
+ if (partialParts.hour != null) {
534
+ return formatHourDisplay(partialParts.hour, hour12);
535
+ }
536
+ return getEmptyDateSegmentText('hour') || segment.text;
537
+ }
538
+ const partial = partialParts[segment.type];
539
+ if (partial != null) {
540
+ return formatDateSegment(segment.type, partial);
541
+ }
542
+ if (segment.value != null) {
543
+ return segment.text;
544
+ }
545
+ return getEmptyDateSegmentText(segment.type) || segment.text;
546
+ }, [focusedSegmentIndex, hour12, locale, partialParts, segmentDraft, segments]);
547
+ return {
548
+ focusedSegmentIndex,
549
+ segmentDraft,
550
+ focusSegment,
551
+ blurSegment,
552
+ focusNextEditableSegment,
553
+ focusPrevEditableSegment,
554
+ handleSegmentDigit,
555
+ handleSegmentInputChange,
556
+ handleSegmentBackspace,
557
+ handleDayPeriodKey,
558
+ getSegmentDisplayText
559
+ };
560
+ }
561
+ //# sourceMappingURL=useDateTimeFieldSegmentState.js.map