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

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 +16 -14
  2. package/dist/json/attributes.json +2954 -2974
  3. package/dist/json/importMap-labs.json +22 -22
  4. package/dist/json/importMap.json +184 -184
  5. package/dist/json/tags.json +0 -5
  6. package/dist/json/web-types.json +5821 -5891
  7. package/dist/vuetify-labs.cjs +27 -216
  8. package/dist/vuetify-labs.css +5981 -5983
  9. package/dist/vuetify-labs.d.ts +67 -129
  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 +3778 -3780
  17. package/dist/vuetify.d.ts +67 -119
  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 +67 -67
  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.2-dev.2025-07-18
2
+ * Vuetify v3.9.2-master.2025-07-22
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
@@ -31992,7 +31832,6 @@
31992
31832
  },
31993
31833
  showSize: Boolean,
31994
31834
  name: String,
31995
- ...makeFileFilterProps(),
31996
31835
  ...makeDelayProps(),
31997
31836
  ...makeDensityProps(),
31998
31837
  ...pick(makeVDividerProps({
@@ -32005,13 +31844,11 @@
32005
31844
  inheritAttrs: false,
32006
31845
  props: makeVFileUploadProps(),
32007
31846
  emits: {
32008
- 'update:modelValue': files => true,
32009
- rejected: files => true
31847
+ 'update:modelValue': files => true
32010
31848
  },
32011
31849
  setup(props, _ref) {
32012
31850
  let {
32013
31851
  attrs,
32014
- emit,
32015
31852
  slots
32016
31853
  } = _ref;
32017
31854
  const {
@@ -32020,9 +31857,6 @@
32020
31857
  const {
32021
31858
  densityClasses
32022
31859
  } = useDensity(props);
32023
- const {
32024
- filterAccepted
32025
- } = useFileFilter(props);
32026
31860
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
32027
31861
  const isDragging = vue.shallowRef(false);
32028
31862
  const vSheetRef = vue.ref(null);
@@ -32044,38 +31878,14 @@
32044
31878
  e.stopImmediatePropagation();
32045
31879
  isDragging.value = false;
32046
31880
  if (!inputRef.value) return;
32047
- const allDroppedFiles = await handleDrop(e);
32048
- selectAccepted(allDroppedFiles);
32049
- }
32050
- function onFileSelection(e) {
32051
- if (!e.target || e.repack) return; // prevent loop
32052
-
32053
- if (!props.filterByType) {
32054
- const target = e.target;
32055
- model.value = [...(target.files ?? [])];
32056
- } else {
32057
- selectAccepted([...e.target.files]);
32058
- }
32059
- }
32060
- function selectAccepted(files) {
32061
31881
  const dataTransfer = new DataTransfer();
32062
- const {
32063
- accepted,
32064
- rejected
32065
- } = filterAccepted(files);
32066
- if (rejected.length) {
32067
- emit('rejected', rejected);
32068
- }
32069
- for (const file of accepted) {
31882
+ for (const file of await handleDrop(e)) {
32070
31883
  dataTransfer.items.add(file);
32071
31884
  }
32072
31885
  inputRef.value.files = dataTransfer.files;
32073
- model.value = [...dataTransfer.files];
32074
- const event = new Event('change', {
31886
+ inputRef.value.dispatchEvent(new Event('change', {
32075
31887
  bubbles: true
32076
- });
32077
- event.repack = true;
32078
- inputRef.value.dispatchEvent(event);
31888
+ }));
32079
31889
  }
32080
31890
  function onClick() {
32081
31891
  inputRef.value?.click();
@@ -32093,16 +31903,17 @@
32093
31903
  const cardProps = VSheet.filterProps(props);
32094
31904
  const dividerProps = VDivider.filterProps(props);
32095
31905
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
32096
- const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
32097
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
32098
31906
  const inputNode = vue.createElementVNode("input", vue.mergeProps({
32099
31907
  "ref": inputRef,
32100
31908
  "type": "file",
32101
- "accept": inputAccept,
32102
31909
  "disabled": props.disabled,
32103
31910
  "multiple": props.multiple,
32104
31911
  "name": props.name,
32105
- "onChange": onFileSelection
31912
+ "onChange": e => {
31913
+ if (!e.target) return;
31914
+ const target = e.target;
31915
+ model.value = [...(target.files ?? [])];
31916
+ }
32106
31917
  }, inputAttrs), null);
32107
31918
  return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VSheet, vue.mergeProps({
32108
31919
  "ref": vSheetRef
@@ -33881,7 +33692,7 @@
33881
33692
  };
33882
33693
  });
33883
33694
  }
33884
- const version$1 = "3.9.2-dev.2025-07-18";
33695
+ const version$1 = "3.9.2-master.2025-07-22";
33885
33696
  createVuetify$1.version = version$1;
33886
33697
 
33887
33698
  // Vue's inject() can only be used in setup
@@ -34179,7 +33990,7 @@
34179
33990
 
34180
33991
  /* eslint-disable local-rules/sort-imports */
34181
33992
 
34182
- const version = "3.9.2-dev.2025-07-18";
33993
+ const version = "3.9.2-master.2025-07-22";
34183
33994
 
34184
33995
  /* eslint-disable local-rules/sort-imports */
34185
33996