@vuetify/nightly 3.9.1-master.2025-07-17 → 3.9.2-dev.2025-07-18
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 +11 -5
- package/dist/json/attributes.json +3550 -3530
- package/dist/json/importMap-labs.json +12 -12
- package/dist/json/importMap.json +180 -180
- package/dist/json/tags.json +5 -0
- package/dist/json/web-types.json +20050 -6602
- package/dist/vuetify-labs.cjs +277 -89
- package/dist/vuetify-labs.css +4411 -4409
- package/dist/vuetify-labs.d.ts +124 -62
- package/dist/vuetify-labs.esm.js +277 -89
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +277 -89
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +239 -80
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2666 -2664
- package/dist/vuetify.d.ts +114 -62
- package/dist/vuetify.esm.js +239 -80
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +239 -80
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +724 -702
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +1 -0
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.js +1 -0
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.d.ts +15 -0
- package/lib/components/VFileInput/VFileInput.js +38 -9
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VList/VList.js +2 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListItem.js +7 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.d.ts +75 -0
- package/lib/components/VProgressLinear/VProgressLinear.js +32 -6
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
- package/lib/components/VProgressLinear/chunks.d.ts +55 -0
- package/lib/components/VProgressLinear/chunks.js +62 -0
- package/lib/components/VProgressLinear/chunks.js.map +1 -0
- package/lib/components/VSelect/VSelect.js +1 -0
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VTreeview/VTreeview.js +2 -3
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewChildren.js +59 -59
- package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/composables/fileFilter.d.ts +18 -0
- package/lib/composables/fileFilter.js +38 -0
- package/lib/composables/fileFilter.js.map +1 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +62 -62
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.d.ts +15 -0
- package/lib/labs/VFileUpload/VFileUpload.js +39 -9
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify.esm.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.9.
|
2
|
+
* Vuetify v3.9.2-dev.2025-07-18
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -5443,6 +5443,69 @@ function useLocation(props) {
|
|
5443
5443
|
};
|
5444
5444
|
}
|
5445
5445
|
|
5446
|
+
// Utilities
|
5447
|
+
|
5448
|
+
// Types
|
5449
|
+
|
5450
|
+
// Composables
|
5451
|
+
const makeChunksProps = propsFactory({
|
5452
|
+
chunkCount: {
|
5453
|
+
type: [Number, String],
|
5454
|
+
default: null
|
5455
|
+
},
|
5456
|
+
chunkWidth: {
|
5457
|
+
type: [Number, String],
|
5458
|
+
default: null
|
5459
|
+
},
|
5460
|
+
chunkGap: {
|
5461
|
+
type: [Number, String],
|
5462
|
+
default: 4
|
5463
|
+
}
|
5464
|
+
}, 'chunks');
|
5465
|
+
function useChunks(props, containerWidth) {
|
5466
|
+
const hasChunks = toRef(() => !!props.chunkCount || !!props.chunkWidth);
|
5467
|
+
const chunkWidth = computed(() => {
|
5468
|
+
const containerSize = toValue(containerWidth);
|
5469
|
+
if (!containerSize) {
|
5470
|
+
return 0;
|
5471
|
+
}
|
5472
|
+
if (!props.chunkCount) {
|
5473
|
+
return Number(props.chunkWidth);
|
5474
|
+
}
|
5475
|
+
const count = Number(props.chunkCount);
|
5476
|
+
const availableWidth = containerSize - Number(props.chunkGap) * (count - 1);
|
5477
|
+
return availableWidth / count;
|
5478
|
+
});
|
5479
|
+
const chunkGap = toRef(() => Number(props.chunkGap));
|
5480
|
+
const chunksMaskStyles = computed(() => {
|
5481
|
+
if (!hasChunks.value) {
|
5482
|
+
return {};
|
5483
|
+
}
|
5484
|
+
const chunkGapPx = convertToUnit(chunkGap.value);
|
5485
|
+
const chunkWidthPx = convertToUnit(chunkWidth.value);
|
5486
|
+
return {
|
5487
|
+
maskRepeat: 'repeat-x',
|
5488
|
+
maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,
|
5489
|
+
maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`
|
5490
|
+
};
|
5491
|
+
});
|
5492
|
+
function snapValueToChunk(val) {
|
5493
|
+
const containerSize = toValue(containerWidth);
|
5494
|
+
if (!containerSize) {
|
5495
|
+
return val;
|
5496
|
+
}
|
5497
|
+
const gapRelativeSize = 100 * chunkGap.value / containerSize;
|
5498
|
+
const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize;
|
5499
|
+
const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize);
|
5500
|
+
return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100);
|
5501
|
+
}
|
5502
|
+
return {
|
5503
|
+
hasChunks,
|
5504
|
+
chunksMaskStyles,
|
5505
|
+
snapValueToChunk
|
5506
|
+
};
|
5507
|
+
}
|
5508
|
+
|
5446
5509
|
const makeVProgressLinearProps = propsFactory({
|
5447
5510
|
absolute: Boolean,
|
5448
5511
|
active: {
|
@@ -5477,6 +5540,7 @@ const makeVProgressLinearProps = propsFactory({
|
|
5477
5540
|
stream: Boolean,
|
5478
5541
|
striped: Boolean,
|
5479
5542
|
roundedBar: Boolean,
|
5543
|
+
...makeChunksProps(),
|
5480
5544
|
...makeComponentProps(),
|
5481
5545
|
...makeLocationProps({
|
5482
5546
|
location: 'top'
|
@@ -5495,6 +5559,7 @@ const VProgressLinear = genericComponent()({
|
|
5495
5559
|
let {
|
5496
5560
|
slots
|
5497
5561
|
} = _ref;
|
5562
|
+
const root = ref();
|
5498
5563
|
const progress = useProxiedModel(props, 'modelValue');
|
5499
5564
|
const {
|
5500
5565
|
isRtl,
|
@@ -5536,6 +5601,24 @@ const VProgressLinear = genericComponent()({
|
|
5536
5601
|
const isReversed = computed(() => isRtl.value !== props.reverse);
|
5537
5602
|
const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
|
5538
5603
|
const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;
|
5604
|
+
const containerWidth = shallowRef(0);
|
5605
|
+
const {
|
5606
|
+
hasChunks,
|
5607
|
+
chunksMaskStyles,
|
5608
|
+
snapValueToChunk
|
5609
|
+
} = useChunks(props, containerWidth);
|
5610
|
+
useToggleScope(hasChunks, () => {
|
5611
|
+
const {
|
5612
|
+
resizeRef
|
5613
|
+
} = useResizeObserver(entries => containerWidth.value = entries[0].contentRect.width);
|
5614
|
+
watchEffect(() => resizeRef.value = root.value);
|
5615
|
+
});
|
5616
|
+
const bufferWidth = computed(() => {
|
5617
|
+
return hasChunks.value ? snapValueToChunk(normalizedBuffer.value) : normalizedBuffer.value;
|
5618
|
+
});
|
5619
|
+
const barWidth = computed(() => {
|
5620
|
+
return hasChunks.value ? snapValueToChunk(normalizedValue.value) : normalizedValue.value;
|
5621
|
+
});
|
5539
5622
|
function handleClick(e) {
|
5540
5623
|
if (!intersectionRef.value) return;
|
5541
5624
|
const {
|
@@ -5546,8 +5629,11 @@ const VProgressLinear = genericComponent()({
|
|
5546
5629
|
const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;
|
5547
5630
|
progress.value = Math.round(value / width * max.value);
|
5548
5631
|
}
|
5632
|
+
watchEffect(() => {
|
5633
|
+
intersectionRef.value = root.value;
|
5634
|
+
});
|
5549
5635
|
useRender(() => createVNode(props.tag, {
|
5550
|
-
"ref":
|
5636
|
+
"ref": root,
|
5551
5637
|
"class": normalizeClass(['v-progress-linear', {
|
5552
5638
|
'v-progress-linear--absolute': props.absolute,
|
5553
5639
|
'v-progress-linear--active': props.active && isIntersecting.value,
|
@@ -5562,7 +5648,7 @@ const VProgressLinear = genericComponent()({
|
|
5562
5648
|
height: props.active ? convertToUnit(height.value) : 0,
|
5563
5649
|
'--v-progress-linear-height': convertToUnit(height.value),
|
5564
5650
|
...(props.absolute ? locationStyles.value : {})
|
5565
|
-
}, props.style]),
|
5651
|
+
}, chunksMaskStyles.value, props.style]),
|
5566
5652
|
"role": "progressbar",
|
5567
5653
|
"aria-hidden": props.active ? 'false' : 'true',
|
5568
5654
|
"aria-valuemin": "0",
|
@@ -5592,7 +5678,7 @@ const VProgressLinear = genericComponent()({
|
|
5592
5678
|
"class": normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
|
5593
5679
|
"style": normalizeStyle([bufferColorStyles.value, {
|
5594
5680
|
opacity: parseFloat(props.bufferOpacity),
|
5595
|
-
width: convertToUnit(
|
5681
|
+
width: convertToUnit(bufferWidth.value, '%')
|
5596
5682
|
}])
|
5597
5683
|
}, null), createVNode(Transition, {
|
5598
5684
|
"name": transition.value
|
@@ -5600,7 +5686,7 @@ const VProgressLinear = genericComponent()({
|
|
5600
5686
|
default: () => [!props.indeterminate ? createElementVNode("div", {
|
5601
5687
|
"class": normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
|
5602
5688
|
"style": normalizeStyle([barColorStyles.value, {
|
5603
|
-
width: convertToUnit(
|
5689
|
+
width: convertToUnit(barWidth.value, '%')
|
5604
5690
|
}])
|
5605
5691
|
}, null) : createElementVNode("div", {
|
5606
5692
|
"class": "v-progress-linear__indeterminate"
|
@@ -9818,6 +9904,11 @@ const VListItem = genericComponent()({
|
|
9818
9904
|
const isLink = toRef(() => props.link !== false && link.isLink.value);
|
9819
9905
|
const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
|
9820
9906
|
const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
|
9907
|
+
const role = computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
|
9908
|
+
const ariaSelected = computed(() => {
|
9909
|
+
if (!isSelectable.value) return undefined;
|
9910
|
+
return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
|
9911
|
+
});
|
9821
9912
|
const roundedProps = toRef(() => props.rounded || props.nav);
|
9822
9913
|
const color = toRef(() => props.color ?? props.activeColor);
|
9823
9914
|
const variantProps = toRef(() => ({
|
@@ -9921,7 +10012,8 @@ const VListItem = genericComponent()({
|
|
9921
10012
|
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
|
9922
10013
|
"style": [colorStyles.value, dimensionStyles.value, props.style],
|
9923
10014
|
"tabindex": isClickable.value ? list ? -2 : 0 : undefined,
|
9924
|
-
"aria-selected":
|
10015
|
+
"aria-selected": ariaSelected.value,
|
10016
|
+
"role": role.value,
|
9925
10017
|
"onClick": onClick,
|
9926
10018
|
"onKeydown": isClickable.value && !isLink.value && onKeyDown
|
9927
10019
|
}, link.linkProps), {
|
@@ -10423,6 +10515,7 @@ const VList = genericComponent()({
|
|
10423
10515
|
const activeColor = toRef(() => props.activeColor);
|
10424
10516
|
const baseColor = toRef(() => props.baseColor);
|
10425
10517
|
const color = toRef(() => props.color);
|
10518
|
+
const isSelectable = toRef(() => props.selectable || props.activatable);
|
10426
10519
|
createList({
|
10427
10520
|
filterable: props.filterable
|
10428
10521
|
});
|
@@ -10494,7 +10587,7 @@ const VList = genericComponent()({
|
|
10494
10587
|
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
|
10495
10588
|
"style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
|
10496
10589
|
"tabindex": props.disabled ? -1 : 0,
|
10497
|
-
"role":
|
10590
|
+
"role": isSelectable.value ? 'listbox' : 'list',
|
10498
10591
|
"aria-activedescendant": undefined,
|
10499
10592
|
"onFocusin": onFocusin,
|
10500
10593
|
"onFocusout": onFocusout,
|
@@ -13564,6 +13657,7 @@ const VSelect = genericComponent()({
|
|
13564
13657
|
"onKeydown": onListKeydown,
|
13565
13658
|
"onFocusin": onFocusin,
|
13566
13659
|
"tabindex": "-1",
|
13660
|
+
"selectable": true,
|
13567
13661
|
"aria-live": "polite",
|
13568
13662
|
"aria-label": `${props.label}-list`,
|
13569
13663
|
"color": props.itemColor ?? props.color
|
@@ -14183,6 +14277,7 @@ const VAutocomplete = genericComponent()({
|
|
14183
14277
|
"onFocusin": onFocusin,
|
14184
14278
|
"onFocusout": onFocusout,
|
14185
14279
|
"tabindex": "-1",
|
14280
|
+
"selectable": true,
|
14186
14281
|
"aria-live": "polite",
|
14187
14282
|
"color": props.itemColor ?? props.color
|
14188
14283
|
}, listEvents, props.listProps), {
|
@@ -19270,6 +19365,7 @@ const VCombobox = genericComponent()({
|
|
19270
19365
|
"selected": selectedValues.value,
|
19271
19366
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
19272
19367
|
"onMousedown": e => e.preventDefault(),
|
19368
|
+
"selectable": true,
|
19273
19369
|
"onKeydown": onListKeydown,
|
19274
19370
|
"onFocusin": onFocusin,
|
19275
19371
|
"onFocusout": onFocusout,
|
@@ -24368,6 +24464,42 @@ function appendIfDirectory(path, item) {
|
|
24368
24464
|
return item.isDirectory ? `${path}/${item.name}` : path;
|
24369
24465
|
}
|
24370
24466
|
|
24467
|
+
// Utilities
|
24468
|
+
// Composables
|
24469
|
+
const makeFileFilterProps = propsFactory({
|
24470
|
+
filterByType: String
|
24471
|
+
}, 'file-accept');
|
24472
|
+
function useFileFilter(props) {
|
24473
|
+
const fileFilter = computed(() => props.filterByType ? createFilter(props.filterByType) : null);
|
24474
|
+
function filterAccepted(files) {
|
24475
|
+
if (fileFilter.value) {
|
24476
|
+
const accepted = files.filter(fileFilter.value);
|
24477
|
+
return {
|
24478
|
+
accepted,
|
24479
|
+
rejected: files.filter(f => !accepted.includes(f))
|
24480
|
+
};
|
24481
|
+
}
|
24482
|
+
return {
|
24483
|
+
accepted: files,
|
24484
|
+
rejected: []
|
24485
|
+
};
|
24486
|
+
}
|
24487
|
+
return {
|
24488
|
+
filterAccepted
|
24489
|
+
};
|
24490
|
+
}
|
24491
|
+
function createFilter(v) {
|
24492
|
+
const types = v.split(',').map(x => x.trim().toLowerCase());
|
24493
|
+
const extensionsToMatch = types.filter(x => x.startsWith('.'));
|
24494
|
+
const wildcards = types.filter(x => x.endsWith('/*'));
|
24495
|
+
const typesToMatch = types.filter(x => !extensionsToMatch.includes(x) && !wildcards.includes(x));
|
24496
|
+
return file => {
|
24497
|
+
const extension = file.name.split('.').at(-1)?.toLowerCase() ?? '';
|
24498
|
+
const typeGroup = file.type.split('/').at(0)?.toLowerCase() ?? '';
|
24499
|
+
return typesToMatch.includes(file.type) || extensionsToMatch.includes(`.${extension}`) || wildcards.includes(`${typeGroup}/*`);
|
24500
|
+
};
|
24501
|
+
}
|
24502
|
+
|
24371
24503
|
// Types
|
24372
24504
|
|
24373
24505
|
const makeVFileInputProps = propsFactory({
|
@@ -24400,6 +24532,7 @@ const makeVFileInputProps = propsFactory({
|
|
24400
24532
|
return wrapInArray(val).every(v => v != null && typeof v === 'object');
|
24401
24533
|
}
|
24402
24534
|
},
|
24535
|
+
...makeFileFilterProps(),
|
24403
24536
|
...makeVFieldProps({
|
24404
24537
|
clearable: true
|
24405
24538
|
})
|
@@ -24412,7 +24545,8 @@ const VFileInput = genericComponent()({
|
|
24412
24545
|
'click:control': e => true,
|
24413
24546
|
'mousedown:control': e => true,
|
24414
24547
|
'update:focused': focused => true,
|
24415
|
-
'update:modelValue': files => true
|
24548
|
+
'update:modelValue': files => true,
|
24549
|
+
rejected: files => true
|
24416
24550
|
},
|
24417
24551
|
setup(props, _ref) {
|
24418
24552
|
let {
|
@@ -24423,6 +24557,9 @@ const VFileInput = genericComponent()({
|
|
24423
24557
|
const {
|
24424
24558
|
t
|
24425
24559
|
} = useLocale();
|
24560
|
+
const {
|
24561
|
+
filterAccepted
|
24562
|
+
} = useFileFilter(props);
|
24426
24563
|
const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);
|
24427
24564
|
const {
|
24428
24565
|
isFocused,
|
@@ -24496,14 +24633,38 @@ const VFileInput = genericComponent()({
|
|
24496
24633
|
e.stopImmediatePropagation();
|
24497
24634
|
isDragging.value = false;
|
24498
24635
|
if (!inputRef.value || !hasFilesOrFolders(e)) return;
|
24636
|
+
const allDroppedFiles = await handleDrop(e);
|
24637
|
+
selectAccepted(allDroppedFiles);
|
24638
|
+
}
|
24639
|
+
function onFileSelection(e) {
|
24640
|
+
if (!e.target || e.repack) return; // prevent loop
|
24641
|
+
|
24642
|
+
if (!props.filterByType) {
|
24643
|
+
const target = e.target;
|
24644
|
+
model.value = [...(target.files ?? [])];
|
24645
|
+
} else {
|
24646
|
+
selectAccepted([...e.target.files]);
|
24647
|
+
}
|
24648
|
+
}
|
24649
|
+
function selectAccepted(files) {
|
24499
24650
|
const dataTransfer = new DataTransfer();
|
24500
|
-
|
24651
|
+
const {
|
24652
|
+
accepted,
|
24653
|
+
rejected
|
24654
|
+
} = filterAccepted(files);
|
24655
|
+
if (rejected.length) {
|
24656
|
+
emit('rejected', rejected);
|
24657
|
+
}
|
24658
|
+
for (const file of accepted) {
|
24501
24659
|
dataTransfer.items.add(file);
|
24502
24660
|
}
|
24503
24661
|
inputRef.value.files = dataTransfer.files;
|
24504
|
-
|
24662
|
+
model.value = [...dataTransfer.files];
|
24663
|
+
const event = new Event('change', {
|
24505
24664
|
bubbles: true
|
24506
|
-
})
|
24665
|
+
});
|
24666
|
+
event.repack = true;
|
24667
|
+
inputRef.value.dispatchEvent(event);
|
24507
24668
|
}
|
24508
24669
|
watch(model, newValue => {
|
24509
24670
|
const hasModelReset = !Array.isArray(newValue) || !newValue.length;
|
@@ -24520,6 +24681,8 @@ const VFileInput = genericComponent()({
|
|
24520
24681
|
...inputProps
|
24521
24682
|
} = VInput.filterProps(props);
|
24522
24683
|
const fieldProps = VField.filterProps(props);
|
24684
|
+
const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
|
24685
|
+
const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
|
24523
24686
|
return createVNode(VInput, mergeProps({
|
24524
24687
|
"ref": vInputRef,
|
24525
24688
|
"modelValue": props.multiple ? model.value : model.value[0],
|
@@ -24575,6 +24738,7 @@ const VFileInput = genericComponent()({
|
|
24575
24738
|
return createElementVNode(Fragment, null, [createElementVNode("input", mergeProps({
|
24576
24739
|
"ref": inputRef,
|
24577
24740
|
"type": "file",
|
24741
|
+
"accept": inputAccept,
|
24578
24742
|
"readonly": isReadonly.value,
|
24579
24743
|
"disabled": isDisabled.value,
|
24580
24744
|
"multiple": props.multiple,
|
@@ -24584,11 +24748,7 @@ const VFileInput = genericComponent()({
|
|
24584
24748
|
if (isReadonly.value) e.preventDefault();
|
24585
24749
|
onFocus();
|
24586
24750
|
},
|
24587
|
-
"onChange":
|
24588
|
-
if (!e.target) return;
|
24589
|
-
const target = e.target;
|
24590
|
-
model.value = [...(target.files ?? [])];
|
24591
|
-
},
|
24751
|
+
"onChange": onFileSelection,
|
24592
24752
|
"onDragleave": onDragleave,
|
24593
24753
|
"onFocus": onFocus,
|
24594
24754
|
"onBlur": blur
|
@@ -30623,51 +30783,48 @@ const VTreeviewChildren = genericComponent()({
|
|
30623
30783
|
parentIndentLines: props.parentIndentLines,
|
30624
30784
|
variant: props.indentLinesVariant
|
30625
30785
|
});
|
30626
|
-
|
30627
|
-
|
30628
|
-
|
30629
|
-
|
30630
|
-
|
30631
|
-
|
30632
|
-
|
30633
|
-
|
30634
|
-
|
30635
|
-
|
30636
|
-
|
30637
|
-
|
30638
|
-
|
30639
|
-
|
30640
|
-
|
30641
|
-
|
30642
|
-
|
30643
|
-
|
30644
|
-
|
30645
|
-
|
30646
|
-
|
30647
|
-
|
30648
|
-
|
30649
|
-
|
30650
|
-
|
30651
|
-
|
30652
|
-
|
30653
|
-
|
30654
|
-
|
30655
|
-
|
30656
|
-
|
30657
|
-
|
30658
|
-
|
30659
|
-
|
30660
|
-
|
30661
|
-
|
30662
|
-
|
30663
|
-
|
30664
|
-
|
30665
|
-
|
30666
|
-
|
30667
|
-
|
30668
|
-
$stable: true
|
30669
|
-
});
|
30670
|
-
}
|
30786
|
+
const slotsWithItem = {
|
30787
|
+
prepend: slotProps => createElementVNode(Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && createElementVNode("div", null, [createVNode(VCheckboxBtn, {
|
30788
|
+
"key": item.value,
|
30789
|
+
"modelValue": slotProps.isSelected,
|
30790
|
+
"disabled": props.disabled,
|
30791
|
+
"loading": loading,
|
30792
|
+
"color": props.selectedColor,
|
30793
|
+
"density": props.density,
|
30794
|
+
"indeterminate": slotProps.isIndeterminate,
|
30795
|
+
"indeterminateIcon": props.indeterminateIcon,
|
30796
|
+
"falseIcon": props.falseIcon,
|
30797
|
+
"trueIcon": props.trueIcon,
|
30798
|
+
"onUpdate:modelValue": v => selectItem(slotProps.select, v),
|
30799
|
+
"onClick": e => e.stopPropagation(),
|
30800
|
+
"onKeydown": e => {
|
30801
|
+
if (!['Enter', 'Space'].includes(e.key)) return;
|
30802
|
+
e.stopPropagation();
|
30803
|
+
selectItem(slotProps.select, slotProps.isSelected);
|
30804
|
+
}
|
30805
|
+
}, null)]), slots.prepend?.({
|
30806
|
+
...slotProps,
|
30807
|
+
...treeItemProps,
|
30808
|
+
item: item.raw,
|
30809
|
+
internalItem: item
|
30810
|
+
})]),
|
30811
|
+
append: slots.append ? slotProps => slots.append?.({
|
30812
|
+
...slotProps,
|
30813
|
+
...treeItemProps,
|
30814
|
+
item: item.raw,
|
30815
|
+
internalItem: item
|
30816
|
+
}) : undefined,
|
30817
|
+
title: slots.title ? slotProps => slots.title?.({
|
30818
|
+
...slotProps,
|
30819
|
+
item: item.raw,
|
30820
|
+
internalItem: item
|
30821
|
+
}) : undefined,
|
30822
|
+
subtitle: slots.subtitle ? slotProps => slots.subtitle?.({
|
30823
|
+
...slotProps,
|
30824
|
+
item: item.raw,
|
30825
|
+
internalItem: item
|
30826
|
+
}) : undefined
|
30827
|
+
};
|
30671
30828
|
const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
|
30672
30829
|
const treeviewChildrenProps = VTreeviewChildren.filterProps({
|
30673
30830
|
...props,
|
@@ -30681,16 +30838,21 @@ const VTreeviewChildren = genericComponent()({
|
|
30681
30838
|
let {
|
30682
30839
|
props: activatorProps
|
30683
30840
|
} = _ref2;
|
30684
|
-
|
30841
|
+
const listItemProps = {
|
30685
30842
|
...itemProps,
|
30686
30843
|
...activatorProps,
|
30687
|
-
|
30688
|
-
hideActions: props.hideActions,
|
30689
|
-
indentLines: indentLines.node,
|
30690
|
-
value: props.returnObject ? item.raw : itemProps.value,
|
30844
|
+
value: itemProps?.value,
|
30691
30845
|
onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
|
30692
30846
|
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
|
30693
|
-
}
|
30847
|
+
};
|
30848
|
+
return createVNode(VTreeviewItem, mergeProps({
|
30849
|
+
"ref": el => activatorItems.value[index] = el
|
30850
|
+
}, listItemProps, {
|
30851
|
+
"hideActions": props.hideActions,
|
30852
|
+
"indentLines": indentLines.node,
|
30853
|
+
"value": props.returnObject ? item.raw : itemProps.value,
|
30854
|
+
"loading": loading
|
30855
|
+
}), slotsWithItem);
|
30694
30856
|
},
|
30695
30857
|
default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
|
30696
30858
|
"items": children,
|
@@ -30698,8 +30860,7 @@ const VTreeviewChildren = genericComponent()({
|
|
30698
30860
|
"parentIndentLines": indentLines.children,
|
30699
30861
|
"isLastGroup": nextItemHasChildren,
|
30700
30862
|
"returnObject": props.returnObject
|
30701
|
-
}), slots)
|
30702
|
-
$stable: true
|
30863
|
+
}), slots)
|
30703
30864
|
}) : renderSlot(slots.item, {
|
30704
30865
|
props: itemProps,
|
30705
30866
|
item: item.raw,
|
@@ -30715,12 +30876,11 @@ const VTreeviewChildren = genericComponent()({
|
|
30715
30876
|
props: item.raw
|
30716
30877
|
}, () => createVNode(VListSubheader, item.props, null));
|
30717
30878
|
}
|
30718
|
-
return
|
30719
|
-
|
30720
|
-
|
30721
|
-
|
30722
|
-
|
30723
|
-
});
|
30879
|
+
return createVNode(VTreeviewItem, mergeProps(itemProps, {
|
30880
|
+
"hideActions": props.hideActions,
|
30881
|
+
"indentLines": indentLines.leaf,
|
30882
|
+
"value": props.returnObject ? toRaw(item.raw) : itemProps.value
|
30883
|
+
}), slotsWithItem);
|
30724
30884
|
});
|
30725
30885
|
});
|
30726
30886
|
}
|
@@ -30859,14 +31019,13 @@ const VTreeview = genericComponent()({
|
|
30859
31019
|
"selected": selected.value,
|
30860
31020
|
"onUpdate:selected": $event => selected.value = $event
|
30861
31021
|
}), {
|
30862
|
-
default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
|
31022
|
+
default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
|
30863
31023
|
"density": props.density,
|
30864
31024
|
"returnObject": props.returnObject,
|
30865
31025
|
"items": items.value,
|
30866
31026
|
"parentIndentLines": props.indentLines ? [] : undefined,
|
30867
31027
|
"indentLinesVariant": indentLinesVariant
|
30868
|
-
}), slots)
|
30869
|
-
$stable: true
|
31028
|
+
}), slots)]
|
30870
31029
|
});
|
30871
31030
|
});
|
30872
31031
|
return {};
|
@@ -31385,7 +31544,7 @@ function createVuetify$1() {
|
|
31385
31544
|
};
|
31386
31545
|
});
|
31387
31546
|
}
|
31388
|
-
const version$1 = "3.9.
|
31547
|
+
const version$1 = "3.9.2-dev.2025-07-18";
|
31389
31548
|
createVuetify$1.version = version$1;
|
31390
31549
|
|
31391
31550
|
// Vue's inject() can only be used in setup
|
@@ -31410,7 +31569,7 @@ const createVuetify = function () {
|
|
31410
31569
|
...options
|
31411
31570
|
});
|
31412
31571
|
};
|
31413
|
-
const version = "3.9.
|
31572
|
+
const version = "3.9.2-dev.2025-07-18";
|
31414
31573
|
createVuetify.version = version;
|
31415
31574
|
|
31416
31575
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };
|