@mantine/dates 8.3.15 → 9.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/cjs/components/Calendar/Calendar.cjs +119 -112
  2. package/cjs/components/Calendar/Calendar.cjs.map +1 -1
  3. package/cjs/components/CalendarHeader/CalendarHeader.cjs +4 -2
  4. package/cjs/components/CalendarHeader/CalendarHeader.cjs.map +1 -1
  5. package/cjs/components/DateInput/DateInput.cjs +3 -2
  6. package/cjs/components/DateInput/DateInput.cjs.map +1 -1
  7. package/cjs/components/DatePicker/DatePicker.cjs +4 -3
  8. package/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  9. package/cjs/components/DatePickerInput/DatePickerInput.cjs +1 -2
  10. package/cjs/components/DatePickerInput/DatePickerInput.cjs.map +1 -1
  11. package/cjs/components/DateTimePicker/DateTimePicker.cjs +1 -2
  12. package/cjs/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  13. package/cjs/components/DatesProvider/DatesProvider.cjs +1 -1
  14. package/cjs/components/DatesProvider/DatesProvider.cjs.map +1 -1
  15. package/cjs/components/DatesProvider/use-dates-context.cjs +1 -1
  16. package/cjs/components/DatesProvider/use-dates-context.cjs.map +1 -1
  17. package/cjs/components/Day/Day.cjs +4 -2
  18. package/cjs/components/Day/Day.cjs.map +1 -1
  19. package/cjs/components/DecadeLevel/DecadeLevel.cjs +5 -2
  20. package/cjs/components/DecadeLevel/DecadeLevel.cjs.map +1 -1
  21. package/cjs/components/DecadeLevelGroup/DecadeLevelGroup.cjs +4 -2
  22. package/cjs/components/DecadeLevelGroup/DecadeLevelGroup.cjs.map +1 -1
  23. package/cjs/components/LevelsGroup/LevelsGroup.cjs +3 -2
  24. package/cjs/components/LevelsGroup/LevelsGroup.cjs.map +1 -1
  25. package/cjs/components/MaskedDateInput/MaskedDateInput.cjs +632 -0
  26. package/cjs/components/MaskedDateInput/MaskedDateInput.cjs.map +1 -0
  27. package/cjs/components/MaskedDateInput/MaskedDateInput.context.cjs +12 -0
  28. package/cjs/components/MaskedDateInput/MaskedDateInput.context.cjs.map +1 -0
  29. package/cjs/components/MaskedDateInput/MaskedDateInput.module.css.cjs +7 -0
  30. package/cjs/components/MaskedDateInput/MaskedDateInput.module.css.cjs.map +1 -0
  31. package/cjs/components/MaskedDateInput/use-masked-date-input.cjs +447 -0
  32. package/cjs/components/MaskedDateInput/use-masked-date-input.cjs.map +1 -0
  33. package/cjs/components/MiniCalendar/MiniCalendar.cjs +6 -3
  34. package/cjs/components/MiniCalendar/MiniCalendar.cjs.map +1 -1
  35. package/cjs/components/Month/Month.cjs +33 -18
  36. package/cjs/components/Month/Month.cjs.map +1 -1
  37. package/cjs/components/MonthLevel/MonthLevel.cjs +5 -2
  38. package/cjs/components/MonthLevel/MonthLevel.cjs.map +1 -1
  39. package/cjs/components/MonthLevelGroup/MonthLevelGroup.cjs +4 -2
  40. package/cjs/components/MonthLevelGroup/MonthLevelGroup.cjs.map +1 -1
  41. package/cjs/components/MonthPicker/MonthPicker.cjs +1 -2
  42. package/cjs/components/MonthPicker/MonthPicker.cjs.map +1 -1
  43. package/cjs/components/MonthPickerInput/MonthPickerInput.cjs +1 -2
  44. package/cjs/components/MonthPickerInput/MonthPickerInput.cjs.map +1 -1
  45. package/cjs/components/MonthsList/MonthsList.cjs +14 -2
  46. package/cjs/components/MonthsList/MonthsList.cjs.map +1 -1
  47. package/cjs/components/PickerControl/PickerControl.cjs +4 -2
  48. package/cjs/components/PickerControl/PickerControl.cjs.map +1 -1
  49. package/cjs/components/PickerInputBase/PickerInputBase.cjs +3 -2
  50. package/cjs/components/PickerInputBase/PickerInputBase.cjs.map +1 -1
  51. package/cjs/components/SpinInput/SpinInput.cjs +97 -101
  52. package/cjs/components/SpinInput/SpinInput.cjs.map +1 -1
  53. package/cjs/components/TimeGrid/TimeGrid.cjs +3 -2
  54. package/cjs/components/TimeGrid/TimeGrid.cjs.map +1 -1
  55. package/cjs/components/TimeGrid/TimeGridControl.cjs.map +1 -1
  56. package/cjs/components/TimeInput/TimeInput.cjs +1 -2
  57. package/cjs/components/TimeInput/TimeInput.cjs.map +1 -1
  58. package/cjs/components/TimePicker/AmPmInput/AmPmInput.cjs +79 -86
  59. package/cjs/components/TimePicker/AmPmInput/AmPmInput.cjs.map +1 -1
  60. package/cjs/components/TimePicker/TimePicker.cjs +8 -3
  61. package/cjs/components/TimePicker/TimePicker.cjs.map +1 -1
  62. package/cjs/components/TimeValue/TimeValue.cjs.map +1 -1
  63. package/cjs/components/WeekdaysRow/WeekdaysRow.cjs +3 -2
  64. package/cjs/components/WeekdaysRow/WeekdaysRow.cjs.map +1 -1
  65. package/cjs/components/YearLevel/YearLevel.cjs +5 -2
  66. package/cjs/components/YearLevel/YearLevel.cjs.map +1 -1
  67. package/cjs/components/YearLevelGroup/YearLevelGroup.cjs +4 -2
  68. package/cjs/components/YearLevelGroup/YearLevelGroup.cjs.map +1 -1
  69. package/cjs/components/YearPicker/YearPicker.cjs +1 -2
  70. package/cjs/components/YearPicker/YearPicker.cjs.map +1 -1
  71. package/cjs/components/YearPickerInput/YearPickerInput.cjs +1 -2
  72. package/cjs/components/YearPickerInput/YearPickerInput.cjs.map +1 -1
  73. package/cjs/components/YearsList/YearsList.cjs +14 -2
  74. package/cjs/components/YearsList/YearsList.cjs.map +1 -1
  75. package/cjs/hooks/use-dates-state/use-dates-state.cjs.map +1 -1
  76. package/esm/components/Calendar/Calendar.mjs +120 -113
  77. package/esm/components/Calendar/Calendar.mjs.map +1 -1
  78. package/esm/components/CalendarHeader/CalendarHeader.mjs +4 -2
  79. package/esm/components/CalendarHeader/CalendarHeader.mjs.map +1 -1
  80. package/esm/components/DateInput/DateInput.mjs +3 -2
  81. package/esm/components/DateInput/DateInput.mjs.map +1 -1
  82. package/esm/components/DatePicker/DatePicker.mjs +4 -3
  83. package/esm/components/DatePicker/DatePicker.mjs.map +1 -1
  84. package/esm/components/DatePickerInput/DatePickerInput.mjs +1 -2
  85. package/esm/components/DatePickerInput/DatePickerInput.mjs.map +1 -1
  86. package/esm/components/DateTimePicker/DateTimePicker.mjs +1 -2
  87. package/esm/components/DateTimePicker/DateTimePicker.mjs.map +1 -1
  88. package/esm/components/DatesProvider/DatesProvider.mjs +1 -1
  89. package/esm/components/DatesProvider/DatesProvider.mjs.map +1 -1
  90. package/esm/components/DatesProvider/use-dates-context.mjs +2 -2
  91. package/esm/components/DatesProvider/use-dates-context.mjs.map +1 -1
  92. package/esm/components/Day/Day.mjs +4 -2
  93. package/esm/components/Day/Day.mjs.map +1 -1
  94. package/esm/components/DecadeLevel/DecadeLevel.mjs +5 -2
  95. package/esm/components/DecadeLevel/DecadeLevel.mjs.map +1 -1
  96. package/esm/components/DecadeLevelGroup/DecadeLevelGroup.mjs +4 -2
  97. package/esm/components/DecadeLevelGroup/DecadeLevelGroup.mjs.map +1 -1
  98. package/esm/components/LevelsGroup/LevelsGroup.mjs +3 -2
  99. package/esm/components/LevelsGroup/LevelsGroup.mjs.map +1 -1
  100. package/esm/components/MaskedDateInput/MaskedDateInput.context.mjs +9 -0
  101. package/esm/components/MaskedDateInput/MaskedDateInput.context.mjs.map +1 -0
  102. package/esm/components/MaskedDateInput/MaskedDateInput.mjs +626 -0
  103. package/esm/components/MaskedDateInput/MaskedDateInput.mjs.map +1 -0
  104. package/esm/components/MaskedDateInput/MaskedDateInput.module.css.mjs +5 -0
  105. package/esm/components/MaskedDateInput/MaskedDateInput.module.css.mjs.map +1 -0
  106. package/esm/components/MaskedDateInput/use-masked-date-input.mjs +441 -0
  107. package/esm/components/MaskedDateInput/use-masked-date-input.mjs.map +1 -0
  108. package/esm/components/MiniCalendar/MiniCalendar.mjs +6 -3
  109. package/esm/components/MiniCalendar/MiniCalendar.mjs.map +1 -1
  110. package/esm/components/Month/Month.mjs +33 -18
  111. package/esm/components/Month/Month.mjs.map +1 -1
  112. package/esm/components/MonthLevel/MonthLevel.mjs +5 -2
  113. package/esm/components/MonthLevel/MonthLevel.mjs.map +1 -1
  114. package/esm/components/MonthLevelGroup/MonthLevelGroup.mjs +4 -2
  115. package/esm/components/MonthLevelGroup/MonthLevelGroup.mjs.map +1 -1
  116. package/esm/components/MonthPicker/MonthPicker.mjs +1 -2
  117. package/esm/components/MonthPicker/MonthPicker.mjs.map +1 -1
  118. package/esm/components/MonthPickerInput/MonthPickerInput.mjs +1 -2
  119. package/esm/components/MonthPickerInput/MonthPickerInput.mjs.map +1 -1
  120. package/esm/components/MonthsList/MonthsList.mjs +14 -2
  121. package/esm/components/MonthsList/MonthsList.mjs.map +1 -1
  122. package/esm/components/PickerControl/PickerControl.mjs +4 -2
  123. package/esm/components/PickerControl/PickerControl.mjs.map +1 -1
  124. package/esm/components/PickerInputBase/PickerInputBase.mjs +3 -2
  125. package/esm/components/PickerInputBase/PickerInputBase.mjs.map +1 -1
  126. package/esm/components/SpinInput/SpinInput.mjs +97 -101
  127. package/esm/components/SpinInput/SpinInput.mjs.map +1 -1
  128. package/esm/components/TimeGrid/TimeGrid.mjs +3 -2
  129. package/esm/components/TimeGrid/TimeGrid.mjs.map +1 -1
  130. package/esm/components/TimeGrid/TimeGridControl.mjs.map +1 -1
  131. package/esm/components/TimeInput/TimeInput.mjs +1 -2
  132. package/esm/components/TimeInput/TimeInput.mjs.map +1 -1
  133. package/esm/components/TimePicker/AmPmInput/AmPmInput.mjs +79 -86
  134. package/esm/components/TimePicker/AmPmInput/AmPmInput.mjs.map +1 -1
  135. package/esm/components/TimePicker/TimePicker.mjs +8 -3
  136. package/esm/components/TimePicker/TimePicker.mjs.map +1 -1
  137. package/esm/components/TimeValue/TimeValue.mjs.map +1 -1
  138. package/esm/components/WeekdaysRow/WeekdaysRow.mjs +3 -2
  139. package/esm/components/WeekdaysRow/WeekdaysRow.mjs.map +1 -1
  140. package/esm/components/YearLevel/YearLevel.mjs +5 -2
  141. package/esm/components/YearLevel/YearLevel.mjs.map +1 -1
  142. package/esm/components/YearLevelGroup/YearLevelGroup.mjs +4 -2
  143. package/esm/components/YearLevelGroup/YearLevelGroup.mjs.map +1 -1
  144. package/esm/components/YearPicker/YearPicker.mjs +1 -2
  145. package/esm/components/YearPicker/YearPicker.mjs.map +1 -1
  146. package/esm/components/YearPickerInput/YearPickerInput.mjs +1 -2
  147. package/esm/components/YearPickerInput/YearPickerInput.mjs.map +1 -1
  148. package/esm/components/YearsList/YearsList.mjs +14 -2
  149. package/esm/components/YearsList/YearsList.mjs.map +1 -1
  150. package/esm/hooks/use-dates-state/use-dates-state.mjs.map +1 -1
  151. package/lib/components/Calendar/Calendar.d.ts +5 -3
  152. package/lib/components/Calendar/index.d.ts +10 -1
  153. package/lib/components/CalendarHeader/CalendarHeader.d.ts +6 -4
  154. package/lib/components/CalendarHeader/index.d.ts +9 -1
  155. package/lib/components/DateInput/DateInput.d.ts +6 -4
  156. package/lib/components/DateInput/index.d.ts +7 -1
  157. package/lib/components/DatePicker/DatePicker.d.ts +2 -1
  158. package/lib/components/DatePicker/index.d.ts +11 -1
  159. package/lib/components/DatePickerInput/DatePickerInput.d.ts +2 -2
  160. package/lib/components/DatePickerInput/index.d.ts +7 -1
  161. package/lib/components/DateTimePicker/DateTimePicker.d.ts +5 -5
  162. package/lib/components/DateTimePicker/index.d.ts +7 -1
  163. package/lib/components/DatesProvider/index.d.ts +6 -1
  164. package/lib/components/Day/Day.d.ts +11 -9
  165. package/lib/components/Day/index.d.ts +8 -1
  166. package/lib/components/DecadeLevel/DecadeLevel.d.ts +3 -1
  167. package/lib/components/DecadeLevelGroup/DecadeLevelGroup.d.ts +2 -0
  168. package/lib/components/LevelsGroup/LevelsGroup.d.ts +2 -0
  169. package/lib/components/MaskedDateInput/MaskedDateInput.context.d.ts +7 -0
  170. package/lib/components/MaskedDateInput/MaskedDateInput.d.ts +123 -0
  171. package/lib/components/MaskedDateInput/MaskedDateInput.types.d.ts +19 -0
  172. package/lib/components/MaskedDateInput/index.d.ts +12 -0
  173. package/lib/components/MaskedDateInput/use-masked-date-input.d.ts +56 -0
  174. package/lib/components/MiniCalendar/MiniCalendar.d.ts +3 -3
  175. package/lib/components/MiniCalendar/index.d.ts +8 -1
  176. package/lib/components/Month/Month.d.ts +15 -8
  177. package/lib/components/Month/index.d.ts +8 -1
  178. package/lib/components/MonthLevel/MonthLevel.d.ts +3 -1
  179. package/lib/components/MonthLevelGroup/MonthLevelGroup.d.ts +2 -0
  180. package/lib/components/MonthPicker/MonthPicker.d.ts +2 -2
  181. package/lib/components/MonthPicker/index.d.ts +8 -1
  182. package/lib/components/MonthPickerInput/MonthPickerInput.d.ts +2 -2
  183. package/lib/components/MonthPickerInput/index.d.ts +8 -1
  184. package/lib/components/MonthsList/MonthsList.d.ts +3 -1
  185. package/lib/components/PickerControl/PickerControl.d.ts +2 -0
  186. package/lib/components/PickerInputBase/PickerInputBase.d.ts +8 -6
  187. package/lib/components/SpinInput/SpinInput.d.ts +5 -2
  188. package/lib/components/TimeGrid/TimeGrid.context.d.ts +1 -4
  189. package/lib/components/TimeGrid/TimeGrid.d.ts +8 -8
  190. package/lib/components/TimeGrid/TimeGridControl.d.ts +1 -1
  191. package/lib/components/TimeGrid/index.d.ts +8 -1
  192. package/lib/components/TimeInput/TimeInput.d.ts +1 -1
  193. package/lib/components/TimeInput/index.d.ts +6 -1
  194. package/lib/components/TimePicker/AmPmInput/AmPmInput.d.ts +5 -3
  195. package/lib/components/TimePicker/TimePicker.context.d.ts +1 -4
  196. package/lib/components/TimePicker/TimePicker.d.ts +20 -18
  197. package/lib/components/TimePicker/index.d.ts +13 -2
  198. package/lib/components/TimeValue/TimeValue.d.ts +6 -3
  199. package/lib/components/WeekdaysRow/WeekdaysRow.d.ts +3 -3
  200. package/lib/components/YearLevel/YearLevel.d.ts +3 -1
  201. package/lib/components/YearLevelGroup/YearLevelGroup.d.ts +2 -0
  202. package/lib/components/YearPicker/YearPicker.d.ts +1 -1
  203. package/lib/components/YearPicker/index.d.ts +9 -1
  204. package/lib/components/YearPickerInput/YearPickerInput.d.ts +2 -2
  205. package/lib/components/YearPickerInput/index.d.ts +8 -1
  206. package/lib/components/YearsList/YearsList.d.ts +4 -2
  207. package/package.json +5 -5
  208. package/styles.css +42 -6
  209. package/styles.layer.css +42 -6
@@ -0,0 +1,632 @@
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 Calendar = require('../Calendar/Calendar.cjs');
10
+ var pickCalendarLevelsProps = require('../Calendar/pick-calendar-levels-props/pick-calendar-levels-props.cjs');
11
+ require('../DatesProvider/DatesProvider.cjs');
12
+ var useDatesContext = require('../DatesProvider/use-dates-context.cjs');
13
+ var isSameMonth = require('../Month/is-same-month/is-same-month.cjs');
14
+ require('../Month/Month.cjs');
15
+ var SpinInput = require('../SpinInput/SpinInput.cjs');
16
+ var MaskedDateInput_context = require('./MaskedDateInput.context.cjs');
17
+ var MaskedDateInput_module = require('./MaskedDateInput.module.css.cjs');
18
+ var useMaskedDateInput = require('./use-masked-date-input.cjs');
19
+
20
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
21
+
22
+ var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
23
+
24
+ function SimpleAmPmSelect({
25
+ labels,
26
+ value,
27
+ onChange,
28
+ className,
29
+ style,
30
+ onPreviousInput,
31
+ readOnly,
32
+ onMouseDown,
33
+ disabled,
34
+ ...others
35
+ }) {
36
+ const handleKeyDown = (event) => {
37
+ if (readOnly) {
38
+ return;
39
+ }
40
+ if (event.key === "Home") {
41
+ event.preventDefault();
42
+ onChange(labels.am);
43
+ }
44
+ if (event.key === "End") {
45
+ event.preventDefault();
46
+ onChange(labels.pm);
47
+ }
48
+ if (event.key === "Backspace" || event.key === "Delete") {
49
+ event.preventDefault();
50
+ if (value === null) {
51
+ onPreviousInput?.();
52
+ } else {
53
+ onChange(null);
54
+ }
55
+ }
56
+ if (event.key === "ArrowLeft") {
57
+ event.preventDefault();
58
+ onPreviousInput?.();
59
+ }
60
+ if (event.key === "ArrowUp" || event.key === "ArrowDown") {
61
+ event.preventDefault();
62
+ onChange(value === labels.am ? labels.pm : labels.am);
63
+ }
64
+ if (event.code === "KeyA") {
65
+ event.preventDefault();
66
+ onChange(labels.am);
67
+ }
68
+ if (event.code === "KeyP") {
69
+ event.preventDefault();
70
+ onChange(labels.pm);
71
+ }
72
+ };
73
+ return /* @__PURE__ */ jsxRuntime.jsxs(
74
+ "select",
75
+ {
76
+ className,
77
+ style,
78
+ value: value || "",
79
+ onChange: (event) => !readOnly && onChange(event.target.value || null),
80
+ onClick: (event) => event.stopPropagation(),
81
+ onKeyDown: handleKeyDown,
82
+ onMouseDown: (event) => {
83
+ event.stopPropagation();
84
+ onMouseDown?.(event);
85
+ },
86
+ disabled,
87
+ "data-am-pm": true,
88
+ "data-mantine-stop-propagation": true,
89
+ ...others,
90
+ children: [
91
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "--" }),
92
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: labels.am, children: labels.am }),
93
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: labels.pm, children: labels.pm })
94
+ ]
95
+ }
96
+ );
97
+ }
98
+ const defaultProps = {
99
+ dateFieldsOrder: ["day", "month", "year"],
100
+ dateSeparator: "/",
101
+ timeSeparator: ":",
102
+ dateTimeSeparator: " ",
103
+ timeFormat: "24h",
104
+ amPmLabels: { am: "AM", pm: "PM" },
105
+ dayPlaceholder: "DD",
106
+ monthPlaceholder: "MM",
107
+ yearPlaceholder: "YYYY",
108
+ hoursPlaceholder: "--",
109
+ minutesPlaceholder: "--",
110
+ secondsPlaceholder: "--"
111
+ };
112
+ const MaskedDateInput = core.factory((_props) => {
113
+ const props = core.useProps("MaskedDateInput", defaultProps, _props);
114
+ const {
115
+ classNames,
116
+ className,
117
+ style,
118
+ styles,
119
+ unstyled,
120
+ vars,
121
+ dateFieldsOrder,
122
+ dateSeparator,
123
+ timeSeparator,
124
+ dateTimeSeparator,
125
+ withTime,
126
+ withSeconds,
127
+ timeFormat,
128
+ amPmLabels,
129
+ value,
130
+ defaultValue,
131
+ onChange,
132
+ clearable,
133
+ clearButtonProps,
134
+ popoverProps,
135
+ name,
136
+ form,
137
+ onFocus,
138
+ onBlur,
139
+ readOnly,
140
+ disabled,
141
+ size,
142
+ dayInputProps,
143
+ monthInputProps,
144
+ yearInputProps,
145
+ hoursInputProps,
146
+ minutesInputProps,
147
+ secondsInputProps,
148
+ amPmSelectProps,
149
+ hiddenInputProps,
150
+ pasteSplit,
151
+ dayRef,
152
+ monthRef,
153
+ yearRef,
154
+ hoursRef,
155
+ minutesRef,
156
+ secondsRef,
157
+ amPmRef,
158
+ dayPlaceholder,
159
+ monthPlaceholder,
160
+ yearPlaceholder,
161
+ hoursPlaceholder,
162
+ minutesPlaceholder,
163
+ secondsPlaceholder,
164
+ dayInputLabel,
165
+ monthInputLabel,
166
+ yearInputLabel,
167
+ hoursInputLabel,
168
+ minutesInputLabel,
169
+ secondsInputLabel,
170
+ amPmInputLabel,
171
+ rightSection,
172
+ labelProps,
173
+ attributes,
174
+ onClick,
175
+ onMouseDown,
176
+ onFocusCapture,
177
+ onBlurCapture,
178
+ getDayProps,
179
+ getMonthControlProps,
180
+ getYearControlProps,
181
+ locale,
182
+ minDate,
183
+ maxDate,
184
+ ...others
185
+ } = props;
186
+ const { calendarProps, others: rest } = pickCalendarLevelsProps.pickCalendarProps(others);
187
+ useDatesContext.useDatesContext();
188
+ const { resolvedClassNames, resolvedStyles } = core.useResolvedStylesApi({
189
+ classNames,
190
+ styles,
191
+ props
192
+ });
193
+ const getStyles = core.useStyles({
194
+ name: "MaskedDateInput",
195
+ classes: MaskedDateInput_module,
196
+ props,
197
+ className,
198
+ style,
199
+ classNames,
200
+ styles,
201
+ unstyled,
202
+ attributes,
203
+ vars
204
+ });
205
+ const controller = useMaskedDateInput.useMaskedDateInput({
206
+ value: value || void 0,
207
+ defaultValue: defaultValue || void 0,
208
+ onChange,
209
+ withTime,
210
+ withSeconds,
211
+ format: timeFormat,
212
+ amPmLabels,
213
+ min: void 0,
214
+ max: void 0,
215
+ minDate,
216
+ maxDate,
217
+ clearable,
218
+ readOnly,
219
+ disabled,
220
+ pasteSplit
221
+ });
222
+ const _dayRef = hooks.useMergedRef(controller.refs.day, dayRef);
223
+ const _monthRef = hooks.useMergedRef(controller.refs.month, monthRef);
224
+ const _yearRef = hooks.useMergedRef(controller.refs.year, yearRef);
225
+ const _hoursRef = hooks.useMergedRef(controller.refs.hours, hoursRef);
226
+ const _minutesRef = hooks.useMergedRef(controller.refs.minutes, minutesRef);
227
+ const _secondsRef = hooks.useMergedRef(controller.refs.seconds, secondsRef);
228
+ const _amPmRef = hooks.useMergedRef(controller.refs.amPm, amPmRef);
229
+ const dayInputId = hooks.useId();
230
+ const hasFocusRef = react.useRef(false);
231
+ const [dropdownOpened, setDropdownOpened] = react.useState(false);
232
+ const handleFocus = (event) => {
233
+ if (!hasFocusRef.current) {
234
+ hasFocusRef.current = true;
235
+ onFocus?.(event);
236
+ }
237
+ };
238
+ const handleBlur = (event) => {
239
+ if (!event.currentTarget.contains(event.relatedTarget)) {
240
+ hasFocusRef.current = false;
241
+ onBlur?.(event);
242
+ }
243
+ };
244
+ const getNextField = (currentField, order) => {
245
+ const currentIndex = order.indexOf(currentField);
246
+ if (currentIndex < order.length - 1) {
247
+ return order[currentIndex + 1];
248
+ }
249
+ return withTime ? "hours" : null;
250
+ };
251
+ const getPreviousField = (currentField, order) => {
252
+ const currentIndex = order.indexOf(currentField);
253
+ if (currentIndex > 0) {
254
+ return order[currentIndex - 1];
255
+ }
256
+ return null;
257
+ };
258
+ const handleDateSelect = (selectedDate) => {
259
+ dayjs__default.default(selectedDate);
260
+ controller.setDateValue(selectedDate);
261
+ setDropdownOpened(false);
262
+ };
263
+ const _getDayProps = (day) => ({
264
+ ...getDayProps?.(day),
265
+ selected: controller.calendarValue ? dayjs__default.default(controller.calendarValue).isSame(day, "day") : false,
266
+ onClick: (event) => {
267
+ getDayProps?.(day)?.onClick?.(event);
268
+ handleDateSelect(day);
269
+ }
270
+ });
271
+ const renderDateField = (field, isFirst, isLast) => {
272
+ const fieldOrder = dateFieldsOrder;
273
+ const getOnPreviousInput = () => {
274
+ const previousField = getPreviousField(field, fieldOrder);
275
+ return previousField ? () => controller.focus(previousField) : void 0;
276
+ };
277
+ const getOnNextInput = () => {
278
+ const nextField = getNextField(field, fieldOrder);
279
+ return nextField ? () => controller.focus(nextField) : void 0;
280
+ };
281
+ switch (field) {
282
+ case "day":
283
+ return /* @__PURE__ */ jsxRuntime.jsx(
284
+ SpinInput.SpinInput,
285
+ {
286
+ id: isFirst ? dayInputId : void 0,
287
+ ...dayInputProps,
288
+ ...getStyles("field", {
289
+ className: dayInputProps?.className,
290
+ style: dayInputProps?.style
291
+ }),
292
+ value: controller.values.day,
293
+ onChange: controller.setDay,
294
+ onNextInput: getOnNextInput(),
295
+ onPreviousInput: getOnPreviousInput(),
296
+ min: 1,
297
+ max: controller.getDaysInMonth(),
298
+ focusable: true,
299
+ step: 1,
300
+ ref: _dayRef,
301
+ "aria-label": dayInputLabel,
302
+ readOnly,
303
+ disabled,
304
+ onPaste: controller.onPaste,
305
+ onFocus: (event) => {
306
+ handleFocus(event);
307
+ dayInputProps?.onFocus?.(event);
308
+ },
309
+ placeholder: dayPlaceholder,
310
+ tabIndex: isFirst ? 0 : -1
311
+ },
312
+ "day"
313
+ );
314
+ case "month":
315
+ return /* @__PURE__ */ jsxRuntime.jsx(
316
+ SpinInput.SpinInput,
317
+ {
318
+ id: isFirst ? dayInputId : void 0,
319
+ ...monthInputProps,
320
+ ...getStyles("field", {
321
+ className: monthInputProps?.className,
322
+ style: monthInputProps?.style
323
+ }),
324
+ value: controller.values.month,
325
+ onChange: controller.setMonth,
326
+ onNextInput: getOnNextInput(),
327
+ onPreviousInput: getOnPreviousInput(),
328
+ min: 1,
329
+ max: 12,
330
+ focusable: true,
331
+ step: 1,
332
+ ref: _monthRef,
333
+ "aria-label": monthInputLabel,
334
+ readOnly,
335
+ disabled,
336
+ onPaste: controller.onPaste,
337
+ onFocus: (event) => {
338
+ handleFocus(event);
339
+ monthInputProps?.onFocus?.(event);
340
+ },
341
+ placeholder: monthPlaceholder,
342
+ tabIndex: isFirst ? 0 : -1
343
+ },
344
+ "month"
345
+ );
346
+ case "year":
347
+ return /* @__PURE__ */ jsxRuntime.jsx(
348
+ SpinInput.SpinInput,
349
+ {
350
+ id: isFirst ? dayInputId : void 0,
351
+ ...yearInputProps,
352
+ ...getStyles("yearField", {
353
+ className: yearInputProps?.className,
354
+ style: yearInputProps?.style
355
+ }),
356
+ value: controller.values.year,
357
+ onChange: controller.setYear,
358
+ onNextInput: getOnNextInput(),
359
+ onPreviousInput: getOnPreviousInput(),
360
+ min: 1,
361
+ max: 9999,
362
+ focusable: true,
363
+ step: 1,
364
+ ref: _yearRef,
365
+ "aria-label": yearInputLabel,
366
+ readOnly,
367
+ disabled,
368
+ onPaste: controller.onPaste,
369
+ onFocus: (event) => {
370
+ handleFocus(event);
371
+ yearInputProps?.onFocus?.(event);
372
+ },
373
+ placeholder: yearPlaceholder,
374
+ tabIndex: isFirst ? 0 : -1
375
+ },
376
+ "year"
377
+ );
378
+ default:
379
+ return null;
380
+ }
381
+ };
382
+ const dateFields = dateFieldsOrder.map((field, index) => {
383
+ const isFirst = index === 0;
384
+ const isLast = index === dateFieldsOrder.length - 1;
385
+ const fieldElement = renderDateField(field, isFirst);
386
+ if (isLast) {
387
+ return fieldElement;
388
+ }
389
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
390
+ fieldElement,
391
+ /* @__PURE__ */ jsxRuntime.jsx("span", { ...getStyles("separator"), children: dateSeparator })
392
+ ] }, `${field}-group`);
393
+ });
394
+ const calendarDate = controller.calendarValue ? dayjs__default.default(controller.calendarValue).toDate() : void 0;
395
+ return /* @__PURE__ */ jsxRuntime.jsx(MaskedDateInput_context.MaskedDateInputProvider, { value: { getStyles }, children: /* @__PURE__ */ jsxRuntime.jsxs(
396
+ core.Popover,
397
+ {
398
+ opened: dropdownOpened,
399
+ transitionProps: { duration: 0 },
400
+ position: "bottom-start",
401
+ withRoles: false,
402
+ disabled: disabled || readOnly,
403
+ ...popoverProps,
404
+ children: [
405
+ /* @__PURE__ */ jsxRuntime.jsx(core.Popover.Target, { children: /* @__PURE__ */ jsxRuntime.jsxs(
406
+ core.InputBase,
407
+ {
408
+ component: "div",
409
+ size,
410
+ disabled,
411
+ onClick: (event) => {
412
+ onClick?.(event);
413
+ controller.focus(dateFieldsOrder[0]);
414
+ },
415
+ onMouseDown: (event) => {
416
+ event.preventDefault();
417
+ onMouseDown?.(event);
418
+ },
419
+ onFocusCapture: (event) => {
420
+ setDropdownOpened(true);
421
+ onFocusCapture?.(event);
422
+ },
423
+ onBlurCapture: (event) => {
424
+ setDropdownOpened(false);
425
+ onBlurCapture?.(event);
426
+ },
427
+ rightSection: rightSection || controller.isClearable && /* @__PURE__ */ jsxRuntime.jsx(
428
+ core.CloseButton,
429
+ {
430
+ ...clearButtonProps,
431
+ size,
432
+ onClick: (event) => {
433
+ controller.clear();
434
+ clearButtonProps?.onClick?.(event);
435
+ },
436
+ onMouseDown: (event) => {
437
+ event.preventDefault();
438
+ clearButtonProps?.onMouseDown?.(event);
439
+ }
440
+ }
441
+ ),
442
+ labelProps: { htmlFor: dayInputId, ...labelProps },
443
+ style,
444
+ className,
445
+ classNames: resolvedClassNames,
446
+ styles: resolvedStyles,
447
+ attributes,
448
+ __staticSelector: "MaskedDateInput",
449
+ ...rest,
450
+ children: [
451
+ /* @__PURE__ */ jsxRuntime.jsx("div", { ...getStyles("fieldsRoot"), dir: "ltr", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { ...getStyles("fieldsGroup"), onBlur: handleBlur, children: [
452
+ dateFields,
453
+ withTime && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
454
+ /* @__PURE__ */ jsxRuntime.jsx("span", { ...getStyles("separator"), children: dateTimeSeparator }),
455
+ /* @__PURE__ */ jsxRuntime.jsx(
456
+ SpinInput.SpinInput,
457
+ {
458
+ ...hoursInputProps,
459
+ ...getStyles("field", {
460
+ className: hoursInputProps?.className,
461
+ style: hoursInputProps?.style
462
+ }),
463
+ value: controller.values.hours,
464
+ onChange: controller.setHours,
465
+ onPreviousInput: () => controller.focus(dateFieldsOrder[dateFieldsOrder.length - 1]),
466
+ onNextInput: () => controller.focus("minutes"),
467
+ min: timeFormat === "12h" ? 1 : 0,
468
+ max: timeFormat === "12h" ? 12 : 23,
469
+ allowTemporaryZero: timeFormat === "12h",
470
+ focusable: true,
471
+ step: 1,
472
+ ref: _hoursRef,
473
+ "aria-label": hoursInputLabel,
474
+ tabIndex: -1,
475
+ readOnly,
476
+ disabled,
477
+ onPaste: controller.onPaste,
478
+ onFocus: (event) => {
479
+ handleFocus(event);
480
+ hoursInputProps?.onFocus?.(event);
481
+ },
482
+ onBlur: (event) => {
483
+ const actualInputValue = event.currentTarget.value;
484
+ const numericValue = actualInputValue ? parseInt(actualInputValue, 10) : null;
485
+ if (timeFormat === "12h" && numericValue === 0) {
486
+ controller.setHours(12);
487
+ }
488
+ hoursInputProps?.onBlur?.(event);
489
+ },
490
+ placeholder: hoursPlaceholder
491
+ }
492
+ ),
493
+ /* @__PURE__ */ jsxRuntime.jsx("span", { ...getStyles("separator"), children: timeSeparator }),
494
+ /* @__PURE__ */ jsxRuntime.jsx(
495
+ SpinInput.SpinInput,
496
+ {
497
+ ...minutesInputProps,
498
+ ...getStyles("field", {
499
+ className: minutesInputProps?.className,
500
+ style: minutesInputProps?.style
501
+ }),
502
+ value: controller.values.minutes,
503
+ onChange: controller.setMinutes,
504
+ min: 0,
505
+ max: 59,
506
+ focusable: true,
507
+ step: 1,
508
+ ref: _minutesRef,
509
+ onPreviousInput: () => controller.focus("hours"),
510
+ onNextInput: () => withSeconds ? controller.focus("seconds") : controller.focus("amPm"),
511
+ "aria-label": minutesInputLabel,
512
+ tabIndex: -1,
513
+ readOnly,
514
+ disabled,
515
+ onPaste: controller.onPaste,
516
+ onFocus: (event) => {
517
+ handleFocus(event);
518
+ minutesInputProps?.onFocus?.(event);
519
+ },
520
+ placeholder: minutesPlaceholder
521
+ }
522
+ ),
523
+ withSeconds && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
524
+ /* @__PURE__ */ jsxRuntime.jsx("span", { ...getStyles("separator"), children: timeSeparator }),
525
+ /* @__PURE__ */ jsxRuntime.jsx(
526
+ SpinInput.SpinInput,
527
+ {
528
+ ...secondsInputProps,
529
+ ...getStyles("field", {
530
+ className: secondsInputProps?.className,
531
+ style: secondsInputProps?.style
532
+ }),
533
+ value: controller.values.seconds,
534
+ onChange: controller.setSeconds,
535
+ min: 0,
536
+ max: 59,
537
+ focusable: true,
538
+ step: 1,
539
+ ref: _secondsRef,
540
+ onPreviousInput: () => controller.focus("minutes"),
541
+ onNextInput: () => controller.focus("amPm"),
542
+ "aria-label": secondsInputLabel,
543
+ tabIndex: -1,
544
+ readOnly,
545
+ disabled,
546
+ onPaste: controller.onPaste,
547
+ onFocus: (event) => {
548
+ handleFocus(event);
549
+ secondsInputProps?.onFocus?.(event);
550
+ },
551
+ placeholder: secondsPlaceholder
552
+ }
553
+ )
554
+ ] }),
555
+ timeFormat === "12h" && /* @__PURE__ */ jsxRuntime.jsx(
556
+ SimpleAmPmSelect,
557
+ {
558
+ ...amPmSelectProps,
559
+ ...getStyles("field", {
560
+ className: amPmSelectProps?.className,
561
+ style: amPmSelectProps?.style
562
+ }),
563
+ labels: amPmLabels,
564
+ value: controller.values.amPm,
565
+ onChange: controller.setAmPm,
566
+ ref: _amPmRef,
567
+ "aria-label": amPmInputLabel,
568
+ onPreviousInput: () => withSeconds ? controller.focus("seconds") : controller.focus("minutes"),
569
+ readOnly,
570
+ disabled,
571
+ tabIndex: -1,
572
+ onFocus: (event) => {
573
+ handleFocus(event);
574
+ amPmSelectProps?.onFocus?.(event);
575
+ }
576
+ }
577
+ )
578
+ ] })
579
+ ] }) }),
580
+ /* @__PURE__ */ jsxRuntime.jsx(
581
+ "input",
582
+ {
583
+ type: "hidden",
584
+ name,
585
+ form,
586
+ value: controller.hiddenInputValue,
587
+ ...hiddenInputProps
588
+ }
589
+ )
590
+ ]
591
+ }
592
+ ) }),
593
+ /* @__PURE__ */ jsxRuntime.jsx(
594
+ core.Popover.Dropdown,
595
+ {
596
+ ...getStyles("dropdown"),
597
+ onMouseDown: (event) => event.preventDefault(),
598
+ children: /* @__PURE__ */ jsxRuntime.jsx(
599
+ Calendar.Calendar,
600
+ {
601
+ __staticSelector: "MaskedDateInput",
602
+ ...calendarProps,
603
+ unstyled,
604
+ __preventFocus: true,
605
+ minDate,
606
+ maxDate,
607
+ locale,
608
+ getDayProps: _getDayProps,
609
+ size,
610
+ date: calendarDate,
611
+ getMonthControlProps: (date) => ({
612
+ selected: controller.calendarValue ? isSameMonth.isSameMonth(date, controller.calendarValue) : false,
613
+ ...getMonthControlProps?.(date)
614
+ }),
615
+ getYearControlProps: (date) => ({
616
+ selected: controller.calendarValue ? dayjs__default.default(date).isSame(controller.calendarValue, "year") : false,
617
+ ...getYearControlProps?.(date)
618
+ }),
619
+ attributes
620
+ }
621
+ )
622
+ }
623
+ )
624
+ ]
625
+ }
626
+ ) });
627
+ });
628
+ MaskedDateInput.displayName = "@mantine/dates/MaskedDateInput";
629
+ MaskedDateInput.classes = MaskedDateInput_module;
630
+
631
+ exports.MaskedDateInput = MaskedDateInput;
632
+ //# sourceMappingURL=MaskedDateInput.cjs.map