@mantine/dates 9.0.0-alpha.5 → 9.0.0-alpha.7

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 (484) hide show
  1. package/cjs/_virtual/_rolldown/runtime.cjs +24 -0
  2. package/cjs/components/Calendar/Calendar.cjs +250 -344
  3. package/cjs/components/Calendar/Calendar.cjs.map +1 -1
  4. package/cjs/components/Calendar/clamp-level/clamp-level.cjs +11 -19
  5. package/cjs/components/Calendar/clamp-level/clamp-level.cjs.map +1 -1
  6. package/cjs/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.cjs +64 -130
  7. package/cjs/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.cjs.map +1 -1
  8. package/cjs/components/CalendarHeader/CalendarHeader.cjs +100 -145
  9. package/cjs/components/CalendarHeader/CalendarHeader.cjs.map +1 -1
  10. package/cjs/components/CalendarHeader/CalendarHeader.module.cjs +12 -0
  11. package/cjs/components/CalendarHeader/CalendarHeader.module.cjs.map +1 -0
  12. package/cjs/components/DateInput/DateInput.cjs +188 -242
  13. package/cjs/components/DateInput/DateInput.cjs.map +1 -1
  14. package/cjs/components/DateInput/date-string-parser/date-string-parser.cjs +12 -19
  15. package/cjs/components/DateInput/date-string-parser/date-string-parser.cjs.map +1 -1
  16. package/cjs/components/DateInput/is-date-valid/is-date-valid.cjs +13 -24
  17. package/cjs/components/DateInput/is-date-valid/is-date-valid.cjs.map +1 -1
  18. package/cjs/components/DatePicker/DatePicker.cjs +121 -154
  19. package/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  20. package/cjs/components/DatePicker/DatePicker.module.cjs +11 -0
  21. package/cjs/components/DatePicker/DatePicker.module.cjs.map +1 -0
  22. package/cjs/components/DatePickerInput/DatePickerInput.cjs +85 -123
  23. package/cjs/components/DatePickerInput/DatePickerInput.cjs.map +1 -1
  24. package/cjs/components/DateTimePicker/DateTimePicker.cjs +187 -233
  25. package/cjs/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  26. package/cjs/components/DateTimePicker/DateTimePicker.module.cjs +10 -0
  27. package/cjs/components/DateTimePicker/DateTimePicker.module.cjs.map +1 -0
  28. package/cjs/components/DateTimePicker/get-min-max-time/get-min-max-time.cjs +12 -15
  29. package/cjs/components/DateTimePicker/get-min-max-time/get-min-max-time.cjs.map +1 -1
  30. package/cjs/components/DatesProvider/DatesProvider.cjs +21 -15
  31. package/cjs/components/DatesProvider/DatesProvider.cjs.map +1 -1
  32. package/cjs/components/DatesProvider/use-dates-context.cjs +20 -29
  33. package/cjs/components/DatesProvider/use-dates-context.cjs.map +1 -1
  34. package/cjs/components/Day/Day.cjs +49 -83
  35. package/cjs/components/Day/Day.cjs.map +1 -1
  36. package/cjs/components/Day/Day.module.cjs +7 -0
  37. package/cjs/components/Day/Day.module.cjs.map +1 -0
  38. package/cjs/components/DecadeLevel/DecadeLevel.cjs +75 -124
  39. package/cjs/components/DecadeLevel/DecadeLevel.cjs.map +1 -1
  40. package/cjs/components/DecadeLevel/get-decade-range/get-decade-range.cjs +8 -9
  41. package/cjs/components/DecadeLevel/get-decade-range/get-decade-range.cjs.map +1 -1
  42. package/cjs/components/DecadeLevelGroup/DecadeLevelGroup.cjs +81 -131
  43. package/cjs/components/DecadeLevelGroup/DecadeLevelGroup.cjs.map +1 -1
  44. package/cjs/components/HiddenDatesInput/HiddenDatesInput.cjs +30 -36
  45. package/cjs/components/HiddenDatesInput/HiddenDatesInput.cjs.map +1 -1
  46. package/cjs/components/LevelsGroup/LevelsGroup.cjs +30 -38
  47. package/cjs/components/LevelsGroup/LevelsGroup.cjs.map +1 -1
  48. package/cjs/components/LevelsGroup/LevelsGroup.module.cjs +7 -0
  49. package/cjs/components/LevelsGroup/LevelsGroup.module.cjs.map +1 -0
  50. package/cjs/components/MiniCalendar/MiniCalendar.cjs +124 -153
  51. package/cjs/components/MiniCalendar/MiniCalendar.cjs.map +1 -1
  52. package/cjs/components/MiniCalendar/MiniCalendar.module.cjs +14 -0
  53. package/cjs/components/MiniCalendar/MiniCalendar.module.cjs.map +1 -0
  54. package/cjs/components/Month/Month.cjs +152 -200
  55. package/cjs/components/Month/Month.cjs.map +1 -1
  56. package/cjs/components/Month/Month.module.cjs +11 -0
  57. package/cjs/components/Month/Month.module.cjs.map +1 -0
  58. package/cjs/components/Month/get-date-in-tab-order/get-date-in-tab-order.cjs +18 -35
  59. package/cjs/components/Month/get-date-in-tab-order/get-date-in-tab-order.cjs.map +1 -1
  60. package/cjs/components/Month/get-end-of-week/get-end-of-week.cjs +13 -20
  61. package/cjs/components/Month/get-end-of-week/get-end-of-week.cjs.map +1 -1
  62. package/cjs/components/Month/get-month-days/get-month-days.cjs +38 -47
  63. package/cjs/components/Month/get-month-days/get-month-days.cjs.map +1 -1
  64. package/cjs/components/Month/get-start-of-week/get-start-of-week.cjs +11 -16
  65. package/cjs/components/Month/get-start-of-week/get-start-of-week.cjs.map +1 -1
  66. package/cjs/components/Month/get-week-number/get-week-number.cjs +12 -16
  67. package/cjs/components/Month/get-week-number/get-week-number.cjs.map +1 -1
  68. package/cjs/components/Month/is-after-min-date/is-after-min-date.cjs +9 -12
  69. package/cjs/components/Month/is-after-min-date/is-after-min-date.cjs.map +1 -1
  70. package/cjs/components/Month/is-before-max-date/is-before-max-date.cjs +9 -12
  71. package/cjs/components/Month/is-before-max-date/is-before-max-date.cjs.map +1 -1
  72. package/cjs/components/Month/is-same-month/is-same-month.cjs +9 -12
  73. package/cjs/components/Month/is-same-month/is-same-month.cjs.map +1 -1
  74. package/cjs/components/MonthLevel/MonthLevel.cjs +83 -141
  75. package/cjs/components/MonthLevel/MonthLevel.cjs.map +1 -1
  76. package/cjs/components/MonthLevelGroup/MonthLevelGroup.cjs +92 -154
  77. package/cjs/components/MonthLevelGroup/MonthLevelGroup.cjs.map +1 -1
  78. package/cjs/components/MonthPicker/MonthPicker.cjs +49 -75
  79. package/cjs/components/MonthPicker/MonthPicker.cjs.map +1 -1
  80. package/cjs/components/MonthPickerInput/MonthPickerInput.cjs +86 -119
  81. package/cjs/components/MonthPickerInput/MonthPickerInput.cjs.map +1 -1
  82. package/cjs/components/MonthsList/MonthsList.cjs +105 -139
  83. package/cjs/components/MonthsList/MonthsList.cjs.map +1 -1
  84. package/cjs/components/MonthsList/MonthsList.module.cjs +10 -0
  85. package/cjs/components/MonthsList/MonthsList.module.cjs.map +1 -0
  86. package/cjs/components/MonthsList/get-month-in-tab-order/get-month-in-tab-order.cjs +20 -30
  87. package/cjs/components/MonthsList/get-month-in-tab-order/get-month-in-tab-order.cjs.map +1 -1
  88. package/cjs/components/MonthsList/get-months-data/get-months-data.cjs +21 -21
  89. package/cjs/components/MonthsList/get-months-data/get-months-data.cjs.map +1 -1
  90. package/cjs/components/MonthsList/is-month-disabled/is-month-disabled.cjs +12 -21
  91. package/cjs/components/MonthsList/is-month-disabled/is-month-disabled.cjs.map +1 -1
  92. package/cjs/components/PickerControl/PickerControl.cjs +43 -65
  93. package/cjs/components/PickerControl/PickerControl.cjs.map +1 -1
  94. package/cjs/components/PickerControl/PickerControl.module.cjs +7 -0
  95. package/cjs/components/PickerControl/PickerControl.module.cjs.map +1 -0
  96. package/cjs/components/PickerInputBase/PickerInputBase.cjs +95 -127
  97. package/cjs/components/PickerInputBase/PickerInputBase.cjs.map +1 -1
  98. package/cjs/components/PickerInputBase/PickerInputBase.module.cjs +7 -0
  99. package/cjs/components/PickerInputBase/PickerInputBase.module.cjs.map +1 -0
  100. package/cjs/components/SpinInput/SpinInput.cjs +83 -111
  101. package/cjs/components/SpinInput/SpinInput.cjs.map +1 -1
  102. package/cjs/components/TimeGrid/TimeGrid.cjs +94 -101
  103. package/cjs/components/TimeGrid/TimeGrid.cjs.map +1 -1
  104. package/cjs/components/TimeGrid/TimeGrid.context.cjs +7 -10
  105. package/cjs/components/TimeGrid/TimeGrid.context.cjs.map +1 -1
  106. package/cjs/components/TimeGrid/TimeGrid.module.cjs +7 -0
  107. package/cjs/components/TimeGrid/TimeGrid.module.cjs.map +1 -0
  108. package/cjs/components/TimeGrid/TimeGridControl.cjs +26 -35
  109. package/cjs/components/TimeGrid/TimeGridControl.cjs.map +1 -1
  110. package/cjs/components/TimeGrid/compare-time.cjs +8 -9
  111. package/cjs/components/TimeGrid/compare-time.cjs.map +1 -1
  112. package/cjs/components/TimeInput/TimeInput.cjs +71 -88
  113. package/cjs/components/TimeInput/TimeInput.cjs.map +1 -1
  114. package/cjs/components/TimeInput/TimeInput.module.cjs +7 -0
  115. package/cjs/components/TimeInput/TimeInput.module.cjs.map +1 -0
  116. package/cjs/components/TimePicker/AmPmInput/AmPmInput.cjs +93 -101
  117. package/cjs/components/TimePicker/AmPmInput/AmPmInput.cjs.map +1 -1
  118. package/cjs/components/TimePicker/TimeControlsList/AmPmControlsList.cjs +19 -12
  119. package/cjs/components/TimePicker/TimeControlsList/AmPmControlsList.cjs.map +1 -1
  120. package/cjs/components/TimePicker/TimeControlsList/TimeControl.cjs +20 -23
  121. package/cjs/components/TimePicker/TimeControlsList/TimeControl.cjs.map +1 -1
  122. package/cjs/components/TimePicker/TimeControlsList/TimeControlsList.cjs +47 -57
  123. package/cjs/components/TimePicker/TimeControlsList/TimeControlsList.cjs.map +1 -1
  124. package/cjs/components/TimePicker/TimePicker.cjs +325 -420
  125. package/cjs/components/TimePicker/TimePicker.cjs.map +1 -1
  126. package/cjs/components/TimePicker/TimePicker.context.cjs +7 -10
  127. package/cjs/components/TimePicker/TimePicker.context.cjs.map +1 -1
  128. package/cjs/components/TimePicker/TimePicker.module.cjs +18 -0
  129. package/cjs/components/TimePicker/TimePicker.module.cjs.map +1 -0
  130. package/cjs/components/TimePicker/TimePresets/TimePresetControl.cjs +23 -28
  131. package/cjs/components/TimePicker/TimePresets/TimePresetControl.cjs.map +1 -1
  132. package/cjs/components/TimePicker/TimePresets/TimePresetGroup.cjs +36 -36
  133. package/cjs/components/TimePicker/TimePresets/TimePresetGroup.cjs.map +1 -1
  134. package/cjs/components/TimePicker/TimePresets/TimePresets.cjs +61 -70
  135. package/cjs/components/TimePicker/TimePresets/TimePresets.cjs.map +1 -1
  136. package/cjs/components/TimePicker/use-time-picker.cjs +201 -193
  137. package/cjs/components/TimePicker/use-time-picker.cjs.map +1 -1
  138. package/cjs/components/TimePicker/utils/clamp-time/clamp-time.cjs +10 -12
  139. package/cjs/components/TimePicker/utils/clamp-time/clamp-time.cjs.map +1 -1
  140. package/cjs/components/TimePicker/utils/get-parsed-time/get-parsed-time.cjs +40 -34
  141. package/cjs/components/TimePicker/utils/get-parsed-time/get-parsed-time.cjs.map +1 -1
  142. package/cjs/components/TimePicker/utils/get-time-range/get-time-range.cjs +12 -15
  143. package/cjs/components/TimePicker/utils/get-time-range/get-time-range.cjs.map +1 -1
  144. package/cjs/components/TimePicker/utils/get-time-string/get-time-string.cjs +39 -48
  145. package/cjs/components/TimePicker/utils/get-time-string/get-time-string.cjs.map +1 -1
  146. package/cjs/components/TimePicker/utils/is-same-time/is-same-time.cjs +10 -13
  147. package/cjs/components/TimePicker/utils/is-same-time/is-same-time.cjs.map +1 -1
  148. package/cjs/components/TimePicker/utils/pad-time/pad-time.cjs +6 -6
  149. package/cjs/components/TimePicker/utils/pad-time/pad-time.cjs.map +1 -1
  150. package/cjs/components/TimePicker/utils/split-time-string/split-time-string.cjs +11 -7
  151. package/cjs/components/TimePicker/utils/split-time-string/split-time-string.cjs.map +1 -1
  152. package/cjs/components/TimePicker/utils/time-to-seconds/time-to-seconds.cjs +17 -18
  153. package/cjs/components/TimePicker/utils/time-to-seconds/time-to-seconds.cjs.map +1 -1
  154. package/cjs/components/TimeValue/TimeValue.cjs +18 -15
  155. package/cjs/components/TimeValue/TimeValue.cjs.map +1 -1
  156. package/cjs/components/TimeValue/get-formatted-time/get-formatted-time.cjs +14 -27
  157. package/cjs/components/TimeValue/get-formatted-time/get-formatted-time.cjs.map +1 -1
  158. package/cjs/components/WeekdaysRow/WeekdaysRow.cjs +51 -61
  159. package/cjs/components/WeekdaysRow/WeekdaysRow.cjs.map +1 -1
  160. package/cjs/components/WeekdaysRow/WeekdaysRow.module.cjs +7 -0
  161. package/cjs/components/WeekdaysRow/WeekdaysRow.module.cjs.map +1 -0
  162. package/cjs/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.cjs +14 -26
  163. package/cjs/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
  164. package/cjs/components/YearLevel/YearLevel.cjs +73 -121
  165. package/cjs/components/YearLevel/YearLevel.cjs.map +1 -1
  166. package/cjs/components/YearLevelGroup/YearLevelGroup.cjs +83 -135
  167. package/cjs/components/YearLevelGroup/YearLevelGroup.cjs.map +1 -1
  168. package/cjs/components/YearPicker/YearPicker.cjs +48 -73
  169. package/cjs/components/YearPicker/YearPicker.cjs.map +1 -1
  170. package/cjs/components/YearPickerInput/YearPickerInput.cjs +86 -119
  171. package/cjs/components/YearPickerInput/YearPickerInput.cjs.map +1 -1
  172. package/cjs/components/YearsList/YearsList.cjs +103 -133
  173. package/cjs/components/YearsList/YearsList.cjs.map +1 -1
  174. package/cjs/components/YearsList/YearsList.module.cjs +10 -0
  175. package/cjs/components/YearsList/YearsList.module.cjs.map +1 -0
  176. package/cjs/components/YearsList/get-year-in-tab-order/get-year-in-tab-order.cjs +20 -30
  177. package/cjs/components/YearsList/get-year-in-tab-order/get-year-in-tab-order.cjs.map +1 -1
  178. package/cjs/components/YearsList/get-years-data/get-years-data.cjs +25 -23
  179. package/cjs/components/YearsList/get-years-data/get-years-data.cjs.map +1 -1
  180. package/cjs/components/YearsList/is-year-disabled/is-year-disabled.cjs +12 -21
  181. package/cjs/components/YearsList/is-year-disabled/is-year-disabled.cjs.map +1 -1
  182. package/cjs/hooks/use-dates-input/use-dates-input.cjs +47 -70
  183. package/cjs/hooks/use-dates-input/use-dates-input.cjs.map +1 -1
  184. package/cjs/hooks/use-dates-state/is-in-range/is-in-range.cjs +10 -13
  185. package/cjs/hooks/use-dates-state/is-in-range/is-in-range.cjs.map +1 -1
  186. package/cjs/hooks/use-dates-state/use-dates-state.cjs +113 -154
  187. package/cjs/hooks/use-dates-state/use-dates-state.cjs.map +1 -1
  188. package/cjs/hooks/use-uncontrolled-dates/use-uncontrolled-dates.cjs +32 -36
  189. package/cjs/hooks/use-uncontrolled-dates/use-uncontrolled-dates.cjs.map +1 -1
  190. package/cjs/index.cjs +94 -99
  191. package/cjs/utils/assign-time/assign-time.cjs +16 -21
  192. package/cjs/utils/assign-time/assign-time.cjs.map +1 -1
  193. package/cjs/utils/clamp-date/clamp-date.cjs +13 -22
  194. package/cjs/utils/clamp-date/clamp-date.cjs.map +1 -1
  195. package/cjs/utils/get-default-clamped-date/get-default-clamped-date.cjs +15 -27
  196. package/cjs/utils/get-default-clamped-date/get-default-clamped-date.cjs.map +1 -1
  197. package/cjs/utils/get-formatted-date/get-formatted-date.cjs +19 -37
  198. package/cjs/utils/get-formatted-date/get-formatted-date.cjs.map +1 -1
  199. package/cjs/utils/handle-control-key-down/handle-control-key-down.cjs +114 -149
  200. package/cjs/utils/handle-control-key-down/handle-control-key-down.cjs.map +1 -1
  201. package/cjs/utils/to-date-string/to-date-string.cjs +10 -13
  202. package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
  203. package/esm/components/Calendar/Calendar.mjs +247 -337
  204. package/esm/components/Calendar/Calendar.mjs.map +1 -1
  205. package/esm/components/Calendar/clamp-level/clamp-level.mjs +10 -17
  206. package/esm/components/Calendar/clamp-level/clamp-level.mjs.map +1 -1
  207. package/esm/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.mjs +64 -128
  208. package/esm/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.mjs.map +1 -1
  209. package/esm/components/CalendarHeader/CalendarHeader.mjs +98 -142
  210. package/esm/components/CalendarHeader/CalendarHeader.mjs.map +1 -1
  211. package/esm/components/CalendarHeader/CalendarHeader.module.mjs +12 -0
  212. package/esm/components/CalendarHeader/CalendarHeader.module.mjs.map +1 -0
  213. package/esm/components/DateInput/DateInput.mjs +185 -235
  214. package/esm/components/DateInput/DateInput.mjs.map +1 -1
  215. package/esm/components/DateInput/date-string-parser/date-string-parser.mjs +10 -13
  216. package/esm/components/DateInput/date-string-parser/date-string-parser.mjs.map +1 -1
  217. package/esm/components/DateInput/is-date-valid/is-date-valid.mjs +11 -18
  218. package/esm/components/DateInput/is-date-valid/is-date-valid.mjs.map +1 -1
  219. package/esm/components/DatePicker/DatePicker.mjs +117 -146
  220. package/esm/components/DatePicker/DatePicker.mjs.map +1 -1
  221. package/esm/components/DatePicker/DatePicker.module.mjs +11 -0
  222. package/esm/components/DatePicker/DatePicker.module.mjs.map +1 -0
  223. package/esm/components/DatePickerInput/DatePickerInput.mjs +84 -121
  224. package/esm/components/DatePickerInput/DatePickerInput.mjs.map +1 -1
  225. package/esm/components/DateTimePicker/DateTimePicker.mjs +184 -226
  226. package/esm/components/DateTimePicker/DateTimePicker.mjs.map +1 -1
  227. package/esm/components/DateTimePicker/DateTimePicker.module.mjs +10 -0
  228. package/esm/components/DateTimePicker/DateTimePicker.module.mjs.map +1 -0
  229. package/esm/components/DateTimePicker/get-min-max-time/get-min-max-time.mjs +10 -9
  230. package/esm/components/DateTimePicker/get-min-max-time/get-min-max-time.mjs.map +1 -1
  231. package/esm/components/DatesProvider/DatesProvider.mjs +19 -12
  232. package/esm/components/DatesProvider/DatesProvider.mjs.map +1 -1
  233. package/esm/components/DatesProvider/use-dates-context.mjs +19 -27
  234. package/esm/components/DatesProvider/use-dates-context.mjs.map +1 -1
  235. package/esm/components/Day/Day.mjs +46 -76
  236. package/esm/components/Day/Day.mjs.map +1 -1
  237. package/esm/components/Day/Day.module.mjs +7 -0
  238. package/esm/components/Day/Day.module.mjs.map +1 -0
  239. package/esm/components/DecadeLevel/DecadeLevel.mjs +72 -117
  240. package/esm/components/DecadeLevel/DecadeLevel.mjs.map +1 -1
  241. package/esm/components/DecadeLevel/get-decade-range/get-decade-range.mjs +8 -7
  242. package/esm/components/DecadeLevel/get-decade-range/get-decade-range.mjs.map +1 -1
  243. package/esm/components/DecadeLevelGroup/DecadeLevelGroup.mjs +78 -124
  244. package/esm/components/DecadeLevelGroup/DecadeLevelGroup.mjs.map +1 -1
  245. package/esm/components/HiddenDatesInput/HiddenDatesInput.mjs +29 -34
  246. package/esm/components/HiddenDatesInput/HiddenDatesInput.mjs.map +1 -1
  247. package/esm/components/LevelsGroup/LevelsGroup.mjs +28 -35
  248. package/esm/components/LevelsGroup/LevelsGroup.mjs.map +1 -1
  249. package/esm/components/LevelsGroup/LevelsGroup.module.mjs +7 -0
  250. package/esm/components/LevelsGroup/LevelsGroup.module.mjs.map +1 -0
  251. package/esm/components/MiniCalendar/MiniCalendar.mjs +121 -146
  252. package/esm/components/MiniCalendar/MiniCalendar.mjs.map +1 -1
  253. package/esm/components/MiniCalendar/MiniCalendar.module.mjs +14 -0
  254. package/esm/components/MiniCalendar/MiniCalendar.module.mjs.map +1 -0
  255. package/esm/components/Month/Month.mjs +149 -193
  256. package/esm/components/Month/Month.mjs.map +1 -1
  257. package/esm/components/Month/Month.module.mjs +11 -0
  258. package/esm/components/Month/Month.module.mjs.map +1 -0
  259. package/esm/components/Month/get-date-in-tab-order/get-date-in-tab-order.mjs +16 -29
  260. package/esm/components/Month/get-date-in-tab-order/get-date-in-tab-order.mjs.map +1 -1
  261. package/esm/components/Month/get-end-of-week/get-end-of-week.mjs +11 -14
  262. package/esm/components/Month/get-end-of-week/get-end-of-week.mjs.map +1 -1
  263. package/esm/components/Month/get-month-days/get-month-days.mjs +36 -41
  264. package/esm/components/Month/get-month-days/get-month-days.mjs.map +1 -1
  265. package/esm/components/Month/get-start-of-week/get-start-of-week.mjs +9 -10
  266. package/esm/components/Month/get-start-of-week/get-start-of-week.mjs.map +1 -1
  267. package/esm/components/Month/get-week-number/get-week-number.mjs +8 -8
  268. package/esm/components/Month/get-week-number/get-week-number.mjs.map +1 -1
  269. package/esm/components/Month/is-after-min-date/is-after-min-date.mjs +7 -6
  270. package/esm/components/Month/is-after-min-date/is-after-min-date.mjs.map +1 -1
  271. package/esm/components/Month/is-before-max-date/is-before-max-date.mjs +7 -6
  272. package/esm/components/Month/is-before-max-date/is-before-max-date.mjs.map +1 -1
  273. package/esm/components/Month/is-same-month/is-same-month.mjs +7 -6
  274. package/esm/components/Month/is-same-month/is-same-month.mjs.map +1 -1
  275. package/esm/components/MonthLevel/MonthLevel.mjs +80 -134
  276. package/esm/components/MonthLevel/MonthLevel.mjs.map +1 -1
  277. package/esm/components/MonthLevelGroup/MonthLevelGroup.mjs +89 -147
  278. package/esm/components/MonthLevelGroup/MonthLevelGroup.mjs.map +1 -1
  279. package/esm/components/MonthPicker/MonthPicker.mjs +46 -71
  280. package/esm/components/MonthPicker/MonthPicker.mjs.map +1 -1
  281. package/esm/components/MonthPickerInput/MonthPickerInput.mjs +85 -117
  282. package/esm/components/MonthPickerInput/MonthPickerInput.mjs.map +1 -1
  283. package/esm/components/MonthsList/MonthsList.mjs +102 -132
  284. package/esm/components/MonthsList/MonthsList.mjs.map +1 -1
  285. package/esm/components/MonthsList/MonthsList.module.mjs +10 -0
  286. package/esm/components/MonthsList/MonthsList.module.mjs.map +1 -0
  287. package/esm/components/MonthsList/get-month-in-tab-order/get-month-in-tab-order.mjs +18 -24
  288. package/esm/components/MonthsList/get-month-in-tab-order/get-month-in-tab-order.mjs.map +1 -1
  289. package/esm/components/MonthsList/get-months-data/get-months-data.mjs +19 -15
  290. package/esm/components/MonthsList/get-months-data/get-months-data.mjs.map +1 -1
  291. package/esm/components/MonthsList/is-month-disabled/is-month-disabled.mjs +10 -15
  292. package/esm/components/MonthsList/is-month-disabled/is-month-disabled.mjs.map +1 -1
  293. package/esm/components/PickerControl/PickerControl.mjs +41 -62
  294. package/esm/components/PickerControl/PickerControl.mjs.map +1 -1
  295. package/esm/components/PickerControl/PickerControl.module.mjs +7 -0
  296. package/esm/components/PickerControl/PickerControl.module.mjs.map +1 -0
  297. package/esm/components/PickerInputBase/PickerInputBase.mjs +92 -120
  298. package/esm/components/PickerInputBase/PickerInputBase.mjs.map +1 -1
  299. package/esm/components/PickerInputBase/PickerInputBase.module.mjs +7 -0
  300. package/esm/components/PickerInputBase/PickerInputBase.module.mjs.map +1 -0
  301. package/esm/components/SpinInput/SpinInput.mjs +82 -109
  302. package/esm/components/SpinInput/SpinInput.mjs.map +1 -1
  303. package/esm/components/TimeGrid/TimeGrid.context.mjs +7 -8
  304. package/esm/components/TimeGrid/TimeGrid.context.mjs.map +1 -1
  305. package/esm/components/TimeGrid/TimeGrid.mjs +92 -98
  306. package/esm/components/TimeGrid/TimeGrid.mjs.map +1 -1
  307. package/esm/components/TimeGrid/TimeGrid.module.mjs +7 -0
  308. package/esm/components/TimeGrid/TimeGrid.module.mjs.map +1 -0
  309. package/esm/components/TimeGrid/TimeGridControl.mjs +24 -29
  310. package/esm/components/TimeGrid/TimeGridControl.mjs.map +1 -1
  311. package/esm/components/TimeGrid/compare-time.mjs +8 -7
  312. package/esm/components/TimeGrid/compare-time.mjs.map +1 -1
  313. package/esm/components/TimeInput/TimeInput.mjs +67 -80
  314. package/esm/components/TimeInput/TimeInput.mjs.map +1 -1
  315. package/esm/components/TimeInput/TimeInput.module.mjs +7 -0
  316. package/esm/components/TimeInput/TimeInput.module.mjs.map +1 -0
  317. package/esm/components/TimePicker/AmPmInput/AmPmInput.mjs +92 -99
  318. package/esm/components/TimePicker/AmPmInput/AmPmInput.mjs.map +1 -1
  319. package/esm/components/TimePicker/TimeControlsList/AmPmControlsList.mjs +18 -10
  320. package/esm/components/TimePicker/TimeControlsList/AmPmControlsList.mjs.map +1 -1
  321. package/esm/components/TimePicker/TimeControlsList/TimeControl.mjs +19 -21
  322. package/esm/components/TimePicker/TimeControlsList/TimeControl.mjs.map +1 -1
  323. package/esm/components/TimePicker/TimeControlsList/TimeControlsList.mjs +46 -55
  324. package/esm/components/TimePicker/TimeControlsList/TimeControlsList.mjs.map +1 -1
  325. package/esm/components/TimePicker/TimePicker.context.mjs +7 -8
  326. package/esm/components/TimePicker/TimePicker.context.mjs.map +1 -1
  327. package/esm/components/TimePicker/TimePicker.mjs +323 -417
  328. package/esm/components/TimePicker/TimePicker.mjs.map +1 -1
  329. package/esm/components/TimePicker/TimePicker.module.mjs +18 -0
  330. package/esm/components/TimePicker/TimePicker.module.mjs.map +1 -0
  331. package/esm/components/TimePicker/TimePresets/TimePresetControl.mjs +22 -26
  332. package/esm/components/TimePicker/TimePresets/TimePresetControl.mjs.map +1 -1
  333. package/esm/components/TimePicker/TimePresets/TimePresetGroup.mjs +35 -34
  334. package/esm/components/TimePicker/TimePresets/TimePresetGroup.mjs.map +1 -1
  335. package/esm/components/TimePicker/TimePresets/TimePresets.mjs +60 -68
  336. package/esm/components/TimePicker/TimePresets/TimePresets.mjs.map +1 -1
  337. package/esm/components/TimePicker/use-time-picker.mjs +200 -191
  338. package/esm/components/TimePicker/use-time-picker.mjs.map +1 -1
  339. package/esm/components/TimePicker/utils/clamp-time/clamp-time.mjs +10 -10
  340. package/esm/components/TimePicker/utils/clamp-time/clamp-time.mjs.map +1 -1
  341. package/esm/components/TimePicker/utils/get-parsed-time/get-parsed-time.mjs +40 -31
  342. package/esm/components/TimePicker/utils/get-parsed-time/get-parsed-time.mjs.map +1 -1
  343. package/esm/components/TimePicker/utils/get-time-range/get-time-range.mjs +12 -13
  344. package/esm/components/TimePicker/utils/get-time-range/get-time-range.mjs.map +1 -1
  345. package/esm/components/TimePicker/utils/get-time-string/get-time-string.mjs +39 -46
  346. package/esm/components/TimePicker/utils/get-time-string/get-time-string.mjs.map +1 -1
  347. package/esm/components/TimePicker/utils/is-same-time/is-same-time.mjs +10 -11
  348. package/esm/components/TimePicker/utils/is-same-time/is-same-time.mjs.map +1 -1
  349. package/esm/components/TimePicker/utils/pad-time/pad-time.mjs +6 -4
  350. package/esm/components/TimePicker/utils/pad-time/pad-time.mjs.map +1 -1
  351. package/esm/components/TimePicker/utils/split-time-string/split-time-string.mjs +11 -5
  352. package/esm/components/TimePicker/utils/split-time-string/split-time-string.mjs.map +1 -1
  353. package/esm/components/TimePicker/utils/time-to-seconds/time-to-seconds.mjs +17 -16
  354. package/esm/components/TimePicker/utils/time-to-seconds/time-to-seconds.mjs.map +1 -1
  355. package/esm/components/TimeValue/TimeValue.mjs +17 -13
  356. package/esm/components/TimeValue/TimeValue.mjs.map +1 -1
  357. package/esm/components/TimeValue/get-formatted-time/get-formatted-time.mjs +14 -25
  358. package/esm/components/TimeValue/get-formatted-time/get-formatted-time.mjs.map +1 -1
  359. package/esm/components/WeekdaysRow/WeekdaysRow.mjs +49 -58
  360. package/esm/components/WeekdaysRow/WeekdaysRow.mjs.map +1 -1
  361. package/esm/components/WeekdaysRow/WeekdaysRow.module.mjs +7 -0
  362. package/esm/components/WeekdaysRow/WeekdaysRow.module.mjs.map +1 -0
  363. package/esm/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.mjs +12 -20
  364. package/esm/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.mjs.map +1 -1
  365. package/esm/components/YearLevel/YearLevel.mjs +70 -114
  366. package/esm/components/YearLevel/YearLevel.mjs.map +1 -1
  367. package/esm/components/YearLevelGroup/YearLevelGroup.mjs +80 -128
  368. package/esm/components/YearLevelGroup/YearLevelGroup.mjs.map +1 -1
  369. package/esm/components/YearPicker/YearPicker.mjs +45 -69
  370. package/esm/components/YearPicker/YearPicker.mjs.map +1 -1
  371. package/esm/components/YearPickerInput/YearPickerInput.mjs +85 -117
  372. package/esm/components/YearPickerInput/YearPickerInput.mjs.map +1 -1
  373. package/esm/components/YearsList/YearsList.mjs +100 -126
  374. package/esm/components/YearsList/YearsList.mjs.map +1 -1
  375. package/esm/components/YearsList/YearsList.module.mjs +10 -0
  376. package/esm/components/YearsList/YearsList.module.mjs.map +1 -0
  377. package/esm/components/YearsList/get-year-in-tab-order/get-year-in-tab-order.mjs +18 -24
  378. package/esm/components/YearsList/get-year-in-tab-order/get-year-in-tab-order.mjs.map +1 -1
  379. package/esm/components/YearsList/get-years-data/get-years-data.mjs +23 -17
  380. package/esm/components/YearsList/get-years-data/get-years-data.mjs.map +1 -1
  381. package/esm/components/YearsList/is-year-disabled/is-year-disabled.mjs +10 -15
  382. package/esm/components/YearsList/is-year-disabled/is-year-disabled.mjs.map +1 -1
  383. package/esm/hooks/use-dates-input/use-dates-input.mjs +45 -64
  384. package/esm/hooks/use-dates-input/use-dates-input.mjs.map +1 -1
  385. package/esm/hooks/use-dates-state/is-in-range/is-in-range.mjs +8 -7
  386. package/esm/hooks/use-dates-state/is-in-range/is-in-range.mjs.map +1 -1
  387. package/esm/hooks/use-dates-state/use-dates-state.mjs +111 -148
  388. package/esm/hooks/use-dates-state/use-dates-state.mjs.map +1 -1
  389. package/esm/hooks/use-uncontrolled-dates/use-uncontrolled-dates.mjs +31 -33
  390. package/esm/hooks/use-uncontrolled-dates/use-uncontrolled-dates.mjs.map +1 -1
  391. package/esm/index.mjs +46 -46
  392. package/esm/utils/assign-time/assign-time.mjs +14 -15
  393. package/esm/utils/assign-time/assign-time.mjs.map +1 -1
  394. package/esm/utils/clamp-date/clamp-date.mjs +11 -16
  395. package/esm/utils/clamp-date/clamp-date.mjs.map +1 -1
  396. package/esm/utils/get-default-clamped-date/get-default-clamped-date.mjs +13 -21
  397. package/esm/utils/get-default-clamped-date/get-default-clamped-date.mjs.map +1 -1
  398. package/esm/utils/get-formatted-date/get-formatted-date.mjs +17 -30
  399. package/esm/utils/get-formatted-date/get-formatted-date.mjs.map +1 -1
  400. package/esm/utils/handle-control-key-down/handle-control-key-down.mjs +114 -147
  401. package/esm/utils/handle-control-key-down/handle-control-key-down.mjs.map +1 -1
  402. package/esm/utils/to-date-string/to-date-string.mjs +8 -7
  403. package/esm/utils/to-date-string/to-date-string.mjs.map +1 -1
  404. package/package.json +3 -3
  405. package/cjs/components/CalendarHeader/CalendarHeader.module.css.cjs +0 -7
  406. package/cjs/components/CalendarHeader/CalendarHeader.module.css.cjs.map +0 -1
  407. package/cjs/components/DatePicker/DatePicker.module.css.cjs +0 -7
  408. package/cjs/components/DatePicker/DatePicker.module.css.cjs.map +0 -1
  409. package/cjs/components/DateTimePicker/DateTimePicker.module.css.cjs +0 -7
  410. package/cjs/components/DateTimePicker/DateTimePicker.module.css.cjs.map +0 -1
  411. package/cjs/components/Day/Day.module.css.cjs +0 -7
  412. package/cjs/components/Day/Day.module.css.cjs.map +0 -1
  413. package/cjs/components/InlineDateTimePicker/InlineDateTimePicker.cjs +0 -345
  414. package/cjs/components/InlineDateTimePicker/InlineDateTimePicker.cjs.map +0 -1
  415. package/cjs/components/InlineDateTimePicker/InlineDateTimePicker.module.css.cjs +0 -7
  416. package/cjs/components/InlineDateTimePicker/InlineDateTimePicker.module.css.cjs.map +0 -1
  417. package/cjs/components/LevelsGroup/LevelsGroup.module.css.cjs +0 -7
  418. package/cjs/components/LevelsGroup/LevelsGroup.module.css.cjs.map +0 -1
  419. package/cjs/components/MiniCalendar/MiniCalendar.module.css.cjs +0 -7
  420. package/cjs/components/MiniCalendar/MiniCalendar.module.css.cjs.map +0 -1
  421. package/cjs/components/Month/Month.module.css.cjs +0 -7
  422. package/cjs/components/Month/Month.module.css.cjs.map +0 -1
  423. package/cjs/components/MonthPicker/MonthPicker.module.css.cjs +0 -7
  424. package/cjs/components/MonthPicker/MonthPicker.module.css.cjs.map +0 -1
  425. package/cjs/components/MonthsList/MonthsList.module.css.cjs +0 -7
  426. package/cjs/components/MonthsList/MonthsList.module.css.cjs.map +0 -1
  427. package/cjs/components/PickerControl/PickerControl.module.css.cjs +0 -7
  428. package/cjs/components/PickerControl/PickerControl.module.css.cjs.map +0 -1
  429. package/cjs/components/PickerInputBase/PickerInputBase.module.css.cjs +0 -7
  430. package/cjs/components/PickerInputBase/PickerInputBase.module.css.cjs.map +0 -1
  431. package/cjs/components/TimeGrid/TimeGrid.module.css.cjs +0 -7
  432. package/cjs/components/TimeGrid/TimeGrid.module.css.cjs.map +0 -1
  433. package/cjs/components/TimeInput/TimeInput.module.css.cjs +0 -7
  434. package/cjs/components/TimeInput/TimeInput.module.css.cjs.map +0 -1
  435. package/cjs/components/TimePicker/TimePicker.module.css.cjs +0 -7
  436. package/cjs/components/TimePicker/TimePicker.module.css.cjs.map +0 -1
  437. package/cjs/components/WeekdaysRow/WeekdaysRow.module.css.cjs +0 -7
  438. package/cjs/components/WeekdaysRow/WeekdaysRow.module.css.cjs.map +0 -1
  439. package/cjs/components/YearPicker/YearPicker.module.css.cjs +0 -7
  440. package/cjs/components/YearPicker/YearPicker.module.css.cjs.map +0 -1
  441. package/cjs/components/YearsList/YearsList.module.css.cjs +0 -7
  442. package/cjs/components/YearsList/YearsList.module.css.cjs.map +0 -1
  443. package/cjs/index.cjs.map +0 -1
  444. package/esm/components/CalendarHeader/CalendarHeader.module.css.mjs +0 -5
  445. package/esm/components/CalendarHeader/CalendarHeader.module.css.mjs.map +0 -1
  446. package/esm/components/DatePicker/DatePicker.module.css.mjs +0 -5
  447. package/esm/components/DatePicker/DatePicker.module.css.mjs.map +0 -1
  448. package/esm/components/DateTimePicker/DateTimePicker.module.css.mjs +0 -5
  449. package/esm/components/DateTimePicker/DateTimePicker.module.css.mjs.map +0 -1
  450. package/esm/components/Day/Day.module.css.mjs +0 -5
  451. package/esm/components/Day/Day.module.css.mjs.map +0 -1
  452. package/esm/components/InlineDateTimePicker/InlineDateTimePicker.mjs +0 -339
  453. package/esm/components/InlineDateTimePicker/InlineDateTimePicker.mjs.map +0 -1
  454. package/esm/components/InlineDateTimePicker/InlineDateTimePicker.module.css.mjs +0 -5
  455. package/esm/components/InlineDateTimePicker/InlineDateTimePicker.module.css.mjs.map +0 -1
  456. package/esm/components/LevelsGroup/LevelsGroup.module.css.mjs +0 -5
  457. package/esm/components/LevelsGroup/LevelsGroup.module.css.mjs.map +0 -1
  458. package/esm/components/MiniCalendar/MiniCalendar.module.css.mjs +0 -5
  459. package/esm/components/MiniCalendar/MiniCalendar.module.css.mjs.map +0 -1
  460. package/esm/components/Month/Month.module.css.mjs +0 -5
  461. package/esm/components/Month/Month.module.css.mjs.map +0 -1
  462. package/esm/components/MonthPicker/MonthPicker.module.css.mjs +0 -5
  463. package/esm/components/MonthPicker/MonthPicker.module.css.mjs.map +0 -1
  464. package/esm/components/MonthsList/MonthsList.module.css.mjs +0 -5
  465. package/esm/components/MonthsList/MonthsList.module.css.mjs.map +0 -1
  466. package/esm/components/PickerControl/PickerControl.module.css.mjs +0 -5
  467. package/esm/components/PickerControl/PickerControl.module.css.mjs.map +0 -1
  468. package/esm/components/PickerInputBase/PickerInputBase.module.css.mjs +0 -5
  469. package/esm/components/PickerInputBase/PickerInputBase.module.css.mjs.map +0 -1
  470. package/esm/components/TimeGrid/TimeGrid.module.css.mjs +0 -5
  471. package/esm/components/TimeGrid/TimeGrid.module.css.mjs.map +0 -1
  472. package/esm/components/TimeInput/TimeInput.module.css.mjs +0 -5
  473. package/esm/components/TimeInput/TimeInput.module.css.mjs.map +0 -1
  474. package/esm/components/TimePicker/TimePicker.module.css.mjs +0 -5
  475. package/esm/components/TimePicker/TimePicker.module.css.mjs.map +0 -1
  476. package/esm/components/WeekdaysRow/WeekdaysRow.module.css.mjs +0 -5
  477. package/esm/components/WeekdaysRow/WeekdaysRow.module.css.mjs.map +0 -1
  478. package/esm/components/YearPicker/YearPicker.module.css.mjs +0 -5
  479. package/esm/components/YearPicker/YearPicker.module.css.mjs.map +0 -1
  480. package/esm/components/YearsList/YearsList.module.css.mjs +0 -5
  481. package/esm/components/YearsList/YearsList.module.css.mjs.map +0 -1
  482. package/esm/index.mjs.map +0 -1
  483. package/lib/components/InlineDateTimePicker/InlineDateTimePicker.d.ts +0 -71
  484. package/lib/components/InlineDateTimePicker/index.d.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"handle-control-key-down.mjs","sources":["../../../src/utils/handle-control-key-down/handle-control-key-down.ts"],"sourcesContent":["import { RefObject } from 'react';\n\ntype ControlsRef = RefObject<HTMLButtonElement[][][]>;\ntype Direction = 'up' | 'down' | 'left' | 'right';\n\ntype NextIndexInput = Omit<ShiftFocusInput, 'controlsRef'>;\n\nfunction getNextIndex({ direction, levelIndex, rowIndex, cellIndex, size }: NextIndexInput) {\n switch (direction) {\n case 'up':\n if (levelIndex === 0 && rowIndex === 0) {\n return null;\n }\n if (rowIndex === 0) {\n return {\n levelIndex: levelIndex - 1,\n rowIndex:\n cellIndex <= size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1\n ? size[levelIndex - 1].length - 1\n : size[levelIndex - 1].length - 2,\n cellIndex,\n };\n }\n return {\n levelIndex,\n rowIndex: rowIndex - 1,\n cellIndex,\n };\n\n case 'down':\n if (rowIndex === size[levelIndex].length - 1) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex,\n };\n }\n if (\n rowIndex === size[levelIndex].length - 2 &&\n cellIndex >= size[levelIndex][size[levelIndex].length - 1]\n ) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex,\n };\n }\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex,\n };\n\n case 'left':\n if (levelIndex === 0 && rowIndex === 0 && cellIndex === 0) {\n return null;\n }\n if (rowIndex === 0 && cellIndex === 0) {\n return {\n levelIndex: levelIndex - 1,\n rowIndex: size[levelIndex - 1].length - 1,\n cellIndex: size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1,\n };\n }\n if (cellIndex === 0) {\n return {\n levelIndex,\n rowIndex: rowIndex - 1,\n cellIndex: size[levelIndex][rowIndex - 1] - 1,\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex - 1,\n };\n\n case 'right':\n if (\n rowIndex === size[levelIndex].length - 1 &&\n cellIndex === size[levelIndex][rowIndex] - 1\n ) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex: 0,\n };\n }\n if (cellIndex === size[levelIndex][rowIndex] - 1) {\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex: 0,\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex + 1,\n };\n\n default:\n return { levelIndex, rowIndex, cellIndex };\n }\n}\n\ninterface ShiftFocusInput {\n controlsRef: ControlsRef;\n direction: Direction;\n levelIndex: number;\n rowIndex: number;\n cellIndex: number;\n size: number[][];\n}\n\nfunction focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size,\n}: ShiftFocusInput) {\n const nextIndex = getNextIndex({ direction, size, rowIndex, cellIndex, levelIndex });\n\n if (!nextIndex) {\n return;\n }\n\n const controlToFocus =\n controlsRef.current?.[nextIndex.levelIndex]?.[nextIndex.rowIndex]?.[nextIndex.cellIndex];\n\n if (!controlToFocus) {\n return;\n }\n\n if (\n controlToFocus.disabled ||\n controlToFocus.getAttribute('data-hidden') ||\n controlToFocus.getAttribute('data-outside')\n ) {\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex: nextIndex.levelIndex,\n cellIndex: nextIndex.cellIndex,\n rowIndex: nextIndex.rowIndex,\n size,\n });\n } else {\n controlToFocus.focus();\n }\n}\n\nfunction getDirection(key: KeyboardEvent['key']): Direction {\n switch (key) {\n case 'ArrowDown':\n return 'down';\n case 'ArrowUp':\n return 'up';\n case 'ArrowRight':\n return 'right';\n case 'ArrowLeft':\n return 'left';\n default:\n return null!;\n }\n}\n\nfunction getControlsSize(controlsRef: ControlsRef) {\n return controlsRef.current?.map((column) => column.map((row) => row.length));\n}\n\ninterface HandleControlKeyDownInput {\n controlsRef: ControlsRef;\n levelIndex: number;\n rowIndex: number;\n cellIndex: number;\n event: React.KeyboardEvent<HTMLButtonElement>;\n}\n\nexport function handleControlKeyDown({\n controlsRef,\n levelIndex,\n rowIndex,\n cellIndex,\n event,\n}: HandleControlKeyDownInput) {\n const direction = getDirection(event.key);\n\n if (direction) {\n event.preventDefault();\n\n const size = getControlsSize(controlsRef)!;\n\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size,\n });\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle-control-key-down.mjs","names":[],"sources":["../../../src/utils/handle-control-key-down/handle-control-key-down.ts"],"sourcesContent":["import { RefObject } from 'react';\n\ntype ControlsRef = RefObject<HTMLButtonElement[][][]>;\ntype Direction = 'up' | 'down' | 'left' | 'right';\n\ntype NextIndexInput = Omit<ShiftFocusInput, 'controlsRef'>;\n\nfunction getNextIndex({ direction, levelIndex, rowIndex, cellIndex, size }: NextIndexInput) {\n switch (direction) {\n case 'up':\n if (levelIndex === 0 && rowIndex === 0) {\n return null;\n }\n if (rowIndex === 0) {\n return {\n levelIndex: levelIndex - 1,\n rowIndex:\n cellIndex <= size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1\n ? size[levelIndex - 1].length - 1\n : size[levelIndex - 1].length - 2,\n cellIndex,\n };\n }\n return {\n levelIndex,\n rowIndex: rowIndex - 1,\n cellIndex,\n };\n\n case 'down':\n if (rowIndex === size[levelIndex].length - 1) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex,\n };\n }\n if (\n rowIndex === size[levelIndex].length - 2 &&\n cellIndex >= size[levelIndex][size[levelIndex].length - 1]\n ) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex,\n };\n }\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex,\n };\n\n case 'left':\n if (levelIndex === 0 && rowIndex === 0 && cellIndex === 0) {\n return null;\n }\n if (rowIndex === 0 && cellIndex === 0) {\n return {\n levelIndex: levelIndex - 1,\n rowIndex: size[levelIndex - 1].length - 1,\n cellIndex: size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1,\n };\n }\n if (cellIndex === 0) {\n return {\n levelIndex,\n rowIndex: rowIndex - 1,\n cellIndex: size[levelIndex][rowIndex - 1] - 1,\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex - 1,\n };\n\n case 'right':\n if (\n rowIndex === size[levelIndex].length - 1 &&\n cellIndex === size[levelIndex][rowIndex] - 1\n ) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex: 0,\n };\n }\n if (cellIndex === size[levelIndex][rowIndex] - 1) {\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex: 0,\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex + 1,\n };\n\n default:\n return { levelIndex, rowIndex, cellIndex };\n }\n}\n\ninterface ShiftFocusInput {\n controlsRef: ControlsRef;\n direction: Direction;\n levelIndex: number;\n rowIndex: number;\n cellIndex: number;\n size: number[][];\n}\n\nfunction focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size,\n}: ShiftFocusInput) {\n const nextIndex = getNextIndex({ direction, size, rowIndex, cellIndex, levelIndex });\n\n if (!nextIndex) {\n return;\n }\n\n const controlToFocus =\n controlsRef.current?.[nextIndex.levelIndex]?.[nextIndex.rowIndex]?.[nextIndex.cellIndex];\n\n if (!controlToFocus) {\n return;\n }\n\n if (\n controlToFocus.disabled ||\n controlToFocus.getAttribute('data-hidden') ||\n controlToFocus.getAttribute('data-outside')\n ) {\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex: nextIndex.levelIndex,\n cellIndex: nextIndex.cellIndex,\n rowIndex: nextIndex.rowIndex,\n size,\n });\n } else {\n controlToFocus.focus();\n }\n}\n\nfunction getDirection(key: KeyboardEvent['key']): Direction {\n switch (key) {\n case 'ArrowDown':\n return 'down';\n case 'ArrowUp':\n return 'up';\n case 'ArrowRight':\n return 'right';\n case 'ArrowLeft':\n return 'left';\n default:\n return null!;\n }\n}\n\nfunction getControlsSize(controlsRef: ControlsRef) {\n return controlsRef.current?.map((column) => column.map((row) => row.length));\n}\n\ninterface HandleControlKeyDownInput {\n controlsRef: ControlsRef;\n levelIndex: number;\n rowIndex: number;\n cellIndex: number;\n event: React.KeyboardEvent<HTMLButtonElement>;\n}\n\nexport function handleControlKeyDown({\n controlsRef,\n levelIndex,\n rowIndex,\n cellIndex,\n event,\n}: HandleControlKeyDownInput) {\n const direction = getDirection(event.key);\n\n if (direction) {\n event.preventDefault();\n\n const size = getControlsSize(controlsRef)!;\n\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size,\n });\n }\n}\n"],"mappings":";;AAOA,SAAS,aAAa,EAAE,WAAW,YAAY,UAAU,WAAW,QAAwB;AAC1F,SAAQ,WAAR;EACE,KAAK;AACH,OAAI,eAAe,KAAK,aAAa,EACnC,QAAO;AAET,OAAI,aAAa,EACf,QAAO;IACL,YAAY,aAAa;IACzB,UACE,aAAa,KAAK,aAAa,GAAG,KAAK,aAAa,GAAG,SAAS,KAAK,IACjE,KAAK,aAAa,GAAG,SAAS,IAC9B,KAAK,aAAa,GAAG,SAAS;IACpC;IACD;AAEH,UAAO;IACL;IACA,UAAU,WAAW;IACrB;IACD;EAEH,KAAK;AACH,OAAI,aAAa,KAAK,YAAY,SAAS,EACzC,QAAO;IACL,YAAY,aAAa;IACzB,UAAU;IACV;IACD;AAEH,OACE,aAAa,KAAK,YAAY,SAAS,KACvC,aAAa,KAAK,YAAY,KAAK,YAAY,SAAS,GAExD,QAAO;IACL,YAAY,aAAa;IACzB,UAAU;IACV;IACD;AAEH,UAAO;IACL;IACA,UAAU,WAAW;IACrB;IACD;EAEH,KAAK;AACH,OAAI,eAAe,KAAK,aAAa,KAAK,cAAc,EACtD,QAAO;AAET,OAAI,aAAa,KAAK,cAAc,EAClC,QAAO;IACL,YAAY,aAAa;IACzB,UAAU,KAAK,aAAa,GAAG,SAAS;IACxC,WAAW,KAAK,aAAa,GAAG,KAAK,aAAa,GAAG,SAAS,KAAK;IACpE;AAEH,OAAI,cAAc,EAChB,QAAO;IACL;IACA,UAAU,WAAW;IACrB,WAAW,KAAK,YAAY,WAAW,KAAK;IAC7C;AAEH,UAAO;IACL;IACA;IACA,WAAW,YAAY;IACxB;EAEH,KAAK;AACH,OACE,aAAa,KAAK,YAAY,SAAS,KACvC,cAAc,KAAK,YAAY,YAAY,EAE3C,QAAO;IACL,YAAY,aAAa;IACzB,UAAU;IACV,WAAW;IACZ;AAEH,OAAI,cAAc,KAAK,YAAY,YAAY,EAC7C,QAAO;IACL;IACA,UAAU,WAAW;IACrB,WAAW;IACZ;AAEH,UAAO;IACL;IACA;IACA,WAAW,YAAY;IACxB;EAEH,QACE,QAAO;GAAE;GAAY;GAAU;GAAW;;;AAahD,SAAS,4BAA4B,EACnC,aACA,WACA,YACA,UACA,WACA,QACkB;CAClB,MAAM,YAAY,aAAa;EAAE;EAAW;EAAM;EAAU;EAAW;EAAY,CAAC;AAEpF,KAAI,CAAC,UACH;CAGF,MAAM,iBACJ,YAAY,UAAU,UAAU,cAAc,UAAU,YAAY,UAAU;AAEhF,KAAI,CAAC,eACH;AAGF,KACE,eAAe,YACf,eAAe,aAAa,cAAc,IAC1C,eAAe,aAAa,eAAe,CAE3C,6BAA4B;EAC1B;EACA;EACA,YAAY,UAAU;EACtB,WAAW,UAAU;EACrB,UAAU,UAAU;EACpB;EACD,CAAC;KAEF,gBAAe,OAAO;;AAI1B,SAAS,aAAa,KAAsC;AAC1D,SAAQ,KAAR;EACE,KAAK,YACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,aACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,gBAAgB,aAA0B;AACjD,QAAO,YAAY,SAAS,KAAK,WAAW,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC;;AAW9E,SAAgB,qBAAqB,EACnC,aACA,YACA,UACA,WACA,SAC4B;CAC5B,MAAM,YAAY,aAAa,MAAM,IAAI;AAEzC,KAAI,WAAW;AACb,QAAM,gBAAgB;AAItB,8BAA4B;GAC1B;GACA;GACA;GACA;GACA;GACA,MARW,gBAAgB,YAAY;GASxC,CAAC"}
@@ -1,12 +1,13 @@
1
- 'use client';
2
- import dayjs from 'dayjs';
3
-
1
+ "use client";
2
+ import dayjs from "dayjs";
3
+ //#region packages/@mantine/dates/src/utils/to-date-string/to-date-string.ts
4
4
  function toDateString(value) {
5
- return value == null || value === "" ? value : dayjs(value).format("YYYY-MM-DD");
5
+ return value == null || value === "" ? value : dayjs(value).format("YYYY-MM-DD");
6
6
  }
7
7
  function toDateTimeString(value) {
8
- return value == null || value === "" ? value : dayjs(value).format("YYYY-MM-DD HH:mm:ss");
8
+ return value == null || value === "" ? value : dayjs(value).format("YYYY-MM-DD HH:mm:ss");
9
9
  }
10
-
10
+ //#endregion
11
11
  export { toDateString, toDateTimeString };
12
- //# sourceMappingURL=to-date-string.mjs.map
12
+
13
+ //# sourceMappingURL=to-date-string.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"to-date-string.mjs","sources":["../../../src/utils/to-date-string/to-date-string.ts"],"sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\nimport { DateStringValue, DateTimeStringValue } from '../../types';\n\n// Helper type to determine the return type based on T and the target main type\ntype ExactOptionalReturn<T, MainType> = T extends undefined\n ? undefined\n : T extends null\n ? null\n : MainType;\n\nexport function toDateString<T extends string | number | Date | Dayjs | undefined | null>(\n value: T\n): ExactOptionalReturn<T, DateStringValue> {\n return (\n value == null || value === '' ? value : dayjs(value).format('YYYY-MM-DD')\n ) as ExactOptionalReturn<T, DateStringValue>;\n}\n\nexport function toDateTimeString<T extends string | number | Date | Dayjs | undefined | null>(\n value: T\n): ExactOptionalReturn<T, DateTimeStringValue> {\n return (\n value == null || value === '' ? value : dayjs(value).format('YYYY-MM-DD HH:mm:ss')\n ) as ExactOptionalReturn<T, DateTimeStringValue>;\n}\n"],"names":[],"mappings":";;;AAUO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACyC,CAAA;AACzC,CAAA,CAAA,OACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,QAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAK,QAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,YAAY,CAAA,CAAA;AAE5E,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC6C,CAAA;AAC7C,CAAA,CAAA,OACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,QAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAK,QAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,qBAAqB,CAAA,CAAA;AAErF,CAAA;;"}
1
+ {"version":3,"file":"to-date-string.mjs","names":[],"sources":["../../../src/utils/to-date-string/to-date-string.ts"],"sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\nimport { DateStringValue, DateTimeStringValue } from '../../types';\n\n// Helper type to determine the return type based on T and the target main type\ntype ExactOptionalReturn<T, MainType> = T extends undefined\n ? undefined\n : T extends null\n ? null\n : MainType;\n\nexport function toDateString<T extends string | number | Date | Dayjs | undefined | null>(\n value: T\n): ExactOptionalReturn<T, DateStringValue> {\n return (\n value == null || value === '' ? value : dayjs(value).format('YYYY-MM-DD')\n ) as ExactOptionalReturn<T, DateStringValue>;\n}\n\nexport function toDateTimeString<T extends string | number | Date | Dayjs | undefined | null>(\n value: T\n): ExactOptionalReturn<T, DateTimeStringValue> {\n return (\n value == null || value === '' ? value : dayjs(value).format('YYYY-MM-DD HH:mm:ss')\n ) as ExactOptionalReturn<T, DateTimeStringValue>;\n}\n"],"mappings":";;;AAUA,SAAgB,aACd,OACyC;AACzC,QACE,SAAS,QAAQ,UAAU,KAAK,QAAQ,MAAM,MAAM,CAAC,OAAO,aAAa;;AAI7E,SAAgB,iBACd,OAC6C;AAC7C,QACE,SAAS,QAAQ,UAAU,KAAK,QAAQ,MAAM,MAAM,CAAC,OAAO,sBAAsB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantine/dates",
3
- "version": "9.0.0-alpha.5",
3
+ "version": "9.0.0-alpha.7",
4
4
  "description": "Calendars, date and time pickers based on Mantine components",
5
5
  "homepage": "https://mantine.dev/dates/getting-started/",
6
6
  "license": "MIT",
@@ -45,8 +45,8 @@
45
45
  "directory": "packages/@mantine/dates"
46
46
  },
47
47
  "peerDependencies": {
48
- "@mantine/core": "9.0.0-alpha.5",
49
- "@mantine/hooks": "9.0.0-alpha.5",
48
+ "@mantine/core": "9.0.0-alpha.7",
49
+ "@mantine/hooks": "9.0.0-alpha.7",
50
50
  "dayjs": ">=1.0.0",
51
51
  "react": "^19.2.0",
52
52
  "react-dom": "^19.2.0"
@@ -1,7 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- var classes = {"calendarHeader":"m_730a79ed","calendarHeaderLevel":"m_f6645d97","calendarHeaderControl":"m_2351eeb0","calendarHeaderControlIcon":"m_367dc749"};
5
-
6
- module.exports = classes;
7
- //# sourceMappingURL=CalendarHeader.module.css.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CalendarHeader.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,7 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- var classes = {"datePickerRoot":"m_765a40cf","presetsList":"m_d6a681e1","presetButton":"m_acd30b22"};
5
-
6
- module.exports = classes;
7
- //# sourceMappingURL=DatePicker.module.css.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DatePicker.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,7 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- var classes = {"timeWrapper":"m_208d2562","timeInput":"m_62ee059"};
5
-
6
- module.exports = classes;
7
- //# sourceMappingURL=DateTimePicker.module.css.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DateTimePicker.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,7 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- var classes = {"day":"m_396ce5cb"};
5
-
6
- module.exports = classes;
7
- //# sourceMappingURL=Day.module.css.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Day.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,345 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var dayjs = require('dayjs');
6
- var react = require('react');
7
- var core = require('@mantine/core');
8
- var hooks = require('@mantine/hooks');
9
- var useUncontrolledDates = require('../../hooks/use-uncontrolled-dates/use-uncontrolled-dates.cjs');
10
- require('../DatesProvider/DatesProvider.cjs');
11
- var useDatesContext = require('../DatesProvider/use-dates-context.cjs');
12
- var assignTime = require('../../utils/assign-time/assign-time.cjs');
13
- var getDefaultClampedDate = require('../../utils/get-default-clamped-date/get-default-clamped-date.cjs');
14
- var clampDate = require('../../utils/clamp-date/clamp-date.cjs');
15
- require('../Calendar/Calendar.cjs');
16
- var pickCalendarLevelsProps = require('../Calendar/pick-calendar-levels-props/pick-calendar-levels-props.cjs');
17
- var DatePicker = require('../DatePicker/DatePicker.cjs');
18
- var getMinMaxTime = require('../DateTimePicker/get-min-max-time/get-min-max-time.cjs');
19
- var TimePicker = require('../TimePicker/TimePicker.cjs');
20
- var InlineDateTimePicker_module = require('./InlineDateTimePicker.module.css.cjs');
21
-
22
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
23
-
24
- var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
25
-
26
- const defaultProps = {
27
- type: "default",
28
- size: "sm"
29
- };
30
- const InlineDateTimePicker = core.genericFactory((_props) => {
31
- const props = core.useProps("InlineDateTimePicker", defaultProps, _props);
32
- const {
33
- value,
34
- defaultValue,
35
- onChange,
36
- valueFormat,
37
- locale,
38
- classNames,
39
- styles,
40
- unstyled,
41
- timePickerProps,
42
- endTimePickerProps,
43
- submitButtonProps,
44
- withSeconds,
45
- level,
46
- defaultLevel,
47
- size,
48
- variant,
49
- vars,
50
- minDate,
51
- maxDate,
52
- defaultDate,
53
- defaultTimeValue,
54
- presets,
55
- attributes,
56
- onSubmit,
57
- labelSeparator,
58
- type,
59
- className,
60
- style,
61
- __stopPropagation,
62
- __staticSelector,
63
- __onEnter,
64
- __onPresetSelect,
65
- fullWidth,
66
- ...rest
67
- } = props;
68
- const _staticSelector = __staticSelector || "InlineDateTimePicker";
69
- const getStyles = core.useStyles({
70
- name: _staticSelector,
71
- classes: InlineDateTimePicker_module,
72
- props,
73
- classNames,
74
- styles,
75
- unstyled,
76
- attributes,
77
- vars
78
- });
79
- const { resolvedClassNames, resolvedStyles } = core.useResolvedStylesApi({
80
- classNames,
81
- styles,
82
- props
83
- });
84
- const ctx = useDatesContext.useDatesContext();
85
- const _valueFormat = valueFormat || (withSeconds ? "DD/MM/YYYY HH:mm:ss" : "DD/MM/YYYY HH:mm");
86
- const _labelSeparator = ctx.getLabelSeparator(labelSeparator);
87
- const isRange = type === "range";
88
- const startTimePickerRef = react.useRef(null);
89
- const startTimePickerRefMerged = hooks.useMergedRef(startTimePickerRef, timePickerProps?.hoursRef);
90
- const endTimePickerRef = react.useRef(null);
91
- const endTimePickerRefMerged = hooks.useMergedRef(endTimePickerRef, endTimePickerProps?.hoursRef);
92
- const {
93
- calendarProps: { allowSingleDateInRange, ...calendarProps },
94
- others
95
- } = pickCalendarLevelsProps.pickCalendarProps(rest);
96
- const [_value, setValue] = useUncontrolledDates.useUncontrolledDates({
97
- type,
98
- value,
99
- defaultValue,
100
- onChange,
101
- withTime: true
102
- });
103
- const formatTime = (dateValue) => dateValue ? dayjs__default.default(dateValue).format(withSeconds ? "HH:mm:ss" : "HH:mm") : "";
104
- const getInitialStartTime = () => {
105
- if (defaultTimeValue) {
106
- return defaultTimeValue;
107
- }
108
- if (isRange) {
109
- return Array.isArray(_value) ? formatTime(_value[0]) : "";
110
- }
111
- return formatTime(_value);
112
- };
113
- const getInitialEndTime = () => {
114
- if (defaultTimeValue) {
115
- return defaultTimeValue;
116
- }
117
- return isRange && Array.isArray(_value) ? formatTime(_value[1]) : "";
118
- };
119
- const [startTimeValue, setStartTimeValue] = react.useState(getInitialStartTime);
120
- const [endTimeValue, setEndTimeValue] = react.useState(getInitialEndTime);
121
- const [currentLevel, setCurrentLevel] = react.useState(level || defaultLevel || "month");
122
- const _defaultDate = isRange ? (Array.isArray(_value) ? _value[0] : null) || defaultDate : _value || defaultDate;
123
- const handleDefaultDateChange = (date) => {
124
- if (date) {
125
- setValue(
126
- assignTime.assignTime(clampDate.clampDate(minDate, maxDate, date), startTimeValue || defaultTimeValue || "")
127
- );
128
- }
129
- startTimePickerRef.current?.focus();
130
- };
131
- const handleRangeDateChange = (dates) => {
132
- const [start, end] = dates;
133
- const newStart = start ? assignTime.assignTime(clampDate.clampDate(minDate, maxDate, start), startTimeValue || defaultTimeValue || "") : null;
134
- const newEnd = end ? assignTime.assignTime(clampDate.clampDate(minDate, maxDate, end), endTimeValue || defaultTimeValue || "") : null;
135
- setValue([newStart, newEnd]);
136
- if (start && end) {
137
- startTimePickerRef.current?.focus();
138
- }
139
- };
140
- const handleDateChange = (date) => {
141
- if (isRange) {
142
- handleRangeDateChange(date);
143
- } else {
144
- handleDefaultDateChange(date);
145
- }
146
- };
147
- const handleStartTimeChange = (timeString) => {
148
- timePickerProps?.onChange?.(timeString);
149
- setStartTimeValue(timeString);
150
- if (timeString) {
151
- if (isRange && Array.isArray(_value)) {
152
- if (_value[0]) {
153
- const newStart = assignTime.assignTime(_value[0], timeString);
154
- setValue([newStart, _value[1]]);
155
- }
156
- } else {
157
- setValue(assignTime.assignTime(_value, timeString));
158
- }
159
- }
160
- };
161
- const handleEndTimeChange = (timeString) => {
162
- endTimePickerProps?.onChange?.(timeString);
163
- setEndTimeValue(timeString);
164
- if (timeString && isRange && Array.isArray(_value) && _value[1]) {
165
- const newEnd = assignTime.assignTime(_value[1], timeString);
166
- setValue([_value[0], newEnd]);
167
- }
168
- };
169
- const handleTimeInputKeyDown = (event) => {
170
- if (event.key === "Enter") {
171
- event.preventDefault();
172
- __onEnter?.();
173
- }
174
- };
175
- const getFormattedRange = () => {
176
- if (!isRange || !Array.isArray(_value)) {
177
- return "";
178
- }
179
- const formatDate = (v) => v ? dayjs__default.default(v).locale(ctx.getLocale(locale)).format(_valueFormat) : "";
180
- const start = formatDate(_value[0]);
181
- const end = formatDate(_value[1]);
182
- if (start && end) {
183
- return `${start} ${_labelSeparator} ${end}`;
184
- }
185
- if (start) {
186
- return `${start} ${_labelSeparator} ...`;
187
- }
188
- return "";
189
- };
190
- hooks.useDidUpdate(() => {
191
- if (isRange && Array.isArray(_value)) {
192
- setStartTimeValue(formatTime(_value[0]));
193
- setEndTimeValue(formatTime(_value[1]));
194
- } else {
195
- setStartTimeValue(formatTime(_value));
196
- }
197
- }, [_value]);
198
- const startMinTime = isRange ? getMinMaxTime.getMinTime({ minDate, value: Array.isArray(_value) ? _value[0] : null }) : getMinMaxTime.getMinTime({ minDate, value: _value });
199
- const startMaxTime = isRange ? getMinMaxTime.getMaxTime({ maxDate, value: Array.isArray(_value) ? _value[0] : null }) : getMinMaxTime.getMaxTime({ maxDate, value: _value });
200
- const endMinTime = isRange ? getMinMaxTime.getMinTime({ minDate, value: Array.isArray(_value) ? _value[1] : null }) : void 0;
201
- const endMaxTime = isRange ? getMinMaxTime.getMaxTime({ maxDate, value: Array.isArray(_value) ? _value[1] : null }) : void 0;
202
- return /* @__PURE__ */ jsxRuntime.jsxs(core.Box, { ...getStyles("root", { className, style }), ...others, ref: props.ref, children: [
203
- /* @__PURE__ */ jsxRuntime.jsx(
204
- DatePicker.DatePicker,
205
- {
206
- fullWidth: fullWidth ?? true,
207
- ...calendarProps,
208
- maxDate,
209
- minDate,
210
- size,
211
- variant,
212
- type,
213
- value: _value,
214
- defaultDate: _defaultDate || getDefaultClampedDate.getDefaultClampedDate({ maxDate, minDate }),
215
- onChange: handleDateChange,
216
- locale,
217
- classNames: resolvedClassNames,
218
- styles: resolvedStyles,
219
- unstyled,
220
- __staticSelector: _staticSelector,
221
- __stopPropagation,
222
- level,
223
- defaultLevel,
224
- onLevelChange: (_level) => {
225
- setCurrentLevel(_level);
226
- calendarProps.onLevelChange?.(_level);
227
- },
228
- presets,
229
- allowSingleDateInRange,
230
- __onPresetSelect,
231
- attributes
232
- }
233
- ),
234
- currentLevel === "month" && !isRange && /* @__PURE__ */ jsxRuntime.jsxs("div", { ...getStyles("timeWrapper"), children: [
235
- /* @__PURE__ */ jsxRuntime.jsx(
236
- TimePicker.TimePicker,
237
- {
238
- value: startTimeValue,
239
- withSeconds,
240
- unstyled,
241
- min: startMinTime,
242
- max: startMaxTime,
243
- ...timePickerProps,
244
- ...getStyles("timeInput", {
245
- className: timePickerProps?.className,
246
- style: timePickerProps?.style
247
- }),
248
- onChange: handleStartTimeChange,
249
- onKeyDown: handleTimeInputKeyDown,
250
- size,
251
- "data-mantine-stop-propagation": __stopPropagation || void 0,
252
- hoursRef: startTimePickerRefMerged
253
- }
254
- ),
255
- /* @__PURE__ */ jsxRuntime.jsx(
256
- core.ActionIcon,
257
- {
258
- variant: "default",
259
- size: `input-${size || "sm"}`,
260
- ...getStyles("submitButton", {
261
- className: submitButtonProps?.className,
262
- style: submitButtonProps?.style
263
- }),
264
- unstyled,
265
- "data-mantine-stop-propagation": __stopPropagation || void 0,
266
- children: /* @__PURE__ */ jsxRuntime.jsx(core.CheckIcon, { size: "30%" }),
267
- ...submitButtonProps,
268
- onClick: (event) => {
269
- submitButtonProps?.onClick?.(event);
270
- onSubmit?.();
271
- }
272
- }
273
- )
274
- ] }),
275
- currentLevel === "month" && isRange && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
276
- /* @__PURE__ */ jsxRuntime.jsx(core.Text, { ...getStyles("rangeInfo"), children: getFormattedRange() }),
277
- /* @__PURE__ */ jsxRuntime.jsxs("div", { ...getStyles("rangeTimeWrapper"), children: [
278
- /* @__PURE__ */ jsxRuntime.jsx(
279
- TimePicker.TimePicker,
280
- {
281
- value: startTimeValue,
282
- withSeconds,
283
- unstyled,
284
- min: startMinTime,
285
- max: startMaxTime,
286
- ...timePickerProps,
287
- ...getStyles("rangeTimeInput", {
288
- className: timePickerProps?.className,
289
- style: timePickerProps?.style
290
- }),
291
- onChange: handleStartTimeChange,
292
- onKeyDown: handleTimeInputKeyDown,
293
- size,
294
- "data-mantine-stop-propagation": __stopPropagation || void 0,
295
- hoursRef: startTimePickerRefMerged
296
- }
297
- ),
298
- /* @__PURE__ */ jsxRuntime.jsx(
299
- TimePicker.TimePicker,
300
- {
301
- value: endTimeValue,
302
- withSeconds,
303
- unstyled,
304
- min: endMinTime,
305
- max: endMaxTime,
306
- ...endTimePickerProps,
307
- ...getStyles("rangeTimeInput", {
308
- className: endTimePickerProps?.className,
309
- style: endTimePickerProps?.style
310
- }),
311
- onChange: handleEndTimeChange,
312
- onKeyDown: handleTimeInputKeyDown,
313
- size,
314
- "data-mantine-stop-propagation": __stopPropagation || void 0,
315
- hoursRef: endTimePickerRefMerged
316
- }
317
- ),
318
- /* @__PURE__ */ jsxRuntime.jsx(
319
- core.ActionIcon,
320
- {
321
- variant: "default",
322
- size: `input-${size || "sm"}`,
323
- ...getStyles("submitButton", {
324
- className: submitButtonProps?.className,
325
- style: submitButtonProps?.style
326
- }),
327
- unstyled,
328
- "data-mantine-stop-propagation": __stopPropagation || void 0,
329
- children: /* @__PURE__ */ jsxRuntime.jsx(core.CheckIcon, { size: "30%" }),
330
- ...submitButtonProps,
331
- onClick: (event) => {
332
- submitButtonProps?.onClick?.(event);
333
- onSubmit?.();
334
- }
335
- }
336
- )
337
- ] })
338
- ] })
339
- ] });
340
- });
341
- InlineDateTimePicker.classes = { ...InlineDateTimePicker_module, ...DatePicker.DatePicker.classes };
342
- InlineDateTimePicker.displayName = "@mantine/dates/InlineDateTimePicker";
343
-
344
- exports.InlineDateTimePicker = InlineDateTimePicker;
345
- //# sourceMappingURL=InlineDateTimePicker.cjs.map