vuetify 3.5.6 → 3.5.8
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/_component-variables-labs.sass +2 -0
- package/dist/json/attributes.json +461 -41
- package/dist/json/importMap-labs.json +16 -4
- package/dist/json/importMap.json +120 -120
- package/dist/json/tags.json +120 -0
- package/dist/json/web-types.json +1173 -53
- package/dist/vuetify-labs.css +1547 -1407
- package/dist/vuetify-labs.d.ts +1672 -127
- package/dist/vuetify-labs.esm.js +428 -94
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +428 -94
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +438 -432
- package/dist/vuetify.d.ts +78 -142
- package/dist/vuetify.esm.js +121 -82
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +121 -82
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +147 -135
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VApp/index.d.mts +8 -6
- package/lib/components/VAutocomplete/VAutocomplete.css +4 -4
- package/lib/components/VAutocomplete/VAutocomplete.mjs +28 -27
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs +3 -1
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +4 -4
- package/lib/components/VCombobox/VCombobox.mjs +40 -27
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +2 -2
- package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
- package/lib/components/VDataIterator/index.d.mts +50 -94
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/components/VLayout/index.d.mts +8 -6
- package/lib/components/VSelect/VSelect.mjs +18 -17
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.css +9 -5
- package/lib/components/VSwitch/VSwitch.mjs +2 -0
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.sass +10 -7
- package/lib/components/VSwitch/_variables.scss +2 -0
- package/lib/components/VToolbar/VToolbar.css +3 -1
- package/lib/components/VToolbar/VToolbar.sass +2 -1
- package/lib/components/index.d.mts +38 -105
- package/lib/composables/date/adapters/vuetify.mjs +21 -3
- package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/transition.mjs +7 -5
- package/lib/composables/transition.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +42 -37
- package/lib/labs/VCalendar/VCalendarInterval.css +1 -0
- package/lib/labs/VCalendar/VCalendarInterval.sass +1 -0
- package/lib/labs/VCalendar/VCalendarIntervalEvent.css +6 -0
- package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs +5 -2
- package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.sass +6 -0
- package/lib/labs/VEmptyState/VEmptyState.css +59 -0
- package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
- package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
- package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
- package/lib/labs/VEmptyState/_variables.scss +22 -0
- package/lib/labs/VEmptyState/index.d.mts +415 -0
- package/lib/labs/VEmptyState/index.mjs +2 -0
- package/lib/labs/VEmptyState/index.mjs.map +1 -0
- package/lib/labs/VFab/VFab.css +69 -0
- package/lib/labs/VFab/VFab.mjs +114 -0
- package/lib/labs/VFab/VFab.mjs.map +1 -0
- package/lib/labs/VFab/VFab.sass +82 -0
- package/lib/labs/VFab/_mixins.scss +22 -0
- package/lib/labs/VFab/_variables.scss +33 -0
- package/lib/labs/VFab/index.d.mts +656 -0
- package/lib/labs/VFab/index.mjs +2 -0
- package/lib/labs/VFab/index.mjs.map +1 -0
- package/lib/labs/VSparkline/VBarline.mjs +8 -7
- package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
- package/lib/labs/VSparkline/VTrendline.mjs +14 -6
- package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
- package/lib/labs/VSparkline/index.d.mts +27 -0
- package/lib/labs/VSparkline/util/line.mjs +6 -0
- package/lib/labs/VSparkline/util/line.mjs.map +1 -1
- package/lib/labs/VSpeedDial/VSpeedDial.css +3 -0
- package/lib/labs/VSpeedDial/VSpeedDial.mjs +56 -0
- package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -0
- package/lib/labs/VSpeedDial/VSpeedDial.sass +2 -0
- package/lib/labs/VSpeedDial/index.d.mts +649 -0
- package/lib/labs/VSpeedDial/index.mjs +2 -0
- package/lib/labs/VSpeedDial/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +1907 -193
- package/lib/labs/components.mjs +3 -0
- package/lib/labs/components.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
|
-
import { ComponentPropsOptions, ExtractPropTypes, PropType, Ref } from 'vue';
|
|
2
|
+
import { ComponentPropsOptions, ExtractPropTypes, VNodeChild, VNode, PropType, Ref } from 'vue';
|
|
3
3
|
|
|
4
|
+
type SlotsToProps<U extends RawSlots, T = MakeInternalSlots<U>> = {
|
|
5
|
+
$children?: (VNodeChild | (T extends {
|
|
6
|
+
default: infer V;
|
|
7
|
+
} ? V : {}) | {
|
|
8
|
+
[K in keyof T]?: T[K];
|
|
9
|
+
});
|
|
10
|
+
'v-slots'?: {
|
|
11
|
+
[K in keyof T]?: T[K] | false;
|
|
12
|
+
};
|
|
13
|
+
} & {
|
|
14
|
+
[K in keyof T as `v-slot:${K & string}`]?: T[K] | false;
|
|
15
|
+
};
|
|
16
|
+
type RawSlots = Record<string, unknown>;
|
|
17
|
+
type Slot<T> = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild;
|
|
18
|
+
type VueSlot<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];
|
|
19
|
+
type MakeInternalSlots<T extends RawSlots> = {
|
|
20
|
+
[K in keyof T]: Slot<T[K]>;
|
|
21
|
+
};
|
|
22
|
+
type MakeSlots<T extends RawSlots> = {
|
|
23
|
+
[K in keyof T]: VueSlot<T[K]>;
|
|
24
|
+
};
|
|
25
|
+
type GenericProps<Props, Slots extends Record<string, unknown>> = {
|
|
26
|
+
$props: Props & SlotsToProps<Slots>;
|
|
27
|
+
$slots: MakeSlots<Slots>;
|
|
28
|
+
};
|
|
4
29
|
interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
|
|
5
30
|
filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
|
|
6
31
|
}
|
|
@@ -182,7 +207,7 @@ interface DataIteratorItem<T = any> extends GroupableItem<T>, SelectableItem {
|
|
|
182
207
|
value: unknown;
|
|
183
208
|
}
|
|
184
209
|
|
|
185
|
-
type VDataIteratorSlotProps = {
|
|
210
|
+
type VDataIteratorSlotProps<T> = {
|
|
186
211
|
page: number;
|
|
187
212
|
itemsPerPage: number;
|
|
188
213
|
sortBy: readonly SortItem[];
|
|
@@ -200,8 +225,14 @@ type VDataIteratorSlotProps = {
|
|
|
200
225
|
toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand'];
|
|
201
226
|
isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen'];
|
|
202
227
|
toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup'];
|
|
203
|
-
items: readonly DataIteratorItem[];
|
|
204
|
-
groupedItems: readonly (DataIteratorItem | Group<DataIteratorItem
|
|
228
|
+
items: readonly DataIteratorItem<T>[];
|
|
229
|
+
groupedItems: readonly (DataIteratorItem<T> | Group<DataIteratorItem<T>>)[];
|
|
230
|
+
};
|
|
231
|
+
type VDataIteratorSlots<T> = {
|
|
232
|
+
default: VDataIteratorSlotProps<T>;
|
|
233
|
+
header: VDataIteratorSlotProps<T>;
|
|
234
|
+
footer: VDataIteratorSlotProps<T>;
|
|
235
|
+
'no-data': never;
|
|
205
236
|
};
|
|
206
237
|
declare const VDataIterator: {
|
|
207
238
|
new (...args: any[]): vue.CreateComponentPublicInstance<{
|
|
@@ -211,7 +242,6 @@ declare const VDataIterator: {
|
|
|
211
242
|
expanded: readonly string[];
|
|
212
243
|
tag: string;
|
|
213
244
|
sortBy: readonly SortItem[];
|
|
214
|
-
items: any[];
|
|
215
245
|
modelValue: readonly any[];
|
|
216
246
|
valueComparator: typeof deepEqual;
|
|
217
247
|
selectStrategy: "all" | "page" | "single";
|
|
@@ -234,24 +264,6 @@ declare const VDataIterator: {
|
|
|
234
264
|
customKeyFilter?: FilterKeyFunctions | undefined;
|
|
235
265
|
filterKeys?: FilterKeys | undefined;
|
|
236
266
|
customKeySort?: Record<string, DataTableCompareFunction> | undefined;
|
|
237
|
-
} & {
|
|
238
|
-
$children?: vue.VNodeChild | {
|
|
239
|
-
default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
240
|
-
header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
241
|
-
footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
242
|
-
'no-data'?: (() => vue.VNodeChild) | undefined;
|
|
243
|
-
} | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
|
|
244
|
-
'v-slots'?: {
|
|
245
|
-
default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
246
|
-
header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
247
|
-
footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
248
|
-
'no-data'?: false | (() => vue.VNodeChild) | undefined;
|
|
249
|
-
} | undefined;
|
|
250
|
-
} & {
|
|
251
|
-
"v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
252
|
-
"v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
253
|
-
"v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
254
|
-
"v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
|
|
255
267
|
} & {
|
|
256
268
|
"onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
|
|
257
269
|
"onUpdate:sortBy"?: ((value: any) => any) | undefined;
|
|
@@ -261,7 +273,7 @@ declare const VDataIterator: {
|
|
|
261
273
|
"onUpdate:itemsPerPage"?: ((value: number) => any) | undefined;
|
|
262
274
|
"onUpdate:options"?: ((value: any) => any) | undefined;
|
|
263
275
|
"onUpdate:currentItems"?: ((value: any) => any) | undefined;
|
|
264
|
-
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
276
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
|
|
265
277
|
'update:modelValue': (value: any[]) => boolean;
|
|
266
278
|
'update:groupBy': (value: any) => boolean;
|
|
267
279
|
'update:page': (value: number) => boolean;
|
|
@@ -270,14 +282,13 @@ declare const VDataIterator: {
|
|
|
270
282
|
'update:options': (value: any) => boolean;
|
|
271
283
|
'update:expanded': (value: any) => boolean;
|
|
272
284
|
'update:currentItems': (value: any) => boolean;
|
|
273
|
-
}, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
|
285
|
+
}, "$children" | "v-slot:default" | "v-slots" | "items" | "v-slot:header" | "v-slot:no-data" | "v-slot:footer">, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
|
274
286
|
page: string | number;
|
|
275
287
|
loading: boolean;
|
|
276
288
|
style: vue.StyleValue;
|
|
277
289
|
expanded: readonly string[];
|
|
278
290
|
tag: string;
|
|
279
291
|
sortBy: readonly SortItem[];
|
|
280
|
-
items: any[];
|
|
281
292
|
modelValue: readonly any[];
|
|
282
293
|
valueComparator: typeof deepEqual;
|
|
283
294
|
selectStrategy: "all" | "page" | "single";
|
|
@@ -300,24 +311,6 @@ declare const VDataIterator: {
|
|
|
300
311
|
customKeyFilter?: FilterKeyFunctions | undefined;
|
|
301
312
|
filterKeys?: FilterKeys | undefined;
|
|
302
313
|
customKeySort?: Record<string, DataTableCompareFunction> | undefined;
|
|
303
|
-
} & {
|
|
304
|
-
$children?: vue.VNodeChild | {
|
|
305
|
-
default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
306
|
-
header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
307
|
-
footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
308
|
-
'no-data'?: (() => vue.VNodeChild) | undefined;
|
|
309
|
-
} | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
|
|
310
|
-
'v-slots'?: {
|
|
311
|
-
default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
312
|
-
header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
313
|
-
footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
314
|
-
'no-data'?: false | (() => vue.VNodeChild) | undefined;
|
|
315
|
-
} | undefined;
|
|
316
|
-
} & {
|
|
317
|
-
"v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
318
|
-
"v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
319
|
-
"v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
320
|
-
"v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
|
|
321
314
|
} & {
|
|
322
315
|
"onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
|
|
323
316
|
"onUpdate:sortBy"?: ((value: any) => any) | undefined;
|
|
@@ -334,7 +327,6 @@ declare const VDataIterator: {
|
|
|
334
327
|
expanded: readonly string[];
|
|
335
328
|
tag: string;
|
|
336
329
|
sortBy: readonly SortItem[];
|
|
337
|
-
items: any[];
|
|
338
330
|
modelValue: readonly any[];
|
|
339
331
|
valueComparator: typeof deepEqual;
|
|
340
332
|
selectStrategy: "all" | "page" | "single";
|
|
@@ -351,13 +343,13 @@ declare const VDataIterator: {
|
|
|
351
343
|
showExpand: boolean;
|
|
352
344
|
itemsPerPage: NonNullable<string | number>;
|
|
353
345
|
}, true, {}, vue.SlotsType<Partial<{
|
|
354
|
-
default: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
346
|
+
default: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
355
347
|
[key: string]: any;
|
|
356
348
|
}>[];
|
|
357
|
-
header: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
349
|
+
header: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
358
350
|
[key: string]: any;
|
|
359
351
|
}>[];
|
|
360
|
-
footer: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
352
|
+
footer: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
361
353
|
[key: string]: any;
|
|
362
354
|
}>[];
|
|
363
355
|
'no-data': () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
@@ -377,7 +369,6 @@ declare const VDataIterator: {
|
|
|
377
369
|
expanded: readonly string[];
|
|
378
370
|
tag: string;
|
|
379
371
|
sortBy: readonly SortItem[];
|
|
380
|
-
items: any[];
|
|
381
372
|
modelValue: readonly any[];
|
|
382
373
|
valueComparator: typeof deepEqual;
|
|
383
374
|
selectStrategy: "all" | "page" | "single";
|
|
@@ -400,24 +391,6 @@ declare const VDataIterator: {
|
|
|
400
391
|
customKeyFilter?: FilterKeyFunctions | undefined;
|
|
401
392
|
filterKeys?: FilterKeys | undefined;
|
|
402
393
|
customKeySort?: Record<string, DataTableCompareFunction> | undefined;
|
|
403
|
-
} & {
|
|
404
|
-
$children?: vue.VNodeChild | {
|
|
405
|
-
default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
406
|
-
header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
407
|
-
footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
408
|
-
'no-data'?: (() => vue.VNodeChild) | undefined;
|
|
409
|
-
} | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
|
|
410
|
-
'v-slots'?: {
|
|
411
|
-
default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
412
|
-
header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
413
|
-
footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
414
|
-
'no-data'?: false | (() => vue.VNodeChild) | undefined;
|
|
415
|
-
} | undefined;
|
|
416
|
-
} & {
|
|
417
|
-
"v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
418
|
-
"v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
419
|
-
"v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
420
|
-
"v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
|
|
421
394
|
} & {
|
|
422
395
|
"onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
|
|
423
396
|
"onUpdate:sortBy"?: ((value: any) => any) | undefined;
|
|
@@ -434,7 +407,6 @@ declare const VDataIterator: {
|
|
|
434
407
|
expanded: readonly string[];
|
|
435
408
|
tag: string;
|
|
436
409
|
sortBy: readonly SortItem[];
|
|
437
|
-
items: any[];
|
|
438
410
|
modelValue: readonly any[];
|
|
439
411
|
valueComparator: typeof deepEqual;
|
|
440
412
|
selectStrategy: "all" | "page" | "single";
|
|
@@ -461,7 +433,6 @@ declare const VDataIterator: {
|
|
|
461
433
|
expanded: readonly string[];
|
|
462
434
|
tag: string;
|
|
463
435
|
sortBy: readonly SortItem[];
|
|
464
|
-
items: any[];
|
|
465
436
|
modelValue: readonly any[];
|
|
466
437
|
valueComparator: typeof deepEqual;
|
|
467
438
|
selectStrategy: "all" | "page" | "single";
|
|
@@ -484,24 +455,6 @@ declare const VDataIterator: {
|
|
|
484
455
|
customKeyFilter?: FilterKeyFunctions | undefined;
|
|
485
456
|
filterKeys?: FilterKeys | undefined;
|
|
486
457
|
customKeySort?: Record<string, DataTableCompareFunction> | undefined;
|
|
487
|
-
} & {
|
|
488
|
-
$children?: vue.VNodeChild | {
|
|
489
|
-
default?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
490
|
-
header?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
491
|
-
footer?: ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
492
|
-
'no-data'?: (() => vue.VNodeChild) | undefined;
|
|
493
|
-
} | ((arg: VDataIteratorSlotProps) => vue.VNodeChild);
|
|
494
|
-
'v-slots'?: {
|
|
495
|
-
default?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
496
|
-
header?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
497
|
-
footer?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
498
|
-
'no-data'?: false | (() => vue.VNodeChild) | undefined;
|
|
499
|
-
} | undefined;
|
|
500
|
-
} & {
|
|
501
|
-
"v-slot:default"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
502
|
-
"v-slot:header"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
503
|
-
"v-slot:footer"?: false | ((arg: VDataIteratorSlotProps) => vue.VNodeChild) | undefined;
|
|
504
|
-
"v-slot:no-data"?: false | (() => vue.VNodeChild) | undefined;
|
|
505
458
|
} & {
|
|
506
459
|
"onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
|
|
507
460
|
"onUpdate:sortBy"?: ((value: any) => any) | undefined;
|
|
@@ -511,7 +464,7 @@ declare const VDataIterator: {
|
|
|
511
464
|
"onUpdate:itemsPerPage"?: ((value: number) => any) | undefined;
|
|
512
465
|
"onUpdate:options"?: ((value: any) => any) | undefined;
|
|
513
466
|
"onUpdate:currentItems"?: ((value: any) => any) | undefined;
|
|
514
|
-
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
467
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
|
|
515
468
|
'update:modelValue': (value: any[]) => boolean;
|
|
516
469
|
'update:groupBy': (value: any) => boolean;
|
|
517
470
|
'update:page': (value: number) => boolean;
|
|
@@ -520,14 +473,13 @@ declare const VDataIterator: {
|
|
|
520
473
|
'update:options': (value: any) => boolean;
|
|
521
474
|
'update:expanded': (value: any) => boolean;
|
|
522
475
|
'update:currentItems': (value: any) => boolean;
|
|
523
|
-
}, string, {
|
|
476
|
+
}, "$children" | "v-slot:default" | "v-slots" | "items" | "v-slot:header" | "v-slot:no-data" | "v-slot:footer">, string, {
|
|
524
477
|
page: string | number;
|
|
525
478
|
loading: boolean;
|
|
526
479
|
style: vue.StyleValue;
|
|
527
480
|
expanded: readonly string[];
|
|
528
481
|
tag: string;
|
|
529
482
|
sortBy: readonly SortItem[];
|
|
530
|
-
items: any[];
|
|
531
483
|
modelValue: readonly any[];
|
|
532
484
|
valueComparator: typeof deepEqual;
|
|
533
485
|
selectStrategy: "all" | "page" | "single";
|
|
@@ -544,19 +496,23 @@ declare const VDataIterator: {
|
|
|
544
496
|
showExpand: boolean;
|
|
545
497
|
itemsPerPage: NonNullable<string | number>;
|
|
546
498
|
}, {}, string, vue.SlotsType<Partial<{
|
|
547
|
-
default: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
499
|
+
default: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
548
500
|
[key: string]: any;
|
|
549
501
|
}>[];
|
|
550
|
-
header: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
502
|
+
header: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
551
503
|
[key: string]: any;
|
|
552
504
|
}>[];
|
|
553
|
-
footer: (arg: VDataIteratorSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
505
|
+
footer: (arg: VDataIteratorSlotProps<unknown>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
554
506
|
[key: string]: any;
|
|
555
507
|
}>[];
|
|
556
508
|
'no-data': () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
557
509
|
[key: string]: any;
|
|
558
510
|
}>[];
|
|
559
|
-
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps &
|
|
511
|
+
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T>(props: {
|
|
512
|
+
items?: readonly T[] | undefined;
|
|
513
|
+
}, slots: VDataIteratorSlots<T>) => GenericProps<{
|
|
514
|
+
items?: readonly T[] | undefined;
|
|
515
|
+
}, VDataIteratorSlots<T>>) & FilterPropsOptions<{
|
|
560
516
|
tag: {
|
|
561
517
|
type: StringConstructor;
|
|
562
518
|
default: string;
|
|
@@ -58,7 +58,7 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
58
58
|
} else {
|
|
59
59
|
rangeStop.value = _value;
|
|
60
60
|
}
|
|
61
|
-
const diff = adapter.getDiff(rangeStop.value, rangeStart.value);
|
|
61
|
+
const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
|
|
62
62
|
const datesInRange = [rangeStart.value];
|
|
63
63
|
for (let i = 1; i < diff; i++) {
|
|
64
64
|
const nextDate = adapter.addDays(rangeStart.value, i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","computed","ref","shallowRef","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","rangeStart","rangeStop","atMax","max","includes","Infinity","value","length","onRangeClick","_value","startOfDay","isSameDay","undefined","isBefore","diff","getDiff","datesInRange","i","nextDate","addDays","push","onMultipleClick","index","findIndex","selection","splice","onClick","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","slotProps","isSelected","isDisabled","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","class","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(value, rangeStart.value)) {\n rangeStop.value = rangeStart.value\n rangeStart.value = _value\n } else {\n rangeStop.value = _value\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value)\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n class: 'v-date-picker-month__day-btn',\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? item.isToday ? 'outlined' : 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","computed","ref","shallowRef","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","rangeStart","rangeStop","atMax","max","includes","Infinity","value","length","onRangeClick","_value","startOfDay","isSameDay","undefined","isBefore","diff","getDiff","datesInRange","i","nextDate","addDays","push","onMultipleClick","index","findIndex","selection","splice","onClick","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","slotProps","isSelected","isDisabled","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","class","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(value, rangeStart.value)) {\n rangeStop.value = rangeStart.value\n rangeStart.value = _value\n } else {\n rangeStop.value = _value\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days')\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n class: 'v-date-picker-month__day-btn',\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? item.isToday ? 'outlined' : 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
|
|
|
5
5
|
filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
type Position = 'top' | 'left' | 'right' | 'bottom';
|
|
9
|
+
|
|
8
10
|
declare const VLayout: {
|
|
9
11
|
new (...args: any[]): vue.CreateComponentPublicInstance<{
|
|
10
12
|
style: vue.StyleValue;
|
|
@@ -24,7 +26,7 @@ declare const VLayout: {
|
|
|
24
26
|
}, {
|
|
25
27
|
getLayoutItem: (id: string) => {
|
|
26
28
|
size: number;
|
|
27
|
-
position:
|
|
29
|
+
position: Position;
|
|
28
30
|
top: number;
|
|
29
31
|
bottom: number;
|
|
30
32
|
left: number;
|
|
@@ -33,7 +35,7 @@ declare const VLayout: {
|
|
|
33
35
|
} | undefined;
|
|
34
36
|
items: vue.ComputedRef<{
|
|
35
37
|
size: number;
|
|
36
|
-
position:
|
|
38
|
+
position: Position;
|
|
37
39
|
top: number;
|
|
38
40
|
bottom: number;
|
|
39
41
|
left: number;
|
|
@@ -87,7 +89,7 @@ declare const VLayout: {
|
|
|
87
89
|
}, {
|
|
88
90
|
getLayoutItem: (id: string) => {
|
|
89
91
|
size: number;
|
|
90
|
-
position:
|
|
92
|
+
position: Position;
|
|
91
93
|
top: number;
|
|
92
94
|
bottom: number;
|
|
93
95
|
left: number;
|
|
@@ -96,7 +98,7 @@ declare const VLayout: {
|
|
|
96
98
|
} | undefined;
|
|
97
99
|
items: vue.ComputedRef<{
|
|
98
100
|
size: number;
|
|
99
|
-
position:
|
|
101
|
+
position: Position;
|
|
100
102
|
top: number;
|
|
101
103
|
bottom: number;
|
|
102
104
|
left: number;
|
|
@@ -128,7 +130,7 @@ declare const VLayout: {
|
|
|
128
130
|
}, {
|
|
129
131
|
getLayoutItem: (id: string) => {
|
|
130
132
|
size: number;
|
|
131
|
-
position:
|
|
133
|
+
position: Position;
|
|
132
134
|
top: number;
|
|
133
135
|
bottom: number;
|
|
134
136
|
left: number;
|
|
@@ -137,7 +139,7 @@ declare const VLayout: {
|
|
|
137
139
|
} | undefined;
|
|
138
140
|
items: vue.ComputedRef<{
|
|
139
141
|
size: number;
|
|
140
|
-
position:
|
|
142
|
+
position: Position;
|
|
141
143
|
top: number;
|
|
142
144
|
bottom: number;
|
|
143
145
|
left: number;
|
|
@@ -21,7 +21,7 @@ import { makeItemsProps, useItems } from "../../composables/list-items.mjs";
|
|
|
21
21
|
import { useLocale } from "../../composables/locale.mjs";
|
|
22
22
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
|
23
23
|
import { makeTransitionProps } from "../../composables/transition.mjs"; // Utilities
|
|
24
|
-
import { computed, mergeProps, ref, shallowRef, watch } from 'vue';
|
|
24
|
+
import { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';
|
|
25
25
|
import { ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, omit, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
|
|
26
26
|
export const makeSelectProps = propsFactory({
|
|
27
27
|
chips: Boolean,
|
|
@@ -182,21 +182,27 @@ export const VSelect = genericComponent()({
|
|
|
182
182
|
model.value = [item];
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
+
|
|
186
|
+
/** @param set - null means toggle */
|
|
185
187
|
function select(item) {
|
|
186
|
-
let
|
|
188
|
+
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
189
|
+
if (item.props.disabled) return;
|
|
187
190
|
if (props.multiple) {
|
|
188
191
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
189
|
-
add = index
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
} else {
|
|
193
|
-
const value = [...model.value];
|
|
192
|
+
const add = set == null ? !~index : set;
|
|
193
|
+
if (~index) {
|
|
194
|
+
const value = add ? [...model.value, item] : [...model.value];
|
|
194
195
|
value.splice(index, 1);
|
|
195
196
|
model.value = value;
|
|
197
|
+
} else if (add) {
|
|
198
|
+
model.value = [...model.value, item];
|
|
196
199
|
}
|
|
197
200
|
} else {
|
|
201
|
+
const add = set !== false;
|
|
198
202
|
model.value = add ? [item] : [];
|
|
199
|
-
|
|
203
|
+
nextTick(() => {
|
|
204
|
+
menu.value = false;
|
|
205
|
+
});
|
|
200
206
|
}
|
|
201
207
|
}
|
|
202
208
|
function onBlur(e) {
|
|
@@ -230,14 +236,9 @@ export const VSelect = genericComponent()({
|
|
|
230
236
|
});
|
|
231
237
|
}
|
|
232
238
|
});
|
|
233
|
-
watch(
|
|
234
|
-
if (!isFocused.value) return;
|
|
235
|
-
|
|
236
|
-
menu.value = false;
|
|
237
|
-
}
|
|
238
|
-
if (!oldVal.length && val.length) {
|
|
239
|
-
menu.value = true;
|
|
240
|
-
}
|
|
239
|
+
watch(() => props.items, val => {
|
|
240
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
241
|
+
menu.value = true;
|
|
241
242
|
});
|
|
242
243
|
useRender(() => {
|
|
243
244
|
const hasChips = !!(props.chips || slots.chip);
|
|
@@ -315,7 +316,7 @@ export const VSelect = genericComponent()({
|
|
|
315
316
|
const itemProps = mergeProps(item.props, {
|
|
316
317
|
ref: itemRef,
|
|
317
318
|
key: index,
|
|
318
|
-
onClick: () => select(item)
|
|
319
|
+
onClick: () => select(item, null)
|
|
319
320
|
});
|
|
320
321
|
return slots.item?.({
|
|
321
322
|
item,
|