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.
Files changed (96) hide show
  1. package/dist/_component-variables-labs.sass +2 -0
  2. package/dist/json/attributes.json +461 -41
  3. package/dist/json/importMap-labs.json +16 -4
  4. package/dist/json/importMap.json +120 -120
  5. package/dist/json/tags.json +120 -0
  6. package/dist/json/web-types.json +1173 -53
  7. package/dist/vuetify-labs.css +1547 -1407
  8. package/dist/vuetify-labs.d.ts +1672 -127
  9. package/dist/vuetify-labs.esm.js +428 -94
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +428 -94
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +438 -432
  14. package/dist/vuetify.d.ts +78 -142
  15. package/dist/vuetify.esm.js +121 -82
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +121 -82
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +147 -135
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VApp/index.d.mts +8 -6
  23. package/lib/components/VAutocomplete/VAutocomplete.css +4 -4
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +28 -27
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.sass +2 -2
  27. package/lib/components/VCheckbox/VCheckbox.mjs +3 -1
  28. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  29. package/lib/components/VCombobox/VCombobox.css +4 -4
  30. package/lib/components/VCombobox/VCombobox.mjs +40 -27
  31. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  32. package/lib/components/VCombobox/VCombobox.sass +2 -2
  33. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  34. package/lib/components/VDataIterator/index.d.mts +50 -94
  35. package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
  36. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  37. package/lib/components/VLayout/index.d.mts +8 -6
  38. package/lib/components/VSelect/VSelect.mjs +18 -17
  39. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  40. package/lib/components/VSwitch/VSwitch.css +9 -5
  41. package/lib/components/VSwitch/VSwitch.mjs +2 -0
  42. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  43. package/lib/components/VSwitch/VSwitch.sass +10 -7
  44. package/lib/components/VSwitch/_variables.scss +2 -0
  45. package/lib/components/VToolbar/VToolbar.css +3 -1
  46. package/lib/components/VToolbar/VToolbar.sass +2 -1
  47. package/lib/components/index.d.mts +38 -105
  48. package/lib/composables/date/adapters/vuetify.mjs +21 -3
  49. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  50. package/lib/composables/layout.mjs.map +1 -1
  51. package/lib/composables/transition.mjs +7 -5
  52. package/lib/composables/transition.mjs.map +1 -1
  53. package/lib/entry-bundler.mjs +1 -1
  54. package/lib/framework.mjs +1 -1
  55. package/lib/index.d.mts +42 -37
  56. package/lib/labs/VCalendar/VCalendarInterval.css +1 -0
  57. package/lib/labs/VCalendar/VCalendarInterval.sass +1 -0
  58. package/lib/labs/VCalendar/VCalendarIntervalEvent.css +6 -0
  59. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs +5 -2
  60. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs.map +1 -1
  61. package/lib/labs/VCalendar/VCalendarIntervalEvent.sass +6 -0
  62. package/lib/labs/VEmptyState/VEmptyState.css +59 -0
  63. package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
  64. package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
  65. package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
  66. package/lib/labs/VEmptyState/_variables.scss +22 -0
  67. package/lib/labs/VEmptyState/index.d.mts +415 -0
  68. package/lib/labs/VEmptyState/index.mjs +2 -0
  69. package/lib/labs/VEmptyState/index.mjs.map +1 -0
  70. package/lib/labs/VFab/VFab.css +69 -0
  71. package/lib/labs/VFab/VFab.mjs +114 -0
  72. package/lib/labs/VFab/VFab.mjs.map +1 -0
  73. package/lib/labs/VFab/VFab.sass +82 -0
  74. package/lib/labs/VFab/_mixins.scss +22 -0
  75. package/lib/labs/VFab/_variables.scss +33 -0
  76. package/lib/labs/VFab/index.d.mts +656 -0
  77. package/lib/labs/VFab/index.mjs +2 -0
  78. package/lib/labs/VFab/index.mjs.map +1 -0
  79. package/lib/labs/VSparkline/VBarline.mjs +8 -7
  80. package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
  81. package/lib/labs/VSparkline/VTrendline.mjs +14 -6
  82. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
  83. package/lib/labs/VSparkline/index.d.mts +27 -0
  84. package/lib/labs/VSparkline/util/line.mjs +6 -0
  85. package/lib/labs/VSparkline/util/line.mjs.map +1 -1
  86. package/lib/labs/VSpeedDial/VSpeedDial.css +3 -0
  87. package/lib/labs/VSpeedDial/VSpeedDial.mjs +56 -0
  88. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -0
  89. package/lib/labs/VSpeedDial/VSpeedDial.sass +2 -0
  90. package/lib/labs/VSpeedDial/index.d.mts +649 -0
  91. package/lib/labs/VSpeedDial/index.mjs +2 -0
  92. package/lib/labs/VSpeedDial/index.mjs.map +1 -0
  93. package/lib/labs/components.d.mts +1907 -193
  94. package/lib/labs/components.mjs +3 -0
  95. package/lib/labs/components.mjs.map +1 -1
  96. 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 & FilterPropsOptions<{
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\">&nbsp;</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\">&nbsp;</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: "left" | "top" | "bottom" | "right";
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: "left" | "top" | "bottom" | "right";
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: "left" | "top" | "bottom" | "right";
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: "left" | "top" | "bottom" | "right";
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: "left" | "top" | "bottom" | "right";
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: "left" | "top" | "bottom" | "right";
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 add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
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 === -1;
190
- if (add) {
191
- model.value = [...model.value, item];
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
- menu.value = false;
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(displayItems, (val, oldVal) => {
234
- if (!isFocused.value) return;
235
- if (!val.length && props.hideNoData) {
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,