@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
  */
@@ -9295,9 +9295,9 @@ const makeNestedProps = propsFactory({
9295
9295
  }, 'nested');
9296
9296
  const useNested = props => {
9297
9297
  let isUnmounted = false;
9298
- const children = ref(new Map());
9299
- const parents = ref(new Map());
9300
- const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
9298
+ const children = shallowRef(new Map());
9299
+ const parents = shallowRef(new Map());
9300
+ const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v), v => [...v.values()]);
9301
9301
  const activeStrategy = computed(() => {
9302
9302
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
9303
9303
  if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
@@ -9351,7 +9351,7 @@ const useNested = props => {
9351
9351
  });
9352
9352
  function getPath(id) {
9353
9353
  const path = [];
9354
- let parent = id;
9354
+ let parent = toRaw(id);
9355
9355
  while (parent != null) {
9356
9356
  path.unshift(parent);
9357
9357
  parent = parents.value.get(parent);
@@ -9494,7 +9494,7 @@ const useNested = props => {
9494
9494
  const useNestedItem = (id, isGroup) => {
9495
9495
  const parent = inject$1(VNestedSymbol, emptyNested);
9496
9496
  const uidSymbol = Symbol('nested item');
9497
- const computedId = computed(() => toValue(id) ?? uidSymbol);
9497
+ const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol);
9498
9498
  const item = {
9499
9499
  ...parent,
9500
9500
  id: computedId,
@@ -9503,10 +9503,10 @@ const useNestedItem = (id, isGroup) => {
9503
9503
  isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
9504
9504
  parent: computed(() => parent.root.parents.value.get(computedId.value)),
9505
9505
  activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
9506
- isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
9506
+ isActivated: computed(() => parent.root.activated.value.has(computedId.value)),
9507
9507
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
9508
- isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),
9509
- isIndeterminate: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'indeterminate'),
9508
+ isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
9509
+ isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
9510
9510
  isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),
9511
9511
  isGroupActivator: parent.isGroupActivator
9512
9512
  };
@@ -10219,7 +10219,7 @@ function useItems(props) {
10219
10219
  function transformItem$2(props, item) {
10220
10220
  const type = getPropertyFromItem(item, props.itemType, 'item');
10221
10221
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
10222
- const value = getPropertyFromItem(item, props.itemValue, undefined);
10222
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
10223
10223
  const children = getPropertyFromItem(item, props.itemChildren);
10224
10224
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
10225
10225
  const _props = {
@@ -12371,11 +12371,7 @@ const VField = genericComponent()({
12371
12371
  default: slots.loader
12372
12372
  }), hasPrepend && createElementVNode("div", {
12373
12373
  "key": "prepend",
12374
- "class": "v-field__prepend-inner",
12375
- "onMousedown": e => {
12376
- e.preventDefault();
12377
- e.stopPropagation();
12378
- }
12374
+ "class": "v-field__prepend-inner"
12379
12375
  }, [props.prependInnerIcon && createVNode(InputIcon, {
12380
12376
  "key": "prepend-icon",
12381
12377
  "name": "prependInner",
@@ -12444,11 +12440,7 @@ const VField = genericComponent()({
12444
12440
  })]), [[vShow, props.dirty]])]
12445
12441
  }), hasAppend && createElementVNode("div", {
12446
12442
  "key": "append",
12447
- "class": "v-field__append-inner",
12448
- "onMousedown": e => {
12449
- e.preventDefault();
12450
- e.stopPropagation();
12451
- }
12443
+ "class": "v-field__append-inner"
12452
12444
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && createVNode(InputIcon, {
12453
12445
  "key": "append-icon",
12454
12446
  "name": "appendInner",
@@ -15694,6 +15686,7 @@ const VCarousel = genericComponent()({
15694
15686
  }) : createVNode(VBtn, mergeProps(item, props), null);
15695
15687
  })]
15696
15688
  })]), props.progress && createVNode(VProgressLinear, {
15689
+ "absolute": true,
15697
15690
  "class": "v-carousel__progress",
15698
15691
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15699
15692
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22608,8 +22601,11 @@ function useCalendar(props) {
22608
22601
  }, v => adapter.getMonth(v));
22609
22602
  const weekDays = computed(() => {
22610
22603
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22611
- // Always generate all days, regardless of props.weekdays
22612
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22604
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22605
+ });
22606
+ const weekdayLabels = computed(() => {
22607
+ const labels = adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat);
22608
+ return weekDays.value.map(day => labels[day]);
22613
22609
  });
22614
22610
  const weeksInMonth = computed(() => {
22615
22611
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22690,7 +22686,7 @@ function useCalendar(props) {
22690
22686
  if (typeof props.allowedDates === 'function') {
22691
22687
  return !props.allowedDates(date);
22692
22688
  }
22693
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22689
+ return false;
22694
22690
  }
22695
22691
  return {
22696
22692
  displayValue,
@@ -22700,6 +22696,7 @@ function useCalendar(props) {
22700
22696
  model,
22701
22697
  weeksInMonth,
22702
22698
  weekDays,
22699
+ weekdayLabels,
22703
22700
  weekNumbers
22704
22701
  };
22705
22702
  }
@@ -22738,7 +22735,9 @@ const VDatePickerMonth = genericComponent()({
22738
22735
  const {
22739
22736
  daysInMonth,
22740
22737
  model,
22741
- weekNumbers
22738
+ weekNumbers,
22739
+ weekDays,
22740
+ weekdayLabels
22742
22741
  } = useCalendar(props);
22743
22742
  const adapter = useDate();
22744
22743
  const rangeStart = shallowRef();
@@ -22810,7 +22809,10 @@ const VDatePickerMonth = genericComponent()({
22810
22809
  }
22811
22810
  }
22812
22811
  useRender(() => createElementVNode("div", {
22813
- "class": "v-date-picker-month"
22812
+ "class": "v-date-picker-month",
22813
+ "style": {
22814
+ '--v-date-picker-days-in-week': weekDays.value.length
22815
+ }
22814
22816
  }, [props.showWeek && createElementVNode("div", {
22815
22817
  "key": "weeks",
22816
22818
  "class": "v-date-picker-month__weeks"
@@ -22826,7 +22828,7 @@ const VDatePickerMonth = genericComponent()({
22826
22828
  "ref": daysRef,
22827
22829
  "key": daysInMonth.value[0].date?.toString(),
22828
22830
  "class": "v-date-picker-month__days"
22829
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
22831
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => createElementVNode("div", {
22830
22832
  "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22831
22833
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22832
22834
  const slotProps = {
@@ -25506,6 +25508,8 @@ function useHold(_ref) {
25506
25508
  function holdStart(value) {
25507
25509
  holdStop();
25508
25510
  tick(value);
25511
+ window.addEventListener('pointerup', holdStop);
25512
+ document.addEventListener('blur', holdStop);
25509
25513
  timeout = window.setTimeout(() => {
25510
25514
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
25511
25515
  }, HOLD_DELAY);
@@ -25513,6 +25517,8 @@ function useHold(_ref) {
25513
25517
  function holdStop() {
25514
25518
  window.clearTimeout(timeout);
25515
25519
  window.clearInterval(interval);
25520
+ window.removeEventListener('pointerup', holdStop);
25521
+ document.removeEventListener('blur', holdStop);
25516
25522
  }
25517
25523
  function tick(value) {
25518
25524
  toggleUpDown(value === 'up');
@@ -25648,7 +25654,7 @@ const VNumberInput = genericComponent()({
25648
25654
  onClick: onControlClick,
25649
25655
  onPointerup: onControlMouseup,
25650
25656
  onPointerdown: onUpControlMousedown,
25651
- onPointercancel: onControlPointerCancel
25657
+ onPointercancel: onControlMouseup
25652
25658
  }
25653
25659
  };
25654
25660
  const decrementSlotProps = {
@@ -25656,7 +25662,7 @@ const VNumberInput = genericComponent()({
25656
25662
  onClick: onControlClick,
25657
25663
  onPointerup: onControlMouseup,
25658
25664
  onPointerdown: onDownControlMousedown,
25659
- onPointercancel: onControlPointerCancel
25665
+ onPointercancel: onControlMouseup
25660
25666
  }
25661
25667
  };
25662
25668
  watch(() => props.precision, () => formatInputValue());
@@ -25737,7 +25743,6 @@ const VNumberInput = genericComponent()({
25737
25743
  const el = e.currentTarget;
25738
25744
  el?.releasePointerCapture(e.pointerId);
25739
25745
  e.preventDefault();
25740
- e.stopPropagation();
25741
25746
  holdStop();
25742
25747
  }
25743
25748
  function onUpControlMousedown(e) {
@@ -25754,11 +25759,6 @@ const VNumberInput = genericComponent()({
25754
25759
  e.stopPropagation();
25755
25760
  holdStart('down');
25756
25761
  }
25757
- function onControlPointerCancel(e) {
25758
- const el = e.currentTarget;
25759
- el?.releasePointerCapture(e.pointerId);
25760
- holdStop();
25761
- }
25762
25762
  function clampModel() {
25763
25763
  if (controlsDisabled.value) return;
25764
25764
  if (!vTextFieldRef.value) return;
@@ -25805,7 +25805,7 @@ const VNumberInput = genericComponent()({
25805
25805
  "onClick": onControlClick,
25806
25806
  "onPointerdown": onUpControlMousedown,
25807
25807
  "onPointerup": onControlMouseup,
25808
- "onPointercancel": onControlPointerCancel,
25808
+ "onPointercancel": onControlMouseup,
25809
25809
  "size": controlNodeSize.value,
25810
25810
  "tabindex": "-1"
25811
25811
  }, null) : createVNode(VDefaultsProvider, {
@@ -25835,7 +25835,7 @@ const VNumberInput = genericComponent()({
25835
25835
  "onClick": onControlClick,
25836
25836
  "onPointerdown": onDownControlMousedown,
25837
25837
  "onPointerup": onControlMouseup,
25838
- "onPointercancel": onControlPointerCancel,
25838
+ "onPointercancel": onControlMouseup,
25839
25839
  "size": controlNodeSize.value,
25840
25840
  "tabindex": "-1"
25841
25841
  }, null) : createVNode(VDefaultsProvider, {
@@ -30040,7 +30040,7 @@ const VTreeviewItem = genericComponent()({
30040
30040
  emit('toggleExpand', e);
30041
30041
  }
30042
30042
  useRender(() => {
30043
- const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
30043
+ const listItemProps = VListItem.filterProps(props);
30044
30044
  const hasPrepend = slots.prepend || props.toggleIcon;
30045
30045
  return createVNode(VListItem, mergeProps({
30046
30046
  "ref": vListItemRef
@@ -30051,12 +30051,12 @@ const VTreeviewItem = genericComponent()({
30051
30051
  'v-treeview-item--filtered': isFiltered.value
30052
30052
  }, props.class],
30053
30053
  "ripple": false,
30054
- "onClick": props.onClick ?? activateGroupActivator
30054
+ "onClick": activateGroupActivator
30055
30055
  }), {
30056
30056
  ...slots,
30057
30057
  prepend: hasPrepend ? slotProps => {
30058
30058
  return createElementVNode(Fragment, null, [createVNode(VListItemAction, {
30059
- "start": false
30059
+ "start": true
30060
30060
  }, {
30061
30061
  default: () => [props.toggleIcon ? createVNode(VBtn, {
30062
30062
  "density": "compact",
@@ -30065,13 +30065,11 @@ const VTreeviewItem = genericComponent()({
30065
30065
  "variant": "text",
30066
30066
  "onClick": onClickAction
30067
30067
  }, {
30068
- loader() {
30069
- return createVNode(VProgressCircular, {
30070
- "indeterminate": "disable-shrink",
30071
- "size": "20",
30072
- "width": "2"
30073
- }, null);
30074
- }
30068
+ loader: () => createVNode(VProgressCircular, {
30069
+ "indeterminate": "disable-shrink",
30070
+ "size": "20",
30071
+ "width": "2"
30072
+ }, null)
30075
30073
  }) : createElementVNode("div", {
30076
30074
  "class": "v-treeview-item__level"
30077
30075
  }, null)]
@@ -30079,7 +30077,7 @@ const VTreeviewItem = genericComponent()({
30079
30077
  } : undefined
30080
30078
  });
30081
30079
  });
30082
- return {};
30080
+ return forwardRefs({}, vListItemRef);
30083
30081
  }
30084
30082
  });
30085
30083
 
@@ -30104,6 +30102,7 @@ const makeVTreeviewChildrenProps = propsFactory({
30104
30102
  falseIcon: IconValue,
30105
30103
  trueIcon: IconValue,
30106
30104
  returnObject: Boolean,
30105
+ activatable: Boolean,
30107
30106
  selectable: Boolean,
30108
30107
  selectedColor: String,
30109
30108
  selectStrategy: [String, Function, Object],
@@ -30122,7 +30121,8 @@ const VTreeviewChildren = genericComponent()({
30122
30121
  slots
30123
30122
  } = _ref;
30124
30123
  const isLoading = reactive(new Set());
30125
- const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable));
30124
+ const activatorItems = ref([]);
30125
+ const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable && !props.activatable));
30126
30126
  async function checkChildren(item) {
30127
30127
  try {
30128
30128
  if (!props.items?.length || !props.loadChildren) return;
@@ -30136,7 +30136,7 @@ const VTreeviewChildren = genericComponent()({
30136
30136
  }
30137
30137
  function selectItem(select, isSelected) {
30138
30138
  if (props.selectable) {
30139
- select(!isSelected);
30139
+ select(isSelected);
30140
30140
  }
30141
30141
  }
30142
30142
  return () => slots.default?.() ?? props.items?.map((item, index) => {
@@ -30164,7 +30164,8 @@ const VTreeviewChildren = genericComponent()({
30164
30164
  "indeterminateIcon": props.indeterminateIcon,
30165
30165
  "falseIcon": props.falseIcon,
30166
30166
  "trueIcon": props.trueIcon,
30167
- "onClick": withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
30167
+ "onUpdate:modelValue": v => selectItem(slotProps.select, v),
30168
+ "onClick": e => e.stopPropagation(),
30168
30169
  "onKeydown": e => {
30169
30170
  if (!['Enter', 'Space'].includes(e.key)) return;
30170
30171
  e.stopPropagation();
@@ -30211,9 +30212,11 @@ const VTreeviewChildren = genericComponent()({
30211
30212
  ...activatorProps,
30212
30213
  value: itemProps?.value,
30213
30214
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
30214
- onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
30215
+ onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
30215
30216
  };
30216
- return createVNode(VTreeviewItem, mergeProps(listItemProps, {
30217
+ return createVNode(VTreeviewItem, mergeProps({
30218
+ "ref": el => activatorItems.value[index] = el
30219
+ }, listItemProps, {
30217
30220
  "value": props.returnObject ? item.raw : itemProps.value,
30218
30221
  "loading": loading
30219
30222
  }), slotsWithItem);
@@ -30890,7 +30893,7 @@ function createVuetify$1() {
30890
30893
  };
30891
30894
  });
30892
30895
  }
30893
- const version$1 = "3.9.0-beta.0-dev.2025-06-20";
30896
+ const version$1 = "3.9.0-beta.1-dev.2025-06-26";
30894
30897
  createVuetify$1.version = version$1;
30895
30898
 
30896
30899
  // Vue's inject() can only be used in setup
@@ -30915,7 +30918,7 @@ const createVuetify = function () {
30915
30918
  ...options
30916
30919
  });
30917
30920
  };
30918
- const version = "3.9.0-beta.0-dev.2025-06-20";
30921
+ const version = "3.9.0-beta.1-dev.2025-06-26";
30919
30922
  createVuetify.version = version;
30920
30923
 
30921
30924
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };