vuetify 3.1.2 → 3.1.3

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 (105) hide show
  1. package/dist/json/attributes.json +450 -450
  2. package/dist/json/importMap.json +44 -44
  3. package/dist/json/tags.json +1 -1
  4. package/dist/json/web-types.json +815 -805
  5. package/dist/vuetify-labs.css +250 -246
  6. package/dist/vuetify-labs.d.ts +205 -174
  7. package/dist/vuetify-labs.esm.js +244 -170
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +243 -169
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +29 -25
  12. package/dist/vuetify.d.ts +206 -186
  13. package/dist/vuetify.esm.js +221 -162
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +220 -161
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +700 -692
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/index.d.ts +2 -2
  21. package/lib/blueprints/md1.d.ts +2 -2
  22. package/lib/blueprints/md2.d.ts +2 -2
  23. package/lib/blueprints/md3.d.ts +2 -2
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.ts +43 -20
  27. package/lib/components/VBtn/VBtn.mjs +8 -3
  28. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  29. package/lib/components/VCombobox/VCombobox.mjs +3 -3
  30. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  31. package/lib/components/VCombobox/index.d.ts +43 -20
  32. package/lib/components/VDefaultsProvider/index.d.ts +5 -4
  33. package/lib/components/VDialog/VDialog.mjs +6 -5
  34. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  35. package/lib/components/VDialog/index.d.ts +57 -34
  36. package/lib/components/VDivider/VDivider.mjs +6 -6
  37. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  38. package/lib/components/VField/VField.mjs +28 -26
  39. package/lib/components/VField/VField.mjs.map +1 -1
  40. package/lib/components/VFileInput/VFileInput.mjs +7 -4
  41. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  42. package/lib/components/VForm/index.d.ts +0 -3
  43. package/lib/components/VList/VList.mjs +4 -1
  44. package/lib/components/VList/VList.mjs.map +1 -1
  45. package/lib/components/VList/VListItem.mjs +29 -19
  46. package/lib/components/VList/VListItem.mjs.map +1 -1
  47. package/lib/components/VMenu/VMenu.mjs +6 -5
  48. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  49. package/lib/components/VMenu/index.d.ts +57 -34
  50. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +4 -0
  51. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  52. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  53. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +4 -0
  54. package/lib/components/VNavigationDrawer/index.d.ts +3 -3
  55. package/lib/components/VNavigationDrawer/touch.mjs +7 -6
  56. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  57. package/lib/components/VOverlay/index.d.ts +34 -11
  58. package/lib/components/VOverlay/locationStrategies.mjs +40 -29
  59. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  60. package/lib/components/VOverlay/scrollStrategies.mjs +25 -16
  61. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  62. package/lib/components/VPagination/VPagination.mjs +1 -1
  63. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  64. package/lib/components/VSelect/VSelect.mjs +3 -4
  65. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  66. package/lib/components/VSelect/index.d.ts +43 -20
  67. package/lib/components/VSnackbar/index.d.ts +42 -19
  68. package/lib/components/VTable/VTable.css +4 -4
  69. package/lib/components/VTable/VTable.sass +2 -2
  70. package/lib/components/VTooltip/VTooltip.mjs +4 -3
  71. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  72. package/lib/components/VTooltip/index.d.ts +57 -34
  73. package/lib/components/index.d.ts +195 -174
  74. package/lib/composables/defaults.mjs +1 -1
  75. package/lib/composables/defaults.mjs.map +1 -1
  76. package/lib/composables/form.mjs +0 -1
  77. package/lib/composables/form.mjs.map +1 -1
  78. package/lib/composables/toggleScope.mjs +14 -7
  79. package/lib/composables/toggleScope.mjs.map +1 -1
  80. package/lib/entry-bundler.mjs +1 -1
  81. package/lib/framework.mjs +1 -1
  82. package/lib/index.d.ts +14 -14
  83. package/lib/labs/VDataTable/VDataTable.mjs +2 -1
  84. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  85. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  86. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  87. package/lib/labs/VDataTable/VDataTableServer.mjs +19 -6
  88. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  89. package/lib/labs/VDataTable/VDataTableVirtual.mjs +2 -1
  90. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  91. package/lib/labs/VDataTable/composables/options.mjs +4 -2
  92. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  93. package/lib/labs/VDataTable/index.d.ts +11 -0
  94. package/lib/labs/components.d.ts +11 -0
  95. package/lib/locale/adapters/vue-i18n.mjs +12 -2
  96. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  97. package/lib/locale/en.mjs +2 -2
  98. package/lib/locale/en.mjs.map +1 -1
  99. package/lib/locale/sv.mjs +7 -7
  100. package/lib/locale/sv.mjs.map +1 -1
  101. package/lib/util/defineComponent.mjs +21 -18
  102. package/lib/util/defineComponent.mjs.map +1 -1
  103. package/lib/util/helpers.mjs +5 -1
  104. package/lib/util/helpers.mjs.map +1 -1
  105. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { Ref, VNodeChild, nextTick } from 'vue';
2
+ import { Ref, EffectScope, VNodeChild, nextTick } from 'vue';
3
3
 
4
4
  interface ScrollStrategyData {
5
5
  root: Ref<HTMLElement | undefined>;
@@ -8,7 +8,7 @@ interface ScrollStrategyData {
8
8
  isActive: Ref<boolean>;
9
9
  updateLocation: Ref<((e: Event) => void) | undefined>;
10
10
  }
11
- declare type ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps$1) => void;
11
+ declare type ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps$1, scope: EffectScope) => void;
12
12
  declare const scrollStrategies: {
13
13
  none: null;
14
14
  close: typeof closeScrollStrategy;
@@ -21,7 +21,24 @@ interface StrategyProps$1 {
21
21
  }
22
22
  declare function closeScrollStrategy(data: ScrollStrategyData): void;
23
23
  declare function blockScrollStrategy(data: ScrollStrategyData, props: StrategyProps$1): void;
24
- declare function repositionScrollStrategy(data: ScrollStrategyData): void;
24
+ declare function repositionScrollStrategy(data: ScrollStrategyData, props: StrategyProps$1, scope: EffectScope): void;
25
+
26
+ declare class Box {
27
+ x: number;
28
+ y: number;
29
+ width: number;
30
+ height: number;
31
+ constructor({ x, y, width, height }: {
32
+ x: number;
33
+ y: number;
34
+ width: number;
35
+ height: number;
36
+ });
37
+ get top(): number;
38
+ get bottom(): number;
39
+ get left(): number;
40
+ get right(): number;
41
+ }
25
42
 
26
43
  declare const block: readonly ["top", "bottom"];
27
44
  declare const inline: readonly ["start", "end", "left", "right"];
@@ -69,7 +86,13 @@ interface StrategyProps {
69
86
  }
70
87
  declare function staticLocationStrategy(): void;
71
88
  declare function connectedLocationStrategy(data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>): {
72
- updateLocation: () => void;
89
+ updateLocation: () => {
90
+ available: {
91
+ x: number;
92
+ y: number;
93
+ };
94
+ contentBox: Box;
95
+ } | undefined;
73
96
  };
74
97
 
75
98
  declare type OverlaySlots = MakeSlots<{
@@ -111,7 +134,7 @@ declare const VDialog: {
111
134
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
112
135
  updateLocation: (e: Event) => void;
113
136
  } | undefined);
114
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
137
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
115
138
  closeOnBack: boolean;
116
139
  contained: boolean;
117
140
  noClickAnimation: boolean;
@@ -149,12 +172,12 @@ declare const VDialog: {
149
172
  };
150
173
  theme: StringConstructor;
151
174
  scrollStrategy: Omit<{
152
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
175
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
153
176
  default: string;
154
177
  validator: (val: any) => boolean;
155
178
  }, "type" | "default"> & {
156
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
157
- default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
179
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
180
+ default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
158
181
  };
159
182
  locationStrategy: {
160
183
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -274,12 +297,12 @@ declare const VDialog: {
274
297
  };
275
298
  theme: StringConstructor;
276
299
  scrollStrategy: Omit<{
277
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
300
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
278
301
  default: string;
279
302
  validator: (val: any) => boolean;
280
303
  }, "type" | "default"> & {
281
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
282
- default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
304
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
305
+ default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
283
306
  };
284
307
  locationStrategy: {
285
308
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -378,7 +401,7 @@ declare const VDialog: {
378
401
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
379
402
  updateLocation: (e: Event) => void;
380
403
  } | undefined);
381
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
404
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
382
405
  closeOnBack: boolean;
383
406
  contained: boolean;
384
407
  noClickAnimation: boolean;
@@ -395,7 +418,7 @@ declare const VDialog: {
395
418
  };
396
419
  theme: StringConstructor;
397
420
  scrollStrategy: {
398
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
421
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
399
422
  default: string;
400
423
  validator: (val: any) => boolean;
401
424
  };
@@ -489,7 +512,7 @@ declare const VDialog: {
489
512
  };
490
513
  theme: StringConstructor;
491
514
  scrollStrategy: {
492
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
515
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
493
516
  default: string;
494
517
  validator: (val: any) => boolean;
495
518
  };
@@ -589,7 +612,7 @@ declare const VDialog: {
589
612
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
590
613
  updateLocation: (e: Event) => void;
591
614
  } | undefined);
592
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
615
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
593
616
  closeOnBack: boolean;
594
617
  contained: boolean;
595
618
  noClickAnimation: boolean;
@@ -626,7 +649,7 @@ declare const VDialog: {
626
649
  };
627
650
  theme: StringConstructor;
628
651
  scrollStrategy: {
629
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
652
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
630
653
  default: string;
631
654
  validator: (val: any) => boolean;
632
655
  };
@@ -759,7 +782,7 @@ declare const VDialog: {
759
782
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
760
783
  updateLocation: (e: Event) => void;
761
784
  } | undefined);
762
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
785
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
763
786
  closeOnBack: boolean;
764
787
  contained: boolean;
765
788
  noClickAnimation: boolean;
@@ -817,12 +840,12 @@ declare const VDialog: {
817
840
  };
818
841
  theme: StringConstructor;
819
842
  scrollStrategy: Omit<{
820
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
843
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
821
844
  default: string;
822
845
  validator: (val: any) => boolean;
823
846
  }, "type" | "default"> & {
824
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
825
- default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
847
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
848
+ default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
826
849
  };
827
850
  locationStrategy: {
828
851
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -921,7 +944,7 @@ declare const VDialog: {
921
944
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
922
945
  updateLocation: (e: Event) => void;
923
946
  } | undefined);
924
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
947
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
925
948
  closeOnBack: boolean;
926
949
  contained: boolean;
927
950
  noClickAnimation: boolean;
@@ -938,7 +961,7 @@ declare const VDialog: {
938
961
  };
939
962
  theme: StringConstructor;
940
963
  scrollStrategy: {
941
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
964
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
942
965
  default: string;
943
966
  validator: (val: any) => boolean;
944
967
  };
@@ -1032,7 +1055,7 @@ declare const VDialog: {
1032
1055
  };
1033
1056
  theme: StringConstructor;
1034
1057
  scrollStrategy: {
1035
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
1058
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
1036
1059
  default: string;
1037
1060
  validator: (val: any) => boolean;
1038
1061
  };
@@ -1132,7 +1155,7 @@ declare const VDialog: {
1132
1155
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
1133
1156
  updateLocation: (e: Event) => void;
1134
1157
  } | undefined);
1135
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
1158
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
1136
1159
  closeOnBack: boolean;
1137
1160
  contained: boolean;
1138
1161
  noClickAnimation: boolean;
@@ -1169,7 +1192,7 @@ declare const VDialog: {
1169
1192
  };
1170
1193
  theme: StringConstructor;
1171
1194
  scrollStrategy: {
1172
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
1195
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
1173
1196
  default: string;
1174
1197
  validator: (val: any) => boolean;
1175
1198
  };
@@ -1308,12 +1331,12 @@ declare const VDialog: {
1308
1331
  };
1309
1332
  theme: StringConstructor;
1310
1333
  scrollStrategy: Omit<{
1311
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
1334
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
1312
1335
  default: string;
1313
1336
  validator: (val: any) => boolean;
1314
1337
  }, "type" | "default"> & {
1315
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
1316
- default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
1338
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
1339
+ default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
1317
1340
  };
1318
1341
  locationStrategy: {
1319
1342
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -1412,7 +1435,7 @@ declare const VDialog: {
1412
1435
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
1413
1436
  updateLocation: (e: Event) => void;
1414
1437
  } | undefined);
1415
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
1438
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
1416
1439
  closeOnBack: boolean;
1417
1440
  contained: boolean;
1418
1441
  noClickAnimation: boolean;
@@ -1429,7 +1452,7 @@ declare const VDialog: {
1429
1452
  };
1430
1453
  theme: StringConstructor;
1431
1454
  scrollStrategy: {
1432
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
1455
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
1433
1456
  default: string;
1434
1457
  validator: (val: any) => boolean;
1435
1458
  };
@@ -1523,7 +1546,7 @@ declare const VDialog: {
1523
1546
  };
1524
1547
  theme: StringConstructor;
1525
1548
  scrollStrategy: {
1526
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
1549
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
1527
1550
  default: string;
1528
1551
  validator: (val: any) => boolean;
1529
1552
  };
@@ -1623,7 +1646,7 @@ declare const VDialog: {
1623
1646
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
1624
1647
  updateLocation: (e: Event) => void;
1625
1648
  } | undefined);
1626
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
1649
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
1627
1650
  closeOnBack: boolean;
1628
1651
  contained: boolean;
1629
1652
  noClickAnimation: boolean;
@@ -1660,7 +1683,7 @@ declare const VDialog: {
1660
1683
  };
1661
1684
  theme: StringConstructor;
1662
1685
  scrollStrategy: {
1663
- type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
1686
+ type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
1664
1687
  default: string;
1665
1688
  validator: (val: any) => boolean;
1666
1689
  };
@@ -1793,7 +1816,7 @@ declare const VDialog: {
1793
1816
  locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
1794
1817
  updateLocation: (e: Event) => void;
1795
1818
  } | undefined);
1796
- scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
1819
+ scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
1797
1820
  closeOnBack: boolean;
1798
1821
  contained: boolean;
1799
1822
  noClickAnimation: boolean;
@@ -4,7 +4,7 @@ import "./VDivider.css";
4
4
 
5
5
  // Composables
6
6
  import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
7
- import { useBackgroundColor } from "../../composables/color.mjs"; // Utilities
7
+ import { useTextColor } from "../../composables/color.mjs"; // Utilities
8
8
  import { computed, toRef } from 'vue';
9
9
  import { convertToUnit, defineComponent, useRender } from "../../util/index.mjs"; // Types
10
10
  export const VDivider = defineComponent({
@@ -25,9 +25,9 @@ export const VDivider = defineComponent({
25
25
  themeClasses
26
26
  } = provideTheme(props);
27
27
  const {
28
- backgroundColorClasses,
29
- backgroundColorStyles
30
- } = useBackgroundColor(toRef(props, 'color'));
28
+ textColorClasses,
29
+ textColorStyles
30
+ } = useTextColor(toRef(props, 'color'));
31
31
  const dividerStyles = computed(() => {
32
32
  const styles = {};
33
33
  if (props.length) {
@@ -43,8 +43,8 @@ export const VDivider = defineComponent({
43
43
  'v-divider': true,
44
44
  'v-divider--inset': props.inset,
45
45
  'v-divider--vertical': props.vertical
46
- }, themeClasses.value, backgroundColorClasses.value],
47
- "style": [dividerStyles.value, backgroundColorStyles.value],
46
+ }, themeClasses.value, textColorClasses.value],
47
+ "style": [dividerStyles.value, textColorStyles.value],
48
48
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
49
49
  "role": `${attrs.role || 'separator'}`
50
50
  }, null));
@@ -1 +1 @@
1
- {"version":3,"file":"VDivider.mjs","names":["makeThemeProps","provideTheme","useBackgroundColor","computed","toRef","convertToUnit","defineComponent","useRender","VDivider","name","props","color","String","inset","Boolean","length","Number","thickness","vertical","setup","attrs","themeClasses","backgroundColorClasses","backgroundColorStyles","dividerStyles","styles","value","role","undefined"],"sources":["../../../src/components/VDivider/VDivider.tsx"],"sourcesContent":["// Styles\nimport './VDivider.sass'\n\n// Composables\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, defineComponent, useRender } from '@/util'\n\n// Types\ntype DividerKey = 'borderRightWidth' | 'borderTopWidth' | 'maxHeight' | 'maxWidth'\ntype DividerStyles = Partial<Record<DividerKey, string>>\n\nexport const VDivider = defineComponent({\n name: 'VDivider',\n\n props: {\n color: String,\n inset: Boolean,\n length: [Number, String],\n thickness: [Number, String],\n vertical: Boolean,\n\n ...makeThemeProps(),\n },\n\n setup (props, { attrs }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const dividerStyles = computed(() => {\n const styles: DividerStyles = {}\n\n if (props.length) {\n styles[props.vertical ? 'maxHeight' : 'maxWidth'] = convertToUnit(props.length)\n }\n\n if (props.thickness) {\n styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness)\n }\n\n return styles\n })\n\n useRender(() => (\n <hr\n class={[\n {\n 'v-divider': true,\n 'v-divider--inset': props.inset,\n 'v-divider--vertical': props.vertical,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n ]}\n style={[\n dividerStyles.value,\n backgroundColorStyles.value,\n ]}\n aria-orientation={\n !attrs.role || attrs.role === 'separator'\n ? props.vertical ? 'vertical' : 'horizontal'\n : undefined\n }\n role={`${attrs.role || 'separator'}`}\n />\n ))\n\n return {}\n },\n})\n\nexport type VDivider = InstanceType<typeof VDivider>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,cAAc,EAAEC,YAAY;AAAA,SAC5BC,kBAAkB,uCAE3B;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,aAAa,EAAEC,eAAe,EAAEC,SAAS,gCAElD;AAIA,OAAO,MAAMC,QAAQ,GAAGF,eAAe,CAAC;EACtCG,IAAI,EAAE,UAAU;EAEhBC,KAAK,EAAE;IACLC,KAAK,EAAEC,MAAM;IACbC,KAAK,EAAEC,OAAO;IACdC,MAAM,EAAE,CAACC,MAAM,EAAEJ,MAAM,CAAC;IACxBK,SAAS,EAAE,CAACD,MAAM,EAAEJ,MAAM,CAAC;IAC3BM,QAAQ,EAAEJ,OAAO;IAEjB,GAAGd,cAAc;EACnB,CAAC;EAEDmB,KAAK,CAAET,KAAK,QAAa;IAAA,IAAX;MAAEU;IAAM,CAAC;IACrB,MAAM;MAAEC;IAAa,CAAC,GAAGpB,YAAY,CAACS,KAAK,CAAC;IAC5C,MAAM;MAAEY,sBAAsB;MAAEC;IAAsB,CAAC,GAAGrB,kBAAkB,CAACE,KAAK,CAACM,KAAK,EAAE,OAAO,CAAC,CAAC;IACnG,MAAMc,aAAa,GAAGrB,QAAQ,CAAC,MAAM;MACnC,MAAMsB,MAAqB,GAAG,CAAC,CAAC;MAEhC,IAAIf,KAAK,CAACK,MAAM,EAAE;QAChBU,MAAM,CAACf,KAAK,CAACQ,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC,GAAGb,aAAa,CAACK,KAAK,CAACK,MAAM,CAAC;MACjF;MAEA,IAAIL,KAAK,CAACO,SAAS,EAAE;QACnBQ,MAAM,CAACf,KAAK,CAACQ,QAAQ,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,GAAGb,aAAa,CAACK,KAAK,CAACO,SAAS,CAAC;MACjG;MAEA,OAAOQ,MAAM;IACf,CAAC,CAAC;IAEFlB,SAAS,CAAC;MAAA,SAEC,CACL;QACE,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAEG,KAAK,CAACG,KAAK;QAC/B,qBAAqB,EAAEH,KAAK,CAACQ;MAC/B,CAAC,EACDG,YAAY,CAACK,KAAK,EAClBJ,sBAAsB,CAACI,KAAK,CAC7B;MAAA,SACM,CACLF,aAAa,CAACE,KAAK,EACnBH,qBAAqB,CAACG,KAAK,CAC5B;MAAA,oBAEC,CAACN,KAAK,CAACO,IAAI,IAAIP,KAAK,CAACO,IAAI,KAAK,WAAW,GACrCjB,KAAK,CAACQ,QAAQ,GAAG,UAAU,GAAG,YAAY,GAC1CU,SAAS;MAAA,QAER,GAAER,KAAK,CAACO,IAAI,IAAI,WAAY;IAAC,QAEvC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VDivider.mjs","names":["makeThemeProps","provideTheme","useTextColor","computed","toRef","convertToUnit","defineComponent","useRender","VDivider","name","props","color","String","inset","Boolean","length","Number","thickness","vertical","setup","attrs","themeClasses","textColorClasses","textColorStyles","dividerStyles","styles","value","role","undefined"],"sources":["../../../src/components/VDivider/VDivider.tsx"],"sourcesContent":["// Styles\nimport './VDivider.sass'\n\n// Composables\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, defineComponent, useRender } from '@/util'\n\n// Types\ntype DividerKey = 'borderRightWidth' | 'borderTopWidth' | 'maxHeight' | 'maxWidth'\ntype DividerStyles = Partial<Record<DividerKey, string>>\n\nexport const VDivider = defineComponent({\n name: 'VDivider',\n\n props: {\n color: String,\n inset: Boolean,\n length: [Number, String],\n thickness: [Number, String],\n vertical: Boolean,\n\n ...makeThemeProps(),\n },\n\n setup (props, { attrs }) {\n const { themeClasses } = provideTheme(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const dividerStyles = computed(() => {\n const styles: DividerStyles = {}\n\n if (props.length) {\n styles[props.vertical ? 'maxHeight' : 'maxWidth'] = convertToUnit(props.length)\n }\n\n if (props.thickness) {\n styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness)\n }\n\n return styles\n })\n\n useRender(() => (\n <hr\n class={[\n {\n 'v-divider': true,\n 'v-divider--inset': props.inset,\n 'v-divider--vertical': props.vertical,\n },\n themeClasses.value,\n textColorClasses.value,\n ]}\n style={[\n dividerStyles.value,\n textColorStyles.value,\n ]}\n aria-orientation={\n !attrs.role || attrs.role === 'separator'\n ? props.vertical ? 'vertical' : 'horizontal'\n : undefined\n }\n role={`${attrs.role || 'separator'}`}\n />\n ))\n\n return {}\n },\n})\n\nexport type VDivider = InstanceType<typeof VDivider>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,cAAc,EAAEC,YAAY;AAAA,SAC5BC,YAAY,uCAErB;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,aAAa,EAAEC,eAAe,EAAEC,SAAS,gCAElD;AAIA,OAAO,MAAMC,QAAQ,GAAGF,eAAe,CAAC;EACtCG,IAAI,EAAE,UAAU;EAEhBC,KAAK,EAAE;IACLC,KAAK,EAAEC,MAAM;IACbC,KAAK,EAAEC,OAAO;IACdC,MAAM,EAAE,CAACC,MAAM,EAAEJ,MAAM,CAAC;IACxBK,SAAS,EAAE,CAACD,MAAM,EAAEJ,MAAM,CAAC;IAC3BM,QAAQ,EAAEJ,OAAO;IAEjB,GAAGd,cAAc;EACnB,CAAC;EAEDmB,KAAK,CAAET,KAAK,QAAa;IAAA,IAAX;MAAEU;IAAM,CAAC;IACrB,MAAM;MAAEC;IAAa,CAAC,GAAGpB,YAAY,CAACS,KAAK,CAAC;IAC5C,MAAM;MAAEY,gBAAgB;MAAEC;IAAgB,CAAC,GAAGrB,YAAY,CAACE,KAAK,CAACM,KAAK,EAAE,OAAO,CAAC,CAAC;IACjF,MAAMc,aAAa,GAAGrB,QAAQ,CAAC,MAAM;MACnC,MAAMsB,MAAqB,GAAG,CAAC,CAAC;MAEhC,IAAIf,KAAK,CAACK,MAAM,EAAE;QAChBU,MAAM,CAACf,KAAK,CAACQ,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC,GAAGb,aAAa,CAACK,KAAK,CAACK,MAAM,CAAC;MACjF;MAEA,IAAIL,KAAK,CAACO,SAAS,EAAE;QACnBQ,MAAM,CAACf,KAAK,CAACQ,QAAQ,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,GAAGb,aAAa,CAACK,KAAK,CAACO,SAAS,CAAC;MACjG;MAEA,OAAOQ,MAAM;IACf,CAAC,CAAC;IAEFlB,SAAS,CAAC;MAAA,SAEC,CACL;QACE,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAEG,KAAK,CAACG,KAAK;QAC/B,qBAAqB,EAAEH,KAAK,CAACQ;MAC/B,CAAC,EACDG,YAAY,CAACK,KAAK,EAClBJ,gBAAgB,CAACI,KAAK,CACvB;MAAA,SACM,CACLF,aAAa,CAACE,KAAK,EACnBH,eAAe,CAACG,KAAK,CACtB;MAAA,oBAEC,CAACN,KAAK,CAACO,IAAI,IAAIP,KAAK,CAACO,IAAI,KAAK,WAAW,GACrCjB,KAAK,CAACQ,QAAQ,GAAG,UAAU,GAAG,YAAY,GAC1CU,SAAS;MAAA,QAER,GAAER,KAAK,CAACO,IAAI,IAAI,WAAY;IAAC,QAEvC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -99,32 +99,34 @@ export const VField = genericComponent()({
99
99
  if (hasLabel.value) {
100
100
  const el = labelRef.value.$el;
101
101
  const targetEl = floatingLabelRef.value.$el;
102
- const rect = nullifyTransforms(el);
103
- const targetRect = targetEl.getBoundingClientRect();
104
- const x = targetRect.x - rect.x;
105
- const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
106
- const targetWidth = targetRect.width / 0.75;
107
- const width = Math.abs(targetWidth - rect.width) > 1 ? {
108
- maxWidth: convertToUnit(targetWidth)
109
- } : undefined;
110
- const style = getComputedStyle(el);
111
- const targetStyle = getComputedStyle(targetEl);
112
- const duration = parseFloat(style.transitionDuration) * 1000 || 150;
113
- const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
114
- const color = targetStyle.getPropertyValue('color');
115
- el.style.visibility = 'visible';
116
- targetEl.style.visibility = 'hidden';
117
- animate(el, {
118
- transform: `translate(${x}px, ${y}px) scale(${scale})`,
119
- color,
120
- ...width
121
- }, {
122
- duration,
123
- easing: standardEasing,
124
- direction: val ? 'normal' : 'reverse'
125
- }).finished.then(() => {
126
- el.style.removeProperty('visibility');
127
- targetEl.style.removeProperty('visibility');
102
+ requestAnimationFrame(() => {
103
+ const rect = nullifyTransforms(el);
104
+ const targetRect = targetEl.getBoundingClientRect();
105
+ const x = targetRect.x - rect.x;
106
+ const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
107
+ const targetWidth = targetRect.width / 0.75;
108
+ const width = Math.abs(targetWidth - rect.width) > 1 ? {
109
+ maxWidth: convertToUnit(targetWidth)
110
+ } : undefined;
111
+ const style = getComputedStyle(el);
112
+ const targetStyle = getComputedStyle(targetEl);
113
+ const duration = parseFloat(style.transitionDuration) * 1000 || 150;
114
+ const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
115
+ const color = targetStyle.getPropertyValue('color');
116
+ el.style.visibility = 'visible';
117
+ targetEl.style.visibility = 'hidden';
118
+ animate(el, {
119
+ transform: `translate(${x}px, ${y}px) scale(${scale})`,
120
+ color,
121
+ ...width
122
+ }, {
123
+ duration,
124
+ easing: standardEasing,
125
+ direction: val ? 'normal' : 'reverse'
126
+ }).finished.then(() => {
127
+ el.style.removeProperty('visibility');
128
+ targetEl.style.removeProperty('visibility');
129
+ });
128
130
  });
129
131
  }
130
132
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"VField.mjs","names":["VExpandXTransition","useInputIcon","VFieldLabel","IconValue","LoaderSlot","makeLoaderProps","useLoader","makeFocusProps","useFocus","makeThemeProps","provideTheme","useBackgroundColor","useTextColor","computed","ref","toRef","watch","animate","convertToUnit","EventProp","genericComponent","getUid","isOn","nullifyTransforms","pick","propsFactory","standardEasing","useRender","allowedVariants","makeVFieldProps","appendInnerIcon","bgColor","String","clearable","Boolean","clearIcon","type","default","active","color","dirty","disabled","error","label","persistentClear","prependInnerIcon","reverse","singleLine","variant","validator","v","includes","VField","name","inheritAttrs","props","id","emits","e","focused","val","setup","attrs","emit","slots","themeClasses","loaderClasses","focusClasses","isFocused","focus","blur","InputIcon","isActive","hasLabel","uid","messagesId","value","labelRef","floatingLabelRef","controlRef","backgroundColorClasses","backgroundColorStyles","textColorClasses","textColorStyles","undefined","el","$el","targetEl","rect","targetRect","getBoundingClientRect","x","y","height","targetWidth","width","Math","abs","maxWidth","style","getComputedStyle","targetStyle","duration","parseFloat","transitionDuration","scale","getPropertyValue","visibility","transform","easing","direction","finished","then","removeProperty","flush","slotProps","onClick","target","document","activeElement","preventDefault","isOutlined","hasPrepend","hasClear","clear","hasAppend","for","loading","loader","class","filterFieldProps","keys","Object","filter","k"],"sources":["../../../src/components/VField/VField.tsx"],"sourcesContent":["// Styles\nimport './VField.sass'\n\n// Components\nimport { VExpandXTransition } from '@/components/transitions'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\nimport { VFieldLabel } from './VFieldLabel'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n animate,\n convertToUnit,\n EventProp,\n genericComponent,\n getUid,\n isOn,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { PropType, Ref } from 'vue'\nimport type { VInputSlot } from '@/components/VInput/VInput'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref<boolean>\n isFocused: Ref<boolean>\n controlRef: Ref<HTMLElement | undefined>\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record<string, unknown>\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n color: String,\n dirty: Boolean,\n disabled: Boolean,\n error: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n 'onClick:clear': EventProp,\n 'onClick:appendInner': EventProp,\n 'onClick:prependInner': EventProp,\n\n ...makeThemeProps(),\n ...makeLoaderProps(),\n}, 'v-field')\n\nexport type VFieldSlots = MakeSlots<{\n clear: []\n 'prepend-inner': [DefaultInputSlot & VInputSlot]\n 'append-inner': [DefaultInputSlot & VInputSlot]\n label: [DefaultInputSlot & VInputSlot]\n loader: [LoaderSlotProps]\n default: [VFieldSlot]\n}>\n\nexport const VField = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n } & SlotsToProps<VFieldSlots>\n}>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n const { InputIcon } = useInputIcon(props)\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const labelRef = ref<VFieldLabel>()\n const floatingLabelRef = ref<VFieldLabel>()\n const controlRef = ref<HTMLElement>()\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n isActive.value &&\n isFocused.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const style = getComputedStyle(el)\n const targetStyle = getComputedStyle(targetEl)\n const duration = parseFloat(style.transitionDuration) * 1000 || 150\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'))\n const color = targetStyle.getPropertyValue('color')\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width,\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed<DefaultInputSlot>(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n\n emit('click:control', e)\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = (slots['prepend-inner'] || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear)\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <div\n class={[\n 'v-field',\n {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label,\n [`v-field--variant-${props.variant}`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n focusClasses.value,\n loaderClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n textColorStyles.value,\n ]}\n onClick={ onClick }\n { ...attrs }\n >\n <div class=\"v-field__overlay\" />\n\n <LoaderSlot\n name=\"v-field\"\n active={ !!props.loading }\n color={ props.error ? 'error' : props.color }\n v-slots={{ default: slots.loader }}\n />\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-field__prepend-inner\">\n { props.prependInnerIcon && (\n <InputIcon key=\"prepend-icon\" name=\"prependInner\" />\n ) }\n\n { slots['prepend-inner']?.(slotProps.value) }\n </div>\n ) }\n\n <div class=\"v-field__field\" data-no-activator=\"\">\n { ['solo', 'filled'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel\n key=\"floating-label\"\n ref={ floatingLabelRef }\n class={[textColorClasses.value]}\n floating\n for={ id.value }\n >\n { label }\n </VFieldLabel>\n ) }\n\n <VFieldLabel ref={ labelRef } for={ id.value }>\n { label }\n </VFieldLabel>\n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value,\n },\n focus,\n blur,\n } as VFieldSlot) }\n </div>\n\n { hasClear && (\n <VExpandXTransition key=\"clear\">\n <div\n class=\"v-field__clearable\"\n v-show={ props.dirty }\n >\n { slots.clear\n ? slots.clear()\n : <InputIcon name=\"clear\" />\n }\n </div>\n </VExpandXTransition>\n ) }\n\n { hasAppend && (\n <div key=\"append\" class=\"v-field__append-inner\">\n { slots['append-inner']?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n <InputIcon key=\"append-icon\" name=\"appendInner\" />\n ) }\n </div>\n ) }\n\n <div\n class={[\n 'v-field__outline',\n textColorClasses.value,\n ]}\n >\n { isOutlined && (\n <>\n <div class=\"v-field__outline__start\" />\n\n { hasLabel.value && (\n <div class=\"v-field__outline__notch\">\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label }\n </VFieldLabel>\n </div>\n ) }\n\n <div class=\"v-field__outline__end\" />\n </>\n ) }\n\n { ['plain', 'underlined'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label }\n </VFieldLabel>\n ) }\n </div>\n </div>\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType<typeof VField>\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record<string, unknown>) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k))\n return pick(attrs, keys)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VField.mjs","names":["VExpandXTransition","useInputIcon","VFieldLabel","IconValue","LoaderSlot","makeLoaderProps","useLoader","makeFocusProps","useFocus","makeThemeProps","provideTheme","useBackgroundColor","useTextColor","computed","ref","toRef","watch","animate","convertToUnit","EventProp","genericComponent","getUid","isOn","nullifyTransforms","pick","propsFactory","standardEasing","useRender","allowedVariants","makeVFieldProps","appendInnerIcon","bgColor","String","clearable","Boolean","clearIcon","type","default","active","color","dirty","disabled","error","label","persistentClear","prependInnerIcon","reverse","singleLine","variant","validator","v","includes","VField","name","inheritAttrs","props","id","emits","e","focused","val","setup","attrs","emit","slots","themeClasses","loaderClasses","focusClasses","isFocused","focus","blur","InputIcon","isActive","hasLabel","uid","messagesId","value","labelRef","floatingLabelRef","controlRef","backgroundColorClasses","backgroundColorStyles","textColorClasses","textColorStyles","undefined","el","$el","targetEl","requestAnimationFrame","rect","targetRect","getBoundingClientRect","x","y","height","targetWidth","width","Math","abs","maxWidth","style","getComputedStyle","targetStyle","duration","parseFloat","transitionDuration","scale","getPropertyValue","visibility","transform","easing","direction","finished","then","removeProperty","flush","slotProps","onClick","target","document","activeElement","preventDefault","isOutlined","hasPrepend","hasClear","clear","hasAppend","for","loading","loader","class","filterFieldProps","keys","Object","filter","k"],"sources":["../../../src/components/VField/VField.tsx"],"sourcesContent":["// Styles\nimport './VField.sass'\n\n// Components\nimport { VExpandXTransition } from '@/components/transitions'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\nimport { VFieldLabel } from './VFieldLabel'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n animate,\n convertToUnit,\n EventProp,\n genericComponent,\n getUid,\n isOn,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { PropType, Ref } from 'vue'\nimport type { VInputSlot } from '@/components/VInput/VInput'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref<boolean>\n isFocused: Ref<boolean>\n controlRef: Ref<HTMLElement | undefined>\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record<string, unknown>\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n color: String,\n dirty: Boolean,\n disabled: Boolean,\n error: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n 'onClick:clear': EventProp,\n 'onClick:appendInner': EventProp,\n 'onClick:prependInner': EventProp,\n\n ...makeThemeProps(),\n ...makeLoaderProps(),\n}, 'v-field')\n\nexport type VFieldSlots = MakeSlots<{\n clear: []\n 'prepend-inner': [DefaultInputSlot & VInputSlot]\n 'append-inner': [DefaultInputSlot & VInputSlot]\n label: [DefaultInputSlot & VInputSlot]\n loader: [LoaderSlotProps]\n default: [VFieldSlot]\n}>\n\nexport const VField = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n } & SlotsToProps<VFieldSlots>\n}>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n const { InputIcon } = useInputIcon(props)\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const labelRef = ref<VFieldLabel>()\n const floatingLabelRef = ref<VFieldLabel>()\n const controlRef = ref<HTMLElement>()\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n isActive.value &&\n isFocused.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const style = getComputedStyle(el)\n const targetStyle = getComputedStyle(targetEl)\n const duration = parseFloat(style.transitionDuration) * 1000 || 150\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'))\n const color = targetStyle.getPropertyValue('color')\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width,\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed<DefaultInputSlot>(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n\n emit('click:control', e)\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = (slots['prepend-inner'] || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear)\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <div\n class={[\n 'v-field',\n {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label,\n [`v-field--variant-${props.variant}`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n focusClasses.value,\n loaderClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n textColorStyles.value,\n ]}\n onClick={ onClick }\n { ...attrs }\n >\n <div class=\"v-field__overlay\" />\n\n <LoaderSlot\n name=\"v-field\"\n active={ !!props.loading }\n color={ props.error ? 'error' : props.color }\n v-slots={{ default: slots.loader }}\n />\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-field__prepend-inner\">\n { props.prependInnerIcon && (\n <InputIcon key=\"prepend-icon\" name=\"prependInner\" />\n ) }\n\n { slots['prepend-inner']?.(slotProps.value) }\n </div>\n ) }\n\n <div class=\"v-field__field\" data-no-activator=\"\">\n { ['solo', 'filled'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel\n key=\"floating-label\"\n ref={ floatingLabelRef }\n class={[textColorClasses.value]}\n floating\n for={ id.value }\n >\n { label }\n </VFieldLabel>\n ) }\n\n <VFieldLabel ref={ labelRef } for={ id.value }>\n { label }\n </VFieldLabel>\n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value,\n },\n focus,\n blur,\n } as VFieldSlot) }\n </div>\n\n { hasClear && (\n <VExpandXTransition key=\"clear\">\n <div\n class=\"v-field__clearable\"\n v-show={ props.dirty }\n >\n { slots.clear\n ? slots.clear()\n : <InputIcon name=\"clear\" />\n }\n </div>\n </VExpandXTransition>\n ) }\n\n { hasAppend && (\n <div key=\"append\" class=\"v-field__append-inner\">\n { slots['append-inner']?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n <InputIcon key=\"append-icon\" name=\"appendInner\" />\n ) }\n </div>\n ) }\n\n <div\n class={[\n 'v-field__outline',\n textColorClasses.value,\n ]}\n >\n { isOutlined && (\n <>\n <div class=\"v-field__outline__start\" />\n\n { hasLabel.value && (\n <div class=\"v-field__outline__notch\">\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label }\n </VFieldLabel>\n </div>\n ) }\n\n <div class=\"v-field__outline__end\" />\n </>\n ) }\n\n { ['plain', 'underlined'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label }\n </VFieldLabel>\n ) }\n </div>\n </div>\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType<typeof VField>\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record<string, unknown>) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k))\n return pick(attrs, keys)\n}\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ import { VField } from "../VField/index.mjs"; // Composables
11
11
  import { forwardRefs } from "../../composables/forwardRefs.mjs";
12
12
  import { useLocale } from "../../composables/locale.mjs";
13
13
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
14
- import { computed, nextTick, ref } from 'vue';
14
+ import { computed, nextTick, ref, watch } from 'vue';
15
15
  import { callEvent, defineComponent, filterInputAttrs, humanReadableFileSize, useRender, wrapInArray } from "../../util/index.mjs"; // Types
16
16
  export const VFileInput = defineComponent({
17
17
  name: 'VFileInput',
@@ -116,12 +116,15 @@ export const VFileInput = defineComponent({
116
116
  onFocus();
117
117
  nextTick(() => {
118
118
  model.value = [];
119
- if (inputRef != null && inputRef.value) {
120
- inputRef.value.value = '';
121
- }
122
119
  callEvent(props['onClick:clear'], e);
123
120
  });
124
121
  }
122
+ watch(model, newValue => {
123
+ const hasModelReset = !Array.isArray(newValue) || !newValue.length;
124
+ if (hasModelReset && inputRef.value) {
125
+ inputRef.value.value = '';
126
+ }
127
+ });
125
128
  useRender(() => {
126
129
  const hasCounter = !!(slots.counter || props.counter);
127
130
  const hasDetails = !!(hasCounter || slots.details);