vuetify 3.5.1 → 3.5.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 +39 -27
- package/dist/json/importMap.json +100 -100
- package/dist/json/tags.json +6 -3
- package/dist/json/web-types.json +101 -65
- package/dist/vuetify-labs.css +1717 -1712
- package/dist/vuetify-labs.d.ts +191 -92
- package/dist/vuetify-labs.esm.js +49 -30
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +49 -30
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1154 -1149
- package/dist/vuetify.d.ts +215 -116
- package/dist/vuetify.esm.js +49 -30
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +49 -30
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +25 -26
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +12 -0
- package/lib/components/VAvatar/VAvatar.mjs +16 -2
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VBottomSheet/index.d.mts +6 -0
- package/lib/components/VCheckbox/VCheckbox.css +3 -0
- package/lib/components/VCheckbox/VCheckbox.sass +3 -0
- package/lib/components/VCheckbox/_variables.scss +3 -0
- package/lib/components/VChip/VChip.css +0 -1
- package/lib/components/VChip/VChip.mjs +2 -1
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/VChip.sass +0 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/util/index.mjs +1 -1
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +12 -0
- package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +2 -3
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/components/VDatePicker/index.d.mts +45 -63
- package/lib/components/VDialog/index.d.mts +21 -3
- package/lib/components/VLabel/VLabel.mjs +5 -4
- package/lib/components/VLabel/VLabel.mjs.map +1 -1
- package/lib/components/VLabel/index.d.mts +6 -9
- package/lib/components/VList/VListItem.css +19 -6
- package/lib/components/VList/VListItem.sass +16 -3
- package/lib/components/VList/_variables.scss +6 -4
- package/lib/components/VMenu/VMenu.mjs +1 -0
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.mts +21 -3
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +4 -2
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VOverlay/index.d.mts +6 -0
- package/lib/components/VOverlay/scrollStrategies.mjs +3 -0
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +12 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs +4 -2
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.mts +21 -3
- package/lib/components/VSwitch/VSwitch.css +3 -0
- package/lib/components/VSwitch/VSwitch.sass +3 -0
- package/lib/components/VSwitch/_variables.scss +1 -0
- package/lib/components/VTable/VTable.css +15 -28
- package/lib/components/VTable/VTable.sass +6 -13
- package/lib/components/VTable/_variables.scss +1 -1
- package/lib/components/VTooltip/index.d.mts +21 -3
- package/lib/components/VWindow/VWindow.css +1 -1
- package/lib/components/VWindow/VWindow.sass +1 -1
- package/lib/components/index.d.mts +183 -84
- package/lib/composables/calendar.mjs +1 -1
- package/lib/composables/calendar.mjs.map +1 -1
- package/lib/composables/date/adapters/vuetify.mjs +2 -8
- package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
- package/lib/composables/group.mjs +4 -1
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/validation.mjs +1 -1
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +32 -32
- package/lib/labs/VCalendar/index.d.mts +8 -8
- package/lib/labs/components.d.mts +8 -8
- package/package.json +2 -2
|
@@ -121,6 +121,7 @@ declare const VMenu: {
|
|
|
121
121
|
maxWidth?: string | number | undefined;
|
|
122
122
|
minHeight?: string | number | undefined;
|
|
123
123
|
minWidth?: string | number | undefined;
|
|
124
|
+
opacity?: string | number | undefined;
|
|
124
125
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
125
126
|
class?: any;
|
|
126
127
|
theme?: string | undefined;
|
|
@@ -226,6 +227,7 @@ declare const VMenu: {
|
|
|
226
227
|
maxWidth?: string | number | undefined;
|
|
227
228
|
minHeight?: string | number | undefined;
|
|
228
229
|
minWidth?: string | number | undefined;
|
|
230
|
+
opacity?: string | number | undefined;
|
|
229
231
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
230
232
|
class?: any;
|
|
231
233
|
theme?: string | undefined;
|
|
@@ -300,6 +302,7 @@ declare const VMenu: {
|
|
|
300
302
|
maxWidth?: string | number | undefined;
|
|
301
303
|
minHeight?: string | number | undefined;
|
|
302
304
|
minWidth?: string | number | undefined;
|
|
305
|
+
opacity?: string | number | undefined;
|
|
303
306
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
304
307
|
class?: any;
|
|
305
308
|
theme?: string | undefined;
|
|
@@ -401,6 +404,7 @@ declare const VMenu: {
|
|
|
401
404
|
maxWidth?: string | number | undefined;
|
|
402
405
|
minHeight?: string | number | undefined;
|
|
403
406
|
minWidth?: string | number | undefined;
|
|
407
|
+
opacity?: string | number | undefined;
|
|
404
408
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
405
409
|
class?: any;
|
|
406
410
|
theme?: string | undefined;
|
|
@@ -549,6 +553,7 @@ declare const VMenu: {
|
|
|
549
553
|
maxWidth?: string | number | undefined;
|
|
550
554
|
minHeight?: string | number | undefined;
|
|
551
555
|
minWidth?: string | number | undefined;
|
|
556
|
+
opacity?: string | number | undefined;
|
|
552
557
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
553
558
|
class?: any;
|
|
554
559
|
theme?: string | undefined;
|
|
@@ -601,7 +606,7 @@ declare const VMenu: {
|
|
|
601
606
|
globalTop: Readonly<vue.Ref<boolean>>;
|
|
602
607
|
localTop: vue.ComputedRef<boolean>;
|
|
603
608
|
updateLocation: vue.Ref<((e: Event) => void) | undefined>;
|
|
604
|
-
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
609
|
+
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
605
610
|
'update:modelValue': (value: boolean) => boolean;
|
|
606
611
|
}, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
|
607
612
|
location: Anchor;
|
|
@@ -639,6 +644,7 @@ declare const VMenu: {
|
|
|
639
644
|
maxWidth?: string | number | undefined;
|
|
640
645
|
minHeight?: string | number | undefined;
|
|
641
646
|
minWidth?: string | number | undefined;
|
|
647
|
+
opacity?: string | number | undefined;
|
|
642
648
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
643
649
|
class?: any;
|
|
644
650
|
theme?: string | undefined;
|
|
@@ -763,6 +769,7 @@ declare const VMenu: {
|
|
|
763
769
|
maxWidth?: string | number | undefined;
|
|
764
770
|
minHeight?: string | number | undefined;
|
|
765
771
|
minWidth?: string | number | undefined;
|
|
772
|
+
opacity?: string | number | undefined;
|
|
766
773
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
767
774
|
class?: any;
|
|
768
775
|
theme?: string | undefined;
|
|
@@ -868,6 +875,7 @@ declare const VMenu: {
|
|
|
868
875
|
maxWidth?: string | number | undefined;
|
|
869
876
|
minHeight?: string | number | undefined;
|
|
870
877
|
minWidth?: string | number | undefined;
|
|
878
|
+
opacity?: string | number | undefined;
|
|
871
879
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
872
880
|
class?: any;
|
|
873
881
|
theme?: string | undefined;
|
|
@@ -942,6 +950,7 @@ declare const VMenu: {
|
|
|
942
950
|
maxWidth?: string | number | undefined;
|
|
943
951
|
minHeight?: string | number | undefined;
|
|
944
952
|
minWidth?: string | number | undefined;
|
|
953
|
+
opacity?: string | number | undefined;
|
|
945
954
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
946
955
|
class?: any;
|
|
947
956
|
theme?: string | undefined;
|
|
@@ -1043,6 +1052,7 @@ declare const VMenu: {
|
|
|
1043
1052
|
maxWidth?: string | number | undefined;
|
|
1044
1053
|
minHeight?: string | number | undefined;
|
|
1045
1054
|
minWidth?: string | number | undefined;
|
|
1055
|
+
opacity?: string | number | undefined;
|
|
1046
1056
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1047
1057
|
class?: any;
|
|
1048
1058
|
theme?: string | undefined;
|
|
@@ -1191,6 +1201,7 @@ declare const VMenu: {
|
|
|
1191
1201
|
maxWidth?: string | number | undefined;
|
|
1192
1202
|
minHeight?: string | number | undefined;
|
|
1193
1203
|
minWidth?: string | number | undefined;
|
|
1204
|
+
opacity?: string | number | undefined;
|
|
1194
1205
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1195
1206
|
class?: any;
|
|
1196
1207
|
theme?: string | undefined;
|
|
@@ -1243,7 +1254,7 @@ declare const VMenu: {
|
|
|
1243
1254
|
globalTop: Readonly<vue.Ref<boolean>>;
|
|
1244
1255
|
localTop: vue.ComputedRef<boolean>;
|
|
1245
1256
|
updateLocation: vue.Ref<((e: Event) => void) | undefined>;
|
|
1246
|
-
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, {}, {}, {}, {
|
|
1257
|
+
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, {}, {}, {}, {
|
|
1247
1258
|
location: Anchor;
|
|
1248
1259
|
origin: "auto" | Anchor | "overlap";
|
|
1249
1260
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
|
@@ -1312,6 +1323,7 @@ declare const VMenu: {
|
|
|
1312
1323
|
maxWidth?: string | number | undefined;
|
|
1313
1324
|
minHeight?: string | number | undefined;
|
|
1314
1325
|
minWidth?: string | number | undefined;
|
|
1326
|
+
opacity?: string | number | undefined;
|
|
1315
1327
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1316
1328
|
class?: any;
|
|
1317
1329
|
theme?: string | undefined;
|
|
@@ -1417,6 +1429,7 @@ declare const VMenu: {
|
|
|
1417
1429
|
maxWidth?: string | number | undefined;
|
|
1418
1430
|
minHeight?: string | number | undefined;
|
|
1419
1431
|
minWidth?: string | number | undefined;
|
|
1432
|
+
opacity?: string | number | undefined;
|
|
1420
1433
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1421
1434
|
class?: any;
|
|
1422
1435
|
theme?: string | undefined;
|
|
@@ -1491,6 +1504,7 @@ declare const VMenu: {
|
|
|
1491
1504
|
maxWidth?: string | number | undefined;
|
|
1492
1505
|
minHeight?: string | number | undefined;
|
|
1493
1506
|
minWidth?: string | number | undefined;
|
|
1507
|
+
opacity?: string | number | undefined;
|
|
1494
1508
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1495
1509
|
class?: any;
|
|
1496
1510
|
theme?: string | undefined;
|
|
@@ -1592,6 +1606,7 @@ declare const VMenu: {
|
|
|
1592
1606
|
maxWidth?: string | number | undefined;
|
|
1593
1607
|
minHeight?: string | number | undefined;
|
|
1594
1608
|
minWidth?: string | number | undefined;
|
|
1609
|
+
opacity?: string | number | undefined;
|
|
1595
1610
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1596
1611
|
class?: any;
|
|
1597
1612
|
theme?: string | undefined;
|
|
@@ -1740,6 +1755,7 @@ declare const VMenu: {
|
|
|
1740
1755
|
maxWidth?: string | number | undefined;
|
|
1741
1756
|
minHeight?: string | number | undefined;
|
|
1742
1757
|
minWidth?: string | number | undefined;
|
|
1758
|
+
opacity?: string | number | undefined;
|
|
1743
1759
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1744
1760
|
class?: any;
|
|
1745
1761
|
theme?: string | undefined;
|
|
@@ -1792,7 +1808,7 @@ declare const VMenu: {
|
|
|
1792
1808
|
globalTop: Readonly<vue.Ref<boolean>>;
|
|
1793
1809
|
localTop: vue.ComputedRef<boolean>;
|
|
1794
1810
|
updateLocation: vue.Ref<((e: Event) => void) | undefined>;
|
|
1795
|
-
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
1811
|
+
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
1796
1812
|
'update:modelValue': (value: boolean) => boolean;
|
|
1797
1813
|
}, string, {
|
|
1798
1814
|
location: Anchor;
|
|
@@ -1851,6 +1867,7 @@ declare const VMenu: {
|
|
|
1851
1867
|
maxWidth: (StringConstructor | NumberConstructor)[];
|
|
1852
1868
|
minHeight: (StringConstructor | NumberConstructor)[];
|
|
1853
1869
|
minWidth: (StringConstructor | NumberConstructor)[];
|
|
1870
|
+
opacity: (StringConstructor | NumberConstructor)[];
|
|
1854
1871
|
transition: Omit<{
|
|
1855
1872
|
type: vue.PropType<string | boolean | (vue.TransitionProps & {
|
|
1856
1873
|
component?: Component | undefined;
|
|
@@ -1965,6 +1982,7 @@ declare const VMenu: {
|
|
|
1965
1982
|
maxWidth: (StringConstructor | NumberConstructor)[];
|
|
1966
1983
|
minHeight: (StringConstructor | NumberConstructor)[];
|
|
1967
1984
|
minWidth: (StringConstructor | NumberConstructor)[];
|
|
1985
|
+
opacity: (StringConstructor | NumberConstructor)[];
|
|
1968
1986
|
transition: Omit<{
|
|
1969
1987
|
type: vue.PropType<string | boolean | (vue.TransitionProps & {
|
|
1970
1988
|
component?: Component | undefined;
|
|
@@ -50,6 +50,7 @@ export const makeVOverlayProps = propsFactory({
|
|
|
50
50
|
contentClass: null,
|
|
51
51
|
contentProps: null,
|
|
52
52
|
disabled: Boolean,
|
|
53
|
+
opacity: [Number, String],
|
|
53
54
|
noClickAnimation: Boolean,
|
|
54
55
|
modelValue: Boolean,
|
|
55
56
|
persistent: Boolean,
|
|
@@ -236,7 +237,7 @@ export const VOverlay = genericComponent()({
|
|
|
236
237
|
ref: activatorRef,
|
|
237
238
|
targetRef
|
|
238
239
|
}, activatorEvents.value, props.activatorProps)
|
|
239
|
-
}),
|
|
240
|
+
}), isMounted.value && hasContent.value && _createVNode(Teleport, {
|
|
240
241
|
"disabled": !teleportTarget.value,
|
|
241
242
|
"to": teleportTarget.value
|
|
242
243
|
}, {
|
|
@@ -247,12 +248,13 @@ export const VOverlay = genericComponent()({
|
|
|
247
248
|
'v-overlay--contained': props.contained
|
|
248
249
|
}, themeClasses.value, rtlClasses.value, props.class],
|
|
249
250
|
"style": [stackStyles.value, {
|
|
251
|
+
'--v-overlay-opacity': props.opacity,
|
|
250
252
|
top: convertToUnit(top.value)
|
|
251
253
|
}, props.style],
|
|
252
254
|
"ref": root
|
|
253
255
|
}, scopeId, attrs), [_createVNode(Scrim, _mergeProps({
|
|
254
256
|
"color": scrimColor,
|
|
255
|
-
"modelValue":
|
|
257
|
+
"modelValue": isActive.value && !!props.scrim
|
|
256
258
|
}, scrimEvents.value), null), _createVNode(MaybeTransition, {
|
|
257
259
|
"appear": true,
|
|
258
260
|
"persisted": true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","noClickAnimation","persistent","scrim","zIndex","Number","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","teleportTarget","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","dimensionStyles","isMounted","scopeId","root","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any> }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && globalTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n targetRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { !props.disabled && isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n { top: convertToUnit(top.value) },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ !!props.scrim && isActive.value }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","teleportTarget","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","dimensionStyles","isMounted","scopeId","root","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any> }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && globalTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n targetRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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"}
|
|
@@ -118,6 +118,7 @@ declare const VOverlay: {
|
|
|
118
118
|
maxWidth?: string | number | undefined;
|
|
119
119
|
minHeight?: string | number | undefined;
|
|
120
120
|
minWidth?: string | number | undefined;
|
|
121
|
+
opacity?: string | number | undefined;
|
|
121
122
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
122
123
|
class?: any;
|
|
123
124
|
theme?: string | undefined;
|
|
@@ -207,6 +208,7 @@ declare const VOverlay: {
|
|
|
207
208
|
maxWidth?: string | number | undefined;
|
|
208
209
|
minHeight?: string | number | undefined;
|
|
209
210
|
minWidth?: string | number | undefined;
|
|
211
|
+
opacity?: string | number | undefined;
|
|
210
212
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
211
213
|
class?: any;
|
|
212
214
|
theme?: string | undefined;
|
|
@@ -330,6 +332,7 @@ declare const VOverlay: {
|
|
|
330
332
|
maxWidth?: string | number | undefined;
|
|
331
333
|
minHeight?: string | number | undefined;
|
|
332
334
|
minWidth?: string | number | undefined;
|
|
335
|
+
opacity?: string | number | undefined;
|
|
333
336
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
334
337
|
class?: any;
|
|
335
338
|
theme?: string | undefined;
|
|
@@ -446,6 +449,7 @@ declare const VOverlay: {
|
|
|
446
449
|
maxWidth?: string | number | undefined;
|
|
447
450
|
minHeight?: string | number | undefined;
|
|
448
451
|
minWidth?: string | number | undefined;
|
|
452
|
+
opacity?: string | number | undefined;
|
|
449
453
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
450
454
|
class?: any;
|
|
451
455
|
theme?: string | undefined;
|
|
@@ -611,6 +615,7 @@ declare const VOverlay: {
|
|
|
611
615
|
contentClass: null;
|
|
612
616
|
contentProps: null;
|
|
613
617
|
disabled: BooleanConstructor;
|
|
618
|
+
opacity: (StringConstructor | NumberConstructor)[];
|
|
614
619
|
noClickAnimation: BooleanConstructor;
|
|
615
620
|
modelValue: BooleanConstructor;
|
|
616
621
|
persistent: BooleanConstructor;
|
|
@@ -693,6 +698,7 @@ declare const VOverlay: {
|
|
|
693
698
|
contentClass: null;
|
|
694
699
|
contentProps: null;
|
|
695
700
|
disabled: BooleanConstructor;
|
|
701
|
+
opacity: (StringConstructor | NumberConstructor)[];
|
|
696
702
|
noClickAnimation: BooleanConstructor;
|
|
697
703
|
modelValue: BooleanConstructor;
|
|
698
704
|
persistent: BooleanConstructor;
|
|
@@ -61,12 +61,15 @@ function blockScrollStrategy(data, props) {
|
|
|
61
61
|
scrollElements.forEach((el, i) => {
|
|
62
62
|
const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));
|
|
63
63
|
const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));
|
|
64
|
+
const scrollBehavior = el.style.scrollBehavior;
|
|
65
|
+
el.style.scrollBehavior = 'auto';
|
|
64
66
|
el.style.removeProperty('--v-body-scroll-x');
|
|
65
67
|
el.style.removeProperty('--v-body-scroll-y');
|
|
66
68
|
el.style.removeProperty('--v-scrollbar-offset');
|
|
67
69
|
el.classList.remove('v-overlay-scroll-blocked');
|
|
68
70
|
el.scrollLeft = -x;
|
|
69
71
|
el.scrollTop = -y;
|
|
72
|
+
el.style.scrollBehavior = scrollBehavior;
|
|
70
73
|
});
|
|
71
74
|
if (scrollableParent) {
|
|
72
75
|
data.root.value.classList.remove('v-overlay--scroll-blocked');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollStrategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","active","run","onScroll","e","bindScroll","targetEl","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scrollStrategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","active","run","onScroll","e","bindScroll","targetEl","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","scrollBehavior","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n\n el.style.scrollBehavior = scrollBehavior\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"AAAA;AACA,SAASA,WAAW,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAC/DC,eAAe;AAAA,SACfC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,UAAU,EAAEC,YAAY,gCAEhF;AAaA,MAAMC,gBAAgB,GAAG;EACvBC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAEC,mBAAmB;EAC1BC,KAAK,EAAEC,mBAAmB;EAC1BC,UAAU,EAAEC;AACd,CAAC;AAOD,OAAO,MAAMC,uBAAuB,GAAGT,YAAY,CAAC;EAClDU,cAAc,EAAE;IACdC,IAAI,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAA8C;IACrEC,OAAO,EAAE,OAAO;IAChBC,SAAS,EAAGC,GAAQ,IAAK,OAAOA,GAAG,KAAK,UAAU,IAAIA,GAAG,IAAIf;EAC/D;AACF,CAAC,EAAE,4BAA4B,CAAC;AAEhC,OAAO,SAASgB,mBAAmBA,CACjCC,KAAoB,EACpBC,IAAwB,EACxB;EACA,IAAI,CAACpB,UAAU,EAAE;EAEjB,IAAIqB,KAA8B;EAClC1B,WAAW,CAAC,YAAY;IACtB0B,KAAK,EAAEC,IAAI,CAAC,CAAC;IAEb,IAAI,EAAEF,IAAI,CAACG,QAAQ,CAACC,KAAK,IAAIL,KAAK,CAACR,cAAc,CAAC,EAAE;IAEpDU,KAAK,GAAG7B,WAAW,CAAC,CAAC;IACrB,MAAMC,QAAQ,CAAC,CAAC;IAChB4B,KAAK,CAACI,MAAM,IAAIJ,KAAK,CAACK,GAAG,CAAC,MAAM;MAC9B,IAAI,OAAOP,KAAK,CAACR,cAAc,KAAK,UAAU,EAAE;QAC9CQ,KAAK,CAACR,cAAc,CAACS,IAAI,EAAED,KAAK,EAAEE,KAAM,CAAC;MAC3C,CAAC,MAAM;QACLnB,gBAAgB,CAACiB,KAAK,CAACR,cAAc,CAAC,GAAGS,IAAI,EAAED,KAAK,EAAEE,KAAM,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF3B,cAAc,CAAC,MAAM;IACnB2B,KAAK,EAAEC,IAAI,CAAC,CAAC;EACf,CAAC,CAAC;AACJ;AAEA,SAASjB,mBAAmBA,CAAEe,IAAwB,EAAE;EACtD,SAASO,QAAQA,CAAEC,CAAQ,EAAE;IAC3BR,IAAI,CAACG,QAAQ,CAACC,KAAK,GAAG,KAAK;EAC7B;EAEAK,UAAU,CAACT,IAAI,CAACU,QAAQ,CAACN,KAAK,IAAIJ,IAAI,CAACW,SAAS,CAACP,KAAK,EAAEG,QAAQ,CAAC;AACnE;AAEA,SAASpB,mBAAmBA,CAAEa,IAAwB,EAAED,KAAoB,EAAE;EAC5E,MAAMa,YAAY,GAAGZ,IAAI,CAACa,IAAI,CAACT,KAAK,EAAEQ,YAAY;EAClD,MAAME,cAAc,GAAG,CAAC,GAAG,IAAIC,GAAG,CAAC,CACjC,GAAGrC,gBAAgB,CAACsB,IAAI,CAACU,QAAQ,CAACN,KAAK,EAAEL,KAAK,CAACiB,SAAS,GAAGJ,YAAY,GAAGK,SAAS,CAAC,EACpF,GAAGvC,gBAAgB,CAACsB,IAAI,CAACW,SAAS,CAACP,KAAK,EAAEL,KAAK,CAACiB,SAAS,GAAGJ,YAAY,GAAGK,SAAS,CAAC,CACtF,CAAC,CAAC,CAACC,MAAM,CAACC,EAAE,IAAI,CAACA,EAAE,CAACC,SAAS,CAACC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;EACpE,MAAMC,cAAc,GAAGC,MAAM,CAACC,UAAU,GAAGC,QAAQ,CAACC,eAAe,CAACC,WAAW;EAE/E,MAAMC,gBAAgB,GAAG,CAACT,EAAE,IAAIxC,YAAY,CAACwC,EAAE,CAAC,IAAIA,EAAE,EAAEP,YAAY,IAAIa,QAAQ,CAACC,eAAe,CAAC;EACjG,IAAIE,gBAAgB,EAAE;IACpB5B,IAAI,CAACa,IAAI,CAACT,KAAK,CAAEgB,SAAS,CAACS,GAAG,CAAC,2BAA2B,CAAC;EAC7D;EAEAf,cAAc,CAACgB,OAAO,CAAC,CAACX,EAAE,EAAEY,CAAC,KAAK;IAChCZ,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAExD,aAAa,CAAC,CAAC0C,EAAE,CAACe,UAAU,CAAC,CAAC;IACxEf,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAExD,aAAa,CAAC,CAAC0C,EAAE,CAACgB,SAAS,CAAC,CAAC;IAEvE,IAAIhB,EAAE,KAAKM,QAAQ,CAACC,eAAe,EAAE;MACnCP,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,sBAAsB,EAAExD,aAAa,CAAC6C,cAAc,CAAC,CAAC;IAC7E;IAEAH,EAAE,CAACC,SAAS,CAACS,GAAG,CAAC,0BAA0B,CAAC;EAC9C,CAAC,CAAC;EAEFvD,cAAc,CAAC,MAAM;IACnBwC,cAAc,CAACgB,OAAO,CAAC,CAACX,EAAE,EAAEY,CAAC,KAAK;MAChC,MAAMK,CAAC,GAAGC,UAAU,CAAClB,EAAE,CAACa,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MACpE,MAAMC,CAAC,GAAGF,UAAU,CAAClB,EAAE,CAACa,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MAEpE,MAAME,cAAc,GAAGrB,EAAE,CAACa,KAAK,CAACQ,cAAc;MAE9CrB,EAAE,CAACa,KAAK,CAACQ,cAAc,GAAG,MAAM;MAChCrB,EAAE,CAACa,KAAK,CAACS,cAAc,CAAC,mBAAmB,CAAC;MAC5CtB,EAAE,CAACa,KAAK,CAACS,cAAc,CAAC,mBAAmB,CAAC;MAC5CtB,EAAE,CAACa,KAAK,CAACS,cAAc,CAAC,sBAAsB,CAAC;MAC/CtB,EAAE,CAACC,SAAS,CAACsB,MAAM,CAAC,0BAA0B,CAAC;MAE/CvB,EAAE,CAACe,UAAU,GAAG,CAACE,CAAC;MAClBjB,EAAE,CAACgB,SAAS,GAAG,CAACI,CAAC;MAEjBpB,EAAE,CAACa,KAAK,CAACQ,cAAc,GAAGA,cAAc;IAC1C,CAAC,CAAC;IACF,IAAIZ,gBAAgB,EAAE;MACpB5B,IAAI,CAACa,IAAI,CAACT,KAAK,CAAEgB,SAAS,CAACsB,MAAM,CAAC,2BAA2B,CAAC;IAChE;EACF,CAAC,CAAC;AACJ;AAEA,SAASrD,wBAAwBA,CAAEW,IAAwB,EAAED,KAAoB,EAAEE,KAAkB,EAAE;EACrG,IAAI0C,IAAI,GAAG,KAAK;EAChB,IAAIC,GAAG,GAAG,CAAC,CAAC;EACZ,IAAIC,GAAG,GAAG,CAAC,CAAC;EAEZ,SAASC,MAAMA,CAAEtC,CAAQ,EAAE;IACzBhC,eAAe,CAAC,MAAM;MACpB,MAAMuE,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAC/BjD,IAAI,CAACkD,cAAc,CAAC9C,KAAK,GAAGI,CAAC,CAAC;MAC9B,MAAM2C,IAAI,GAAGH,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK;MACtCJ,IAAI,GAAGQ,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC;IAC/B,CAAC,CAAC;EACJ;EAEAN,GAAG,GAAG,CAAC,OAAOO,mBAAmB,KAAK,WAAW,GAAIC,EAAY,IAAKA,EAAE,CAAC,CAAC,GAAGD,mBAAmB,EAAE,MAAM;IACtGnD,KAAK,CAACK,GAAG,CAAC,MAAM;MACdG,UAAU,CAACT,IAAI,CAACU,QAAQ,CAACN,KAAK,IAAIJ,IAAI,CAACW,SAAS,CAACP,KAAK,EAAEI,CAAC,IAAI;QAC3D,IAAImC,IAAI,EAAE;UACR;UACA;UACA;UACA;UACAW,oBAAoB,CAACV,GAAG,CAAC;UACzBA,GAAG,GAAGW,qBAAqB,CAAC,MAAM;YAChCX,GAAG,GAAGW,qBAAqB,CAAC,MAAM;cAChCT,MAAM,CAACtC,CAAC,CAAC;YACX,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,MAAM;UACLsC,MAAM,CAACtC,CAAC,CAAC;QACX;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFlC,cAAc,CAAC,MAAM;IACnB,OAAOkF,kBAAkB,KAAK,WAAW,IAAIA,kBAAkB,CAACX,GAAG,CAAC;IACpES,oBAAoB,CAACV,GAAG,CAAC;EAC3B,CAAC,CAAC;AACJ;;AAEA;AACA,SAASnC,UAAUA,CAAEU,EAA2B,EAAEZ,QAA4B,EAAE;EAC9E,MAAMO,cAAc,GAAG,CAACW,QAAQ,EAAE,GAAG/C,gBAAgB,CAACyC,EAAE,CAAC,CAAC;EAC1DL,cAAc,CAACgB,OAAO,CAACX,EAAE,IAAI;IAC3BA,EAAE,CAACsC,gBAAgB,CAAC,QAAQ,EAAElD,QAAQ,EAAE;MAAEmD,OAAO,EAAE;IAAK,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEFpF,cAAc,CAAC,MAAM;IACnBwC,cAAc,CAACgB,OAAO,CAACX,EAAE,IAAI;MAC3BA,EAAE,CAACwC,mBAAmB,CAAC,QAAQ,EAAEpD,QAAQ,CAAC;IAC5C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
|
|
@@ -646,6 +646,7 @@ declare const VSelect: {
|
|
|
646
646
|
maxWidth?: string | number | undefined;
|
|
647
647
|
minHeight?: string | number | undefined;
|
|
648
648
|
minWidth?: string | number | undefined;
|
|
649
|
+
opacity?: string | number | undefined;
|
|
649
650
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
650
651
|
class?: any;
|
|
651
652
|
theme?: string | undefined;
|
|
@@ -719,6 +720,7 @@ declare const VSelect: {
|
|
|
719
720
|
maxWidth?: string | number | undefined;
|
|
720
721
|
minHeight?: string | number | undefined;
|
|
721
722
|
minWidth?: string | number | undefined;
|
|
723
|
+
opacity?: string | number | undefined;
|
|
722
724
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
723
725
|
class?: any;
|
|
724
726
|
theme?: string | undefined;
|
|
@@ -1181,6 +1183,7 @@ declare const VSelect: {
|
|
|
1181
1183
|
maxWidth?: string | number | undefined;
|
|
1182
1184
|
minHeight?: string | number | undefined;
|
|
1183
1185
|
minWidth?: string | number | undefined;
|
|
1186
|
+
opacity?: string | number | undefined;
|
|
1184
1187
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1185
1188
|
class?: any;
|
|
1186
1189
|
theme?: string | undefined;
|
|
@@ -1254,6 +1257,7 @@ declare const VSelect: {
|
|
|
1254
1257
|
maxWidth?: string | number | undefined;
|
|
1255
1258
|
minHeight?: string | number | undefined;
|
|
1256
1259
|
minWidth?: string | number | undefined;
|
|
1260
|
+
opacity?: string | number | undefined;
|
|
1257
1261
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1258
1262
|
class?: any;
|
|
1259
1263
|
theme?: string | undefined;
|
|
@@ -1826,6 +1830,7 @@ declare const VSelect: {
|
|
|
1826
1830
|
maxWidth?: string | number | undefined;
|
|
1827
1831
|
minHeight?: string | number | undefined;
|
|
1828
1832
|
minWidth?: string | number | undefined;
|
|
1833
|
+
opacity?: string | number | undefined;
|
|
1829
1834
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1830
1835
|
class?: any;
|
|
1831
1836
|
theme?: string | undefined;
|
|
@@ -1899,6 +1904,7 @@ declare const VSelect: {
|
|
|
1899
1904
|
maxWidth?: string | number | undefined;
|
|
1900
1905
|
minHeight?: string | number | undefined;
|
|
1901
1906
|
minWidth?: string | number | undefined;
|
|
1907
|
+
opacity?: string | number | undefined;
|
|
1902
1908
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
1903
1909
|
class?: any;
|
|
1904
1910
|
theme?: string | undefined;
|
|
@@ -2408,6 +2414,7 @@ declare const VSelect: {
|
|
|
2408
2414
|
maxWidth?: string | number | undefined;
|
|
2409
2415
|
minHeight?: string | number | undefined;
|
|
2410
2416
|
minWidth?: string | number | undefined;
|
|
2417
|
+
opacity?: string | number | undefined;
|
|
2411
2418
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
2412
2419
|
class?: any;
|
|
2413
2420
|
theme?: string | undefined;
|
|
@@ -2481,6 +2488,7 @@ declare const VSelect: {
|
|
|
2481
2488
|
maxWidth?: string | number | undefined;
|
|
2482
2489
|
minHeight?: string | number | undefined;
|
|
2483
2490
|
minWidth?: string | number | undefined;
|
|
2491
|
+
opacity?: string | number | undefined;
|
|
2484
2492
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
2485
2493
|
class?: any;
|
|
2486
2494
|
theme?: string | undefined;
|
|
@@ -3204,6 +3212,7 @@ declare const VSelect: {
|
|
|
3204
3212
|
maxWidth?: string | number | undefined;
|
|
3205
3213
|
minHeight?: string | number | undefined;
|
|
3206
3214
|
minWidth?: string | number | undefined;
|
|
3215
|
+
opacity?: string | number | undefined;
|
|
3207
3216
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
3208
3217
|
class?: any;
|
|
3209
3218
|
theme?: string | undefined;
|
|
@@ -3277,6 +3286,7 @@ declare const VSelect: {
|
|
|
3277
3286
|
maxWidth?: string | number | undefined;
|
|
3278
3287
|
minHeight?: string | number | undefined;
|
|
3279
3288
|
minWidth?: string | number | undefined;
|
|
3289
|
+
opacity?: string | number | undefined;
|
|
3280
3290
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
3281
3291
|
class?: any;
|
|
3282
3292
|
theme?: string | undefined;
|
|
@@ -3839,6 +3849,7 @@ declare const VSelect: {
|
|
|
3839
3849
|
maxWidth?: string | number | undefined;
|
|
3840
3850
|
minHeight?: string | number | undefined;
|
|
3841
3851
|
minWidth?: string | number | undefined;
|
|
3852
|
+
opacity?: string | number | undefined;
|
|
3842
3853
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
3843
3854
|
class?: any;
|
|
3844
3855
|
theme?: string | undefined;
|
|
@@ -3912,6 +3923,7 @@ declare const VSelect: {
|
|
|
3912
3923
|
maxWidth?: string | number | undefined;
|
|
3913
3924
|
minHeight?: string | number | undefined;
|
|
3914
3925
|
minWidth?: string | number | undefined;
|
|
3926
|
+
opacity?: string | number | undefined;
|
|
3915
3927
|
target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
|
|
3916
3928
|
class?: any;
|
|
3917
3929
|
theme?: string | undefined;
|
|
@@ -125,6 +125,9 @@ export const VSelectionControl = genericComponent()({
|
|
|
125
125
|
isFocused.value = false;
|
|
126
126
|
isFocusVisible.value = false;
|
|
127
127
|
}
|
|
128
|
+
function onClickLabel(e) {
|
|
129
|
+
e.stopPropagation();
|
|
130
|
+
}
|
|
128
131
|
function onInput(e) {
|
|
129
132
|
if (!isInteractive.value) return;
|
|
130
133
|
if (props.readonly && group) {
|
|
@@ -191,8 +194,7 @@ export const VSelectionControl = genericComponent()({
|
|
|
191
194
|
"icon": icon.value
|
|
192
195
|
}, null), inputNode])]), [[_resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {
|
|
193
196
|
"for": id.value,
|
|
194
|
-
"
|
|
195
|
-
"onClick": e => e.stopPropagation()
|
|
197
|
+
"onClick": onClickLabel
|
|
196
198
|
}, {
|
|
197
199
|
default: () => [label]
|
|
198
200
|
})]);
|