vuetify 3.7.13 → 3.7.15

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 (145) hide show
  1. package/dist/json/attributes.json +2446 -2446
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +176 -176
  4. package/dist/json/tags.json +1 -1
  5. package/dist/json/web-types.json +4783 -4520
  6. package/dist/vuetify-labs.css +2906 -2897
  7. package/dist/vuetify-labs.d.ts +234 -15
  8. package/dist/vuetify-labs.esm.js +156 -67
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +156 -67
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1783 -1784
  13. package/dist/vuetify.d.ts +66 -66
  14. package/dist/vuetify.esm.js +47 -37
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +47 -37
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +31 -27
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VDatePicker/VDatePicker.mjs +19 -10
  22. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  23. package/lib/components/VFileInput/VFileInput.css +0 -1
  24. package/lib/components/VFileInput/VFileInput.mjs +11 -1
  25. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  26. package/lib/components/VFileInput/VFileInput.sass +0 -1
  27. package/lib/components/VList/VListItem.mjs +2 -0
  28. package/lib/components/VList/VListItem.mjs.map +1 -1
  29. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  30. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  31. package/lib/components/VSlider/slider.mjs +1 -0
  32. package/lib/components/VSlider/slider.mjs.map +1 -1
  33. package/lib/composables/date/adapters/vuetify.mjs +9 -21
  34. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  35. package/lib/composables/density.mjs +1 -1
  36. package/lib/composables/density.mjs.map +1 -1
  37. package/lib/entry-bundler.mjs +1 -1
  38. package/lib/framework.mjs +1 -1
  39. package/lib/index.d.mts +66 -66
  40. package/lib/labs/VDateInput/VDateInput.mjs +2 -2
  41. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  42. package/lib/labs/VDateInput/index.d.mts +248 -1
  43. package/lib/labs/VFileUpload/VFileUpload.css +5 -1
  44. package/lib/labs/VFileUpload/VFileUpload.sass +4 -0
  45. package/lib/labs/VFileUpload/_variables.scss +1 -1
  46. package/lib/labs/VNumberInput/VNumberInput.mjs +57 -21
  47. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  48. package/lib/labs/VNumberInput/hold.mjs +31 -0
  49. package/lib/labs/VNumberInput/hold.mjs.map +1 -0
  50. package/lib/labs/VNumberInput/index.d.mts +1 -7
  51. package/lib/labs/VTimePicker/VTimePickerControls.sass +16 -16
  52. package/lib/labs/VTimePicker/_variables.scss +12 -12
  53. package/lib/labs/VTreeview/VTreeview.mjs +5 -1
  54. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  55. package/lib/labs/VTreeview/VTreeviewChildren.mjs +4 -1
  56. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  57. package/lib/labs/VTreeview/VTreeviewItem.css +15 -9
  58. package/lib/labs/VTreeview/VTreeviewItem.mjs +15 -6
  59. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  60. package/lib/labs/VTreeview/VTreeviewItem.sass +16 -10
  61. package/lib/labs/VTreeview/_variables.scss +2 -5
  62. package/lib/labs/VTreeview/index.d.mts +23 -8
  63. package/lib/labs/components.d.mts +295 -76
  64. package/lib/locale/af.mjs +42 -42
  65. package/lib/locale/af.mjs.map +1 -1
  66. package/lib/locale/az.mjs +7 -7
  67. package/lib/locale/az.mjs.map +1 -1
  68. package/lib/locale/bg.mjs +7 -7
  69. package/lib/locale/bg.mjs.map +1 -1
  70. package/lib/locale/ca.mjs +25 -25
  71. package/lib/locale/ca.mjs.map +1 -1
  72. package/lib/locale/ckb.mjs +29 -29
  73. package/lib/locale/ckb.mjs.map +1 -1
  74. package/lib/locale/cs.mjs +13 -13
  75. package/lib/locale/cs.mjs.map +1 -1
  76. package/lib/locale/da.mjs +22 -22
  77. package/lib/locale/da.mjs.map +1 -1
  78. package/lib/locale/el.mjs +41 -41
  79. package/lib/locale/el.mjs.map +1 -1
  80. package/lib/locale/es.mjs +26 -26
  81. package/lib/locale/es.mjs.map +1 -1
  82. package/lib/locale/et.mjs +29 -29
  83. package/lib/locale/et.mjs.map +1 -1
  84. package/lib/locale/fa.mjs +5 -5
  85. package/lib/locale/fa.mjs.map +1 -1
  86. package/lib/locale/fi.mjs +22 -22
  87. package/lib/locale/fi.mjs.map +1 -1
  88. package/lib/locale/fr.mjs +6 -6
  89. package/lib/locale/fr.mjs.map +1 -1
  90. package/lib/locale/he.mjs +29 -29
  91. package/lib/locale/he.mjs.map +1 -1
  92. package/lib/locale/hr.mjs +28 -28
  93. package/lib/locale/hr.mjs.map +1 -1
  94. package/lib/locale/hu.mjs +10 -10
  95. package/lib/locale/hu.mjs.map +1 -1
  96. package/lib/locale/id.mjs +30 -30
  97. package/lib/locale/id.mjs.map +1 -1
  98. package/lib/locale/it.mjs +7 -7
  99. package/lib/locale/it.mjs.map +1 -1
  100. package/lib/locale/ja.mjs +28 -28
  101. package/lib/locale/ja.mjs.map +1 -1
  102. package/lib/locale/km.mjs +6 -6
  103. package/lib/locale/km.mjs.map +1 -1
  104. package/lib/locale/ko.mjs +27 -27
  105. package/lib/locale/ko.mjs.map +1 -1
  106. package/lib/locale/lt.mjs +5 -5
  107. package/lib/locale/lt.mjs.map +1 -1
  108. package/lib/locale/lv.mjs +33 -33
  109. package/lib/locale/lv.mjs.map +1 -1
  110. package/lib/locale/nl.mjs +10 -10
  111. package/lib/locale/nl.mjs.map +1 -1
  112. package/lib/locale/no.mjs +11 -11
  113. package/lib/locale/no.mjs.map +1 -1
  114. package/lib/locale/pl.mjs +7 -7
  115. package/lib/locale/pl.mjs.map +1 -1
  116. package/lib/locale/pt.mjs +11 -11
  117. package/lib/locale/pt.mjs.map +1 -1
  118. package/lib/locale/ro.mjs +9 -9
  119. package/lib/locale/ro.mjs.map +1 -1
  120. package/lib/locale/ru.mjs +6 -6
  121. package/lib/locale/ru.mjs.map +1 -1
  122. package/lib/locale/sk.mjs +5 -5
  123. package/lib/locale/sk.mjs.map +1 -1
  124. package/lib/locale/sl.mjs +4 -4
  125. package/lib/locale/sl.mjs.map +1 -1
  126. package/lib/locale/sr-Cyrl.mjs +30 -30
  127. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  128. package/lib/locale/sr-Latn.mjs +28 -28
  129. package/lib/locale/sr-Latn.mjs.map +1 -1
  130. package/lib/locale/sv.mjs +17 -17
  131. package/lib/locale/sv.mjs.map +1 -1
  132. package/lib/locale/th.mjs +30 -30
  133. package/lib/locale/th.mjs.map +1 -1
  134. package/lib/locale/tr.mjs +31 -31
  135. package/lib/locale/tr.mjs.map +1 -1
  136. package/lib/locale/uk.mjs +29 -29
  137. package/lib/locale/uk.mjs.map +1 -1
  138. package/lib/locale/vi.mjs +28 -28
  139. package/lib/locale/vi.mjs.map +1 -1
  140. package/lib/locale/zh-Hans.mjs +31 -31
  141. package/lib/locale/zh-Hans.mjs.map +1 -1
  142. package/lib/locale/zh-Hant.mjs +31 -31
  143. package/lib/locale/zh-Hant.mjs.map +1 -1
  144. package/lib/styles/tools/_functions.sass +1 -1
  145. package/package.json +7 -2
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, PropType, ComponentPublicInstance, FunctionalComponent, Ref } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, PropType, ComponentPublicInstance, FunctionalComponent, ComputedRef, Ref } from 'vue';
3
3
 
4
4
  type ClassValue = any;
5
5
 
@@ -33,6 +33,17 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
33
33
  type EventProp<T extends any[] = any[], F = (...args: T) => void> = F;
34
34
  declare const EventProp: <T extends any[] = any[]>() => PropType<EventProp<T>>;
35
35
 
36
+ type VCounterSlot = {
37
+ counter: string;
38
+ max: string | number | undefined;
39
+ value: string | number | undefined;
40
+ };
41
+
42
+ interface LoaderSlotProps {
43
+ color: string | undefined;
44
+ isActive: boolean;
45
+ }
46
+
36
47
  type Density = null | 'default' | 'comfortable' | 'compact';
37
48
 
38
49
  type ValidationResult = string | boolean;
@@ -61,6 +72,32 @@ type JSXComponent<Props = any> = {
61
72
  type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
62
73
  declare const IconValue: PropType<IconValue>;
63
74
 
75
+ type VMessageSlot = {
76
+ message: string;
77
+ };
78
+
79
+ interface VInputSlot {
80
+ id: ComputedRef<string>;
81
+ messagesId: ComputedRef<string>;
82
+ isDirty: ComputedRef<boolean>;
83
+ isDisabled: ComputedRef<boolean>;
84
+ isReadonly: ComputedRef<boolean>;
85
+ isPristine: Ref<boolean>;
86
+ isValid: ComputedRef<boolean | null>;
87
+ isValidating: Ref<boolean>;
88
+ reset: () => void;
89
+ resetValidation: () => void;
90
+ validate: () => void;
91
+ }
92
+
93
+ interface DefaultInputSlot {
94
+ isActive: Ref<boolean>;
95
+ isFocused: Ref<boolean>;
96
+ controlRef: Ref<HTMLElement | undefined>;
97
+ focus: () => void;
98
+ blur: () => void;
99
+ }
100
+
64
101
  interface LocationStrategyData {
65
102
  contentEl: Ref<HTMLElement | undefined>;
66
103
  target: Ref<HTMLElement | [x: number, y: number] | undefined>;
@@ -202,14 +239,59 @@ declare const VDateInput: {
202
239
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
203
240
  } & {
204
241
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
242
+ message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
243
+ clear?: ((arg: DefaultInputSlot & {
244
+ props: Record<string, any>;
245
+ }) => vue.VNodeChild) | undefined;
246
+ details?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
247
+ label?: ((arg: DefaultInputSlot & {
248
+ label: string | undefined;
249
+ props: Record<string, any>;
250
+ }) => vue.VNodeChild) | undefined;
251
+ append?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
252
+ prepend?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
253
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
254
+ counter?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
255
+ 'prepend-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
256
+ 'append-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
205
257
  actions?: ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
206
258
  default?: (() => vue.VNodeChild) | undefined;
207
259
  };
208
260
  'v-slots'?: {
261
+ message?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
262
+ clear?: false | ((arg: DefaultInputSlot & {
263
+ props: Record<string, any>;
264
+ }) => vue.VNodeChild) | undefined;
265
+ details?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
266
+ label?: false | ((arg: DefaultInputSlot & {
267
+ label: string | undefined;
268
+ props: Record<string, any>;
269
+ }) => vue.VNodeChild) | undefined;
270
+ append?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
271
+ prepend?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
272
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
273
+ counter?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
274
+ 'prepend-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
275
+ 'append-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
209
276
  actions?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
210
277
  default?: false | (() => vue.VNodeChild) | undefined;
211
278
  } | undefined;
212
279
  } & {
280
+ "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
281
+ "v-slot:clear"?: false | ((arg: DefaultInputSlot & {
282
+ props: Record<string, any>;
283
+ }) => vue.VNodeChild) | undefined;
284
+ "v-slot:details"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
285
+ "v-slot:label"?: false | ((arg: DefaultInputSlot & {
286
+ label: string | undefined;
287
+ props: Record<string, any>;
288
+ }) => vue.VNodeChild) | undefined;
289
+ "v-slot:append"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
290
+ "v-slot:prepend"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
291
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
292
+ "v-slot:counter"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
293
+ "v-slot:prepend-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
294
+ "v-slot:append-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
213
295
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
214
296
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
215
297
  } & {
@@ -317,14 +399,59 @@ declare const VDateInput: {
317
399
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
318
400
  } & {
319
401
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
402
+ message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
403
+ clear?: ((arg: DefaultInputSlot & {
404
+ props: Record<string, any>;
405
+ }) => vue.VNodeChild) | undefined;
406
+ details?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
407
+ label?: ((arg: DefaultInputSlot & {
408
+ label: string | undefined;
409
+ props: Record<string, any>;
410
+ }) => vue.VNodeChild) | undefined;
411
+ append?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
412
+ prepend?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
413
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
414
+ counter?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
415
+ 'prepend-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
416
+ 'append-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
320
417
  actions?: ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
321
418
  default?: (() => vue.VNodeChild) | undefined;
322
419
  };
323
420
  'v-slots'?: {
421
+ message?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
422
+ clear?: false | ((arg: DefaultInputSlot & {
423
+ props: Record<string, any>;
424
+ }) => vue.VNodeChild) | undefined;
425
+ details?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
426
+ label?: false | ((arg: DefaultInputSlot & {
427
+ label: string | undefined;
428
+ props: Record<string, any>;
429
+ }) => vue.VNodeChild) | undefined;
430
+ append?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
431
+ prepend?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
432
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
433
+ counter?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
434
+ 'prepend-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
435
+ 'append-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
324
436
  actions?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
325
437
  default?: false | (() => vue.VNodeChild) | undefined;
326
438
  } | undefined;
327
439
  } & {
440
+ "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
441
+ "v-slot:clear"?: false | ((arg: DefaultInputSlot & {
442
+ props: Record<string, any>;
443
+ }) => vue.VNodeChild) | undefined;
444
+ "v-slot:details"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
445
+ "v-slot:label"?: false | ((arg: DefaultInputSlot & {
446
+ label: string | undefined;
447
+ props: Record<string, any>;
448
+ }) => vue.VNodeChild) | undefined;
449
+ "v-slot:append"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
450
+ "v-slot:prepend"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
451
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
452
+ "v-slot:counter"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
453
+ "v-slot:prepend-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
454
+ "v-slot:append-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
328
455
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
329
456
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
330
457
  } & {
@@ -382,6 +509,21 @@ declare const VDateInput: {
382
509
  hideHeader: boolean;
383
510
  hideActions: boolean;
384
511
  }, true, {}, vue.SlotsType<Partial<{
512
+ message: (arg: VMessageSlot) => vue.VNode[];
513
+ clear: (arg: DefaultInputSlot & {
514
+ props: Record<string, any>;
515
+ }) => vue.VNode[];
516
+ details: (arg: VInputSlot) => vue.VNode[];
517
+ label: (arg: DefaultInputSlot & {
518
+ label: string | undefined;
519
+ props: Record<string, any>;
520
+ }) => vue.VNode[];
521
+ append: (arg: VInputSlot) => vue.VNode[];
522
+ prepend: (arg: VInputSlot) => vue.VNode[];
523
+ loader: (arg: LoaderSlotProps) => vue.VNode[];
524
+ counter: (arg: VCounterSlot) => vue.VNode[];
525
+ 'prepend-inner': (arg: DefaultInputSlot) => vue.VNode[];
526
+ 'append-inner': (arg: DefaultInputSlot) => vue.VNode[];
385
527
  actions: (arg: VDateInputActionsSlot) => vue.VNode[];
386
528
  default: () => vue.VNode[];
387
529
  }>>, {
@@ -492,14 +634,59 @@ declare const VDateInput: {
492
634
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
493
635
  } & {
494
636
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
637
+ message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
638
+ clear?: ((arg: DefaultInputSlot & {
639
+ props: Record<string, any>;
640
+ }) => vue.VNodeChild) | undefined;
641
+ details?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
642
+ label?: ((arg: DefaultInputSlot & {
643
+ label: string | undefined;
644
+ props: Record<string, any>;
645
+ }) => vue.VNodeChild) | undefined;
646
+ append?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
647
+ prepend?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
648
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
649
+ counter?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
650
+ 'prepend-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
651
+ 'append-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
495
652
  actions?: ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
496
653
  default?: (() => vue.VNodeChild) | undefined;
497
654
  };
498
655
  'v-slots'?: {
656
+ message?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
657
+ clear?: false | ((arg: DefaultInputSlot & {
658
+ props: Record<string, any>;
659
+ }) => vue.VNodeChild) | undefined;
660
+ details?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
661
+ label?: false | ((arg: DefaultInputSlot & {
662
+ label: string | undefined;
663
+ props: Record<string, any>;
664
+ }) => vue.VNodeChild) | undefined;
665
+ append?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
666
+ prepend?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
667
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
668
+ counter?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
669
+ 'prepend-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
670
+ 'append-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
499
671
  actions?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
500
672
  default?: false | (() => vue.VNodeChild) | undefined;
501
673
  } | undefined;
502
674
  } & {
675
+ "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
676
+ "v-slot:clear"?: false | ((arg: DefaultInputSlot & {
677
+ props: Record<string, any>;
678
+ }) => vue.VNodeChild) | undefined;
679
+ "v-slot:details"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
680
+ "v-slot:label"?: false | ((arg: DefaultInputSlot & {
681
+ label: string | undefined;
682
+ props: Record<string, any>;
683
+ }) => vue.VNodeChild) | undefined;
684
+ "v-slot:append"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
685
+ "v-slot:prepend"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
686
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
687
+ "v-slot:counter"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
688
+ "v-slot:prepend-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
689
+ "v-slot:append-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
503
690
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
504
691
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
505
692
  } & {
@@ -661,14 +848,59 @@ declare const VDateInput: {
661
848
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
662
849
  } & {
663
850
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
851
+ message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
852
+ clear?: ((arg: DefaultInputSlot & {
853
+ props: Record<string, any>;
854
+ }) => vue.VNodeChild) | undefined;
855
+ details?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
856
+ label?: ((arg: DefaultInputSlot & {
857
+ label: string | undefined;
858
+ props: Record<string, any>;
859
+ }) => vue.VNodeChild) | undefined;
860
+ append?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
861
+ prepend?: ((arg: VInputSlot) => vue.VNodeChild) | undefined;
862
+ loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
863
+ counter?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
864
+ 'prepend-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
865
+ 'append-inner'?: ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
664
866
  actions?: ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
665
867
  default?: (() => vue.VNodeChild) | undefined;
666
868
  };
667
869
  'v-slots'?: {
870
+ message?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
871
+ clear?: false | ((arg: DefaultInputSlot & {
872
+ props: Record<string, any>;
873
+ }) => vue.VNodeChild) | undefined;
874
+ details?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
875
+ label?: false | ((arg: DefaultInputSlot & {
876
+ label: string | undefined;
877
+ props: Record<string, any>;
878
+ }) => vue.VNodeChild) | undefined;
879
+ append?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
880
+ prepend?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
881
+ loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
882
+ counter?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
883
+ 'prepend-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
884
+ 'append-inner'?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
668
885
  actions?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
669
886
  default?: false | (() => vue.VNodeChild) | undefined;
670
887
  } | undefined;
671
888
  } & {
889
+ "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
890
+ "v-slot:clear"?: false | ((arg: DefaultInputSlot & {
891
+ props: Record<string, any>;
892
+ }) => vue.VNodeChild) | undefined;
893
+ "v-slot:details"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
894
+ "v-slot:label"?: false | ((arg: DefaultInputSlot & {
895
+ label: string | undefined;
896
+ props: Record<string, any>;
897
+ }) => vue.VNodeChild) | undefined;
898
+ "v-slot:append"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
899
+ "v-slot:prepend"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
900
+ "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
901
+ "v-slot:counter"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
902
+ "v-slot:prepend-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
903
+ "v-slot:append-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
672
904
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
673
905
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
674
906
  } & {
@@ -728,6 +960,21 @@ declare const VDateInput: {
728
960
  hideHeader: boolean;
729
961
  hideActions: boolean;
730
962
  }, {}, string, vue.SlotsType<Partial<{
963
+ message: (arg: VMessageSlot) => vue.VNode[];
964
+ clear: (arg: DefaultInputSlot & {
965
+ props: Record<string, any>;
966
+ }) => vue.VNode[];
967
+ details: (arg: VInputSlot) => vue.VNode[];
968
+ label: (arg: DefaultInputSlot & {
969
+ label: string | undefined;
970
+ props: Record<string, any>;
971
+ }) => vue.VNode[];
972
+ append: (arg: VInputSlot) => vue.VNode[];
973
+ prepend: (arg: VInputSlot) => vue.VNode[];
974
+ loader: (arg: LoaderSlotProps) => vue.VNode[];
975
+ counter: (arg: VCounterSlot) => vue.VNode[];
976
+ 'prepend-inner': (arg: DefaultInputSlot) => vue.VNode[];
977
+ 'append-inner': (arg: DefaultInputSlot) => vue.VNode[];
731
978
  actions: (arg: VDateInputActionsSlot) => vue.VNode[];
732
979
  default: () => vue.VNode[];
733
980
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
@@ -1,5 +1,5 @@
1
1
  .v-file-upload {
2
- padding: 64px 0;
2
+ padding: 64px 16px;
3
3
  flex-direction: column;
4
4
  justify-content: center;
5
5
  align-items: center;
@@ -41,6 +41,7 @@
41
41
  .v-file-upload-title {
42
42
  font-size: 1.5rem;
43
43
  font-weight: 600;
44
+ text-align: center;
44
45
  }
45
46
 
46
47
  .v-file-upload-icon {
@@ -64,6 +65,9 @@
64
65
  justify-content: center;
65
66
  width: 100%;
66
67
  }
68
+ .v-file-upload-divider .v-divider__wrapper {
69
+ max-width: 100%;
70
+ }
67
71
 
68
72
  .v-file-upload-items {
69
73
  margin: 16px 0;
@@ -46,6 +46,7 @@
46
46
  .v-file-upload-title
47
47
  font-size: $file-upload-title-font-size
48
48
  font-weight: 600
49
+ text-align: center
49
50
 
50
51
  .v-file-upload-icon
51
52
  opacity: var(--v-medium-emphasis-opacity)
@@ -67,6 +68,9 @@
67
68
  justify-content: center
68
69
  width: 100%
69
70
 
71
+ .v-divider__wrapper
72
+ max-width: 100%
73
+
70
74
  .v-file-upload-items
71
75
  margin: $file-upload-items-margin
72
76
 
@@ -2,7 +2,7 @@
2
2
  @use '../../styles/settings';
3
3
 
4
4
  $file-upload-title-font-size: 1.5rem !default;
5
- $file-upload-padding: 64px 0 !default;
5
+ $file-upload-padding: 64px 16px !default;
6
6
  $file-upload-border-radius: 4px !default;
7
7
  $file-upload-border-width: 2px !default;
8
8
  $file-upload-title-font-weight: 600 !default;
@@ -7,6 +7,8 @@ import { VBtn } from "../../components/VBtn/index.mjs";
7
7
  import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs";
8
8
  import { VDivider } from "../../components/VDivider/index.mjs";
9
9
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.mjs"; // Composables
10
+ import { useHold } from "./hold.mjs";
11
+ import { useFocus } from "../../composables/focus.mjs";
10
12
  import { useForm } from "../../composables/form.mjs";
11
13
  import { forwardRefs } from "../../composables/forwardRefs.mjs";
12
14
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
@@ -39,7 +41,7 @@ const makeVNumberInputProps = propsFactory({
39
41
  type: Number,
40
42
  default: 0
41
43
  },
42
- ...omit(makeVTextFieldProps({}), ['modelValue'])
44
+ ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
43
45
  }, 'VNumberInput');
44
46
  export const VNumberInput = genericComponent()({
45
47
  name: 'VNumberInput',
@@ -54,9 +56,19 @@ export const VNumberInput = genericComponent()({
54
56
  slots
55
57
  } = _ref;
56
58
  const vTextFieldRef = ref();
59
+ const {
60
+ holdStart,
61
+ holdStop
62
+ } = useHold({
63
+ toggleUpDown
64
+ });
57
65
  const form = useForm(props);
58
66
  const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
59
- const isFocused = ref(false);
67
+ const {
68
+ isFocused,
69
+ focus,
70
+ blur
71
+ } = useFocus(props);
60
72
  function correctPrecision(val) {
61
73
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
62
74
  const fixed = precision == null ? String(val) : val.toFixed(precision);
@@ -68,8 +80,8 @@ export const VNumberInput = genericComponent()({
68
80
  watchEffect(() => {
69
81
  if (isFocused.value && !controlsDisabled.value) {
70
82
  // ignore external changes
71
- } else if (model.value == null || controlsDisabled.value) {
72
- _inputText.value = model.value && !isNaN(model.value) ? String(model.value) : null;
83
+ } else if (model.value == null) {
84
+ _inputText.value = null;
73
85
  } else if (!isNaN(model.value)) {
74
86
  _inputText.value = correctPrecision(model.value);
75
87
  }
@@ -102,10 +114,18 @@ export const VNumberInput = genericComponent()({
102
114
  const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small');
103
115
  const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
104
116
  const incrementSlotProps = computed(() => ({
105
- click: onClickUp
117
+ props: {
118
+ onClick: onControlClick,
119
+ onPointerup: onControlMouseup,
120
+ onPointerdown: onUpControlMousedown
121
+ }
106
122
  }));
107
123
  const decrementSlotProps = computed(() => ({
108
- click: onClickDown
124
+ props: {
125
+ onClick: onControlClick,
126
+ onPointerup: onControlMouseup,
127
+ onPointerdown: onDownControlMousedown
128
+ }
109
129
  }));
110
130
  watch(() => props.precision, () => formatInputValue());
111
131
  onMounted(() => {
@@ -132,14 +152,6 @@ export const VNumberInput = genericComponent()({
132
152
  if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
133
153
  }
134
154
  }
135
- function onClickUp(e) {
136
- e.stopPropagation();
137
- toggleUpDown();
138
- }
139
- function onClickDown(e) {
140
- e.stopPropagation();
141
- toggleUpDown(false);
142
- }
143
155
  function onBeforeinput(e) {
144
156
  if (!e.data) return;
145
157
  const existingTxt = e.target?.value;
@@ -177,8 +189,29 @@ export const VNumberInput = genericComponent()({
177
189
  }
178
190
  }
179
191
  }
180
- function onControlMousedown(e) {
192
+ function onControlClick(e) {
193
+ e.stopPropagation();
194
+ }
195
+ function onControlMouseup(e) {
196
+ const el = e.currentTarget;
197
+ el?.releasePointerCapture(e.pointerId);
198
+ e.preventDefault();
199
+ e.stopPropagation();
200
+ holdStop();
201
+ }
202
+ function onUpControlMousedown(e) {
203
+ const el = e.currentTarget;
204
+ el?.setPointerCapture(e.pointerId);
205
+ e.preventDefault();
206
+ e.stopPropagation();
207
+ holdStart('up');
208
+ }
209
+ function onDownControlMousedown(e) {
210
+ const el = e.currentTarget;
211
+ el?.setPointerCapture(e.pointerId);
212
+ e.preventDefault();
181
213
  e.stopPropagation();
214
+ holdStart('down');
182
215
  }
183
216
  function clampModel() {
184
217
  if (controlsDisabled.value) return;
@@ -207,11 +240,11 @@ export const VNumberInput = genericComponent()({
207
240
  inputText.value = model.value.toString();
208
241
  }
209
242
  function onFocus() {
210
- isFocused.value = true;
243
+ focus();
211
244
  trimDecimalZeros();
212
245
  }
213
246
  function onBlur() {
214
- isFocused.value = false;
247
+ blur();
215
248
  clampModel();
216
249
  }
217
250
  useRender(() => {
@@ -228,8 +261,9 @@ export const VNumberInput = genericComponent()({
228
261
  "data-testid": "increment",
229
262
  "aria-hidden": "true",
230
263
  "icon": incrementIcon.value,
231
- "onClick": onClickUp,
232
- "onMousedown": onControlMousedown,
264
+ "onClick": onControlClick,
265
+ "onPointerup": onControlMouseup,
266
+ "onPointerdown": onUpControlMousedown,
233
267
  "size": controlNodeSize.value,
234
268
  "tabindex": "-1"
235
269
  }, null) : _createVNode(VDefaultsProvider, {
@@ -258,8 +292,9 @@ export const VNumberInput = genericComponent()({
258
292
  "icon": decrementIcon.value,
259
293
  "size": controlNodeSize.value,
260
294
  "tabindex": "-1",
261
- "onClick": onClickDown,
262
- "onMousedown": onControlMousedown
295
+ "onClick": onControlClick,
296
+ "onPointerup": onControlMouseup,
297
+ "onPointerdown": onDownControlMousedown
263
298
  }, null) : _createVNode(VDefaultsProvider, {
264
299
  "key": "decrement-defaults",
265
300
  "defaults": {
@@ -303,6 +338,7 @@ export const VNumberInput = genericComponent()({
303
338
  "ref": vTextFieldRef,
304
339
  "modelValue": inputText.value,
305
340
  "onUpdate:modelValue": $event => inputText.value = $event,
341
+ "validationValue": model.value,
306
342
  "onBeforeinput": onBeforeinput,
307
343
  "onFocus": onFocus,
308
344
  "onBlur": onBlur,