@vuetify/nightly 3.6.1-dev.2024-05-01 → 3.6.3-master.2024-05-02

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 (55) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/json/attributes.json +91 -91
  3. package/dist/json/importMap-labs.json +18 -18
  4. package/dist/json/importMap.json +138 -138
  5. package/dist/json/web-types.json +192 -191
  6. package/dist/vuetify-labs.css +1323 -1323
  7. package/dist/vuetify-labs.d.ts +275 -233
  8. package/dist/vuetify-labs.esm.js +20 -15
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +20 -15
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +629 -629
  13. package/dist/vuetify.d.ts +326 -284
  14. package/dist/vuetify.esm.js +20 -15
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +20 -15
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +20 -21
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/index.d.mts +18 -18
  22. package/lib/components/VBottomSheet/index.d.mts +15 -9
  23. package/lib/components/VCombobox/index.d.mts +18 -18
  24. package/lib/components/VDataTable/VDataTableHeaders.mjs +2 -0
  25. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  26. package/lib/components/VDataTable/composables/select.mjs +7 -8
  27. package/lib/components/VDataTable/composables/select.mjs.map +1 -1
  28. package/lib/components/VDatePicker/VDatePicker.mjs +2 -2
  29. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  30. package/lib/components/VDialog/index.d.mts +33 -27
  31. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  32. package/lib/components/VFileInput/index.d.mts +6 -6
  33. package/lib/components/VHover/VHover.mjs +1 -1
  34. package/lib/components/VHover/VHover.mjs.map +1 -1
  35. package/lib/components/VHover/index.d.mts +24 -24
  36. package/lib/components/VMenu/index.d.mts +33 -27
  37. package/lib/components/VOverlay/VOverlay.mjs +5 -2
  38. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  39. package/lib/components/VOverlay/index.d.mts +15 -9
  40. package/lib/components/VSelect/index.d.mts +18 -18
  41. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  42. package/lib/components/VSnackbar/index.d.mts +47 -41
  43. package/lib/components/VSpeedDial/index.d.mts +15 -9
  44. package/lib/components/VTooltip/index.d.mts +33 -27
  45. package/lib/components/index.d.mts +275 -233
  46. package/lib/composables/date/adapters/vuetify.mjs +1 -0
  47. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  48. package/lib/entry-bundler.mjs +1 -1
  49. package/lib/entry-bundler.mjs.map +1 -1
  50. package/lib/framework.mjs +1 -1
  51. package/lib/framework.mjs.map +1 -1
  52. package/lib/index.d.mts +51 -51
  53. package/lib/labs/VSnackbarQueue/index.d.mts +47 -41
  54. package/lib/labs/components.d.mts +47 -41
  55. package/package.json +1 -1
@@ -638,7 +638,7 @@ declare const VAutocomplete: {
638
638
  component: vue.Component;
639
639
  };
640
640
  zIndex: string | number;
641
- modelValue: boolean;
641
+ modelValue: boolean | null;
642
642
  origin: Anchor | "auto" | "overlap";
643
643
  eager: boolean;
644
644
  location: Anchor;
@@ -667,7 +667,7 @@ declare const VAutocomplete: {
667
667
  component: vue.Component;
668
668
  };
669
669
  zIndex: string | number;
670
- modelValue: boolean;
670
+ modelValue: boolean | null;
671
671
  origin: Anchor | "auto" | "overlap";
672
672
  eager: boolean;
673
673
  location: Anchor;
@@ -743,7 +743,7 @@ declare const VAutocomplete: {
743
743
  component: vue.Component;
744
744
  };
745
745
  zIndex: string | number;
746
- modelValue: boolean;
746
+ modelValue: boolean | null;
747
747
  origin: Anchor | "auto" | "overlap";
748
748
  eager: boolean;
749
749
  location: Anchor;
@@ -1218,7 +1218,7 @@ declare const VAutocomplete: {
1218
1218
  component: vue.Component;
1219
1219
  };
1220
1220
  zIndex: string | number;
1221
- modelValue: boolean;
1221
+ modelValue: boolean | null;
1222
1222
  origin: Anchor | "auto" | "overlap";
1223
1223
  eager: boolean;
1224
1224
  location: Anchor;
@@ -1247,7 +1247,7 @@ declare const VAutocomplete: {
1247
1247
  component: vue.Component;
1248
1248
  };
1249
1249
  zIndex: string | number;
1250
- modelValue: boolean;
1250
+ modelValue: boolean | null;
1251
1251
  origin: Anchor | "auto" | "overlap";
1252
1252
  eager: boolean;
1253
1253
  location: Anchor;
@@ -1323,7 +1323,7 @@ declare const VAutocomplete: {
1323
1323
  component: vue.Component;
1324
1324
  };
1325
1325
  zIndex: string | number;
1326
- modelValue: boolean;
1326
+ modelValue: boolean | null;
1327
1327
  origin: Anchor | "auto" | "overlap";
1328
1328
  eager: boolean;
1329
1329
  location: Anchor;
@@ -1912,7 +1912,7 @@ declare const VAutocomplete: {
1912
1912
  component: vue.Component;
1913
1913
  };
1914
1914
  zIndex: string | number;
1915
- modelValue: boolean;
1915
+ modelValue: boolean | null;
1916
1916
  origin: Anchor | "auto" | "overlap";
1917
1917
  eager: boolean;
1918
1918
  location: Anchor;
@@ -1941,7 +1941,7 @@ declare const VAutocomplete: {
1941
1941
  component: vue.Component;
1942
1942
  };
1943
1943
  zIndex: string | number;
1944
- modelValue: boolean;
1944
+ modelValue: boolean | null;
1945
1945
  origin: Anchor | "auto" | "overlap";
1946
1946
  eager: boolean;
1947
1947
  location: Anchor;
@@ -2017,7 +2017,7 @@ declare const VAutocomplete: {
2017
2017
  component: vue.Component;
2018
2018
  };
2019
2019
  zIndex: string | number;
2020
- modelValue: boolean;
2020
+ modelValue: boolean | null;
2021
2021
  origin: Anchor | "auto" | "overlap";
2022
2022
  eager: boolean;
2023
2023
  location: Anchor;
@@ -2541,7 +2541,7 @@ declare const VAutocomplete: {
2541
2541
  component: vue.Component;
2542
2542
  };
2543
2543
  zIndex: string | number;
2544
- modelValue: boolean;
2544
+ modelValue: boolean | null;
2545
2545
  origin: Anchor | "auto" | "overlap";
2546
2546
  eager: boolean;
2547
2547
  location: Anchor;
@@ -2570,7 +2570,7 @@ declare const VAutocomplete: {
2570
2570
  component: vue.Component;
2571
2571
  };
2572
2572
  zIndex: string | number;
2573
- modelValue: boolean;
2573
+ modelValue: boolean | null;
2574
2574
  origin: Anchor | "auto" | "overlap";
2575
2575
  eager: boolean;
2576
2576
  location: Anchor;
@@ -2646,7 +2646,7 @@ declare const VAutocomplete: {
2646
2646
  component: vue.Component;
2647
2647
  };
2648
2648
  zIndex: string | number;
2649
- modelValue: boolean;
2649
+ modelValue: boolean | null;
2650
2650
  origin: Anchor | "auto" | "overlap";
2651
2651
  eager: boolean;
2652
2652
  location: Anchor;
@@ -3378,7 +3378,7 @@ declare const VAutocomplete: {
3378
3378
  component: vue.Component;
3379
3379
  };
3380
3380
  zIndex: string | number;
3381
- modelValue: boolean;
3381
+ modelValue: boolean | null;
3382
3382
  origin: Anchor | "auto" | "overlap";
3383
3383
  eager: boolean;
3384
3384
  location: Anchor;
@@ -3407,7 +3407,7 @@ declare const VAutocomplete: {
3407
3407
  component: vue.Component;
3408
3408
  };
3409
3409
  zIndex: string | number;
3410
- modelValue: boolean;
3410
+ modelValue: boolean | null;
3411
3411
  origin: Anchor | "auto" | "overlap";
3412
3412
  eager: boolean;
3413
3413
  location: Anchor;
@@ -3483,7 +3483,7 @@ declare const VAutocomplete: {
3483
3483
  component: vue.Component;
3484
3484
  };
3485
3485
  zIndex: string | number;
3486
- modelValue: boolean;
3486
+ modelValue: boolean | null;
3487
3487
  origin: Anchor | "auto" | "overlap";
3488
3488
  eager: boolean;
3489
3489
  location: Anchor;
@@ -4062,7 +4062,7 @@ declare const VAutocomplete: {
4062
4062
  component: vue.Component;
4063
4063
  };
4064
4064
  zIndex: string | number;
4065
- modelValue: boolean;
4065
+ modelValue: boolean | null;
4066
4066
  origin: Anchor | "auto" | "overlap";
4067
4067
  eager: boolean;
4068
4068
  location: Anchor;
@@ -4091,7 +4091,7 @@ declare const VAutocomplete: {
4091
4091
  component: vue.Component;
4092
4092
  };
4093
4093
  zIndex: string | number;
4094
- modelValue: boolean;
4094
+ modelValue: boolean | null;
4095
4095
  origin: Anchor | "auto" | "overlap";
4096
4096
  eager: boolean;
4097
4097
  location: Anchor;
@@ -4167,7 +4167,7 @@ declare const VAutocomplete: {
4167
4167
  component: vue.Component;
4168
4168
  };
4169
4169
  zIndex: string | number;
4170
- modelValue: boolean;
4170
+ modelValue: boolean | null;
4171
4171
  origin: Anchor | "auto" | "overlap";
4172
4172
  eager: boolean;
4173
4173
  location: Anchor;
@@ -95,7 +95,7 @@ declare const VBottomSheet: {
95
95
  component: vue.Component;
96
96
  }>;
97
97
  zIndex: NonNullable<string | number>;
98
- modelValue: boolean;
98
+ modelValue: boolean | null;
99
99
  inset: boolean;
100
100
  origin: NonNullable<Anchor | "auto" | "overlap">;
101
101
  eager: boolean;
@@ -181,7 +181,7 @@ declare const VBottomSheet: {
181
181
  component: vue.Component;
182
182
  }>;
183
183
  zIndex: NonNullable<string | number>;
184
- modelValue: boolean;
184
+ modelValue: boolean | null;
185
185
  inset: boolean;
186
186
  origin: NonNullable<Anchor | "auto" | "overlap">;
187
187
  eager: boolean;
@@ -265,7 +265,7 @@ declare const VBottomSheet: {
265
265
  component: vue.Component;
266
266
  }>;
267
267
  zIndex: NonNullable<string | number>;
268
- modelValue: boolean;
268
+ modelValue: boolean | null;
269
269
  inset: boolean;
270
270
  origin: NonNullable<Anchor | "auto" | "overlap">;
271
271
  eager: boolean;
@@ -317,7 +317,7 @@ declare const VBottomSheet: {
317
317
  component: vue.Component;
318
318
  }>;
319
319
  zIndex: NonNullable<string | number>;
320
- modelValue: boolean;
320
+ modelValue: boolean | null;
321
321
  inset: boolean;
322
322
  origin: NonNullable<Anchor | "auto" | "overlap">;
323
323
  eager: boolean;
@@ -401,7 +401,7 @@ declare const VBottomSheet: {
401
401
  component: vue.Component;
402
402
  }>;
403
403
  zIndex: NonNullable<string | number>;
404
- modelValue: boolean;
404
+ modelValue: boolean | null;
405
405
  inset: boolean;
406
406
  origin: NonNullable<Anchor | "auto" | "overlap">;
407
407
  eager: boolean;
@@ -437,7 +437,7 @@ declare const VBottomSheet: {
437
437
  component: vue.Component;
438
438
  }>;
439
439
  zIndex: NonNullable<string | number>;
440
- modelValue: boolean;
440
+ modelValue: boolean | null;
441
441
  inset: boolean;
442
442
  origin: NonNullable<Anchor | "auto" | "overlap">;
443
443
  eager: boolean;
@@ -523,7 +523,7 @@ declare const VBottomSheet: {
523
523
  component: vue.Component;
524
524
  }>;
525
525
  zIndex: NonNullable<string | number>;
526
- modelValue: boolean;
526
+ modelValue: boolean | null;
527
527
  inset: boolean;
528
528
  origin: NonNullable<Anchor | "auto" | "overlap">;
529
529
  eager: boolean;
@@ -658,7 +658,10 @@ declare const VBottomSheet: {
658
658
  disabled: BooleanConstructor;
659
659
  opacity: (StringConstructor | NumberConstructor)[];
660
660
  noClickAnimation: BooleanConstructor;
661
- modelValue: BooleanConstructor;
661
+ modelValue: {
662
+ type: vue.PropType<boolean | null>;
663
+ default: null;
664
+ };
662
665
  persistent: BooleanConstructor;
663
666
  scrim: {
664
667
  type: (StringConstructor | BooleanConstructor)[];
@@ -778,7 +781,10 @@ declare const VBottomSheet: {
778
781
  disabled: BooleanConstructor;
779
782
  opacity: (StringConstructor | NumberConstructor)[];
780
783
  noClickAnimation: BooleanConstructor;
781
- modelValue: BooleanConstructor;
784
+ modelValue: {
785
+ type: vue.PropType<boolean | null>;
786
+ default: null;
787
+ };
782
788
  persistent: BooleanConstructor;
783
789
  scrim: {
784
790
  type: (StringConstructor | BooleanConstructor)[];
@@ -638,7 +638,7 @@ declare const VCombobox: {
638
638
  component: vue.Component;
639
639
  };
640
640
  zIndex: string | number;
641
- modelValue: boolean;
641
+ modelValue: boolean | null;
642
642
  origin: Anchor | "auto" | "overlap";
643
643
  eager: boolean;
644
644
  location: Anchor;
@@ -667,7 +667,7 @@ declare const VCombobox: {
667
667
  component: vue.Component;
668
668
  };
669
669
  zIndex: string | number;
670
- modelValue: boolean;
670
+ modelValue: boolean | null;
671
671
  origin: Anchor | "auto" | "overlap";
672
672
  eager: boolean;
673
673
  location: Anchor;
@@ -743,7 +743,7 @@ declare const VCombobox: {
743
743
  component: vue.Component;
744
744
  };
745
745
  zIndex: string | number;
746
- modelValue: boolean;
746
+ modelValue: boolean | null;
747
747
  origin: Anchor | "auto" | "overlap";
748
748
  eager: boolean;
749
749
  location: Anchor;
@@ -1218,7 +1218,7 @@ declare const VCombobox: {
1218
1218
  component: vue.Component;
1219
1219
  };
1220
1220
  zIndex: string | number;
1221
- modelValue: boolean;
1221
+ modelValue: boolean | null;
1222
1222
  origin: Anchor | "auto" | "overlap";
1223
1223
  eager: boolean;
1224
1224
  location: Anchor;
@@ -1247,7 +1247,7 @@ declare const VCombobox: {
1247
1247
  component: vue.Component;
1248
1248
  };
1249
1249
  zIndex: string | number;
1250
- modelValue: boolean;
1250
+ modelValue: boolean | null;
1251
1251
  origin: Anchor | "auto" | "overlap";
1252
1252
  eager: boolean;
1253
1253
  location: Anchor;
@@ -1323,7 +1323,7 @@ declare const VCombobox: {
1323
1323
  component: vue.Component;
1324
1324
  };
1325
1325
  zIndex: string | number;
1326
- modelValue: boolean;
1326
+ modelValue: boolean | null;
1327
1327
  origin: Anchor | "auto" | "overlap";
1328
1328
  eager: boolean;
1329
1329
  location: Anchor;
@@ -1912,7 +1912,7 @@ declare const VCombobox: {
1912
1912
  component: vue.Component;
1913
1913
  };
1914
1914
  zIndex: string | number;
1915
- modelValue: boolean;
1915
+ modelValue: boolean | null;
1916
1916
  origin: Anchor | "auto" | "overlap";
1917
1917
  eager: boolean;
1918
1918
  location: Anchor;
@@ -1941,7 +1941,7 @@ declare const VCombobox: {
1941
1941
  component: vue.Component;
1942
1942
  };
1943
1943
  zIndex: string | number;
1944
- modelValue: boolean;
1944
+ modelValue: boolean | null;
1945
1945
  origin: Anchor | "auto" | "overlap";
1946
1946
  eager: boolean;
1947
1947
  location: Anchor;
@@ -2017,7 +2017,7 @@ declare const VCombobox: {
2017
2017
  component: vue.Component;
2018
2018
  };
2019
2019
  zIndex: string | number;
2020
- modelValue: boolean;
2020
+ modelValue: boolean | null;
2021
2021
  origin: Anchor | "auto" | "overlap";
2022
2022
  eager: boolean;
2023
2023
  location: Anchor;
@@ -2541,7 +2541,7 @@ declare const VCombobox: {
2541
2541
  component: vue.Component;
2542
2542
  };
2543
2543
  zIndex: string | number;
2544
- modelValue: boolean;
2544
+ modelValue: boolean | null;
2545
2545
  origin: Anchor | "auto" | "overlap";
2546
2546
  eager: boolean;
2547
2547
  location: Anchor;
@@ -2570,7 +2570,7 @@ declare const VCombobox: {
2570
2570
  component: vue.Component;
2571
2571
  };
2572
2572
  zIndex: string | number;
2573
- modelValue: boolean;
2573
+ modelValue: boolean | null;
2574
2574
  origin: Anchor | "auto" | "overlap";
2575
2575
  eager: boolean;
2576
2576
  location: Anchor;
@@ -2646,7 +2646,7 @@ declare const VCombobox: {
2646
2646
  component: vue.Component;
2647
2647
  };
2648
2648
  zIndex: string | number;
2649
- modelValue: boolean;
2649
+ modelValue: boolean | null;
2650
2650
  origin: Anchor | "auto" | "overlap";
2651
2651
  eager: boolean;
2652
2652
  location: Anchor;
@@ -3384,7 +3384,7 @@ declare const VCombobox: {
3384
3384
  component: vue.Component;
3385
3385
  };
3386
3386
  zIndex: string | number;
3387
- modelValue: boolean;
3387
+ modelValue: boolean | null;
3388
3388
  origin: Anchor | "auto" | "overlap";
3389
3389
  eager: boolean;
3390
3390
  location: Anchor;
@@ -3413,7 +3413,7 @@ declare const VCombobox: {
3413
3413
  component: vue.Component;
3414
3414
  };
3415
3415
  zIndex: string | number;
3416
- modelValue: boolean;
3416
+ modelValue: boolean | null;
3417
3417
  origin: Anchor | "auto" | "overlap";
3418
3418
  eager: boolean;
3419
3419
  location: Anchor;
@@ -3489,7 +3489,7 @@ declare const VCombobox: {
3489
3489
  component: vue.Component;
3490
3490
  };
3491
3491
  zIndex: string | number;
3492
- modelValue: boolean;
3492
+ modelValue: boolean | null;
3493
3493
  origin: Anchor | "auto" | "overlap";
3494
3494
  eager: boolean;
3495
3495
  location: Anchor;
@@ -4077,7 +4077,7 @@ declare const VCombobox: {
4077
4077
  component: vue.Component;
4078
4078
  };
4079
4079
  zIndex: string | number;
4080
- modelValue: boolean;
4080
+ modelValue: boolean | null;
4081
4081
  origin: Anchor | "auto" | "overlap";
4082
4082
  eager: boolean;
4083
4083
  location: Anchor;
@@ -4106,7 +4106,7 @@ declare const VCombobox: {
4106
4106
  component: vue.Component;
4107
4107
  };
4108
4108
  zIndex: string | number;
4109
- modelValue: boolean;
4109
+ modelValue: boolean | null;
4110
4110
  origin: Anchor | "auto" | "overlap";
4111
4111
  eager: boolean;
4112
4112
  location: Anchor;
@@ -4182,7 +4182,7 @@ declare const VCombobox: {
4182
4182
  component: vue.Component;
4183
4183
  };
4184
4184
  zIndex: string | number;
4185
- modelValue: boolean;
4185
+ modelValue: boolean | null;
4186
4186
  origin: Anchor | "auto" | "overlap";
4187
4187
  eager: boolean;
4188
4188
  location: Anchor;
@@ -166,6 +166,8 @@ export const VDataTableHeaders = genericComponent()({
166
166
  return columns.value.filter(column => column?.sortable);
167
167
  });
168
168
  const appendIcon = computed(() => {
169
+ const showSelectColumn = columns.value.find(column => column.key === 'data-table-select');
170
+ if (showSelectColumn == null) return;
169
171
  return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff';
170
172
  });
171
173
  return _createVNode(VDataTableColumn, _mergeProps({
@@ -1 +1 @@
1
- {"version":3,"file":"VDataTableHeaders.mjs","names":["VDataTableColumn","VCheckboxBtn","VChip","VIcon","VSelect","useHeaders","useSelection","useSort","useBackgroundColor","makeDisplayProps","useDisplay","IconValue","LoaderSlot","makeLoaderProps","useLoader","useLocale","computed","mergeProps","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","sticky","Boolean","multiSort","sortAscIcon","type","default","sortDescIcon","headerProps","Object","VDataTableHeaders","name","props","setup","_ref","slots","t","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","undefined","position","left","fixedOffset","top","getSortIcon","item","value","find","key","order","backgroundColorClasses","backgroundColorStyles","displayClasses","mobile","slotProps","headerCellClasses","VDataTableHeaderCell","_ref2","x","noPadding","_createVNode","_mergeProps","align","sortable","width","minWidth","maxWidth","colspan","rowspan","nowrap","lastFixed","columnSlotName","columnSlotProps","title","findIndex","VDataTableMobileHeaderCell","displayItems","filter","appendIcon","length","onClick:clear","onClick:append","chip","raw","e","preventDefault","stopPropagation","_Fragment","map","row","loading","loader"],"sources":["../../../src/components/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType<typeof provideSort>['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n isSorted: ReturnType<typeof provideSort>['isSorted']\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType<Record<string, any>>,\n },\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!props.sticky && !column.fixed) return undefined\n\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': props.sticky,\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n {\n 'v-data-table__th--sortable': column.sortable,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed,\n },\n ...headerCellClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n onClick={ column.sortable ? () => toggleSort(column) : undefined }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n { ...headerProps }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll && (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n ))\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column) }\n />\n )}\n { props.multiSort && isSorted(column) && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const headerProps = mergeProps(props.headerProps ?? {} ?? {})\n\n const displayItems = computed<ItemProps['items']>(() => {\n return columns.value.filter(column => column?.sortable)\n })\n\n const appendIcon = computed(() => {\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n <VDataTableColumn\n tag=\"th\"\n class={[\n ...headerCellClasses.value,\n ]}\n colspan={ headers.value.length + 1 }\n { ...headerProps }\n >\n <div class=\"v-data-table-header__content\">\n <VSelect\n chips\n class=\"v-data-table__td-sort-select\"\n clearable\n density=\"default\"\n items={ displayItems.value }\n label={ t('$vuetify.dataTable.sortBy') }\n multiple={ props.multiSort }\n variant=\"underlined\"\n onClick:clear={ () => sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n ...slots,\n chip: props => (\n <VChip\n onClick={ props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n <VIcon\n class={[\n 'v-data-table__td-sort-icon',\n isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active',\n ]}\n icon={ getSortIcon(props.item.raw) }\n size=\"small\"\n />\n </VChip>\n ),\n }}\n </VSelect>\n </div>\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return mobile.value ? (\n <tr>\n <VDataTableMobileHeaderCell />\n </tr>\n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table-progress\">\n <th colspan={ columns.value.length }>\n <LoaderSlot\n name=\"v-data-table-progress\"\n absolute\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>\n"],"mappings":";AAAA;AAAA,SACSA,gBAAgB;AAAA,SAChBC,YAAY;AAAA,SACZC,KAAK;AAAA,SACLC,KAAK;AAAA,SACLC,OAAO,gCAEhB;AAAA,SACSC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,OAAO;AAAA,SACPC,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,SAAS;AAAA,SACTC,UAAU,EAAEC,eAAe,EAAEC,SAAS;AAAA,SACtCC,SAAS,wCAElB;AACA,SAASC,QAAQ,EAAEC,UAAU,QAAQ,KAAK;AAAA,SACjCC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAEjE;AAsCA,OAAO,MAAMC,0BAA0B,GAAGF,YAAY,CAAC;EACrDG,KAAK,EAAEC,MAAM;EACbC,MAAM,EAAEC,OAAO;EACfC,SAAS,EAAED,OAAO;EAClBE,WAAW,EAAE;IACXC,IAAI,EAAElB,SAAS;IACfmB,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZF,IAAI,EAAElB,SAAS;IACfmB,OAAO,EAAE;EACX,CAAC;EACDE,WAAW,EAAE;IACXH,IAAI,EAAEI;EACR,CAAC;EAED,GAAGxB,gBAAgB,CAAC,CAAC;EACrB,GAAGI,eAAe,CAAC;AACrB,CAAC,EAAE,mBAAmB,CAAC;AAEvB,OAAO,MAAMqB,iBAAiB,GAAGf,gBAAgB,CAAyB,CAAC,CAAC;EAC1EgB,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAEd,0BAA0B,CAAC,CAAC;EAEnCe,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAE,CAAC,GAAGzB,SAAS,CAAC,CAAC;IACzB,MAAM;MAAE0B,UAAU;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAGpC,OAAO,CAAC,CAAC;IAClD,MAAM;MAAEqC,YAAY;MAAEC,WAAW;MAAEC,SAAS;MAAEC;IAAc,CAAC,GAAGzC,YAAY,CAAC,CAAC;IAC9E,MAAM;MAAE0C,OAAO;MAAEC;IAAQ,CAAC,GAAG5C,UAAU,CAAC,CAAC;IACzC,MAAM;MAAE6C;IAAc,CAAC,GAAGpC,SAAS,CAACsB,KAAK,CAAC;IAE1C,SAASe,cAAcA,CAAEC,MAA+B,EAAEC,CAAS,EAA6B;MAC9F,IAAI,CAACjB,KAAK,CAACX,MAAM,IAAI,CAAC2B,MAAM,CAACE,KAAK,EAAE,OAAOC,SAAS;MAEpD,OAAO;QACLC,QAAQ,EAAE,QAAQ;QAClBC,IAAI,EAAEL,MAAM,CAACE,KAAK,GAAGpC,aAAa,CAACkC,MAAM,CAACM,WAAW,CAAC,GAAGH,SAAS;QAClEI,GAAG,EAAEvB,KAAK,CAACX,MAAM,GAAI,uCAAsC4B,CAAE,GAAE,GAAGE;MACpE,CAAC;IACH;IAEA,SAASK,WAAWA,CAAER,MAA+B,EAAE;MACrD,MAAMS,IAAI,GAAGnB,MAAM,CAACoB,KAAK,CAACC,IAAI,CAACF,IAAI,IAAIA,IAAI,CAACG,GAAG,KAAKZ,MAAM,CAACY,GAAG,CAAC;MAE/D,IAAI,CAACH,IAAI,EAAE,OAAOzB,KAAK,CAACR,WAAW;MAEnC,OAAOiC,IAAI,CAACI,KAAK,KAAK,KAAK,GAAG7B,KAAK,CAACR,WAAW,GAAGQ,KAAK,CAACL,YAAY;IACtE;IAEA,MAAM;MAAEmC,sBAAsB;MAAEC;IAAsB,CAAC,GAAG3D,kBAAkB,CAAC4B,KAAK,EAAE,OAAO,CAAC;IAE5F,MAAM;MAAEgC,cAAc;MAAEC;IAAO,CAAC,GAAG3D,UAAU,CAAC0B,KAAK,CAAC;IAEpD,MAAMkC,SAAS,GAAGtD,QAAQ,CAAC,OAAO;MAChCiC,OAAO,EAAEA,OAAO,CAACa,KAAK;MACtBd,OAAO,EAAEA,OAAO,CAACc,KAAK;MACtBrB,UAAU;MACVE,QAAQ;MACRD,MAAM,EAAEA,MAAM,CAACoB,KAAK;MACpBlB,YAAY,EAAEA,YAAY,CAACkB,KAAK;MAChCjB,WAAW,EAAEA,WAAW,CAACiB,KAAK;MAC9BhB,SAAS;MACTc;IACF,CAAC,CAA4B,CAAC;IAE9B,MAAMW,iBAAiB,GAAGvD,QAAQ,CAAC,MAAO,CACxC,kBAAkB,EAClB;MACE,0BAA0B,EAAEoB,KAAK,CAACX;IACpC,CAAC,EACD2C,cAAc,CAACN,KAAK,EACpBZ,aAAa,CAACY,KAAK,CACnB,CAAC;IAEH,MAAMU,oBAAoB,GAAGC,KAAA,IAAiF;MAAA,IAAhF;QAAErB,MAAM;QAAEsB,CAAC;QAAErB;MAA6D,CAAC,GAAAoB,KAAA;MACvG,MAAME,SAAS,GAAGvB,MAAM,CAACY,GAAG,KAAK,mBAAmB,IAAIZ,MAAM,CAACY,GAAG,KAAK,mBAAmB;MAC1F,MAAMhC,WAAW,GAAGf,UAAU,CAACmB,KAAK,CAACJ,WAAW,IAAI,CAAC,CAAC,EAAEoB,MAAM,CAACpB,WAAW,IAAI,CAAC,CAAC,CAAC;MAEjF,OAAA4C,YAAA,CAAA5E,gBAAA,EAAA6E,WAAA;QAAA;QAAA,SAGYzB,MAAM,CAAC0B,KAAK;QAAA,SACb,CACL;UACE,4BAA4B,EAAE1B,MAAM,CAAC2B,QAAQ;UAC7C,0BAA0B,EAAEpC,QAAQ,CAACS,MAAM,CAAC;UAC5C,yBAAyB,EAAEA,MAAM,CAACE;QACpC,CAAC,EACD,GAAGiB,iBAAiB,CAACT,KAAK,CAC3B;QAAA,SACM;UACLkB,KAAK,EAAE9D,aAAa,CAACkC,MAAM,CAAC4B,KAAK,CAAC;UAClCC,QAAQ,EAAE/D,aAAa,CAACkC,MAAM,CAAC6B,QAAQ,CAAC;UACxCC,QAAQ,EAAEhE,aAAa,CAACkC,MAAM,CAAC8B,QAAQ,CAAC;UACxC,GAAG/B,cAAc,CAACC,MAAM,EAAEC,CAAC;QAC7B,CAAC;QAAA,WACSD,MAAM,CAAC+B,OAAO;QAAA,WACd/B,MAAM,CAACgC,OAAO;QAAA,WACdhC,MAAM,CAAC2B,QAAQ,GAAG,MAAMtC,UAAU,CAACW,MAAM,CAAC,GAAGG,SAAS;QAAA,SACxDH,MAAM,CAACE,KAAK;QAAA,UACXF,MAAM,CAACiC,MAAM;QAAA,aACVjC,MAAM,CAACkC,SAAS;QAAA,aAChBX;MAAS,GAChB3C,WAAW;QAGdF,OAAO,EAAEA,CAAA,KAAM;UACb,MAAMyD,cAAc,GAAI,UAASnC,MAAM,CAACY,GAAI,EAAU;UACtD,MAAMwB,eAAoD,GAAG;YAC3DpC,MAAM;YACNN,SAAS;YACTH,QAAQ;YACRF,UAAU;YACVC,MAAM,EAAEA,MAAM,CAACoB,KAAK;YACpBlB,YAAY,EAAEA,YAAY,CAACkB,KAAK;YAChCjB,WAAW,EAAEA,WAAW,CAACiB,KAAK;YAC9BF;UACF,CAAC;UAED,IAAIrB,KAAK,CAACgD,cAAc,CAAC,EAAE,OAAOhD,KAAK,CAACgD,cAAc,CAAC,CAAEC,eAAe,CAAC;UAEzE,IAAIpC,MAAM,CAACY,GAAG,KAAK,mBAAmB,EAAE;YACtC,OAAOzB,KAAK,CAAC,0BAA0B,CAAC,GAAGiD,eAAe,CAAC,KAAKzC,aAAa,IAAA6B,YAAA,CAAA3E,YAAA;cAAA,cAE5D4C,WAAW,CAACiB,KAAK;cAAA,iBACdlB,YAAY,CAACkB,KAAK,IAAI,CAACjB,WAAW,CAACiB,KAAK;cAAA,uBAClChB;YAAS,QAElC,CAAC;UACJ;UAEA,OAAA8B,YAAA;YAAA;UAAA,IAAAA,YAAA,gBAEYxB,MAAM,CAACqC,KAAK,IAClBrC,MAAM,CAAC2B,QAAQ,IAAAH,YAAA,CAAAzE,KAAA;YAAA;YAAA;YAAA,QAINyD,WAAW,CAACR,MAAM;UAAC,QAE7B,EACChB,KAAK,CAACT,SAAS,IAAIgB,QAAQ,CAACS,MAAM,CAAC,IAAAwB,YAAA;YAAA;YAAA,SAG1B,CACL,iCAAiC,EACjC,GAAGV,sBAAsB,CAACJ,KAAK,CAChC;YAAA,SACOK,qBAAqB,CAACL;UAAK,IAEjCpB,MAAM,CAACoB,KAAK,CAAC4B,SAAS,CAAChB,CAAC,IAAIA,CAAC,CAACV,GAAG,KAAKZ,MAAM,CAACY,GAAG,CAAC,GAAG,CAAC,EAE1D;QAGP;MAAC;IAIT,CAAC;IAED,MAAM2B,0BAA0B,GAAGA,CAAA,KAAM;MACvC,MAAM3D,WAAW,GAAGf,UAAU,CAACmB,KAAK,CAACJ,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;MAE7D,MAAM4D,YAAY,GAAG5E,QAAQ,CAAqB,MAAM;QACtD,OAAOgC,OAAO,CAACc,KAAK,CAAC+B,MAAM,CAACzC,MAAM,IAAIA,MAAM,EAAE2B,QAAQ,CAAC;MACzD,CAAC,CAAC;MAEF,MAAMe,UAAU,GAAG9E,QAAQ,CAAC,MAAM;QAChC,OAAO6B,WAAW,CAACiB,KAAK,GAAG,aAAa,GAAGlB,YAAY,CAACkB,KAAK,GAAG,wBAAwB,GAAG,cAAc;MAC3G,CAAC,CAAC;MAEF,OAAAc,YAAA,CAAA5E,gBAAA,EAAA6E,WAAA;QAAA;QAAA,SAGW,CACL,GAAGN,iBAAiB,CAACT,KAAK,CAC3B;QAAA,WACSb,OAAO,CAACa,KAAK,CAACiC,MAAM,GAAG;MAAC,GAC7B/D,WAAW;QAAAF,OAAA,EAAAA,CAAA,MAAA8C,YAAA;UAAA;QAAA,IAAAA,YAAA,CAAAxE,OAAA;UAAA;UAAA;UAAA;UAAA;UAAA,SAQJwF,YAAY,CAAC9B,KAAK;UAAA,SAClBtB,CAAC,CAAC,2BAA2B,CAAC;UAAA,YAC3BJ,KAAK,CAACT,SAAS;UAAA;UAAA,iBAEVqE,CAAA,KAAMtD,MAAM,CAACoB,KAAK,GAAG,EAAE;UAAA,cAC1BgC,UAAU,CAAChC,KAAK;UAAA,kBACZmC,CAAA,KAAMnD,SAAS,CAAC,CAACD,WAAW,CAACiB,KAAK;QAAC;UAGlD,GAAGvB,KAAK;UACR2D,IAAI,EAAE9D,KAAK,IAAAwC,YAAA,CAAA1E,KAAA;YAAA,WAEGkC,KAAK,CAACyB,IAAI,CAACsC,GAAG,EAAEpB,QAAQ,GAAG,MAAMtC,UAAU,CAACL,KAAK,CAACyB,IAAI,CAACsC,GAAG,CAAC,GAAG5C,SAAS;YAAA,eAClE6C,CAAa,IAAK;cAC/BA,CAAC,CAACC,cAAc,CAAC,CAAC;cAClBD,CAAC,CAACE,eAAe,CAAC,CAAC;YACrB;UAAC;YAAAxE,OAAA,EAAAA,CAAA,MAECM,KAAK,CAACyB,IAAI,CAAC4B,KAAK,EAAAb,YAAA,CAAAzE,KAAA;cAAA,SAET,CACL,4BAA4B,EAC5BwC,QAAQ,CAACP,KAAK,CAACyB,IAAI,CAACsC,GAAG,CAAC,IAAI,mCAAmC,CAChE;cAAA,QACMvC,WAAW,CAACxB,KAAK,CAACyB,IAAI,CAACsC,GAAG,CAAC;cAAA;YAAA;UAAA;QAIvC;MAAA;IAMb,CAAC;IAED9E,SAAS,CAAC,MAAM;MACd,OAAOgD,MAAM,CAACP,KAAK,GAAAc,YAAA,cAAAA,YAAA,CAAAe,0BAAA,kBAAAf,YAAA,CAAA2B,SAAA,SAMbhE,KAAK,CAACU,OAAO,GACXV,KAAK,CAACU,OAAO,CAACqB,SAAS,CAACR,KAAK,CAAC,GAC9Bb,OAAO,CAACa,KAAK,CAAC0C,GAAG,CAAC,CAACC,GAAG,EAAEpD,CAAC,KAAAuB,YAAA,cAErB6B,GAAG,CAACD,GAAG,CAAC,CAACpD,MAAM,EAAEsB,CAAC,KAAAE,YAAA,CAAAJ,oBAAA;QAAA,UACapB,MAAM;QAAA,KAAOsB,CAAC;QAAA,KAAOrB;MAAC,QACtD,CAAC,EAEL,CAAC,EAEFjB,KAAK,CAACsE,OAAO,IAAA9B,YAAA;QAAA;MAAA,IAAAA,YAAA;QAAA,WAEG5B,OAAO,CAACc,KAAK,CAACiC;MAAM,IAAAnB,YAAA,CAAAhE,UAAA;QAAA;QAAA;QAAA;QAAA,SAKtB,OAAOwB,KAAK,CAACsE,OAAO,KAAK,SAAS,GAAGnD,SAAS,GAAGnB,KAAK,CAACsE,OAAO;QAAA;MAAA,GAE7D;QAAE5E,OAAO,EAAES,KAAK,CAACoE;MAAO,CAAC,KAIzC,EAEJ;IACH,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"VDataTableHeaders.mjs","names":["VDataTableColumn","VCheckboxBtn","VChip","VIcon","VSelect","useHeaders","useSelection","useSort","useBackgroundColor","makeDisplayProps","useDisplay","IconValue","LoaderSlot","makeLoaderProps","useLoader","useLocale","computed","mergeProps","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","sticky","Boolean","multiSort","sortAscIcon","type","default","sortDescIcon","headerProps","Object","VDataTableHeaders","name","props","setup","_ref","slots","t","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","undefined","position","left","fixedOffset","top","getSortIcon","item","value","find","key","order","backgroundColorClasses","backgroundColorStyles","displayClasses","mobile","slotProps","headerCellClasses","VDataTableHeaderCell","_ref2","x","noPadding","_createVNode","_mergeProps","align","sortable","width","minWidth","maxWidth","colspan","rowspan","nowrap","lastFixed","columnSlotName","columnSlotProps","title","findIndex","VDataTableMobileHeaderCell","displayItems","filter","appendIcon","showSelectColumn","length","onClick:clear","onClick:append","chip","raw","e","preventDefault","stopPropagation","_Fragment","map","row","loading","loader"],"sources":["../../../src/components/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType<typeof provideSort>['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n isSorted: ReturnType<typeof provideSort>['isSorted']\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType<Record<string, any>>,\n },\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!props.sticky && !column.fixed) return undefined\n\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': props.sticky,\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n {\n 'v-data-table__th--sortable': column.sortable,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed,\n },\n ...headerCellClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n onClick={ column.sortable ? () => toggleSort(column) : undefined }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n { ...headerProps }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll && (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n ))\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column) }\n />\n )}\n { props.multiSort && isSorted(column) && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const headerProps = mergeProps(props.headerProps ?? {} ?? {})\n\n const displayItems = computed<ItemProps['items']>(() => {\n return columns.value.filter(column => column?.sortable)\n })\n\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select')\n\n if (showSelectColumn == null) return\n\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n <VDataTableColumn\n tag=\"th\"\n class={[\n ...headerCellClasses.value,\n ]}\n colspan={ headers.value.length + 1 }\n { ...headerProps }\n >\n <div class=\"v-data-table-header__content\">\n <VSelect\n chips\n class=\"v-data-table__td-sort-select\"\n clearable\n density=\"default\"\n items={ displayItems.value }\n label={ t('$vuetify.dataTable.sortBy') }\n multiple={ props.multiSort }\n variant=\"underlined\"\n onClick:clear={ () => sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n ...slots,\n chip: props => (\n <VChip\n onClick={ props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n <VIcon\n class={[\n 'v-data-table__td-sort-icon',\n isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active',\n ]}\n icon={ getSortIcon(props.item.raw) }\n size=\"small\"\n />\n </VChip>\n ),\n }}\n </VSelect>\n </div>\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return mobile.value ? (\n <tr>\n <VDataTableMobileHeaderCell />\n </tr>\n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table-progress\">\n <th colspan={ columns.value.length }>\n <LoaderSlot\n name=\"v-data-table-progress\"\n absolute\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  // Composables
2
2
  import { useProxiedModel } from "../../../composables/proxiedModel.mjs"; // Utilities
3
- import { computed, inject, provide, toRaw, toRef } from 'vue';
3
+ import { computed, inject, provide } from 'vue';
4
4
  import { deepEqual, propsFactory, wrapInArray } from "../../../util/index.mjs"; // Types
5
5
  const singleSelectStrategy = {
6
6
  showSelectAll: false,
@@ -10,7 +10,7 @@ const singleSelectStrategy = {
10
10
  items,
11
11
  value
12
12
  } = _ref;
13
- return new Set(value ? [toRaw(items[0]?.value)] : []);
13
+ return new Set(value ? [items[0]?.value] : []);
14
14
  },
15
15
  selectAll: _ref2 => {
16
16
  let {
@@ -34,7 +34,7 @@ const pageSelectStrategy = {
34
34
  selected
35
35
  } = _ref4;
36
36
  for (const item of items) {
37
- if (value) selected.add(toRaw(item.value));else selected.delete(toRaw(item.value));
37
+ if (value) selected.add(item.value);else selected.delete(item.value);
38
38
  }
39
39
  return selected;
40
40
  },
@@ -66,7 +66,7 @@ const allSelectStrategy = {
66
66
  selected
67
67
  } = _ref7;
68
68
  for (const item of items) {
69
- if (value) selected.add(toRaw(item.value));else selected.delete(toRaw(item.value));
69
+ if (value) selected.add(item.value);else selected.delete(item.value);
70
70
  }
71
71
  return selected;
72
72
  },
@@ -126,10 +126,10 @@ export function provideSelection(props, _ref9) {
126
126
  }
127
127
  });
128
128
  function isSelected(items) {
129
- return wrapInArray(items).every(item => selected.value.has(toRaw(item.value)));
129
+ return wrapInArray(items).every(item => selected.value.has(item.value));
130
130
  }
131
131
  function isSomeSelected(items) {
132
- return wrapInArray(items).some(item => selected.value.has(toRaw(item.value)));
132
+ return wrapInArray(items).some(item => selected.value.has(item.value));
133
133
  }
134
134
  function select(items, value) {
135
135
  const newSelected = selectStrategy.value.select({
@@ -140,8 +140,7 @@ export function provideSelection(props, _ref9) {
140
140
  selected.value = newSelected;
141
141
  }
142
142
  function toggleSelect(item) {
143
- const newItem = toRef(item);
144
- select([newItem.value], !isSelected([newItem.value]));
143
+ select([item], !isSelected([item]));
145
144
  }
146
145
  function selectAll(value) {
147
146
  const newSelected = selectStrategy.value.selectAll({
@@ -1 +1 @@
1
- {"version":3,"file":"select.mjs","names":["useProxiedModel","computed","inject","provide","toRaw","toRef","deepEqual","propsFactory","wrapInArray","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","currentPage","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","makeDataTableSelectProps","showSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","valueComparator","Function","VDataTableSelectionSymbol","Symbol","for","provideSelection","props","_ref9","v","map","find","values","allSelectable","filter","selectable","currentPageSelectable","isSelected","every","has","isSomeSelected","some","newSelected","toggleSelect","newItem","someSelected","size","length","data","useSelection","Error"],"sources":["../../../../src/components/VDataTable/composables/select.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRaw, toRef } from 'vue'\nimport { deepEqual, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItemProps } from './items'\nimport type { EventProp } from '@/util'\n\nexport interface SelectableItem {\n value: any\n selectable: boolean\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean\n allSelected: (data: {\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n }) => SelectableItem[]\n select: (data: {\n items: SelectableItem[]\n value: boolean\n selected: Set<unknown>\n }) => Set<unknown>\n selectAll: (data: {\n value: boolean\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n selected: Set<unknown>\n }) => Set<unknown>\n}\n\ntype SelectionProps = Pick<DataTableItemProps, 'itemValue'> & {\n modelValue: readonly any[]\n selectStrategy: 'single' | 'page' | 'all'\n valueComparator: typeof deepEqual\n 'onUpdate:modelValue': EventProp<[any[]]> | undefined\n}\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [toRaw(items[0]?.value)] : [])\n },\n selectAll: ({ selected }) => selected,\n}\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ currentPage }) => currentPage,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(toRaw(item.value))\n else selected.delete(toRaw(item.value))\n }\n\n return selected\n },\n selectAll: ({ value, currentPage, selected }) => pageSelectStrategy.select({ items: currentPage, value, selected }),\n}\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(toRaw(item.value))\n else selected.delete(toRaw(item.value))\n }\n\n return selected\n },\n selectAll: ({ value, allItems, selected }) => allSelectStrategy.select({ items: allItems, value, selected }),\n}\n\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => ([]),\n },\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n}, 'DataTable-select')\n\nexport const VDataTableSelectionSymbol: InjectionKey<ReturnType<typeof provideSelection>> = Symbol.for('vuetify:data-table-selection')\n\nexport function provideSelection (\n props: SelectionProps,\n { allItems, currentPage }: { allItems: Ref<SelectableItem[]>, currentPage: Ref<SelectableItem[]> }\n) {\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(wrapInArray(v).map(v => {\n return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v\n }))\n }, v => {\n return [...v.values()]\n })\n\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable))\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable))\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single': return singleSelectStrategy\n case 'all': return allSelectStrategy\n case 'page':\n default: return pageSelectStrategy\n }\n })\n\n function isSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every(item => selected.value.has(toRaw(item.value)))\n }\n\n function isSomeSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some(item => selected.value.has(toRaw(item.value)))\n }\n\n function select (items: SelectableItem[], value: boolean) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n function toggleSelect (item: SelectableItem) {\n const newItem = toRef(item)\n select([newItem.value], !isSelected([newItem.value]))\n }\n\n function selectAll (value: boolean) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n const someSelected = computed(() => selected.value.size > 0)\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n })\n return !!items.length && isSelected(items)\n })\n\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n }\n\n provide(VDataTableSelectionSymbol, data)\n\n return data\n}\n\nexport function useSelection () {\n const data = inject(VDataTableSelectionSymbol)\n\n if (!data) throw new Error('Missing selection!')\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"select.mjs","names":["useProxiedModel","computed","inject","provide","deepEqual","propsFactory","wrapInArray","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","currentPage","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","makeDataTableSelectProps","showSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","valueComparator","Function","VDataTableSelectionSymbol","Symbol","for","provideSelection","props","_ref9","v","map","find","values","allSelectable","filter","selectable","currentPageSelectable","isSelected","every","has","isSomeSelected","some","newSelected","toggleSelect","someSelected","size","length","data","useSelection","Error"],"sources":["../../../../src/components/VDataTable/composables/select.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide } from 'vue'\nimport { deepEqual, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItemProps } from './items'\nimport type { EventProp } from '@/util'\n\nexport interface SelectableItem {\n value: any\n selectable: boolean\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean\n allSelected: (data: {\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n }) => SelectableItem[]\n select: (data: {\n items: SelectableItem[]\n value: boolean\n selected: Set<unknown>\n }) => Set<unknown>\n selectAll: (data: {\n value: boolean\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n selected: Set<unknown>\n }) => Set<unknown>\n}\n\ntype SelectionProps = Pick<DataTableItemProps, 'itemValue'> & {\n modelValue: readonly any[]\n selectStrategy: 'single' | 'page' | 'all'\n valueComparator: typeof deepEqual\n 'onUpdate:modelValue': EventProp<[any[]]> | undefined\n}\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : [])\n },\n selectAll: ({ selected }) => selected,\n}\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ currentPage }) => currentPage,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, currentPage, selected }) => pageSelectStrategy.select({ items: currentPage, value, selected }),\n}\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, allItems, selected }) => allSelectStrategy.select({ items: allItems, value, selected }),\n}\n\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => ([]),\n },\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n}, 'DataTable-select')\n\nexport const VDataTableSelectionSymbol: InjectionKey<ReturnType<typeof provideSelection>> = Symbol.for('vuetify:data-table-selection')\n\nexport function provideSelection (\n props: SelectionProps,\n { allItems, currentPage }: { allItems: Ref<SelectableItem[]>, currentPage: Ref<SelectableItem[]> }\n) {\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(wrapInArray(v).map(v => {\n return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v\n }))\n }, v => {\n return [...v.values()]\n })\n\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable))\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable))\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single': return singleSelectStrategy\n case 'all': return allSelectStrategy\n case 'page':\n default: return pageSelectStrategy\n }\n })\n\n function isSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every(item => selected.value.has(item.value))\n }\n\n function isSomeSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some(item => selected.value.has(item.value))\n }\n\n function select (items: SelectableItem[], value: boolean) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n function toggleSelect (item: SelectableItem) {\n select([item], !isSelected([item]))\n }\n\n function selectAll (value: boolean) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n const someSelected = computed(() => selected.value.size > 0)\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n })\n return !!items.length && isSelected(items)\n })\n\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n }\n\n provide(VDataTableSelectionSymbol, data)\n\n return data\n}\n\nexport function useSelection () {\n const data = inject(VDataTableSelectionSymbol)\n\n if (!data) throw new Error('Missing selection!')\n\n return data\n}\n"],"mappings":"AAAA;AAAA,SACSA,eAAe,iDAExB;AACA,SAASC,QAAQ,EAAEC,MAAM,EAAEC,OAAO,QAAQ,KAAK;AAAA,SACtCC,SAAS,EAAEC,YAAY,EAAEC,WAAW,mCAE7C;AAoCA,MAAMC,oBAA6C,GAAG;EACpDC,aAAa,EAAE,KAAK;EACpBC,WAAW,EAAEA,CAAA,KAAM,EAAE;EACrBC,MAAM,EAAEC,IAAA,IAAsB;IAAA,IAArB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IACvB,OAAO,IAAIG,GAAG,CAACD,KAAK,GAAG,CAACD,KAAK,CAAC,CAAC,CAAC,EAAEC,KAAK,CAAC,GAAG,EAAE,CAAC;EAChD,CAAC;EACDE,SAAS,EAAEC,KAAA;IAAA,IAAC;MAAEC;IAAS,CAAC,GAAAD,KAAA;IAAA,OAAKC,QAAQ;EAAA;AACvC,CAAC;AAED,MAAMC,kBAA2C,GAAG;EAClDV,aAAa,EAAE,IAAI;EACnBC,WAAW,EAAEU,KAAA;IAAA,IAAC;MAAEC;IAAY,CAAC,GAAAD,KAAA;IAAA,OAAKC,WAAW;EAAA;EAC7CV,MAAM,EAAEW,KAAA,IAAgC;IAAA,IAA/B;MAAET,KAAK;MAAEC,KAAK;MAAEI;IAAS,CAAC,GAAAI,KAAA;IACjC,KAAK,MAAMC,IAAI,IAAIV,KAAK,EAAE;MACxB,IAAIC,KAAK,EAAEI,QAAQ,CAACM,GAAG,CAACD,IAAI,CAACT,KAAK,CAAC,MAC9BI,QAAQ,CAACO,MAAM,CAACF,IAAI,CAACT,KAAK,CAAC;IAClC;IAEA,OAAOI,QAAQ;EACjB,CAAC;EACDF,SAAS,EAAEU,KAAA;IAAA,IAAC;MAAEZ,KAAK;MAAEO,WAAW;MAAEH;IAAS,CAAC,GAAAQ,KAAA;IAAA,OAAKP,kBAAkB,CAACR,MAAM,CAAC;MAAEE,KAAK,EAAEQ,WAAW;MAAEP,KAAK;MAAEI;IAAS,CAAC,CAAC;EAAA;AACrH,CAAC;AAED,MAAMS,iBAA0C,GAAG;EACjDlB,aAAa,EAAE,IAAI;EACnBC,WAAW,EAAEkB,KAAA;IAAA,IAAC;MAAEC;IAAS,CAAC,GAAAD,KAAA;IAAA,OAAKC,QAAQ;EAAA;EACvClB,MAAM,EAAEmB,KAAA,IAAgC;IAAA,IAA/B;MAAEjB,KAAK;MAAEC,KAAK;MAAEI;IAAS,CAAC,GAAAY,KAAA;IACjC,KAAK,MAAMP,IAAI,IAAIV,KAAK,EAAE;MACxB,IAAIC,KAAK,EAAEI,QAAQ,CAACM,GAAG,CAACD,IAAI,CAACT,KAAK,CAAC,MAC9BI,QAAQ,CAACO,MAAM,CAACF,IAAI,CAACT,KAAK,CAAC;IAClC;IAEA,OAAOI,QAAQ;EACjB,CAAC;EACDF,SAAS,EAAEe,KAAA;IAAA,IAAC;MAAEjB,KAAK;MAAEe,QAAQ;MAAEX;IAAS,CAAC,GAAAa,KAAA;IAAA,OAAKJ,iBAAiB,CAAChB,MAAM,CAAC;MAAEE,KAAK,EAAEgB,QAAQ;MAAEf,KAAK;MAAEI;IAAS,CAAC,CAAC;EAAA;AAC9G,CAAC;AAED,OAAO,MAAMc,wBAAwB,GAAG1B,YAAY,CAAC;EACnD2B,UAAU,EAAEC,OAAO;EACnBC,cAAc,EAAE;IACdC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAwC;IAC7DC,OAAO,EAAE;EACX,CAAC;EACDC,UAAU,EAAE;IACVJ,IAAI,EAAEK,KAAiC;IACvCF,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDG,eAAe,EAAE;IACfN,IAAI,EAAEO,QAAsC;IAC5CJ,OAAO,EAAElC;EACX;AACF,CAAC,EAAE,kBAAkB,CAAC;AAEtB,OAAO,MAAMuC,yBAA4E,GAAGC,MAAM,CAACC,GAAG,CAAC,8BAA8B,CAAC;AAEtI,OAAO,SAASC,gBAAgBA,CAC9BC,KAAqB,EAAAC,KAAA,EAErB;EAAA,IADA;IAAEpB,QAAQ;IAAER;EAAqF,CAAC,GAAA4B,KAAA;EAElG,MAAM/B,QAAQ,GAAGjB,eAAe,CAAC+C,KAAK,EAAE,YAAY,EAAEA,KAAK,CAACR,UAAU,EAAEU,CAAC,IAAI;IAC3E,OAAO,IAAInC,GAAG,CAACR,WAAW,CAAC2C,CAAC,CAAC,CAACC,GAAG,CAACD,CAAC,IAAI;MACrC,OAAOrB,QAAQ,CAACf,KAAK,CAACsC,IAAI,CAAC7B,IAAI,IAAIyB,KAAK,CAACN,eAAe,CAACQ,CAAC,EAAE3B,IAAI,CAACT,KAAK,CAAC,CAAC,EAAEA,KAAK,IAAIoC,CAAC;IACtF,CAAC,CAAC,CAAC;EACL,CAAC,EAAEA,CAAC,IAAI;IACN,OAAO,CAAC,GAAGA,CAAC,CAACG,MAAM,CAAC,CAAC,CAAC;EACxB,CAAC,CAAC;EAEF,MAAMC,aAAa,GAAGpD,QAAQ,CAAC,MAAM2B,QAAQ,CAACf,KAAK,CAACyC,MAAM,CAAChC,IAAI,IAAIA,IAAI,CAACiC,UAAU,CAAC,CAAC;EACpF,MAAMC,qBAAqB,GAAGvD,QAAQ,CAAC,MAAMmB,WAAW,CAACP,KAAK,CAACyC,MAAM,CAAChC,IAAI,IAAIA,IAAI,CAACiC,UAAU,CAAC,CAAC;EAE/F,MAAMrB,cAAc,GAAGjC,QAAQ,CAAC,MAAM;IACpC,IAAI,OAAO8C,KAAK,CAACb,cAAc,KAAK,QAAQ,EAAE,OAAOa,KAAK,CAACb,cAAc;IAEzE,QAAQa,KAAK,CAACb,cAAc;MAC1B,KAAK,QAAQ;QAAE,OAAO3B,oBAAoB;MAC1C,KAAK,KAAK;QAAE,OAAOmB,iBAAiB;MACpC,KAAK,MAAM;MACX;QAAS,OAAOR,kBAAkB;IACpC;EACF,CAAC,CAAC;EAEF,SAASuC,UAAUA,CAAE7C,KAAwC,EAAE;IAC7D,OAAON,WAAW,CAACM,KAAK,CAAC,CAAC8C,KAAK,CAACpC,IAAI,IAAIL,QAAQ,CAACJ,KAAK,CAAC8C,GAAG,CAACrC,IAAI,CAACT,KAAK,CAAC,CAAC;EACzE;EAEA,SAAS+C,cAAcA,CAAEhD,KAAwC,EAAE;IACjE,OAAON,WAAW,CAACM,KAAK,CAAC,CAACiD,IAAI,CAACvC,IAAI,IAAIL,QAAQ,CAACJ,KAAK,CAAC8C,GAAG,CAACrC,IAAI,CAACT,KAAK,CAAC,CAAC;EACxE;EAEA,SAASH,MAAMA,CAAEE,KAAuB,EAAEC,KAAc,EAAE;IACxD,MAAMiD,WAAW,GAAG5B,cAAc,CAACrB,KAAK,CAACH,MAAM,CAAC;MAC9CE,KAAK;MACLC,KAAK;MACLI,QAAQ,EAAE,IAAIH,GAAG,CAACG,QAAQ,CAACJ,KAAK;IAClC,CAAC,CAAC;IAEFI,QAAQ,CAACJ,KAAK,GAAGiD,WAAW;EAC9B;EAEA,SAASC,YAAYA,CAAEzC,IAAoB,EAAE;IAC3CZ,MAAM,CAAC,CAACY,IAAI,CAAC,EAAE,CAACmC,UAAU,CAAC,CAACnC,IAAI,CAAC,CAAC,CAAC;EACrC;EAEA,SAASP,SAASA,CAAEF,KAAc,EAAE;IAClC,MAAMiD,WAAW,GAAG5B,cAAc,CAACrB,KAAK,CAACE,SAAS,CAAC;MACjDF,KAAK;MACLe,QAAQ,EAAEyB,aAAa,CAACxC,KAAK;MAC7BO,WAAW,EAAEoC,qBAAqB,CAAC3C,KAAK;MACxCI,QAAQ,EAAE,IAAIH,GAAG,CAACG,QAAQ,CAACJ,KAAK;IAClC,CAAC,CAAC;IAEFI,QAAQ,CAACJ,KAAK,GAAGiD,WAAW;EAC9B;EAEA,MAAME,YAAY,GAAG/D,QAAQ,CAAC,MAAMgB,QAAQ,CAACJ,KAAK,CAACoD,IAAI,GAAG,CAAC,CAAC;EAC5D,MAAMxD,WAAW,GAAGR,QAAQ,CAAC,MAAM;IACjC,MAAMW,KAAK,GAAGsB,cAAc,CAACrB,KAAK,CAACJ,WAAW,CAAC;MAC7CmB,QAAQ,EAAEyB,aAAa,CAACxC,KAAK;MAC7BO,WAAW,EAAEoC,qBAAqB,CAAC3C;IACrC,CAAC,CAAC;IACF,OAAO,CAAC,CAACD,KAAK,CAACsD,MAAM,IAAIT,UAAU,CAAC7C,KAAK,CAAC;EAC5C,CAAC,CAAC;EAEF,MAAMuD,IAAI,GAAG;IACXJ,YAAY;IACZrD,MAAM;IACNK,SAAS;IACT0C,UAAU;IACVG,cAAc;IACdI,YAAY;IACZvD,WAAW;IACXD,aAAa,EAAE0B,cAAc,CAACrB,KAAK,CAACL;EACtC,CAAC;EAEDL,OAAO,CAACwC,yBAAyB,EAAEwB,IAAI,CAAC;EAExC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,YAAYA,CAAA,EAAI;EAC9B,MAAMD,IAAI,GAAGjE,MAAM,CAACyC,yBAAyB,CAAC;EAE9C,IAAI,CAACwB,IAAI,EAAE,MAAM,IAAIE,KAAK,CAAC,oBAAoB,CAAC;EAEhD,OAAOF,IAAI;AACb","ignoreList":[]}
@@ -91,9 +91,9 @@ export const VDatePicker = genericComponent()({
91
91
  });
92
92
  const text = computed(() => {
93
93
  let date = adapter.date();
94
- date = adapter.setYear(date, year.value);
95
- date = adapter.setMonth(date, month.value);
96
94
  date = adapter.setDate(date, 1);
95
+ date = adapter.setMonth(date, month.value);
96
+ date = adapter.setYear(date, year.value);
97
97
  return adapter.format(date, 'monthAndYear');
98
98
  });
99
99
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)