@vuetify/nightly 3.6.3-master.2024-05-06 → 3.6.4-master.2024-05-08
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/CHANGELOG.md +2 -11
- package/dist/json/attributes.json +178 -38
- package/dist/json/importMap-labs.json +16 -16
- package/dist/json/importMap.json +96 -96
- package/dist/json/tags.json +36 -1
- package/dist/json/web-types.json +495 -85
- package/dist/vuetify-labs.css +5373 -5349
- package/dist/vuetify-labs.d.ts +1626 -1283
- package/dist/vuetify-labs.esm.js +150 -147
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +149 -146
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +2102 -2082
- package/dist/vuetify.d.ts +1195 -1208
- package/dist/vuetify.esm.js +97 -72
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +96 -71
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +981 -977
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +187 -158
- package/lib/components/VBottomSheet/index.d.mts +42 -42
- package/lib/components/VCarousel/index.d.mts +6 -6
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +187 -158
- package/lib/components/VDataIterator/index.d.mts +1 -1
- package/lib/components/VDataTable/VDataTable.css +1 -1
- package/lib/components/VDataTable/VDataTable.sass +2 -1
- package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/components/VDataTable/composables/select.mjs +2 -1
- package/lib/components/VDataTable/composables/select.mjs.map +1 -1
- package/lib/components/VDataTable/index.d.mts +10 -5
- package/lib/components/VDatePicker/VDatePickerYears.mjs +4 -4
- package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
- package/lib/components/VDialog/index.d.mts +126 -126
- package/lib/components/VFileInput/VFileInput.mjs +1 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.mts +9 -9
- package/lib/components/VImg/index.d.mts +6 -6
- package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
- package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +3 -2
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +76 -52
- package/lib/components/VMenu/index.d.mts +126 -126
- package/lib/components/VOverlay/VOverlay.mjs +2 -5
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.mts +42 -42
- package/lib/components/VOverlay/useActivator.mjs +5 -5
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.mjs +1 -1
- package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
- package/lib/components/VResponsive/index.d.mts +6 -6
- package/lib/components/VSelect/index.d.mts +187 -158
- package/lib/components/VSheet/VSheet.css +1 -1
- package/lib/components/VSheet/_variables.scss +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.mjs +25 -25
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.css +5 -0
- package/lib/components/VSlider/VSliderThumb.sass +3 -0
- package/lib/components/VSlider/VSliderTrack.css +15 -0
- package/lib/components/VSlider/VSliderTrack.sass +9 -0
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.mts +126 -126
- package/lib/components/VSpeedDial/index.d.mts +42 -42
- package/lib/components/VStepper/VStepperWindow.mjs +2 -1
- package/lib/components/VStepper/VStepperWindow.mjs.map +1 -1
- package/lib/components/VStepper/VStepperWindowItem.mjs +2 -1
- package/lib/components/VStepper/VStepperWindowItem.mjs.map +1 -1
- package/lib/components/VTabs/VTabsWindow.mjs +2 -1
- package/lib/components/VTabs/VTabsWindow.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.mts +126 -126
- package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
- package/lib/components/index.d.mts +1162 -1175
- package/lib/composables/component.mjs +1 -1
- package/lib/composables/component.mjs.map +1 -1
- package/lib/composables/nested/activeStrategies.mjs +16 -10
- package/lib/composables/nested/activeStrategies.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +7 -5
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +5 -5
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +33 -33
- package/lib/labs/VCalendar/VCalendar.css +5 -1
- package/lib/labs/VCalendar/VCalendar.sass +3 -2
- package/lib/labs/VCalendar/_variables.scss +8 -0
- package/lib/labs/VNumberInput/VNumberInput.mjs +57 -81
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VNumberInput/index.d.mts +402 -34
- package/lib/labs/VSnackbarQueue/index.d.mts +138 -138
- package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
- package/lib/labs/VTreeview/index.d.mts +88 -64
- package/lib/labs/components.d.mts +620 -235
- package/lib/util/helpers.mjs +16 -0
- 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 { ComponentPropsOptions, ExtractPropTypes, Ref, EffectScope } from 'vue';
|
2
|
+
import { ComponentPropsOptions, ExtractPropTypes, ComponentPublicInstance, Ref, EffectScope } from 'vue';
|
3
3
|
|
4
4
|
declare const block: readonly ["top", "bottom"];
|
5
5
|
declare const inline: readonly ["start", "end", "left", "right"];
|
@@ -28,6 +28,12 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
|
|
28
28
|
filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
|
29
29
|
}
|
30
30
|
|
31
|
+
type TemplateRef = {
|
32
|
+
(target: Element | ComponentPublicInstance | null): void;
|
33
|
+
value: HTMLElement | ComponentPublicInstance | null | undefined;
|
34
|
+
readonly el: HTMLElement | undefined;
|
35
|
+
};
|
36
|
+
|
31
37
|
interface LocationStrategyData {
|
32
38
|
contentEl: Ref<HTMLElement | undefined>;
|
33
39
|
target: Ref<HTMLElement | [x: number, y: number] | undefined>;
|
@@ -95,7 +101,7 @@ declare const VBottomSheet: {
|
|
95
101
|
component: vue.Component;
|
96
102
|
}>;
|
97
103
|
zIndex: NonNullable<string | number>;
|
98
|
-
modelValue: boolean
|
104
|
+
modelValue: boolean;
|
99
105
|
inset: boolean;
|
100
106
|
origin: NonNullable<Anchor | "auto" | "overlap">;
|
101
107
|
eager: boolean;
|
@@ -120,7 +126,7 @@ declare const VBottomSheet: {
|
|
120
126
|
width?: string | number | undefined;
|
121
127
|
height?: string | number | undefined;
|
122
128
|
theme?: string | undefined;
|
123
|
-
target?: Element | (string & {}) |
|
129
|
+
target?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | "cursor" | [x: number, y: number] | undefined;
|
124
130
|
offset?: string | number | number[] | undefined;
|
125
131
|
contentClass?: any;
|
126
132
|
opacity?: string | number | undefined;
|
@@ -128,7 +134,7 @@ declare const VBottomSheet: {
|
|
128
134
|
maxWidth?: string | number | undefined;
|
129
135
|
minHeight?: string | number | undefined;
|
130
136
|
minWidth?: string | number | undefined;
|
131
|
-
activator?: Element | (string & {}) |
|
137
|
+
activator?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | undefined;
|
132
138
|
closeDelay?: string | number | undefined;
|
133
139
|
openDelay?: string | number | undefined;
|
134
140
|
openOnClick?: boolean | undefined;
|
@@ -143,7 +149,7 @@ declare const VBottomSheet: {
|
|
143
149
|
activator?: ((arg: {
|
144
150
|
isActive: boolean;
|
145
151
|
props: Record<string, any>;
|
146
|
-
targetRef:
|
152
|
+
targetRef: TemplateRef;
|
147
153
|
}) => vue.VNodeChild) | undefined;
|
148
154
|
} | ((arg: {
|
149
155
|
isActive: vue.Ref<boolean>;
|
@@ -155,7 +161,7 @@ declare const VBottomSheet: {
|
|
155
161
|
activator?: false | ((arg: {
|
156
162
|
isActive: boolean;
|
157
163
|
props: Record<string, any>;
|
158
|
-
targetRef:
|
164
|
+
targetRef: TemplateRef;
|
159
165
|
}) => vue.VNodeChild) | undefined;
|
160
166
|
} | undefined;
|
161
167
|
} & {
|
@@ -165,7 +171,7 @@ declare const VBottomSheet: {
|
|
165
171
|
"v-slot:activator"?: false | ((arg: {
|
166
172
|
isActive: boolean;
|
167
173
|
props: Record<string, any>;
|
168
|
-
targetRef:
|
174
|
+
targetRef: TemplateRef;
|
169
175
|
}) => vue.VNodeChild) | undefined;
|
170
176
|
} & {
|
171
177
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
@@ -181,7 +187,7 @@ declare const VBottomSheet: {
|
|
181
187
|
component: vue.Component;
|
182
188
|
}>;
|
183
189
|
zIndex: NonNullable<string | number>;
|
184
|
-
modelValue: boolean
|
190
|
+
modelValue: boolean;
|
185
191
|
inset: boolean;
|
186
192
|
origin: NonNullable<Anchor | "auto" | "overlap">;
|
187
193
|
eager: boolean;
|
@@ -206,7 +212,7 @@ declare const VBottomSheet: {
|
|
206
212
|
width?: string | number | undefined;
|
207
213
|
height?: string | number | undefined;
|
208
214
|
theme?: string | undefined;
|
209
|
-
target?: Element | (string & {}) |
|
215
|
+
target?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | "cursor" | [x: number, y: number] | undefined;
|
210
216
|
offset?: string | number | number[] | undefined;
|
211
217
|
contentClass?: any;
|
212
218
|
opacity?: string | number | undefined;
|
@@ -214,7 +220,7 @@ declare const VBottomSheet: {
|
|
214
220
|
maxWidth?: string | number | undefined;
|
215
221
|
minHeight?: string | number | undefined;
|
216
222
|
minWidth?: string | number | undefined;
|
217
|
-
activator?: Element | (string & {}) |
|
223
|
+
activator?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | undefined;
|
218
224
|
closeDelay?: string | number | undefined;
|
219
225
|
openDelay?: string | number | undefined;
|
220
226
|
openOnClick?: boolean | undefined;
|
@@ -229,7 +235,7 @@ declare const VBottomSheet: {
|
|
229
235
|
activator?: ((arg: {
|
230
236
|
isActive: boolean;
|
231
237
|
props: Record<string, any>;
|
232
|
-
targetRef:
|
238
|
+
targetRef: TemplateRef;
|
233
239
|
}) => vue.VNodeChild) | undefined;
|
234
240
|
} | ((arg: {
|
235
241
|
isActive: vue.Ref<boolean>;
|
@@ -241,7 +247,7 @@ declare const VBottomSheet: {
|
|
241
247
|
activator?: false | ((arg: {
|
242
248
|
isActive: boolean;
|
243
249
|
props: Record<string, any>;
|
244
|
-
targetRef:
|
250
|
+
targetRef: TemplateRef;
|
245
251
|
}) => vue.VNodeChild) | undefined;
|
246
252
|
} | undefined;
|
247
253
|
} & {
|
@@ -251,7 +257,7 @@ declare const VBottomSheet: {
|
|
251
257
|
"v-slot:activator"?: false | ((arg: {
|
252
258
|
isActive: boolean;
|
253
259
|
props: Record<string, any>;
|
254
|
-
targetRef:
|
260
|
+
targetRef: TemplateRef;
|
255
261
|
}) => vue.VNodeChild) | undefined;
|
256
262
|
} & {
|
257
263
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
@@ -265,7 +271,7 @@ declare const VBottomSheet: {
|
|
265
271
|
component: vue.Component;
|
266
272
|
}>;
|
267
273
|
zIndex: NonNullable<string | number>;
|
268
|
-
modelValue: boolean
|
274
|
+
modelValue: boolean;
|
269
275
|
inset: boolean;
|
270
276
|
origin: NonNullable<Anchor | "auto" | "overlap">;
|
271
277
|
eager: boolean;
|
@@ -296,7 +302,7 @@ declare const VBottomSheet: {
|
|
296
302
|
activator: (arg: {
|
297
303
|
isActive: boolean;
|
298
304
|
props: Record<string, any>;
|
299
|
-
targetRef:
|
305
|
+
targetRef: TemplateRef;
|
300
306
|
}) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
301
307
|
[key: string]: any;
|
302
308
|
}>[];
|
@@ -317,7 +323,7 @@ declare const VBottomSheet: {
|
|
317
323
|
component: vue.Component;
|
318
324
|
}>;
|
319
325
|
zIndex: NonNullable<string | number>;
|
320
|
-
modelValue: boolean
|
326
|
+
modelValue: boolean;
|
321
327
|
inset: boolean;
|
322
328
|
origin: NonNullable<Anchor | "auto" | "overlap">;
|
323
329
|
eager: boolean;
|
@@ -342,7 +348,7 @@ declare const VBottomSheet: {
|
|
342
348
|
width?: string | number | undefined;
|
343
349
|
height?: string | number | undefined;
|
344
350
|
theme?: string | undefined;
|
345
|
-
target?: Element | (string & {}) |
|
351
|
+
target?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | "cursor" | [x: number, y: number] | undefined;
|
346
352
|
offset?: string | number | number[] | undefined;
|
347
353
|
contentClass?: any;
|
348
354
|
opacity?: string | number | undefined;
|
@@ -350,7 +356,7 @@ declare const VBottomSheet: {
|
|
350
356
|
maxWidth?: string | number | undefined;
|
351
357
|
minHeight?: string | number | undefined;
|
352
358
|
minWidth?: string | number | undefined;
|
353
|
-
activator?: Element | (string & {}) |
|
359
|
+
activator?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | undefined;
|
354
360
|
closeDelay?: string | number | undefined;
|
355
361
|
openDelay?: string | number | undefined;
|
356
362
|
openOnClick?: boolean | undefined;
|
@@ -365,7 +371,7 @@ declare const VBottomSheet: {
|
|
365
371
|
activator?: ((arg: {
|
366
372
|
isActive: boolean;
|
367
373
|
props: Record<string, any>;
|
368
|
-
targetRef:
|
374
|
+
targetRef: TemplateRef;
|
369
375
|
}) => vue.VNodeChild) | undefined;
|
370
376
|
} | ((arg: {
|
371
377
|
isActive: vue.Ref<boolean>;
|
@@ -377,7 +383,7 @@ declare const VBottomSheet: {
|
|
377
383
|
activator?: false | ((arg: {
|
378
384
|
isActive: boolean;
|
379
385
|
props: Record<string, any>;
|
380
|
-
targetRef:
|
386
|
+
targetRef: TemplateRef;
|
381
387
|
}) => vue.VNodeChild) | undefined;
|
382
388
|
} | undefined;
|
383
389
|
} & {
|
@@ -387,7 +393,7 @@ declare const VBottomSheet: {
|
|
387
393
|
"v-slot:activator"?: false | ((arg: {
|
388
394
|
isActive: boolean;
|
389
395
|
props: Record<string, any>;
|
390
|
-
targetRef:
|
396
|
+
targetRef: TemplateRef;
|
391
397
|
}) => vue.VNodeChild) | undefined;
|
392
398
|
} & {
|
393
399
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
@@ -401,7 +407,7 @@ declare const VBottomSheet: {
|
|
401
407
|
component: vue.Component;
|
402
408
|
}>;
|
403
409
|
zIndex: NonNullable<string | number>;
|
404
|
-
modelValue: boolean
|
410
|
+
modelValue: boolean;
|
405
411
|
inset: boolean;
|
406
412
|
origin: NonNullable<Anchor | "auto" | "overlap">;
|
407
413
|
eager: boolean;
|
@@ -437,7 +443,7 @@ declare const VBottomSheet: {
|
|
437
443
|
component: vue.Component;
|
438
444
|
}>;
|
439
445
|
zIndex: NonNullable<string | number>;
|
440
|
-
modelValue: boolean
|
446
|
+
modelValue: boolean;
|
441
447
|
inset: boolean;
|
442
448
|
origin: NonNullable<Anchor | "auto" | "overlap">;
|
443
449
|
eager: boolean;
|
@@ -462,7 +468,7 @@ declare const VBottomSheet: {
|
|
462
468
|
width?: string | number | undefined;
|
463
469
|
height?: string | number | undefined;
|
464
470
|
theme?: string | undefined;
|
465
|
-
target?: Element | (string & {}) |
|
471
|
+
target?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | "cursor" | [x: number, y: number] | undefined;
|
466
472
|
offset?: string | number | number[] | undefined;
|
467
473
|
contentClass?: any;
|
468
474
|
opacity?: string | number | undefined;
|
@@ -470,7 +476,7 @@ declare const VBottomSheet: {
|
|
470
476
|
maxWidth?: string | number | undefined;
|
471
477
|
minHeight?: string | number | undefined;
|
472
478
|
minWidth?: string | number | undefined;
|
473
|
-
activator?: Element | (string & {}) |
|
479
|
+
activator?: Element | vue.ComponentPublicInstance | (string & {}) | "parent" | undefined;
|
474
480
|
closeDelay?: string | number | undefined;
|
475
481
|
openDelay?: string | number | undefined;
|
476
482
|
openOnClick?: boolean | undefined;
|
@@ -485,7 +491,7 @@ declare const VBottomSheet: {
|
|
485
491
|
activator?: ((arg: {
|
486
492
|
isActive: boolean;
|
487
493
|
props: Record<string, any>;
|
488
|
-
targetRef:
|
494
|
+
targetRef: TemplateRef;
|
489
495
|
}) => vue.VNodeChild) | undefined;
|
490
496
|
} | ((arg: {
|
491
497
|
isActive: vue.Ref<boolean>;
|
@@ -497,7 +503,7 @@ declare const VBottomSheet: {
|
|
497
503
|
activator?: false | ((arg: {
|
498
504
|
isActive: boolean;
|
499
505
|
props: Record<string, any>;
|
500
|
-
targetRef:
|
506
|
+
targetRef: TemplateRef;
|
501
507
|
}) => vue.VNodeChild) | undefined;
|
502
508
|
} | undefined;
|
503
509
|
} & {
|
@@ -507,7 +513,7 @@ declare const VBottomSheet: {
|
|
507
513
|
"v-slot:activator"?: false | ((arg: {
|
508
514
|
isActive: boolean;
|
509
515
|
props: Record<string, any>;
|
510
|
-
targetRef:
|
516
|
+
targetRef: TemplateRef;
|
511
517
|
}) => vue.VNodeChild) | undefined;
|
512
518
|
} & {
|
513
519
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
@@ -523,7 +529,7 @@ declare const VBottomSheet: {
|
|
523
529
|
component: vue.Component;
|
524
530
|
}>;
|
525
531
|
zIndex: NonNullable<string | number>;
|
526
|
-
modelValue: boolean
|
532
|
+
modelValue: boolean;
|
527
533
|
inset: boolean;
|
528
534
|
origin: NonNullable<Anchor | "auto" | "overlap">;
|
529
535
|
eager: boolean;
|
@@ -554,7 +560,7 @@ declare const VBottomSheet: {
|
|
554
560
|
activator: (arg: {
|
555
561
|
isActive: boolean;
|
556
562
|
props: Record<string, any>;
|
557
|
-
targetRef:
|
563
|
+
targetRef: TemplateRef;
|
558
564
|
}) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
559
565
|
[key: string]: any;
|
560
566
|
}>[];
|
@@ -630,8 +636,8 @@ declare const VBottomSheet: {
|
|
630
636
|
};
|
631
637
|
closeDelay: (StringConstructor | NumberConstructor)[];
|
632
638
|
openDelay: (StringConstructor | NumberConstructor)[];
|
633
|
-
target: vue.PropType<Element | (string & {}) |
|
634
|
-
activator: vue.PropType<Element | (string & {}) |
|
639
|
+
target: vue.PropType<Element | vue.ComponentPublicInstance | (string & {}) | "parent" | "cursor" | [x: number, y: number] | undefined>;
|
640
|
+
activator: vue.PropType<Element | vue.ComponentPublicInstance | (string & {}) | "parent" | undefined>;
|
635
641
|
activatorProps: {
|
636
642
|
type: vue.PropType<Record<string, any>>;
|
637
643
|
default: () => {};
|
@@ -658,10 +664,7 @@ declare const VBottomSheet: {
|
|
658
664
|
disabled: BooleanConstructor;
|
659
665
|
opacity: (StringConstructor | NumberConstructor)[];
|
660
666
|
noClickAnimation: BooleanConstructor;
|
661
|
-
modelValue:
|
662
|
-
type: vue.PropType<boolean | null>;
|
663
|
-
default: null;
|
664
|
-
};
|
667
|
+
modelValue: BooleanConstructor;
|
665
668
|
persistent: BooleanConstructor;
|
666
669
|
scrim: {
|
667
670
|
type: (StringConstructor | BooleanConstructor)[];
|
@@ -753,8 +756,8 @@ declare const VBottomSheet: {
|
|
753
756
|
};
|
754
757
|
closeDelay: (StringConstructor | NumberConstructor)[];
|
755
758
|
openDelay: (StringConstructor | NumberConstructor)[];
|
756
|
-
target: vue.PropType<Element | (string & {}) |
|
757
|
-
activator: vue.PropType<Element | (string & {}) |
|
759
|
+
target: vue.PropType<Element | vue.ComponentPublicInstance | (string & {}) | "parent" | "cursor" | [x: number, y: number] | undefined>;
|
760
|
+
activator: vue.PropType<Element | vue.ComponentPublicInstance | (string & {}) | "parent" | undefined>;
|
758
761
|
activatorProps: {
|
759
762
|
type: vue.PropType<Record<string, any>>;
|
760
763
|
default: () => {};
|
@@ -781,10 +784,7 @@ declare const VBottomSheet: {
|
|
781
784
|
disabled: BooleanConstructor;
|
782
785
|
opacity: (StringConstructor | NumberConstructor)[];
|
783
786
|
noClickAnimation: BooleanConstructor;
|
784
|
-
modelValue:
|
785
|
-
type: vue.PropType<boolean | null>;
|
786
|
-
default: null;
|
787
|
-
};
|
787
|
+
modelValue: BooleanConstructor;
|
788
788
|
persistent: BooleanConstructor;
|
789
789
|
scrim: {
|
790
790
|
type: (StringConstructor | BooleanConstructor)[];
|
@@ -549,7 +549,7 @@ declare const VCarouselItem: {
|
|
549
549
|
transition?: string | boolean | undefined;
|
550
550
|
position?: string | undefined;
|
551
551
|
rounded?: string | number | boolean | undefined;
|
552
|
-
contentClass?:
|
552
|
+
contentClass?: any;
|
553
553
|
maxHeight?: string | number | undefined;
|
554
554
|
maxWidth?: string | number | undefined;
|
555
555
|
minHeight?: string | number | undefined;
|
@@ -601,7 +601,7 @@ declare const VCarouselItem: {
|
|
601
601
|
transition?: string | boolean | undefined;
|
602
602
|
position?: string | undefined;
|
603
603
|
rounded?: string | number | boolean | undefined;
|
604
|
-
contentClass?:
|
604
|
+
contentClass?: any;
|
605
605
|
maxHeight?: string | number | undefined;
|
606
606
|
maxWidth?: string | number | undefined;
|
607
607
|
minHeight?: string | number | undefined;
|
@@ -686,7 +686,7 @@ declare const VCarouselItem: {
|
|
686
686
|
transition?: string | boolean | undefined;
|
687
687
|
position?: string | undefined;
|
688
688
|
rounded?: string | number | boolean | undefined;
|
689
|
-
contentClass?:
|
689
|
+
contentClass?: any;
|
690
690
|
maxHeight?: string | number | undefined;
|
691
691
|
maxWidth?: string | number | undefined;
|
692
692
|
minHeight?: string | number | undefined;
|
@@ -755,7 +755,7 @@ declare const VCarouselItem: {
|
|
755
755
|
transition?: string | boolean | undefined;
|
756
756
|
position?: string | undefined;
|
757
757
|
rounded?: string | number | boolean | undefined;
|
758
|
-
contentClass?:
|
758
|
+
contentClass?: any;
|
759
759
|
maxHeight?: string | number | undefined;
|
760
760
|
maxWidth?: string | number | undefined;
|
761
761
|
minHeight?: string | number | undefined;
|
@@ -842,7 +842,7 @@ declare const VCarouselItem: {
|
|
842
842
|
minWidth: (StringConstructor | NumberConstructor)[];
|
843
843
|
width: (StringConstructor | NumberConstructor)[];
|
844
844
|
aspectRatio: (StringConstructor | NumberConstructor)[];
|
845
|
-
contentClass:
|
845
|
+
contentClass: null;
|
846
846
|
inline: BooleanConstructor;
|
847
847
|
alt: StringConstructor;
|
848
848
|
cover: BooleanConstructor;
|
@@ -900,7 +900,7 @@ declare const VCarouselItem: {
|
|
900
900
|
minWidth: (StringConstructor | NumberConstructor)[];
|
901
901
|
width: (StringConstructor | NumberConstructor)[];
|
902
902
|
aspectRatio: (StringConstructor | NumberConstructor)[];
|
903
|
-
contentClass:
|
903
|
+
contentClass: null;
|
904
904
|
inline: BooleanConstructor;
|
905
905
|
alt: StringConstructor;
|
906
906
|
cover: BooleanConstructor;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VColorPickerCanvas.mjs","names":["makeComponentProps","useResizeObserver","computed","onMounted","ref","shallowRef","watch","clamp","convertToUnit","defineComponent","getEventCoordinates","propsFactory","useRender","makeVColorPickerCanvasProps","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","VColorPickerCanvas","name","props","emits","hue","setup","_ref","emit","isInteracting","canvasRef","canvasWidth","parseFloat","canvasHeight","_dotPosition","x","y","dotPosition","get","value","set","val","h","s","v","a","dotStyles","radius","parseInt","transform","resizeRef","entries","offsetParent","contentRect","updateDotPosition","rect","left","top","handleMouseDown","e","preventDefault","handleMouseMove","window","addEventListener","handleMouseUp","coords","clientX","clientY","getBoundingClientRect","removeEventListener","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","newVal","oldVal","flush","deep","_createVNode","class","style"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue'\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n\n ...makeComponentProps(),\n}, 'VColorPickerCanvas')\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: makeVColorPickerCanvasProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = shallowRef(false)\n const canvasRef = ref<HTMLCanvasElement | null>()\n const canvasWidth = shallowRef(parseFloat(props.width))\n const canvasHeight = shallowRef(parseFloat(props.height))\n\n const _dotPosition = ref({ x: 0, y: 0 })\n const dotPosition = computed({\n get: () => _dotPosition.value,\n set (val) {\n if (!canvasRef.value) return\n\n const { x, y } = val\n _dotPosition.value = val\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1,\n })\n },\n })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.value?.offsetParent) return\n\n const { width, height } = entries[0].contentRect\n\n canvasWidth.value = width\n canvasHeight.value = height\n })\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousedown') {\n // Prevent text selection while dragging\n e.preventDefault()\n }\n\n if (props.disabled) return\n\n handleMouseMove(e)\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 0%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas()\n _dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1],\n }\n }, { flush: 'post' })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n _dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value,\n } : { x: 0, y: 0 }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n ref={ resizeRef }\n class={[\n 'v-color-picker-canvas',\n props.class,\n ]}\n style={ props.style }\n onMousedown={ handleMouseDown }\n onTouchstartPassive={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ canvasWidth.value }\n height={ canvasHeight.value }\n />\n { props.color && (\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VColorPickerCanvas.mjs","names":["makeComponentProps","useResizeObserver","computed","onMounted","ref","shallowRef","watch","clamp","convertToUnit","defineComponent","getEventCoordinates","propsFactory","useRender","makeVColorPickerCanvasProps","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","VColorPickerCanvas","name","props","emits","hue","setup","_ref","emit","isInteracting","canvasRef","canvasWidth","parseFloat","canvasHeight","_dotPosition","x","y","dotPosition","get","value","set","val","h","s","v","a","dotStyles","radius","parseInt","transform","resizeRef","entries","el","offsetParent","contentRect","updateDotPosition","rect","left","top","handleMouseDown","e","preventDefault","handleMouseMove","window","addEventListener","handleMouseUp","coords","clientX","clientY","getBoundingClientRect","removeEventListener","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","newVal","oldVal","flush","deep","_createVNode","class","style"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue'\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n\n ...makeComponentProps(),\n}, 'VColorPickerCanvas')\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: makeVColorPickerCanvasProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = shallowRef(false)\n const canvasRef = ref<HTMLCanvasElement | null>()\n const canvasWidth = shallowRef(parseFloat(props.width))\n const canvasHeight = shallowRef(parseFloat(props.height))\n\n const _dotPosition = ref({ x: 0, y: 0 })\n const dotPosition = computed({\n get: () => _dotPosition.value,\n set (val) {\n if (!canvasRef.value) return\n\n const { x, y } = val\n _dotPosition.value = val\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1,\n })\n },\n })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.el?.offsetParent) return\n\n const { width, height } = entries[0].contentRect\n\n canvasWidth.value = width\n canvasHeight.value = height\n })\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousedown') {\n // Prevent text selection while dragging\n e.preventDefault()\n }\n\n if (props.disabled) return\n\n handleMouseMove(e)\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 0%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas()\n _dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1],\n }\n }, { flush: 'post' })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n _dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value,\n } : { x: 0, y: 0 }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n ref={ resizeRef }\n class={[\n 'v-color-picker-canvas',\n props.class,\n ]}\n style={ props.style }\n onMousedown={ handleMouseDown }\n onTouchstartPassive={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ canvasWidth.value }\n height={ canvasHeight.value }\n />\n { props.color && (\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":"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","ignoreList":[]}
|