@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.cjs
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
|
*/
|
@@ -5447,6 +5447,69 @@
|
|
5447
5447
|
};
|
5448
5448
|
}
|
5449
5449
|
|
5450
|
+
// Utilities
|
5451
|
+
|
5452
|
+
// Types
|
5453
|
+
|
5454
|
+
// Composables
|
5455
|
+
const makeChunksProps = propsFactory({
|
5456
|
+
chunkCount: {
|
5457
|
+
type: [Number, String],
|
5458
|
+
default: null
|
5459
|
+
},
|
5460
|
+
chunkWidth: {
|
5461
|
+
type: [Number, String],
|
5462
|
+
default: null
|
5463
|
+
},
|
5464
|
+
chunkGap: {
|
5465
|
+
type: [Number, String],
|
5466
|
+
default: 4
|
5467
|
+
}
|
5468
|
+
}, 'chunks');
|
5469
|
+
function useChunks(props, containerWidth) {
|
5470
|
+
const hasChunks = vue.toRef(() => !!props.chunkCount || !!props.chunkWidth);
|
5471
|
+
const chunkWidth = vue.computed(() => {
|
5472
|
+
const containerSize = vue.toValue(containerWidth);
|
5473
|
+
if (!containerSize) {
|
5474
|
+
return 0;
|
5475
|
+
}
|
5476
|
+
if (!props.chunkCount) {
|
5477
|
+
return Number(props.chunkWidth);
|
5478
|
+
}
|
5479
|
+
const count = Number(props.chunkCount);
|
5480
|
+
const availableWidth = containerSize - Number(props.chunkGap) * (count - 1);
|
5481
|
+
return availableWidth / count;
|
5482
|
+
});
|
5483
|
+
const chunkGap = vue.toRef(() => Number(props.chunkGap));
|
5484
|
+
const chunksMaskStyles = vue.computed(() => {
|
5485
|
+
if (!hasChunks.value) {
|
5486
|
+
return {};
|
5487
|
+
}
|
5488
|
+
const chunkGapPx = convertToUnit(chunkGap.value);
|
5489
|
+
const chunkWidthPx = convertToUnit(chunkWidth.value);
|
5490
|
+
return {
|
5491
|
+
maskRepeat: 'repeat-x',
|
5492
|
+
maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,
|
5493
|
+
maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`
|
5494
|
+
};
|
5495
|
+
});
|
5496
|
+
function snapValueToChunk(val) {
|
5497
|
+
const containerSize = vue.toValue(containerWidth);
|
5498
|
+
if (!containerSize) {
|
5499
|
+
return val;
|
5500
|
+
}
|
5501
|
+
const gapRelativeSize = 100 * chunkGap.value / containerSize;
|
5502
|
+
const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize;
|
5503
|
+
const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize);
|
5504
|
+
return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100);
|
5505
|
+
}
|
5506
|
+
return {
|
5507
|
+
hasChunks,
|
5508
|
+
chunksMaskStyles,
|
5509
|
+
snapValueToChunk
|
5510
|
+
};
|
5511
|
+
}
|
5512
|
+
|
5450
5513
|
const makeVProgressLinearProps = propsFactory({
|
5451
5514
|
absolute: Boolean,
|
5452
5515
|
active: {
|
@@ -5481,6 +5544,7 @@
|
|
5481
5544
|
stream: Boolean,
|
5482
5545
|
striped: Boolean,
|
5483
5546
|
roundedBar: Boolean,
|
5547
|
+
...makeChunksProps(),
|
5484
5548
|
...makeComponentProps(),
|
5485
5549
|
...makeLocationProps({
|
5486
5550
|
location: 'top'
|
@@ -5499,6 +5563,7 @@
|
|
5499
5563
|
let {
|
5500
5564
|
slots
|
5501
5565
|
} = _ref;
|
5566
|
+
const root = vue.ref();
|
5502
5567
|
const progress = useProxiedModel(props, 'modelValue');
|
5503
5568
|
const {
|
5504
5569
|
isRtl,
|
@@ -5540,6 +5605,24 @@
|
|
5540
5605
|
const isReversed = vue.computed(() => isRtl.value !== props.reverse);
|
5541
5606
|
const transition = vue.computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
|
5542
5607
|
const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;
|
5608
|
+
const containerWidth = vue.shallowRef(0);
|
5609
|
+
const {
|
5610
|
+
hasChunks,
|
5611
|
+
chunksMaskStyles,
|
5612
|
+
snapValueToChunk
|
5613
|
+
} = useChunks(props, containerWidth);
|
5614
|
+
useToggleScope(hasChunks, () => {
|
5615
|
+
const {
|
5616
|
+
resizeRef
|
5617
|
+
} = useResizeObserver(entries => containerWidth.value = entries[0].contentRect.width);
|
5618
|
+
vue.watchEffect(() => resizeRef.value = root.value);
|
5619
|
+
});
|
5620
|
+
const bufferWidth = vue.computed(() => {
|
5621
|
+
return hasChunks.value ? snapValueToChunk(normalizedBuffer.value) : normalizedBuffer.value;
|
5622
|
+
});
|
5623
|
+
const barWidth = vue.computed(() => {
|
5624
|
+
return hasChunks.value ? snapValueToChunk(normalizedValue.value) : normalizedValue.value;
|
5625
|
+
});
|
5543
5626
|
function handleClick(e) {
|
5544
5627
|
if (!intersectionRef.value) return;
|
5545
5628
|
const {
|
@@ -5550,8 +5633,11 @@
|
|
5550
5633
|
const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;
|
5551
5634
|
progress.value = Math.round(value / width * max.value);
|
5552
5635
|
}
|
5636
|
+
vue.watchEffect(() => {
|
5637
|
+
intersectionRef.value = root.value;
|
5638
|
+
});
|
5553
5639
|
useRender(() => vue.createVNode(props.tag, {
|
5554
|
-
"ref":
|
5640
|
+
"ref": root,
|
5555
5641
|
"class": vue.normalizeClass(['v-progress-linear', {
|
5556
5642
|
'v-progress-linear--absolute': props.absolute,
|
5557
5643
|
'v-progress-linear--active': props.active && isIntersecting.value,
|
@@ -5566,7 +5652,7 @@
|
|
5566
5652
|
height: props.active ? convertToUnit(height.value) : 0,
|
5567
5653
|
'--v-progress-linear-height': convertToUnit(height.value),
|
5568
5654
|
...(props.absolute ? locationStyles.value : {})
|
5569
|
-
}, props.style]),
|
5655
|
+
}, chunksMaskStyles.value, props.style]),
|
5570
5656
|
"role": "progressbar",
|
5571
5657
|
"aria-hidden": props.active ? 'false' : 'true',
|
5572
5658
|
"aria-valuemin": "0",
|
@@ -5596,7 +5682,7 @@
|
|
5596
5682
|
"class": vue.normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
|
5597
5683
|
"style": vue.normalizeStyle([bufferColorStyles.value, {
|
5598
5684
|
opacity: parseFloat(props.bufferOpacity),
|
5599
|
-
width: convertToUnit(
|
5685
|
+
width: convertToUnit(bufferWidth.value, '%')
|
5600
5686
|
}])
|
5601
5687
|
}, null), vue.createVNode(vue.Transition, {
|
5602
5688
|
"name": transition.value
|
@@ -5604,7 +5690,7 @@
|
|
5604
5690
|
default: () => [!props.indeterminate ? vue.createElementVNode("div", {
|
5605
5691
|
"class": vue.normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
|
5606
5692
|
"style": vue.normalizeStyle([barColorStyles.value, {
|
5607
|
-
width: convertToUnit(
|
5693
|
+
width: convertToUnit(barWidth.value, '%')
|
5608
5694
|
}])
|
5609
5695
|
}, null) : vue.createElementVNode("div", {
|
5610
5696
|
"class": "v-progress-linear__indeterminate"
|
@@ -9822,6 +9908,11 @@
|
|
9822
9908
|
const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
|
9823
9909
|
const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
|
9824
9910
|
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
|
9911
|
+
const role = vue.computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
|
9912
|
+
const ariaSelected = vue.computed(() => {
|
9913
|
+
if (!isSelectable.value) return undefined;
|
9914
|
+
return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
|
9915
|
+
});
|
9825
9916
|
const roundedProps = vue.toRef(() => props.rounded || props.nav);
|
9826
9917
|
const color = vue.toRef(() => props.color ?? props.activeColor);
|
9827
9918
|
const variantProps = vue.toRef(() => ({
|
@@ -9925,7 +10016,8 @@
|
|
9925
10016
|
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
|
9926
10017
|
"style": [colorStyles.value, dimensionStyles.value, props.style],
|
9927
10018
|
"tabindex": isClickable.value ? list ? -2 : 0 : undefined,
|
9928
|
-
"aria-selected":
|
10019
|
+
"aria-selected": ariaSelected.value,
|
10020
|
+
"role": role.value,
|
9929
10021
|
"onClick": onClick,
|
9930
10022
|
"onKeydown": isClickable.value && !isLink.value && onKeyDown
|
9931
10023
|
}, link.linkProps), {
|
@@ -10427,6 +10519,7 @@
|
|
10427
10519
|
const activeColor = vue.toRef(() => props.activeColor);
|
10428
10520
|
const baseColor = vue.toRef(() => props.baseColor);
|
10429
10521
|
const color = vue.toRef(() => props.color);
|
10522
|
+
const isSelectable = vue.toRef(() => props.selectable || props.activatable);
|
10430
10523
|
createList({
|
10431
10524
|
filterable: props.filterable
|
10432
10525
|
});
|
@@ -10498,7 +10591,7 @@
|
|
10498
10591
|
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
|
10499
10592
|
"style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
|
10500
10593
|
"tabindex": props.disabled ? -1 : 0,
|
10501
|
-
"role":
|
10594
|
+
"role": isSelectable.value ? 'listbox' : 'list',
|
10502
10595
|
"aria-activedescendant": undefined,
|
10503
10596
|
"onFocusin": onFocusin,
|
10504
10597
|
"onFocusout": onFocusout,
|
@@ -13568,6 +13661,7 @@
|
|
13568
13661
|
"onKeydown": onListKeydown,
|
13569
13662
|
"onFocusin": onFocusin,
|
13570
13663
|
"tabindex": "-1",
|
13664
|
+
"selectable": true,
|
13571
13665
|
"aria-live": "polite",
|
13572
13666
|
"aria-label": `${props.label}-list`,
|
13573
13667
|
"color": props.itemColor ?? props.color
|
@@ -14187,6 +14281,7 @@
|
|
14187
14281
|
"onFocusin": onFocusin,
|
14188
14282
|
"onFocusout": onFocusout,
|
14189
14283
|
"tabindex": "-1",
|
14284
|
+
"selectable": true,
|
14190
14285
|
"aria-live": "polite",
|
14191
14286
|
"color": props.itemColor ?? props.color
|
14192
14287
|
}, listEvents, props.listProps), {
|
@@ -19274,6 +19369,7 @@
|
|
19274
19369
|
"selected": selectedValues.value,
|
19275
19370
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
19276
19371
|
"onMousedown": e => e.preventDefault(),
|
19372
|
+
"selectable": true,
|
19277
19373
|
"onKeydown": onListKeydown,
|
19278
19374
|
"onFocusin": onFocusin,
|
19279
19375
|
"onFocusout": onFocusout,
|
@@ -24372,6 +24468,42 @@
|
|
24372
24468
|
return item.isDirectory ? `${path}/${item.name}` : path;
|
24373
24469
|
}
|
24374
24470
|
|
24471
|
+
// Utilities
|
24472
|
+
// Composables
|
24473
|
+
const makeFileFilterProps = propsFactory({
|
24474
|
+
filterByType: String
|
24475
|
+
}, 'file-accept');
|
24476
|
+
function useFileFilter(props) {
|
24477
|
+
const fileFilter = vue.computed(() => props.filterByType ? createFilter(props.filterByType) : null);
|
24478
|
+
function filterAccepted(files) {
|
24479
|
+
if (fileFilter.value) {
|
24480
|
+
const accepted = files.filter(fileFilter.value);
|
24481
|
+
return {
|
24482
|
+
accepted,
|
24483
|
+
rejected: files.filter(f => !accepted.includes(f))
|
24484
|
+
};
|
24485
|
+
}
|
24486
|
+
return {
|
24487
|
+
accepted: files,
|
24488
|
+
rejected: []
|
24489
|
+
};
|
24490
|
+
}
|
24491
|
+
return {
|
24492
|
+
filterAccepted
|
24493
|
+
};
|
24494
|
+
}
|
24495
|
+
function createFilter(v) {
|
24496
|
+
const types = v.split(',').map(x => x.trim().toLowerCase());
|
24497
|
+
const extensionsToMatch = types.filter(x => x.startsWith('.'));
|
24498
|
+
const wildcards = types.filter(x => x.endsWith('/*'));
|
24499
|
+
const typesToMatch = types.filter(x => !extensionsToMatch.includes(x) && !wildcards.includes(x));
|
24500
|
+
return file => {
|
24501
|
+
const extension = file.name.split('.').at(-1)?.toLowerCase() ?? '';
|
24502
|
+
const typeGroup = file.type.split('/').at(0)?.toLowerCase() ?? '';
|
24503
|
+
return typesToMatch.includes(file.type) || extensionsToMatch.includes(`.${extension}`) || wildcards.includes(`${typeGroup}/*`);
|
24504
|
+
};
|
24505
|
+
}
|
24506
|
+
|
24375
24507
|
// Types
|
24376
24508
|
|
24377
24509
|
const makeVFileInputProps = propsFactory({
|
@@ -24404,6 +24536,7 @@
|
|
24404
24536
|
return wrapInArray(val).every(v => v != null && typeof v === 'object');
|
24405
24537
|
}
|
24406
24538
|
},
|
24539
|
+
...makeFileFilterProps(),
|
24407
24540
|
...makeVFieldProps({
|
24408
24541
|
clearable: true
|
24409
24542
|
})
|
@@ -24416,7 +24549,8 @@
|
|
24416
24549
|
'click:control': e => true,
|
24417
24550
|
'mousedown:control': e => true,
|
24418
24551
|
'update:focused': focused => true,
|
24419
|
-
'update:modelValue': files => true
|
24552
|
+
'update:modelValue': files => true,
|
24553
|
+
rejected: files => true
|
24420
24554
|
},
|
24421
24555
|
setup(props, _ref) {
|
24422
24556
|
let {
|
@@ -24427,6 +24561,9 @@
|
|
24427
24561
|
const {
|
24428
24562
|
t
|
24429
24563
|
} = useLocale();
|
24564
|
+
const {
|
24565
|
+
filterAccepted
|
24566
|
+
} = useFileFilter(props);
|
24430
24567
|
const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);
|
24431
24568
|
const {
|
24432
24569
|
isFocused,
|
@@ -24500,14 +24637,38 @@
|
|
24500
24637
|
e.stopImmediatePropagation();
|
24501
24638
|
isDragging.value = false;
|
24502
24639
|
if (!inputRef.value || !hasFilesOrFolders(e)) return;
|
24640
|
+
const allDroppedFiles = await handleDrop(e);
|
24641
|
+
selectAccepted(allDroppedFiles);
|
24642
|
+
}
|
24643
|
+
function onFileSelection(e) {
|
24644
|
+
if (!e.target || e.repack) return; // prevent loop
|
24645
|
+
|
24646
|
+
if (!props.filterByType) {
|
24647
|
+
const target = e.target;
|
24648
|
+
model.value = [...(target.files ?? [])];
|
24649
|
+
} else {
|
24650
|
+
selectAccepted([...e.target.files]);
|
24651
|
+
}
|
24652
|
+
}
|
24653
|
+
function selectAccepted(files) {
|
24503
24654
|
const dataTransfer = new DataTransfer();
|
24504
|
-
|
24655
|
+
const {
|
24656
|
+
accepted,
|
24657
|
+
rejected
|
24658
|
+
} = filterAccepted(files);
|
24659
|
+
if (rejected.length) {
|
24660
|
+
emit('rejected', rejected);
|
24661
|
+
}
|
24662
|
+
for (const file of accepted) {
|
24505
24663
|
dataTransfer.items.add(file);
|
24506
24664
|
}
|
24507
24665
|
inputRef.value.files = dataTransfer.files;
|
24508
|
-
|
24666
|
+
model.value = [...dataTransfer.files];
|
24667
|
+
const event = new Event('change', {
|
24509
24668
|
bubbles: true
|
24510
|
-
})
|
24669
|
+
});
|
24670
|
+
event.repack = true;
|
24671
|
+
inputRef.value.dispatchEvent(event);
|
24511
24672
|
}
|
24512
24673
|
vue.watch(model, newValue => {
|
24513
24674
|
const hasModelReset = !Array.isArray(newValue) || !newValue.length;
|
@@ -24524,6 +24685,8 @@
|
|
24524
24685
|
...inputProps
|
24525
24686
|
} = VInput.filterProps(props);
|
24526
24687
|
const fieldProps = VField.filterProps(props);
|
24688
|
+
const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
|
24689
|
+
const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
|
24527
24690
|
return vue.createVNode(VInput, vue.mergeProps({
|
24528
24691
|
"ref": vInputRef,
|
24529
24692
|
"modelValue": props.multiple ? model.value : model.value[0],
|
@@ -24579,6 +24742,7 @@
|
|
24579
24742
|
return vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("input", vue.mergeProps({
|
24580
24743
|
"ref": inputRef,
|
24581
24744
|
"type": "file",
|
24745
|
+
"accept": inputAccept,
|
24582
24746
|
"readonly": isReadonly.value,
|
24583
24747
|
"disabled": isDisabled.value,
|
24584
24748
|
"multiple": props.multiple,
|
@@ -24588,11 +24752,7 @@
|
|
24588
24752
|
if (isReadonly.value) e.preventDefault();
|
24589
24753
|
onFocus();
|
24590
24754
|
},
|
24591
|
-
"onChange":
|
24592
|
-
if (!e.target) return;
|
24593
|
-
const target = e.target;
|
24594
|
-
model.value = [...(target.files ?? [])];
|
24595
|
-
},
|
24755
|
+
"onChange": onFileSelection,
|
24596
24756
|
"onDragleave": onDragleave,
|
24597
24757
|
"onFocus": onFocus,
|
24598
24758
|
"onBlur": blur
|
@@ -30627,51 +30787,48 @@
|
|
30627
30787
|
parentIndentLines: props.parentIndentLines,
|
30628
30788
|
variant: props.indentLinesVariant
|
30629
30789
|
});
|
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
|
-
|
30669
|
-
|
30670
|
-
|
30671
|
-
|
30672
|
-
$stable: true
|
30673
|
-
});
|
30674
|
-
}
|
30790
|
+
const slotsWithItem = {
|
30791
|
+
prepend: slotProps => vue.createElementVNode(vue.Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && vue.createElementVNode("div", null, [vue.createVNode(VCheckboxBtn, {
|
30792
|
+
"key": item.value,
|
30793
|
+
"modelValue": slotProps.isSelected,
|
30794
|
+
"disabled": props.disabled,
|
30795
|
+
"loading": loading,
|
30796
|
+
"color": props.selectedColor,
|
30797
|
+
"density": props.density,
|
30798
|
+
"indeterminate": slotProps.isIndeterminate,
|
30799
|
+
"indeterminateIcon": props.indeterminateIcon,
|
30800
|
+
"falseIcon": props.falseIcon,
|
30801
|
+
"trueIcon": props.trueIcon,
|
30802
|
+
"onUpdate:modelValue": v => selectItem(slotProps.select, v),
|
30803
|
+
"onClick": e => e.stopPropagation(),
|
30804
|
+
"onKeydown": e => {
|
30805
|
+
if (!['Enter', 'Space'].includes(e.key)) return;
|
30806
|
+
e.stopPropagation();
|
30807
|
+
selectItem(slotProps.select, slotProps.isSelected);
|
30808
|
+
}
|
30809
|
+
}, null)]), slots.prepend?.({
|
30810
|
+
...slotProps,
|
30811
|
+
...treeItemProps,
|
30812
|
+
item: item.raw,
|
30813
|
+
internalItem: item
|
30814
|
+
})]),
|
30815
|
+
append: slots.append ? slotProps => slots.append?.({
|
30816
|
+
...slotProps,
|
30817
|
+
...treeItemProps,
|
30818
|
+
item: item.raw,
|
30819
|
+
internalItem: item
|
30820
|
+
}) : undefined,
|
30821
|
+
title: slots.title ? slotProps => slots.title?.({
|
30822
|
+
...slotProps,
|
30823
|
+
item: item.raw,
|
30824
|
+
internalItem: item
|
30825
|
+
}) : undefined,
|
30826
|
+
subtitle: slots.subtitle ? slotProps => slots.subtitle?.({
|
30827
|
+
...slotProps,
|
30828
|
+
item: item.raw,
|
30829
|
+
internalItem: item
|
30830
|
+
}) : undefined
|
30831
|
+
};
|
30675
30832
|
const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
|
30676
30833
|
const treeviewChildrenProps = VTreeviewChildren.filterProps({
|
30677
30834
|
...props,
|
@@ -30685,16 +30842,21 @@
|
|
30685
30842
|
let {
|
30686
30843
|
props: activatorProps
|
30687
30844
|
} = _ref2;
|
30688
|
-
|
30845
|
+
const listItemProps = {
|
30689
30846
|
...itemProps,
|
30690
30847
|
...activatorProps,
|
30691
|
-
|
30692
|
-
hideActions: props.hideActions,
|
30693
|
-
indentLines: indentLines.node,
|
30694
|
-
value: props.returnObject ? item.raw : itemProps.value,
|
30848
|
+
value: itemProps?.value,
|
30695
30849
|
onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
|
30696
30850
|
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
|
30697
|
-
}
|
30851
|
+
};
|
30852
|
+
return vue.createVNode(VTreeviewItem, vue.mergeProps({
|
30853
|
+
"ref": el => activatorItems.value[index] = el
|
30854
|
+
}, listItemProps, {
|
30855
|
+
"hideActions": props.hideActions,
|
30856
|
+
"indentLines": indentLines.node,
|
30857
|
+
"value": props.returnObject ? item.raw : itemProps.value,
|
30858
|
+
"loading": loading
|
30859
|
+
}), slotsWithItem);
|
30698
30860
|
},
|
30699
30861
|
default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
|
30700
30862
|
"items": children,
|
@@ -30702,8 +30864,7 @@
|
|
30702
30864
|
"parentIndentLines": indentLines.children,
|
30703
30865
|
"isLastGroup": nextItemHasChildren,
|
30704
30866
|
"returnObject": props.returnObject
|
30705
|
-
}), slots)
|
30706
|
-
$stable: true
|
30867
|
+
}), slots)
|
30707
30868
|
}) : renderSlot(slots.item, {
|
30708
30869
|
props: itemProps,
|
30709
30870
|
item: item.raw,
|
@@ -30719,12 +30880,11 @@
|
|
30719
30880
|
props: item.raw
|
30720
30881
|
}, () => vue.createVNode(VListSubheader, item.props, null));
|
30721
30882
|
}
|
30722
|
-
return
|
30723
|
-
|
30724
|
-
|
30725
|
-
|
30726
|
-
|
30727
|
-
});
|
30883
|
+
return vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, {
|
30884
|
+
"hideActions": props.hideActions,
|
30885
|
+
"indentLines": indentLines.leaf,
|
30886
|
+
"value": props.returnObject ? vue.toRaw(item.raw) : itemProps.value
|
30887
|
+
}), slotsWithItem);
|
30728
30888
|
});
|
30729
30889
|
});
|
30730
30890
|
}
|
@@ -30863,14 +31023,13 @@
|
|
30863
31023
|
"selected": selected.value,
|
30864
31024
|
"onUpdate:selected": $event => selected.value = $event
|
30865
31025
|
}), {
|
30866
|
-
default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
|
31026
|
+
default: () => [vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
|
30867
31027
|
"density": props.density,
|
30868
31028
|
"returnObject": props.returnObject,
|
30869
31029
|
"items": items.value,
|
30870
31030
|
"parentIndentLines": props.indentLines ? [] : undefined,
|
30871
31031
|
"indentLinesVariant": indentLinesVariant
|
30872
|
-
}), slots)
|
30873
|
-
$stable: true
|
31032
|
+
}), slots)]
|
30874
31033
|
});
|
30875
31034
|
});
|
30876
31035
|
return {};
|
@@ -31389,7 +31548,7 @@
|
|
31389
31548
|
};
|
31390
31549
|
});
|
31391
31550
|
}
|
31392
|
-
const version$1 = "3.9.
|
31551
|
+
const version$1 = "3.9.2-dev.2025-07-18";
|
31393
31552
|
createVuetify$1.version = version$1;
|
31394
31553
|
|
31395
31554
|
// Vue's inject() can only be used in setup
|
@@ -31414,7 +31573,7 @@
|
|
31414
31573
|
...options
|
31415
31574
|
});
|
31416
31575
|
};
|
31417
|
-
const version = "3.9.
|
31576
|
+
const version = "3.9.2-dev.2025-07-18";
|
31418
31577
|
createVuetify.version = version;
|
31419
31578
|
|
31420
31579
|
exports.blueprints = index;
|