@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.
- package/CHANGELOG.md +16 -14
- package/dist/json/attributes.json +2954 -2974
- package/dist/json/importMap-labs.json +22 -22
- package/dist/json/importMap.json +184 -184
- package/dist/json/tags.json +0 -5
- package/dist/json/web-types.json +5821 -5891
- package/dist/vuetify-labs.cjs +27 -216
- package/dist/vuetify-labs.css +5981 -5983
- package/dist/vuetify-labs.d.ts +67 -129
- package/dist/vuetify-labs.esm.js +27 -216
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +27 -216
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +18 -178
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3778 -3780
- package/dist/vuetify.d.ts +67 -119
- package/dist/vuetify.esm.js +18 -178
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +18 -178
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +701 -723
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +0 -1
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.js +0 -1
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.d.ts +0 -15
- package/lib/components/VFileInput/VFileInput.js +9 -38
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VList/VList.js +1 -2
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListItem.js +1 -7
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.d.ts +0 -75
- package/lib/components/VProgressLinear/VProgressLinear.js +6 -32
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
- package/lib/components/VSelect/VSelect.js +0 -1
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +67 -67
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.d.ts +0 -15
- package/lib/labs/VFileUpload/VFileUpload.js +9 -39
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/package.json +1 -1
- package/lib/components/VProgressLinear/chunks.d.ts +0 -55
- package/lib/components/VProgressLinear/chunks.js +0 -62
- package/lib/components/VProgressLinear/chunks.js.map +0 -1
- package/lib/composables/fileFilter.d.ts +0 -18
- package/lib/composables/fileFilter.js +0 -38
- package/lib/composables/fileFilter.js.map +0 -1
package/dist/vuetify-labs.esm.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.9.2-
|
2
|
+
* Vuetify v3.9.2-master.2025-07-22
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -5165,69 +5165,6 @@ function useLocation(props) {
|
|
5165
5165
|
};
|
5166
5166
|
}
|
5167
5167
|
|
5168
|
-
// Utilities
|
5169
|
-
|
5170
|
-
// Types
|
5171
|
-
|
5172
|
-
// Composables
|
5173
|
-
const makeChunksProps = propsFactory({
|
5174
|
-
chunkCount: {
|
5175
|
-
type: [Number, String],
|
5176
|
-
default: null
|
5177
|
-
},
|
5178
|
-
chunkWidth: {
|
5179
|
-
type: [Number, String],
|
5180
|
-
default: null
|
5181
|
-
},
|
5182
|
-
chunkGap: {
|
5183
|
-
type: [Number, String],
|
5184
|
-
default: 4
|
5185
|
-
}
|
5186
|
-
}, 'chunks');
|
5187
|
-
function useChunks(props, containerWidth) {
|
5188
|
-
const hasChunks = toRef(() => !!props.chunkCount || !!props.chunkWidth);
|
5189
|
-
const chunkWidth = computed(() => {
|
5190
|
-
const containerSize = toValue(containerWidth);
|
5191
|
-
if (!containerSize) {
|
5192
|
-
return 0;
|
5193
|
-
}
|
5194
|
-
if (!props.chunkCount) {
|
5195
|
-
return Number(props.chunkWidth);
|
5196
|
-
}
|
5197
|
-
const count = Number(props.chunkCount);
|
5198
|
-
const availableWidth = containerSize - Number(props.chunkGap) * (count - 1);
|
5199
|
-
return availableWidth / count;
|
5200
|
-
});
|
5201
|
-
const chunkGap = toRef(() => Number(props.chunkGap));
|
5202
|
-
const chunksMaskStyles = computed(() => {
|
5203
|
-
if (!hasChunks.value) {
|
5204
|
-
return {};
|
5205
|
-
}
|
5206
|
-
const chunkGapPx = convertToUnit(chunkGap.value);
|
5207
|
-
const chunkWidthPx = convertToUnit(chunkWidth.value);
|
5208
|
-
return {
|
5209
|
-
maskRepeat: 'repeat-x',
|
5210
|
-
maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,
|
5211
|
-
maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`
|
5212
|
-
};
|
5213
|
-
});
|
5214
|
-
function snapValueToChunk(val) {
|
5215
|
-
const containerSize = toValue(containerWidth);
|
5216
|
-
if (!containerSize) {
|
5217
|
-
return val;
|
5218
|
-
}
|
5219
|
-
const gapRelativeSize = 100 * chunkGap.value / containerSize;
|
5220
|
-
const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize;
|
5221
|
-
const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize);
|
5222
|
-
return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100);
|
5223
|
-
}
|
5224
|
-
return {
|
5225
|
-
hasChunks,
|
5226
|
-
chunksMaskStyles,
|
5227
|
-
snapValueToChunk
|
5228
|
-
};
|
5229
|
-
}
|
5230
|
-
|
5231
5168
|
const makeVProgressLinearProps = propsFactory({
|
5232
5169
|
absolute: Boolean,
|
5233
5170
|
active: {
|
@@ -5262,7 +5199,6 @@ const makeVProgressLinearProps = propsFactory({
|
|
5262
5199
|
stream: Boolean,
|
5263
5200
|
striped: Boolean,
|
5264
5201
|
roundedBar: Boolean,
|
5265
|
-
...makeChunksProps(),
|
5266
5202
|
...makeComponentProps(),
|
5267
5203
|
...makeLocationProps({
|
5268
5204
|
location: 'top'
|
@@ -5281,7 +5217,6 @@ const VProgressLinear = genericComponent()({
|
|
5281
5217
|
let {
|
5282
5218
|
slots
|
5283
5219
|
} = _ref;
|
5284
|
-
const root = ref();
|
5285
5220
|
const progress = useProxiedModel(props, 'modelValue');
|
5286
5221
|
const {
|
5287
5222
|
isRtl,
|
@@ -5323,24 +5258,6 @@ const VProgressLinear = genericComponent()({
|
|
5323
5258
|
const isReversed = computed(() => isRtl.value !== props.reverse);
|
5324
5259
|
const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
|
5325
5260
|
const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;
|
5326
|
-
const containerWidth = shallowRef(0);
|
5327
|
-
const {
|
5328
|
-
hasChunks,
|
5329
|
-
chunksMaskStyles,
|
5330
|
-
snapValueToChunk
|
5331
|
-
} = useChunks(props, containerWidth);
|
5332
|
-
useToggleScope(hasChunks, () => {
|
5333
|
-
const {
|
5334
|
-
resizeRef
|
5335
|
-
} = useResizeObserver(entries => containerWidth.value = entries[0].contentRect.width);
|
5336
|
-
watchEffect(() => resizeRef.value = root.value);
|
5337
|
-
});
|
5338
|
-
const bufferWidth = computed(() => {
|
5339
|
-
return hasChunks.value ? snapValueToChunk(normalizedBuffer.value) : normalizedBuffer.value;
|
5340
|
-
});
|
5341
|
-
const barWidth = computed(() => {
|
5342
|
-
return hasChunks.value ? snapValueToChunk(normalizedValue.value) : normalizedValue.value;
|
5343
|
-
});
|
5344
5261
|
function handleClick(e) {
|
5345
5262
|
if (!intersectionRef.value) return;
|
5346
5263
|
const {
|
@@ -5351,11 +5268,8 @@ const VProgressLinear = genericComponent()({
|
|
5351
5268
|
const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;
|
5352
5269
|
progress.value = Math.round(value / width * max.value);
|
5353
5270
|
}
|
5354
|
-
watchEffect(() => {
|
5355
|
-
intersectionRef.value = root.value;
|
5356
|
-
});
|
5357
5271
|
useRender(() => createVNode(props.tag, {
|
5358
|
-
"ref":
|
5272
|
+
"ref": intersectionRef,
|
5359
5273
|
"class": normalizeClass(['v-progress-linear', {
|
5360
5274
|
'v-progress-linear--absolute': props.absolute,
|
5361
5275
|
'v-progress-linear--active': props.active && isIntersecting.value,
|
@@ -5370,7 +5284,7 @@ const VProgressLinear = genericComponent()({
|
|
5370
5284
|
height: props.active ? convertToUnit(height.value) : 0,
|
5371
5285
|
'--v-progress-linear-height': convertToUnit(height.value),
|
5372
5286
|
...(props.absolute ? locationStyles.value : {})
|
5373
|
-
},
|
5287
|
+
}, props.style]),
|
5374
5288
|
"role": "progressbar",
|
5375
5289
|
"aria-hidden": props.active ? 'false' : 'true',
|
5376
5290
|
"aria-valuemin": "0",
|
@@ -5400,7 +5314,7 @@ const VProgressLinear = genericComponent()({
|
|
5400
5314
|
"class": normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
|
5401
5315
|
"style": normalizeStyle([bufferColorStyles.value, {
|
5402
5316
|
opacity: parseFloat(props.bufferOpacity),
|
5403
|
-
width: convertToUnit(
|
5317
|
+
width: convertToUnit(normalizedBuffer.value, '%')
|
5404
5318
|
}])
|
5405
5319
|
}, null), createVNode(Transition, {
|
5406
5320
|
"name": transition.value
|
@@ -5408,7 +5322,7 @@ const VProgressLinear = genericComponent()({
|
|
5408
5322
|
default: () => [!props.indeterminate ? createElementVNode("div", {
|
5409
5323
|
"class": normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
|
5410
5324
|
"style": normalizeStyle([barColorStyles.value, {
|
5411
|
-
width: convertToUnit(
|
5325
|
+
width: convertToUnit(normalizedValue.value, '%')
|
5412
5326
|
}])
|
5413
5327
|
}, null) : createElementVNode("div", {
|
5414
5328
|
"class": "v-progress-linear__indeterminate"
|
@@ -9626,11 +9540,6 @@ const VListItem = genericComponent()({
|
|
9626
9540
|
const isLink = toRef(() => props.link !== false && link.isLink.value);
|
9627
9541
|
const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
|
9628
9542
|
const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
|
9629
|
-
const role = computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
|
9630
|
-
const ariaSelected = computed(() => {
|
9631
|
-
if (!isSelectable.value) return undefined;
|
9632
|
-
return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
|
9633
|
-
});
|
9634
9543
|
const roundedProps = toRef(() => props.rounded || props.nav);
|
9635
9544
|
const color = toRef(() => props.color ?? props.activeColor);
|
9636
9545
|
const variantProps = toRef(() => ({
|
@@ -9734,8 +9643,7 @@ const VListItem = genericComponent()({
|
|
9734
9643
|
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
|
9735
9644
|
"style": [colorStyles.value, dimensionStyles.value, props.style],
|
9736
9645
|
"tabindex": isClickable.value ? list ? -2 : 0 : undefined,
|
9737
|
-
"aria-selected":
|
9738
|
-
"role": role.value,
|
9646
|
+
"aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
|
9739
9647
|
"onClick": onClick,
|
9740
9648
|
"onKeydown": isClickable.value && !isLink.value && onKeyDown
|
9741
9649
|
}, link.linkProps), {
|
@@ -10237,7 +10145,6 @@ const VList = genericComponent()({
|
|
10237
10145
|
const activeColor = toRef(() => props.activeColor);
|
10238
10146
|
const baseColor = toRef(() => props.baseColor);
|
10239
10147
|
const color = toRef(() => props.color);
|
10240
|
-
const isSelectable = toRef(() => props.selectable || props.activatable);
|
10241
10148
|
createList({
|
10242
10149
|
filterable: props.filterable
|
10243
10150
|
});
|
@@ -10309,7 +10216,7 @@ const VList = genericComponent()({
|
|
10309
10216
|
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
|
10310
10217
|
"style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
|
10311
10218
|
"tabindex": props.disabled ? -1 : 0,
|
10312
|
-
"role":
|
10219
|
+
"role": "listbox",
|
10313
10220
|
"aria-activedescendant": undefined,
|
10314
10221
|
"onFocusin": onFocusin,
|
10315
10222
|
"onFocusout": onFocusout,
|
@@ -13379,7 +13286,6 @@ const VSelect = genericComponent()({
|
|
13379
13286
|
"onKeydown": onListKeydown,
|
13380
13287
|
"onFocusin": onFocusin,
|
13381
13288
|
"tabindex": "-1",
|
13382
|
-
"selectable": true,
|
13383
13289
|
"aria-live": "polite",
|
13384
13290
|
"aria-label": `${props.label}-list`,
|
13385
13291
|
"color": props.itemColor ?? props.color
|
@@ -13999,7 +13905,6 @@ const VAutocomplete = genericComponent()({
|
|
13999
13905
|
"onFocusin": onFocusin,
|
14000
13906
|
"onFocusout": onFocusout,
|
14001
13907
|
"tabindex": "-1",
|
14002
|
-
"selectable": true,
|
14003
13908
|
"aria-live": "polite",
|
14004
13909
|
"color": props.itemColor ?? props.color
|
14005
13910
|
}, listEvents, props.listProps), {
|
@@ -19087,7 +18992,6 @@ const VCombobox = genericComponent()({
|
|
19087
18992
|
"selected": selectedValues.value,
|
19088
18993
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
19089
18994
|
"onMousedown": e => e.preventDefault(),
|
19090
|
-
"selectable": true,
|
19091
18995
|
"onKeydown": onListKeydown,
|
19092
18996
|
"onFocusin": onFocusin,
|
19093
18997
|
"onFocusout": onFocusout,
|
@@ -24186,42 +24090,6 @@ function appendIfDirectory(path, item) {
|
|
24186
24090
|
return item.isDirectory ? `${path}/${item.name}` : path;
|
24187
24091
|
}
|
24188
24092
|
|
24189
|
-
// Utilities
|
24190
|
-
// Composables
|
24191
|
-
const makeFileFilterProps = propsFactory({
|
24192
|
-
filterByType: String
|
24193
|
-
}, 'file-accept');
|
24194
|
-
function useFileFilter(props) {
|
24195
|
-
const fileFilter = computed(() => props.filterByType ? createFilter(props.filterByType) : null);
|
24196
|
-
function filterAccepted(files) {
|
24197
|
-
if (fileFilter.value) {
|
24198
|
-
const accepted = files.filter(fileFilter.value);
|
24199
|
-
return {
|
24200
|
-
accepted,
|
24201
|
-
rejected: files.filter(f => !accepted.includes(f))
|
24202
|
-
};
|
24203
|
-
}
|
24204
|
-
return {
|
24205
|
-
accepted: files,
|
24206
|
-
rejected: []
|
24207
|
-
};
|
24208
|
-
}
|
24209
|
-
return {
|
24210
|
-
filterAccepted
|
24211
|
-
};
|
24212
|
-
}
|
24213
|
-
function createFilter(v) {
|
24214
|
-
const types = v.split(',').map(x => x.trim().toLowerCase());
|
24215
|
-
const extensionsToMatch = types.filter(x => x.startsWith('.'));
|
24216
|
-
const wildcards = types.filter(x => x.endsWith('/*'));
|
24217
|
-
const typesToMatch = types.filter(x => !extensionsToMatch.includes(x) && !wildcards.includes(x));
|
24218
|
-
return file => {
|
24219
|
-
const extension = file.name.split('.').at(-1)?.toLowerCase() ?? '';
|
24220
|
-
const typeGroup = file.type.split('/').at(0)?.toLowerCase() ?? '';
|
24221
|
-
return typesToMatch.includes(file.type) || extensionsToMatch.includes(`.${extension}`) || wildcards.includes(`${typeGroup}/*`);
|
24222
|
-
};
|
24223
|
-
}
|
24224
|
-
|
24225
24093
|
// Types
|
24226
24094
|
|
24227
24095
|
const makeVFileInputProps = propsFactory({
|
@@ -24254,7 +24122,6 @@ const makeVFileInputProps = propsFactory({
|
|
24254
24122
|
return wrapInArray(val).every(v => v != null && typeof v === 'object');
|
24255
24123
|
}
|
24256
24124
|
},
|
24257
|
-
...makeFileFilterProps(),
|
24258
24125
|
...makeVFieldProps({
|
24259
24126
|
clearable: true
|
24260
24127
|
})
|
@@ -24267,8 +24134,7 @@ const VFileInput = genericComponent()({
|
|
24267
24134
|
'click:control': e => true,
|
24268
24135
|
'mousedown:control': e => true,
|
24269
24136
|
'update:focused': focused => true,
|
24270
|
-
'update:modelValue': files => true
|
24271
|
-
rejected: files => true
|
24137
|
+
'update:modelValue': files => true
|
24272
24138
|
},
|
24273
24139
|
setup(props, _ref) {
|
24274
24140
|
let {
|
@@ -24279,9 +24145,6 @@ const VFileInput = genericComponent()({
|
|
24279
24145
|
const {
|
24280
24146
|
t
|
24281
24147
|
} = useLocale();
|
24282
|
-
const {
|
24283
|
-
filterAccepted
|
24284
|
-
} = useFileFilter(props);
|
24285
24148
|
const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);
|
24286
24149
|
const {
|
24287
24150
|
isFocused,
|
@@ -24355,38 +24218,14 @@ const VFileInput = genericComponent()({
|
|
24355
24218
|
e.stopImmediatePropagation();
|
24356
24219
|
isDragging.value = false;
|
24357
24220
|
if (!inputRef.value || !hasFilesOrFolders(e)) return;
|
24358
|
-
const allDroppedFiles = await handleDrop(e);
|
24359
|
-
selectAccepted(allDroppedFiles);
|
24360
|
-
}
|
24361
|
-
function onFileSelection(e) {
|
24362
|
-
if (!e.target || e.repack) return; // prevent loop
|
24363
|
-
|
24364
|
-
if (!props.filterByType) {
|
24365
|
-
const target = e.target;
|
24366
|
-
model.value = [...(target.files ?? [])];
|
24367
|
-
} else {
|
24368
|
-
selectAccepted([...e.target.files]);
|
24369
|
-
}
|
24370
|
-
}
|
24371
|
-
function selectAccepted(files) {
|
24372
24221
|
const dataTransfer = new DataTransfer();
|
24373
|
-
const {
|
24374
|
-
accepted,
|
24375
|
-
rejected
|
24376
|
-
} = filterAccepted(files);
|
24377
|
-
if (rejected.length) {
|
24378
|
-
emit('rejected', rejected);
|
24379
|
-
}
|
24380
|
-
for (const file of accepted) {
|
24222
|
+
for (const file of await handleDrop(e)) {
|
24381
24223
|
dataTransfer.items.add(file);
|
24382
24224
|
}
|
24383
24225
|
inputRef.value.files = dataTransfer.files;
|
24384
|
-
|
24385
|
-
const event = new Event('change', {
|
24226
|
+
inputRef.value.dispatchEvent(new Event('change', {
|
24386
24227
|
bubbles: true
|
24387
|
-
});
|
24388
|
-
event.repack = true;
|
24389
|
-
inputRef.value.dispatchEvent(event);
|
24228
|
+
}));
|
24390
24229
|
}
|
24391
24230
|
watch(model, newValue => {
|
24392
24231
|
const hasModelReset = !Array.isArray(newValue) || !newValue.length;
|
@@ -24403,8 +24242,6 @@ const VFileInput = genericComponent()({
|
|
24403
24242
|
...inputProps
|
24404
24243
|
} = VInput.filterProps(props);
|
24405
24244
|
const fieldProps = VField.filterProps(props);
|
24406
|
-
const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
|
24407
|
-
const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
|
24408
24245
|
return createVNode(VInput, mergeProps({
|
24409
24246
|
"ref": vInputRef,
|
24410
24247
|
"modelValue": props.multiple ? model.value : model.value[0],
|
@@ -24460,7 +24297,6 @@ const VFileInput = genericComponent()({
|
|
24460
24297
|
return createElementVNode(Fragment, null, [createElementVNode("input", mergeProps({
|
24461
24298
|
"ref": inputRef,
|
24462
24299
|
"type": "file",
|
24463
|
-
"accept": inputAccept,
|
24464
24300
|
"readonly": isReadonly.value,
|
24465
24301
|
"disabled": isDisabled.value,
|
24466
24302
|
"multiple": props.multiple,
|
@@ -24470,7 +24306,11 @@ const VFileInput = genericComponent()({
|
|
24470
24306
|
if (isReadonly.value) e.preventDefault();
|
24471
24307
|
onFocus();
|
24472
24308
|
},
|
24473
|
-
"onChange":
|
24309
|
+
"onChange": e => {
|
24310
|
+
if (!e.target) return;
|
24311
|
+
const target = e.target;
|
24312
|
+
model.value = [...(target.files ?? [])];
|
24313
|
+
},
|
24474
24314
|
"onDragleave": onDragleave,
|
24475
24315
|
"onFocus": onFocus,
|
24476
24316
|
"onBlur": blur
|
@@ -31988,7 +31828,6 @@ const makeVFileUploadProps = propsFactory({
|
|
31988
31828
|
},
|
31989
31829
|
showSize: Boolean,
|
31990
31830
|
name: String,
|
31991
|
-
...makeFileFilterProps(),
|
31992
31831
|
...makeDelayProps(),
|
31993
31832
|
...makeDensityProps(),
|
31994
31833
|
...pick(makeVDividerProps({
|
@@ -32001,13 +31840,11 @@ const VFileUpload = genericComponent()({
|
|
32001
31840
|
inheritAttrs: false,
|
32002
31841
|
props: makeVFileUploadProps(),
|
32003
31842
|
emits: {
|
32004
|
-
'update:modelValue': files => true
|
32005
|
-
rejected: files => true
|
31843
|
+
'update:modelValue': files => true
|
32006
31844
|
},
|
32007
31845
|
setup(props, _ref) {
|
32008
31846
|
let {
|
32009
31847
|
attrs,
|
32010
|
-
emit,
|
32011
31848
|
slots
|
32012
31849
|
} = _ref;
|
32013
31850
|
const {
|
@@ -32016,9 +31853,6 @@ const VFileUpload = genericComponent()({
|
|
32016
31853
|
const {
|
32017
31854
|
densityClasses
|
32018
31855
|
} = useDensity(props);
|
32019
|
-
const {
|
32020
|
-
filterAccepted
|
32021
|
-
} = useFileFilter(props);
|
32022
31856
|
const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
|
32023
31857
|
const isDragging = shallowRef(false);
|
32024
31858
|
const vSheetRef = ref(null);
|
@@ -32040,38 +31874,14 @@ const VFileUpload = genericComponent()({
|
|
32040
31874
|
e.stopImmediatePropagation();
|
32041
31875
|
isDragging.value = false;
|
32042
31876
|
if (!inputRef.value) return;
|
32043
|
-
const allDroppedFiles = await handleDrop(e);
|
32044
|
-
selectAccepted(allDroppedFiles);
|
32045
|
-
}
|
32046
|
-
function onFileSelection(e) {
|
32047
|
-
if (!e.target || e.repack) return; // prevent loop
|
32048
|
-
|
32049
|
-
if (!props.filterByType) {
|
32050
|
-
const target = e.target;
|
32051
|
-
model.value = [...(target.files ?? [])];
|
32052
|
-
} else {
|
32053
|
-
selectAccepted([...e.target.files]);
|
32054
|
-
}
|
32055
|
-
}
|
32056
|
-
function selectAccepted(files) {
|
32057
31877
|
const dataTransfer = new DataTransfer();
|
32058
|
-
const {
|
32059
|
-
accepted,
|
32060
|
-
rejected
|
32061
|
-
} = filterAccepted(files);
|
32062
|
-
if (rejected.length) {
|
32063
|
-
emit('rejected', rejected);
|
32064
|
-
}
|
32065
|
-
for (const file of accepted) {
|
31878
|
+
for (const file of await handleDrop(e)) {
|
32066
31879
|
dataTransfer.items.add(file);
|
32067
31880
|
}
|
32068
31881
|
inputRef.value.files = dataTransfer.files;
|
32069
|
-
|
32070
|
-
const event = new Event('change', {
|
31882
|
+
inputRef.value.dispatchEvent(new Event('change', {
|
32071
31883
|
bubbles: true
|
32072
|
-
});
|
32073
|
-
event.repack = true;
|
32074
|
-
inputRef.value.dispatchEvent(event);
|
31884
|
+
}));
|
32075
31885
|
}
|
32076
31886
|
function onClick() {
|
32077
31887
|
inputRef.value?.click();
|
@@ -32089,16 +31899,17 @@ const VFileUpload = genericComponent()({
|
|
32089
31899
|
const cardProps = VSheet.filterProps(props);
|
32090
31900
|
const dividerProps = VDivider.filterProps(props);
|
32091
31901
|
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
32092
|
-
const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
|
32093
|
-
const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
|
32094
31902
|
const inputNode = createElementVNode("input", mergeProps({
|
32095
31903
|
"ref": inputRef,
|
32096
31904
|
"type": "file",
|
32097
|
-
"accept": inputAccept,
|
32098
31905
|
"disabled": props.disabled,
|
32099
31906
|
"multiple": props.multiple,
|
32100
31907
|
"name": props.name,
|
32101
|
-
"onChange":
|
31908
|
+
"onChange": e => {
|
31909
|
+
if (!e.target) return;
|
31910
|
+
const target = e.target;
|
31911
|
+
model.value = [...(target.files ?? [])];
|
31912
|
+
}
|
32102
31913
|
}, inputAttrs), null);
|
32103
31914
|
return createElementVNode(Fragment, null, [createVNode(VSheet, mergeProps({
|
32104
31915
|
"ref": vSheetRef
|
@@ -33877,7 +33688,7 @@ function createVuetify$1() {
|
|
33877
33688
|
};
|
33878
33689
|
});
|
33879
33690
|
}
|
33880
|
-
const version$1 = "3.9.2-
|
33691
|
+
const version$1 = "3.9.2-master.2025-07-22";
|
33881
33692
|
createVuetify$1.version = version$1;
|
33882
33693
|
|
33883
33694
|
// Vue's inject() can only be used in setup
|
@@ -34175,7 +33986,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
34175
33986
|
|
34176
33987
|
/* eslint-disable local-rules/sort-imports */
|
34177
33988
|
|
34178
|
-
const version = "3.9.2-
|
33989
|
+
const version = "3.9.2-master.2025-07-22";
|
34179
33990
|
|
34180
33991
|
/* eslint-disable local-rules/sort-imports */
|
34181
33992
|
|