@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,140 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { resolveDateComponentLabels } from '@cdx-ui/formatters';
6
+ import { useControllableState, mergeRefs } from '@cdx-ui/utils';
7
+ import { Slot } from '../slot';
8
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
9
+ import { DateRangePickerContext } from './context';
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ export const DateRangePickerRoot = /*#__PURE__*/forwardRef((props, ref) => {
12
+ const {
13
+ asChild,
14
+ children,
15
+ value: valueProp,
16
+ defaultValue,
17
+ onValueChange,
18
+ focusedField: focusedProp,
19
+ defaultFocusedField = 'start',
20
+ onFocusedFieldChange,
21
+ isOpen: openProp,
22
+ defaultOpen = false,
23
+ onOpenChange,
24
+ isDisabled: disabled = false,
25
+ isReadOnly = false,
26
+ isInvalid = false,
27
+ isRequired = false,
28
+ locale = 'en-US',
29
+ labels: labelsProp,
30
+ ...rest
31
+ } = props;
32
+ const labels = useMemo(() => resolveDateComponentLabels(labelsProp), [labelsProp]);
33
+ const isRangeControlled = 'value' in props;
34
+ const [uncontrolledStart, setUncontrolledStart] = useState(defaultValue?.startId);
35
+ const [uncontrolledEnd, setUncontrolledEnd] = useState(defaultValue?.endId);
36
+ const startValue = isRangeControlled ? valueProp?.startId : uncontrolledStart;
37
+ const endValue = isRangeControlled ? valueProp?.endId : uncontrolledEnd;
38
+ const [open, setOpenState] = useControllableState({
39
+ prop: openProp,
40
+ defaultProp: defaultOpen,
41
+ onChange: onOpenChange
42
+ });
43
+ const [draftStart, setDraftStart] = useState(startValue);
44
+ const [draftEnd, setDraftEnd] = useState(endValue);
45
+ const [focusedField, setFocusedField] = useControllableState({
46
+ prop: focusedProp,
47
+ defaultProp: defaultFocusedField,
48
+ onChange: onFocusedFieldChange
49
+ });
50
+ const surfacesRef = useRef(new Set());
51
+ const anchorRef = useRef(null);
52
+ const triggerRef = useRef(null);
53
+ const commitRange = useCallback(range => {
54
+ if (!isRangeControlled) {
55
+ setUncontrolledStart(range?.startId);
56
+ setUncontrolledEnd(range?.endId);
57
+ }
58
+ setDraftStart(range?.startId);
59
+ setDraftEnd(range?.endId);
60
+ onValueChange?.(range);
61
+ }, [isRangeControlled, onValueChange]);
62
+ const setDraftRange = useCallback(range => {
63
+ if (range.startId === null) {
64
+ setDraftStart(undefined);
65
+ } else if (range.startId !== undefined) {
66
+ setDraftStart(range.startId);
67
+ }
68
+ if (range.endId === null) {
69
+ setDraftEnd(undefined);
70
+ } else if (range.endId !== undefined) {
71
+ setDraftEnd(range.endId);
72
+ }
73
+ }, []);
74
+
75
+ // Sync draft from committed values when they change externally (presets, typed fields).
76
+ useEffect(() => {
77
+ setDraftStart(startValue);
78
+ setDraftEnd(endValue);
79
+ }, [endValue, startValue]);
80
+ const setOpen = useCallback(next => {
81
+ if (disabled && next) {
82
+ return;
83
+ }
84
+ if (next) {
85
+ setDraftStart(startValue);
86
+ setDraftEnd(endValue);
87
+ }
88
+ setOpenState(next);
89
+ }, [disabled, endValue, setOpenState, startValue]);
90
+ const registerSurface = useCallback(type => {
91
+ if (surfacesRef.current.has(type)) {
92
+ return;
93
+ }
94
+ surfacesRef.current.add(type);
95
+ if (surfacesRef.current.size > 1) {
96
+ console.warn('[Forge UI] DateRangePicker: multiple presentation surfaces detected. Use only one of Popover, Dialog, or BottomSheet.');
97
+ }
98
+ }, []);
99
+ useEffect(() => {
100
+ if (!open) {
101
+ surfacesRef.current.clear();
102
+ }
103
+ }, [open]);
104
+ const contextValue = useMemo(() => ({
105
+ startValue,
106
+ endValue,
107
+ onRangeChange: commitRange,
108
+ draftStart,
109
+ draftEnd,
110
+ setDraftRange,
111
+ focusedField: focusedField ?? 'start',
112
+ setFocusedField,
113
+ open: open ?? false,
114
+ setOpen,
115
+ disabled,
116
+ readOnly: isReadOnly,
117
+ invalid: isInvalid,
118
+ required: isRequired,
119
+ locale,
120
+ labels,
121
+ registerSurface,
122
+ anchorRef,
123
+ triggerRef
124
+ }), [startValue, endValue, commitRange, draftStart, draftEnd, setDraftRange, focusedField, setFocusedField, open, setOpen, disabled, isReadOnly, isInvalid, isRequired, locale, labels, registerSurface]);
125
+ const Comp = asChild ? Slot : View;
126
+ return /*#__PURE__*/_jsx(DateRangePickerContext.Provider, {
127
+ value: contextValue,
128
+ children: /*#__PURE__*/_jsx(Comp, {
129
+ ref: mergeRefs(ref, anchorRef),
130
+ ...rest,
131
+ ...mergeDataAttributes(rest, dataAttributes({
132
+ disabled,
133
+ open
134
+ })),
135
+ children: children
136
+ })
137
+ });
138
+ });
139
+ DateRangePickerRoot.displayName = 'DateRangePickerRoot';
140
+ //# sourceMappingURL=DateRangePickerRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","useEffect","useMemo","useRef","useState","View","resolveDateComponentLabels","useControllableState","mergeRefs","Slot","dataAttributes","mergeDataAttributes","DateRangePickerContext","jsx","_jsx","DateRangePickerRoot","props","ref","asChild","children","value","valueProp","defaultValue","onValueChange","focusedField","focusedProp","defaultFocusedField","onFocusedFieldChange","isOpen","openProp","defaultOpen","onOpenChange","isDisabled","disabled","isReadOnly","isInvalid","isRequired","locale","labels","labelsProp","rest","isRangeControlled","uncontrolledStart","setUncontrolledStart","startId","uncontrolledEnd","setUncontrolledEnd","endId","startValue","endValue","open","setOpenState","prop","defaultProp","onChange","draftStart","setDraftStart","draftEnd","setDraftEnd","setFocusedField","surfacesRef","Set","anchorRef","triggerRef","commitRange","range","setDraftRange","undefined","setOpen","next","registerSurface","type","current","has","add","size","console","warn","clear","contextValue","onRangeChange","readOnly","invalid","required","Comp","Provider","displayName"],"sourceRoot":"../../../src","sources":["date-range-picker/DateRangePickerRoot.tsx"],"mappings":";;AAAA,SACEA,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QAGH,OAAO;AACd,SAASC,IAAI,QAAwB,cAAc;AAEnD,SAASC,0BAA0B,QAAQ,oBAAoB;AAC/D,SAASC,oBAAoB,EAAEC,SAAS,QAAQ,eAAe;AAC/D,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAG7E,SAASC,sBAAsB,QAA6B,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAuCxE,OAAO,MAAMC,mBAAmB,gBAAGhB,UAAU,CAC3C,CAACiB,KAAK,EAAEC,GAAG,KAAK;EACd,MAAM;IACJC,OAAO;IACPC,QAAQ;IACRC,KAAK,EAAEC,SAAS;IAChBC,YAAY;IACZC,aAAa;IACbC,YAAY,EAAEC,WAAW;IACzBC,mBAAmB,GAAG,OAAO;IAC7BC,oBAAoB;IACpBC,MAAM,EAAEC,QAAQ;IAChBC,WAAW,GAAG,KAAK;IACnBC,YAAY;IACZC,UAAU,EAAEC,QAAQ,GAAG,KAAK;IAC5BC,UAAU,GAAG,KAAK;IAClBC,SAAS,GAAG,KAAK;IACjBC,UAAU,GAAG,KAAK;IAClBC,MAAM,GAAG,OAAO;IAChBC,MAAM,EAAEC,UAAU;IAClB,GAAGC;EACL,CAAC,GAAGxB,KAAK;EAET,MAAMsB,MAAM,GAAGpC,OAAO,CAAC,MAAMI,0BAA0B,CAACiC,UAAU,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAElF,MAAME,iBAAiB,GAAG,OAAO,IAAIzB,KAAK;EAC1C,MAAM,CAAC0B,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGvC,QAAQ,CACxDkB,YAAY,EAAEsB,OAChB,CAAC;EACD,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG1C,QAAQ,CAAqBkB,YAAY,EAAEyB,KAAK,CAAC;EAC/F,MAAMC,UAAU,GAAGP,iBAAiB,GAAGpB,SAAS,EAAEuB,OAAO,GAAGF,iBAAiB;EAC7E,MAAMO,QAAQ,GAAGR,iBAAiB,GAAGpB,SAAS,EAAE0B,KAAK,GAAGF,eAAe;EAEvE,MAAM,CAACK,IAAI,EAAEC,YAAY,CAAC,GAAG5C,oBAAoB,CAAU;IACzD6C,IAAI,EAAEvB,QAAQ;IACdwB,WAAW,EAAEvB,WAAW;IACxBwB,QAAQ,EAAEvB;EACZ,CAAC,CAAC;EAEF,MAAM,CAACwB,UAAU,EAAEC,aAAa,CAAC,GAAGpD,QAAQ,CAAqB4C,UAAU,CAAC;EAC5E,MAAM,CAACS,QAAQ,EAAEC,WAAW,CAAC,GAAGtD,QAAQ,CAAqB6C,QAAQ,CAAC;EAEtE,MAAM,CAACzB,YAAY,EAAEmC,eAAe,CAAC,GAAGpD,oBAAoB,CAAqB;IAC/E6C,IAAI,EAAE3B,WAAW;IACjB4B,WAAW,EAAE3B,mBAAmB;IAChC4B,QAAQ,EAAE3B;EACZ,CAAC,CAAC;EAEF,MAAMiC,WAAW,GAAGzD,MAAM,CAAyB,IAAI0D,GAAG,CAAC,CAAC,CAAC;EAC7D,MAAMC,SAAS,GAAG3D,MAAM,CAA4B,IAAI,CAAC;EACzD,MAAM4D,UAAU,GAAG5D,MAAM,CAA4B,IAAI,CAAC;EAE1D,MAAM6D,WAAW,GAAGhE,WAAW,CAC5BiE,KAAiC,IAAK;IACrC,IAAI,CAACxB,iBAAiB,EAAE;MACtBE,oBAAoB,CAACsB,KAAK,EAAErB,OAAO,CAAC;MACpCE,kBAAkB,CAACmB,KAAK,EAAElB,KAAK,CAAC;IAClC;IACAS,aAAa,CAACS,KAAK,EAAErB,OAAO,CAAC;IAC7Bc,WAAW,CAACO,KAAK,EAAElB,KAAK,CAAC;IACzBxB,aAAa,GAAG0C,KAAK,CAAC;EACxB,CAAC,EACD,CAACxB,iBAAiB,EAAElB,aAAa,CACnC,CAAC;EAED,MAAM2C,aAAa,GAAGlE,WAAW,CAC9BiE,KAAyD,IAAK;IAC7D,IAAIA,KAAK,CAACrB,OAAO,KAAK,IAAI,EAAE;MAC1BY,aAAa,CAACW,SAAS,CAAC;IAC1B,CAAC,MAAM,IAAIF,KAAK,CAACrB,OAAO,KAAKuB,SAAS,EAAE;MACtCX,aAAa,CAACS,KAAK,CAACrB,OAAO,CAAC;IAC9B;IACA,IAAIqB,KAAK,CAAClB,KAAK,KAAK,IAAI,EAAE;MACxBW,WAAW,CAACS,SAAS,CAAC;IACxB,CAAC,MAAM,IAAIF,KAAK,CAAClB,KAAK,KAAKoB,SAAS,EAAE;MACpCT,WAAW,CAACO,KAAK,CAAClB,KAAK,CAAC;IAC1B;EACF,CAAC,EACD,EACF,CAAC;;EAED;EACA9C,SAAS,CAAC,MAAM;IACduD,aAAa,CAACR,UAAU,CAAC;IACzBU,WAAW,CAACT,QAAQ,CAAC;EACvB,CAAC,EAAE,CAACA,QAAQ,EAAED,UAAU,CAAC,CAAC;EAE1B,MAAMoB,OAAO,GAAGpE,WAAW,CACxBqE,IAAa,IAAK;IACjB,IAAIpC,QAAQ,IAAIoC,IAAI,EAAE;MACpB;IACF;IACA,IAAIA,IAAI,EAAE;MACRb,aAAa,CAACR,UAAU,CAAC;MACzBU,WAAW,CAACT,QAAQ,CAAC;IACvB;IACAE,YAAY,CAACkB,IAAI,CAAC;EACpB,CAAC,EACD,CAACpC,QAAQ,EAAEgB,QAAQ,EAAEE,YAAY,EAAEH,UAAU,CAC/C,CAAC;EAED,MAAMsB,eAAe,GAAGtE,WAAW,CAAEuE,IAAuB,IAAK;IAC/D,IAAIX,WAAW,CAACY,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC,EAAE;MACjC;IACF;IACAX,WAAW,CAACY,OAAO,CAACE,GAAG,CAACH,IAAI,CAAC;IAC7B,IAAIX,WAAW,CAACY,OAAO,CAACG,IAAI,GAAG,CAAC,EAAE;MAChCC,OAAO,CAACC,IAAI,CACV,uHACF,CAAC;IACH;EACF,CAAC,EAAE,EAAE,CAAC;EAEN5E,SAAS,CAAC,MAAM;IACd,IAAI,CAACiD,IAAI,EAAE;MACTU,WAAW,CAACY,OAAO,CAACM,KAAK,CAAC,CAAC;IAC7B;EACF,CAAC,EAAE,CAAC5B,IAAI,CAAC,CAAC;EAEV,MAAM6B,YAAY,GAAG7E,OAAO,CAC1B,OAAO;IACL8C,UAAU;IACVC,QAAQ;IACR+B,aAAa,EAAEhB,WAAW;IAC1BT,UAAU;IACVE,QAAQ;IACRS,aAAa;IACb1C,YAAY,EAAEA,YAAY,IAAI,OAAO;IACrCmC,eAAe;IACfT,IAAI,EAAEA,IAAI,IAAI,KAAK;IACnBkB,OAAO;IACPnC,QAAQ;IACRgD,QAAQ,EAAE/C,UAAU;IACpBgD,OAAO,EAAE/C,SAAS;IAClBgD,QAAQ,EAAE/C,UAAU;IACpBC,MAAM;IACNC,MAAM;IACNgC,eAAe;IACfR,SAAS;IACTC;EACF,CAAC,CAAC,EACF,CACEf,UAAU,EACVC,QAAQ,EACRe,WAAW,EACXT,UAAU,EACVE,QAAQ,EACRS,aAAa,EACb1C,YAAY,EACZmC,eAAe,EACfT,IAAI,EACJkB,OAAO,EACPnC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,MAAM,EACNC,MAAM,EACNgC,eAAe,CAEnB,CAAC;EAED,MAAMc,IAAI,GAAGlE,OAAO,GAAGT,IAAI,GAAGJ,IAAI;EAElC,oBACES,IAAA,CAACF,sBAAsB,CAACyE,QAAQ;IAACjE,KAAK,EAAE2D,YAAa;IAAA5D,QAAA,eACnDL,IAAA,CAACsE,IAAI;MACHnE,GAAG,EAAET,SAAS,CAACS,GAAG,EAAE6C,SAAS,CAAE;MAAA,GAC3BtB,IAAI;MAAA,GACJ7B,mBAAmB,CAAC6B,IAAI,EAAE9B,cAAc,CAAC;QAAEuB,QAAQ;QAAEiB;MAAK,CAAC,CAAC,CAAC;MAAA/B,QAAA,EAEhEA;IAAQ,CACL;EAAC,CACwB,CAAC;AAEtC,CACF,CAAC;AAEDJ,mBAAmB,CAACuE,WAAW,GAAG,qBAAqB","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+
5
+ /**
6
+ * A date range value. `endId` is optional: while the user is mid-selection (only
7
+ * the first endpoint chosen) the range carries `startId` alone. Build the ids
8
+ * with `dateId(...)` from `@cdx-ui/formatters`.
9
+ */
10
+
11
+ export const DateRangePickerContext = /*#__PURE__*/createContext(null);
12
+ export function useDateRangePickerContext() {
13
+ const ctx = useContext(DateRangePickerContext);
14
+ if (!ctx) {
15
+ throw new Error('DateRangePicker compound components must be used within DateRangePickerRoot');
16
+ }
17
+ return ctx;
18
+ }
19
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","DateRangePickerContext","useDateRangePickerContext","ctx","Error"],"sourceRoot":"../../../src","sources":["date-range-picker/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAwB,OAAO;;AAMjE;AACA;AACA;AACA;AACA;;AA6BA,OAAO,MAAMC,sBAAsB,gBAAGF,aAAa,CAAqC,IAAI,CAAC;AAE7F,OAAO,SAASG,yBAAyBA,CAAA,EAAgC;EACvE,MAAMC,GAAG,GAAGH,UAAU,CAACC,sBAAsB,CAAC;EAC9C,IAAI,CAACE,GAAG,EAAE;IACR,MAAM,IAAIC,KAAK,CAAC,6EAA6E,CAAC;EAChG;EACA,OAAOD,GAAG;AACZ","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { DateRangePickerRoot } from './DateRangePickerRoot';
4
+ export { DateRangePickerContext, useDateRangePickerContext } from './context';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DateRangePickerRoot","DateRangePickerContext","useDateRangePickerContext"],"sourceRoot":"../../../src","sources":["date-range-picker/index.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,uBAAuB;AAE3D,SACEC,sBAAsB,EACtBC,yBAAyB,QAGpB,WAAW","ignoreList":[]}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { Platform, TextInput } from 'react-native';
5
+ import { useDateTimeFieldContext } from './context';
6
+
7
+ /**
8
+ * Invisible input that owns keyboard focus while a segment is active.
9
+ * Mirrors `DateFieldHiddenInput`; switches to a default keyboard for day-period (A/P).
10
+ */
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ const HIDDEN_INPUT_STYLE = {
13
+ position: 'absolute',
14
+ opacity: 0.01,
15
+ width: '100%',
16
+ height: '100%',
17
+ left: 0,
18
+ top: 0,
19
+ zIndex: 0,
20
+ fontSize: 16
21
+ };
22
+ const NUMERIC_KEYBOARD = Platform.select({
23
+ ios: 'phone-pad',
24
+ default: 'number-pad'
25
+ });
26
+ export function DateTimeFieldHiddenInput({
27
+ accessibilityLabel
28
+ }) {
29
+ const {
30
+ focusedSegmentIndex,
31
+ segments,
32
+ disabled,
33
+ readOnly,
34
+ segmentDraft,
35
+ handleSegmentInputChange,
36
+ handleSegmentBackspace,
37
+ handleDayPeriodKey,
38
+ focusNextEditableSegment,
39
+ focusPrevEditableSegment,
40
+ blurSegment
41
+ } = useDateTimeFieldContext();
42
+ const inputRef = useRef(null);
43
+ const suppressBlurRef = useRef(false);
44
+ const focusedIndexRef = useRef(focusedSegmentIndex);
45
+ focusedIndexRef.current = focusedSegmentIndex;
46
+ const focusedSegment = focusedSegmentIndex != null ? segments[focusedSegmentIndex] : undefined;
47
+ const isDayPeriod = focusedSegment?.type === 'dayPeriod';
48
+ const isActive = focusedSegmentIndex != null && !disabled && !readOnly;
49
+ const draftValue = isDayPeriod ? segmentDraft.replace(/[^aApP12]/g, '') : segmentDraft.replace(/\D/g, '');
50
+ useEffect(() => {
51
+ if (!isActive) {
52
+ return;
53
+ }
54
+ suppressBlurRef.current = true;
55
+ const focusInput = () => {
56
+ inputRef.current?.focus();
57
+ };
58
+ const frame = requestAnimationFrame(focusInput);
59
+ const timer = setTimeout(() => {
60
+ focusInput();
61
+ suppressBlurRef.current = false;
62
+ }, 50);
63
+ return () => {
64
+ cancelAnimationFrame(frame);
65
+ clearTimeout(timer);
66
+ };
67
+ }, [isActive, focusedSegmentIndex]);
68
+ const onKeyPress = event => {
69
+ if (!isActive) {
70
+ return;
71
+ }
72
+ const key = event.nativeEvent.key;
73
+ if (key === 'Backspace') {
74
+ if (draftValue.length === 0) {
75
+ handleSegmentBackspace();
76
+ }
77
+ return;
78
+ }
79
+ if (key === 'ArrowRight') {
80
+ focusNextEditableSegment();
81
+ return;
82
+ }
83
+ if (key === 'ArrowLeft') {
84
+ focusPrevEditableSegment();
85
+ return;
86
+ }
87
+ if (isDayPeriod && /^[apAP]$/.test(key)) {
88
+ handleDayPeriodKey(key);
89
+ }
90
+ };
91
+ return /*#__PURE__*/_jsx(TextInput, {
92
+ testID: "date-time-field-keyboard-input",
93
+ accessibilityLabel: accessibilityLabel,
94
+ accessibilityElementsHidden: true,
95
+ importantForAccessibility: "no-hide-descendants",
96
+ ref: inputRef,
97
+ value: isActive ? draftValue : '',
98
+ editable: isActive,
99
+ showSoftInputOnFocus: isActive,
100
+ pointerEvents: "none",
101
+ caretHidden: true,
102
+ importantForAutofill: "no",
103
+ autoComplete: "off",
104
+ autoCorrect: false,
105
+ spellCheck: false,
106
+ keyboardType: isDayPeriod ? 'default' : NUMERIC_KEYBOARD,
107
+ inputMode: isDayPeriod ? 'text' : 'numeric',
108
+ style: HIDDEN_INPUT_STYLE,
109
+ onChangeText: text => {
110
+ if (!isActive) {
111
+ return;
112
+ }
113
+ handleSegmentInputChange(text);
114
+ },
115
+ onKeyPress: onKeyPress,
116
+ onBlur: () => {
117
+ if (suppressBlurRef.current) {
118
+ return;
119
+ }
120
+ requestAnimationFrame(() => {
121
+ if (suppressBlurRef.current) {
122
+ return;
123
+ }
124
+ const index = focusedIndexRef.current;
125
+ if (index == null) {
126
+ return;
127
+ }
128
+ if (Platform.OS !== 'web') {
129
+ blurSegment(index);
130
+ return;
131
+ }
132
+ const node = inputRef.current;
133
+ if (node?.isFocused?.()) {
134
+ return;
135
+ }
136
+ const active = typeof document !== 'undefined' ? document.activeElement : null;
137
+ if (active && active.tagName === 'INPUT') {
138
+ const label = active.getAttribute('aria-label');
139
+ if (label === accessibilityLabel) {
140
+ return;
141
+ }
142
+ }
143
+ blurSegment(index);
144
+ });
145
+ }
146
+ });
147
+ }
148
+ //# sourceMappingURL=DateTimeFieldHiddenInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","Platform","TextInput","useDateTimeFieldContext","jsx","_jsx","HIDDEN_INPUT_STYLE","position","opacity","width","height","left","top","zIndex","fontSize","NUMERIC_KEYBOARD","select","ios","default","DateTimeFieldHiddenInput","accessibilityLabel","focusedSegmentIndex","segments","disabled","readOnly","segmentDraft","handleSegmentInputChange","handleSegmentBackspace","handleDayPeriodKey","focusNextEditableSegment","focusPrevEditableSegment","blurSegment","inputRef","suppressBlurRef","focusedIndexRef","current","focusedSegment","undefined","isDayPeriod","type","isActive","draftValue","replace","focusInput","focus","frame","requestAnimationFrame","timer","setTimeout","cancelAnimationFrame","clearTimeout","onKeyPress","event","key","nativeEvent","length","test","testID","accessibilityElementsHidden","importantForAccessibility","ref","value","editable","showSoftInputOnFocus","pointerEvents","caretHidden","importantForAutofill","autoComplete","autoCorrect","spellCheck","keyboardType","inputMode","style","onChangeText","text","onBlur","index","OS","node","isFocused","active","document","activeElement","tagName","label","getAttribute"],"sourceRoot":"../../../src","sources":["date-time-field/DateTimeFieldHiddenInput.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useEffect } from 'react';
4
+ import { Platform, View } from 'react-native';
5
+ import { DateFieldSegmentIndexProvider } from '../date-field/segmentIndex';
6
+ import { Slot } from '../slot';
7
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
8
+ import { useDateTimeFieldContext } from './context';
9
+ import { DateTimeFieldHiddenInput } from './DateTimeFieldHiddenInput';
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export const DateTimeFieldInput = /*#__PURE__*/forwardRef(({
12
+ asChild,
13
+ children,
14
+ className,
15
+ style,
16
+ ...props
17
+ }, ref) => {
18
+ const ctx = useDateTimeFieldContext();
19
+ const {
20
+ segments,
21
+ labels
22
+ } = ctx;
23
+ const keyboardInputLabel = labels.dateFieldKeyboardInput;
24
+ const Comp = asChild ? Slot : View;
25
+ useEffect(() => {
26
+ if (Platform.OS !== 'web' || ctx.focusedSegmentIndex == null || ctx.disabled || ctx.readOnly) {
27
+ return;
28
+ }
29
+ const focusedIndex = ctx.focusedSegmentIndex;
30
+ const onKeyDown = event => {
31
+ const activeLabel = typeof document !== 'undefined' ? document.activeElement?.getAttribute?.('aria-label') : null;
32
+ const inputOwnsFocus = activeLabel === keyboardInputLabel;
33
+ if (event.key === 'Backspace') {
34
+ if (inputOwnsFocus) {
35
+ return;
36
+ }
37
+ event.preventDefault();
38
+ ctx.handleSegmentBackspace();
39
+ return;
40
+ }
41
+ if (event.key === 'ArrowRight') {
42
+ if (inputOwnsFocus) {
43
+ return;
44
+ }
45
+ event.preventDefault();
46
+ ctx.focusNextEditableSegment();
47
+ return;
48
+ }
49
+ if (event.key === 'ArrowLeft') {
50
+ if (inputOwnsFocus) {
51
+ return;
52
+ }
53
+ event.preventDefault();
54
+ ctx.focusPrevEditableSegment();
55
+ return;
56
+ }
57
+ if (event.key === 'Tab') {
58
+ ctx.blurSegment(focusedIndex);
59
+ return;
60
+ }
61
+ if (/^[apAP]$/.test(event.key)) {
62
+ if (inputOwnsFocus) {
63
+ return;
64
+ }
65
+ event.preventDefault();
66
+ ctx.handleDayPeriodKey(event.key);
67
+ return;
68
+ }
69
+ if (/^\d$/.test(event.key)) {
70
+ if (inputOwnsFocus) {
71
+ return;
72
+ }
73
+ event.preventDefault();
74
+ ctx.handleSegmentDigit(event.key);
75
+ }
76
+ };
77
+ document.addEventListener('keydown', onKeyDown);
78
+ return () => document.removeEventListener('keydown', onKeyDown);
79
+ }, [ctx.blurSegment, ctx.disabled, ctx.focusNextEditableSegment, ctx.focusPrevEditableSegment, ctx.focusedSegmentIndex, ctx.handleDayPeriodKey, ctx.handleSegmentBackspace, ctx.handleSegmentDigit, ctx.readOnly, keyboardInputLabel]);
80
+ return /*#__PURE__*/_jsxs(Comp, {
81
+ ref: ref,
82
+ className: className,
83
+ style: [{
84
+ position: 'relative'
85
+ }, style],
86
+ accessibilityRole: "none",
87
+ ...props,
88
+ ...mergeDataAttributes(props, dataAttributes({
89
+ slot: 'date-time-field-input'
90
+ })),
91
+ children: [segments.map((segment, index) => /*#__PURE__*/_jsx(DateFieldSegmentIndexProvider, {
92
+ index: index,
93
+ children: children(segment)
94
+ }, `${segment.type}-${String(index)}`)), /*#__PURE__*/_jsx(DateTimeFieldHiddenInput, {
95
+ accessibilityLabel: keyboardInputLabel
96
+ })]
97
+ });
98
+ });
99
+ DateTimeFieldInput.displayName = 'DateTimeFieldInput';
100
+ //# sourceMappingURL=DateTimeFieldInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useEffect","Platform","View","DateFieldSegmentIndexProvider","Slot","dataAttributes","mergeDataAttributes","useDateTimeFieldContext","DateTimeFieldHiddenInput","jsx","_jsx","jsxs","_jsxs","DateTimeFieldInput","asChild","children","className","style","props","ref","ctx","segments","labels","keyboardInputLabel","dateFieldKeyboardInput","Comp","OS","focusedSegmentIndex","disabled","readOnly","focusedIndex","onKeyDown","event","activeLabel","document","activeElement","getAttribute","inputOwnsFocus","key","preventDefault","handleSegmentBackspace","focusNextEditableSegment","focusPrevEditableSegment","blurSegment","test","handleDayPeriodKey","handleSegmentDigit","addEventListener","removeEventListener","position","accessibilityRole","slot","map","segment","index","type","String","accessibilityLabel","displayName"],"sourceRoot":"../../../src","sources":["date-time-field/DateTimeFieldInput.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useMemo } from 'react';
4
+ import { View } from 'react-native';
5
+ import { formatDateTimeId, getDateTimeFieldSegments, isLocaleHour12, parseDateTimeId, resolveDateComponentLabels } from '@cdx-ui/formatters';
6
+ import { useControllableState, useFormControl } from '@cdx-ui/utils';
7
+ import { Slot } from '../slot';
8
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
9
+ import { DateTimeFieldContext } from './context';
10
+ import { useDateTimeFieldSegmentState } from './useDateTimeFieldSegmentState';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ export const DateTimeFieldRoot = /*#__PURE__*/forwardRef(({
13
+ asChild,
14
+ children,
15
+ value: valueProp,
16
+ defaultValue,
17
+ onValueChange,
18
+ granularity = 'minute',
19
+ locale = 'en-US',
20
+ hour12: hour12Prop,
21
+ labels: labelsProp,
22
+ isDisabled,
23
+ isReadOnly,
24
+ isInvalid,
25
+ isRequired,
26
+ ...props
27
+ }, ref) => {
28
+ const hour12 = hour12Prop ?? isLocaleHour12(locale);
29
+ const formControl = useFormControl({
30
+ isDisabled,
31
+ isReadOnly,
32
+ isInvalid,
33
+ isRequired
34
+ });
35
+ const labels = useMemo(() => resolveDateComponentLabels(labelsProp), [labelsProp]);
36
+ const [value, setValue] = useControllableState({
37
+ prop: valueProp,
38
+ defaultProp: defaultValue,
39
+ onChange: onValueChange
40
+ });
41
+ const segments = useMemo(() => getDateTimeFieldSegments(value, {
42
+ granularity,
43
+ locale,
44
+ hour12
45
+ }), [value, granularity, locale, hour12]);
46
+ const fieldDisabled = !!formControl.disabled;
47
+ const fieldReadOnly = !!formControl.readOnly;
48
+ const fieldInvalid = !!formControl['aria-invalid'];
49
+ const segmentState = useDateTimeFieldSegmentState({
50
+ granularity,
51
+ hour12,
52
+ locale,
53
+ segments,
54
+ value,
55
+ setValue,
56
+ disabled: fieldDisabled,
57
+ readOnly: fieldReadOnly
58
+ });
59
+ const contextValue = useMemo(() => ({
60
+ value,
61
+ onValueChange: setValue,
62
+ granularity,
63
+ locale,
64
+ hour12,
65
+ labels,
66
+ segments,
67
+ disabled: fieldDisabled,
68
+ readOnly: fieldReadOnly,
69
+ invalid: fieldInvalid,
70
+ ...segmentState
71
+ }), [value, setValue, granularity, locale, hour12, labels, segments, fieldDisabled, fieldReadOnly, fieldInvalid, segmentState]);
72
+ const Comp = asChild ? Slot : View;
73
+ return /*#__PURE__*/_jsx(DateTimeFieldContext.Provider, {
74
+ value: contextValue,
75
+ children: /*#__PURE__*/_jsx(Comp, {
76
+ ref: ref,
77
+ ...props,
78
+ ...mergeDataAttributes(props, dataAttributes({
79
+ disabled: formControl.disabled,
80
+ invalid: formControl['aria-invalid'],
81
+ readonly: formControl.readOnly
82
+ })),
83
+ children: children
84
+ })
85
+ });
86
+ });
87
+ DateTimeFieldRoot.displayName = 'DateTimeFieldRoot';
88
+
89
+ /** Local `DateTimeId` includes seconds when the time segment is `HH:mm:ss` (colon at index 16). */
90
+ function dateTimeIdIncludesSeconds(dateTimeId) {
91
+ return dateTimeId.length >= 19 && dateTimeId.charAt(16) === ':';
92
+ }
93
+ export function applyDateTimePartChange(current, part, partValue) {
94
+ const parts = current ? parseDateTimeId(current) : null;
95
+ const hasSeconds = Boolean(current && dateTimeIdIncludesSeconds(current));
96
+ const includeSeconds = hasSeconds || part === 'second';
97
+ const base = parts ? {
98
+ year: parts.year,
99
+ month: parts.month,
100
+ day: parts.day,
101
+ hour: parts.hour,
102
+ minute: parts.minute,
103
+ ...(includeSeconds ? {
104
+ second: parts.second ?? 0
105
+ } : {})
106
+ } : {
107
+ year: new Date().getFullYear(),
108
+ month: new Date().getMonth() + 1,
109
+ day: new Date().getDate(),
110
+ hour: 0,
111
+ minute: 0,
112
+ ...(includeSeconds ? {
113
+ second: 0
114
+ } : {})
115
+ };
116
+ if (part === 'date' && typeof partValue === 'string') {
117
+ const dateParts = parseDateTimeId(`${partValue}T00:00:00`);
118
+ if (dateParts) {
119
+ return formatDateTimeId({
120
+ ...base,
121
+ year: dateParts.year,
122
+ month: dateParts.month,
123
+ day: dateParts.day
124
+ });
125
+ }
126
+ }
127
+ if (part === 'hour' && typeof partValue === 'number') {
128
+ return formatDateTimeId({
129
+ ...base,
130
+ hour: partValue
131
+ });
132
+ }
133
+ if (part === 'minute' && typeof partValue === 'number') {
134
+ return formatDateTimeId({
135
+ ...base,
136
+ minute: partValue
137
+ });
138
+ }
139
+ if (part === 'second' && typeof partValue === 'number') {
140
+ return formatDateTimeId({
141
+ ...base,
142
+ second: partValue
143
+ });
144
+ }
145
+ if (part === 'period' && typeof partValue === 'number') {
146
+ const hour = base.hour % 12 + (partValue === 1 ? 12 : 0);
147
+ return formatDateTimeId({
148
+ ...base,
149
+ hour
150
+ });
151
+ }
152
+ return formatDateTimeId(base);
153
+ }
154
+ //# sourceMappingURL=DateTimeFieldRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useMemo","View","formatDateTimeId","getDateTimeFieldSegments","isLocaleHour12","parseDateTimeId","resolveDateComponentLabels","useControllableState","useFormControl","Slot","dataAttributes","mergeDataAttributes","DateTimeFieldContext","useDateTimeFieldSegmentState","jsx","_jsx","DateTimeFieldRoot","asChild","children","value","valueProp","defaultValue","onValueChange","granularity","locale","hour12","hour12Prop","labels","labelsProp","isDisabled","isReadOnly","isInvalid","isRequired","props","ref","formControl","setValue","prop","defaultProp","onChange","segments","fieldDisabled","disabled","fieldReadOnly","readOnly","fieldInvalid","segmentState","contextValue","invalid","Comp","Provider","readonly","displayName","dateTimeIdIncludesSeconds","dateTimeId","length","charAt","applyDateTimePartChange","current","part","partValue","parts","hasSeconds","Boolean","includeSeconds","base","year","month","day","hour","minute","second","Date","getFullYear","getMonth","getDate","dateParts"],"sourceRoot":"../../../src","sources":["date-time-field/DateTimeFieldRoot.tsx"],"mappings":"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","ignoreList":[]}