@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.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
|
*/
|
@@ -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":
|
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
|
-
},
|
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(
|
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(
|
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":
|
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":
|
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
|
-
|
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":
|
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
|
-
|
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":
|
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-
|
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-
|
33993
|
+
const version = "3.9.2-master.2025-07-22";
|
34183
33994
|
|
34184
33995
|
/* eslint-disable local-rules/sort-imports */
|
34185
33996
|
|