vuetify 3.1.14 → 3.1.16

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 (113) hide show
  1. package/dist/json/attributes.json +193 -141
  2. package/dist/json/importMap.json +8 -8
  3. package/dist/json/tags.json +13 -0
  4. package/dist/json/web-types.json +513 -282
  5. package/dist/vuetify-labs.css +465 -457
  6. package/dist/vuetify-labs.d.ts +521 -163
  7. package/dist/vuetify-labs.esm.js +272 -179
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +272 -179
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +17 -9
  12. package/dist/vuetify.d.ts +470 -145
  13. package/dist/vuetify.esm.js +178 -106
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +178 -106
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +638 -624
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.css +9 -0
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +50 -6
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/VAutocomplete.sass +10 -0
  24. package/lib/components/VAutocomplete/index.d.ts +29 -17
  25. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +31 -16
  26. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  27. package/lib/components/VBreadcrumbs/index.d.ts +3 -3
  28. package/lib/components/VCard/VCard.mjs.map +1 -1
  29. package/lib/components/VCard/index.d.ts +21 -16
  30. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  31. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  32. package/lib/components/VCheckbox/index.d.ts +22 -1
  33. package/lib/components/VCombobox/VCombobox.css +1 -1
  34. package/lib/components/VCombobox/VCombobox.mjs +6 -4
  35. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  36. package/lib/components/VCombobox/VCombobox.sass +1 -1
  37. package/lib/components/VCombobox/index.d.ts +29 -17
  38. package/lib/components/VDialog/VDialog.mjs +2 -2
  39. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  40. package/lib/components/VField/VField.css +0 -1
  41. package/lib/components/VField/VField.sass +0 -1
  42. package/lib/components/VField/index.d.ts +6 -0
  43. package/lib/components/VFileInput/VFileInput.mjs +13 -17
  44. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  45. package/lib/components/VFileInput/index.d.ts +68 -23
  46. package/lib/components/VInput/VInput.mjs +14 -7
  47. package/lib/components/VInput/VInput.mjs.map +1 -1
  48. package/lib/components/VInput/index.d.ts +22 -1
  49. package/lib/components/VList/VList.mjs +3 -22
  50. package/lib/components/VList/VList.mjs.map +1 -1
  51. package/lib/components/VOverlay/locationStrategies.mjs +9 -4
  52. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  53. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  54. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  55. package/lib/components/VRadioGroup/index.d.ts +22 -1
  56. package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -2
  57. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  58. package/lib/components/VRangeSlider/index.d.ts +22 -1
  59. package/lib/components/VSelect/VSelect.mjs +6 -0
  60. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  61. package/lib/components/VSelect/index.d.ts +32 -17
  62. package/lib/components/VSlideGroup/VSlideGroup.mjs +2 -2
  63. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  64. package/lib/components/VSlider/VSlider.mjs +2 -2
  65. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  66. package/lib/components/VSlider/index.d.ts +22 -1
  67. package/lib/components/VSwitch/VSwitch.mjs +5 -3
  68. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  69. package/lib/components/VSwitch/index.d.ts +43 -1
  70. package/lib/components/VTextField/VTextField.mjs +4 -12
  71. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  72. package/lib/components/VTextField/index.d.ts +70 -22
  73. package/lib/components/VTextarea/VTextarea.mjs +4 -12
  74. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  75. package/lib/components/VTextarea/index.d.ts +61 -22
  76. package/lib/components/VTreeview/_mixins.sass +0 -0
  77. package/lib/components/VTreeview/util/filterTreeItems.mjs +0 -0
  78. package/lib/components/VValidation/index.d.ts +10 -1
  79. package/lib/components/index.d.ts +468 -143
  80. package/lib/composables/focus.mjs +3 -2
  81. package/lib/composables/focus.mjs.map +1 -1
  82. package/lib/composables/items.mjs +7 -2
  83. package/lib/composables/items.mjs.map +1 -1
  84. package/lib/entry-bundler.mjs +1 -1
  85. package/lib/framework.mjs +1 -1
  86. package/lib/iconsets/mdi-svg.mjs +2 -2
  87. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  88. package/lib/index.d.ts +2 -2
  89. package/lib/labs/VDataTable/VDataTable.mjs +3 -3
  90. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  91. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  92. package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
  93. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  94. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
  95. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  96. package/lib/labs/VDataTable/VDataTableRows.mjs +52 -44
  97. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  98. package/lib/labs/VDataTable/VDataTableServer.mjs +3 -2
  99. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  100. package/lib/labs/VDataTable/VDataTableVirtual.mjs +0 -1
  101. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  102. package/lib/labs/VDataTable/composables/options.mjs +2 -1
  103. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  104. package/lib/labs/VDataTable/index.d.ts +44 -11
  105. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +1 -0
  106. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  107. package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
  108. package/lib/labs/components.d.ts +53 -20
  109. package/lib/locale/el.mjs +0 -0
  110. package/lib/locale/index.mjs +0 -0
  111. package/lib/util/helpers.mjs +26 -0
  112. package/lib/util/helpers.mjs.map +1 -1
  113. package/package.json +3 -3
@@ -69,11 +69,11 @@ declare const VFileInput: {
69
69
  errorMessages: string | string[];
70
70
  maxErrors: string | number;
71
71
  rules: ValidationRule[];
72
+ persistentHint: boolean;
72
73
  clearable: boolean;
73
74
  dirty: boolean;
74
75
  persistentClear: boolean;
75
76
  singleLine: boolean;
76
- persistentHint: boolean;
77
77
  chips: boolean;
78
78
  counterSizeString: string;
79
79
  counterString: string;
@@ -97,11 +97,11 @@ declare const VFileInput: {
97
97
  errorMessages: string | string[];
98
98
  maxErrors: string | number;
99
99
  rules: ValidationRule[];
100
+ persistentHint: boolean;
100
101
  clearable: boolean;
101
102
  dirty: boolean;
102
103
  persistentClear: boolean;
103
104
  singleLine: boolean;
104
- persistentHint: boolean;
105
105
  chips: boolean;
106
106
  counterSizeString: string;
107
107
  counterString: string;
@@ -122,10 +122,11 @@ declare const VFileInput: {
122
122
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
123
123
  'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
124
124
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
125
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
125
126
  validateOn?: "input" | "blur" | "submit" | undefined;
126
127
  validationValue?: any;
127
- hideDetails?: boolean | "auto" | undefined;
128
128
  hint?: string | undefined;
129
+ hideDetails?: boolean | "auto" | undefined;
129
130
  } & {
130
131
  $children?: {} | vue.VNodeChild | {
131
132
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & ((args_0: VFieldSlot) => vue.VNodeChild)) | undefined;
@@ -176,9 +177,10 @@ declare const VFileInput: {
176
177
  "v-slot:counter"?: false | (() => vue.VNodeChild) | undefined;
177
178
  } & {
178
179
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
180
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
179
181
  "onClick:control"?: ((e: MouseEvent) => any) | undefined;
180
182
  "onMousedown:control"?: ((e: MouseEvent) => any) | undefined;
181
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "reverse" | "error" | "active" | "direction" | "disabled" | "multiple" | "readonly" | "counter" | "messages" | "density" | "variant" | "modelValue" | "prependIcon" | "clearIcon" | "focused" | "errorMessages" | "maxErrors" | "rules" | "clearable" | "dirty" | "persistentClear" | "singleLine" | "persistentHint" | "chips" | "counterSizeString" | "counterString" | "showSize">;
183
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "reverse" | "error" | "active" | "direction" | "disabled" | "multiple" | "readonly" | "counter" | "messages" | "density" | "variant" | "modelValue" | "prependIcon" | "clearIcon" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint" | "clearable" | "dirty" | "persistentClear" | "singleLine" | "chips" | "counterSizeString" | "counterString" | "showSize">;
182
184
  $attrs: {
183
185
  [x: string]: unknown;
184
186
  };
@@ -190,7 +192,7 @@ declare const VFileInput: {
190
192
  }>;
191
193
  $root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
192
194
  $parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
193
- $emit: ((event: "update:modelValue", files: File[]) => void) & ((event: "click:control", e: MouseEvent) => void) & ((event: "mousedown:control", e: MouseEvent) => void);
195
+ $emit: ((event: "update:modelValue", files: File[]) => void) & ((event: "update:focused", focused: boolean) => void) & ((event: "click:control", e: MouseEvent) => void) & ((event: "mousedown:control", e: MouseEvent) => void);
194
196
  $el: any;
195
197
  $options: vue.ComponentOptionsBase<{
196
198
  reverse: boolean;
@@ -211,11 +213,11 @@ declare const VFileInput: {
211
213
  errorMessages: string | string[];
212
214
  maxErrors: string | number;
213
215
  rules: ValidationRule[];
216
+ persistentHint: boolean;
214
217
  clearable: boolean;
215
218
  dirty: boolean;
216
219
  persistentClear: boolean;
217
220
  singleLine: boolean;
218
- persistentHint: boolean;
219
221
  chips: boolean;
220
222
  counterSizeString: string;
221
223
  counterString: string;
@@ -236,10 +238,11 @@ declare const VFileInput: {
236
238
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
237
239
  'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
238
240
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
241
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
239
242
  validateOn?: "input" | "blur" | "submit" | undefined;
240
243
  validationValue?: any;
241
- hideDetails?: boolean | "auto" | undefined;
242
244
  hint?: string | undefined;
245
+ hideDetails?: boolean | "auto" | undefined;
243
246
  } & {
244
247
  $children?: {} | vue.VNodeChild | {
245
248
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & ((args_0: VFieldSlot) => vue.VNodeChild)) | undefined;
@@ -290,6 +293,7 @@ declare const VFileInput: {
290
293
  "v-slot:counter"?: false | (() => vue.VNodeChild) | undefined;
291
294
  } & {
292
295
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
296
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
293
297
  "onClick:control"?: ((e: MouseEvent) => any) | undefined;
294
298
  "onMousedown:control"?: ((e: MouseEvent) => any) | undefined;
295
299
  }, Omit<Omit<{
@@ -306,6 +310,7 @@ declare const VFileInput: {
306
310
  errorMessages: string | string[];
307
311
  maxErrors: string | number;
308
312
  rules: ValidationRule[];
313
+ persistentHint: boolean;
309
314
  }> & Omit<{
310
315
  error: boolean;
311
316
  direction: "horizontal" | "vertical";
@@ -317,6 +322,7 @@ declare const VFileInput: {
317
322
  errorMessages: string | string[];
318
323
  maxErrors: string | number;
319
324
  rules: ValidationRule[];
325
+ persistentHint: boolean;
320
326
  } & {
321
327
  id?: string | undefined;
322
328
  name?: string | undefined;
@@ -326,8 +332,10 @@ declare const VFileInput: {
326
332
  appendIcon?: IconValue | undefined;
327
333
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
328
334
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
335
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
329
336
  validateOn?: "input" | "blur" | "submit" | undefined;
330
337
  validationValue?: any;
338
+ hint?: string | undefined;
331
339
  hideDetails?: boolean | "auto" | undefined;
332
340
  } & {
333
341
  $children?: {} | vue.VNodeChild | {
@@ -355,7 +363,7 @@ declare const VFileInput: {
355
363
  "v-slot:details"?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
356
364
  } & {
357
365
  "onUpdate:modelValue"?: ((val: any) => any) | undefined;
358
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules">;
366
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint">;
359
367
  $attrs: {
360
368
  [x: string]: unknown;
361
369
  };
@@ -380,6 +388,7 @@ declare const VFileInput: {
380
388
  errorMessages: string | string[];
381
389
  maxErrors: string | number;
382
390
  rules: ValidationRule[];
391
+ persistentHint: boolean;
383
392
  } & {
384
393
  id?: string | undefined;
385
394
  name?: string | undefined;
@@ -389,8 +398,10 @@ declare const VFileInput: {
389
398
  appendIcon?: IconValue | undefined;
390
399
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
391
400
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
401
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
392
402
  validateOn?: "input" | "blur" | "submit" | undefined;
393
403
  validationValue?: any;
404
+ hint?: string | undefined;
394
405
  hideDetails?: boolean | "auto" | undefined;
395
406
  } & {
396
407
  $children?: {} | vue.VNodeChild | {
@@ -435,6 +446,7 @@ declare const VFileInput: {
435
446
  errorMessages: string | string[];
436
447
  maxErrors: string | number;
437
448
  rules: ValidationRule[];
449
+ persistentHint: boolean;
438
450
  }, {}, string> & {
439
451
  beforeCreate?: ((() => void) | (() => void)[]) | undefined;
440
452
  created?: ((() => void) | (() => void)[]) | undefined;
@@ -466,6 +478,7 @@ declare const VFileInput: {
466
478
  errorMessages: string | string[];
467
479
  maxErrors: string | number;
468
480
  rules: ValidationRule[];
481
+ persistentHint: boolean;
469
482
  } & {
470
483
  id?: string | undefined;
471
484
  name?: string | undefined;
@@ -475,8 +488,10 @@ declare const VFileInput: {
475
488
  appendIcon?: IconValue | undefined;
476
489
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
477
490
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
491
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
478
492
  validateOn?: "input" | "blur" | "submit" | undefined;
479
493
  validationValue?: any;
494
+ hint?: string | undefined;
480
495
  hideDetails?: boolean | "auto" | undefined;
481
496
  } & {
482
497
  $children?: {} | vue.VNodeChild | {
@@ -508,9 +523,10 @@ declare const VFileInput: {
508
523
  reset: () => void;
509
524
  resetValidation: () => void;
510
525
  validate: () => Promise<string[]>;
511
- }> & {} & vue.ComponentCustomProperties & {}, "id" | "name" | "label" | "$children" | "v-slot:default" | "$slots" | "v-slots" | keyof vue.VNodeProps | keyof vue.AllowedComponentProps | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "prependIcon" | "appendIcon" | "onClick:append" | "onClick:prepend" | "validateOn" | "validationValue" | "hideDetails" | ("error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules") | "v-slot:details">, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
526
+ }> & {} & vue.ComponentCustomProperties & {}, "id" | "name" | "label" | "$children" | "v-slot:default" | "$slots" | "v-slots" | keyof vue.VNodeProps | keyof vue.AllowedComponentProps | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "prependIcon" | "appendIcon" | "onClick:append" | "onClick:prepend" | "onUpdate:focused" | "validateOn" | "validationValue" | "hint" | "hideDetails" | ("error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint") | "v-slot:details">, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
512
527
  'click:control': (e: MouseEvent) => true;
513
528
  'mousedown:control': (e: MouseEvent) => true;
529
+ 'update:focused': (focused: boolean) => true;
514
530
  'update:modelValue': (files: File[]) => true;
515
531
  }, string, {
516
532
  reverse: boolean;
@@ -531,11 +547,11 @@ declare const VFileInput: {
531
547
  errorMessages: string | string[];
532
548
  maxErrors: string | number;
533
549
  rules: ValidationRule[];
550
+ persistentHint: boolean;
534
551
  clearable: boolean;
535
552
  dirty: boolean;
536
553
  persistentClear: boolean;
537
554
  singleLine: boolean;
538
- persistentHint: boolean;
539
555
  chips: boolean;
540
556
  counterSizeString: string;
541
557
  counterString: string;
@@ -579,11 +595,11 @@ declare const VFileInput: {
579
595
  errorMessages: string | string[];
580
596
  maxErrors: string | number;
581
597
  rules: ValidationRule[];
598
+ persistentHint: boolean;
582
599
  clearable: boolean;
583
600
  dirty: boolean;
584
601
  persistentClear: boolean;
585
602
  singleLine: boolean;
586
- persistentHint: boolean;
587
603
  chips: boolean;
588
604
  counterSizeString: string;
589
605
  counterString: string;
@@ -604,10 +620,11 @@ declare const VFileInput: {
604
620
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
605
621
  'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
606
622
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
623
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
607
624
  validateOn?: "input" | "blur" | "submit" | undefined;
608
625
  validationValue?: any;
609
- hideDetails?: boolean | "auto" | undefined;
610
626
  hint?: string | undefined;
627
+ hideDetails?: boolean | "auto" | undefined;
611
628
  } & {
612
629
  $children?: {} | vue.VNodeChild | {
613
630
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & ((args_0: VFieldSlot) => vue.VNodeChild)) | undefined;
@@ -658,6 +675,7 @@ declare const VFileInput: {
658
675
  "v-slot:counter"?: false | (() => vue.VNodeChild) | undefined;
659
676
  } & {
660
677
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
678
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
661
679
  "onClick:control"?: ((e: MouseEvent) => any) | undefined;
662
680
  "onMousedown:control"?: ((e: MouseEvent) => any) | undefined;
663
681
  } & vue.ShallowUnwrapRef<Omit<Omit<{
@@ -674,6 +692,7 @@ declare const VFileInput: {
674
692
  errorMessages: string | string[];
675
693
  maxErrors: string | number;
676
694
  rules: ValidationRule[];
695
+ persistentHint: boolean;
677
696
  }> & Omit<{
678
697
  error: boolean;
679
698
  direction: "horizontal" | "vertical";
@@ -685,6 +704,7 @@ declare const VFileInput: {
685
704
  errorMessages: string | string[];
686
705
  maxErrors: string | number;
687
706
  rules: ValidationRule[];
707
+ persistentHint: boolean;
688
708
  } & {
689
709
  id?: string | undefined;
690
710
  name?: string | undefined;
@@ -694,8 +714,10 @@ declare const VFileInput: {
694
714
  appendIcon?: IconValue | undefined;
695
715
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
696
716
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
717
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
697
718
  validateOn?: "input" | "blur" | "submit" | undefined;
698
719
  validationValue?: any;
720
+ hint?: string | undefined;
699
721
  hideDetails?: boolean | "auto" | undefined;
700
722
  } & {
701
723
  $children?: {} | vue.VNodeChild | {
@@ -723,7 +745,7 @@ declare const VFileInput: {
723
745
  "v-slot:details"?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
724
746
  } & {
725
747
  "onUpdate:modelValue"?: ((val: any) => any) | undefined;
726
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules">;
748
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint">;
727
749
  $attrs: {
728
750
  [x: string]: unknown;
729
751
  };
@@ -748,6 +770,7 @@ declare const VFileInput: {
748
770
  errorMessages: string | string[];
749
771
  maxErrors: string | number;
750
772
  rules: ValidationRule[];
773
+ persistentHint: boolean;
751
774
  } & {
752
775
  id?: string | undefined;
753
776
  name?: string | undefined;
@@ -757,8 +780,10 @@ declare const VFileInput: {
757
780
  appendIcon?: IconValue | undefined;
758
781
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
759
782
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
783
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
760
784
  validateOn?: "input" | "blur" | "submit" | undefined;
761
785
  validationValue?: any;
786
+ hint?: string | undefined;
762
787
  hideDetails?: boolean | "auto" | undefined;
763
788
  } & {
764
789
  $children?: {} | vue.VNodeChild | {
@@ -803,6 +828,7 @@ declare const VFileInput: {
803
828
  errorMessages: string | string[];
804
829
  maxErrors: string | number;
805
830
  rules: ValidationRule[];
831
+ persistentHint: boolean;
806
832
  }, {}, string> & {
807
833
  beforeCreate?: ((() => void) | (() => void)[]) | undefined;
808
834
  created?: ((() => void) | (() => void)[]) | undefined;
@@ -834,6 +860,7 @@ declare const VFileInput: {
834
860
  errorMessages: string | string[];
835
861
  maxErrors: string | number;
836
862
  rules: ValidationRule[];
863
+ persistentHint: boolean;
837
864
  } & {
838
865
  id?: string | undefined;
839
866
  name?: string | undefined;
@@ -843,8 +870,10 @@ declare const VFileInput: {
843
870
  appendIcon?: IconValue | undefined;
844
871
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
845
872
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
873
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
846
874
  validateOn?: "input" | "blur" | "submit" | undefined;
847
875
  validationValue?: any;
876
+ hint?: string | undefined;
848
877
  hideDetails?: boolean | "auto" | undefined;
849
878
  } & {
850
879
  $children?: {} | vue.VNodeChild | {
@@ -876,7 +905,7 @@ declare const VFileInput: {
876
905
  reset: () => void;
877
906
  resetValidation: () => void;
878
907
  validate: () => Promise<string[]>;
879
- }> & {} & vue.ComponentCustomProperties & {}, "id" | "name" | "label" | "$children" | "v-slot:default" | "$slots" | "v-slots" | keyof vue.VNodeProps | keyof vue.AllowedComponentProps | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "prependIcon" | "appendIcon" | "onClick:append" | "onClick:prepend" | "validateOn" | "validationValue" | "hideDetails" | ("error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules") | "v-slot:details">, `$${any}`>> & {} & vue.ComponentCustomProperties & {};
908
+ }> & {} & vue.ComponentCustomProperties & {}, "id" | "name" | "label" | "$children" | "v-slot:default" | "$slots" | "v-slots" | keyof vue.VNodeProps | keyof vue.AllowedComponentProps | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "prependIcon" | "appendIcon" | "onClick:append" | "onClick:prepend" | "onUpdate:focused" | "validateOn" | "validationValue" | "hint" | "hideDetails" | ("error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint") | "v-slot:details">, `$${any}`>> & {} & vue.ComponentCustomProperties & {};
880
909
  __isFragment?: undefined;
881
910
  __isTeleport?: undefined;
882
911
  __isSuspense?: undefined;
@@ -899,11 +928,11 @@ declare const VFileInput: {
899
928
  errorMessages: string | string[];
900
929
  maxErrors: string | number;
901
930
  rules: ValidationRule[];
931
+ persistentHint: boolean;
902
932
  clearable: boolean;
903
933
  dirty: boolean;
904
934
  persistentClear: boolean;
905
935
  singleLine: boolean;
906
- persistentHint: boolean;
907
936
  chips: boolean;
908
937
  counterSizeString: string;
909
938
  counterString: string;
@@ -924,10 +953,11 @@ declare const VFileInput: {
924
953
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
925
954
  'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
926
955
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
956
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
927
957
  validateOn?: "input" | "blur" | "submit" | undefined;
928
958
  validationValue?: any;
929
- hideDetails?: boolean | "auto" | undefined;
930
959
  hint?: string | undefined;
960
+ hideDetails?: boolean | "auto" | undefined;
931
961
  } & {
932
962
  $children?: {} | vue.VNodeChild | {
933
963
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & ((args_0: VFieldSlot) => vue.VNodeChild)) | undefined;
@@ -978,6 +1008,7 @@ declare const VFileInput: {
978
1008
  "v-slot:counter"?: false | (() => vue.VNodeChild) | undefined;
979
1009
  } & {
980
1010
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
1011
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
981
1012
  "onClick:control"?: ((e: MouseEvent) => any) | undefined;
982
1013
  "onMousedown:control"?: ((e: MouseEvent) => any) | undefined;
983
1014
  }, Omit<Omit<{
@@ -994,6 +1025,7 @@ declare const VFileInput: {
994
1025
  errorMessages: string | string[];
995
1026
  maxErrors: string | number;
996
1027
  rules: ValidationRule[];
1028
+ persistentHint: boolean;
997
1029
  }> & Omit<{
998
1030
  error: boolean;
999
1031
  direction: "horizontal" | "vertical";
@@ -1005,6 +1037,7 @@ declare const VFileInput: {
1005
1037
  errorMessages: string | string[];
1006
1038
  maxErrors: string | number;
1007
1039
  rules: ValidationRule[];
1040
+ persistentHint: boolean;
1008
1041
  } & {
1009
1042
  id?: string | undefined;
1010
1043
  name?: string | undefined;
@@ -1014,8 +1047,10 @@ declare const VFileInput: {
1014
1047
  appendIcon?: IconValue | undefined;
1015
1048
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1016
1049
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1050
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
1017
1051
  validateOn?: "input" | "blur" | "submit" | undefined;
1018
1052
  validationValue?: any;
1053
+ hint?: string | undefined;
1019
1054
  hideDetails?: boolean | "auto" | undefined;
1020
1055
  } & {
1021
1056
  $children?: {} | vue.VNodeChild | {
@@ -1043,7 +1078,7 @@ declare const VFileInput: {
1043
1078
  "v-slot:details"?: false | ((args_0: VInputSlot) => vue.VNodeChild) | undefined;
1044
1079
  } & {
1045
1080
  "onUpdate:modelValue"?: ((val: any) => any) | undefined;
1046
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules">;
1081
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint">;
1047
1082
  $attrs: {
1048
1083
  [x: string]: unknown;
1049
1084
  };
@@ -1068,6 +1103,7 @@ declare const VFileInput: {
1068
1103
  errorMessages: string | string[];
1069
1104
  maxErrors: string | number;
1070
1105
  rules: ValidationRule[];
1106
+ persistentHint: boolean;
1071
1107
  } & {
1072
1108
  id?: string | undefined;
1073
1109
  name?: string | undefined;
@@ -1077,8 +1113,10 @@ declare const VFileInput: {
1077
1113
  appendIcon?: IconValue | undefined;
1078
1114
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1079
1115
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1116
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
1080
1117
  validateOn?: "input" | "blur" | "submit" | undefined;
1081
1118
  validationValue?: any;
1119
+ hint?: string | undefined;
1082
1120
  hideDetails?: boolean | "auto" | undefined;
1083
1121
  } & {
1084
1122
  $children?: {} | vue.VNodeChild | {
@@ -1123,6 +1161,7 @@ declare const VFileInput: {
1123
1161
  errorMessages: string | string[];
1124
1162
  maxErrors: string | number;
1125
1163
  rules: ValidationRule[];
1164
+ persistentHint: boolean;
1126
1165
  }, {}, string> & {
1127
1166
  beforeCreate?: ((() => void) | (() => void)[]) | undefined;
1128
1167
  created?: ((() => void) | (() => void)[]) | undefined;
@@ -1154,6 +1193,7 @@ declare const VFileInput: {
1154
1193
  errorMessages: string | string[];
1155
1194
  maxErrors: string | number;
1156
1195
  rules: ValidationRule[];
1196
+ persistentHint: boolean;
1157
1197
  } & {
1158
1198
  id?: string | undefined;
1159
1199
  name?: string | undefined;
@@ -1163,8 +1203,10 @@ declare const VFileInput: {
1163
1203
  appendIcon?: IconValue | undefined;
1164
1204
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1165
1205
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1206
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
1166
1207
  validateOn?: "input" | "blur" | "submit" | undefined;
1167
1208
  validationValue?: any;
1209
+ hint?: string | undefined;
1168
1210
  hideDetails?: boolean | "auto" | undefined;
1169
1211
  } & {
1170
1212
  $children?: {} | vue.VNodeChild | {
@@ -1196,9 +1238,10 @@ declare const VFileInput: {
1196
1238
  reset: () => void;
1197
1239
  resetValidation: () => void;
1198
1240
  validate: () => Promise<string[]>;
1199
- }> & {} & vue.ComponentCustomProperties & {}, "id" | "name" | "label" | "$children" | "v-slot:default" | "$slots" | "v-slots" | keyof vue.VNodeProps | keyof vue.AllowedComponentProps | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "prependIcon" | "appendIcon" | "onClick:append" | "onClick:prepend" | "validateOn" | "validationValue" | "hideDetails" | ("error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules") | "v-slot:details">, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
1241
+ }> & {} & vue.ComponentCustomProperties & {}, "id" | "name" | "label" | "$children" | "v-slot:default" | "$slots" | "v-slots" | keyof vue.VNodeProps | keyof vue.AllowedComponentProps | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "prependIcon" | "appendIcon" | "onClick:append" | "onClick:prepend" | "onUpdate:focused" | "validateOn" | "validationValue" | "hint" | "hideDetails" | ("error" | "direction" | "disabled" | "readonly" | "messages" | "density" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint") | "v-slot:details">, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
1200
1242
  'click:control': (e: MouseEvent) => true;
1201
1243
  'mousedown:control': (e: MouseEvent) => true;
1244
+ 'update:focused': (focused: boolean) => true;
1202
1245
  'update:modelValue': (files: File[]) => true;
1203
1246
  }, string, {
1204
1247
  reverse: boolean;
@@ -1219,11 +1262,11 @@ declare const VFileInput: {
1219
1262
  errorMessages: string | string[];
1220
1263
  maxErrors: string | number;
1221
1264
  rules: ValidationRule[];
1265
+ persistentHint: boolean;
1222
1266
  clearable: boolean;
1223
1267
  dirty: boolean;
1224
1268
  persistentClear: boolean;
1225
1269
  singleLine: boolean;
1226
- persistentHint: boolean;
1227
1270
  chips: boolean;
1228
1271
  counterSizeString: string;
1229
1272
  counterString: string;
@@ -1265,6 +1308,7 @@ declare const VFileInput: {
1265
1308
  validator: (val: any) => boolean;
1266
1309
  };
1267
1310
  focused: BooleanConstructor;
1311
+ 'onUpdate:focused': PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
1268
1312
  errorMessages: {
1269
1313
  type: PropType<string | string[]>;
1270
1314
  default: () => never[];
@@ -1293,6 +1337,8 @@ declare const VFileInput: {
1293
1337
  default: NonNullable<IconValue>;
1294
1338
  };
1295
1339
  hideDetails: PropType<boolean | "auto">;
1340
+ hint: StringConstructor;
1341
+ persistentHint: BooleanConstructor;
1296
1342
  messages: {
1297
1343
  type: PropType<string | string[]>;
1298
1344
  default: () => never[];
@@ -1315,8 +1361,6 @@ declare const VFileInput: {
1315
1361
  default: string;
1316
1362
  };
1317
1363
  multiple: BooleanConstructor;
1318
- hint: StringConstructor;
1319
- persistentHint: BooleanConstructor;
1320
1364
  showSize: {
1321
1365
  type: PropType<boolean | 1024 | 1000>;
1322
1366
  default: boolean;
@@ -1359,6 +1403,7 @@ declare const VFileInput: {
1359
1403
  validator: (val: any) => boolean;
1360
1404
  };
1361
1405
  focused: BooleanConstructor;
1406
+ 'onUpdate:focused': PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
1362
1407
  errorMessages: {
1363
1408
  type: PropType<string | string[]>;
1364
1409
  default: () => never[];
@@ -1387,6 +1432,8 @@ declare const VFileInput: {
1387
1432
  default: NonNullable<IconValue>;
1388
1433
  };
1389
1434
  hideDetails: PropType<boolean | "auto">;
1435
+ hint: StringConstructor;
1436
+ persistentHint: BooleanConstructor;
1390
1437
  messages: {
1391
1438
  type: PropType<string | string[]>;
1392
1439
  default: () => never[];
@@ -1409,8 +1456,6 @@ declare const VFileInput: {
1409
1456
  default: string;
1410
1457
  };
1411
1458
  multiple: BooleanConstructor;
1412
- hint: StringConstructor;
1413
- persistentHint: BooleanConstructor;
1414
1459
  showSize: {
1415
1460
  type: PropType<boolean | 1024 | 1000>;
1416
1461
  default: boolean;
@@ -8,13 +8,15 @@ import { IconValue } from "../../composables/icons.mjs";
8
8
  import { makeDensityProps, useDensity } from "../../composables/density.mjs";
9
9
  import { makeValidationProps, useValidation } from "../../composables/validation.mjs"; // Utilities
10
10
  import { computed } from 'vue';
11
- import { EventProp, genericComponent, getUid, isOn, pick, propsFactory, useRender } from "../../util/index.mjs"; // Types
11
+ import { EventProp, genericComponent, getUid, propsFactory, useRender } from "../../util/index.mjs"; // Types
12
12
  import { useInputIcon } from "./InputIcon.mjs";
13
13
  export const makeVInputProps = propsFactory({
14
14
  id: String,
15
15
  appendIcon: IconValue,
16
16
  prependIcon: IconValue,
17
17
  hideDetails: [Boolean, String],
18
+ hint: String,
19
+ persistentHint: Boolean,
18
20
  messages: {
19
21
  type: [Array, String],
20
22
  default: () => []
@@ -78,10 +80,19 @@ export const VInput = genericComponent()({
78
80
  resetValidation,
79
81
  validate
80
82
  }));
83
+ const messages = computed(() => {
84
+ if (errorMessages.value.length > 0) {
85
+ return errorMessages.value;
86
+ } else if (props.hint && (props.persistentHint || props.focused)) {
87
+ return props.hint;
88
+ } else {
89
+ return props.messages;
90
+ }
91
+ });
81
92
  useRender(() => {
82
93
  const hasPrepend = !!(slots.prepend || props.prependIcon);
83
94
  const hasAppend = !!(slots.append || props.appendIcon);
84
- const hasMessages = !!(props.messages?.length || errorMessages.value.length);
95
+ const hasMessages = messages.value.length > 0;
85
96
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
86
97
  return _createVNode("div", {
87
98
  "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
@@ -104,7 +115,7 @@ export const VInput = genericComponent()({
104
115
  }, [_createVNode(VMessages, {
105
116
  "id": messagesId.value,
106
117
  "active": hasMessages,
107
- "messages": errorMessages.value.length > 0 ? errorMessages.value : props.messages
118
+ "messages": messages.value
108
119
  }, {
109
120
  message: slots.message
110
121
  }), slots.details?.(slotProps.value)])]);
@@ -116,8 +127,4 @@ export const VInput = genericComponent()({
116
127
  };
117
128
  }
118
129
  });
119
- export function filterInputProps(props) {
120
- const keys = Object.keys(VInput.props).filter(k => !isOn(k));
121
- return pick(props, keys);
122
- }
123
130
  //# sourceMappingURL=VInput.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VInput.mjs","names":["VMessages","IconValue","makeDensityProps","useDensity","makeValidationProps","useValidation","computed","EventProp","genericComponent","getUid","isOn","pick","propsFactory","useRender","useInputIcon","makeVInputProps","id","String","appendIcon","prependIcon","hideDetails","Boolean","messages","type","Array","default","direction","validator","v","includes","VInput","name","props","emits","val","setup","_ref","attrs","slots","emit","densityClasses","InputIcon","uid","messagesId","value","errorMessages","isDirty","isDisabled","isReadonly","isPristine","isValid","isValidating","reset","resetValidation","validate","validationClasses","slotProps","hasPrepend","prepend","hasAppend","append","hasMessages","length","hasDetails","details","_createVNode","message","filterInputProps","keys","Object","filter","k"],"sources":["../../../src/components/VInput/VInput.tsx"],"sourcesContent":["// Styles\nimport './VInput.sass'\n\n// Components\nimport { VMessages } from '@/components/VMessages'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, getUid, isOn, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\nexport interface VInputSlot {\n id: ComputedRef<string>\n messagesId: ComputedRef<string>\n isDirty: ComputedRef<boolean>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isPristine: Ref<boolean>\n isValid: ComputedRef<boolean | null>\n isValidating: Ref<boolean>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n prependIcon: IconValue,\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n 'onClick:prepend': EventProp<[MouseEvent]>(),\n 'onClick:append': EventProp<[MouseEvent]>(),\n\n ...makeDensityProps(),\n ...makeValidationProps(),\n}, 'v-input')\n\nexport type VInputSlots = MakeSlots<{\n default: [VInputSlot]\n prepend: [VInputSlot]\n append: [VInputSlot]\n details: [VInputSlot]\n}>\n\nexport const VInput = genericComponent<VInputSlots>()({\n name: 'VInput',\n\n props: {\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const { densityClasses } = useDensity(props)\n const { InputIcon } = useInputIcon(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props, 'v-input', id)\n\n const slotProps = computed<VInputSlot>(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon)\n const hasAppend = !!(slots.append || props.appendIcon)\n const hasMessages = !!(\n props.messages?.length ||\n errorMessages.value.length\n )\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || !!slots.details)\n )\n\n return (\n <div class={[\n 'v-input',\n `v-input--${props.direction}`,\n densityClasses.value,\n validationClasses.value,\n ]}\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-input__prepend\">\n { slots.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n <InputIcon\n key=\"prepend-icon\"\n name=\"prepend\"\n />\n )}\n </div>\n )}\n\n { slots.default && (\n <div class=\"v-input__control\">\n { slots.default?.(slotProps.value) }\n </div>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-input__append\">\n { props.appendIcon && (\n <InputIcon\n key=\"append-icon\"\n name=\"append\"\n />\n )}\n\n { slots.append?.(slotProps.value) }\n </div>\n )}\n\n { hasDetails && (\n <div class=\"v-input__details\">\n <VMessages\n id={ messagesId.value }\n active={ hasMessages }\n messages={ errorMessages.value.length > 0\n ? errorMessages.value\n : props.messages\n }\n v-slots={{ message: slots.message }}\n />\n\n { slots.details?.(slotProps.value) }\n </div>\n )}\n </div>\n )\n })\n\n return {\n reset,\n resetValidation,\n validate,\n }\n },\n})\n\nexport type VInput = InstanceType<typeof VInput>\n\nexport function filterInputProps (props: Record<string, unknown>) {\n const keys = Object.keys(VInput.props).filter(k => !isOn(k))\n return pick(props, keys)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VInput.mjs","names":["VMessages","IconValue","makeDensityProps","useDensity","makeValidationProps","useValidation","computed","EventProp","genericComponent","getUid","propsFactory","useRender","useInputIcon","makeVInputProps","id","String","appendIcon","prependIcon","hideDetails","Boolean","hint","persistentHint","messages","type","Array","default","direction","validator","v","includes","VInput","name","props","emits","val","setup","_ref","attrs","slots","emit","densityClasses","InputIcon","uid","messagesId","value","errorMessages","isDirty","isDisabled","isReadonly","isPristine","isValid","isValidating","reset","resetValidation","validate","validationClasses","slotProps","length","focused","hasPrepend","prepend","hasAppend","append","hasMessages","hasDetails","details","_createVNode","message"],"sources":["../../../src/components/VInput/VInput.tsx"],"sourcesContent":["// Styles\nimport './VInput.sass'\n\n// Components\nimport { VMessages } from '@/components/VMessages'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\nexport interface VInputSlot {\n id: ComputedRef<string>\n messagesId: ComputedRef<string>\n isDirty: ComputedRef<boolean>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isPristine: Ref<boolean>\n isValid: ComputedRef<boolean | null>\n isValidating: Ref<boolean>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n prependIcon: IconValue,\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n hint: String,\n persistentHint: Boolean,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n 'onClick:prepend': EventProp<[MouseEvent]>(),\n 'onClick:append': EventProp<[MouseEvent]>(),\n\n ...makeDensityProps(),\n ...makeValidationProps(),\n}, 'v-input')\n\nexport type VInputSlots = MakeSlots<{\n default: [VInputSlot]\n prepend: [VInputSlot]\n append: [VInputSlot]\n details: [VInputSlot]\n}>\n\nexport const VInput = genericComponent<VInputSlots>()({\n name: 'VInput',\n\n props: {\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const { densityClasses } = useDensity(props)\n const { InputIcon } = useInputIcon(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props, 'v-input', id)\n\n const slotProps = computed<VInputSlot>(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n const messages = computed(() => {\n if (errorMessages.value.length > 0) {\n return errorMessages.value\n } else if (props.hint && (props.persistentHint || props.focused)) {\n return props.hint\n } else {\n return props.messages\n }\n })\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon)\n const hasAppend = !!(slots.append || props.appendIcon)\n const hasMessages = messages.value.length > 0\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || !!slots.details)\n )\n\n return (\n <div class={[\n 'v-input',\n `v-input--${props.direction}`,\n densityClasses.value,\n validationClasses.value,\n ]}\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-input__prepend\">\n { slots.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n <InputIcon\n key=\"prepend-icon\"\n name=\"prepend\"\n />\n )}\n </div>\n )}\n\n { slots.default && (\n <div class=\"v-input__control\">\n { slots.default?.(slotProps.value) }\n </div>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-input__append\">\n { props.appendIcon && (\n <InputIcon\n key=\"append-icon\"\n name=\"append\"\n />\n )}\n\n { slots.append?.(slotProps.value) }\n </div>\n )}\n\n { hasDetails && (\n <div class=\"v-input__details\">\n <VMessages\n id={ messagesId.value }\n active={ hasMessages }\n messages={ messages.value }\n v-slots={{ message: slots.message }}\n />\n\n { slots.details?.(slotProps.value) }\n </div>\n )}\n </div>\n )\n })\n\n return {\n reset,\n resetValidation,\n validate,\n }\n },\n})\n\nexport type VInput = InstanceType<typeof VInput>\n"],"mappings":"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"}