@vuetify/nightly 3.9.1-dev.2025-07-17 → 3.9.2-master.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.
Files changed (61) hide show
  1. package/CHANGELOG.md +3 -14
  2. package/dist/json/attributes.json +3514 -3534
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +192 -192
  5. package/dist/json/tags.json +0 -5
  6. package/dist/json/web-types.json +19798 -6490
  7. package/dist/vuetify-labs.cjs +88 -278
  8. package/dist/vuetify-labs.css +4475 -4477
  9. package/dist/vuetify-labs.d.ts +64 -126
  10. package/dist/vuetify-labs.esm.js +88 -278
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +88 -278
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +79 -240
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2683 -2685
  17. package/dist/vuetify.d.ts +64 -116
  18. package/dist/vuetify.esm.js +79 -240
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +79 -240
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +702 -724
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +0 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VCombobox/VCombobox.js +0 -1
  28. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  29. package/lib/components/VFileInput/VFileInput.d.ts +0 -15
  30. package/lib/components/VFileInput/VFileInput.js +9 -38
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VList/VList.js +1 -2
  33. package/lib/components/VList/VList.js.map +1 -1
  34. package/lib/components/VList/VListItem.js +1 -7
  35. package/lib/components/VList/VListItem.js.map +1 -1
  36. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  37. package/lib/components/VProgressLinear/VProgressLinear.d.ts +0 -75
  38. package/lib/components/VProgressLinear/VProgressLinear.js +6 -32
  39. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  40. package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
  41. package/lib/components/VSelect/VSelect.js +0 -1
  42. package/lib/components/VSelect/VSelect.js.map +1 -1
  43. package/lib/components/VTreeview/VTreeview.js +2 -3
  44. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  45. package/lib/components/VTreeview/VTreeviewChildren.js +59 -59
  46. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  47. package/lib/entry-bundler.js +1 -1
  48. package/lib/entry-bundler.js.map +1 -1
  49. package/lib/framework.d.ts +64 -64
  50. package/lib/framework.js +1 -1
  51. package/lib/framework.js.map +1 -1
  52. package/lib/labs/VFileUpload/VFileUpload.d.ts +0 -15
  53. package/lib/labs/VFileUpload/VFileUpload.js +9 -39
  54. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  55. package/package.json +1 -1
  56. package/lib/components/VProgressLinear/chunks.d.ts +0 -55
  57. package/lib/components/VProgressLinear/chunks.js +0 -62
  58. package/lib/components/VProgressLinear/chunks.js.map +0 -1
  59. package/lib/composables/fileFilter.d.ts +0 -18
  60. package/lib/composables/fileFilter.js +0 -38
  61. package/lib/composables/fileFilter.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.1-dev.2025-07-17
2
+ * Vuetify v3.9.2-master.2025-07-18
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -5443,69 +5443,6 @@ 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
-
5509
5446
  const makeVProgressLinearProps = propsFactory({
5510
5447
  absolute: Boolean,
5511
5448
  active: {
@@ -5540,7 +5477,6 @@ const makeVProgressLinearProps = propsFactory({
5540
5477
  stream: Boolean,
5541
5478
  striped: Boolean,
5542
5479
  roundedBar: Boolean,
5543
- ...makeChunksProps(),
5544
5480
  ...makeComponentProps(),
5545
5481
  ...makeLocationProps({
5546
5482
  location: 'top'
@@ -5559,7 +5495,6 @@ const VProgressLinear = genericComponent()({
5559
5495
  let {
5560
5496
  slots
5561
5497
  } = _ref;
5562
- const root = ref();
5563
5498
  const progress = useProxiedModel(props, 'modelValue');
5564
5499
  const {
5565
5500
  isRtl,
@@ -5601,24 +5536,6 @@ const VProgressLinear = genericComponent()({
5601
5536
  const isReversed = computed(() => isRtl.value !== props.reverse);
5602
5537
  const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
5603
5538
  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
- });
5622
5539
  function handleClick(e) {
5623
5540
  if (!intersectionRef.value) return;
5624
5541
  const {
@@ -5629,11 +5546,8 @@ const VProgressLinear = genericComponent()({
5629
5546
  const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;
5630
5547
  progress.value = Math.round(value / width * max.value);
5631
5548
  }
5632
- watchEffect(() => {
5633
- intersectionRef.value = root.value;
5634
- });
5635
5549
  useRender(() => createVNode(props.tag, {
5636
- "ref": root,
5550
+ "ref": intersectionRef,
5637
5551
  "class": normalizeClass(['v-progress-linear', {
5638
5552
  'v-progress-linear--absolute': props.absolute,
5639
5553
  'v-progress-linear--active': props.active && isIntersecting.value,
@@ -5648,7 +5562,7 @@ const VProgressLinear = genericComponent()({
5648
5562
  height: props.active ? convertToUnit(height.value) : 0,
5649
5563
  '--v-progress-linear-height': convertToUnit(height.value),
5650
5564
  ...(props.absolute ? locationStyles.value : {})
5651
- }, chunksMaskStyles.value, props.style]),
5565
+ }, props.style]),
5652
5566
  "role": "progressbar",
5653
5567
  "aria-hidden": props.active ? 'false' : 'true',
5654
5568
  "aria-valuemin": "0",
@@ -5678,7 +5592,7 @@ const VProgressLinear = genericComponent()({
5678
5592
  "class": normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
5679
5593
  "style": normalizeStyle([bufferColorStyles.value, {
5680
5594
  opacity: parseFloat(props.bufferOpacity),
5681
- width: convertToUnit(bufferWidth.value, '%')
5595
+ width: convertToUnit(normalizedBuffer.value, '%')
5682
5596
  }])
5683
5597
  }, null), createVNode(Transition, {
5684
5598
  "name": transition.value
@@ -5686,7 +5600,7 @@ const VProgressLinear = genericComponent()({
5686
5600
  default: () => [!props.indeterminate ? createElementVNode("div", {
5687
5601
  "class": normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5688
5602
  "style": normalizeStyle([barColorStyles.value, {
5689
- width: convertToUnit(barWidth.value, '%')
5603
+ width: convertToUnit(normalizedValue.value, '%')
5690
5604
  }])
5691
5605
  }, null) : createElementVNode("div", {
5692
5606
  "class": "v-progress-linear__indeterminate"
@@ -9904,11 +9818,6 @@ const VListItem = genericComponent()({
9904
9818
  const isLink = toRef(() => props.link !== false && link.isLink.value);
9905
9819
  const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9906
9820
  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
- });
9912
9821
  const roundedProps = toRef(() => props.rounded || props.nav);
9913
9822
  const color = toRef(() => props.color ?? props.activeColor);
9914
9823
  const variantProps = toRef(() => ({
@@ -10012,8 +9921,7 @@ const VListItem = genericComponent()({
10012
9921
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
10013
9922
  "style": [colorStyles.value, dimensionStyles.value, props.style],
10014
9923
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
10015
- "aria-selected": ariaSelected.value,
10016
- "role": role.value,
9924
+ "aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
10017
9925
  "onClick": onClick,
10018
9926
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
10019
9927
  }, link.linkProps), {
@@ -10515,7 +10423,6 @@ const VList = genericComponent()({
10515
10423
  const activeColor = toRef(() => props.activeColor);
10516
10424
  const baseColor = toRef(() => props.baseColor);
10517
10425
  const color = toRef(() => props.color);
10518
- const isSelectable = toRef(() => props.selectable || props.activatable);
10519
10426
  createList({
10520
10427
  filterable: props.filterable
10521
10428
  });
@@ -10587,7 +10494,7 @@ const VList = genericComponent()({
10587
10494
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
10588
10495
  "style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
10589
10496
  "tabindex": props.disabled ? -1 : 0,
10590
- "role": isSelectable.value ? 'listbox' : 'list',
10497
+ "role": "listbox",
10591
10498
  "aria-activedescendant": undefined,
10592
10499
  "onFocusin": onFocusin,
10593
10500
  "onFocusout": onFocusout,
@@ -13657,7 +13564,6 @@ const VSelect = genericComponent()({
13657
13564
  "onKeydown": onListKeydown,
13658
13565
  "onFocusin": onFocusin,
13659
13566
  "tabindex": "-1",
13660
- "selectable": true,
13661
13567
  "aria-live": "polite",
13662
13568
  "aria-label": `${props.label}-list`,
13663
13569
  "color": props.itemColor ?? props.color
@@ -14277,7 +14183,6 @@ const VAutocomplete = genericComponent()({
14277
14183
  "onFocusin": onFocusin,
14278
14184
  "onFocusout": onFocusout,
14279
14185
  "tabindex": "-1",
14280
- "selectable": true,
14281
14186
  "aria-live": "polite",
14282
14187
  "color": props.itemColor ?? props.color
14283
14188
  }, listEvents, props.listProps), {
@@ -19365,7 +19270,6 @@ const VCombobox = genericComponent()({
19365
19270
  "selected": selectedValues.value,
19366
19271
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
19367
19272
  "onMousedown": e => e.preventDefault(),
19368
- "selectable": true,
19369
19273
  "onKeydown": onListKeydown,
19370
19274
  "onFocusin": onFocusin,
19371
19275
  "onFocusout": onFocusout,
@@ -24464,42 +24368,6 @@ function appendIfDirectory(path, item) {
24464
24368
  return item.isDirectory ? `${path}/${item.name}` : path;
24465
24369
  }
24466
24370
 
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
-
24503
24371
  // Types
24504
24372
 
24505
24373
  const makeVFileInputProps = propsFactory({
@@ -24532,7 +24400,6 @@ const makeVFileInputProps = propsFactory({
24532
24400
  return wrapInArray(val).every(v => v != null && typeof v === 'object');
24533
24401
  }
24534
24402
  },
24535
- ...makeFileFilterProps(),
24536
24403
  ...makeVFieldProps({
24537
24404
  clearable: true
24538
24405
  })
@@ -24545,8 +24412,7 @@ const VFileInput = genericComponent()({
24545
24412
  'click:control': e => true,
24546
24413
  'mousedown:control': e => true,
24547
24414
  'update:focused': focused => true,
24548
- 'update:modelValue': files => true,
24549
- rejected: files => true
24415
+ 'update:modelValue': files => true
24550
24416
  },
24551
24417
  setup(props, _ref) {
24552
24418
  let {
@@ -24557,9 +24423,6 @@ const VFileInput = genericComponent()({
24557
24423
  const {
24558
24424
  t
24559
24425
  } = useLocale();
24560
- const {
24561
- filterAccepted
24562
- } = useFileFilter(props);
24563
24426
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);
24564
24427
  const {
24565
24428
  isFocused,
@@ -24633,38 +24496,14 @@ const VFileInput = genericComponent()({
24633
24496
  e.stopImmediatePropagation();
24634
24497
  isDragging.value = false;
24635
24498
  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) {
24650
24499
  const dataTransfer = new DataTransfer();
24651
- const {
24652
- accepted,
24653
- rejected
24654
- } = filterAccepted(files);
24655
- if (rejected.length) {
24656
- emit('rejected', rejected);
24657
- }
24658
- for (const file of accepted) {
24500
+ for (const file of await handleDrop(e)) {
24659
24501
  dataTransfer.items.add(file);
24660
24502
  }
24661
24503
  inputRef.value.files = dataTransfer.files;
24662
- model.value = [...dataTransfer.files];
24663
- const event = new Event('change', {
24504
+ inputRef.value.dispatchEvent(new Event('change', {
24664
24505
  bubbles: true
24665
- });
24666
- event.repack = true;
24667
- inputRef.value.dispatchEvent(event);
24506
+ }));
24668
24507
  }
24669
24508
  watch(model, newValue => {
24670
24509
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
@@ -24681,8 +24520,6 @@ const VFileInput = genericComponent()({
24681
24520
  ...inputProps
24682
24521
  } = VInput.filterProps(props);
24683
24522
  const fieldProps = VField.filterProps(props);
24684
- const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
24685
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
24686
24523
  return createVNode(VInput, mergeProps({
24687
24524
  "ref": vInputRef,
24688
24525
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -24738,7 +24575,6 @@ const VFileInput = genericComponent()({
24738
24575
  return createElementVNode(Fragment, null, [createElementVNode("input", mergeProps({
24739
24576
  "ref": inputRef,
24740
24577
  "type": "file",
24741
- "accept": inputAccept,
24742
24578
  "readonly": isReadonly.value,
24743
24579
  "disabled": isDisabled.value,
24744
24580
  "multiple": props.multiple,
@@ -24748,7 +24584,11 @@ const VFileInput = genericComponent()({
24748
24584
  if (isReadonly.value) e.preventDefault();
24749
24585
  onFocus();
24750
24586
  },
24751
- "onChange": onFileSelection,
24587
+ "onChange": e => {
24588
+ if (!e.target) return;
24589
+ const target = e.target;
24590
+ model.value = [...(target.files ?? [])];
24591
+ },
24752
24592
  "onDragleave": onDragleave,
24753
24593
  "onFocus": onFocus,
24754
24594
  "onBlur": blur
@@ -30783,51 +30623,48 @@ const VTreeviewChildren = genericComponent()({
30783
30623
  parentIndentLines: props.parentIndentLines,
30784
30624
  variant: props.indentLinesVariant
30785
30625
  });
30786
- function renderItem(itemProps) {
30787
- return createVNode(VTreeviewItem, itemProps, {
30788
- prepend: slotProps => createElementVNode(Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && createElementVNode("div", null, [createVNode(VCheckboxBtn, {
30789
- "key": item.value,
30790
- "modelValue": slotProps.isSelected,
30791
- "disabled": props.disabled,
30792
- "loading": loading,
30793
- "color": props.selectedColor,
30794
- "density": props.density,
30795
- "indeterminate": slotProps.isIndeterminate,
30796
- "indeterminateIcon": props.indeterminateIcon,
30797
- "falseIcon": props.falseIcon,
30798
- "trueIcon": props.trueIcon,
30799
- "onUpdate:modelValue": v => selectItem(slotProps.select, v),
30800
- "onClick": e => e.stopPropagation(),
30801
- "onKeydown": e => {
30802
- if (!['Enter', 'Space'].includes(e.key)) return;
30803
- e.stopPropagation();
30804
- selectItem(slotProps.select, slotProps.isSelected);
30805
- }
30806
- }, null)]), slots.prepend?.({
30807
- ...slotProps,
30808
- ...treeItemProps,
30809
- item: item.raw,
30810
- internalItem: item
30811
- })]),
30812
- append: slots.append ? slotProps => slots.append?.({
30813
- ...slotProps,
30814
- ...treeItemProps,
30815
- item: item.raw,
30816
- internalItem: item
30817
- }) : undefined,
30818
- title: slots.title ? slotProps => slots.title?.({
30819
- ...slotProps,
30820
- item: item.raw,
30821
- internalItem: item
30822
- }) : undefined,
30823
- subtitle: slots.subtitle ? slotProps => slots.subtitle?.({
30824
- ...slotProps,
30825
- item: item.raw,
30826
- internalItem: item
30827
- }) : undefined,
30828
- $stable: true
30829
- });
30830
- }
30626
+ const slotsWithItem = {
30627
+ prepend: slotProps => createElementVNode(Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && createElementVNode("div", null, [createVNode(VCheckboxBtn, {
30628
+ "key": item.value,
30629
+ "modelValue": slotProps.isSelected,
30630
+ "disabled": props.disabled,
30631
+ "loading": loading,
30632
+ "color": props.selectedColor,
30633
+ "density": props.density,
30634
+ "indeterminate": slotProps.isIndeterminate,
30635
+ "indeterminateIcon": props.indeterminateIcon,
30636
+ "falseIcon": props.falseIcon,
30637
+ "trueIcon": props.trueIcon,
30638
+ "onUpdate:modelValue": v => selectItem(slotProps.select, v),
30639
+ "onClick": e => e.stopPropagation(),
30640
+ "onKeydown": e => {
30641
+ if (!['Enter', 'Space'].includes(e.key)) return;
30642
+ e.stopPropagation();
30643
+ selectItem(slotProps.select, slotProps.isSelected);
30644
+ }
30645
+ }, null)]), slots.prepend?.({
30646
+ ...slotProps,
30647
+ ...treeItemProps,
30648
+ item: item.raw,
30649
+ internalItem: item
30650
+ })]),
30651
+ append: slots.append ? slotProps => slots.append?.({
30652
+ ...slotProps,
30653
+ ...treeItemProps,
30654
+ item: item.raw,
30655
+ internalItem: item
30656
+ }) : undefined,
30657
+ title: slots.title ? slotProps => slots.title?.({
30658
+ ...slotProps,
30659
+ item: item.raw,
30660
+ internalItem: item
30661
+ }) : undefined,
30662
+ subtitle: slots.subtitle ? slotProps => slots.subtitle?.({
30663
+ ...slotProps,
30664
+ item: item.raw,
30665
+ internalItem: item
30666
+ }) : undefined
30667
+ };
30831
30668
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
30832
30669
  const treeviewChildrenProps = VTreeviewChildren.filterProps({
30833
30670
  ...props,
@@ -30841,16 +30678,21 @@ const VTreeviewChildren = genericComponent()({
30841
30678
  let {
30842
30679
  props: activatorProps
30843
30680
  } = _ref2;
30844
- return renderItem({
30681
+ const listItemProps = {
30845
30682
  ...itemProps,
30846
30683
  ...activatorProps,
30847
- loading,
30848
- hideActions: props.hideActions,
30849
- indentLines: indentLines.node,
30850
- value: props.returnObject ? item.raw : itemProps.value,
30684
+ value: itemProps?.value,
30851
30685
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
30852
30686
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
30853
- });
30687
+ };
30688
+ return createVNode(VTreeviewItem, mergeProps({
30689
+ "ref": el => activatorItems.value[index] = el
30690
+ }, listItemProps, {
30691
+ "hideActions": props.hideActions,
30692
+ "indentLines": indentLines.node,
30693
+ "value": props.returnObject ? item.raw : itemProps.value,
30694
+ "loading": loading
30695
+ }), slotsWithItem);
30854
30696
  },
30855
30697
  default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
30856
30698
  "items": children,
@@ -30858,8 +30700,7 @@ const VTreeviewChildren = genericComponent()({
30858
30700
  "parentIndentLines": indentLines.children,
30859
30701
  "isLastGroup": nextItemHasChildren,
30860
30702
  "returnObject": props.returnObject
30861
- }), slots),
30862
- $stable: true
30703
+ }), slots)
30863
30704
  }) : renderSlot(slots.item, {
30864
30705
  props: itemProps,
30865
30706
  item: item.raw,
@@ -30875,12 +30716,11 @@ const VTreeviewChildren = genericComponent()({
30875
30716
  props: item.raw
30876
30717
  }, () => createVNode(VListSubheader, item.props, null));
30877
30718
  }
30878
- return renderItem({
30879
- ...itemProps,
30880
- hideActions: props.hideActions,
30881
- indentLines: indentLines.leaf,
30882
- value: props.returnObject ? toRaw(item.raw) : itemProps.value
30883
- });
30719
+ return createVNode(VTreeviewItem, mergeProps(itemProps, {
30720
+ "hideActions": props.hideActions,
30721
+ "indentLines": indentLines.leaf,
30722
+ "value": props.returnObject ? toRaw(item.raw) : itemProps.value
30723
+ }), slotsWithItem);
30884
30724
  });
30885
30725
  });
30886
30726
  }
@@ -31019,14 +30859,13 @@ const VTreeview = genericComponent()({
31019
30859
  "selected": selected.value,
31020
30860
  "onUpdate:selected": $event => selected.value = $event
31021
30861
  }), {
31022
- default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
30862
+ default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
31023
30863
  "density": props.density,
31024
30864
  "returnObject": props.returnObject,
31025
30865
  "items": items.value,
31026
30866
  "parentIndentLines": props.indentLines ? [] : undefined,
31027
30867
  "indentLinesVariant": indentLinesVariant
31028
- }), slots),
31029
- $stable: true
30868
+ }), slots)]
31030
30869
  });
31031
30870
  });
31032
30871
  return {};
@@ -31545,7 +31384,7 @@ function createVuetify$1() {
31545
31384
  };
31546
31385
  });
31547
31386
  }
31548
- const version$1 = "3.9.1-dev.2025-07-17";
31387
+ const version$1 = "3.9.2-master.2025-07-18";
31549
31388
  createVuetify$1.version = version$1;
31550
31389
 
31551
31390
  // Vue's inject() can only be used in setup
@@ -31570,7 +31409,7 @@ const createVuetify = function () {
31570
31409
  ...options
31571
31410
  });
31572
31411
  };
31573
- const version = "3.9.1-dev.2025-07-17";
31412
+ const version = "3.9.2-master.2025-07-18";
31574
31413
  createVuetify.version = version;
31575
31414
 
31576
31415
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };