@mantine-vue/dates 3.0.0 → 3.1.0

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 (116) hide show
  1. package/cjs/index.cjs +4093 -2032
  2. package/cjs/index.cjs.map +1 -1
  3. package/esm/index.mjs +4059 -1998
  4. package/esm/index.mjs.map +1 -1
  5. package/lib/components/AmPmInput/AmPmInput.types.d.ts +3 -0
  6. package/lib/components/AmPmInput/AmPmInput.vue.d.ts +12 -0
  7. package/lib/components/AmPmInput/index.d.ts +2 -0
  8. package/lib/components/Calendar/Calendar.types.d.ts +3 -0
  9. package/lib/components/Calendar/Calendar.vue.d.ts +33 -0
  10. package/lib/components/Calendar/index.d.ts +2 -0
  11. package/lib/components/CalendarHeader/CalendarHeader.types.d.ts +3 -0
  12. package/lib/components/CalendarHeader/CalendarHeader.vue.d.ts +14 -0
  13. package/lib/components/CalendarHeader/index.d.ts +2 -0
  14. package/lib/components/DateInput/DateInput.types.d.ts +3 -0
  15. package/lib/components/DateInput/DateInput.vue.d.ts +10 -0
  16. package/lib/components/DateInput/index.d.ts +2 -0
  17. package/lib/components/DatePicker/DatePicker.types.d.ts +3 -0
  18. package/lib/components/DatePicker/DatePicker.vue.d.ts +17 -0
  19. package/lib/components/DatePicker/index.d.ts +2 -0
  20. package/lib/components/DatePickerInput/DatePickerInput.types.d.ts +3 -0
  21. package/lib/components/DatePickerInput/DatePickerInput.vue.d.ts +14 -0
  22. package/lib/components/DatePickerInput/index.d.ts +2 -0
  23. package/lib/components/DateTimePicker/DateTimePicker.types.d.ts +3 -0
  24. package/lib/components/DateTimePicker/DateTimePicker.vue.d.ts +10 -0
  25. package/lib/components/DateTimePicker/index.d.ts +2 -0
  26. package/lib/components/DatesProvider/DatesProvider.context.d.ts +6 -0
  27. package/lib/components/DatesProvider/DatesProvider.types.d.ts +3 -0
  28. package/lib/components/DatesProvider/DatesProvider.vue.d.ts +14 -0
  29. package/lib/components/DatesProvider/index.d.ts +3 -0
  30. package/lib/components/Day/Day.types.d.ts +3 -0
  31. package/lib/components/Day/Day.vue.d.ts +11 -0
  32. package/lib/components/Day/index.d.ts +2 -0
  33. package/lib/components/DecadeLevel/DecadeLevel.types.d.ts +3 -0
  34. package/lib/components/DecadeLevel/DecadeLevel.vue.d.ts +24 -0
  35. package/lib/components/DecadeLevel/index.d.ts +2 -0
  36. package/lib/components/DecadeLevelGroup/DecadeLevelGroup.types.d.ts +3 -0
  37. package/lib/components/DecadeLevelGroup/DecadeLevelGroup.vue.d.ts +24 -0
  38. package/lib/components/DecadeLevelGroup/index.d.ts +2 -0
  39. package/lib/components/HiddenDatesInput/HiddenDatesInput.types.d.ts +3 -0
  40. package/lib/components/HiddenDatesInput/HiddenDatesInput.vue.d.ts +4 -0
  41. package/lib/components/HiddenDatesInput/index.d.ts +2 -0
  42. package/lib/components/InlineDateTimePicker/InlineDateTimePicker.types.d.ts +3 -0
  43. package/lib/components/InlineDateTimePicker/InlineDateTimePicker.vue.d.ts +12 -0
  44. package/lib/components/InlineDateTimePicker/index.d.ts +2 -0
  45. package/lib/components/LevelsGroup/LevelsGroup.types.d.ts +3 -0
  46. package/lib/components/LevelsGroup/LevelsGroup.vue.d.ts +24 -0
  47. package/lib/components/LevelsGroup/index.d.ts +2 -0
  48. package/lib/components/MiniCalendar/MiniCalendar.types.d.ts +3 -0
  49. package/lib/components/MiniCalendar/MiniCalendar.vue.d.ts +18 -0
  50. package/lib/components/MiniCalendar/index.d.ts +2 -0
  51. package/lib/components/Month/Month.types.d.ts +3 -0
  52. package/lib/components/Month/Month.vue.d.ts +17 -0
  53. package/lib/components/Month/index.d.ts +2 -0
  54. package/lib/components/MonthLevel/MonthLevel.types.d.ts +3 -0
  55. package/lib/components/MonthLevel/MonthLevel.vue.d.ts +24 -0
  56. package/lib/components/MonthLevel/index.d.ts +2 -0
  57. package/lib/components/MonthLevelGroup/MonthLevelGroup.types.d.ts +3 -0
  58. package/lib/components/MonthLevelGroup/MonthLevelGroup.vue.d.ts +24 -0
  59. package/lib/components/MonthLevelGroup/index.d.ts +2 -0
  60. package/lib/components/MonthPicker/MonthPicker.types.d.ts +3 -0
  61. package/lib/components/MonthPicker/MonthPicker.vue.d.ts +10 -0
  62. package/lib/components/MonthPicker/index.d.ts +2 -0
  63. package/lib/components/MonthPickerInput/MonthPickerInput.types.d.ts +6 -0
  64. package/lib/components/MonthPickerInput/MonthPickerInput.vue.d.ts +14 -0
  65. package/lib/components/MonthPickerInput/index.d.ts +2 -0
  66. package/lib/components/MonthsList/MonthsList.types.d.ts +3 -0
  67. package/lib/components/MonthsList/MonthsList.vue.d.ts +10 -0
  68. package/lib/components/MonthsList/index.d.ts +2 -0
  69. package/lib/components/PickerControl/PickerControl.types.d.ts +3 -0
  70. package/lib/components/PickerControl/PickerControl.vue.d.ts +14 -0
  71. package/lib/components/PickerControl/index.d.ts +2 -0
  72. package/lib/components/PickerInputBase/PickerInputBase.types.d.ts +3 -0
  73. package/lib/components/PickerInputBase/PickerInputBase.vue.d.ts +21 -0
  74. package/lib/components/PickerInputBase/index.d.ts +2 -0
  75. package/lib/components/SpinInput/SpinInput.types.d.ts +3 -0
  76. package/lib/components/SpinInput/SpinInput.vue.d.ts +16 -0
  77. package/lib/components/SpinInput/index.d.ts +2 -0
  78. package/lib/components/TimeControlsList/TimeControlsList.types.d.ts +3 -0
  79. package/lib/components/TimeControlsList/TimeControlsList.vue.d.ts +8 -0
  80. package/lib/components/TimeControlsList/index.d.ts +2 -0
  81. package/lib/components/TimeGrid/TimeGrid.types.d.ts +3 -0
  82. package/lib/components/TimeGrid/TimeGrid.vue.d.ts +10 -0
  83. package/lib/components/TimeGrid/index.d.ts +2 -0
  84. package/lib/components/TimeInput/TimeInput.types.d.ts +3 -0
  85. package/lib/components/TimeInput/TimeInput.vue.d.ts +10 -0
  86. package/lib/components/TimeInput/index.d.ts +2 -0
  87. package/lib/components/TimePicker/TimePicker.types.d.ts +3 -0
  88. package/lib/components/TimePicker/TimePicker.vue.d.ts +10 -0
  89. package/lib/components/TimePicker/index.d.ts +2 -0
  90. package/lib/components/TimeValue/TimeValue.types.d.ts +3 -0
  91. package/lib/components/TimeValue/TimeValue.vue.d.ts +4 -0
  92. package/lib/components/TimeValue/index.d.ts +2 -0
  93. package/lib/components/WeekdaysRow/WeekdaysRow.types.d.ts +3 -0
  94. package/lib/components/WeekdaysRow/WeekdaysRow.vue.d.ts +4 -0
  95. package/lib/components/WeekdaysRow/index.d.ts +2 -0
  96. package/lib/components/YearLevel/YearLevel.types.d.ts +3 -0
  97. package/lib/components/YearLevel/YearLevel.vue.d.ts +24 -0
  98. package/lib/components/YearLevel/index.d.ts +2 -0
  99. package/lib/components/YearLevelGroup/YearLevelGroup.types.d.ts +3 -0
  100. package/lib/components/YearLevelGroup/YearLevelGroup.vue.d.ts +24 -0
  101. package/lib/components/YearLevelGroup/index.d.ts +2 -0
  102. package/lib/components/YearPicker/YearPicker.types.d.ts +3 -0
  103. package/lib/components/YearPicker/YearPicker.vue.d.ts +10 -0
  104. package/lib/components/YearPicker/index.d.ts +2 -0
  105. package/lib/components/YearPickerInput/YearPickerInput.types.d.ts +6 -0
  106. package/lib/components/YearPickerInput/YearPickerInput.vue.d.ts +14 -0
  107. package/lib/components/YearPickerInput/index.d.ts +2 -0
  108. package/lib/components/YearsList/YearsList.types.d.ts +3 -0
  109. package/lib/components/YearsList/YearsList.vue.d.ts +10 -0
  110. package/lib/components/YearsList/index.d.ts +2 -0
  111. package/lib/index.d.mts +47 -2889
  112. package/lib/index.d.ts +47 -2889
  113. package/lib/types.d.ts +646 -0
  114. package/lib/utils/index.d.ts +91 -0
  115. package/lib/utils/use-forwarded-props.d.ts +7 -0
  116. package/package.json +3 -3
package/lib/types.d.ts ADDED
@@ -0,0 +1,646 @@
1
+ import type { CSSProperties, VNodeChild } from 'vue';
2
+ import type { MantineSize } from '@mantine-vue/core';
3
+ import classes from './Dates.module.css';
4
+ /** ISO date string in `YYYY-MM-DD` format. */
5
+ export type DateStringValue = string;
6
+ /** Single picker value. */
7
+ export type DateValue = DateStringValue | null;
8
+ /** Inclusive range represented by start and end dates. */
9
+ export type DatesRangeValue = [DateValue, DateValue];
10
+ /** Supported date picker selection modes. */
11
+ export type DatePickerType = 'default' | 'multiple' | 'range';
12
+ /** Calendar drill-down level. */
13
+ export type CalendarLevel = 'month' | 'year' | 'decade';
14
+ /** Value inferred from the picker selection mode. */
15
+ export type DatePickerValue<Type extends DatePickerType = 'default'> = Type extends 'range' ? DatesRangeValue : Type extends 'multiple' ? DateStringValue[] : DateValue;
16
+ /** Union accepted by picker primitives. */
17
+ export type DatePickerValueType = DateValue | DateStringValue[] | DatesRangeValue;
18
+ /** Keyboard navigation payload for a two-dimensional control grid. */
19
+ export interface ControlKeydownPayload {
20
+ rowIndex: number;
21
+ cellIndex: number;
22
+ event: KeyboardEvent;
23
+ controlsRef: HTMLElement[][];
24
+ }
25
+ /** User-supplied attributes for a generated control. */
26
+ export type ControlProps = Record<string, any>;
27
+ /** Render slots shared by calendar day components. */
28
+ export interface RenderDaySlots {
29
+ renderDay?: (input: {
30
+ date: DateStringValue;
31
+ }) => VNodeChild;
32
+ /** Short alias for `renderDay`. */
33
+ day?: (input: {
34
+ date: DateStringValue;
35
+ }) => VNodeChild;
36
+ }
37
+ /** Date formatting callback used by picker inputs. */
38
+ export type DateFormatter = (payload: {
39
+ type: DatePickerType;
40
+ date: DatePickerValueType;
41
+ locale?: string;
42
+ format: string;
43
+ labelSeparator: string;
44
+ }) => string;
45
+ /** Shared locale and calendar settings supplied by `DatesProvider`. */
46
+ export interface DatesProviderSettings {
47
+ /** Locale used to format dates @default 'en' */
48
+ locale?: string;
49
+ /** Number 0-6, where 0 – Sunday and 6 – Saturday @default 1 – Monday */
50
+ firstDayOfWeek?: number;
51
+ /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday @default [0, 6] */
52
+ weekendDays?: number[];
53
+ /** Timezone used for date calculations @default 'UTC' */
54
+ timezone?: string;
55
+ /** Determines whether all months should have six weeks @default false */
56
+ consistentWeeks?: boolean;
57
+ }
58
+ /** Props accepted by `DatesProvider`. */
59
+ export interface DatesProviderProps {
60
+ /** Settings inherited by all nested date components @default {} */
61
+ settings?: DatesProviderSettings;
62
+ }
63
+ /** Common style API accepted by date controls. */
64
+ export interface DatesStyleProps {
65
+ classNames?: Record<string, string> | ((...args: any[]) => Record<string, string>);
66
+ styles?: Record<string, CSSProperties> | ((...args: any[]) => Record<string, CSSProperties>);
67
+ /** Removes component styles @default false */
68
+ unstyled?: boolean;
69
+ }
70
+ /** Props accepted by the low-level day control. */
71
+ export interface DayProps extends DatesStyleProps {
72
+ /** Date represented by the control. */
73
+ date: DateStringValue;
74
+ /** Control width and height of the day @default 'sm' */
75
+ size?: string | number;
76
+ /** Determines which element is used as root, `'button'` by default, `'div'` if static prop is set @default false */
77
+ static?: boolean;
78
+ /** Determines whether the day is considered to be a weekend @default false */
79
+ weekend?: boolean;
80
+ /** Determines whether the day is outside of the current month @default false */
81
+ outside?: boolean;
82
+ /** Determines whether the day is selected @default false */
83
+ selected?: boolean;
84
+ /** Determines whether the day should not be displayed @default false */
85
+ hidden?: boolean;
86
+ /** Determines whether the day is selected in range @default false */
87
+ inRange?: boolean;
88
+ /** Determines whether the day is first in range selection @default false */
89
+ firstInRange?: boolean;
90
+ /** Determines whether the day is last in range selection @default false */
91
+ lastInRange?: boolean;
92
+ /** Determines whether today should be highlighted with a border @default false */
93
+ highlightToday?: boolean;
94
+ /** Determines whether the day should take the full width of its cell @default false */
95
+ fullWidth?: boolean;
96
+ /** Disables the control @default false */
97
+ disabled?: boolean;
98
+ /** Custom day content renderer. */
99
+ renderDay?: (date: DateStringValue) => VNodeChild;
100
+ }
101
+ /** Props accepted by month/year picker controls. */
102
+ export interface PickerControlProps extends DatesStyleProps {
103
+ /** Assigns selected styles @default false */
104
+ selected?: boolean;
105
+ /** Disables control @default false */
106
+ disabled?: boolean;
107
+ /** Assigns in range styles @default false */
108
+ inRange?: boolean;
109
+ /** Assigns first in range styles @default false */
110
+ firstInRange?: boolean;
111
+ /** Assigns last in range styles @default false */
112
+ lastInRange?: boolean;
113
+ /** Determines whether controls should be separated @default true */
114
+ withCellSpacing?: boolean;
115
+ /** Determines whether the control should take the full width of its cell @default false */
116
+ fullWidth?: boolean;
117
+ }
118
+ /** Props accepted by the calendar navigation header. */
119
+ export interface CalendarHeaderProps extends DatesStyleProps {
120
+ /** Header label. */
121
+ label: string;
122
+ /** Determines whether next level button should be enabled @default true */
123
+ hasNextLevel?: boolean;
124
+ /** Determines whether next control should be rendered @default true */
125
+ withNext?: boolean;
126
+ /** Determines whether previous control should be rendered @default true */
127
+ withPrevious?: boolean;
128
+ /** Disables next control @default false */
129
+ nextDisabled?: boolean;
130
+ /** Disables previous control @default false */
131
+ previousDisabled?: boolean;
132
+ /** Next button `aria-label` @default 'Next' */
133
+ nextLabel?: string;
134
+ /** Previous button `aria-label` @default 'Previous' */
135
+ previousLabel?: string;
136
+ /** Accessible label for the level control. */
137
+ levelControlAriaLabel?: string;
138
+ /** Determines whether the header should take the full width of its container @default false */
139
+ fullWidth?: boolean;
140
+ /** Determines whether level select controls should be rendered as native `<select>` elements @default false */
141
+ withNativeLevelSelect?: boolean;
142
+ /** Inclusive year range shown by the native selector. */
143
+ yearsSelectRange?: [number, number];
144
+ /** Current calendar level. */
145
+ calendarLevel?: CalendarLevel;
146
+ /** Date represented by the header. */
147
+ date?: string | Date;
148
+ /** Locale used to format the label. */
149
+ locale?: string;
150
+ /** Earliest selectable date. */
151
+ minDate?: string | Date;
152
+ /** Latest selectable date. */
153
+ maxDate?: string | Date;
154
+ /** Disables the native level selector @default false */
155
+ disableNativeLevelSelect?: boolean;
156
+ }
157
+ /** Events emitted by `CalendarHeader`. */
158
+ export interface CalendarHeaderEmits {
159
+ /** Emitted when the native level selector changes the date. */
160
+ 'date-change': [date: DateStringValue];
161
+ /** Emitted when the next control is activated. */
162
+ next: [];
163
+ /** Emitted when the previous control is activated. */
164
+ previous: [];
165
+ /** Emitted when the level control is activated. */
166
+ 'level-click': [];
167
+ }
168
+ /** Props accepted by the weekdays table row. */
169
+ export interface WeekdaysRowProps extends DatesStyleProps {
170
+ /** Number 0-6, 0 – Sunday, 6 – Saturday @default 1 – Monday */
171
+ firstDayOfWeek?: number;
172
+ /** Weekday indexes treated as weekend days. */
173
+ weekendDays?: number[];
174
+ /** Locale used to format weekday labels. */
175
+ locale?: string;
176
+ /** dayjs format to get weekday name @default 'dd' */
177
+ weekdayFormat?: string | ((date: DateStringValue) => string);
178
+ /** If set, heading for week numbers is displayed @default false */
179
+ withWeekNumbers?: boolean;
180
+ }
181
+ /** Props accepted by a rendered month grid. */
182
+ export interface MonthProps extends DatesStyleProps {
183
+ /** Month to display, value `YYYY-MM-DD` @default current month */
184
+ month?: DateStringValue;
185
+ /** Selected date value @default null */
186
+ value?: DatePickerValueType;
187
+ /** Picker type: range, multiple or default @default 'default' */
188
+ type?: DatePickerType;
189
+ /** Locale used to format dates. */
190
+ locale?: string;
191
+ /** Number 0-6, where 0 – Sunday and 6 – Saturday @default 1 – Monday */
192
+ firstDayOfWeek?: number;
193
+ /** Weekday indexes treated as weekend days. */
194
+ weekendDays?: number[];
195
+ /** `dayjs` format for weekdays names @default 'dd' */
196
+ weekdayFormat?: string | ((date: DateStringValue) => string);
197
+ /** Earliest selectable date. */
198
+ minDate?: string | Date;
199
+ /** Latest selectable date. */
200
+ maxDate?: string | Date;
201
+ /** Determines whether a date is disabled. */
202
+ excludeDate?: (date: DateStringValue) => boolean;
203
+ /** Custom day content renderer. */
204
+ renderDay?: (date: DateStringValue) => VNodeChild;
205
+ /** Determines whether outside dates should be hidden @default false */
206
+ hideOutsideDates?: boolean;
207
+ /** Determines whether weekdays row should be hidden @default false */
208
+ hideWeekdays?: boolean;
209
+ /** Returns additional props for a day control. */
210
+ getDayProps?: (date: DateStringValue) => ControlProps;
211
+ /** Returns an accessible label for a day control. */
212
+ getDayAriaLabel?: (date: DateStringValue) => string;
213
+ /** Determines whether controls should be separated by space @default true */
214
+ withCellSpacing?: boolean;
215
+ /** Determines whether today should be highlighted with a border @default false */
216
+ highlightToday?: boolean;
217
+ /** Determines whether week numbers should be displayed @default false */
218
+ withWeekNumbers?: boolean;
219
+ /** Determines whether days should be static @default false */
220
+ static?: boolean;
221
+ /** Determines whether the month should take the full width of its container @default false */
222
+ fullWidth?: boolean;
223
+ }
224
+ /** Events emitted by `Month`. */
225
+ export interface MonthEmits {
226
+ /** Emitted when a day is selected. */
227
+ 'day-click': [date: DateStringValue];
228
+ /** Emitted when the pointer enters a day. */
229
+ 'day-mouse-enter': [date: DateStringValue];
230
+ }
231
+ /** Props accepted by the month selection grid. */
232
+ export interface MonthsListProps extends DatesStyleProps {
233
+ /** Year for which months list should be displayed @default current year */
234
+ year?: DateStringValue;
235
+ /** Selected date value. */
236
+ value?: DatePickerValueType;
237
+ /** Earliest selectable date. */
238
+ minDate?: string | Date;
239
+ /** Latest selectable date. */
240
+ maxDate?: string | Date;
241
+ /** Locale used to format month labels. */
242
+ locale?: string;
243
+ /** `dayjs` format for months list @default 'MMM' */
244
+ monthsListFormat?: string | ((date: DateStringValue) => string);
245
+ /** Returns additional props for a month control. */
246
+ getMonthControlProps?: (date: DateStringValue) => ControlProps;
247
+ /** Determines whether the list should take the full width of its container @default false */
248
+ fullWidth?: boolean;
249
+ }
250
+ /** Events emitted by `MonthsList`. */
251
+ export interface MonthsListEmits {
252
+ /** Emitted when a month is selected. */
253
+ 'month-select': [date: DateStringValue];
254
+ /** Emitted when the pointer enters a month. */
255
+ 'month-mouse-enter': [date: DateStringValue];
256
+ }
257
+ /** Props accepted by the year selection grid. */
258
+ export interface YearsListProps extends DatesStyleProps {
259
+ /** Decade value to display @default current decade */
260
+ decade?: DateStringValue;
261
+ /** Selected date value. */
262
+ value?: DatePickerValueType;
263
+ /** Earliest selectable date. */
264
+ minDate?: string | Date;
265
+ /** Latest selectable date. */
266
+ maxDate?: string | Date;
267
+ /** dayjs format for years list @default 'YYYY' */
268
+ yearsListFormat?: string | ((date: DateStringValue) => string);
269
+ /** Returns additional props for a year control. */
270
+ getYearControlProps?: (date: DateStringValue) => ControlProps;
271
+ /** Determines whether the list should take the full width of its container @default false */
272
+ fullWidth?: boolean;
273
+ }
274
+ /** Events emitted by `YearsList`. */
275
+ export interface YearsListEmits {
276
+ /** Emitted when a year is selected. */
277
+ 'year-select': [date: DateStringValue];
278
+ /** Emitted when the pointer enters a year. */
279
+ 'year-mouse-enter': [date: DateStringValue];
280
+ }
281
+ /** Shared settings for calendar-level components. */
282
+ export interface CalendarProps extends MonthProps, MonthsListProps, YearsListProps {
283
+ /** Initial displayed level (uncontrolled) @default 'month' */
284
+ defaultLevel?: CalendarLevel;
285
+ /** Controlled calendar level. */
286
+ level?: CalendarLevel;
287
+ /** Max level that user can go up to (decade, year, month) @default 'decade' */
288
+ maxLevel?: CalendarLevel;
289
+ /** Min level that user can go down to (decade, year, month) @default 'month' */
290
+ minLevel?: CalendarLevel;
291
+ /** Initial uncontrolled displayed date. */
292
+ defaultDate?: string | Date;
293
+ /** Controlled displayed date. */
294
+ date?: string | Date;
295
+ /** Number of columns displayed next to each other @default 1 */
296
+ numberOfColumns?: number;
297
+ /** Number of columns advanced by navigation controls. */
298
+ columnsToScroll?: number;
299
+ /** Locale used to format labels. */
300
+ locale?: string;
301
+ /** dayjs label format to display month label or a function that returns month label based on month value @default 'MMMM YYYY' */
302
+ monthLabelFormat?: string | ((date: DateStringValue) => string);
303
+ /** dayjs label format to display year label or a function that returns year label based on year value @default 'YYYY' */
304
+ yearLabelFormat?: string | ((date: DateStringValue) => string);
305
+ /** Decade header formatter. */
306
+ decadeLabelFormat?: (start: DateStringValue, end: DateStringValue) => string;
307
+ /** Determines whether level select controls should be rendered as native `<select>` elements @default false */
308
+ withNativeLevelSelect?: boolean;
309
+ /** Inclusive year range shown by the native selector. */
310
+ yearsSelectRange?: [number, number];
311
+ }
312
+ /** Preset displayed next to a date picker. */
313
+ export interface DatePickerPreset {
314
+ value: DatePickerValueType;
315
+ label: string;
316
+ }
317
+ /** Props accepted by date, month and year picker components. */
318
+ export interface DatePickerProps extends Omit<CalendarProps, 'value'> {
319
+ /** Controlled selected value. */
320
+ modelValue?: DatePickerValueType;
321
+ /** Initial uncontrolled selected value. */
322
+ defaultValue?: DatePickerValueType;
323
+ /** Determines whether user can deselect the date by clicking on selected item, applicable only when `type="default"` @default true */
324
+ allowDeselect?: boolean;
325
+ /** Determines whether dates values should be sorted before change emit, only applicable with `type="multiple"` @default true */
326
+ sortDates?: boolean;
327
+ /** Preset values displayed next to the picker. */
328
+ presets?: DatePickerPreset[];
329
+ }
330
+ /** Props accepted by `YearPicker`. */
331
+ export type YearPickerProps = DatePickerProps;
332
+ /** Props accepted by `MonthPicker`. */
333
+ export type MonthPickerProps = DatePickerProps;
334
+ /** Scoped slot exposed by picker input dropdown content. */
335
+ export interface PickerInputBaseSlots {
336
+ default?: (payload: {
337
+ close: () => void;
338
+ open: () => void;
339
+ opened: boolean;
340
+ }) => VNodeChild;
341
+ }
342
+ /** Props accepted by the shared picker input shell. */
343
+ export interface PickerInputBaseProps extends DatesStyleProps {
344
+ /** Formatted text displayed by the input @default '' */
345
+ formattedValue?: string;
346
+ /** Controlled dropdown opened state. */
347
+ dropdownOpened?: boolean;
348
+ /** Type of the dropdown @default 'popover' */
349
+ dropdownType?: 'popover' | 'modal';
350
+ /** Input label. */
351
+ label?: any;
352
+ /** Placeholder displayed when no value is selected. */
353
+ placeholder?: string;
354
+ /** If set, clear button is displayed when the component has value @default false */
355
+ clearable?: boolean;
356
+ /** Disables the input @default false */
357
+ disabled?: boolean;
358
+ /** Marks the input as required @default false */
359
+ required?: boolean;
360
+ /** Error content or error state. */
361
+ error?: any;
362
+ /** Component size @default 'sm' */
363
+ size?: string | number;
364
+ /** Input visual variant. */
365
+ variant?: 'default' | 'filled' | 'unstyled';
366
+ }
367
+ /** Events emitted by `PickerInputBase`. */
368
+ export interface PickerInputBaseEmits {
369
+ /** Emitted when the target is clicked. */
370
+ click: [event: MouseEvent];
371
+ /** Emitted when the clear button is activated. */
372
+ clear: [];
373
+ /** Emitted when the dropdown closes. */
374
+ 'dropdown-close': [];
375
+ /** Emitted when the dropdown opens. */
376
+ 'dropdown-open': [];
377
+ }
378
+ /** Props accepted by hidden form serialization input. */
379
+ export interface HiddenDatesInputProps {
380
+ /** Native input name. */
381
+ name?: string;
382
+ /** Value serialized into the hidden input. */
383
+ value?: DatePickerValueType;
384
+ }
385
+ /** Props shared by picker input components. */
386
+ export interface DatePickerInputProps extends DatePickerProps, PickerInputBaseProps {
387
+ /** `dayjs` format for input value @default 'MMMM D, YYYY' */
388
+ valueFormat?: string;
389
+ /** Separator between range values @default '–' */
390
+ labelSeparator?: string;
391
+ /** Custom displayed value formatter. */
392
+ valueFormatter?: DateFormatter;
393
+ /** Determines whether the dropdown is closed when date is selected, not applicable with `type="multiple"` @default true */
394
+ closeOnChange?: boolean;
395
+ }
396
+ /** Props accepted by the free-form date text input. */
397
+ export interface DateInputProps extends PickerInputBaseProps {
398
+ /** Controlled date value. */
399
+ modelValue?: string | Date | null;
400
+ /** Initial uncontrolled date value. */
401
+ defaultValue?: string | Date | null;
402
+ /** `dayjs` format to display input value @default 'MMMM D, YYYY' */
403
+ valueFormat?: string;
404
+ /** Custom text-to-date parser. */
405
+ dateParser?: (value: string) => DateStringValue | null;
406
+ /** Locale used to parse and format dates. */
407
+ locale?: string;
408
+ /** Earliest allowed date. */
409
+ minDate?: string | Date;
410
+ /** Latest allowed date. */
411
+ maxDate?: string | Date;
412
+ /** Preset values displayed in the dropdown. */
413
+ presets?: Array<{
414
+ value: DateValue;
415
+ label: string;
416
+ }>;
417
+ }
418
+ /** Props accepted by the native time input. */
419
+ export interface TimeInputProps extends DatesStyleProps {
420
+ /** Determines whether seconds input should be displayed @default false */
421
+ withSeconds?: boolean;
422
+ /** Controlled time value. */
423
+ modelValue?: string;
424
+ /** Initial uncontrolled time value. */
425
+ defaultValue?: string;
426
+ }
427
+ /** Props accepted by the time grid. */
428
+ export interface TimeGridProps extends DatesStyleProps {
429
+ /** Time data in 24h format to be displayed in the grid @default [] */
430
+ data?: string[];
431
+ /** Controlled selected time. */
432
+ modelValue?: string;
433
+ /** Initial uncontrolled selected time. */
434
+ defaultValue?: string;
435
+ /** Earliest selectable time. */
436
+ minTime?: string;
437
+ /** Latest selectable time. */
438
+ maxTime?: string;
439
+ /** Determines whether the value can be deselected when the current active option is clicked or activated with keyboard @default false */
440
+ allowDeselect?: boolean;
441
+ /** If set, all controls are disabled @default false */
442
+ disabled?: boolean;
443
+ /** Returns additional props for a time control. */
444
+ getControlProps?: (value: string) => ControlProps;
445
+ }
446
+ /** Props accepted by the numeric spin field used by `TimePicker`. */
447
+ export interface SpinInputProps extends DatesStyleProps {
448
+ /** Controlled numeric value. */
449
+ modelValue?: number | null;
450
+ /** Initial uncontrolled numeric value. */
451
+ defaultValue?: number | null;
452
+ /** Minimum allowed value. */
453
+ min: number;
454
+ /** Maximum allowed value. */
455
+ max: number;
456
+ /** Amount added or subtracted by step controls @default 1 */
457
+ step?: number;
458
+ /** Allows an intermediate zero while typing @default false */
459
+ allowTemporaryZero?: boolean;
460
+ /** Placeholder displayed when the value is empty @default '--' */
461
+ placeholder?: string;
462
+ /** Prevents focus from advancing after a complete value is typed @default false */
463
+ disableAutoAdvance?: boolean;
464
+ /** Disables the input @default false */
465
+ disabled?: boolean;
466
+ /** Makes the input read-only @default false */
467
+ readOnly?: boolean;
468
+ }
469
+ /** Events emitted by `SpinInput`. */
470
+ export interface SpinInputEmits {
471
+ /** Emitted when focus should advance to the next input. */
472
+ 'next-input': [];
473
+ /** Emitted when focus should return to the previous input. */
474
+ 'previous-input': [];
475
+ /** Emitted when content is pasted into the input. */
476
+ paste: [event: ClipboardEvent];
477
+ }
478
+ /** Labels used by a 12-hour time picker. */
479
+ export interface TimePickerAmPmLabels {
480
+ am: string;
481
+ pm: string;
482
+ }
483
+ /** Props accepted by the AM/PM field. */
484
+ export interface AmPmInputProps extends DatesStyleProps {
485
+ /** Controlled period value. */
486
+ modelValue?: string | null;
487
+ /** Initial uncontrolled period value. */
488
+ defaultValue?: string | null;
489
+ /** Labels displayed for AM and PM @default { am: 'AM', pm: 'PM' } */
490
+ labels?: TimePickerAmPmLabels;
491
+ /** Disables the input @default false */
492
+ disabled?: boolean;
493
+ /** Makes the input read-only @default false */
494
+ readOnly?: boolean;
495
+ }
496
+ /** Events emitted by `AmPmInput`. */
497
+ export interface AmPmInputEmits {
498
+ /** Emitted when focus should return to the previous input. */
499
+ 'previous-input': [];
500
+ }
501
+ /** Props accepted by a scrollable list of time controls. */
502
+ export interface TimeControlsListProps extends DatesStyleProps {
503
+ /** Minimum displayed value. */
504
+ min: number;
505
+ /** Maximum displayed value. */
506
+ max: number;
507
+ /** Interval between displayed values @default 1 */
508
+ step?: number;
509
+ /** Selected value @default null */
510
+ value?: number | null;
511
+ /** Custom control label formatter. */
512
+ formatValue?: (value: number) => string;
513
+ }
514
+ /** Events emitted by `TimeControlsList`. */
515
+ export interface TimeControlsListEmits {
516
+ /** Emitted when a value is selected. */
517
+ select: [value: number];
518
+ }
519
+ /** Time picker preset. */
520
+ export interface TimePickerPreset {
521
+ value: string;
522
+ label: string;
523
+ }
524
+ /** Props accepted by `TimePicker`. */
525
+ export interface TimePickerProps extends DatesStyleProps {
526
+ /** Controlled time value. */
527
+ modelValue?: string;
528
+ /** Initial uncontrolled time value. */
529
+ defaultValue?: string;
530
+ /** TimePicker type, `'time'` for regular time input, `'duration'` for duration input that allows values greater than 24 hours @default 'time' */
531
+ type?: 'time' | 'duration';
532
+ /** Determines whether the seconds input should be displayed @default false */
533
+ withSeconds?: boolean;
534
+ /** Minimum allowed time. */
535
+ min?: string;
536
+ /** Maximum allowed time. */
537
+ max?: string;
538
+ /** Time format displayed in the input @default '24h' */
539
+ format?: '12h' | '24h';
540
+ /** Labels used for am/pm values @default { am: 'AM', pm: 'PM' } */
541
+ amPmLabels?: TimePickerAmPmLabels;
542
+ /** Number by which hours are incremented/decremented @default 1 */
543
+ hoursStep?: number;
544
+ /** Number by which minutes are incremented/decremented @default 1 */
545
+ minutesStep?: number;
546
+ /** Number by which seconds are incremented/decremented @default 1 */
547
+ secondsStep?: number;
548
+ /** Determines whether the clear button should be displayed @default false */
549
+ clearable?: boolean;
550
+ /** Determines whether the dropdown with time controls list should be visible when the input has focus @default false */
551
+ withDropdown?: boolean;
552
+ /** Disables the picker @default false */
553
+ disabled?: boolean;
554
+ /** Makes the picker read-only @default false */
555
+ readOnly?: boolean;
556
+ /** Component size @default 'sm' */
557
+ size?: string | number;
558
+ /** Preset time values displayed in the dropdown. */
559
+ presets?: TimePickerPreset[];
560
+ /** If set, the dropdown is closed when a value is selected from the presets list @default false */
561
+ closeDropdownOnPresetSelect?: boolean;
562
+ /** Ref object populated with the hours input element. */
563
+ hoursRef?: {
564
+ value: any;
565
+ };
566
+ }
567
+ /** Props accepted by formatted time text. */
568
+ export interface TimeValueProps extends DatesStyleProps {
569
+ /** Time value to format. */
570
+ value: string | Date;
571
+ /** Output date-time format @default 'HH:mm' */
572
+ format?: string;
573
+ /** Locale used to format the value. */
574
+ locale?: string;
575
+ }
576
+ /** Props accepted by combined date and time picker. */
577
+ export interface DateTimePickerProps extends PickerInputBaseProps {
578
+ /** Controlled date-time value. */
579
+ modelValue?: string | Date | null;
580
+ /** Initial uncontrolled date-time value. */
581
+ defaultValue?: string | Date | null;
582
+ /** `dayjs` format for input value @default 'MMMM D, YYYY h:mm A' */
583
+ valueFormat?: string;
584
+ /** If set, clear button is displayed when the component has value @default false */
585
+ clearable?: boolean;
586
+ /** Determines whether the seconds input should be displayed @default false */
587
+ withSeconds?: boolean;
588
+ /** Props passed to the submit button. */
589
+ submitButtonProps?: ControlProps;
590
+ /** Determines whether the picker should take the full width of its container @default false */
591
+ fullWidth?: boolean;
592
+ }
593
+ /** Props accepted by the compact multi-day calendar. */
594
+ export interface MiniCalendarProps extends DatesStyleProps {
595
+ /** Controlled displayed date. */
596
+ date?: string | Date;
597
+ /** Initial uncontrolled displayed date. */
598
+ defaultDate?: string | Date;
599
+ /** Controlled selected date. */
600
+ modelValue?: string | Date | null;
601
+ /** Initial uncontrolled selected date. */
602
+ defaultValue?: string | Date | null;
603
+ /** Latest selectable date. */
604
+ maxDate?: string | Date;
605
+ /** Earliest selectable date. */
606
+ minDate?: string | Date;
607
+ /** Number of days to display in the calendar @default 7 */
608
+ numberOfDays?: number;
609
+ /** Dayjs format string for month label @default 'MMM' */
610
+ monthLabelFormat?: string;
611
+ /** Returns additional props for a day control. */
612
+ getDayProps?: (date: DateStringValue) => ControlProps;
613
+ /** Component size @default 'sm' */
614
+ size?: MantineSize;
615
+ /** Props passed to the previous control. */
616
+ previousControlProps?: ControlProps;
617
+ /** Props passed to the next control. */
618
+ nextControlProps?: ControlProps;
619
+ /** Locale used to format calendar labels. */
620
+ locale?: string;
621
+ }
622
+ /** Events emitted by `MiniCalendar`. */
623
+ export interface MiniCalendarEmits {
624
+ /** Emitted when the next control is activated. */
625
+ next: [];
626
+ /** Emitted when the previous control is activated. */
627
+ previous: [];
628
+ }
629
+ export type DatesStylesNames = keyof typeof classes;
630
+ export type PickerBaseProps = PickerInputBaseProps;
631
+ export type ControlsGroupSettings = Pick<CalendarProps, 'numberOfColumns' | 'columnsToScroll'>;
632
+ export type DateInputSharedProps = DateInputProps;
633
+ export type CalendarSettings = CalendarProps;
634
+ export type CalendarBaseProps = CalendarProps;
635
+ export type CalendarAriaLabels = Record<string, string>;
636
+ export type MonthLevelSettings = CalendarProps;
637
+ export type YearLevelSettings = CalendarProps;
638
+ export type DecadeLevelSettings = CalendarProps;
639
+ export type TimePickerPresets = TimePickerPreset[];
640
+ export type TimeGridData = string[];
641
+ export type TimeGridStylesNames = DatesStylesNames;
642
+ export type TimePickerStylesNames = DatesStylesNames;
643
+ export type DatePickerStylesNames = DatesStylesNames;
644
+ export type DatePickerInputStylesNames = DatesStylesNames;
645
+ export type DateInputStylesNames = DatesStylesNames;
646
+ export type CalendarStylesNames = DatesStylesNames;