@vuetify/nightly 3.9.0-beta.0-dev.2025-06-20 → 3.9.0-beta.1-dev.2025-06-26

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 (65) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/dist/json/attributes.json +2060 -2060
  3. package/dist/json/importMap-labs.json +12 -12
  4. package/dist/json/importMap.json +158 -158
  5. package/dist/json/web-types.json +3859 -3859
  6. package/dist/vuetify-labs.cjs +57 -54
  7. package/dist/vuetify-labs.css +4725 -4729
  8. package/dist/vuetify-labs.d.ts +1300 -97
  9. package/dist/vuetify-labs.esm.js +57 -54
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +57 -54
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +57 -54
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3311 -3315
  16. package/dist/vuetify.d.ts +1300 -97
  17. package/dist/vuetify.esm.js +57 -54
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +57 -54
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +45 -45
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBtn/VBtn.sass +3 -1
  25. package/lib/components/VCarousel/VCarousel.css +0 -1
  26. package/lib/components/VCarousel/VCarousel.js +1 -0
  27. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  28. package/lib/components/VCarousel/VCarousel.sass +0 -1
  29. package/lib/components/VDatePicker/VDatePickerControls.css +1 -0
  30. package/lib/components/VDatePicker/VDatePickerControls.sass +1 -0
  31. package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
  32. package/lib/components/VDatePicker/VDatePickerMonth.js +8 -3
  33. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  34. package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
  35. package/lib/components/VField/VField.js +2 -10
  36. package/lib/components/VField/VField.js.map +1 -1
  37. package/lib/components/VList/VList.js +1 -1
  38. package/lib/components/VList/VList.js.map +1 -1
  39. package/lib/components/VNumberInput/VNumberInput.js +4 -10
  40. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  41. package/lib/components/VNumberInput/hold.js +4 -0
  42. package/lib/components/VNumberInput/hold.js.map +1 -1
  43. package/lib/components/VTimePicker/VTimePicker.css +1 -6
  44. package/lib/components/VTimePicker/VTimePicker.sass +1 -6
  45. package/lib/components/VTimePicker/VTimePickerClock.css +5 -4
  46. package/lib/components/VTimePicker/VTimePickerClock.sass +5 -4
  47. package/lib/components/VTimePicker/VTimePickerControls.css +2 -1
  48. package/lib/components/VTimePicker/VTimePickerControls.sass +2 -3
  49. package/lib/components/VTreeview/VTreeviewChildren.d.ts +13 -0
  50. package/lib/components/VTreeview/VTreeviewChildren.js +11 -6
  51. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  52. package/lib/components/VTreeview/VTreeviewItem.d.ts +1206 -3
  53. package/lib/components/VTreeview/VTreeviewItem.js +11 -12
  54. package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
  55. package/lib/composables/calendar.d.ts +2 -0
  56. package/lib/composables/calendar.js +7 -3
  57. package/lib/composables/calendar.js.map +1 -1
  58. package/lib/composables/nested/nested.js +8 -8
  59. package/lib/composables/nested/nested.js.map +1 -1
  60. package/lib/entry-bundler.js +1 -1
  61. package/lib/framework.d.ts +54 -54
  62. package/lib/framework.js +1 -1
  63. package/lib/labs/VPicker/VPicker.css +4 -0
  64. package/lib/labs/VPicker/VPicker.sass +4 -0
  65. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.0-beta.0-dev.2025-06-20
2
+ * Vuetify v3.9.0-beta.1-dev.2025-06-26
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -9017,9 +9017,9 @@ const makeNestedProps = propsFactory({
9017
9017
  }, 'nested');
9018
9018
  const useNested = props => {
9019
9019
  let isUnmounted = false;
9020
- const children = ref(new Map());
9021
- const parents = ref(new Map());
9022
- const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
9020
+ const children = shallowRef(new Map());
9021
+ const parents = shallowRef(new Map());
9022
+ const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v), v => [...v.values()]);
9023
9023
  const activeStrategy = computed(() => {
9024
9024
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
9025
9025
  if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
@@ -9073,7 +9073,7 @@ const useNested = props => {
9073
9073
  });
9074
9074
  function getPath(id) {
9075
9075
  const path = [];
9076
- let parent = id;
9076
+ let parent = toRaw(id);
9077
9077
  while (parent != null) {
9078
9078
  path.unshift(parent);
9079
9079
  parent = parents.value.get(parent);
@@ -9216,7 +9216,7 @@ const useNested = props => {
9216
9216
  const useNestedItem = (id, isGroup) => {
9217
9217
  const parent = inject$1(VNestedSymbol, emptyNested);
9218
9218
  const uidSymbol = Symbol('nested item');
9219
- const computedId = computed(() => toValue(id) ?? uidSymbol);
9219
+ const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol);
9220
9220
  const item = {
9221
9221
  ...parent,
9222
9222
  id: computedId,
@@ -9225,10 +9225,10 @@ const useNestedItem = (id, isGroup) => {
9225
9225
  isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
9226
9226
  parent: computed(() => parent.root.parents.value.get(computedId.value)),
9227
9227
  activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
9228
- isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
9228
+ isActivated: computed(() => parent.root.activated.value.has(computedId.value)),
9229
9229
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
9230
- isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),
9231
- isIndeterminate: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'indeterminate'),
9230
+ isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
9231
+ isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
9232
9232
  isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),
9233
9233
  isGroupActivator: parent.isGroupActivator
9234
9234
  };
@@ -9941,7 +9941,7 @@ function useItems(props) {
9941
9941
  function transformItem$2(props, item) {
9942
9942
  const type = getPropertyFromItem(item, props.itemType, 'item');
9943
9943
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9944
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9944
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9945
9945
  const children = getPropertyFromItem(item, props.itemChildren);
9946
9946
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9947
9947
  const _props = {
@@ -12093,11 +12093,7 @@ const VField = genericComponent()({
12093
12093
  default: slots.loader
12094
12094
  }), hasPrepend && createElementVNode("div", {
12095
12095
  "key": "prepend",
12096
- "class": "v-field__prepend-inner",
12097
- "onMousedown": e => {
12098
- e.preventDefault();
12099
- e.stopPropagation();
12100
- }
12096
+ "class": "v-field__prepend-inner"
12101
12097
  }, [props.prependInnerIcon && createVNode(InputIcon, {
12102
12098
  "key": "prepend-icon",
12103
12099
  "name": "prependInner",
@@ -12166,11 +12162,7 @@ const VField = genericComponent()({
12166
12162
  })]), [[vShow, props.dirty]])]
12167
12163
  }), hasAppend && createElementVNode("div", {
12168
12164
  "key": "append",
12169
- "class": "v-field__append-inner",
12170
- "onMousedown": e => {
12171
- e.preventDefault();
12172
- e.stopPropagation();
12173
- }
12165
+ "class": "v-field__append-inner"
12174
12166
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && createVNode(InputIcon, {
12175
12167
  "key": "append-icon",
12176
12168
  "name": "appendInner",
@@ -15416,6 +15408,7 @@ const VCarousel = genericComponent()({
15416
15408
  }) : createVNode(VBtn, mergeProps(item, props), null);
15417
15409
  })]
15418
15410
  })]), props.progress && createVNode(VProgressLinear, {
15411
+ "absolute": true,
15419
15412
  "class": "v-carousel__progress",
15420
15413
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15421
15414
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22330,8 +22323,11 @@ function useCalendar(props) {
22330
22323
  }, v => adapter.getMonth(v));
22331
22324
  const weekDays = computed(() => {
22332
22325
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22333
- // Always generate all days, regardless of props.weekdays
22334
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22326
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22327
+ });
22328
+ const weekdayLabels = computed(() => {
22329
+ const labels = adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat);
22330
+ return weekDays.value.map(day => labels[day]);
22335
22331
  });
22336
22332
  const weeksInMonth = computed(() => {
22337
22333
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22412,7 +22408,7 @@ function useCalendar(props) {
22412
22408
  if (typeof props.allowedDates === 'function') {
22413
22409
  return !props.allowedDates(date);
22414
22410
  }
22415
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22411
+ return false;
22416
22412
  }
22417
22413
  return {
22418
22414
  displayValue,
@@ -22422,6 +22418,7 @@ function useCalendar(props) {
22422
22418
  model,
22423
22419
  weeksInMonth,
22424
22420
  weekDays,
22421
+ weekdayLabels,
22425
22422
  weekNumbers
22426
22423
  };
22427
22424
  }
@@ -22460,7 +22457,9 @@ const VDatePickerMonth = genericComponent()({
22460
22457
  const {
22461
22458
  daysInMonth,
22462
22459
  model,
22463
- weekNumbers
22460
+ weekNumbers,
22461
+ weekDays,
22462
+ weekdayLabels
22464
22463
  } = useCalendar(props);
22465
22464
  const adapter = useDate();
22466
22465
  const rangeStart = shallowRef();
@@ -22532,7 +22531,10 @@ const VDatePickerMonth = genericComponent()({
22532
22531
  }
22533
22532
  }
22534
22533
  useRender(() => createElementVNode("div", {
22535
- "class": "v-date-picker-month"
22534
+ "class": "v-date-picker-month",
22535
+ "style": {
22536
+ '--v-date-picker-days-in-week': weekDays.value.length
22537
+ }
22536
22538
  }, [props.showWeek && createElementVNode("div", {
22537
22539
  "key": "weeks",
22538
22540
  "class": "v-date-picker-month__weeks"
@@ -22548,7 +22550,7 @@ const VDatePickerMonth = genericComponent()({
22548
22550
  "ref": daysRef,
22549
22551
  "key": daysInMonth.value[0].date?.toString(),
22550
22552
  "class": "v-date-picker-month__days"
22551
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
22553
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => createElementVNode("div", {
22552
22554
  "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22553
22555
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22554
22556
  const slotProps = {
@@ -25228,6 +25230,8 @@ function useHold(_ref) {
25228
25230
  function holdStart(value) {
25229
25231
  holdStop();
25230
25232
  tick(value);
25233
+ window.addEventListener('pointerup', holdStop);
25234
+ document.addEventListener('blur', holdStop);
25231
25235
  timeout = window.setTimeout(() => {
25232
25236
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
25233
25237
  }, HOLD_DELAY);
@@ -25235,6 +25239,8 @@ function useHold(_ref) {
25235
25239
  function holdStop() {
25236
25240
  window.clearTimeout(timeout);
25237
25241
  window.clearInterval(interval);
25242
+ window.removeEventListener('pointerup', holdStop);
25243
+ document.removeEventListener('blur', holdStop);
25238
25244
  }
25239
25245
  function tick(value) {
25240
25246
  toggleUpDown(value === 'up');
@@ -25370,7 +25376,7 @@ const VNumberInput = genericComponent()({
25370
25376
  onClick: onControlClick,
25371
25377
  onPointerup: onControlMouseup,
25372
25378
  onPointerdown: onUpControlMousedown,
25373
- onPointercancel: onControlPointerCancel
25379
+ onPointercancel: onControlMouseup
25374
25380
  }
25375
25381
  };
25376
25382
  const decrementSlotProps = {
@@ -25378,7 +25384,7 @@ const VNumberInput = genericComponent()({
25378
25384
  onClick: onControlClick,
25379
25385
  onPointerup: onControlMouseup,
25380
25386
  onPointerdown: onDownControlMousedown,
25381
- onPointercancel: onControlPointerCancel
25387
+ onPointercancel: onControlMouseup
25382
25388
  }
25383
25389
  };
25384
25390
  watch(() => props.precision, () => formatInputValue());
@@ -25459,7 +25465,6 @@ const VNumberInput = genericComponent()({
25459
25465
  const el = e.currentTarget;
25460
25466
  el?.releasePointerCapture(e.pointerId);
25461
25467
  e.preventDefault();
25462
- e.stopPropagation();
25463
25468
  holdStop();
25464
25469
  }
25465
25470
  function onUpControlMousedown(e) {
@@ -25476,11 +25481,6 @@ const VNumberInput = genericComponent()({
25476
25481
  e.stopPropagation();
25477
25482
  holdStart('down');
25478
25483
  }
25479
- function onControlPointerCancel(e) {
25480
- const el = e.currentTarget;
25481
- el?.releasePointerCapture(e.pointerId);
25482
- holdStop();
25483
- }
25484
25484
  function clampModel() {
25485
25485
  if (controlsDisabled.value) return;
25486
25486
  if (!vTextFieldRef.value) return;
@@ -25527,7 +25527,7 @@ const VNumberInput = genericComponent()({
25527
25527
  "onClick": onControlClick,
25528
25528
  "onPointerdown": onUpControlMousedown,
25529
25529
  "onPointerup": onControlMouseup,
25530
- "onPointercancel": onControlPointerCancel,
25530
+ "onPointercancel": onControlMouseup,
25531
25531
  "size": controlNodeSize.value,
25532
25532
  "tabindex": "-1"
25533
25533
  }, null) : createVNode(VDefaultsProvider, {
@@ -25557,7 +25557,7 @@ const VNumberInput = genericComponent()({
25557
25557
  "onClick": onControlClick,
25558
25558
  "onPointerdown": onDownControlMousedown,
25559
25559
  "onPointerup": onControlMouseup,
25560
- "onPointercancel": onControlPointerCancel,
25560
+ "onPointercancel": onControlMouseup,
25561
25561
  "size": controlNodeSize.value,
25562
25562
  "tabindex": "-1"
25563
25563
  }, null) : createVNode(VDefaultsProvider, {
@@ -29762,7 +29762,7 @@ const VTreeviewItem = genericComponent()({
29762
29762
  emit('toggleExpand', e);
29763
29763
  }
29764
29764
  useRender(() => {
29765
- const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
29765
+ const listItemProps = VListItem.filterProps(props);
29766
29766
  const hasPrepend = slots.prepend || props.toggleIcon;
29767
29767
  return createVNode(VListItem, mergeProps({
29768
29768
  "ref": vListItemRef
@@ -29773,12 +29773,12 @@ const VTreeviewItem = genericComponent()({
29773
29773
  'v-treeview-item--filtered': isFiltered.value
29774
29774
  }, props.class],
29775
29775
  "ripple": false,
29776
- "onClick": props.onClick ?? activateGroupActivator
29776
+ "onClick": activateGroupActivator
29777
29777
  }), {
29778
29778
  ...slots,
29779
29779
  prepend: hasPrepend ? slotProps => {
29780
29780
  return createElementVNode(Fragment, null, [createVNode(VListItemAction, {
29781
- "start": false
29781
+ "start": true
29782
29782
  }, {
29783
29783
  default: () => [props.toggleIcon ? createVNode(VBtn, {
29784
29784
  "density": "compact",
@@ -29787,13 +29787,11 @@ const VTreeviewItem = genericComponent()({
29787
29787
  "variant": "text",
29788
29788
  "onClick": onClickAction
29789
29789
  }, {
29790
- loader() {
29791
- return createVNode(VProgressCircular, {
29792
- "indeterminate": "disable-shrink",
29793
- "size": "20",
29794
- "width": "2"
29795
- }, null);
29796
- }
29790
+ loader: () => createVNode(VProgressCircular, {
29791
+ "indeterminate": "disable-shrink",
29792
+ "size": "20",
29793
+ "width": "2"
29794
+ }, null)
29797
29795
  }) : createElementVNode("div", {
29798
29796
  "class": "v-treeview-item__level"
29799
29797
  }, null)]
@@ -29801,7 +29799,7 @@ const VTreeviewItem = genericComponent()({
29801
29799
  } : undefined
29802
29800
  });
29803
29801
  });
29804
- return {};
29802
+ return forwardRefs({}, vListItemRef);
29805
29803
  }
29806
29804
  });
29807
29805
 
@@ -29826,6 +29824,7 @@ const makeVTreeviewChildrenProps = propsFactory({
29826
29824
  falseIcon: IconValue,
29827
29825
  trueIcon: IconValue,
29828
29826
  returnObject: Boolean,
29827
+ activatable: Boolean,
29829
29828
  selectable: Boolean,
29830
29829
  selectedColor: String,
29831
29830
  selectStrategy: [String, Function, Object],
@@ -29844,7 +29843,8 @@ const VTreeviewChildren = genericComponent()({
29844
29843
  slots
29845
29844
  } = _ref;
29846
29845
  const isLoading = reactive(new Set());
29847
- const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable));
29846
+ const activatorItems = ref([]);
29847
+ const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable && !props.activatable));
29848
29848
  async function checkChildren(item) {
29849
29849
  try {
29850
29850
  if (!props.items?.length || !props.loadChildren) return;
@@ -29858,7 +29858,7 @@ const VTreeviewChildren = genericComponent()({
29858
29858
  }
29859
29859
  function selectItem(select, isSelected) {
29860
29860
  if (props.selectable) {
29861
- select(!isSelected);
29861
+ select(isSelected);
29862
29862
  }
29863
29863
  }
29864
29864
  return () => slots.default?.() ?? props.items?.map((item, index) => {
@@ -29886,7 +29886,8 @@ const VTreeviewChildren = genericComponent()({
29886
29886
  "indeterminateIcon": props.indeterminateIcon,
29887
29887
  "falseIcon": props.falseIcon,
29888
29888
  "trueIcon": props.trueIcon,
29889
- "onClick": withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
29889
+ "onUpdate:modelValue": v => selectItem(slotProps.select, v),
29890
+ "onClick": e => e.stopPropagation(),
29890
29891
  "onKeydown": e => {
29891
29892
  if (!['Enter', 'Space'].includes(e.key)) return;
29892
29893
  e.stopPropagation();
@@ -29933,9 +29934,11 @@ const VTreeviewChildren = genericComponent()({
29933
29934
  ...activatorProps,
29934
29935
  value: itemProps?.value,
29935
29936
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
29936
- onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
29937
+ onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
29937
29938
  };
29938
- return createVNode(VTreeviewItem, mergeProps(listItemProps, {
29939
+ return createVNode(VTreeviewItem, mergeProps({
29940
+ "ref": el => activatorItems.value[index] = el
29941
+ }, listItemProps, {
29939
29942
  "value": props.returnObject ? item.raw : itemProps.value,
29940
29943
  "loading": loading
29941
29944
  }), slotsWithItem);
@@ -32786,7 +32789,7 @@ function createVuetify$1() {
32786
32789
  };
32787
32790
  });
32788
32791
  }
32789
- const version$1 = "3.9.0-beta.0-dev.2025-06-20";
32792
+ const version$1 = "3.9.0-beta.1-dev.2025-06-26";
32790
32793
  createVuetify$1.version = version$1;
32791
32794
 
32792
32795
  // Vue's inject() can only be used in setup
@@ -33084,7 +33087,7 @@ var index = /*#__PURE__*/Object.freeze({
33084
33087
 
33085
33088
  /* eslint-disable local-rules/sort-imports */
33086
33089
 
33087
- const version = "3.9.0-beta.0-dev.2025-06-20";
33090
+ const version = "3.9.0-beta.1-dev.2025-06-26";
33088
33091
 
33089
33092
  /* eslint-disable local-rules/sort-imports */
33090
33093