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.
- package/dist/json/attributes.json +450 -450
- package/dist/json/importMap.json +44 -44
- package/dist/json/tags.json +1 -1
- package/dist/json/web-types.json +815 -805
- package/dist/vuetify-labs.css +250 -246
- package/dist/vuetify-labs.d.ts +205 -174
- package/dist/vuetify-labs.esm.js +244 -170
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +243 -169
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +29 -25
- package/dist/vuetify.d.ts +206 -186
- package/dist/vuetify.esm.js +221 -162
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +220 -161
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +700 -692
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.ts +2 -2
- package/lib/blueprints/md1.d.ts +2 -2
- package/lib/blueprints/md2.d.ts +2 -2
- package/lib/blueprints/md3.d.ts +2 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +43 -20
- package/lib/components/VBtn/VBtn.mjs +8 -3
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +3 -3
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +43 -20
- package/lib/components/VDefaultsProvider/index.d.ts +5 -4
- package/lib/components/VDialog/VDialog.mjs +6 -5
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/index.d.ts +57 -34
- package/lib/components/VDivider/VDivider.mjs +6 -6
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VField/VField.mjs +28 -26
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +7 -4
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VForm/index.d.ts +0 -3
- package/lib/components/VList/VList.mjs +4 -1
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +29 -19
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.mjs +6 -5
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.ts +57 -34
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +4 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +4 -0
- package/lib/components/VNavigationDrawer/index.d.ts +3 -3
- package/lib/components/VNavigationDrawer/touch.mjs +7 -6
- package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.ts +34 -11
- package/lib/components/VOverlay/locationStrategies.mjs +40 -29
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +25 -16
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +1 -1
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +3 -4
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +43 -20
- package/lib/components/VSnackbar/index.d.ts +42 -19
- package/lib/components/VTable/VTable.css +4 -4
- package/lib/components/VTable/VTable.sass +2 -2
- package/lib/components/VTooltip/VTooltip.mjs +4 -3
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.ts +57 -34
- package/lib/components/index.d.ts +195 -174
- package/lib/composables/defaults.mjs +1 -1
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/form.mjs +0 -1
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/toggleScope.mjs +14 -7
- package/lib/composables/toggleScope.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +14 -14
- package/lib/labs/VDataTable/VDataTable.mjs +2 -1
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +19 -6
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +2 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +4 -2
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +11 -0
- package/lib/labs/components.d.ts +11 -0
- package/lib/locale/adapters/vue-i18n.mjs +12 -2
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
- package/lib/locale/en.mjs +2 -2
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/sv.mjs +7 -7
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/util/defineComponent.mjs +21 -18
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/helpers.mjs +5 -1
- package/lib/util/helpers.mjs.map +1 -1
- 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: () =>
|
|
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 {
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
} =
|
|
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,
|
|
47
|
-
"style": [dividerStyles.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","
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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);
|