@vuetify/nightly 3.7.5-master.2024-12-11 → 3.7.5-master.2024-12-15
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/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +3306 -3010
- package/dist/json/importMap-labs.json +22 -14
- package/dist/json/importMap.json +134 -134
- package/dist/json/tags.json +84 -0
- package/dist/json/web-types.json +6104 -5163
- package/dist/vuetify-labs.css +3485 -3412
- package/dist/vuetify-labs.d.ts +1314 -1
- package/dist/vuetify-labs.esm.js +332 -8
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +332 -8
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1263 -1263
- package/dist/vuetify.d.ts +47 -45
- package/dist/vuetify.esm.js +10 -4
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +10 -4
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +5 -5
- package/dist/vuetify.min.js.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/mdi.mjs +2 -1
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.mts +47 -45
- package/lib/labs/VFileUpload/VFileUpload.css +74 -0
- package/lib/labs/VFileUpload/VFileUpload.mjs +241 -0
- package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -0
- package/lib/labs/VFileUpload/VFileUpload.sass +75 -0
- package/lib/labs/VFileUpload/VFileUploadItem.mjs +95 -0
- package/lib/labs/VFileUpload/VFileUploadItem.mjs.map +1 -0
- package/lib/labs/VFileUpload/_variables.scss +12 -0
- package/lib/labs/VFileUpload/index.d.mts +1365 -0
- package/lib/labs/VFileUpload/index.mjs +3 -0
- package/lib/labs/VFileUpload/index.mjs.map +1 -0
- package/lib/labs/VNumberInput/VNumberInput.mjs +7 -4
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/components.d.mts +1348 -37
- package/lib/labs/components.mjs +1 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/af.mjs +5 -0
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +5 -0
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +5 -0
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +5 -0
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +5 -0
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +5 -0
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +5 -0
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +5 -0
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +5 -0
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +5 -0
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +5 -0
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +5 -0
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +5 -0
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +5 -0
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +5 -0
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +5 -0
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +5 -0
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +5 -0
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +5 -0
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +5 -0
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +215 -0
- package/lib/locale/it.mjs +5 -0
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +5 -0
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/km.mjs +5 -0
- package/lib/locale/km.mjs.map +1 -1
- package/lib/locale/ko.mjs +5 -0
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +5 -0
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +5 -0
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +5 -0
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +5 -0
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +5 -0
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +5 -0
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +5 -0
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +5 -0
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +5 -0
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +5 -0
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +5 -0
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +5 -0
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +5 -0
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +5 -0
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +5 -0
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +5 -0
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +5 -0
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +5 -0
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +5 -0
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/package.json +1 -1
package/lib/entry-bundler.mjs
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.7.5-master.2024-12-
|
19
|
+
export const version = "3.7.5-master.2024-12-15";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.mjs";
|
package/lib/framework.mjs
CHANGED
package/lib/iconsets/mdi.mjs
CHANGED
@@ -45,7 +45,8 @@ const aliases = {
|
|
45
45
|
calendar: 'mdi-calendar',
|
46
46
|
treeviewCollapse: 'mdi-menu-down',
|
47
47
|
treeviewExpand: 'mdi-menu-right',
|
48
|
-
eyeDropper: 'mdi-eyedropper'
|
48
|
+
eyeDropper: 'mdi-eyedropper',
|
49
|
+
upload: 'mdi-cloud-upload'
|
49
50
|
};
|
50
51
|
const mdi = {
|
51
52
|
// Not using mergeProps here, functional components merge props by default (?)
|
package/lib/iconsets/mdi.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mdi.mjs","names":["VClassIcon","h","aliases","collapse","complete","cancel","close","delete","clear","success","info","warning","error","prev","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","first","last","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","mdi","component","props","class"],"sources":["../../src/iconsets/mdi.ts"],"sourcesContent":["// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n"],"mappings":"AAAA;AAAA,SACSA,UAAU,oCAEnB;AACA,SAASC,CAAC,QAAQ,KAAK;;AAEvB;;AAGA,MAAMC,OAAoB,GAAG;EAC3BC,QAAQ,EAAE,gBAAgB;EAC1BC,QAAQ,EAAE,WAAW;EACrBC,MAAM,EAAE,kBAAkB;EAC1BC,KAAK,EAAE,WAAW;EAClBC,MAAM,EAAE,kBAAkB;EAAE;EAC5BC,KAAK,EAAE,kBAAkB;EACzBC,OAAO,EAAE,kBAAkB;EAC3BC,IAAI,EAAE,iBAAiB;EACvBC,OAAO,EAAE,kBAAkB;EAC3BC,KAAK,EAAE,kBAAkB;EACzBC,IAAI,EAAE,kBAAkB;EACxBC,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE,qBAAqB;EACjCC,WAAW,EAAE,4BAA4B;EACzCC,qBAAqB,EAAE,eAAe;EACtCC,SAAS,EAAE,YAAY;EAAE;EACzBC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE,kBAAkB;EAC1BC,IAAI,EAAE,UAAU;EAChBC,QAAQ,EAAE,eAAe;EACzBC,QAAQ,EAAE,eAAe;EACzBC,OAAO,EAAE,qBAAqB;EAC9BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,YAAY;EAClBC,WAAW,EAAE,kBAAkB;EAC/BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAE,oBAAoB;EAChCC,OAAO,EAAE,YAAY;EACrBC,KAAK,EAAE,gBAAgB;EACvBC,IAAI,EAAE,eAAe;EACrBC,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,WAAW;EAClBC,QAAQ,EAAE,cAAc;EACxBC,gBAAgB,EAAE,eAAe;EACjCC,cAAc,EAAE,gBAAgB;EAChCC,UAAU,EAAE;
|
1
|
+
{"version":3,"file":"mdi.mjs","names":["VClassIcon","h","aliases","collapse","complete","cancel","close","delete","clear","success","info","warning","error","prev","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","first","last","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","upload","mdi","component","props","class"],"sources":["../../src/iconsets/mdi.ts"],"sourcesContent":["// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\n upload: 'mdi-cloud-upload',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n"],"mappings":"AAAA;AAAA,SACSA,UAAU,oCAEnB;AACA,SAASC,CAAC,QAAQ,KAAK;;AAEvB;;AAGA,MAAMC,OAAoB,GAAG;EAC3BC,QAAQ,EAAE,gBAAgB;EAC1BC,QAAQ,EAAE,WAAW;EACrBC,MAAM,EAAE,kBAAkB;EAC1BC,KAAK,EAAE,WAAW;EAClBC,MAAM,EAAE,kBAAkB;EAAE;EAC5BC,KAAK,EAAE,kBAAkB;EACzBC,OAAO,EAAE,kBAAkB;EAC3BC,IAAI,EAAE,iBAAiB;EACvBC,OAAO,EAAE,kBAAkB;EAC3BC,KAAK,EAAE,kBAAkB;EACzBC,IAAI,EAAE,kBAAkB;EACxBC,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE,qBAAqB;EACjCC,WAAW,EAAE,4BAA4B;EACzCC,qBAAqB,EAAE,eAAe;EACtCC,SAAS,EAAE,YAAY;EAAE;EACzBC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE,kBAAkB;EAC1BC,IAAI,EAAE,UAAU;EAChBC,QAAQ,EAAE,eAAe;EACzBC,QAAQ,EAAE,eAAe;EACzBC,OAAO,EAAE,qBAAqB;EAC9BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,YAAY;EAClBC,WAAW,EAAE,kBAAkB;EAC/BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAE,oBAAoB;EAChCC,OAAO,EAAE,YAAY;EACrBC,KAAK,EAAE,gBAAgB;EACvBC,IAAI,EAAE,eAAe;EACrBC,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,WAAW;EAClBC,QAAQ,EAAE,cAAc;EACxBC,gBAAgB,EAAE,eAAe;EACjCC,cAAc,EAAE,gBAAgB;EAChCC,UAAU,EAAE,gBAAgB;EAC5BC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,GAAY,GAAG;EACnB;EACAC,SAAS,EAAGC,KAAU,IAAK5C,CAAC,CAACD,UAAU,EAAE;IAAE,GAAG6C,KAAK;IAAEC,KAAK,EAAE;EAAM,CAAC;AACrE,CAAC;AAED,SAAS5C,OAAO,EAAEyC,GAAG","ignoreList":[]}
|
package/lib/index.d.mts
CHANGED
@@ -487,38 +487,36 @@ declare module 'vue' {
|
|
487
487
|
}
|
488
488
|
export interface GlobalComponents {
|
489
489
|
VApp: typeof import('vuetify/components')['VApp']
|
490
|
-
VAvatar: typeof import('vuetify/components')['VAvatar']
|
491
|
-
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
492
490
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
493
491
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
494
492
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
493
|
+
VAlert: typeof import('vuetify/components')['VAlert']
|
494
|
+
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
495
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
496
|
+
VAvatar: typeof import('vuetify/components')['VAvatar']
|
497
|
+
VBadge: typeof import('vuetify/components')['VBadge']
|
495
498
|
VBanner: typeof import('vuetify/components')['VBanner']
|
496
499
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
497
500
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
498
|
-
VBadge: typeof import('vuetify/components')['VBadge']
|
499
|
-
VAlert: typeof import('vuetify/components')['VAlert']
|
500
|
-
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
501
501
|
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
502
502
|
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
503
503
|
VBtn: typeof import('vuetify/components')['VBtn']
|
504
504
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
505
505
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
506
506
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
507
|
-
|
507
|
+
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
508
508
|
VCard: typeof import('vuetify/components')['VCard']
|
509
509
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
510
510
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
511
511
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
512
512
|
VCardText: typeof import('vuetify/components')['VCardText']
|
513
513
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
514
|
-
|
515
|
-
|
516
|
-
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
517
|
-
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
514
|
+
VChip: typeof import('vuetify/components')['VChip']
|
515
|
+
VCode: typeof import('vuetify/components')['VCode']
|
518
516
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
519
517
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
520
|
-
|
521
|
-
|
518
|
+
VCombobox: typeof import('vuetify/components')['VCombobox']
|
519
|
+
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
522
520
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
523
521
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
524
522
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
@@ -527,38 +525,36 @@ declare module 'vue' {
|
|
527
525
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
528
526
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
529
527
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
530
|
-
VCombobox: typeof import('vuetify/components')['VCombobox']
|
531
|
-
VCounter: typeof import('vuetify/components')['VCounter']
|
532
|
-
VDivider: typeof import('vuetify/components')['VDivider']
|
533
|
-
VFab: typeof import('vuetify/components')['VFab']
|
534
528
|
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
535
529
|
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
536
530
|
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
537
531
|
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
538
532
|
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
539
533
|
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
534
|
+
VCounter: typeof import('vuetify/components')['VCounter']
|
535
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
536
|
+
VDivider: typeof import('vuetify/components')['VDivider']
|
540
537
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
541
538
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
542
539
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
543
540
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
544
|
-
|
541
|
+
VFab: typeof import('vuetify/components')['VFab']
|
545
542
|
VField: typeof import('vuetify/components')['VField']
|
546
543
|
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
544
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
547
545
|
VFooter: typeof import('vuetify/components')['VFooter']
|
548
|
-
VDialog: typeof import('vuetify/components')['VDialog']
|
549
|
-
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
550
546
|
VIcon: typeof import('vuetify/components')['VIcon']
|
551
547
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
552
548
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
553
549
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
554
550
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
555
551
|
VImg: typeof import('vuetify/components')['VImg']
|
552
|
+
VInput: typeof import('vuetify/components')['VInput']
|
556
553
|
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
557
|
-
VKbd: typeof import('vuetify/components')['VKbd']
|
558
554
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
559
555
|
VItem: typeof import('vuetify/components')['VItem']
|
556
|
+
VKbd: typeof import('vuetify/components')['VKbd']
|
560
557
|
VLabel: typeof import('vuetify/components')['VLabel']
|
561
|
-
VInput: typeof import('vuetify/components')['VInput']
|
562
558
|
VList: typeof import('vuetify/components')['VList']
|
563
559
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
564
560
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -569,65 +565,65 @@ declare module 'vue' {
|
|
569
565
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
570
566
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
571
567
|
VMenu: typeof import('vuetify/components')['VMenu']
|
572
|
-
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
573
|
-
VMain: typeof import('vuetify/components')['VMain']
|
574
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
575
568
|
VMessages: typeof import('vuetify/components')['VMessages']
|
576
|
-
|
577
|
-
|
569
|
+
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
570
|
+
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
571
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
572
|
+
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
578
573
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
579
574
|
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
580
|
-
|
575
|
+
VPagination: typeof import('vuetify/components')['VPagination']
|
576
|
+
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
581
577
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
578
|
+
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
579
|
+
VRating: typeof import('vuetify/components')['VRating']
|
582
580
|
VSelect: typeof import('vuetify/components')['VSelect']
|
583
581
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
584
582
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
583
|
+
VSheet: typeof import('vuetify/components')['VSheet']
|
584
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
585
585
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
586
586
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
587
|
-
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
588
587
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
589
|
-
VSheet: typeof import('vuetify/components')['VSheet']
|
590
588
|
VStepper: typeof import('vuetify/components')['VStepper']
|
591
589
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
592
590
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
593
591
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
594
592
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
595
593
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
596
|
-
|
594
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
595
|
+
VTable: typeof import('vuetify/components')['VTable']
|
597
596
|
VTab: typeof import('vuetify/components')['VTab']
|
598
597
|
VTabs: typeof import('vuetify/components')['VTabs']
|
599
598
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
600
599
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
601
|
-
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
602
|
-
VSwitch: typeof import('vuetify/components')['VSwitch']
|
603
600
|
VTextarea: typeof import('vuetify/components')['VTextarea']
|
604
|
-
VTable: typeof import('vuetify/components')['VTable']
|
605
|
-
VTimeline: typeof import('vuetify/components')['VTimeline']
|
606
|
-
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
607
601
|
VTextField: typeof import('vuetify/components')['VTextField']
|
602
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
608
603
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
609
604
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
610
605
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
606
|
+
VTimeline: typeof import('vuetify/components')['VTimeline']
|
607
|
+
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
608
|
+
VTooltip: typeof import('vuetify/components')['VTooltip']
|
611
609
|
VWindow: typeof import('vuetify/components')['VWindow']
|
612
610
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
613
|
-
|
611
|
+
VSwitch: typeof import('vuetify/components')['VSwitch']
|
614
612
|
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
615
|
-
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
616
613
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
614
|
+
VForm: typeof import('vuetify/components')['VForm']
|
617
615
|
VContainer: typeof import('vuetify/components')['VContainer']
|
618
616
|
VCol: typeof import('vuetify/components')['VCol']
|
619
617
|
VRow: typeof import('vuetify/components')['VRow']
|
620
618
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
621
|
-
VForm: typeof import('vuetify/components')['VForm']
|
622
619
|
VHover: typeof import('vuetify/components')['VHover']
|
623
|
-
VLazy: typeof import('vuetify/components')['VLazy']
|
624
620
|
VLayout: typeof import('vuetify/components')['VLayout']
|
625
621
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
622
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
626
623
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
627
|
-
|
624
|
+
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
628
625
|
VParallax: typeof import('vuetify/components')['VParallax']
|
629
626
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
630
|
-
VRadio: typeof import('vuetify/components')['VRadio']
|
631
627
|
VResponsive: typeof import('vuetify/components')['VResponsive']
|
632
628
|
VSparkline: typeof import('vuetify/components')['VSparkline']
|
633
629
|
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
@@ -650,24 +646,30 @@ declare module 'vue' {
|
|
650
646
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
651
647
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
652
648
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
649
|
+
VRadio: typeof import('vuetify/components')['VRadio']
|
650
|
+
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
651
|
+
VMain: typeof import('vuetify/components')['VMain']
|
652
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
653
|
+
VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
|
654
|
+
VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
|
653
655
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
654
656
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
655
|
-
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
656
657
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
657
658
|
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
658
659
|
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
659
660
|
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
660
661
|
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
661
662
|
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
662
|
-
|
663
|
-
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
664
|
-
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
663
|
+
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
665
664
|
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
666
665
|
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
667
666
|
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
668
667
|
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
669
668
|
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
670
669
|
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
670
|
+
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
671
|
+
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
672
|
+
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
671
673
|
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
|
672
674
|
VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
|
673
675
|
VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
|
@@ -0,0 +1,74 @@
|
|
1
|
+
.v-file-upload {
|
2
|
+
padding: 64px 0;
|
3
|
+
flex-direction: column;
|
4
|
+
justify-content: center;
|
5
|
+
align-items: center;
|
6
|
+
position: relative;
|
7
|
+
}
|
8
|
+
.v-file-upload.v-sheet {
|
9
|
+
display: flex;
|
10
|
+
border-radius: 4px;
|
11
|
+
border-style: dashed;
|
12
|
+
border-width: 2px;
|
13
|
+
}
|
14
|
+
.v-file-upload.v-file-upload--density-compact {
|
15
|
+
padding: 32px 0;
|
16
|
+
flex-direction: row;
|
17
|
+
gap: 1rem;
|
18
|
+
}
|
19
|
+
.v-file-upload .v-overlay__scrim {
|
20
|
+
pointer-events: none;
|
21
|
+
}
|
22
|
+
.v-file-upload--disabled {
|
23
|
+
pointer-events: none;
|
24
|
+
opacity: var(--v-disabled-opacity);
|
25
|
+
}
|
26
|
+
.v-file-upload--dragging > * {
|
27
|
+
pointer-events: none;
|
28
|
+
}
|
29
|
+
.v-file-upload--clickable {
|
30
|
+
cursor: pointer;
|
31
|
+
}
|
32
|
+
.v-file-upload input[type=file] {
|
33
|
+
left: 0;
|
34
|
+
opacity: 0;
|
35
|
+
position: absolute;
|
36
|
+
cursor: pointer;
|
37
|
+
top: 0;
|
38
|
+
z-index: -1;
|
39
|
+
}
|
40
|
+
|
41
|
+
.v-file-upload-title {
|
42
|
+
font-size: 1.5rem;
|
43
|
+
font-weight: 600;
|
44
|
+
}
|
45
|
+
|
46
|
+
.v-file-upload-icon {
|
47
|
+
opacity: var(--v-medium-emphasis-opacity);
|
48
|
+
font-size: 3rem;
|
49
|
+
margin-bottom: 1rem;
|
50
|
+
}
|
51
|
+
.v-file-upload--density-comfortable .v-file-upload-icon {
|
52
|
+
font-size: 2.5rem;
|
53
|
+
margin-bottom: 0.5rem;
|
54
|
+
}
|
55
|
+
.v-file-upload--density-compact .v-file-upload-icon {
|
56
|
+
font-size: 2rem;
|
57
|
+
margin-bottom: 0rem;
|
58
|
+
}
|
59
|
+
|
60
|
+
.v-file-upload-divider {
|
61
|
+
align-items: center;
|
62
|
+
display: flex;
|
63
|
+
margin: 32px 0;
|
64
|
+
justify-content: center;
|
65
|
+
width: 100%;
|
66
|
+
}
|
67
|
+
|
68
|
+
.v-file-upload-items {
|
69
|
+
margin: 16px 0;
|
70
|
+
}
|
71
|
+
|
72
|
+
.v-file-upload-item:not(:first-child) {
|
73
|
+
margin-top: 8px;
|
74
|
+
}
|
@@ -0,0 +1,241 @@
|
|
1
|
+
import { resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
|
2
|
+
// Styles
|
3
|
+
import "./VFileUpload.css";
|
4
|
+
|
5
|
+
// Components
|
6
|
+
import { VFileUploadItem } from "./VFileUploadItem.mjs";
|
7
|
+
import { VBtn } from "../../components/VBtn/VBtn.mjs";
|
8
|
+
import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.mjs";
|
9
|
+
import { makeVDividerProps, VDivider } from "../../components/VDivider/VDivider.mjs";
|
10
|
+
import { VIcon } from "../../components/VIcon/VIcon.mjs";
|
11
|
+
import { VOverlay } from "../../components/VOverlay/VOverlay.mjs";
|
12
|
+
import { makeVSheetProps, VSheet } from "../../components/VSheet/VSheet.mjs"; // Composables
|
13
|
+
import { makeDelayProps } from "../../composables/delay.mjs";
|
14
|
+
import { makeDensityProps, useDensity } from "../../composables/density.mjs";
|
15
|
+
import { IconValue } from "../../composables/icons.mjs";
|
16
|
+
import { useLocale } from "../../composables/locale.mjs";
|
17
|
+
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
18
|
+
import { onMounted, onUnmounted, ref, shallowRef } from 'vue';
|
19
|
+
import { filterInputAttrs, genericComponent, only, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
|
20
|
+
export const makeVFileUploadProps = propsFactory({
|
21
|
+
browseText: {
|
22
|
+
type: String,
|
23
|
+
default: '$vuetify.fileUpload.browse'
|
24
|
+
},
|
25
|
+
dividerText: {
|
26
|
+
type: String,
|
27
|
+
default: '$vuetify.fileUpload.divider'
|
28
|
+
},
|
29
|
+
title: {
|
30
|
+
type: String,
|
31
|
+
default: '$vuetify.fileUpload.title'
|
32
|
+
},
|
33
|
+
subtitle: String,
|
34
|
+
icon: {
|
35
|
+
type: IconValue,
|
36
|
+
default: '$upload'
|
37
|
+
},
|
38
|
+
modelValue: {
|
39
|
+
type: [Array, Object],
|
40
|
+
default: null,
|
41
|
+
validator: val => {
|
42
|
+
return wrapInArray(val).every(v => v != null && typeof v === 'object');
|
43
|
+
}
|
44
|
+
},
|
45
|
+
clearable: Boolean,
|
46
|
+
disabled: Boolean,
|
47
|
+
hideBrowse: Boolean,
|
48
|
+
multiple: Boolean,
|
49
|
+
scrim: {
|
50
|
+
type: [Boolean, String],
|
51
|
+
default: true
|
52
|
+
},
|
53
|
+
showSize: Boolean,
|
54
|
+
name: String,
|
55
|
+
...makeDelayProps(),
|
56
|
+
...makeDensityProps(),
|
57
|
+
...only(makeVDividerProps({
|
58
|
+
length: 150
|
59
|
+
}), ['length', 'thickness', 'opacity']),
|
60
|
+
...makeVSheetProps()
|
61
|
+
}, 'VFileUpload');
|
62
|
+
export const VFileUpload = genericComponent()({
|
63
|
+
name: 'VFileUpload',
|
64
|
+
inheritAttrs: false,
|
65
|
+
props: makeVFileUploadProps(),
|
66
|
+
emits: {
|
67
|
+
'update:modelValue': files => true
|
68
|
+
},
|
69
|
+
setup(props, _ref) {
|
70
|
+
let {
|
71
|
+
attrs,
|
72
|
+
slots
|
73
|
+
} = _ref;
|
74
|
+
const {
|
75
|
+
t
|
76
|
+
} = useLocale();
|
77
|
+
const {
|
78
|
+
densityClasses
|
79
|
+
} = useDensity(props);
|
80
|
+
const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
|
81
|
+
const dragOver = shallowRef(false);
|
82
|
+
const vSheetRef = ref(null);
|
83
|
+
const inputRef = ref(null);
|
84
|
+
onMounted(() => {
|
85
|
+
vSheetRef.value?.$el.addEventListener('dragover', onDragOver);
|
86
|
+
vSheetRef.value?.$el.addEventListener('drop', onDrop);
|
87
|
+
});
|
88
|
+
onUnmounted(() => {
|
89
|
+
vSheetRef.value?.$el.removeEventListener('dragover', onDragOver);
|
90
|
+
vSheetRef.value?.$el.removeEventListener('drop', onDrop);
|
91
|
+
});
|
92
|
+
function onDragOver(e) {
|
93
|
+
e.preventDefault();
|
94
|
+
e.stopImmediatePropagation();
|
95
|
+
dragOver.value = true;
|
96
|
+
}
|
97
|
+
function onDragLeave(e) {
|
98
|
+
e.preventDefault();
|
99
|
+
dragOver.value = false;
|
100
|
+
}
|
101
|
+
function onDrop(e) {
|
102
|
+
e.preventDefault();
|
103
|
+
e.stopImmediatePropagation();
|
104
|
+
dragOver.value = false;
|
105
|
+
const files = Array.from(e.dataTransfer?.files ?? []);
|
106
|
+
if (!files.length) return;
|
107
|
+
if (!props.multiple) {
|
108
|
+
model.value = [files[0]];
|
109
|
+
return;
|
110
|
+
}
|
111
|
+
const array = model.value.slice();
|
112
|
+
for (const file of files) {
|
113
|
+
if (!array.some(f => f.name === file.name)) {
|
114
|
+
array.push(file);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
model.value = array;
|
118
|
+
}
|
119
|
+
function onClick() {
|
120
|
+
inputRef.value?.click();
|
121
|
+
}
|
122
|
+
function onClickRemove(index) {
|
123
|
+
model.value = model.value.filter((_, i) => i !== index);
|
124
|
+
if (model.value.length > 0 || !inputRef.value) return;
|
125
|
+
inputRef.value.value = '';
|
126
|
+
}
|
127
|
+
useRender(() => {
|
128
|
+
const hasTitle = !!(slots.title || props.title);
|
129
|
+
const hasIcon = !!(slots.icon || props.icon);
|
130
|
+
const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'));
|
131
|
+
const cardProps = VSheet.filterProps(props);
|
132
|
+
const dividerProps = VDivider.filterProps(props);
|
133
|
+
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
134
|
+
const inputNode = _createVNode("input", _mergeProps({
|
135
|
+
"ref": inputRef,
|
136
|
+
"type": "file",
|
137
|
+
"disabled": props.disabled,
|
138
|
+
"multiple": props.multiple,
|
139
|
+
"name": props.name,
|
140
|
+
"onChange": e => {
|
141
|
+
if (!e.target) return;
|
142
|
+
const target = e.target;
|
143
|
+
model.value = [...(target.files ?? [])];
|
144
|
+
}
|
145
|
+
}, inputAttrs), null);
|
146
|
+
return _createVNode(_Fragment, null, [_createVNode(VSheet, _mergeProps({
|
147
|
+
"ref": vSheetRef
|
148
|
+
}, cardProps, {
|
149
|
+
"class": ['v-file-upload', {
|
150
|
+
'v-file-upload--clickable': !hasBrowse,
|
151
|
+
'v-file-upload--disabled': props.disabled,
|
152
|
+
'v-file-upload--dragging': dragOver.value
|
153
|
+
}, densityClasses.value],
|
154
|
+
"onDragleave": onDragLeave,
|
155
|
+
"onDragover": onDragOver,
|
156
|
+
"onDrop": onDrop,
|
157
|
+
"onClick": !hasBrowse ? onClick : undefined
|
158
|
+
}, rootAttrs), {
|
159
|
+
default: () => [hasIcon && _createVNode("div", {
|
160
|
+
"key": "icon",
|
161
|
+
"class": "v-file-upload-icon"
|
162
|
+
}, [!slots.icon ? _createVNode(VIcon, {
|
163
|
+
"key": "icon-icon",
|
164
|
+
"icon": props.icon
|
165
|
+
}, null) : _createVNode(VDefaultsProvider, {
|
166
|
+
"key": "icon-defaults",
|
167
|
+
"defaults": {
|
168
|
+
VIcon: {
|
169
|
+
icon: props.icon
|
170
|
+
}
|
171
|
+
}
|
172
|
+
}, {
|
173
|
+
default: () => [slots.icon()]
|
174
|
+
})]), hasTitle && _createVNode("div", {
|
175
|
+
"key": "title",
|
176
|
+
"class": "v-file-upload-title"
|
177
|
+
}, [slots.title?.() ?? t(props.title)]), props.density === 'default' && _createVNode(_Fragment, null, [_createVNode("div", {
|
178
|
+
"key": "upload-divider",
|
179
|
+
"class": "v-file-upload-divider"
|
180
|
+
}, [slots.divider?.() ?? _createVNode(VDivider, dividerProps, {
|
181
|
+
default: () => [t(props.dividerText)]
|
182
|
+
})]), hasBrowse && _createVNode(_Fragment, null, [!slots.browse ? _createVNode(VBtn, {
|
183
|
+
"readonly": props.disabled,
|
184
|
+
"size": "large",
|
185
|
+
"text": t(props.browseText),
|
186
|
+
"variant": "tonal",
|
187
|
+
"onClick": onClick
|
188
|
+
}, null) : _createVNode(VDefaultsProvider, {
|
189
|
+
"defaults": {
|
190
|
+
VBtn: {
|
191
|
+
readonly: props.disabled,
|
192
|
+
size: 'large',
|
193
|
+
text: t(props.browseText),
|
194
|
+
variant: 'tonal'
|
195
|
+
}
|
196
|
+
}
|
197
|
+
}, {
|
198
|
+
default: () => [slots.browse({
|
199
|
+
props: {
|
200
|
+
onClick
|
201
|
+
}
|
202
|
+
})]
|
203
|
+
})]), props.subtitle && _createVNode("div", {
|
204
|
+
"class": "v-file-upload-subtitle"
|
205
|
+
}, [props.subtitle])]), _createVNode(VOverlay, {
|
206
|
+
"model-value": dragOver.value,
|
207
|
+
"contained": true,
|
208
|
+
"scrim": props.scrim
|
209
|
+
}, null), slots.input?.({
|
210
|
+
inputNode
|
211
|
+
}) ?? inputNode]
|
212
|
+
}), model.value.length > 0 && _createVNode("div", {
|
213
|
+
"class": "v-file-upload-items"
|
214
|
+
}, [model.value.map((file, i) => {
|
215
|
+
const slotProps = {
|
216
|
+
file,
|
217
|
+
props: {
|
218
|
+
'onClick:remove': () => onClickRemove(i)
|
219
|
+
}
|
220
|
+
};
|
221
|
+
return _createVNode(VDefaultsProvider, {
|
222
|
+
"key": i,
|
223
|
+
"defaults": {
|
224
|
+
VFileUploadItem: {
|
225
|
+
file,
|
226
|
+
clearable: props.clearable,
|
227
|
+
disabled: props.disabled,
|
228
|
+
showSize: props.showSize
|
229
|
+
}
|
230
|
+
}
|
231
|
+
}, {
|
232
|
+
default: () => [slots.item?.(slotProps) ?? _createVNode(VFileUploadItem, {
|
233
|
+
"key": i,
|
234
|
+
"onClick:remove": () => onClickRemove(i)
|
235
|
+
}, slots)]
|
236
|
+
});
|
237
|
+
})])]);
|
238
|
+
});
|
239
|
+
}
|
240
|
+
});
|
241
|
+
//# sourceMappingURL=VFileUpload.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"VFileUpload.mjs","names":["VFileUploadItem","VBtn","VDefaultsProvider","makeVDividerProps","VDivider","VIcon","VOverlay","makeVSheetProps","VSheet","makeDelayProps","makeDensityProps","useDensity","IconValue","useLocale","useProxiedModel","onMounted","onUnmounted","ref","shallowRef","filterInputAttrs","genericComponent","only","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","dragOver","vSheetRef","inputRef","value","$el","addEventListener","onDragOver","onDrop","removeEventListener","e","preventDefault","stopImmediatePropagation","onDragLeave","from","dataTransfer","array","slice","file","some","f","push","onClick","click","onClickRemove","index","filter","_","i","hasTitle","hasIcon","hasBrowse","browse","density","cardProps","filterProps","dividerProps","rootAttrs","inputAttrs","inputNode","_createVNode","_mergeProps","target","_Fragment","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 { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { onMounted, onUnmounted, ref, shallowRef } from 'vue'\nimport { filterInputAttrs, genericComponent, only, 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 ...only(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 dragOver = shallowRef(false)\n const vSheetRef = ref<InstanceType<typeof VSheet> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n\n onMounted(() => {\n vSheetRef.value?.$el.addEventListener('dragover', onDragOver)\n vSheetRef.value?.$el.addEventListener('drop', onDrop)\n })\n\n onUnmounted(() => {\n vSheetRef.value?.$el.removeEventListener('dragover', onDragOver)\n vSheetRef.value?.$el.removeEventListener('drop', onDrop)\n })\n\n function onDragOver (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n dragOver.value = true\n }\n\n function onDragLeave (e: DragEvent) {\n e.preventDefault()\n dragOver.value = false\n }\n\n function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n dragOver.value = false\n\n const files = Array.from(e.dataTransfer?.files ?? [])\n\n if (!files.length) return\n\n if (!props.multiple) {\n model.value = [files[0]]\n\n return\n }\n\n const array = model.value.slice()\n\n for (const file of files) {\n if (!array.some(f => f.name === file.name)) {\n array.push(file)\n }\n }\n\n model.value = array\n }\n\n function onClick () {\n inputRef.value?.click()\n }\n\n function onClickRemove (index: number) {\n model.value = model.value.filter((_, i) => i !== index)\n\n if (model.value.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': dragOver.value,\n },\n densityClasses.value,\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 model-value={ dragOver.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":[]}
|