@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.
- package/CHANGELOG.md +11 -5
- package/dist/json/attributes.json +3550 -3530
- package/dist/json/importMap-labs.json +12 -12
- package/dist/json/importMap.json +180 -180
- package/dist/json/tags.json +5 -0
- package/dist/json/web-types.json +20050 -6602
- package/dist/vuetify-labs.cjs +277 -89
- package/dist/vuetify-labs.css +4411 -4409
- package/dist/vuetify-labs.d.ts +124 -62
- package/dist/vuetify-labs.esm.js +277 -89
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +277 -89
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +239 -80
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2666 -2664
- package/dist/vuetify.d.ts +114 -62
- package/dist/vuetify.esm.js +239 -80
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +239 -80
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +724 -702
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +1 -0
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.js +1 -0
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.d.ts +15 -0
- package/lib/components/VFileInput/VFileInput.js +38 -9
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VList/VList.js +2 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListItem.js +7 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.d.ts +75 -0
- package/lib/components/VProgressLinear/VProgressLinear.js +32 -6
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
- package/lib/components/VProgressLinear/chunks.d.ts +55 -0
- package/lib/components/VProgressLinear/chunks.js +62 -0
- package/lib/components/VProgressLinear/chunks.js.map +1 -0
- package/lib/components/VSelect/VSelect.js +1 -0
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VTreeview/VTreeview.js +2 -3
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewChildren.js +59 -59
- package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/composables/fileFilter.d.ts +18 -0
- package/lib/composables/fileFilter.js +38 -0
- package/lib/composables/fileFilter.js.map +1 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +62 -62
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.d.ts +15 -0
- package/lib/labs/VFileUpload/VFileUpload.js +39 -9
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/package.json +1 -1
package/lib/entry-bundler.js
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.9.
|
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";
|
package/lib/entry-bundler.js.map
CHANGED
@@ -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,
|
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":[]}
|
package/lib/framework.d.ts
CHANGED
@@ -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
|
-
|
2613
|
-
|
2614
|
-
|
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
|
-
|
2620
|
-
|
2621
|
-
|
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
|
-
|
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
|
-
|
2639
|
-
|
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
|
-
|
2673
|
-
|
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
|
-
|
2698
|
-
|
2699
|
-
|
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
|
-
|
2693
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
2702
2694
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
2703
2695
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
2704
|
-
|
2705
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
package/lib/framework.js.map
CHANGED
@@ -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":"AAAA;AAAA,SACSA,UAAU,EAAEC,iBAAiB,EAAEC,iBAAiB;AAAA,SAChDC,cAAc,EAAEC,cAAc;AAAA,SAC9BC,aAAa,EAAEC,aAAa;AAAA,SAC5BC,UAAU,EAAEC,UAAU;AAAA,SACtBC,WAAW,EAAEC,UAAU;AAAA,SACvBC,YAAY,EAAEC,YAAY;AAAA,SAC1BC,WAAW,EAAEC,WAAW,kCAEjC;AACA,SAASC,WAAW,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,KAAK;AAAA,SAC5CC,eAAe,EAAEC,UAAU,EAAEC,SAAS,2BAE/C;AAUA;AAAA;AAAA;AAqBA,OAAO,SAASC,aAAaA,CAAA,EAAgC;EAAA,IAA9BC,OAAuB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACzD,MAAM;IAAEG,SAAS;IAAE,GAAGC;EAAK,CAAC,GAAGL,OAAO;EACtC,MAAMM,OAAuB,GAAGR,SAAS,CAACM,SAAS,EAAEC,IAAI,CAAC;EAC1D,MAAM;IACJE,OAAO,GAAG,CAAC,CAAC;IACZC,UAAU,GAAG,CAAC,CAAC;IACfC,UAAU,GAAG,CAAC;EAChB,CAAC,GAAGH,OAAO;EAEX,MAAMI,KAAK,GAAGjB,WAAW,CAAC,CAAC;EAC3B,OAAOiB,KAAK,CAACC,GAAG,CAAC,MAAM;IACrB,MAAMC,QAAQ,GAAG/B,cAAc,CAACyB,OAAO,CAACM,QAAQ,CAAC;IACjD,MAAMC,OAAO,GAAG9B,aAAa,CAACuB,OAAO,CAACO,OAAO,EAAEP,OAAO,CAACQ,GAAG,CAAC;IAC3D,MAAMC,KAAK,GAAGxB,WAAW,CAACe,OAAO,CAACS,KAAK,CAAC;IACxC,MAAMC,KAAK,GAAG7B,WAAW,CAACmB,OAAO,CAACU,KAAK,CAAC;IACxC,MAAMC,MAAM,GAAG5B,YAAY,CAACiB,OAAO,CAACW,MAAM,CAAC;IAC3C,MAAMC,IAAI,GAAGxC,UAAU,CAAC4B,OAAO,CAACY,IAAI,EAAED,MAAM,CAAC;IAC7C,MAAME,IAAI,GAAGlC,UAAU,CAACqB,OAAO,CAACa,IAAI,EAAEF,MAAM,CAAC;IAE7C,SAASG,OAAOA,CAAEC,GAAQ,EAAE;MAC1B,KAAK,MAAMC,GAAG,IAAIb,UAAU,EAAE;QAC5BY,GAAG,CAACE,SAAS,CAACD,GAAG,EAAEb,UAAU,CAACa,GAAG,CAAC,CAAC;MACrC;MAEA,KAAK,MAAMA,GAAG,IAAId,UAAU,EAAE;QAC5Ba,GAAG,CAACG,SAAS,CAACF,GAAG,EAAEd,UAAU,CAACc,GAAG,CAAC,CAAC;MACrC;MAEA,KAAK,MAAMA,GAAG,IAAIf,OAAO,EAAE;QACzBc,GAAG,CAACG,SAAS,CAACF,GAAG,EAAE1B,eAAe,CAAC;UACjC,GAAGW,OAAO,CAACe,GAAG,CAAC;UACfG,IAAI,EAAEH,GAAG;UACTI,SAAS,EAAEnB,OAAO,CAACe,GAAG,CAAC,CAACG;QAC1B,CAAC,CAAC,CAAC;MACL;MAEA,MAAME,QAAQ,GAAGlC,WAAW,CAAC,CAAC;MAC9BkC,QAAQ,CAAChB,GAAG,CAAC,MAAM;QACjBI,KAAK,CAACK,OAAO,CAACC,GAAG,CAAC;MACpB,CAAC,CAAC;MACFA,GAAG,CAACO,SAAS,CAAC,MAAMD,QAAQ,CAACE,IAAI,CAAC,CAAC,CAAC;MAEpCR,GAAG,CAACS,OAAO,CAAChD,cAAc,EAAE8B,QAAQ,CAAC;MACrCS,GAAG,CAACS,OAAO,CAAC9C,aAAa,EAAE6B,OAAO,CAAC;MACnCQ,GAAG,CAACS,OAAO,CAACtC,WAAW,EAAEuB,KAAK,CAAC;MAC/BM,GAAG,CAACS,OAAO,CAAC1C,UAAU,EAAE4B,KAAK,CAAC;MAC9BK,GAAG,CAACS,OAAO,CAACxC,YAAY,EAAE2B,MAAM,CAAC;MACjCI,GAAG,CAACS,OAAO,CAAClD,iBAAiB,EAAEsC,IAAI,CAACZ,OAAO,CAAC;MAC5Ce,GAAG,CAACS,OAAO,CAACnD,iBAAiB,EAAEuC,IAAI,CAACa,QAAQ,CAAC;MAC7CV,GAAG,CAACS,OAAO,CAAC5C,UAAU,EAAEiC,IAAI,CAAC;MAE7B,IAAItB,UAAU,IAAIS,OAAO,CAACQ,GAAG,EAAE;QAC7B,IAAIO,GAAG,CAACW,KAAK,EAAE;UACbX,GAAG,CAACW,KAAK,CAACC,IAAI,CAAC,sBAAsB,EAAE,MAAM;YAC3CpB,OAAO,CAACqB,MAAM,CAAC,CAAC;UAClB,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,MAAM;YAAEC;UAAM,CAAC,GAAGd,GAAG;UACrBA,GAAG,CAACc,KAAK,GAAG,YAAa;YACvB,MAAMC,EAAE,GAAGD,KAAK,CAAC,GAAAlC,SAAO,CAAC;YACzBP,QAAQ,CAAC,MAAMmB,OAAO,CAACqB,MAAM,CAAC,CAAC,CAAC;YAChCb,GAAG,CAACc,KAAK,GAAGA,KAAK;YACjB,OAAOC,EAAE;UACX,CAAC;QACH;MACF;MAEA,IAAI,OAAOC,mBAAmB,KAAK,SAAS,IAAIA,mBAAmB,EAAE;QACnEhB,GAAG,CAACiB,KAAK,CAAC;UACRC,QAAQ,EAAE;YACRC,QAAQA,CAAA,EAAI;cACV,OAAO7C,QAAQ,CAAC;gBACdiB,QAAQ,EAAE6B,MAAM,CAACC,IAAI,CAAC,IAAI,EAAE5D,cAAc,CAAC;gBAC3C+B,OAAO,EAAE4B,MAAM,CAACC,IAAI,CAAC,IAAI,EAAE1D,aAAa,CAAC;gBACzC+B,KAAK,EAAE0B,MAAM,CAACC,IAAI,CAAC,IAAI,EAAElD,WAAW,CAAC;gBACrCwB,KAAK,EAAEyB,MAAM,CAACC,IAAI,CAAC,IAAI,EAAEtD,UAAU,CAAC;gBACpC6B,MAAM,EAAEwB,MAAM,CAACC,IAAI,CAAC,IAAI,EAAEpD,YAAY,CAAC;gBACvC4B,IAAI,EAAEuB,MAAM,CAACC,IAAI,CAAC,IAAI,EAAE/D,iBAAiB;cAC3C,CAAC,CAAC;YACJ;UACF;QACF,CAAC,CAAC;MACJ;IACF;IAEA,SAASgE,OAAOA,CAAA,EAAI;MAClBjC,KAAK,CAACmB,IAAI,CAAC,CAAC;IACd;IAEA,OAAO;MACLT,OAAO;MACPuB,OAAO;MACP/B,QAAQ;MACRC,OAAO;MACPE,KAAK;MACLC,KAAK;MACLC,MAAM;MACNC,IAAI;MACJC;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,OAAO,MAAMyB,OAAO,
|
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
|
-
|
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
|
-
|
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":
|
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":[]}
|