@vuetify/nightly 3.9.1-master.2025-07-17 → 3.9.2-dev.2025-07-18

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 (61) hide show
  1. package/CHANGELOG.md +11 -5
  2. package/dist/json/attributes.json +3550 -3530
  3. package/dist/json/importMap-labs.json +12 -12
  4. package/dist/json/importMap.json +180 -180
  5. package/dist/json/tags.json +5 -0
  6. package/dist/json/web-types.json +20050 -6602
  7. package/dist/vuetify-labs.cjs +277 -89
  8. package/dist/vuetify-labs.css +4411 -4409
  9. package/dist/vuetify-labs.d.ts +124 -62
  10. package/dist/vuetify-labs.esm.js +277 -89
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +277 -89
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +239 -80
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2666 -2664
  17. package/dist/vuetify.d.ts +114 -62
  18. package/dist/vuetify.esm.js +239 -80
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +239 -80
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +724 -702
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +1 -0
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VCombobox/VCombobox.js +1 -0
  28. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  29. package/lib/components/VFileInput/VFileInput.d.ts +15 -0
  30. package/lib/components/VFileInput/VFileInput.js +38 -9
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VList/VList.js +2 -1
  33. package/lib/components/VList/VList.js.map +1 -1
  34. package/lib/components/VList/VListItem.js +7 -1
  35. package/lib/components/VList/VListItem.js.map +1 -1
  36. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  37. package/lib/components/VProgressLinear/VProgressLinear.d.ts +75 -0
  38. package/lib/components/VProgressLinear/VProgressLinear.js +32 -6
  39. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  40. package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
  41. package/lib/components/VProgressLinear/chunks.d.ts +55 -0
  42. package/lib/components/VProgressLinear/chunks.js +62 -0
  43. package/lib/components/VProgressLinear/chunks.js.map +1 -0
  44. package/lib/components/VSelect/VSelect.js +1 -0
  45. package/lib/components/VSelect/VSelect.js.map +1 -1
  46. package/lib/components/VTreeview/VTreeview.js +2 -3
  47. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  48. package/lib/components/VTreeview/VTreeviewChildren.js +59 -59
  49. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  50. package/lib/composables/fileFilter.d.ts +18 -0
  51. package/lib/composables/fileFilter.js +38 -0
  52. package/lib/composables/fileFilter.js.map +1 -0
  53. package/lib/entry-bundler.js +1 -1
  54. package/lib/entry-bundler.js.map +1 -1
  55. package/lib/framework.d.ts +62 -62
  56. package/lib/framework.js +1 -1
  57. package/lib/framework.js.map +1 -1
  58. package/lib/labs/VFileUpload/VFileUpload.d.ts +15 -0
  59. package/lib/labs/VFileUpload/VFileUpload.js +39 -9
  60. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  61. package/package.json +1 -1
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.9.1-master.2025-07-17";
19
+ export const version = "3.9.2-dev.2025-07-18";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"entry-bundler.js","names":["blueprints","components","directives","createVuetify","_createVuetify","options","arguments","length","undefined","version"],"sources":["../src/entry-bundler.ts"],"sourcesContent":["/* eslint-disable local-rules/sort-imports */\n\n// Styles\nimport './styles/main.sass'\n\n// Components\nimport * as blueprints from './blueprints'\nimport * as components from './components'\nimport * as directives from './directives'\nimport { createVuetify as _createVuetify } from './framework'\n\n// Types\nimport type { VuetifyOptions } from './framework'\n\nexport const createVuetify = (options: VuetifyOptions = {}) => {\n return _createVuetify({ components, directives, ...options })\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\nexport {\n blueprints,\n components,\n directives,\n}\nexport * from './composables'\n"],"mappings":"AAAA;;AAEA;AACA;;AAEA;AAAA,OACO,KAAKA,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,SACbC,aAAa,IAAIC,cAAc,0BAExC;AAGA,OAAO,MAAMD,aAAa,GAAG,SAAAA,CAAA,EAAkC;EAAA,IAAjCE,OAAuB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACxD,OAAOF,cAAc,CAAC;IAAEH,UAAU;IAAEC,UAAU;IAAE,GAAGG;EAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,OAAO,MAAMI,OAAO,4BAAsB;AAC1CN,aAAa,CAACM,OAAO,GAAGA,OAAO;AAE/B,SACET,UAAU,EACVC,UAAU,EACVC,UAAU;AACX","ignoreList":[]}
1
+ {"version":3,"file":"entry-bundler.js","names":["blueprints","components","directives","createVuetify","_createVuetify","options","arguments","length","undefined","version"],"sources":["../src/entry-bundler.ts"],"sourcesContent":["/* eslint-disable local-rules/sort-imports */\n\n// Styles\nimport './styles/main.sass'\n\n// Components\nimport * as blueprints from './blueprints'\nimport * as components from './components'\nimport * as directives from './directives'\nimport { createVuetify as _createVuetify } from './framework'\n\n// Types\nimport type { VuetifyOptions } from './framework'\n\nexport const createVuetify = (options: VuetifyOptions = {}) => {\n return _createVuetify({ components, directives, ...options })\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\nexport {\n blueprints,\n components,\n directives,\n}\nexport * from './composables'\n"],"mappings":"AAAA;;AAEA;AACA;;AAEA;AAAA,OACO,KAAKA,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,SACbC,aAAa,IAAIC,cAAc,0BAExC;AAGA,OAAO,MAAMD,aAAa,GAAG,SAAAA,CAAA,EAAkC;EAAA,IAAjCE,OAAuB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACxD,OAAOF,cAAc,CAAC;IAAEH,UAAU;IAAEC,UAAU;IAAE,GAAGG;EAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,OAAO,MAAMI,OAAO,yBAAsB;AAC1CN,aAAa,CAACM,OAAO,GAAGA,OAAO;AAE/B,SACET,UAAU,EACVC,UAAU,EACVC,UAAU;AACX","ignoreList":[]}
@@ -2601,42 +2601,39 @@ declare module 'vue' {
2601
2601
  $children?: VNodeChild
2602
2602
  }
2603
2603
  export interface GlobalComponents {
2604
- VApp: typeof import('vuetify/components')['VApp']
2605
- VAlert: typeof import('vuetify/components')['VAlert']
2606
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2607
2604
  VAppBar: typeof import('vuetify/components')['VAppBar']
2608
2605
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2609
2606
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2610
- VBadge: typeof import('vuetify/components')['VBadge']
2611
2607
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2612
- VBanner: typeof import('vuetify/components')['VBanner']
2613
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
2614
- VBannerText: typeof import('vuetify/components')['VBannerText']
2608
+ VAlert: typeof import('vuetify/components')['VAlert']
2609
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2610
+ VApp: typeof import('vuetify/components')['VApp']
2615
2611
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2612
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2613
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2614
+ VBadge: typeof import('vuetify/components')['VBadge']
2616
2615
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2617
2616
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2618
2617
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2619
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2620
- VAvatar: typeof import('vuetify/components')['VAvatar']
2621
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2622
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2618
+ VBtn: typeof import('vuetify/components')['VBtn']
2619
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2620
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2623
2621
  VCard: typeof import('vuetify/components')['VCard']
2624
2622
  VCardActions: typeof import('vuetify/components')['VCardActions']
2625
2623
  VCardItem: typeof import('vuetify/components')['VCardItem']
2626
2624
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2627
2625
  VCardText: typeof import('vuetify/components')['VCardText']
2628
2626
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2629
- VCode: typeof import('vuetify/components')['VCode']
2630
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2631
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2632
- VCarousel: typeof import('vuetify/components')['VCarousel']
2633
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2634
- VChip: typeof import('vuetify/components')['VChip']
2627
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2635
2628
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
2629
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2630
+ VCounter: typeof import('vuetify/components')['VCounter']
2631
+ VChip: typeof import('vuetify/components')['VChip']
2632
+ VCode: typeof import('vuetify/components')['VCode']
2636
2633
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
2637
2634
  VCombobox: typeof import('vuetify/components')['VCombobox']
2638
- VBtn: typeof import('vuetify/components')['VBtn']
2639
- VCounter: typeof import('vuetify/components')['VCounter']
2635
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
2636
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2640
2637
  VDataTable: typeof import('vuetify/components')['VDataTable']
2641
2638
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2642
2639
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2650,29 +2647,30 @@ declare module 'vue' {
2650
2647
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2651
2648
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2652
2649
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2650
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2653
2651
  VDialog: typeof import('vuetify/components')['VDialog']
2652
+ VDivider: typeof import('vuetify/components')['VDivider']
2654
2653
  VFab: typeof import('vuetify/components')['VFab']
2655
- VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2656
- VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2657
- VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2658
- VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2659
2654
  VField: typeof import('vuetify/components')['VField']
2660
2655
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2661
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2662
2656
  VFileInput: typeof import('vuetify/components')['VFileInput']
2663
- VImg: typeof import('vuetify/components')['VImg']
2664
- VFooter: typeof import('vuetify/components')['VFooter']
2665
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2666
- VInput: typeof import('vuetify/components')['VInput']
2667
2657
  VIcon: typeof import('vuetify/components')['VIcon']
2668
2658
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2669
2659
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2670
2660
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2671
2661
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2672
- VLabel: typeof import('vuetify/components')['VLabel']
2673
- VKbd: typeof import('vuetify/components')['VKbd']
2662
+ VFooter: typeof import('vuetify/components')['VFooter']
2663
+ VImg: typeof import('vuetify/components')['VImg']
2664
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2665
+ VInput: typeof import('vuetify/components')['VInput']
2674
2666
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2675
2667
  VItem: typeof import('vuetify/components')['VItem']
2668
+ VKbd: typeof import('vuetify/components')['VKbd']
2669
+ VMenu: typeof import('vuetify/components')['VMenu']
2670
+ VLabel: typeof import('vuetify/components')['VLabel']
2671
+ VMain: typeof import('vuetify/components')['VMain']
2672
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2673
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
2676
2674
  VList: typeof import('vuetify/components')['VList']
2677
2675
  VListGroup: typeof import('vuetify/components')['VListGroup']
2678
2676
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2682,58 +2680,53 @@ declare module 'vue' {
2682
2680
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2683
2681
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2684
2682
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2685
- VMain: typeof import('vuetify/components')['VMain']
2686
- VMenu: typeof import('vuetify/components')['VMenu']
2687
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2688
2683
  VNumberInput: typeof import('vuetify/components')['VNumberInput']
2689
2684
  VMessages: typeof import('vuetify/components')['VMessages']
2690
2685
  VOverlay: typeof import('vuetify/components')['VOverlay']
2691
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
2692
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2693
2686
  VPagination: typeof import('vuetify/components')['VPagination']
2694
2687
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2695
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2696
2688
  VRating: typeof import('vuetify/components')['VRating']
2697
- VSelect: typeof import('vuetify/components')['VSelect']
2698
- VSheet: typeof import('vuetify/components')['VSheet']
2699
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2689
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2690
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2691
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2700
2692
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2701
- VSlider: typeof import('vuetify/components')['VSlider']
2693
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2702
2694
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2703
2695
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2704
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2705
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2706
- VStepper: typeof import('vuetify/components')['VStepper']
2707
- VStepperActions: typeof import('vuetify/components')['VStepperActions']
2708
- VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2709
- VStepperItem: typeof import('vuetify/components')['VStepperItem']
2710
- VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2711
- VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2696
+ VSheet: typeof import('vuetify/components')['VSheet']
2697
+ VSlider: typeof import('vuetify/components')['VSlider']
2712
2698
  VSwitch: typeof import('vuetify/components')['VSwitch']
2713
- VTable: typeof import('vuetify/components')['VTable']
2699
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2714
2700
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2715
- VTextField: typeof import('vuetify/components')['VTextField']
2716
2701
  VTab: typeof import('vuetify/components')['VTab']
2717
2702
  VTabs: typeof import('vuetify/components')['VTabs']
2718
2703
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2719
2704
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2720
- VTimeline: typeof import('vuetify/components')['VTimeline']
2721
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2722
2705
  VTextarea: typeof import('vuetify/components')['VTextarea']
2706
+ VTable: typeof import('vuetify/components')['VTable']
2707
+ VTextField: typeof import('vuetify/components')['VTextField']
2723
2708
  VTimePicker: typeof import('vuetify/components')['VTimePicker']
2724
2709
  VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2725
2710
  VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2726
- VToolbar: typeof import('vuetify/components')['VToolbar']
2727
- VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2728
- VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2729
- VTooltip: typeof import('vuetify/components')['VTooltip']
2730
2711
  VTreeview: typeof import('vuetify/components')['VTreeview']
2731
2712
  VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
2732
2713
  VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
2714
+ VTimeline: typeof import('vuetify/components')['VTimeline']
2715
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2716
+ VToolbar: typeof import('vuetify/components')['VToolbar']
2717
+ VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2718
+ VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2733
2719
  VWindow: typeof import('vuetify/components')['VWindow']
2734
2720
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2735
- VDivider: typeof import('vuetify/components')['VDivider']
2721
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2722
+ VStepper: typeof import('vuetify/components')['VStepper']
2723
+ VStepperActions: typeof import('vuetify/components')['VStepperActions']
2724
+ VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2725
+ VStepperItem: typeof import('vuetify/components')['VStepperItem']
2726
+ VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2727
+ VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2736
2728
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2729
+ VSelect: typeof import('vuetify/components')['VSelect']
2737
2730
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2738
2731
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2739
2732
  VForm: typeof import('vuetify/components')['VForm']
@@ -2747,13 +2740,16 @@ declare module 'vue' {
2747
2740
  VLazy: typeof import('vuetify/components')['VLazy']
2748
2741
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2749
2742
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2743
+ VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2750
2744
  VParallax: typeof import('vuetify/components')['VParallax']
2751
2745
  VRadio: typeof import('vuetify/components')['VRadio']
2752
- VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2753
2746
  VResponsive: typeof import('vuetify/components')['VResponsive']
2754
- VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2755
2747
  VSparkline: typeof import('vuetify/components')['VSparkline']
2756
2748
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2749
+ VBanner: typeof import('vuetify/components')['VBanner']
2750
+ VBannerActions: typeof import('vuetify/components')['VBannerActions']
2751
+ VBannerText: typeof import('vuetify/components')['VBannerText']
2752
+ VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2757
2753
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2758
2754
  VValidation: typeof import('vuetify/components')['VValidation']
2759
2755
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
@@ -2773,25 +2769,29 @@ declare module 'vue' {
2773
2769
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2774
2770
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2775
2771
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2776
- VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2772
+ VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2773
+ VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2774
+ VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2775
+ VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2777
2776
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2778
2777
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2779
2778
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2780
2779
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2781
2780
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2782
2781
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2782
+ VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2783
2783
  VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2784
2784
  VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2785
+ VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2785
2786
  VPicker: typeof import('vuetify/labs/components')['VPicker']
2786
2787
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2787
- VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2788
2788
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2789
2789
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2790
2790
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2791
2791
  VHotkey: typeof import('vuetify/labs/components')['VHotkey']
2792
2792
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2793
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2794
2793
  VMaskInput: typeof import('vuetify/labs/components')['VMaskInput']
2794
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2795
2795
  }
2796
2796
  export interface GlobalDirectives {
2797
2797
  vClickOutside: typeof import('vuetify/directives')['ClickOutside']
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.9.1-master.2025-07-17";
112
+ export const version = "3.9.2-dev.2025-07-18";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
@@ -1 +1 @@
1
- {"version":3,"file":"framework.js","names":["createDate","DateAdapterSymbol","DateOptionsSymbol","createDefaults","DefaultsSymbol","createDisplay","DisplaySymbol","createGoTo","GoToSymbol","createIcons","IconSymbol","createLocale","LocaleSymbol","createTheme","ThemeSymbol","effectScope","nextTick","reactive","defineComponent","IN_BROWSER","mergeDeep","createVuetify","vuetify","arguments","length","undefined","blueprint","rest","options","aliases","components","directives","scope","run","defaults","display","ssr","theme","icons","locale","date","goTo","install","app","key","directive","component","name","aliasName","appScope","onUnmount","stop","provide","instance","$nuxt","hook","update","mount","vm","__VUE_OPTIONS_API__","mixin","computed","$vuetify","inject","call","unmount","version","$","provides","parent","vnode","appContext"],"sources":["../src/framework.ts"],"sourcesContent":["// Composables\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from '@/composables/date/date'\nimport { createDefaults, DefaultsSymbol } from '@/composables/defaults'\nimport { createDisplay, DisplaySymbol } from '@/composables/display'\nimport { createGoTo, GoToSymbol } from '@/composables/goto'\nimport { createIcons, IconSymbol } from '@/composables/icons'\nimport { createLocale, LocaleSymbol } from '@/composables/locale'\nimport { createTheme, ThemeSymbol } from '@/composables/theme'\n\n// Utilities\nimport { effectScope, nextTick, reactive } from 'vue'\nimport { defineComponent, IN_BROWSER, mergeDeep } from '@/util'\n\n// Types\nimport type { App, ComponentPublicInstance, InjectionKey } from 'vue'\nimport type { DateOptions } from '@/composables/date'\nimport type { DefaultsOptions } from '@/composables/defaults'\nimport type { DisplayOptions, SSROptions } from '@/composables/display'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { IconOptions } from '@/composables/icons'\nimport type { LocaleOptions, RtlOptions } from '@/composables/locale'\nimport type { ThemeOptions } from '@/composables/theme'\n\n// Exports\nexport * from './composables'\nexport * from './types'\n\nexport interface VuetifyOptions {\n aliases?: Record<string, any>\n blueprint?: Blueprint\n components?: Record<string, any>\n date?: DateOptions\n directives?: Record<string, any>\n defaults?: DefaultsOptions\n display?: DisplayOptions\n goTo?: GoToOptions\n theme?: ThemeOptions\n icons?: IconOptions\n locale?: LocaleOptions & RtlOptions\n ssr?: SSROptions\n}\n\nexport interface Blueprint extends Omit<VuetifyOptions, 'blueprint'> {}\n\nexport function createVuetify (vuetify: VuetifyOptions = {}) {\n const { blueprint, ...rest } = vuetify\n const options: VuetifyOptions = mergeDeep(blueprint, rest)\n const {\n aliases = {},\n components = {},\n directives = {},\n } = options\n\n const scope = effectScope()\n return scope.run(() => {\n const defaults = createDefaults(options.defaults)\n const display = createDisplay(options.display, options.ssr)\n const theme = createTheme(options.theme)\n const icons = createIcons(options.icons)\n const locale = createLocale(options.locale)\n const date = createDate(options.date, locale)\n const goTo = createGoTo(options.goTo, locale)\n\n function install (app: App) {\n for (const key in directives) {\n app.directive(key, directives[key])\n }\n\n for (const key in components) {\n app.component(key, components[key])\n }\n\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name,\n }))\n }\n\n const appScope = effectScope()\n appScope.run(() => {\n theme.install(app)\n })\n app.onUnmount(() => appScope.stop())\n\n app.provide(DefaultsSymbol, defaults)\n app.provide(DisplaySymbol, display)\n app.provide(ThemeSymbol, theme)\n app.provide(IconSymbol, icons)\n app.provide(LocaleSymbol, locale)\n app.provide(DateOptionsSymbol, date.options)\n app.provide(DateAdapterSymbol, date.instance)\n app.provide(GoToSymbol, goTo)\n\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update()\n })\n } else {\n const { mount } = app\n app.mount = (...args) => {\n const vm = mount(...args)\n nextTick(() => display.update())\n app.mount = mount\n return vm\n }\n }\n }\n\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify () {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol),\n })\n },\n },\n })\n }\n }\n\n function unmount () {\n scope.stop()\n }\n\n return {\n install,\n unmount,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n goTo,\n }\n })!\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\n// Vue's inject() can only be used in setup\nfunction inject (this: ComponentPublicInstance, key: InjectionKey<any> | string) {\n const vm = this.$\n\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides\n\n if (provides && (key as any) in provides) {\n return provides[(key as string)]\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"framework.js","names":["createDate","DateAdapterSymbol","DateOptionsSymbol","createDefaults","DefaultsSymbol","createDisplay","DisplaySymbol","createGoTo","GoToSymbol","createIcons","IconSymbol","createLocale","LocaleSymbol","createTheme","ThemeSymbol","effectScope","nextTick","reactive","defineComponent","IN_BROWSER","mergeDeep","createVuetify","vuetify","arguments","length","undefined","blueprint","rest","options","aliases","components","directives","scope","run","defaults","display","ssr","theme","icons","locale","date","goTo","install","app","key","directive","component","name","aliasName","appScope","onUnmount","stop","provide","instance","$nuxt","hook","update","mount","vm","__VUE_OPTIONS_API__","mixin","computed","$vuetify","inject","call","unmount","version","$","provides","parent","vnode","appContext"],"sources":["../src/framework.ts"],"sourcesContent":["// Composables\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from '@/composables/date/date'\nimport { createDefaults, DefaultsSymbol } from '@/composables/defaults'\nimport { createDisplay, DisplaySymbol } from '@/composables/display'\nimport { createGoTo, GoToSymbol } from '@/composables/goto'\nimport { createIcons, IconSymbol } from '@/composables/icons'\nimport { createLocale, LocaleSymbol } from '@/composables/locale'\nimport { createTheme, ThemeSymbol } from '@/composables/theme'\n\n// Utilities\nimport { effectScope, nextTick, reactive } from 'vue'\nimport { defineComponent, IN_BROWSER, mergeDeep } from '@/util'\n\n// Types\nimport type { App, ComponentPublicInstance, InjectionKey } from 'vue'\nimport type { DateOptions } from '@/composables/date'\nimport type { DefaultsOptions } from '@/composables/defaults'\nimport type { DisplayOptions, SSROptions } from '@/composables/display'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { IconOptions } from '@/composables/icons'\nimport type { LocaleOptions, RtlOptions } from '@/composables/locale'\nimport type { ThemeOptions } from '@/composables/theme'\n\n// Exports\nexport * from './composables'\nexport * from './types'\n\nexport interface VuetifyOptions {\n aliases?: Record<string, any>\n blueprint?: Blueprint\n components?: Record<string, any>\n date?: DateOptions\n directives?: Record<string, any>\n defaults?: DefaultsOptions\n display?: DisplayOptions\n goTo?: GoToOptions\n theme?: ThemeOptions\n icons?: IconOptions\n locale?: LocaleOptions & RtlOptions\n ssr?: SSROptions\n}\n\nexport interface Blueprint extends Omit<VuetifyOptions, 'blueprint'> {}\n\nexport function createVuetify (vuetify: VuetifyOptions = {}) {\n const { blueprint, ...rest } = vuetify\n const options: VuetifyOptions = mergeDeep(blueprint, rest)\n const {\n aliases = {},\n components = {},\n directives = {},\n } = options\n\n const scope = effectScope()\n return scope.run(() => {\n const defaults = createDefaults(options.defaults)\n const display = createDisplay(options.display, options.ssr)\n const theme = createTheme(options.theme)\n const icons = createIcons(options.icons)\n const locale = createLocale(options.locale)\n const date = createDate(options.date, locale)\n const goTo = createGoTo(options.goTo, locale)\n\n function install (app: App) {\n for (const key in directives) {\n app.directive(key, directives[key])\n }\n\n for (const key in components) {\n app.component(key, components[key])\n }\n\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name,\n }))\n }\n\n const appScope = effectScope()\n appScope.run(() => {\n theme.install(app)\n })\n app.onUnmount(() => appScope.stop())\n\n app.provide(DefaultsSymbol, defaults)\n app.provide(DisplaySymbol, display)\n app.provide(ThemeSymbol, theme)\n app.provide(IconSymbol, icons)\n app.provide(LocaleSymbol, locale)\n app.provide(DateOptionsSymbol, date.options)\n app.provide(DateAdapterSymbol, date.instance)\n app.provide(GoToSymbol, goTo)\n\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update()\n })\n } else {\n const { mount } = app\n app.mount = (...args) => {\n const vm = mount(...args)\n nextTick(() => display.update())\n app.mount = mount\n return vm\n }\n }\n }\n\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify () {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol),\n })\n },\n },\n })\n }\n }\n\n function unmount () {\n scope.stop()\n }\n\n return {\n install,\n unmount,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n goTo,\n }\n })!\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\n// Vue's inject() can only be used in setup\nfunction inject (this: ComponentPublicInstance, key: InjectionKey<any> | string) {\n const vm = this.$\n\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides\n\n if (provides && (key as any) in provides) {\n return provides[(key as string)]\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -44,6 +44,7 @@ export declare const makeVFileUploadProps: <Defaults extends {
44
44
  density?: unknown;
45
45
  closeDelay?: unknown;
46
46
  openDelay?: unknown;
47
+ filterByType?: unknown;
47
48
  browseText?: unknown;
48
49
  dividerText?: unknown;
49
50
  title?: unknown;
@@ -194,6 +195,10 @@ export declare const makeVFileUploadProps: <Defaults extends {
194
195
  type: PropType<unknown extends Defaults["openDelay"] ? string | number : string | number | Defaults["openDelay"]>;
195
196
  default: unknown extends Defaults["openDelay"] ? string | number : NonNullable<string | number> | Defaults["openDelay"];
196
197
  };
198
+ filterByType: unknown extends Defaults["filterByType"] ? StringConstructor : {
199
+ type: PropType<unknown extends Defaults["filterByType"] ? string : string | Defaults["filterByType"]>;
200
+ default: unknown extends Defaults["filterByType"] ? string : string | Defaults["filterByType"];
201
+ };
197
202
  browseText: unknown extends Defaults["browseText"] ? {
198
203
  type: StringConstructor;
199
204
  default: string;
@@ -324,6 +329,7 @@ export declare const VFileUpload: {
324
329
  openDelay?: string | number | undefined;
325
330
  thickness?: string | number | undefined;
326
331
  subtitle?: string | undefined;
332
+ filterByType?: string | undefined;
327
333
  } & {
328
334
  $children?: import("vue").VNodeChild | {
329
335
  $stable?: boolean;
@@ -388,8 +394,10 @@ export declare const VFileUpload: {
388
394
  "v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
389
395
  } & {
390
396
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
397
+ onRejected?: ((files: File[]) => any) | undefined;
391
398
  }, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
392
399
  'update:modelValue': (files: File[]) => true;
400
+ rejected: (files: File[]) => true;
393
401
  }, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
394
402
  length: string | number;
395
403
  style: import("vue").StyleValue;
@@ -472,6 +480,7 @@ export declare const VFileUpload: {
472
480
  openDelay?: string | number | undefined;
473
481
  thickness?: string | number | undefined;
474
482
  subtitle?: string | undefined;
483
+ filterByType?: string | undefined;
475
484
  } & {
476
485
  $children?: import("vue").VNodeChild | {
477
486
  $stable?: boolean;
@@ -536,6 +545,7 @@ export declare const VFileUpload: {
536
545
  "v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
537
546
  } & {
538
547
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
548
+ onRejected?: ((files: File[]) => any) | undefined;
539
549
  }, {}, {}, {}, {}, {
540
550
  length: string | number;
541
551
  style: import("vue").StyleValue;
@@ -596,6 +606,7 @@ export declare const VFileUpload: {
596
606
  openDelay?: string | number | undefined;
597
607
  thickness?: string | number | undefined;
598
608
  subtitle?: string | undefined;
609
+ filterByType?: string | undefined;
599
610
  } & {
600
611
  $children?: import("vue").VNodeChild | {
601
612
  $stable?: boolean;
@@ -660,8 +671,10 @@ export declare const VFileUpload: {
660
671
  "v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
661
672
  } & {
662
673
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
674
+ onRejected?: ((files: File[]) => any) | undefined;
663
675
  }, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
664
676
  'update:modelValue': (files: File[]) => true;
677
+ rejected: (files: File[]) => true;
665
678
  }, string, {
666
679
  length: string | number;
667
680
  style: import("vue").StyleValue;
@@ -745,6 +758,7 @@ export declare const VFileUpload: {
745
758
  };
746
759
  closeDelay: (StringConstructor | NumberConstructor)[];
747
760
  openDelay: (StringConstructor | NumberConstructor)[];
761
+ filterByType: StringConstructor;
748
762
  browseText: {
749
763
  type: StringConstructor;
750
764
  default: string;
@@ -823,6 +837,7 @@ export declare const VFileUpload: {
823
837
  };
824
838
  closeDelay: (StringConstructor | NumberConstructor)[];
825
839
  openDelay: (StringConstructor | NumberConstructor)[];
840
+ filterByType: StringConstructor;
826
841
  browseText: {
827
842
  type: StringConstructor;
828
843
  default: string;
@@ -13,6 +13,7 @@ import { makeVSheetProps, VSheet } from "../../components/VSheet/VSheet.js"; //
13
13
  import { makeDelayProps } from "../../composables/delay.js";
14
14
  import { makeDensityProps, useDensity } from "../../composables/density.js";
15
15
  import { useFileDrop } from "../../composables/fileDrop.js";
16
+ import { makeFileFilterProps, useFileFilter } from "../../composables/fileFilter.js";
16
17
  import { IconValue } from "../../composables/icons.js";
17
18
  import { useLocale } from "../../composables/locale.js";
18
19
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
@@ -53,6 +54,7 @@ export const makeVFileUploadProps = propsFactory({
53
54
  },
54
55
  showSize: Boolean,
55
56
  name: String,
57
+ ...makeFileFilterProps(),
56
58
  ...makeDelayProps(),
57
59
  ...makeDensityProps(),
58
60
  ...pick(makeVDividerProps({
@@ -65,11 +67,13 @@ export const VFileUpload = genericComponent()({
65
67
  inheritAttrs: false,
66
68
  props: makeVFileUploadProps(),
67
69
  emits: {
68
- 'update:modelValue': files => true
70
+ 'update:modelValue': files => true,
71
+ rejected: files => true
69
72
  },
70
73
  setup(props, _ref) {
71
74
  let {
72
75
  attrs,
76
+ emit,
73
77
  slots
74
78
  } = _ref;
75
79
  const {
@@ -78,6 +82,9 @@ export const VFileUpload = genericComponent()({
78
82
  const {
79
83
  densityClasses
80
84
  } = useDensity(props);
85
+ const {
86
+ filterAccepted
87
+ } = useFileFilter(props);
81
88
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
82
89
  const isDragging = shallowRef(false);
83
90
  const vSheetRef = ref(null);
@@ -99,14 +106,38 @@ export const VFileUpload = genericComponent()({
99
106
  e.stopImmediatePropagation();
100
107
  isDragging.value = false;
101
108
  if (!inputRef.value) return;
109
+ const allDroppedFiles = await handleDrop(e);
110
+ selectAccepted(allDroppedFiles);
111
+ }
112
+ function onFileSelection(e) {
113
+ if (!e.target || e.repack) return; // prevent loop
114
+
115
+ if (!props.filterByType) {
116
+ const target = e.target;
117
+ model.value = [...(target.files ?? [])];
118
+ } else {
119
+ selectAccepted([...e.target.files]);
120
+ }
121
+ }
122
+ function selectAccepted(files) {
102
123
  const dataTransfer = new DataTransfer();
103
- for (const file of await handleDrop(e)) {
124
+ const {
125
+ accepted,
126
+ rejected
127
+ } = filterAccepted(files);
128
+ if (rejected.length) {
129
+ emit('rejected', rejected);
130
+ }
131
+ for (const file of accepted) {
104
132
  dataTransfer.items.add(file);
105
133
  }
106
134
  inputRef.value.files = dataTransfer.files;
107
- inputRef.value.dispatchEvent(new Event('change', {
135
+ model.value = [...dataTransfer.files];
136
+ const event = new Event('change', {
108
137
  bubbles: true
109
- }));
138
+ });
139
+ event.repack = true;
140
+ inputRef.value.dispatchEvent(event);
110
141
  }
111
142
  function onClick() {
112
143
  inputRef.value?.click();
@@ -124,17 +155,16 @@ export const VFileUpload = genericComponent()({
124
155
  const cardProps = VSheet.filterProps(props);
125
156
  const dividerProps = VDivider.filterProps(props);
126
157
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
158
+ const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
159
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
127
160
  const inputNode = _createElementVNode("input", _mergeProps({
128
161
  "ref": inputRef,
129
162
  "type": "file",
163
+ "accept": inputAccept,
130
164
  "disabled": props.disabled,
131
165
  "multiple": props.multiple,
132
166
  "name": props.name,
133
- "onChange": e => {
134
- if (!e.target) return;
135
- const target = e.target;
136
- model.value = [...(target.files ?? [])];
137
- }
167
+ "onChange": onFileSelection
138
168
  }, inputAttrs), null);
139
169
  return _createElementVNode(_Fragment, null, [_createVNode(VSheet, _mergeProps({
140
170
  "ref": vSheetRef
@@ -1 +1 @@
1
- {"version":3,"file":"VFileUpload.js","names":["VFileUploadItem","VBtn","VDefaultsProvider","makeVDividerProps","VDivider","VIcon","VOverlay","makeVSheetProps","VSheet","makeDelayProps","makeDensityProps","useDensity","useFileDrop","IconValue","useLocale","useProxiedModel","ref","shallowRef","filterInputAttrs","genericComponent","pick","propsFactory","useRender","wrapInArray","makeVFileUploadProps","browseText","type","String","default","dividerText","title","subtitle","icon","modelValue","Array","Object","validator","val","every","v","clearable","Boolean","disabled","hideBrowse","multiple","scrim","showSize","name","length","VFileUpload","inheritAttrs","props","emits","files","setup","_ref","attrs","slots","t","densityClasses","model","isArray","isDragging","vSheetRef","inputRef","handleDrop","onDragover","e","preventDefault","stopImmediatePropagation","value","onDragleave","onDrop","dataTransfer","DataTransfer","file","items","add","dispatchEvent","Event","bubbles","onClick","click","onClickRemove","index","newValue","filter","_","i","hasTitle","hasIcon","hasBrowse","browse","density","cardProps","filterProps","dividerProps","rootAttrs","inputAttrs","inputNode","_createElementVNode","_mergeProps","target","_Fragment","_createVNode","class","style","undefined","divider","readonly","size","text","variant","input","map","slotProps","onClick:remove","item"],"sources":["../../../src/labs/VFileUpload/VFileUpload.tsx"],"sourcesContent":["// Styles\nimport './VFileUpload.sass'\n\n// Components\nimport { VFileUploadItem } from './VFileUploadItem'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVDividerProps, VDivider } from '@/components/VDivider/VDivider'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { makeDelayProps } from '@/composables/delay'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, shallowRef } from 'vue'\nimport { filterInputAttrs, genericComponent, pick, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\nexport type VFileUploadSlots = {\n browse: {\n props: { onClick: (e: MouseEvent) => void }\n }\n default: never\n icon: never\n input: {\n inputNode: VNode\n }\n item: {\n file: File\n props: { 'onClick:remove': () => void }\n }\n title: never\n divider: never\n}\n\nexport const makeVFileUploadProps = propsFactory({\n browseText: {\n type: String,\n default: '$vuetify.fileUpload.browse',\n },\n dividerText: {\n type: String,\n default: '$vuetify.fileUpload.divider',\n },\n title: {\n type: String,\n default: '$vuetify.fileUpload.title',\n },\n subtitle: String,\n icon: {\n type: IconValue,\n default: '$upload',\n },\n modelValue: {\n type: [Array, Object] as PropType<File[] | File>,\n default: null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n clearable: Boolean,\n disabled: Boolean,\n hideBrowse: Boolean,\n multiple: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n showSize: Boolean,\n name: String,\n\n ...makeDelayProps(),\n ...makeDensityProps(),\n ...pick(makeVDividerProps({\n length: 150,\n }), ['length', 'thickness', 'opacity']),\n ...makeVSheetProps(),\n}, 'VFileUpload')\n\nexport const VFileUpload = genericComponent<VFileUploadSlots>()({\n name: 'VFileUpload',\n\n inheritAttrs: false,\n\n props: makeVFileUploadProps(),\n\n emits: {\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { t } = useLocale()\n const { densityClasses } = useDensity(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : val[0],\n )\n\n const isDragging = shallowRef(false)\n const vSheetRef = ref<InstanceType<typeof VSheet> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n const { handleDrop } = useFileDrop()\n\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value) return\n\n const dataTransfer = new DataTransfer()\n for (const file of await handleDrop(e)) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value.files = dataTransfer.files\n inputRef.value.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n function onClick () {\n inputRef.value?.click()\n }\n\n function onClickRemove (index: number) {\n const newValue = model.value.filter((_, i) => i !== index)\n model.value = newValue\n\n if (newValue.length > 0 || !inputRef.value) return\n\n inputRef.value.value = ''\n }\n\n useRender(() => {\n const hasTitle = !!(slots.title || props.title)\n const hasIcon = !!(slots.icon || props.icon)\n const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'))\n const cardProps = VSheet.filterProps(props)\n const dividerProps = VDivider.filterProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ inputRef }\n type=\"file\"\n disabled={ props.disabled }\n multiple={ props.multiple }\n name={ props.name }\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n <VSheet\n ref={ vSheetRef }\n { ...cardProps }\n class={[\n 'v-file-upload',\n {\n 'v-file-upload--clickable': !hasBrowse,\n 'v-file-upload--disabled': props.disabled,\n 'v-file-upload--dragging': isDragging.value,\n },\n densityClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n ]}\n onDragleave={ onDragleave }\n onDragover={ onDragover }\n onDrop={ onDrop }\n onClick={ !hasBrowse ? onClick : undefined }\n { ...rootAttrs }\n >\n { hasIcon && (\n <div key=\"icon\" class=\"v-file-upload-icon\">\n { !slots.icon ? (\n <VIcon\n key=\"icon-icon\"\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"icon-defaults\"\n defaults={{\n VIcon: {\n icon: props.icon,\n },\n }}\n >\n { slots.icon() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { hasTitle && (\n <div key=\"title\" class=\"v-file-upload-title\">\n { slots.title?.() ?? t(props.title) }\n </div>\n )}\n\n { props.density === 'default' && (\n <>\n <div key=\"upload-divider\" class=\"v-file-upload-divider\">\n { slots.divider?.() ?? (\n <VDivider { ...dividerProps }>\n { t(props.dividerText) }\n </VDivider>\n )}\n </div>\n\n { hasBrowse && (\n <>\n { !slots.browse ? (\n <VBtn\n readonly={ props.disabled }\n size=\"large\"\n text={ t(props.browseText) }\n variant=\"tonal\"\n onClick={ onClick }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n readonly: props.disabled,\n size: 'large',\n text: t(props.browseText),\n variant: 'tonal',\n },\n }}\n >\n { slots.browse({ props: { onClick } }) }\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { props.subtitle && (\n <div class=\"v-file-upload-subtitle\">\n { props.subtitle }\n </div>\n )}\n </>\n )}\n\n <VOverlay\n modelValue={ isDragging.value }\n contained\n scrim={ props.scrim }\n />\n\n { slots.input?.({ inputNode }) ?? inputNode }\n </VSheet>\n\n { model.value.length > 0 && (\n <div class=\"v-file-upload-items\">\n { model.value.map((file, i) => {\n const slotProps = {\n file,\n props: {\n 'onClick:remove': () => onClickRemove(i),\n },\n }\n\n return (\n <VDefaultsProvider\n key={ i }\n defaults={{\n VFileUploadItem: {\n file,\n clearable: props.clearable,\n disabled: props.disabled,\n showSize: props.showSize,\n },\n }}\n >\n { slots.item?.(slotProps) ?? (\n <VFileUploadItem\n key={ i }\n onClick:remove={ () => onClickRemove(i) }\n v-slots={ slots }\n />\n )}\n </VDefaultsProvider>\n )\n })}\n </div>\n )}\n </>\n )\n })\n },\n})\n\nexport type VFileUpload = InstanceType<typeof VFileUpload>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VFileUpload.js","names":["VFileUploadItem","VBtn","VDefaultsProvider","makeVDividerProps","VDivider","VIcon","VOverlay","makeVSheetProps","VSheet","makeDelayProps","makeDensityProps","useDensity","useFileDrop","makeFileFilterProps","useFileFilter","IconValue","useLocale","useProxiedModel","ref","shallowRef","filterInputAttrs","genericComponent","pick","propsFactory","useRender","wrapInArray","makeVFileUploadProps","browseText","type","String","default","dividerText","title","subtitle","icon","modelValue","Array","Object","validator","val","every","v","clearable","Boolean","disabled","hideBrowse","multiple","scrim","showSize","name","length","VFileUpload","inheritAttrs","props","emits","files","rejected","setup","_ref","attrs","emit","slots","t","densityClasses","filterAccepted","model","isArray","isDragging","vSheetRef","inputRef","handleDrop","onDragover","e","preventDefault","stopImmediatePropagation","value","onDragleave","onDrop","allDroppedFiles","selectAccepted","onFileSelection","target","repack","filterByType","dataTransfer","DataTransfer","accepted","file","items","add","event","Event","bubbles","dispatchEvent","onClick","click","onClickRemove","index","newValue","filter","_","i","hasTitle","hasIcon","hasBrowse","browse","density","cardProps","filterProps","dividerProps","rootAttrs","inputAttrs","expectsDirectory","webkitdirectory","undefined","inputAccept","accept","inputNode","_createElementVNode","_mergeProps","_Fragment","_createVNode","class","style","divider","readonly","size","text","variant","input","map","slotProps","onClick:remove","item"],"sources":["../../../src/labs/VFileUpload/VFileUpload.tsx"],"sourcesContent":["// Styles\nimport './VFileUpload.sass'\n\n// Components\nimport { VFileUploadItem } from './VFileUploadItem'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVDividerProps, VDivider } from '@/components/VDivider/VDivider'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { makeDelayProps } from '@/composables/delay'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { makeFileFilterProps, useFileFilter } from '@/composables/fileFilter'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, shallowRef } from 'vue'\nimport { filterInputAttrs, genericComponent, pick, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\nexport type VFileUploadSlots = {\n browse: {\n props: { onClick: (e: MouseEvent) => void }\n }\n default: never\n icon: never\n input: {\n inputNode: VNode\n }\n item: {\n file: File\n props: { 'onClick:remove': () => void }\n }\n title: never\n divider: never\n}\n\nexport const makeVFileUploadProps = propsFactory({\n browseText: {\n type: String,\n default: '$vuetify.fileUpload.browse',\n },\n dividerText: {\n type: String,\n default: '$vuetify.fileUpload.divider',\n },\n title: {\n type: String,\n default: '$vuetify.fileUpload.title',\n },\n subtitle: String,\n icon: {\n type: IconValue,\n default: '$upload',\n },\n modelValue: {\n type: [Array, Object] as PropType<File[] | File>,\n default: null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n clearable: Boolean,\n disabled: Boolean,\n hideBrowse: Boolean,\n multiple: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n showSize: Boolean,\n name: String,\n\n ...makeFileFilterProps(),\n ...makeDelayProps(),\n ...makeDensityProps(),\n ...pick(makeVDividerProps({\n length: 150,\n }), ['length', 'thickness', 'opacity']),\n ...makeVSheetProps(),\n}, 'VFileUpload')\n\nexport const VFileUpload = genericComponent<VFileUploadSlots>()({\n name: 'VFileUpload',\n\n inheritAttrs: false,\n\n props: makeVFileUploadProps(),\n\n emits: {\n 'update:modelValue': (files: File[]) => true,\n rejected: (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { densityClasses } = useDensity(props)\n const { filterAccepted } = useFileFilter(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : val[0],\n )\n\n const isDragging = shallowRef(false)\n const vSheetRef = ref<InstanceType<typeof VSheet> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n const { handleDrop } = useFileDrop()\n\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value) return\n\n const allDroppedFiles = await handleDrop(e)\n selectAccepted(allDroppedFiles)\n }\n\n function onFileSelection (e: Event) {\n if (!e.target || (e as any).repack) return // prevent loop\n\n if (!props.filterByType) {\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n } else {\n selectAccepted([...(e as any).target.files])\n }\n }\n\n function selectAccepted (files: File[]) {\n const dataTransfer = new DataTransfer()\n const { accepted, rejected } = filterAccepted(files)\n\n if (rejected.length) {\n emit('rejected', rejected)\n }\n\n for (const file of accepted) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value!.files = dataTransfer.files\n model.value = [...dataTransfer.files]\n\n const event = new Event('change', { bubbles: true }) as any\n event.repack = true\n inputRef.value!.dispatchEvent(event)\n }\n\n function onClick () {\n inputRef.value?.click()\n }\n\n function onClickRemove (index: number) {\n const newValue = model.value.filter((_, i) => i !== index)\n model.value = newValue\n\n if (newValue.length > 0 || !inputRef.value) return\n\n inputRef.value.value = ''\n }\n\n useRender(() => {\n const hasTitle = !!(slots.title || props.title)\n const hasIcon = !!(slots.icon || props.icon)\n const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'))\n const cardProps = VSheet.filterProps(props)\n const dividerProps = VDivider.filterProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false\n const inputAccept = expectsDirectory ? undefined : (props.filterByType ?? String(attrs.accept))\n\n const inputNode = (\n <input\n ref={ inputRef }\n type=\"file\"\n accept={ inputAccept }\n disabled={ props.disabled }\n multiple={ props.multiple }\n name={ props.name }\n onChange={ onFileSelection }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n <VSheet\n ref={ vSheetRef }\n { ...cardProps }\n class={[\n 'v-file-upload',\n {\n 'v-file-upload--clickable': !hasBrowse,\n 'v-file-upload--disabled': props.disabled,\n 'v-file-upload--dragging': isDragging.value,\n },\n densityClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n ]}\n onDragleave={ onDragleave }\n onDragover={ onDragover }\n onDrop={ onDrop }\n onClick={ !hasBrowse ? onClick : undefined }\n { ...rootAttrs }\n >\n { hasIcon && (\n <div key=\"icon\" class=\"v-file-upload-icon\">\n { !slots.icon ? (\n <VIcon\n key=\"icon-icon\"\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"icon-defaults\"\n defaults={{\n VIcon: {\n icon: props.icon,\n },\n }}\n >\n { slots.icon() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { hasTitle && (\n <div key=\"title\" class=\"v-file-upload-title\">\n { slots.title?.() ?? t(props.title) }\n </div>\n )}\n\n { props.density === 'default' && (\n <>\n <div key=\"upload-divider\" class=\"v-file-upload-divider\">\n { slots.divider?.() ?? (\n <VDivider { ...dividerProps }>\n { t(props.dividerText) }\n </VDivider>\n )}\n </div>\n\n { hasBrowse && (\n <>\n { !slots.browse ? (\n <VBtn\n readonly={ props.disabled }\n size=\"large\"\n text={ t(props.browseText) }\n variant=\"tonal\"\n onClick={ onClick }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n readonly: props.disabled,\n size: 'large',\n text: t(props.browseText),\n variant: 'tonal',\n },\n }}\n >\n { slots.browse({ props: { onClick } }) }\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { props.subtitle && (\n <div class=\"v-file-upload-subtitle\">\n { props.subtitle }\n </div>\n )}\n </>\n )}\n\n <VOverlay\n modelValue={ isDragging.value }\n contained\n scrim={ props.scrim }\n />\n\n { slots.input?.({ inputNode }) ?? inputNode }\n </VSheet>\n\n { model.value.length > 0 && (\n <div class=\"v-file-upload-items\">\n { model.value.map((file, i) => {\n const slotProps = {\n file,\n props: {\n 'onClick:remove': () => onClickRemove(i),\n },\n }\n\n return (\n <VDefaultsProvider\n key={ i }\n defaults={{\n VFileUploadItem: {\n file,\n clearable: props.clearable,\n disabled: props.disabled,\n showSize: props.showSize,\n },\n }}\n >\n { slots.item?.(slotProps) ?? (\n <VFileUploadItem\n key={ i }\n onClick:remove={ () => onClickRemove(i) }\n v-slots={ slots }\n />\n )}\n </VDefaultsProvider>\n )\n })}\n </div>\n )}\n </>\n )\n })\n },\n})\n\nexport type VFileUpload = InstanceType<typeof VFileUpload>\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.9.1-master.2025-07-17",
4
+ "version": "3.9.2-dev.2025-07-18",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"