vuetify 3.6.7 → 3.6.8

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 (92) hide show
  1. package/dist/json/attributes.json +44 -12
  2. package/dist/json/importMap-labs.json +16 -16
  3. package/dist/json/importMap.json +128 -128
  4. package/dist/json/tags.json +8 -0
  5. package/dist/json/web-types.json +121 -49
  6. package/dist/vuetify-labs.css +2997 -2918
  7. package/dist/vuetify-labs.d.ts +528 -1392
  8. package/dist/vuetify-labs.esm.js +212 -98
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +211 -97
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +2643 -2564
  13. package/dist/vuetify.d.ts +424 -1128
  14. package/dist/vuetify.esm.js +102 -67
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +101 -66
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +303 -302
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/index.d.mts +102 -336
  22. package/lib/components/VCombobox/index.d.mts +102 -336
  23. package/lib/components/VDatePicker/VDatePickerMonth.mjs +3 -0
  24. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  25. package/lib/components/VDivider/VDivider.mjs +1 -1
  26. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  27. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +1 -1
  28. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  29. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +1 -1
  30. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  31. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
  32. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  33. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +1 -1
  34. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  35. package/lib/components/VExpansionPanel/index.d.mts +36 -36
  36. package/lib/components/VExpansionPanel/shared.mjs +4 -0
  37. package/lib/components/VExpansionPanel/shared.mjs.map +1 -0
  38. package/lib/components/VList/VList.mjs +3 -1
  39. package/lib/components/VList/VList.mjs.map +1 -1
  40. package/lib/components/VList/VListGroup.mjs +1 -0
  41. package/lib/components/VList/VListGroup.mjs.map +1 -1
  42. package/lib/components/VList/VListItem.css +2 -2
  43. package/lib/components/VList/VListItem.mjs +2 -0
  44. package/lib/components/VList/VListItem.mjs.map +1 -1
  45. package/lib/components/VList/VListItem.sass +1 -1
  46. package/lib/components/VList/index.d.mts +52 -66
  47. package/lib/components/VSelect/index.d.mts +102 -336
  48. package/lib/components/VSelectionControl/VSelectionControl.mjs +9 -1
  49. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  50. package/lib/components/VSlider/VSlider.mjs +2 -1
  51. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  52. package/lib/components/VSlider/VSliderThumb.mjs +2 -0
  53. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  54. package/lib/components/VSnackbar/VSnackbar.css +1 -1
  55. package/lib/components/VSnackbar/VSnackbar.sass +1 -1
  56. package/lib/components/VStepper/VStepper.mjs +19 -5
  57. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  58. package/lib/components/VStepper/VStepperItem.css +3 -0
  59. package/lib/components/VStepper/VStepperItem.mjs +1 -1
  60. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  61. package/lib/components/VStepper/VStepperItem.sass +3 -0
  62. package/lib/components/VStepper/VStepperWindow.mjs +2 -2
  63. package/lib/components/VStepper/VStepperWindow.mjs.map +1 -1
  64. package/lib/components/VStepper/index.d.mts +43 -9
  65. package/lib/components/VStepper/shared.mjs +4 -0
  66. package/lib/components/VStepper/shared.mjs.map +1 -0
  67. package/lib/components/VTabs/VTabs.mjs +2 -2
  68. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  69. package/lib/components/index.d.mts +379 -1083
  70. package/lib/composables/defaults.mjs +3 -1
  71. package/lib/composables/defaults.mjs.map +1 -1
  72. package/lib/composables/filter.mjs +1 -1
  73. package/lib/composables/filter.mjs.map +1 -1
  74. package/lib/entry-bundler.mjs +1 -1
  75. package/lib/framework.mjs +1 -1
  76. package/lib/index.d.mts +45 -45
  77. package/lib/labs/VNumberInput/VNumberInput.mjs +7 -0
  78. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  79. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +1 -2
  80. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs.map +1 -1
  81. package/lib/labs/VStepperVertical/index.d.mts +43 -9
  82. package/lib/labs/VTreeview/VTreeview.mjs +1 -1
  83. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  84. package/lib/labs/VTreeview/VTreeviewChildren.mjs +30 -25
  85. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  86. package/lib/labs/VTreeview/VTreeviewItem.mjs +83 -12
  87. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  88. package/lib/labs/VTreeview/index.d.mts +110 -300
  89. package/lib/labs/components.d.mts +3402 -3558
  90. package/lib/styles/main.css +76 -0
  91. package/lib/styles/settings/_utilities.scss +5 -1
  92. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.7
2
+ * Vuetify v3.6.8
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1261,6 +1261,53 @@
1261
1261
 
1262
1262
  // Types
1263
1263
 
1264
+ function getCurrentInstance(name, message) {
1265
+ const vm = vue.getCurrentInstance();
1266
+ if (!vm) {
1267
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1268
+ }
1269
+ return vm;
1270
+ }
1271
+ function getCurrentInstanceName() {
1272
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1273
+ const vm = getCurrentInstance(name).type;
1274
+ return toKebabCase(vm?.aliasName || vm?.name);
1275
+ }
1276
+ let _uid = 0;
1277
+ let _map = new WeakMap();
1278
+ function getUid() {
1279
+ const vm = getCurrentInstance('getUid');
1280
+ if (_map.has(vm)) return _map.get(vm);else {
1281
+ const uid = _uid++;
1282
+ _map.set(vm, uid);
1283
+ return uid;
1284
+ }
1285
+ }
1286
+ getUid.reset = () => {
1287
+ _uid = 0;
1288
+ _map = new WeakMap();
1289
+ };
1290
+
1291
+ // Utilities
1292
+
1293
+ // Types
1294
+
1295
+ function injectSelf(key) {
1296
+ let vm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstance('injectSelf');
1297
+ const {
1298
+ provides
1299
+ } = vm;
1300
+ if (provides && key in provides) {
1301
+ // TS doesn't allow symbol as index type
1302
+ return provides[key];
1303
+ }
1304
+ return undefined;
1305
+ }
1306
+
1307
+ // Utilities
1308
+
1309
+ // Types
1310
+
1264
1311
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
1265
1312
  function createDefaults(options) {
1266
1313
  return vue.ref(options);
@@ -1486,37 +1533,6 @@
1486
1533
  }, {});
1487
1534
  }
1488
1535
 
1489
- // Utilities
1490
-
1491
- // Types
1492
-
1493
- function getCurrentInstance(name, message) {
1494
- const vm = vue.getCurrentInstance();
1495
- if (!vm) {
1496
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1497
- }
1498
- return vm;
1499
- }
1500
- function getCurrentInstanceName() {
1501
- let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1502
- const vm = getCurrentInstance(name).type;
1503
- return toKebabCase(vm?.aliasName || vm?.name);
1504
- }
1505
- let _uid = 0;
1506
- let _map = new WeakMap();
1507
- function getUid() {
1508
- const vm = getCurrentInstance('getUid');
1509
- if (_map.has(vm)) return _map.get(vm);else {
1510
- const uid = _uid++;
1511
- _map.set(vm, uid);
1512
- return uid;
1513
- }
1514
- }
1515
- getUid.reset = () => {
1516
- _uid = 0;
1517
- _map = new WeakMap();
1518
- };
1519
-
1520
1536
  function getScrollParent(el) {
1521
1537
  let includeHidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1522
1538
  while (el) {
@@ -1546,22 +1562,6 @@
1546
1562
  return ['scroll', 'auto'].includes(style.overflowY);
1547
1563
  }
1548
1564
 
1549
- // Utilities
1550
-
1551
- // Types
1552
-
1553
- function injectSelf(key) {
1554
- let vm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstance('injectSelf');
1555
- const {
1556
- provides
1557
- } = vm;
1558
- if (provides && key in provides) {
1559
- // TS doesn't allow symbol as index type
1560
- return provides[key];
1561
- }
1562
- return undefined;
1563
- }
1564
-
1565
1565
  function isFixedPosition(el) {
1566
1566
  while (el) {
1567
1567
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -6253,7 +6253,15 @@
6253
6253
  e.stopPropagation();
6254
6254
  }
6255
6255
  function onInput(e) {
6256
- if (!isInteractive.value) return;
6256
+ if (!isInteractive.value) {
6257
+ if (input.value) {
6258
+ // model value is not updated when input is not interactive
6259
+ // but the internal checked state of the input is still updated,
6260
+ // so here it's value is restored
6261
+ input.value.checked = model.value;
6262
+ }
6263
+ return;
6264
+ }
6257
6265
  if (props.readonly && group) {
6258
6266
  vue.nextTick(() => group.forceUpdate());
6259
6267
  }
@@ -8706,6 +8714,7 @@
8706
8714
  isBooted
8707
8715
  } = useSsrBoot();
8708
8716
  function onClick(e) {
8717
+ e.stopPropagation();
8709
8718
  open(!isOpen.value, e);
8710
8719
  }
8711
8720
  const activatorProps = vue.computed(() => ({
@@ -9039,6 +9048,8 @@
9039
9048
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
9040
9049
  });
9041
9050
  return {
9051
+ activate,
9052
+ isActivated,
9042
9053
  isGroupActivator,
9043
9054
  isSelected,
9044
9055
  list,
@@ -9114,7 +9125,7 @@
9114
9125
  const dividerStyles = vue.computed(() => {
9115
9126
  const styles = {};
9116
9127
  if (props.length) {
9117
- styles[props.vertical ? 'maxHeight' : 'maxWidth'] = convertToUnit(props.length);
9128
+ styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
9118
9129
  }
9119
9130
  if (props.thickness) {
9120
9131
  styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
@@ -9375,6 +9386,8 @@
9375
9386
  },
9376
9387
  slim: Boolean,
9377
9388
  nav: Boolean,
9389
+ 'onClick:open': EventProp(),
9390
+ 'onClick:select': EventProp(),
9378
9391
  ...makeNestedProps({
9379
9392
  selectStrategy: 'single-leaf',
9380
9393
  openStrategy: 'list'
@@ -12686,7 +12699,7 @@
12686
12699
  const customMatches = {};
12687
12700
  const defaultMatches = {};
12688
12701
  let match = -1;
12689
- if (query && !options?.noFilter) {
12702
+ if ((query || customFiltersLength > 0) && !options?.noFilter) {
12690
12703
  if (typeof item === 'object') {
12691
12704
  const filterKeys = keys || Object.keys(transformed);
12692
12705
  for (const key of filterKeys) {
@@ -15527,6 +15540,7 @@
15527
15540
  type: [Boolean, Object],
15528
15541
  default: true
15529
15542
  },
15543
+ name: String,
15530
15544
  ...makeComponentProps()
15531
15545
  }, 'VSliderThumb');
15532
15546
  const VSliderThumb = genericComponent()({
@@ -15623,6 +15637,7 @@
15623
15637
  }, props.style],
15624
15638
  "role": "slider",
15625
15639
  "tabindex": disabled.value ? -1 : 0,
15640
+ "aria-label": props.name,
15626
15641
  "aria-valuemin": props.min,
15627
15642
  "aria-valuemax": props.max,
15628
15643
  "aria-valuenow": props.modelValue,
@@ -15899,7 +15914,8 @@
15899
15914
  "elevation": props.elevation,
15900
15915
  "onFocus": focus,
15901
15916
  "onBlur": blur,
15902
- "ripple": props.ripple
15917
+ "ripple": props.ripple,
15918
+ "name": props.name
15903
15919
  }, {
15904
15920
  'thumb-label': slots['thumb-label']
15905
15921
  })]);
@@ -21524,6 +21540,9 @@
21524
21540
  });
21525
21541
  function onRangeClick(value) {
21526
21542
  const _value = adapter.startOfDay(value);
21543
+ if (model.value.length === 0) {
21544
+ rangeStart.value = undefined;
21545
+ }
21527
21546
  if (!rangeStart.value) {
21528
21547
  rangeStart.value = _value;
21529
21548
  model.value = [rangeStart.value];
@@ -22249,6 +22268,10 @@
22249
22268
  }
22250
22269
  });
22251
22270
 
22271
+ // Types
22272
+
22273
+ const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
22274
+
22252
22275
  const makeVExpansionPanelTextProps = propsFactory({
22253
22276
  ...makeComponentProps(),
22254
22277
  ...makeLazyProps()
@@ -22429,7 +22452,6 @@
22429
22452
 
22430
22453
  // Types
22431
22454
 
22432
- const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
22433
22455
  const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
22434
22456
  const makeVExpansionPanelsProps = propsFactory({
22435
22457
  flat: Boolean,
@@ -25773,6 +25795,10 @@
25773
25795
 
25774
25796
  // Types
25775
25797
 
25798
+ const VStepperSymbol = Symbol.for('vuetify:v-stepper');
25799
+
25800
+ // Types
25801
+
25776
25802
  const makeVStepperActionsProps = propsFactory({
25777
25803
  color: String,
25778
25804
  disabled: {
@@ -25960,9 +25986,6 @@
25960
25986
  }
25961
25987
  });
25962
25988
 
25963
- // Types
25964
-
25965
- const VStepperSymbol$1 = Symbol.for('vuetify:v-stepper');
25966
25989
  const makeVStepperWindowProps = propsFactory({
25967
25990
  ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])
25968
25991
  }, 'VStepperWindow');
@@ -25976,7 +25999,7 @@
25976
25999
  let {
25977
26000
  slots
25978
26001
  } = _ref;
25979
- const group = vue.inject(VStepperSymbol$1, null);
26002
+ const group = vue.inject(VStepperSymbol, null);
25980
26003
  const _model = useProxiedModel(props, 'modelValue');
25981
26004
  const model = vue.computed({
25982
26005
  get() {
@@ -26034,11 +26057,13 @@
26034
26057
 
26035
26058
  // Types
26036
26059
 
26037
- const VStepperSymbol = Symbol.for('vuetify:v-stepper');
26038
26060
  const makeStepperProps = propsFactory({
26039
26061
  altLabels: Boolean,
26040
26062
  bgColor: String,
26063
+ completeIcon: String,
26064
+ editIcon: String,
26041
26065
  editable: Boolean,
26066
+ errorIcon: String,
26042
26067
  hideActions: Boolean,
26043
26068
  items: {
26044
26069
  type: Array,
@@ -26052,9 +26077,9 @@
26052
26077
  type: String,
26053
26078
  default: 'value'
26054
26079
  },
26055
- mobile: Boolean,
26056
26080
  nonLinear: Boolean,
26057
- flat: Boolean
26081
+ flat: Boolean,
26082
+ ...makeDisplayProps()
26058
26083
  }, 'Stepper');
26059
26084
  const makeVStepperProps = propsFactory({
26060
26085
  ...makeStepperProps(),
@@ -26082,6 +26107,13 @@
26082
26107
  selected
26083
26108
  } = useGroup(props, VStepperSymbol);
26084
26109
  const {
26110
+ displayClasses,
26111
+ mobile
26112
+ } = useDisplay(props);
26113
+ const {
26114
+ completeIcon,
26115
+ editIcon,
26116
+ errorIcon,
26085
26117
  color,
26086
26118
  editable,
26087
26119
  prevText,
@@ -26108,6 +26140,9 @@
26108
26140
  provideDefaults({
26109
26141
  VStepperItem: {
26110
26142
  editable,
26143
+ errorIcon,
26144
+ completeIcon,
26145
+ editIcon,
26111
26146
  prevText,
26112
26147
  nextText
26113
26148
  },
@@ -26129,8 +26164,8 @@
26129
26164
  'v-stepper--alt-labels': props.altLabels,
26130
26165
  'v-stepper--flat': props.flat,
26131
26166
  'v-stepper--non-linear': props.nonLinear,
26132
- 'v-stepper--mobile': props.mobile
26133
- }, props.class],
26167
+ 'v-stepper--mobile': mobile.value
26168
+ }, displayClasses.value, props.class],
26134
26169
  "style": props.style
26135
26170
  }), {
26136
26171
  default: () => [hasHeader && vue.createVNode(VStepperHeader, {
@@ -26660,9 +26695,9 @@
26660
26695
  "key": item.text,
26661
26696
  "value": item.value
26662
26697
  }), {
26663
- default: () => slots[`tab.${item.value}`]?.({
26698
+ default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({
26664
26699
  item
26665
- })
26700
+ }) : undefined
26666
26701
  }))]
26667
26702
  }), hasWindow && vue.createVNode(VTabsWindow, vue.mergeProps({
26668
26703
  "modelValue": model.value,
@@ -27973,15 +28008,20 @@
27973
28008
  const model = useProxiedModel(props, 'modelValue');
27974
28009
  const stepDecimals = vue.computed(() => getDecimals(props.step));
27975
28010
  const modelDecimals = vue.computed(() => model.value != null ? getDecimals(model.value) : 0);
28011
+ const form = useForm();
28012
+ const controlsDisabled = vue.computed(() => props.disabled || props.readonly || form?.isReadonly.value);
27976
28013
  const canIncrease = vue.computed(() => {
28014
+ if (controlsDisabled.value) return false;
27977
28015
  if (model.value == null) return true;
27978
28016
  return model.value + props.step <= props.max;
27979
28017
  });
27980
28018
  const canDecrease = vue.computed(() => {
28019
+ if (controlsDisabled.value) return false;
27981
28020
  if (model.value == null) return true;
27982
28021
  return model.value - props.step >= props.min;
27983
28022
  });
27984
28023
  vue.watchEffect(() => {
28024
+ if (controlsDisabled.value) return;
27985
28025
  if (model.value != null && (model.value < props.min || model.value > props.max)) {
27986
28026
  model.value = clamp(model.value, props.min, props.max);
27987
28027
  }
@@ -27997,6 +28037,7 @@
27997
28037
  }));
27998
28038
  function toggleUpDown() {
27999
28039
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28040
+ if (controlsDisabled.value) return;
28000
28041
  if (model.value == null) {
28001
28042
  model.value = 0;
28002
28043
  return;
@@ -29338,32 +29379,100 @@
29338
29379
  emit
29339
29380
  } = _ref;
29340
29381
  const link = useLink(props, attrs);
29341
- const id = vue.computed(() => props.value === undefined ? link.href.value : props.value);
29382
+ const rawId = vue.computed(() => props.value === undefined ? link.href.value : props.value);
29342
29383
  const vListItemRef = vue.ref();
29384
+ const {
29385
+ activate,
29386
+ isActivated,
29387
+ select,
29388
+ isSelected,
29389
+ isIndeterminate,
29390
+ isGroupActivator,
29391
+ root,
29392
+ id
29393
+ } = useNestedItem(rawId, false);
29394
+ const isActivatableGroupActivator = vue.computed(() => root.activatable.value && isGroupActivator);
29395
+ const {
29396
+ densityClasses
29397
+ } = useDensity(props, 'v-list-item');
29398
+ const slotProps = vue.computed(() => ({
29399
+ isActive: isActivated.value,
29400
+ select,
29401
+ isSelected: isSelected.value,
29402
+ isIndeterminate: isIndeterminate.value
29403
+ }));
29343
29404
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list));
29344
- function onClick(e) {
29345
- if (!vListItemRef.value?.isGroupActivator || !isClickable.value) return;
29346
- props.value != null && vListItemRef.value?.select(!vListItemRef.value?.isSelected, e);
29405
+ function activateItem(e) {
29406
+ if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
29407
+ if (root.activatable.value) {
29408
+ if (isActivatableGroupActivator.value) {
29409
+ activate(!isActivated.value, e);
29410
+ } else {
29411
+ vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
29412
+ }
29413
+ }
29347
29414
  }
29348
29415
  function onKeyDown(e) {
29349
29416
  if (e.key === 'Enter' || e.key === ' ') {
29350
29417
  e.preventDefault();
29351
- onClick(e);
29418
+ activateItem(e);
29352
29419
  }
29353
29420
  }
29354
29421
  const visibleIds = vue.inject(VTreeviewSymbol, {
29355
29422
  visibleIds: vue.ref()
29356
29423
  }).visibleIds;
29357
29424
  useRender(() => {
29425
+ const hasTitle = slots.title || props.title != null;
29426
+ const hasSubtitle = slots.subtitle || props.subtitle != null;
29358
29427
  const listItemProps = VListItem.filterProps(props);
29359
29428
  const hasPrepend = slots.prepend || props.toggleIcon;
29360
- return vue.createVNode(VListItem, vue.mergeProps({
29429
+ return isActivatableGroupActivator.value ? vue.withDirectives(vue.createVNode("div", {
29430
+ "class": ['v-list-item', 'v-list-item--one-line', 'v-treeview-item', 'v-treeview-item--activetable-group-activator', {
29431
+ 'v-list-item--active': isActivated.value || isSelected.value,
29432
+ 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29433
+ }, densityClasses.value, props.class],
29434
+ "onClick": activateItem
29435
+ }, [vue.createVNode(vue.Fragment, null, [genOverlays(isActivated.value || isSelected.value, 'v-list-item'), props.toggleIcon && vue.createVNode(VListItemAction, {
29436
+ "start": false
29437
+ }, {
29438
+ default: () => [vue.createVNode(VBtn, {
29439
+ "density": "compact",
29440
+ "icon": props.toggleIcon,
29441
+ "loading": props.loading,
29442
+ "variant": "text",
29443
+ "onClick": props.onClick
29444
+ }, {
29445
+ loader() {
29446
+ return vue.createVNode(VProgressCircular, {
29447
+ "indeterminate": "disable-shrink",
29448
+ "size": "20",
29449
+ "width": "2"
29450
+ }, null);
29451
+ }
29452
+ })]
29453
+ })]), vue.createVNode("div", {
29454
+ "class": "v-list-item__content",
29455
+ "data-no-activator": ""
29456
+ }, [hasTitle && vue.createVNode(VListItemTitle, {
29457
+ "key": "title"
29458
+ }, {
29459
+ default: () => [slots.title?.({
29460
+ title: props.title
29461
+ }) ?? props.title]
29462
+ }), hasSubtitle && vue.createVNode(VListItemSubtitle, {
29463
+ "key": "subtitle"
29464
+ }, {
29465
+ default: () => [slots.subtitle?.({
29466
+ subtitle: props.subtitle
29467
+ }) ?? props.subtitle]
29468
+ }), slots.default?.(slotProps.value)])]), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]) : vue.createVNode(VListItem, vue.mergeProps({
29361
29469
  "ref": vListItemRef
29362
29470
  }, listItemProps, {
29363
29471
  "class": ['v-treeview-item', {
29364
29472
  'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29365
29473
  }, props.class],
29366
- "onClick": onClick,
29474
+ "value": id.value,
29475
+ "onClick": activateItem,
29367
29476
  "onKeydown": isClickable.value && onKeyDown
29368
29477
  }), {
29369
29478
  ...slots,
@@ -29402,7 +29511,8 @@
29402
29511
  default: '$loading'
29403
29512
  },
29404
29513
  items: Array,
29405
- selectable: Boolean
29514
+ selectable: Boolean,
29515
+ selectStrategy: [String, Function, Object]
29406
29516
  }, 'VTreeviewChildren');
29407
29517
  const VTreeviewChildren = genericComponent()({
29408
29518
  name: 'VTreeviewChildren',
@@ -29426,9 +29536,10 @@
29426
29536
  isLoading.value = null;
29427
29537
  });
29428
29538
  }
29429
- function onClick(e, item) {
29430
- e.stopPropagation();
29431
- checkChildren(item);
29539
+ function selectItem(select, isSelected) {
29540
+ if (props.selectable) {
29541
+ select(!isSelected);
29542
+ }
29432
29543
  }
29433
29544
  return () => slots.default?.() ?? props.items?.map(_ref2 => {
29434
29545
  let {
@@ -29438,23 +29549,21 @@
29438
29549
  } = _ref2;
29439
29550
  const loading = isLoading.value === item.value;
29440
29551
  const slotsWithItem = {
29441
- prepend: slots.prepend ? slotProps => slots.prepend?.({
29552
+ prepend: slotProps => vue.createVNode(vue.Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && vue.createVNode("div", null, [vue.createVNode(VCheckboxBtn, {
29553
+ "key": item.value,
29554
+ "modelValue": slotProps.isSelected,
29555
+ "loading": loading,
29556
+ "indeterminate": slotProps.isIndeterminate,
29557
+ "onClick": vue.withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
29558
+ "onKeydown": e => {
29559
+ if (!['Enter', 'Space'].includes(e.key)) return;
29560
+ e.stopPropagation();
29561
+ selectItem(slotProps.select, slotProps.isSelected);
29562
+ }
29563
+ }, null)]), slots.prepend?.({
29442
29564
  ...slotProps,
29443
29565
  item
29444
- }) : props.selectable ? _ref3 => {
29445
- let {
29446
- isSelected,
29447
- isIndeterminate
29448
- } = _ref3;
29449
- return vue.createVNode(VCheckboxBtn, {
29450
- "key": item.value,
29451
- "tabindex": "-1",
29452
- "modelValue": isSelected,
29453
- "loading": loading,
29454
- "indeterminate": isIndeterminate,
29455
- "onClick": e => onClick(e, item)
29456
- }, null);
29457
- } : undefined,
29566
+ })]),
29458
29567
  append: slots.append ? slotProps => slots.append?.({
29459
29568
  ...slotProps,
29460
29569
  item
@@ -29469,13 +29578,18 @@
29469
29578
  return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps({
29470
29579
  "value": itemProps?.value
29471
29580
  }, treeviewGroupProps), {
29472
- activator: _ref4 => {
29581
+ activator: _ref3 => {
29473
29582
  let {
29474
29583
  props: activatorProps
29475
- } = _ref4;
29476
- return vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, activatorProps, {
29584
+ } = _ref3;
29585
+ const listItemProps = {
29586
+ ...itemProps,
29587
+ ...activatorProps,
29588
+ value: itemProps?.value
29589
+ };
29590
+ return vue.createVNode(VTreeviewItem, vue.mergeProps(listItemProps, {
29477
29591
  "loading": loading,
29478
- "onClick": e => onClick(e, item)
29592
+ "onClick": () => checkChildren(item)
29479
29593
  }), slotsWithItem);
29480
29594
  },
29481
29595
  default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
@@ -29506,7 +29620,7 @@
29506
29620
  ...omit(makeVListProps({
29507
29621
  collapseIcon: '$treeviewCollapse',
29508
29622
  expandIcon: '$treeviewExpand',
29509
- selectStrategy: 'independent',
29623
+ selectStrategy: 'classic',
29510
29624
  openStrategy: 'multiple',
29511
29625
  slim: true
29512
29626
  }), ['nav'])
@@ -30127,7 +30241,7 @@
30127
30241
  goTo
30128
30242
  };
30129
30243
  }
30130
- const version$1 = "3.6.7";
30244
+ const version$1 = "3.6.8";
30131
30245
  createVuetify$1.version = version$1;
30132
30246
 
30133
30247
  // Vue's inject() can only be used in setup
@@ -30380,7 +30494,7 @@
30380
30494
 
30381
30495
  /* eslint-disable local-rules/sort-imports */
30382
30496
 
30383
- const version = "3.6.7";
30497
+ const version = "3.6.8";
30384
30498
 
30385
30499
  /* eslint-disable local-rules/sort-imports */
30386
30500