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

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 (57) hide show
  1. package/CHANGELOG.md +5 -11
  2. package/dist/json/attributes.json +1025 -1045
  3. package/dist/json/importMap-labs.json +20 -20
  4. package/dist/json/importMap.json +148 -148
  5. package/dist/json/tags.json +0 -5
  6. package/dist/json/web-types.json +1842 -1912
  7. package/dist/vuetify-labs.cjs +27 -216
  8. package/dist/vuetify-labs.css +5593 -5595
  9. package/dist/vuetify-labs.d.ts +51 -113
  10. package/dist/vuetify-labs.esm.js +27 -216
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +27 -216
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +18 -178
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +1500 -1502
  17. package/dist/vuetify.d.ts +51 -103
  18. package/dist/vuetify.esm.js +18 -178
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +18 -178
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +701 -723
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +0 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VCombobox/VCombobox.js +0 -1
  28. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  29. package/lib/components/VFileInput/VFileInput.d.ts +0 -15
  30. package/lib/components/VFileInput/VFileInput.js +9 -38
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VList/VList.js +1 -2
  33. package/lib/components/VList/VList.js.map +1 -1
  34. package/lib/components/VList/VListItem.js +1 -7
  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 +0 -75
  38. package/lib/components/VProgressLinear/VProgressLinear.js +6 -32
  39. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  40. package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
  41. package/lib/components/VSelect/VSelect.js +0 -1
  42. package/lib/components/VSelect/VSelect.js.map +1 -1
  43. package/lib/entry-bundler.js +1 -1
  44. package/lib/entry-bundler.js.map +1 -1
  45. package/lib/framework.d.ts +51 -51
  46. package/lib/framework.js +1 -1
  47. package/lib/framework.js.map +1 -1
  48. package/lib/labs/VFileUpload/VFileUpload.d.ts +0 -15
  49. package/lib/labs/VFileUpload/VFileUpload.js +9 -39
  50. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  51. package/package.json +1 -1
  52. package/lib/components/VProgressLinear/chunks.d.ts +0 -55
  53. package/lib/components/VProgressLinear/chunks.js +0 -62
  54. package/lib/components/VProgressLinear/chunks.js.map +0 -1
  55. package/lib/composables/fileFilter.d.ts +0 -18
  56. package/lib/composables/fileFilter.js +0 -38
  57. package/lib/composables/fileFilter.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.1-dev.2025-07-17
2
+ * Vuetify v3.9.1-master.2025-07-17
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -5169,69 +5169,6 @@
5169
5169
  };
5170
5170
  }
5171
5171
 
5172
- // Utilities
5173
-
5174
- // Types
5175
-
5176
- // Composables
5177
- const makeChunksProps = propsFactory({
5178
- chunkCount: {
5179
- type: [Number, String],
5180
- default: null
5181
- },
5182
- chunkWidth: {
5183
- type: [Number, String],
5184
- default: null
5185
- },
5186
- chunkGap: {
5187
- type: [Number, String],
5188
- default: 4
5189
- }
5190
- }, 'chunks');
5191
- function useChunks(props, containerWidth) {
5192
- const hasChunks = vue.toRef(() => !!props.chunkCount || !!props.chunkWidth);
5193
- const chunkWidth = vue.computed(() => {
5194
- const containerSize = vue.toValue(containerWidth);
5195
- if (!containerSize) {
5196
- return 0;
5197
- }
5198
- if (!props.chunkCount) {
5199
- return Number(props.chunkWidth);
5200
- }
5201
- const count = Number(props.chunkCount);
5202
- const availableWidth = containerSize - Number(props.chunkGap) * (count - 1);
5203
- return availableWidth / count;
5204
- });
5205
- const chunkGap = vue.toRef(() => Number(props.chunkGap));
5206
- const chunksMaskStyles = vue.computed(() => {
5207
- if (!hasChunks.value) {
5208
- return {};
5209
- }
5210
- const chunkGapPx = convertToUnit(chunkGap.value);
5211
- const chunkWidthPx = convertToUnit(chunkWidth.value);
5212
- return {
5213
- maskRepeat: 'repeat-x',
5214
- maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,
5215
- maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`
5216
- };
5217
- });
5218
- function snapValueToChunk(val) {
5219
- const containerSize = vue.toValue(containerWidth);
5220
- if (!containerSize) {
5221
- return val;
5222
- }
5223
- const gapRelativeSize = 100 * chunkGap.value / containerSize;
5224
- const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize;
5225
- const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize);
5226
- return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100);
5227
- }
5228
- return {
5229
- hasChunks,
5230
- chunksMaskStyles,
5231
- snapValueToChunk
5232
- };
5233
- }
5234
-
5235
5172
  const makeVProgressLinearProps = propsFactory({
5236
5173
  absolute: Boolean,
5237
5174
  active: {
@@ -5266,7 +5203,6 @@
5266
5203
  stream: Boolean,
5267
5204
  striped: Boolean,
5268
5205
  roundedBar: Boolean,
5269
- ...makeChunksProps(),
5270
5206
  ...makeComponentProps(),
5271
5207
  ...makeLocationProps({
5272
5208
  location: 'top'
@@ -5285,7 +5221,6 @@
5285
5221
  let {
5286
5222
  slots
5287
5223
  } = _ref;
5288
- const root = vue.ref();
5289
5224
  const progress = useProxiedModel(props, 'modelValue');
5290
5225
  const {
5291
5226
  isRtl,
@@ -5327,24 +5262,6 @@
5327
5262
  const isReversed = vue.computed(() => isRtl.value !== props.reverse);
5328
5263
  const transition = vue.computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
5329
5264
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;
5330
- const containerWidth = vue.shallowRef(0);
5331
- const {
5332
- hasChunks,
5333
- chunksMaskStyles,
5334
- snapValueToChunk
5335
- } = useChunks(props, containerWidth);
5336
- useToggleScope(hasChunks, () => {
5337
- const {
5338
- resizeRef
5339
- } = useResizeObserver(entries => containerWidth.value = entries[0].contentRect.width);
5340
- vue.watchEffect(() => resizeRef.value = root.value);
5341
- });
5342
- const bufferWidth = vue.computed(() => {
5343
- return hasChunks.value ? snapValueToChunk(normalizedBuffer.value) : normalizedBuffer.value;
5344
- });
5345
- const barWidth = vue.computed(() => {
5346
- return hasChunks.value ? snapValueToChunk(normalizedValue.value) : normalizedValue.value;
5347
- });
5348
5265
  function handleClick(e) {
5349
5266
  if (!intersectionRef.value) return;
5350
5267
  const {
@@ -5355,11 +5272,8 @@
5355
5272
  const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;
5356
5273
  progress.value = Math.round(value / width * max.value);
5357
5274
  }
5358
- vue.watchEffect(() => {
5359
- intersectionRef.value = root.value;
5360
- });
5361
5275
  useRender(() => vue.createVNode(props.tag, {
5362
- "ref": root,
5276
+ "ref": intersectionRef,
5363
5277
  "class": vue.normalizeClass(['v-progress-linear', {
5364
5278
  'v-progress-linear--absolute': props.absolute,
5365
5279
  'v-progress-linear--active': props.active && isIntersecting.value,
@@ -5374,7 +5288,7 @@
5374
5288
  height: props.active ? convertToUnit(height.value) : 0,
5375
5289
  '--v-progress-linear-height': convertToUnit(height.value),
5376
5290
  ...(props.absolute ? locationStyles.value : {})
5377
- }, chunksMaskStyles.value, props.style]),
5291
+ }, props.style]),
5378
5292
  "role": "progressbar",
5379
5293
  "aria-hidden": props.active ? 'false' : 'true',
5380
5294
  "aria-valuemin": "0",
@@ -5404,7 +5318,7 @@
5404
5318
  "class": vue.normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
5405
5319
  "style": vue.normalizeStyle([bufferColorStyles.value, {
5406
5320
  opacity: parseFloat(props.bufferOpacity),
5407
- width: convertToUnit(bufferWidth.value, '%')
5321
+ width: convertToUnit(normalizedBuffer.value, '%')
5408
5322
  }])
5409
5323
  }, null), vue.createVNode(vue.Transition, {
5410
5324
  "name": transition.value
@@ -5412,7 +5326,7 @@
5412
5326
  default: () => [!props.indeterminate ? vue.createElementVNode("div", {
5413
5327
  "class": vue.normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5414
5328
  "style": vue.normalizeStyle([barColorStyles.value, {
5415
- width: convertToUnit(barWidth.value, '%')
5329
+ width: convertToUnit(normalizedValue.value, '%')
5416
5330
  }])
5417
5331
  }, null) : vue.createElementVNode("div", {
5418
5332
  "class": "v-progress-linear__indeterminate"
@@ -9630,11 +9544,6 @@
9630
9544
  const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
9631
9545
  const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9632
9546
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9633
- const role = vue.computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
9634
- const ariaSelected = vue.computed(() => {
9635
- if (!isSelectable.value) return undefined;
9636
- return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
9637
- });
9638
9547
  const roundedProps = vue.toRef(() => props.rounded || props.nav);
9639
9548
  const color = vue.toRef(() => props.color ?? props.activeColor);
9640
9549
  const variantProps = vue.toRef(() => ({
@@ -9738,8 +9647,7 @@
9738
9647
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
9739
9648
  "style": [colorStyles.value, dimensionStyles.value, props.style],
9740
9649
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
9741
- "aria-selected": ariaSelected.value,
9742
- "role": role.value,
9650
+ "aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
9743
9651
  "onClick": onClick,
9744
9652
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9745
9653
  }, link.linkProps), {
@@ -10241,7 +10149,6 @@
10241
10149
  const activeColor = vue.toRef(() => props.activeColor);
10242
10150
  const baseColor = vue.toRef(() => props.baseColor);
10243
10151
  const color = vue.toRef(() => props.color);
10244
- const isSelectable = vue.toRef(() => props.selectable || props.activatable);
10245
10152
  createList({
10246
10153
  filterable: props.filterable
10247
10154
  });
@@ -10313,7 +10220,7 @@
10313
10220
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
10314
10221
  "style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
10315
10222
  "tabindex": props.disabled ? -1 : 0,
10316
- "role": isSelectable.value ? 'listbox' : 'list',
10223
+ "role": "listbox",
10317
10224
  "aria-activedescendant": undefined,
10318
10225
  "onFocusin": onFocusin,
10319
10226
  "onFocusout": onFocusout,
@@ -13383,7 +13290,6 @@
13383
13290
  "onKeydown": onListKeydown,
13384
13291
  "onFocusin": onFocusin,
13385
13292
  "tabindex": "-1",
13386
- "selectable": true,
13387
13293
  "aria-live": "polite",
13388
13294
  "aria-label": `${props.label}-list`,
13389
13295
  "color": props.itemColor ?? props.color
@@ -14003,7 +13909,6 @@
14003
13909
  "onFocusin": onFocusin,
14004
13910
  "onFocusout": onFocusout,
14005
13911
  "tabindex": "-1",
14006
- "selectable": true,
14007
13912
  "aria-live": "polite",
14008
13913
  "color": props.itemColor ?? props.color
14009
13914
  }, listEvents, props.listProps), {
@@ -19091,7 +18996,6 @@
19091
18996
  "selected": selectedValues.value,
19092
18997
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
19093
18998
  "onMousedown": e => e.preventDefault(),
19094
- "selectable": true,
19095
18999
  "onKeydown": onListKeydown,
19096
19000
  "onFocusin": onFocusin,
19097
19001
  "onFocusout": onFocusout,
@@ -24190,42 +24094,6 @@
24190
24094
  return item.isDirectory ? `${path}/${item.name}` : path;
24191
24095
  }
24192
24096
 
24193
- // Utilities
24194
- // Composables
24195
- const makeFileFilterProps = propsFactory({
24196
- filterByType: String
24197
- }, 'file-accept');
24198
- function useFileFilter(props) {
24199
- const fileFilter = vue.computed(() => props.filterByType ? createFilter(props.filterByType) : null);
24200
- function filterAccepted(files) {
24201
- if (fileFilter.value) {
24202
- const accepted = files.filter(fileFilter.value);
24203
- return {
24204
- accepted,
24205
- rejected: files.filter(f => !accepted.includes(f))
24206
- };
24207
- }
24208
- return {
24209
- accepted: files,
24210
- rejected: []
24211
- };
24212
- }
24213
- return {
24214
- filterAccepted
24215
- };
24216
- }
24217
- function createFilter(v) {
24218
- const types = v.split(',').map(x => x.trim().toLowerCase());
24219
- const extensionsToMatch = types.filter(x => x.startsWith('.'));
24220
- const wildcards = types.filter(x => x.endsWith('/*'));
24221
- const typesToMatch = types.filter(x => !extensionsToMatch.includes(x) && !wildcards.includes(x));
24222
- return file => {
24223
- const extension = file.name.split('.').at(-1)?.toLowerCase() ?? '';
24224
- const typeGroup = file.type.split('/').at(0)?.toLowerCase() ?? '';
24225
- return typesToMatch.includes(file.type) || extensionsToMatch.includes(`.${extension}`) || wildcards.includes(`${typeGroup}/*`);
24226
- };
24227
- }
24228
-
24229
24097
  // Types
24230
24098
 
24231
24099
  const makeVFileInputProps = propsFactory({
@@ -24258,7 +24126,6 @@
24258
24126
  return wrapInArray(val).every(v => v != null && typeof v === 'object');
24259
24127
  }
24260
24128
  },
24261
- ...makeFileFilterProps(),
24262
24129
  ...makeVFieldProps({
24263
24130
  clearable: true
24264
24131
  })
@@ -24271,8 +24138,7 @@
24271
24138
  'click:control': e => true,
24272
24139
  'mousedown:control': e => true,
24273
24140
  'update:focused': focused => true,
24274
- 'update:modelValue': files => true,
24275
- rejected: files => true
24141
+ 'update:modelValue': files => true
24276
24142
  },
24277
24143
  setup(props, _ref) {
24278
24144
  let {
@@ -24283,9 +24149,6 @@
24283
24149
  const {
24284
24150
  t
24285
24151
  } = useLocale();
24286
- const {
24287
- filterAccepted
24288
- } = useFileFilter(props);
24289
24152
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);
24290
24153
  const {
24291
24154
  isFocused,
@@ -24359,38 +24222,14 @@
24359
24222
  e.stopImmediatePropagation();
24360
24223
  isDragging.value = false;
24361
24224
  if (!inputRef.value || !hasFilesOrFolders(e)) return;
24362
- const allDroppedFiles = await handleDrop(e);
24363
- selectAccepted(allDroppedFiles);
24364
- }
24365
- function onFileSelection(e) {
24366
- if (!e.target || e.repack) return; // prevent loop
24367
-
24368
- if (!props.filterByType) {
24369
- const target = e.target;
24370
- model.value = [...(target.files ?? [])];
24371
- } else {
24372
- selectAccepted([...e.target.files]);
24373
- }
24374
- }
24375
- function selectAccepted(files) {
24376
24225
  const dataTransfer = new DataTransfer();
24377
- const {
24378
- accepted,
24379
- rejected
24380
- } = filterAccepted(files);
24381
- if (rejected.length) {
24382
- emit('rejected', rejected);
24383
- }
24384
- for (const file of accepted) {
24226
+ for (const file of await handleDrop(e)) {
24385
24227
  dataTransfer.items.add(file);
24386
24228
  }
24387
24229
  inputRef.value.files = dataTransfer.files;
24388
- model.value = [...dataTransfer.files];
24389
- const event = new Event('change', {
24230
+ inputRef.value.dispatchEvent(new Event('change', {
24390
24231
  bubbles: true
24391
- });
24392
- event.repack = true;
24393
- inputRef.value.dispatchEvent(event);
24232
+ }));
24394
24233
  }
24395
24234
  vue.watch(model, newValue => {
24396
24235
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
@@ -24407,8 +24246,6 @@
24407
24246
  ...inputProps
24408
24247
  } = VInput.filterProps(props);
24409
24248
  const fieldProps = VField.filterProps(props);
24410
- const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
24411
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
24412
24249
  return vue.createVNode(VInput, vue.mergeProps({
24413
24250
  "ref": vInputRef,
24414
24251
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -24464,7 +24301,6 @@
24464
24301
  return vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("input", vue.mergeProps({
24465
24302
  "ref": inputRef,
24466
24303
  "type": "file",
24467
- "accept": inputAccept,
24468
24304
  "readonly": isReadonly.value,
24469
24305
  "disabled": isDisabled.value,
24470
24306
  "multiple": props.multiple,
@@ -24474,7 +24310,11 @@
24474
24310
  if (isReadonly.value) e.preventDefault();
24475
24311
  onFocus();
24476
24312
  },
24477
- "onChange": onFileSelection,
24313
+ "onChange": e => {
24314
+ if (!e.target) return;
24315
+ const target = e.target;
24316
+ model.value = [...(target.files ?? [])];
24317
+ },
24478
24318
  "onDragleave": onDragleave,
24479
24319
  "onFocus": onFocus,
24480
24320
  "onBlur": blur
@@ -31993,7 +31833,6 @@
31993
31833
  },
31994
31834
  showSize: Boolean,
31995
31835
  name: String,
31996
- ...makeFileFilterProps(),
31997
31836
  ...makeDelayProps(),
31998
31837
  ...makeDensityProps(),
31999
31838
  ...pick(makeVDividerProps({
@@ -32006,13 +31845,11 @@
32006
31845
  inheritAttrs: false,
32007
31846
  props: makeVFileUploadProps(),
32008
31847
  emits: {
32009
- 'update:modelValue': files => true,
32010
- rejected: files => true
31848
+ 'update:modelValue': files => true
32011
31849
  },
32012
31850
  setup(props, _ref) {
32013
31851
  let {
32014
31852
  attrs,
32015
- emit,
32016
31853
  slots
32017
31854
  } = _ref;
32018
31855
  const {
@@ -32021,9 +31858,6 @@
32021
31858
  const {
32022
31859
  densityClasses
32023
31860
  } = useDensity(props);
32024
- const {
32025
- filterAccepted
32026
- } = useFileFilter(props);
32027
31861
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
32028
31862
  const isDragging = vue.shallowRef(false);
32029
31863
  const vSheetRef = vue.ref(null);
@@ -32045,38 +31879,14 @@
32045
31879
  e.stopImmediatePropagation();
32046
31880
  isDragging.value = false;
32047
31881
  if (!inputRef.value) return;
32048
- const allDroppedFiles = await handleDrop(e);
32049
- selectAccepted(allDroppedFiles);
32050
- }
32051
- function onFileSelection(e) {
32052
- if (!e.target || e.repack) return; // prevent loop
32053
-
32054
- if (!props.filterByType) {
32055
- const target = e.target;
32056
- model.value = [...(target.files ?? [])];
32057
- } else {
32058
- selectAccepted([...e.target.files]);
32059
- }
32060
- }
32061
- function selectAccepted(files) {
32062
31882
  const dataTransfer = new DataTransfer();
32063
- const {
32064
- accepted,
32065
- rejected
32066
- } = filterAccepted(files);
32067
- if (rejected.length) {
32068
- emit('rejected', rejected);
32069
- }
32070
- for (const file of accepted) {
31883
+ for (const file of await handleDrop(e)) {
32071
31884
  dataTransfer.items.add(file);
32072
31885
  }
32073
31886
  inputRef.value.files = dataTransfer.files;
32074
- model.value = [...dataTransfer.files];
32075
- const event = new Event('change', {
31887
+ inputRef.value.dispatchEvent(new Event('change', {
32076
31888
  bubbles: true
32077
- });
32078
- event.repack = true;
32079
- inputRef.value.dispatchEvent(event);
31889
+ }));
32080
31890
  }
32081
31891
  function onClick() {
32082
31892
  inputRef.value?.click();
@@ -32094,16 +31904,17 @@
32094
31904
  const cardProps = VSheet.filterProps(props);
32095
31905
  const dividerProps = VDivider.filterProps(props);
32096
31906
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
32097
- const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
32098
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
32099
31907
  const inputNode = vue.createElementVNode("input", vue.mergeProps({
32100
31908
  "ref": inputRef,
32101
31909
  "type": "file",
32102
- "accept": inputAccept,
32103
31910
  "disabled": props.disabled,
32104
31911
  "multiple": props.multiple,
32105
31912
  "name": props.name,
32106
- "onChange": onFileSelection
31913
+ "onChange": e => {
31914
+ if (!e.target) return;
31915
+ const target = e.target;
31916
+ model.value = [...(target.files ?? [])];
31917
+ }
32107
31918
  }, inputAttrs), null);
32108
31919
  return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VSheet, vue.mergeProps({
32109
31920
  "ref": vSheetRef
@@ -33882,7 +33693,7 @@
33882
33693
  };
33883
33694
  });
33884
33695
  }
33885
- const version$1 = "3.9.1-dev.2025-07-17";
33696
+ const version$1 = "3.9.1-master.2025-07-17";
33886
33697
  createVuetify$1.version = version$1;
33887
33698
 
33888
33699
  // Vue's inject() can only be used in setup
@@ -34180,7 +33991,7 @@
34180
33991
 
34181
33992
  /* eslint-disable local-rules/sort-imports */
34182
33993
 
34183
- const version = "3.9.1-dev.2025-07-17";
33994
+ const version = "3.9.1-master.2025-07-17";
34184
33995
 
34185
33996
  /* eslint-disable local-rules/sort-imports */
34186
33997