@vuetify/nightly 3.8.8-master.2025-06-07 → 3.8.8-master.2025-06-08

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +8 -3
  2. package/dist/json/attributes.json +959 -959
  3. package/dist/json/importMap-labs.json +22 -22
  4. package/dist/json/importMap.json +144 -144
  5. package/dist/json/web-types.json +1852 -1852
  6. package/dist/vuetify-labs.cjs +91 -27
  7. package/dist/vuetify-labs.css +3832 -3832
  8. package/dist/vuetify-labs.d.ts +56 -60
  9. package/dist/vuetify-labs.esm.js +91 -27
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +91 -27
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +84 -23
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +5026 -5026
  16. package/dist/vuetify.d.ts +56 -60
  17. package/dist/vuetify.esm.js +84 -23
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +84 -23
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +122 -115
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VDataTable/VDataTableColumn.js +1 -0
  25. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  26. package/lib/components/VDataTable/VDataTableHeaders.js +8 -1
  27. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  28. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  29. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  30. package/lib/components/VFileInput/VFileInput.js +8 -3
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VSlider/VSliderThumb.js +1 -1
  33. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  34. package/lib/composables/date/date.d.ts +1 -4
  35. package/lib/composables/date/date.js +13 -14
  36. package/lib/composables/date/date.js.map +1 -1
  37. package/lib/composables/fileDrop.d.ts +4 -0
  38. package/lib/composables/fileDrop.js +50 -0
  39. package/lib/composables/fileDrop.js.map +1 -0
  40. package/lib/entry-bundler.d.ts +0 -3
  41. package/lib/entry-bundler.js +1 -1
  42. package/lib/framework.d.ts +56 -60
  43. package/lib/framework.js +1 -1
  44. package/lib/labs/VDateInput/VDateInput.js +2 -1
  45. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  46. package/lib/labs/VFileUpload/VFileUpload.js +7 -3
  47. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  48. package/lib/labs/entry-bundler.d.ts +0 -3
  49. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ export declare function useFileDrop(): {
2
+ handleDrop: (e: DragEvent) => Promise<File[]>;
3
+ hasFilesOrFolders: (e: DragEvent) => boolean;
4
+ };
@@ -0,0 +1,50 @@
1
+ // Types
2
+
3
+ export function useFileDrop() {
4
+ function hasFilesOrFolders(e) {
5
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
6
+ return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
7
+ }
8
+ async function handleDrop(e) {
9
+ const result = [];
10
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
11
+ if (entries.length) {
12
+ for (const entry of entries) {
13
+ const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
14
+ result.push(...files.map(x => x.file));
15
+ }
16
+ } else {
17
+ result.push(...[...(e.dataTransfer?.files ?? [])]);
18
+ }
19
+ return result;
20
+ }
21
+ return {
22
+ handleDrop,
23
+ hasFilesOrFolders
24
+ };
25
+ }
26
+ function traverseFileTree(item) {
27
+ let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
28
+ return new Promise((resolve, reject) => {
29
+ if (item.isFile) {
30
+ const fileEntry = item;
31
+ fileEntry.file(file => resolve([{
32
+ file,
33
+ path
34
+ }]), reject);
35
+ } else if (item.isDirectory) {
36
+ const directoryReader = item.createReader();
37
+ directoryReader.readEntries(async entries => {
38
+ const files = [];
39
+ for (const entry of entries) {
40
+ files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
41
+ }
42
+ resolve(files);
43
+ });
44
+ }
45
+ });
46
+ }
47
+ function appendIfDirectory(path, item) {
48
+ return item.isDirectory ? `${path}/${item.name}` : path;
49
+ }
50
+ //# sourceMappingURL=fileDrop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDrop.js","names":["useFileDrop","hasFilesOrFolders","e","entries","dataTransfer","items","filter","x","kind","map","webkitGetAsEntry","Boolean","length","files","handleDrop","result","entry","traverseFileTree","appendIfDirectory","push","file","item","path","arguments","undefined","Promise","resolve","reject","isFile","fileEntry","isDirectory","directoryReader","createReader","readEntries","name"],"sources":["../../src/composables/fileDrop.ts"],"sourcesContent":["// Types\ntype FileSelection = { file: File, path: string }\n\nexport function useFileDrop () {\n function hasFilesOrFolders (e: DragEvent): boolean {\n const entries = [...e.dataTransfer?.items ?? []]\n .filter(x => x.kind === 'file')\n .map(x => x.webkitGetAsEntry())\n .filter(Boolean)\n\n return entries.length > 0 || [...e.dataTransfer?.files ?? []].length > 0\n }\n\n async function handleDrop (e: DragEvent) {\n const result: File[] = []\n\n const entries = [...e.dataTransfer?.items ?? []]\n .filter(x => x.kind === 'file')\n .map(x => x.webkitGetAsEntry())\n .filter(Boolean)\n\n if (entries.length) {\n for (const entry of entries) {\n const files = await traverseFileTree(entry!, appendIfDirectory('.', entry!))\n result.push(...files.map(x => x.file))\n }\n } else {\n result.push(...[...e.dataTransfer?.files ?? []])\n }\n\n return result\n }\n\n return {\n handleDrop,\n hasFilesOrFolders,\n }\n}\n\nfunction traverseFileTree (item: FileSystemEntry, path = ''): Promise<FileSelection[]> {\n return new Promise<FileSelection[]>((resolve, reject) => {\n if (item.isFile) {\n const fileEntry = item as FileSystemFileEntry\n fileEntry.file((file: File) => resolve([{ file, path }]), reject)\n } else if (item.isDirectory) {\n const directoryReader = (item as FileSystemDirectoryEntry).createReader()\n directoryReader.readEntries(async entries => {\n const files = [] as FileSelection[]\n for (const entry of entries) {\n files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))))\n }\n resolve(files)\n })\n }\n })\n}\n\nfunction appendIfDirectory (path: string, item: FileSystemEntry) {\n return item.isDirectory\n ? `${path}/${item.name}`\n : path\n}\n"],"mappings":"AAAA;;AAGA,OAAO,SAASA,WAAWA,CAAA,EAAI;EAC7B,SAASC,iBAAiBA,CAAEC,CAAY,EAAW;IACjD,MAAMC,OAAO,GAAG,CAAC,IAAGD,CAAC,CAACE,YAAY,EAAEC,KAAK,IAAI,EAAE,EAAC,CAC7CC,MAAM,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,KAAK,MAAM,CAAC,CAC9BC,GAAG,CAACF,CAAC,IAAIA,CAAC,CAACG,gBAAgB,CAAC,CAAC,CAAC,CAC9BJ,MAAM,CAACK,OAAO,CAAC;IAElB,OAAOR,OAAO,CAACS,MAAM,GAAG,CAAC,IAAI,CAAC,IAAGV,CAAC,CAACE,YAAY,EAAES,KAAK,IAAI,EAAE,EAAC,CAACD,MAAM,GAAG,CAAC;EAC1E;EAEA,eAAeE,UAAUA,CAAEZ,CAAY,EAAE;IACvC,MAAMa,MAAc,GAAG,EAAE;IAEzB,MAAMZ,OAAO,GAAG,CAAC,IAAGD,CAAC,CAACE,YAAY,EAAEC,KAAK,IAAI,EAAE,EAAC,CAC7CC,MAAM,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,KAAK,MAAM,CAAC,CAC9BC,GAAG,CAACF,CAAC,IAAIA,CAAC,CAACG,gBAAgB,CAAC,CAAC,CAAC,CAC9BJ,MAAM,CAACK,OAAO,CAAC;IAElB,IAAIR,OAAO,CAACS,MAAM,EAAE;MAClB,KAAK,MAAMI,KAAK,IAAIb,OAAO,EAAE;QAC3B,MAAMU,KAAK,GAAG,MAAMI,gBAAgB,CAACD,KAAK,EAAGE,iBAAiB,CAAC,GAAG,EAAEF,KAAM,CAAC,CAAC;QAC5ED,MAAM,CAACI,IAAI,CAAC,GAAGN,KAAK,CAACJ,GAAG,CAACF,CAAC,IAAIA,CAAC,CAACa,IAAI,CAAC,CAAC;MACxC;IACF,CAAC,MAAM;MACLL,MAAM,CAACI,IAAI,CAAC,GAAG,CAAC,IAAGjB,CAAC,CAACE,YAAY,EAAES,KAAK,IAAI,EAAE,EAAC,CAAC;IAClD;IAEA,OAAOE,MAAM;EACf;EAEA,OAAO;IACLD,UAAU;IACVb;EACF,CAAC;AACH;AAEA,SAASgB,gBAAgBA,CAAEI,IAAqB,EAAuC;EAAA,IAArCC,IAAI,GAAAC,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,EAAE;EACzD,OAAO,IAAIE,OAAO,CAAkB,CAACC,OAAO,EAAEC,MAAM,KAAK;IACvD,IAAIN,IAAI,CAACO,MAAM,EAAE;MACf,MAAMC,SAAS,GAAGR,IAA2B;MAC7CQ,SAAS,CAACT,IAAI,CAAEA,IAAU,IAAKM,OAAO,CAAC,CAAC;QAAEN,IAAI;QAAEE;MAAK,CAAC,CAAC,CAAC,EAAEK,MAAM,CAAC;IACnE,CAAC,MAAM,IAAIN,IAAI,CAACS,WAAW,EAAE;MAC3B,MAAMC,eAAe,GAAIV,IAAI,CAA8BW,YAAY,CAAC,CAAC;MACzED,eAAe,CAACE,WAAW,CAAC,MAAM9B,OAAO,IAAI;QAC3C,MAAMU,KAAK,GAAG,EAAqB;QACnC,KAAK,MAAMG,KAAK,IAAIb,OAAO,EAAE;UAC3BU,KAAK,CAACM,IAAI,CAAC,IAAI,MAAMF,gBAAgB,CAACD,KAAK,EAAEE,iBAAiB,CAACI,IAAI,EAAEN,KAAK,CAAC,CAAC,CAAC,CAAC;QAChF;QACAU,OAAO,CAACb,KAAK,CAAC;MAChB,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;AACJ;AAEA,SAASK,iBAAiBA,CAAEI,IAAY,EAAED,IAAqB,EAAE;EAC/D,OAAOA,IAAI,CAACS,WAAW,GACnB,GAAGR,IAAI,IAAID,IAAI,CAACa,IAAI,EAAE,GACtBZ,IAAI;AACV","ignoreList":[]}
@@ -28,7 +28,6 @@ export declare const createVuetify: {
28
28
  options: import("./composables/date/date.js").InternalDateOptions;
29
29
  instance: {
30
30
  locale?: any;
31
- createDateRange: (start: unknown, stop?: unknown) => unknown[];
32
31
  date: (value?: any) => unknown;
33
32
  format: (date: unknown, formatString: string) => string;
34
33
  toJsDate: (value: unknown) => Date;
@@ -72,8 +71,6 @@ export declare const createVuetify: {
72
71
  setHours: (date: unknown, hours: number) => unknown;
73
72
  getMinutes: (date: unknown) => number;
74
73
  setMinutes: (date: unknown, minutes: number) => unknown;
75
- } & {
76
- createDateRange(start: unknown, stop?: unknown): unknown[];
77
74
  };
78
75
  };
79
76
  goTo: import("./types.js").GoToInstance;
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.8.8-master.2025-06-07";
19
+ export const version = "3.8.8-master.2025-06-08";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -100,7 +100,6 @@ interface DateAdapter<T = unknown> {
100
100
 
101
101
  interface DateInstance extends DateModule.InternalAdapter {
102
102
  locale?: any;
103
- createDateRange: (start: unknown, stop?: unknown) => unknown[];
104
103
  }
105
104
  /** Supports module augmentation to specify date adapter types */
106
105
  declare namespace DateModule {
@@ -2456,7 +2455,6 @@ declare function createVuetify(vuetify?: VuetifyOptions): {
2456
2455
  options: InternalDateOptions;
2457
2456
  instance: {
2458
2457
  locale?: any;
2459
- createDateRange: (start: unknown, stop?: unknown) => unknown[];
2460
2458
  date: (value?: any) => unknown;
2461
2459
  format: (date: unknown, formatString: string) => string;
2462
2460
  toJsDate: (value: unknown) => Date;
@@ -2500,8 +2498,6 @@ declare function createVuetify(vuetify?: VuetifyOptions): {
2500
2498
  setHours: (date: unknown, hours: number) => unknown;
2501
2499
  getMinutes: (date: unknown) => number;
2502
2500
  setMinutes: (date: unknown, minutes: number) => unknown;
2503
- } & {
2504
- createDateRange(start: unknown, stop?: unknown): unknown[];
2505
2501
  };
2506
2502
  };
2507
2503
  goTo: GoToInstance;
@@ -2549,34 +2545,40 @@ declare module 'vue' {
2549
2545
  $children?: VNodeChild
2550
2546
  }
2551
2547
  export interface GlobalComponents {
2548
+ VApp: typeof import('vuetify/components')['VApp']
2552
2549
  VAppBar: typeof import('vuetify/components')['VAppBar']
2553
2550
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2554
2551
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2552
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2555
2553
  VAlert: typeof import('vuetify/components')['VAlert']
2556
2554
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2557
2555
  VAvatar: typeof import('vuetify/components')['VAvatar']
2558
- VApp: typeof import('vuetify/components')['VApp']
2559
- VBadge: typeof import('vuetify/components')['VBadge']
2560
2556
  VBanner: typeof import('vuetify/components')['VBanner']
2561
2557
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2562
2558
  VBannerText: typeof import('vuetify/components')['VBannerText']
2563
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2564
2559
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2560
+ VBadge: typeof import('vuetify/components')['VBadge']
2565
2561
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2566
2562
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2567
2563
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2568
2564
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2569
- VBtn: typeof import('vuetify/components')['VBtn']
2570
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2571
2565
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2566
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2572
2567
  VCarousel: typeof import('vuetify/components')['VCarousel']
2573
2568
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2569
+ VBtn: typeof import('vuetify/components')['VBtn']
2570
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
2571
+ VChip: typeof import('vuetify/components')['VChip']
2572
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
2573
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2574
2574
  VCard: typeof import('vuetify/components')['VCard']
2575
2575
  VCardActions: typeof import('vuetify/components')['VCardActions']
2576
2576
  VCardItem: typeof import('vuetify/components')['VCardItem']
2577
2577
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2578
2578
  VCardText: typeof import('vuetify/components')['VCardText']
2579
2579
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2580
+ VCode: typeof import('vuetify/components')['VCode']
2581
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
2580
2582
  VDataTable: typeof import('vuetify/components')['VDataTable']
2581
2583
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2582
2584
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2584,29 +2586,24 @@ declare module 'vue' {
2584
2586
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2585
2587
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2586
2588
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2587
- VCode: typeof import('vuetify/components')['VCode']
2588
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2589
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2590
- VChip: typeof import('vuetify/components')['VChip']
2591
- VCounter: typeof import('vuetify/components')['VCounter']
2592
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2593
2589
  VCombobox: typeof import('vuetify/components')['VCombobox']
2594
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
2595
2590
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
2596
2591
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2597
2592
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2598
2593
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2599
2594
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2600
2595
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2601
- VDivider: typeof import('vuetify/components')['VDivider']
2596
+ VCounter: typeof import('vuetify/components')['VCounter']
2602
2597
  VDialog: typeof import('vuetify/components')['VDialog']
2598
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2599
+ VDivider: typeof import('vuetify/components')['VDivider']
2603
2600
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2604
2601
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2605
2602
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2606
2603
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2607
2604
  VFab: typeof import('vuetify/components')['VFab']
2608
- VFooter: typeof import('vuetify/components')['VFooter']
2609
2605
  VFileInput: typeof import('vuetify/components')['VFileInput']
2606
+ VFooter: typeof import('vuetify/components')['VFooter']
2610
2607
  VField: typeof import('vuetify/components')['VField']
2611
2608
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2612
2609
  VIcon: typeof import('vuetify/components')['VIcon']
@@ -2614,13 +2611,13 @@ declare module 'vue' {
2614
2611
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2615
2612
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2616
2613
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2617
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2614
+ VImg: typeof import('vuetify/components')['VImg']
2618
2615
  VInput: typeof import('vuetify/components')['VInput']
2616
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2619
2617
  VKbd: typeof import('vuetify/components')['VKbd']
2620
2618
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2621
2619
  VItem: typeof import('vuetify/components')['VItem']
2622
2620
  VLabel: typeof import('vuetify/components')['VLabel']
2623
- VImg: typeof import('vuetify/components')['VImg']
2624
2621
  VList: typeof import('vuetify/components')['VList']
2625
2622
  VListGroup: typeof import('vuetify/components')['VListGroup']
2626
2623
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2630,72 +2627,69 @@ declare module 'vue' {
2630
2627
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2631
2628
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2632
2629
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2633
- VMenu: typeof import('vuetify/components')['VMenu']
2634
2630
  VMain: typeof import('vuetify/components')['VMain']
2635
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2636
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2637
- VOverlay: typeof import('vuetify/components')['VOverlay']
2638
2631
  VMessages: typeof import('vuetify/components')['VMessages']
2632
+ VMenu: typeof import('vuetify/components')['VMenu']
2633
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2634
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2639
2635
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
2640
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2641
- VPagination: typeof import('vuetify/components')['VPagination']
2642
2636
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2637
+ VOverlay: typeof import('vuetify/components')['VOverlay']
2638
+ VPagination: typeof import('vuetify/components')['VPagination']
2639
+ VSelect: typeof import('vuetify/components')['VSelect']
2640
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2643
2641
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2644
2642
  VRating: typeof import('vuetify/components')['VRating']
2645
- VSelect: typeof import('vuetify/components')['VSelect']
2646
2643
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2647
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2648
- VSheet: typeof import('vuetify/components')['VSheet']
2649
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2650
2644
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2651
2645
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2646
+ VSheet: typeof import('vuetify/components')['VSheet']
2647
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2648
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2649
+ VSlider: typeof import('vuetify/components')['VSlider']
2650
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2652
2651
  VStepper: typeof import('vuetify/components')['VStepper']
2653
2652
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2654
2653
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2655
2654
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2656
2655
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2657
2656
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2658
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2659
- VSlider: typeof import('vuetify/components')['VSlider']
2660
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
2661
2657
  VSwitch: typeof import('vuetify/components')['VSwitch']
2662
- VTimeline: typeof import('vuetify/components')['VTimeline']
2663
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2658
+ VTable: typeof import('vuetify/components')['VTable']
2659
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
2660
+ VTextarea: typeof import('vuetify/components')['VTextarea']
2661
+ VTextField: typeof import('vuetify/components')['VTextField']
2664
2662
  VTab: typeof import('vuetify/components')['VTab']
2665
2663
  VTabs: typeof import('vuetify/components')['VTabs']
2666
2664
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2667
2665
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2668
- VTextField: typeof import('vuetify/components')['VTextField']
2669
- VTextarea: typeof import('vuetify/components')['VTextarea']
2666
+ VTimeline: typeof import('vuetify/components')['VTimeline']
2667
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2668
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2670
2669
  VToolbar: typeof import('vuetify/components')['VToolbar']
2671
2670
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2672
2671
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2673
- VTooltip: typeof import('vuetify/components')['VTooltip']
2674
2672
  VWindow: typeof import('vuetify/components')['VWindow']
2675
2673
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2676
2674
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2677
- VTable: typeof import('vuetify/components')['VTable']
2678
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
2679
2675
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2680
2676
  VForm: typeof import('vuetify/components')['VForm']
2681
- VContainer: typeof import('vuetify/components')['VContainer']
2682
- VCol: typeof import('vuetify/components')['VCol']
2683
- VRow: typeof import('vuetify/components')['VRow']
2684
- VSpacer: typeof import('vuetify/components')['VSpacer']
2677
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
2685
2678
  VHover: typeof import('vuetify/components')['VHover']
2686
- VLazy: typeof import('vuetify/components')['VLazy']
2679
+ VLayout: typeof import('vuetify/components')['VLayout']
2680
+ VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2687
2681
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2682
+ VLazy: typeof import('vuetify/components')['VLazy']
2688
2683
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2689
- VRadio: typeof import('vuetify/components')['VRadio']
2690
2684
  VParallax: typeof import('vuetify/components')['VParallax']
2685
+ VRadio: typeof import('vuetify/components')['VRadio']
2691
2686
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2692
2687
  VResponsive: typeof import('vuetify/components')['VResponsive']
2693
- VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2694
2688
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2695
2689
  VSparkline: typeof import('vuetify/components')['VSparkline']
2696
2690
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2697
- VValidation: typeof import('vuetify/components')['VValidation']
2698
2691
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2692
+ VValidation: typeof import('vuetify/components')['VValidation']
2699
2693
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2700
2694
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2701
2695
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2712,30 +2706,32 @@ declare module 'vue' {
2712
2706
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2713
2707
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2714
2708
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2715
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2716
- VLayout: typeof import('vuetify/components')['VLayout']
2717
- VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2709
+ VContainer: typeof import('vuetify/components')['VContainer']
2710
+ VCol: typeof import('vuetify/components')['VCol']
2711
+ VRow: typeof import('vuetify/components')['VRow']
2712
+ VSpacer: typeof import('vuetify/components')['VSpacer']
2713
+ VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2718
2714
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2719
2715
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2720
2716
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2721
2717
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2722
2718
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2723
2719
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2720
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2721
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2724
2722
  VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2723
+ VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2724
+ VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2725
+ VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2726
+ VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2725
2727
  VPicker: typeof import('vuetify/labs/components')['VPicker']
2726
2728
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2727
- VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2728
- VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2729
- VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2730
- VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2731
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2732
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2733
2729
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2734
2730
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2735
2731
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2736
- VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2737
- VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2738
- VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2732
+ VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2733
+ VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2734
+ VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2739
2735
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2740
2736
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2741
2737
  }
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.8.8-master.2025-06-07";
112
+ export const version = "3.8.8-master.2025-06-08";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
@@ -5,6 +5,7 @@ import { makeVDatePickerProps, VDatePicker } from "../../components/VDatePicker/
5
5
  import { VMenu } from "../../components/VMenu/VMenu.js";
6
6
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.js"; // Composables
7
7
  import { useDate } from "../../composables/date/index.js";
8
+ import { createDateRange } from "../../composables/date/date.js";
8
9
  import { makeDateFormatProps, useDateFormat } from "../../composables/dateFormat.js";
9
10
  import { makeDisplayProps, useDisplay } from "../../composables/display.js";
10
11
  import { makeFocusProps } from "../../composables/focus.js";
@@ -172,7 +173,7 @@ export const VDateInput = genericComponent()({
172
173
  if (parts.every(isValid)) {
173
174
  if (props.multiple === 'range') {
174
175
  const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
175
- model.value = adapter.createDateRange(start, stop);
176
+ model.value = createDateRange(adapter, start, stop);
176
177
  } else {
177
178
  model.value = parts.map(parseDate);
178
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeDateFormatProps","useDateFormat","makeDisplayProps","useDisplay","makeFocusProps","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","location","type","default","menu","Boolean","updateOn","Array","mobile","hideActions","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","current","currentLocale","adapter","isValid","parseDate","formatDate","parserFormat","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","isEditingInput","isFocused","focused","vTextFieldRef","disabledActions","format","display","length","start","end","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","trim","parts","split","every","stop","toSorted","a","b","isAfter","createDateRange","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","placeholder","event","_createElementVNode","_Fragment","$event","_ref3","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeDateFormatProps, useDateFormat } from '@/composables/dateFormat'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: [Function, String],\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n menu: Boolean,\n updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDateFormatProps(),\n ...makeDisplayProps({\n mobile: null,\n }),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: string) => true,\n cancel: () => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t, current: currentLocale } = useLocale()\n const adapter = useDate()\n const { isValid, parseDate, formatDate, parserFormat } = useDateFormat(props, currentLocale)\n const { mobile } = useDisplay(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = useProxiedModel(props, 'menu')\n const isEditingInput = shallowRef(false)\n const isFocused = shallowRef(props.focused)\n const vTextFieldRef = ref<VTextField>()\n const disabledActions = ref<typeof VConfirmEdit['props']['disabled']>(['save'])\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n if (props.displayFormat) {\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n return formatDate(date)\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n disabledActions.value = ['save']\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n }\n\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n function onUserInput ({ value }: HTMLInputElement) {\n if (!value.trim()) {\n model.value = emptyModelValue()\n } else if (!props.multiple) {\n if (isValid(value)) {\n model.value = parseDate(value)\n }\n } else {\n const parts = value.trim().split(/\\D+-\\D+|[^\\d\\-/.]+/)\n if (parts.every(isValid)) {\n if (props.multiple === 'range') {\n const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1)\n model.value = adapter.createDateRange(start, stop)\n } else {\n model.value = parts.map(parseDate)\n }\n }\n }\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']))\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n placeholder={ props.placeholder ?? parserFormat.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onBlur={ onBlur }\n validationValue={ model.value }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n onUpdate:focused={ event => isFocused.value = event }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n disabled={ disabledActions.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n\n disabledActions.value = []\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","createDateRange","makeDateFormatProps","useDateFormat","makeDisplayProps","useDisplay","makeFocusProps","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","location","type","default","menu","Boolean","updateOn","Array","mobile","hideActions","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","current","currentLocale","adapter","isValid","parseDate","formatDate","parserFormat","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","isEditingInput","isFocused","focused","vTextFieldRef","disabledActions","format","display","length","start","end","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","trim","parts","split","every","stop","toSorted","a","b","isAfter","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","placeholder","event","_createElementVNode","_Fragment","$event","_ref3","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { createDateRange } from '@/composables/date/date'\nimport { makeDateFormatProps, useDateFormat } from '@/composables/dateFormat'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: [Function, String],\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n menu: Boolean,\n updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDateFormatProps(),\n ...makeDisplayProps({\n mobile: null,\n }),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: string) => true,\n cancel: () => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t, current: currentLocale } = useLocale()\n const adapter = useDate()\n const { isValid, parseDate, formatDate, parserFormat } = useDateFormat(props, currentLocale)\n const { mobile } = useDisplay(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = useProxiedModel(props, 'menu')\n const isEditingInput = shallowRef(false)\n const isFocused = shallowRef(props.focused)\n const vTextFieldRef = ref<VTextField>()\n const disabledActions = ref<typeof VConfirmEdit['props']['disabled']>(['save'])\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n if (props.displayFormat) {\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n return formatDate(date)\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n disabledActions.value = ['save']\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n }\n\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n function onUserInput ({ value }: HTMLInputElement) {\n if (!value.trim()) {\n model.value = emptyModelValue()\n } else if (!props.multiple) {\n if (isValid(value)) {\n model.value = parseDate(value)\n }\n } else {\n const parts = value.trim().split(/\\D+-\\D+|[^\\d\\-/.]+/)\n if (parts.every(isValid)) {\n if (props.multiple === 'range') {\n const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1)\n model.value = createDateRange(adapter, start, stop)\n } else {\n model.value = parts.map(parseDate)\n }\n }\n }\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']))\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n placeholder={ props.placeholder ?? parserFormat.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onBlur={ onBlur }\n validationValue={ model.value }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n onUpdate:focused={ event => isFocused.value = event }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n disabled={ disabledActions.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n\n disabledActions.value = []\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ import { VOverlay } from "../../components/VOverlay/VOverlay.js";
12
12
  import { makeVSheetProps, VSheet } from "../../components/VSheet/VSheet.js"; // Composables
13
13
  import { makeDelayProps } from "../../composables/delay.js";
14
14
  import { makeDensityProps, useDensity } from "../../composables/density.js";
15
+ import { useFileDrop } from "../../composables/fileDrop.js";
15
16
  import { IconValue } from "../../composables/icons.js";
16
17
  import { useLocale } from "../../composables/locale.js";
17
18
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
@@ -81,6 +82,9 @@ export const VFileUpload = genericComponent()({
81
82
  const isDragging = shallowRef(false);
82
83
  const vSheetRef = ref(null);
83
84
  const inputRef = ref(null);
85
+ const {
86
+ handleDrop
87
+ } = useFileDrop();
84
88
  function onDragover(e) {
85
89
  e.preventDefault();
86
90
  e.stopImmediatePropagation();
@@ -90,13 +94,13 @@ export const VFileUpload = genericComponent()({
90
94
  e.preventDefault();
91
95
  isDragging.value = false;
92
96
  }
93
- function onDrop(e) {
97
+ async function onDrop(e) {
94
98
  e.preventDefault();
95
99
  e.stopImmediatePropagation();
96
100
  isDragging.value = false;
97
- if (!e.dataTransfer?.files?.length || !inputRef.value) return;
101
+ if (!inputRef.value) return;
98
102
  const dataTransfer = new DataTransfer();
99
- for (const file of e.dataTransfer.files) {
103
+ for (const file of await handleDrop(e)) {
100
104
  dataTransfer.items.add(file);
101
105
  }
102
106
  inputRef.value.files = dataTransfer.files;