@vuetify/nightly 3.9.0-dev.2025-07-08 → 3.9.0-dev.2025-07-16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/dist/json/attributes.json +3826 -3806
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +168 -168
  5. package/dist/json/tags.json +5 -0
  6. package/dist/json/web-types.json +6992 -6922
  7. package/dist/vuetify-labs.cjs +216 -27
  8. package/dist/vuetify-labs.css +4659 -4657
  9. package/dist/vuetify-labs.d.ts +119 -57
  10. package/dist/vuetify-labs.esm.js +216 -27
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +216 -27
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +178 -18
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +4036 -4034
  17. package/dist/vuetify.d.ts +109 -57
  18. package/dist/vuetify.esm.js +178 -18
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +178 -18
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +718 -696
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +1 -0
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VCombobox/VCombobox.js +1 -0
  28. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  29. package/lib/components/VFileInput/VFileInput.d.ts +15 -0
  30. package/lib/components/VFileInput/VFileInput.js +38 -9
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VList/VList.js +2 -1
  33. package/lib/components/VList/VList.js.map +1 -1
  34. package/lib/components/VList/VListItem.js +7 -1
  35. package/lib/components/VList/VListItem.js.map +1 -1
  36. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  37. package/lib/components/VProgressLinear/VProgressLinear.d.ts +75 -0
  38. package/lib/components/VProgressLinear/VProgressLinear.js +32 -6
  39. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  40. package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
  41. package/lib/components/VProgressLinear/chunks.d.ts +55 -0
  42. package/lib/components/VProgressLinear/chunks.js +62 -0
  43. package/lib/components/VProgressLinear/chunks.js.map +1 -0
  44. package/lib/components/VSelect/VSelect.js +1 -0
  45. package/lib/components/VSelect/VSelect.js.map +1 -1
  46. package/lib/composables/fileFilter.d.ts +18 -0
  47. package/lib/composables/fileFilter.js +38 -0
  48. package/lib/composables/fileFilter.js.map +1 -0
  49. package/lib/entry-bundler.js +1 -1
  50. package/lib/framework.d.ts +57 -57
  51. package/lib/framework.js +1 -1
  52. package/lib/labs/VFileUpload/VFileUpload.d.ts +15 -0
  53. package/lib/labs/VFileUpload/VFileUpload.js +39 -9
  54. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  55. package/package.json +1 -1
@@ -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 | (() => import("vue").VNodeChild) | {
329
335
  browse?: ((arg: {
@@ -386,8 +392,10 @@ export declare const VFileUpload: {
386
392
  "v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
387
393
  } & {
388
394
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
395
+ onRejected?: ((files: File[]) => any) | undefined;
389
396
  }, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
390
397
  'update:modelValue': (files: File[]) => true;
398
+ rejected: (files: File[]) => true;
391
399
  }, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
392
400
  length: string | number;
393
401
  style: import("vue").StyleValue;
@@ -470,6 +478,7 @@ export declare const VFileUpload: {
470
478
  openDelay?: string | number | undefined;
471
479
  thickness?: string | number | undefined;
472
480
  subtitle?: string | undefined;
481
+ filterByType?: string | undefined;
473
482
  } & {
474
483
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
475
484
  browse?: ((arg: {
@@ -532,6 +541,7 @@ export declare const VFileUpload: {
532
541
  "v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
533
542
  } & {
534
543
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
544
+ onRejected?: ((files: File[]) => any) | undefined;
535
545
  }, {}, {}, {}, {}, {
536
546
  length: string | number;
537
547
  style: import("vue").StyleValue;
@@ -592,6 +602,7 @@ export declare const VFileUpload: {
592
602
  openDelay?: string | number | undefined;
593
603
  thickness?: string | number | undefined;
594
604
  subtitle?: string | undefined;
605
+ filterByType?: string | undefined;
595
606
  } & {
596
607
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
597
608
  browse?: ((arg: {
@@ -654,8 +665,10 @@ export declare const VFileUpload: {
654
665
  "v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
655
666
  } & {
656
667
  "onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
668
+ onRejected?: ((files: File[]) => any) | undefined;
657
669
  }, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
658
670
  'update:modelValue': (files: File[]) => true;
671
+ rejected: (files: File[]) => true;
659
672
  }, string, {
660
673
  length: string | number;
661
674
  style: import("vue").StyleValue;
@@ -739,6 +752,7 @@ export declare const VFileUpload: {
739
752
  };
740
753
  closeDelay: (StringConstructor | NumberConstructor)[];
741
754
  openDelay: (StringConstructor | NumberConstructor)[];
755
+ filterByType: StringConstructor;
742
756
  browseText: {
743
757
  type: StringConstructor;
744
758
  default: string;
@@ -817,6 +831,7 @@ export declare const VFileUpload: {
817
831
  };
818
832
  closeDelay: (StringConstructor | NumberConstructor)[];
819
833
  openDelay: (StringConstructor | NumberConstructor)[];
834
+ filterByType: StringConstructor;
820
835
  browseText: {
821
836
  type: StringConstructor;
822
837
  default: string;
@@ -13,6 +13,7 @@ import { makeVSheetProps, VSheet } from "../../components/VSheet/VSheet.js"; //
13
13
  import { makeDelayProps } from "../../composables/delay.js";
14
14
  import { makeDensityProps, useDensity } from "../../composables/density.js";
15
15
  import { useFileDrop } from "../../composables/fileDrop.js";
16
+ import { makeFileFilterProps, useFileFilter } from "../../composables/fileFilter.js";
16
17
  import { IconValue } from "../../composables/icons.js";
17
18
  import { useLocale } from "../../composables/locale.js";
18
19
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
@@ -53,6 +54,7 @@ export const makeVFileUploadProps = propsFactory({
53
54
  },
54
55
  showSize: Boolean,
55
56
  name: String,
57
+ ...makeFileFilterProps(),
56
58
  ...makeDelayProps(),
57
59
  ...makeDensityProps(),
58
60
  ...pick(makeVDividerProps({
@@ -65,11 +67,13 @@ export const VFileUpload = genericComponent()({
65
67
  inheritAttrs: false,
66
68
  props: makeVFileUploadProps(),
67
69
  emits: {
68
- 'update:modelValue': files => true
70
+ 'update:modelValue': files => true,
71
+ rejected: files => true
69
72
  },
70
73
  setup(props, _ref) {
71
74
  let {
72
75
  attrs,
76
+ emit,
73
77
  slots
74
78
  } = _ref;
75
79
  const {
@@ -78,6 +82,9 @@ export const VFileUpload = genericComponent()({
78
82
  const {
79
83
  densityClasses
80
84
  } = useDensity(props);
85
+ const {
86
+ filterAccepted
87
+ } = useFileFilter(props);
81
88
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
82
89
  const isDragging = shallowRef(false);
83
90
  const vSheetRef = ref(null);
@@ -99,14 +106,38 @@ export const VFileUpload = genericComponent()({
99
106
  e.stopImmediatePropagation();
100
107
  isDragging.value = false;
101
108
  if (!inputRef.value) return;
109
+ const allDroppedFiles = await handleDrop(e);
110
+ selectAccepted(allDroppedFiles);
111
+ }
112
+ function onFileSelection(e) {
113
+ if (!e.target || e.repack) return; // prevent loop
114
+
115
+ if (!props.filterByType) {
116
+ const target = e.target;
117
+ model.value = [...(target.files ?? [])];
118
+ } else {
119
+ selectAccepted([...e.target.files]);
120
+ }
121
+ }
122
+ function selectAccepted(files) {
102
123
  const dataTransfer = new DataTransfer();
103
- for (const file of await handleDrop(e)) {
124
+ const {
125
+ accepted,
126
+ rejected
127
+ } = filterAccepted(files);
128
+ if (rejected.length) {
129
+ emit('rejected', rejected);
130
+ }
131
+ for (const file of accepted) {
104
132
  dataTransfer.items.add(file);
105
133
  }
106
134
  inputRef.value.files = dataTransfer.files;
107
- inputRef.value.dispatchEvent(new Event('change', {
135
+ model.value = [...dataTransfer.files];
136
+ const event = new Event('change', {
108
137
  bubbles: true
109
- }));
138
+ });
139
+ event.repack = true;
140
+ inputRef.value.dispatchEvent(event);
110
141
  }
111
142
  function onClick() {
112
143
  inputRef.value?.click();
@@ -124,17 +155,16 @@ export const VFileUpload = genericComponent()({
124
155
  const cardProps = VSheet.filterProps(props);
125
156
  const dividerProps = VDivider.filterProps(props);
126
157
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
158
+ const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
159
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
127
160
  const inputNode = _createElementVNode("input", _mergeProps({
128
161
  "ref": inputRef,
129
162
  "type": "file",
163
+ "accept": inputAccept,
130
164
  "disabled": props.disabled,
131
165
  "multiple": props.multiple,
132
166
  "name": props.name,
133
- "onChange": e => {
134
- if (!e.target) return;
135
- const target = e.target;
136
- model.value = [...(target.files ?? [])];
137
- }
167
+ "onChange": onFileSelection
138
168
  }, inputAttrs), null);
139
169
  return _createElementVNode(_Fragment, null, [_createVNode(VSheet, _mergeProps({
140
170
  "ref": vSheetRef
@@ -1 +1 @@
1
- {"version":3,"file":"VFileUpload.js","names":["VFileUploadItem","VBtn","VDefaultsProvider","makeVDividerProps","VDivider","VIcon","VOverlay","makeVSheetProps","VSheet","makeDelayProps","makeDensityProps","useDensity","useFileDrop","IconValue","useLocale","useProxiedModel","ref","shallowRef","filterInputAttrs","genericComponent","pick","propsFactory","useRender","wrapInArray","makeVFileUploadProps","browseText","type","String","default","dividerText","title","subtitle","icon","modelValue","Array","Object","validator","val","every","v","clearable","Boolean","disabled","hideBrowse","multiple","scrim","showSize","name","length","VFileUpload","inheritAttrs","props","emits","files","setup","_ref","attrs","slots","t","densityClasses","model","isArray","isDragging","vSheetRef","inputRef","handleDrop","onDragover","e","preventDefault","stopImmediatePropagation","value","onDragleave","onDrop","dataTransfer","DataTransfer","file","items","add","dispatchEvent","Event","bubbles","onClick","click","onClickRemove","index","newValue","filter","_","i","hasTitle","hasIcon","hasBrowse","browse","density","cardProps","filterProps","dividerProps","rootAttrs","inputAttrs","inputNode","_createElementVNode","_mergeProps","target","_Fragment","_createVNode","class","style","undefined","divider","readonly","size","text","variant","input","map","slotProps","onClick:remove","item"],"sources":["../../../src/labs/VFileUpload/VFileUpload.tsx"],"sourcesContent":["// Styles\nimport './VFileUpload.sass'\n\n// Components\nimport { VFileUploadItem } from './VFileUploadItem'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVDividerProps, VDivider } from '@/components/VDivider/VDivider'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { makeDelayProps } from '@/composables/delay'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, shallowRef } from 'vue'\nimport { filterInputAttrs, genericComponent, pick, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\nexport type VFileUploadSlots = {\n browse: {\n props: { onClick: (e: MouseEvent) => void }\n }\n default: never\n icon: never\n input: {\n inputNode: VNode\n }\n item: {\n file: File\n props: { 'onClick:remove': () => void }\n }\n title: never\n divider: never\n}\n\nexport const makeVFileUploadProps = propsFactory({\n browseText: {\n type: String,\n default: '$vuetify.fileUpload.browse',\n },\n dividerText: {\n type: String,\n default: '$vuetify.fileUpload.divider',\n },\n title: {\n type: String,\n default: '$vuetify.fileUpload.title',\n },\n subtitle: String,\n icon: {\n type: IconValue,\n default: '$upload',\n },\n modelValue: {\n type: [Array, Object] as PropType<File[] | File>,\n default: null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n clearable: Boolean,\n disabled: Boolean,\n hideBrowse: Boolean,\n multiple: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n showSize: Boolean,\n name: String,\n\n ...makeDelayProps(),\n ...makeDensityProps(),\n ...pick(makeVDividerProps({\n length: 150,\n }), ['length', 'thickness', 'opacity']),\n ...makeVSheetProps(),\n}, 'VFileUpload')\n\nexport const VFileUpload = genericComponent<VFileUploadSlots>()({\n name: 'VFileUpload',\n\n inheritAttrs: false,\n\n props: makeVFileUploadProps(),\n\n emits: {\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { t } = useLocale()\n const { densityClasses } = useDensity(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : val[0],\n )\n\n const isDragging = shallowRef(false)\n const vSheetRef = ref<InstanceType<typeof VSheet> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n const { handleDrop } = useFileDrop()\n\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value) return\n\n const dataTransfer = new DataTransfer()\n for (const file of await handleDrop(e)) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value.files = dataTransfer.files\n inputRef.value.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n function onClick () {\n inputRef.value?.click()\n }\n\n function onClickRemove (index: number) {\n const newValue = model.value.filter((_, i) => i !== index)\n model.value = newValue\n\n if (newValue.length > 0 || !inputRef.value) return\n\n inputRef.value.value = ''\n }\n\n useRender(() => {\n const hasTitle = !!(slots.title || props.title)\n const hasIcon = !!(slots.icon || props.icon)\n const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'))\n const cardProps = VSheet.filterProps(props)\n const dividerProps = VDivider.filterProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ inputRef }\n type=\"file\"\n disabled={ props.disabled }\n multiple={ props.multiple }\n name={ props.name }\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n <VSheet\n ref={ vSheetRef }\n { ...cardProps }\n class={[\n 'v-file-upload',\n {\n 'v-file-upload--clickable': !hasBrowse,\n 'v-file-upload--disabled': props.disabled,\n 'v-file-upload--dragging': isDragging.value,\n },\n densityClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n ]}\n onDragleave={ onDragleave }\n onDragover={ onDragover }\n onDrop={ onDrop }\n onClick={ !hasBrowse ? onClick : undefined }\n { ...rootAttrs }\n >\n { hasIcon && (\n <div key=\"icon\" class=\"v-file-upload-icon\">\n { !slots.icon ? (\n <VIcon\n key=\"icon-icon\"\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"icon-defaults\"\n defaults={{\n VIcon: {\n icon: props.icon,\n },\n }}\n >\n { slots.icon() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { hasTitle && (\n <div key=\"title\" class=\"v-file-upload-title\">\n { slots.title?.() ?? t(props.title) }\n </div>\n )}\n\n { props.density === 'default' && (\n <>\n <div key=\"upload-divider\" class=\"v-file-upload-divider\">\n { slots.divider?.() ?? (\n <VDivider { ...dividerProps }>\n { t(props.dividerText) }\n </VDivider>\n )}\n </div>\n\n { hasBrowse && (\n <>\n { !slots.browse ? (\n <VBtn\n readonly={ props.disabled }\n size=\"large\"\n text={ t(props.browseText) }\n variant=\"tonal\"\n onClick={ onClick }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n readonly: props.disabled,\n size: 'large',\n text: t(props.browseText),\n variant: 'tonal',\n },\n }}\n >\n { slots.browse({ props: { onClick } }) }\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { props.subtitle && (\n <div class=\"v-file-upload-subtitle\">\n { props.subtitle }\n </div>\n )}\n </>\n )}\n\n <VOverlay\n model-value={ 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 model-value={ 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":";AAAA;AACA;;AAEA;AAAA,SACSA,eAAe;AAAA,SACfC,IAAI;AAAA,SACJC,iBAAiB;AAAA,SACjBC,iBAAiB,EAAEC,QAAQ;AAAA,SAC3BC,KAAK;AAAA,SACLC,QAAQ;AAAA,SACRC,eAAe,EAAEC,MAAM,6CAEhC;AAAA,SACSC,cAAc;AAAA,SACdC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,WAAW;AAAA,SACXC,mBAAmB,EAAEC,aAAa;AAAA,SAClCC,SAAS;AAAA,SACTC,SAAS;AAAA,SACTC,eAAe,6CAExB;AACA,SAASC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAA,SAC5BC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,+BAEvF;AAoBA,OAAO,MAAMC,oBAAoB,GAAGH,YAAY,CAAC;EAC/CI,UAAU,EAAE;IACVC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,WAAW,EAAE;IACXH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,KAAK,EAAE;IACLJ,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDG,QAAQ,EAAEJ,MAAM;EAChBK,IAAI,EAAE;IACJN,IAAI,EAAEb,SAAS;IACfe,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAE;IACVP,IAAI,EAAE,CAACQ,KAAK,EAAEC,MAAM,CAA4B;IAChDP,OAAO,EAAE,IAAI;IACbQ,SAAS,EAAGC,GAAQ,IAAK;MACvB,OAAOd,WAAW,CAACc,GAAG,CAAC,CAACC,KAAK,CAACC,CAAC,IAAIA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,CAAC;IACxE;EACF,CAAC;EACDC,SAAS,EAAEC,OAAO;EAClBC,QAAQ,EAAED,OAAO;EACjBE,UAAU,EAAEF,OAAO;EACnBG,QAAQ,EAAEH,OAAO;EACjBI,KAAK,EAAE;IACLnB,IAAI,EAAE,CAACe,OAAO,EAAEd,MAAM,CAAC;IACvBC,OAAO,EAAE;EACX,CAAC;EACDkB,QAAQ,EAAEL,OAAO;EACjBM,IAAI,EAAEpB,MAAM;EAEZ,GAAGhB,mBAAmB,CAAC,CAAC;EACxB,GAAGJ,cAAc,CAAC,CAAC;EACnB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGY,IAAI,CAACnB,iBAAiB,CAAC;IACxB+C,MAAM,EAAE;EACV,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;EACvC,GAAG3C,eAAe,CAAC;AACrB,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAM4C,WAAW,GAAG9B,gBAAgB,CAAmB,CAAC,CAAC;EAC9D4B,IAAI,EAAE,aAAa;EAEnBG,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAE3B,oBAAoB,CAAC,CAAC;EAE7B4B,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAa,IAAK,IAAI;IAC5CC,QAAQ,EAAGD,KAAa,IAAK;EAC/B,CAAC;EAEDE,KAAKA,CAAEJ,KAAK,EAAAK,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAM;MAAEI;IAAE,CAAC,GAAG9C,SAAS,CAAC,CAAC;IACzB,MAAM;MAAE+C;IAAe,CAAC,GAAGpD,UAAU,CAAC0C,KAAK,CAAC;IAC5C,MAAM;MAAEW;IAAe,CAAC,GAAGlD,aAAa,CAACuC,KAAK,CAAC;IAC/C,MAAMY,KAAK,GAAGhD,eAAe,CAC3BoC,KAAK,EACL,YAAY,EACZA,KAAK,CAAClB,UAAU,EAChBI,GAAG,IAAId,WAAW,CAACc,GAAG,CAAC,EACvBA,GAAG,IAAKc,KAAK,CAACP,QAAQ,IAAIV,KAAK,CAAC8B,OAAO,CAACb,KAAK,CAAClB,UAAU,CAAC,GAAII,GAAG,GAAGA,GAAG,CAAC,CAAC,CAC1E,CAAC;IAED,MAAM4B,UAAU,GAAGhD,UAAU,CAAC,KAAK,CAAC;IACpC,MAAMiD,SAAS,GAAGlD,GAAG,CAAqC,IAAI,CAAC;IAC/D,MAAMmD,QAAQ,GAAGnD,GAAG,CAA0B,IAAI,CAAC;IACnD,MAAM;MAAEoD;IAAW,CAAC,GAAG1D,WAAW,CAAC,CAAC;IAEpC,SAAS2D,UAAUA,CAAEC,CAAY,EAAE;MACjCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBD,CAAC,CAACE,wBAAwB,CAAC,CAAC;MAC5BP,UAAU,CAACQ,KAAK,GAAG,IAAI;IACzB;IAEA,SAASC,WAAWA,CAAEJ,CAAY,EAAE;MAClCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBN,UAAU,CAACQ,KAAK,GAAG,KAAK;IAC1B;IAEA,eAAeE,MAAMA,CAAEL,CAAY,EAAE;MACnCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBD,CAAC,CAACE,wBAAwB,CAAC,CAAC;MAC5BP,UAAU,CAACQ,KAAK,GAAG,KAAK;MAExB,IAAI,CAACN,QAAQ,CAACM,KAAK,EAAE;MAErB,MAAMG,eAAe,GAAG,MAAMR,UAAU,CAACE,CAAC,CAAC;MAC3CO,cAAc,CAACD,eAAe,CAAC;IACjC;IAEA,SAASE,eAAeA,CAAER,CAAQ,EAAE;MAClC,IAAI,CAACA,CAAC,CAACS,MAAM,IAAKT,CAAC,CAASU,MAAM,EAAE,OAAM,CAAC;;MAE3C,IAAI,CAAC7B,KAAK,CAAC8B,YAAY,EAAE;QACvB,MAAMF,MAAM,GAAGT,CAAC,CAACS,MAA0B;QAC3ChB,KAAK,CAACU,KAAK,GAAG,CAAC,IAAGM,MAAM,CAAC1B,KAAK,IAAI,EAAE,EAAC;MACvC,CAAC,MAAM;QACLwB,cAAc,CAAC,CAAC,GAAIP,CAAC,CAASS,MAAM,CAAC1B,KAAK,CAAC,CAAC;MAC9C;IACF;IAEA,SAASwB,cAAcA,CAAExB,KAAa,EAAE;MACtC,MAAM6B,YAAY,GAAG,IAAIC,YAAY,CAAC,CAAC;MACvC,MAAM;QAAEC,QAAQ;QAAE9B;MAAS,CAAC,GAAGQ,cAAc,CAACT,KAAK,CAAC;MAEpD,IAAIC,QAAQ,CAACN,MAAM,EAAE;QACnBU,IAAI,CAAC,UAAU,EAAEJ,QAAQ,CAAC;MAC5B;MAEA,KAAK,MAAM+B,IAAI,IAAID,QAAQ,EAAE;QAC3BF,YAAY,CAACI,KAAK,CAACC,GAAG,CAACF,IAAI,CAAC;MAC9B;MAEAlB,QAAQ,CAACM,KAAK,CAAEpB,KAAK,GAAG6B,YAAY,CAAC7B,KAAK;MAC1CU,KAAK,CAACU,KAAK,GAAG,CAAC,GAAGS,YAAY,CAAC7B,KAAK,CAAC;MAErC,MAAMmC,KAAK,GAAG,IAAIC,KAAK,CAAC,QAAQ,EAAE;QAAEC,OAAO,EAAE;MAAK,CAAC,CAAQ;MAC3DF,KAAK,CAACR,MAAM,GAAG,IAAI;MACnBb,QAAQ,CAACM,KAAK,CAAEkB,aAAa,CAACH,KAAK,CAAC;IACtC;IAEA,SAASI,OAAOA,CAAA,EAAI;MAClBzB,QAAQ,CAACM,KAAK,EAAEoB,KAAK,CAAC,CAAC;IACzB;IAEA,SAASC,aAAaA,CAAEC,KAAa,EAAE;MACrC,MAAMC,QAAQ,GAAGjC,KAAK,CAACU,KAAK,CAACwB,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,KAAKJ,KAAK,CAAC;MAC1DhC,KAAK,CAACU,KAAK,GAAGuB,QAAQ;MAEtB,IAAIA,QAAQ,CAAChD,MAAM,GAAG,CAAC,IAAI,CAACmB,QAAQ,CAACM,KAAK,EAAE;MAE5CN,QAAQ,CAACM,KAAK,CAACA,KAAK,GAAG,EAAE;IAC3B;IAEAnD,SAAS,CAAC,MAAM;MACd,MAAM8E,QAAQ,GAAG,CAAC,EAAEzC,KAAK,CAAC7B,KAAK,IAAIqB,KAAK,CAACrB,KAAK,CAAC;MAC/C,MAAMuE,OAAO,GAAG,CAAC,EAAE1C,KAAK,CAAC3B,IAAI,IAAImB,KAAK,CAACnB,IAAI,CAAC;MAC5C,MAAMsE,SAAS,GAAG,CAAC,EAAE,CAACnD,KAAK,CAACR,UAAU,KAAKgB,KAAK,CAAC4C,MAAM,IAAIpD,KAAK,CAACqD,OAAO,KAAK,SAAS,CAAC,CAAC;MACxF,MAAMC,SAAS,GAAGnG,MAAM,CAACoG,WAAW,CAACvD,KAAK,CAAC;MAC3C,MAAMwD,YAAY,GAAGzG,QAAQ,CAACwG,WAAW,CAACvD,KAAK,CAAC;MAChD,MAAM,CAACyD,SAAS,EAAEC,UAAU,CAAC,GAAG3F,gBAAgB,CAACuC,KAAK,CAAC;MAEvD,MAAMqD,gBAAgB,GAAGrD,KAAK,CAACsD,eAAe,KAAKC,SAAS,IAAIvD,KAAK,CAACsD,eAAe,KAAK,KAAK;MAC/F,MAAME,WAAW,GAAGH,gBAAgB,GAAGE,SAAS,GAAI7D,KAAK,CAAC8B,YAAY,IAAItD,MAAM,CAAC8B,KAAK,CAACyD,MAAM,CAAE;MAE/F,MAAMC,SAAS,GAAAC,mBAAA,UAAAC,WAAA;QAAA,OAELlD,QAAQ;QAAA;QAAA,UAEL8C,WAAW;QAAA,YACT9D,KAAK,CAACT,QAAQ;QAAA,YACdS,KAAK,CAACP,QAAQ;QAAA,QAClBO,KAAK,CAACJ,IAAI;QAAA,YACN+B;MAAe,GACrB+B,UAAU,QAElB;MAED,OAAAO,mBAAA,CAAAE,SAAA,SAAAC,YAAA,CAAAjH,MAAA,EAAA+G,WAAA;QAAA,OAGYnD;MAAS,GACVuC,SAAS;QAAA,SACP,CACL,eAAe,EACf;UACE,0BAA0B,EAAE,CAACH,SAAS;UACtC,yBAAyB,EAAEnD,KAAK,CAACT,QAAQ;UACzC,yBAAyB,EAAEuB,UAAU,CAACQ;QACxC,CAAC,EACDZ,cAAc,CAACY,KAAK,EACpBtB,KAAK,CAACqE,KAAK,CACZ;QAAA,SACM,CACLrE,KAAK,CAACsE,KAAK,CACZ;QAAA,eACa/C,WAAW;QAAA,cACZL,UAAU;QAAA,UACdM,MAAM;QAAA,WACL,CAAC2B,SAAS,GAAGV,OAAO,GAAGoB;MAAS,GACrCJ,SAAS;QAAAhF,OAAA,EAAAA,CAAA,MAEZyE,OAAO,IAAAe,mBAAA;UAAA;UAAA;QAAA,IAEH,CAACzD,KAAK,CAAC3B,IAAI,GAAAuF,YAAA,CAAApH,KAAA;UAAA;UAAA,QAGFgD,KAAK,CAACnB;QAAI,WAAAuF,YAAA,CAAAvH,iBAAA;UAAA;UAAA,YAKP;YACRG,KAAK,EAAE;cACL6B,IAAI,EAAEmB,KAAK,CAACnB;YACd;UACF;QAAC;UAAAJ,OAAA,EAAAA,CAAA,MAEC+B,KAAK,CAAC3B,IAAI,CAAC,CAAC;QAAA,EAEjB,EAEJ,EAECoE,QAAQ,IAAAgB,mBAAA;UAAA;UAAA;QAAA,IAEJzD,KAAK,CAAC7B,KAAK,GAAG,CAAC,IAAI8B,CAAC,CAACT,KAAK,CAACrB,KAAK,CAAC,EAEtC,EAECqB,KAAK,CAACqD,OAAO,KAAK,SAAS,IAAAY,mBAAA,CAAAE,SAAA,SAAAF,mBAAA;UAAA;UAAA;QAAA,IAGrBzD,KAAK,CAAC+D,OAAO,GAAG,CAAC,IAAAH,YAAA,CAAArH,QAAA,EACFyG,YAAY;UAAA/E,OAAA,EAAAA,CAAA,MACvBgC,CAAC,CAACT,KAAK,CAACtB,WAAW,CAAC;QAAA,EAEzB,IAGDyE,SAAS,IAAAc,mBAAA,CAAAE,SAAA,SAEL,CAAC3D,KAAK,CAAC4C,MAAM,GAAAgB,YAAA,CAAAxH,IAAA;UAAA,YAEAoD,KAAK,CAACT,QAAQ;UAAA;UAAA,QAElBkB,CAAC,CAACT,KAAK,CAAC1B,UAAU,CAAC;UAAA;UAAA,WAEhBmE;QAAO,WAAA2B,YAAA,CAAAvH,iBAAA;UAAA,YAIP;YACRD,IAAI,EAAE;cACJ4H,QAAQ,EAAExE,KAAK,CAACT,QAAQ;cACxBkF,IAAI,EAAE,OAAO;cACbC,IAAI,EAAEjE,CAAC,CAACT,KAAK,CAAC1B,UAAU,CAAC;cACzBqG,OAAO,EAAE;YACX;UACF;QAAC;UAAAlG,OAAA,EAAAA,CAAA,MAEC+B,KAAK,CAAC4C,MAAM,CAAC;YAAEpD,KAAK,EAAE;cAAEyC;YAAQ;UAAE,CAAC,CAAC;QAAA,EAEzC,EAEJ,EAECzC,KAAK,CAACpB,QAAQ,IAAAqF,mBAAA;UAAA;QAAA,IAEVjE,KAAK,CAACpB,QAAQ,EAEnB,EAEJ,EAAAwF,YAAA,CAAAnH,QAAA;UAAA,eAGe6D,UAAU,CAACQ,KAAK;UAAA;UAAA,SAEtBtB,KAAK,CAACN;QAAK,UAGnBc,KAAK,CAACoE,KAAK,GAAG;UAAEZ;QAAU,CAAC,CAAC,IAAIA,SAAS;MAAA,IAG3CpD,KAAK,CAACU,KAAK,CAACzB,MAAM,GAAG,CAAC,IAAAoE,mBAAA;QAAA;MAAA,IAElBrD,KAAK,CAACU,KAAK,CAACuD,GAAG,CAAC,CAAC3C,IAAI,EAAEc,CAAC,KAAK;QAC7B,MAAM8B,SAAS,GAAG;UAChB5C,IAAI;UACJlC,KAAK,EAAE;YACL,gBAAgB,EAAE+E,CAAA,KAAMpC,aAAa,CAACK,CAAC;UACzC;QACF,CAAC;QAED,OAAAoB,YAAA,CAAAvH,iBAAA;UAAA,OAEUmG,CAAC;UAAA,YACG;YACRrG,eAAe,EAAE;cACfuF,IAAI;cACJ7C,SAAS,EAAEW,KAAK,CAACX,SAAS;cAC1BE,QAAQ,EAAES,KAAK,CAACT,QAAQ;cACxBI,QAAQ,EAAEK,KAAK,CAACL;YAClB;UACF;QAAC;UAAAlB,OAAA,EAAAA,CAAA,MAEC+B,KAAK,CAACwE,IAAI,GAAGF,SAAS,CAAC,IAAAV,YAAA,CAAAzH,eAAA;YAAA,OAEfqG,CAAC;YAAA,kBACU+B,CAAA,KAAMpC,aAAa,CAACK,CAAC;UAAC,GAC7BxC,KAAK,CAElB;QAAA;MAGP,CAAC,CAAC,EAEL;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.9.0-dev.2025-07-08",
4
+ "version": "3.9.0-dev.2025-07-16",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"