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

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 (62) hide show
  1. package/CHANGELOG.md +87 -3
  2. package/dist/json/attributes.json +1523 -1523
  3. package/dist/json/importMap-labs.json +16 -16
  4. package/dist/json/importMap.json +182 -182
  5. package/dist/json/web-types.json +2950 -2950
  6. package/dist/vuetify-labs.cjs +45 -43
  7. package/dist/vuetify-labs.css +5095 -5099
  8. package/dist/vuetify-labs.d.ts +1294 -91
  9. package/dist/vuetify-labs.esm.js +45 -43
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +45 -43
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +45 -43
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2312 -2316
  16. package/dist/vuetify.d.ts +1294 -91
  17. package/dist/vuetify.esm.js +45 -43
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +45 -43
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +38 -38
  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.js +9 -5
  50. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  51. package/lib/components/VTreeview/VTreeviewItem.d.ts +1206 -3
  52. package/lib/components/VTreeview/VTreeviewItem.js +8 -9
  53. package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
  54. package/lib/composables/calendar.d.ts +2 -0
  55. package/lib/composables/calendar.js +7 -3
  56. package/lib/composables/calendar.js.map +1 -1
  57. package/lib/entry-bundler.js +1 -1
  58. package/lib/framework.d.ts +62 -62
  59. package/lib/framework.js +1 -1
  60. package/lib/labs/VPicker/VPicker.css +4 -0
  61. package/lib/labs/VPicker/VPicker.sass +4 -0
  62. package/package.json +1 -1
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.0-beta.0-dev.2025-06-20
2
+ * Vuetify v3.9.0-beta.0-dev.2025-06-24
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -10223,7 +10223,7 @@
10223
10223
  function transformItem$2(props, item) {
10224
10224
  const type = getPropertyFromItem(item, props.itemType, 'item');
10225
10225
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
10226
- const value = getPropertyFromItem(item, props.itemValue, undefined);
10226
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
10227
10227
  const children = getPropertyFromItem(item, props.itemChildren);
10228
10228
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
10229
10229
  const _props = {
@@ -12375,11 +12375,7 @@
12375
12375
  default: slots.loader
12376
12376
  }), hasPrepend && vue.createElementVNode("div", {
12377
12377
  "key": "prepend",
12378
- "class": "v-field__prepend-inner",
12379
- "onMousedown": e => {
12380
- e.preventDefault();
12381
- e.stopPropagation();
12382
- }
12378
+ "class": "v-field__prepend-inner"
12383
12379
  }, [props.prependInnerIcon && vue.createVNode(InputIcon, {
12384
12380
  "key": "prepend-icon",
12385
12381
  "name": "prependInner",
@@ -12448,11 +12444,7 @@
12448
12444
  })]), [[vue.vShow, props.dirty]])]
12449
12445
  }), hasAppend && vue.createElementVNode("div", {
12450
12446
  "key": "append",
12451
- "class": "v-field__append-inner",
12452
- "onMousedown": e => {
12453
- e.preventDefault();
12454
- e.stopPropagation();
12455
- }
12447
+ "class": "v-field__append-inner"
12456
12448
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
12457
12449
  "key": "append-icon",
12458
12450
  "name": "appendInner",
@@ -15698,6 +15690,7 @@
15698
15690
  }) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
15699
15691
  })]
15700
15692
  })]), props.progress && vue.createVNode(VProgressLinear, {
15693
+ "absolute": true,
15701
15694
  "class": "v-carousel__progress",
15702
15695
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15703
15696
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22612,8 +22605,11 @@
22612
22605
  }, v => adapter.getMonth(v));
22613
22606
  const weekDays = vue.computed(() => {
22614
22607
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22615
- // Always generate all days, regardless of props.weekdays
22616
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22608
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22609
+ });
22610
+ const weekdayLabels = vue.computed(() => {
22611
+ const labels = adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat);
22612
+ return weekDays.value.map(day => labels[day]);
22617
22613
  });
22618
22614
  const weeksInMonth = vue.computed(() => {
22619
22615
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22694,7 +22690,7 @@
22694
22690
  if (typeof props.allowedDates === 'function') {
22695
22691
  return !props.allowedDates(date);
22696
22692
  }
22697
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22693
+ return false;
22698
22694
  }
22699
22695
  return {
22700
22696
  displayValue,
@@ -22704,6 +22700,7 @@
22704
22700
  model,
22705
22701
  weeksInMonth,
22706
22702
  weekDays,
22703
+ weekdayLabels,
22707
22704
  weekNumbers
22708
22705
  };
22709
22706
  }
@@ -22742,7 +22739,9 @@
22742
22739
  const {
22743
22740
  daysInMonth,
22744
22741
  model,
22745
- weekNumbers
22742
+ weekNumbers,
22743
+ weekDays,
22744
+ weekdayLabels
22746
22745
  } = useCalendar(props);
22747
22746
  const adapter = useDate();
22748
22747
  const rangeStart = vue.shallowRef();
@@ -22814,7 +22813,10 @@
22814
22813
  }
22815
22814
  }
22816
22815
  useRender(() => vue.createElementVNode("div", {
22817
- "class": "v-date-picker-month"
22816
+ "class": "v-date-picker-month",
22817
+ "style": {
22818
+ '--v-date-picker-days-in-week': weekDays.value.length
22819
+ }
22818
22820
  }, [props.showWeek && vue.createElementVNode("div", {
22819
22821
  "key": "weeks",
22820
22822
  "class": "v-date-picker-month__weeks"
@@ -22830,7 +22832,7 @@
22830
22832
  "ref": daysRef,
22831
22833
  "key": daysInMonth.value[0].date?.toString(),
22832
22834
  "class": "v-date-picker-month__days"
22833
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => vue.createElementVNode("div", {
22835
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
22834
22836
  "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22835
22837
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22836
22838
  const slotProps = {
@@ -25510,6 +25512,8 @@
25510
25512
  function holdStart(value) {
25511
25513
  holdStop();
25512
25514
  tick(value);
25515
+ window.addEventListener('pointerup', holdStop);
25516
+ document.addEventListener('blur', holdStop);
25513
25517
  timeout = window.setTimeout(() => {
25514
25518
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
25515
25519
  }, HOLD_DELAY);
@@ -25517,6 +25521,8 @@
25517
25521
  function holdStop() {
25518
25522
  window.clearTimeout(timeout);
25519
25523
  window.clearInterval(interval);
25524
+ window.removeEventListener('pointerup', holdStop);
25525
+ document.removeEventListener('blur', holdStop);
25520
25526
  }
25521
25527
  function tick(value) {
25522
25528
  toggleUpDown(value === 'up');
@@ -25652,7 +25658,7 @@
25652
25658
  onClick: onControlClick,
25653
25659
  onPointerup: onControlMouseup,
25654
25660
  onPointerdown: onUpControlMousedown,
25655
- onPointercancel: onControlPointerCancel
25661
+ onPointercancel: onControlMouseup
25656
25662
  }
25657
25663
  };
25658
25664
  const decrementSlotProps = {
@@ -25660,7 +25666,7 @@
25660
25666
  onClick: onControlClick,
25661
25667
  onPointerup: onControlMouseup,
25662
25668
  onPointerdown: onDownControlMousedown,
25663
- onPointercancel: onControlPointerCancel
25669
+ onPointercancel: onControlMouseup
25664
25670
  }
25665
25671
  };
25666
25672
  vue.watch(() => props.precision, () => formatInputValue());
@@ -25741,7 +25747,6 @@
25741
25747
  const el = e.currentTarget;
25742
25748
  el?.releasePointerCapture(e.pointerId);
25743
25749
  e.preventDefault();
25744
- e.stopPropagation();
25745
25750
  holdStop();
25746
25751
  }
25747
25752
  function onUpControlMousedown(e) {
@@ -25758,11 +25763,6 @@
25758
25763
  e.stopPropagation();
25759
25764
  holdStart('down');
25760
25765
  }
25761
- function onControlPointerCancel(e) {
25762
- const el = e.currentTarget;
25763
- el?.releasePointerCapture(e.pointerId);
25764
- holdStop();
25765
- }
25766
25766
  function clampModel() {
25767
25767
  if (controlsDisabled.value) return;
25768
25768
  if (!vTextFieldRef.value) return;
@@ -25809,7 +25809,7 @@
25809
25809
  "onClick": onControlClick,
25810
25810
  "onPointerdown": onUpControlMousedown,
25811
25811
  "onPointerup": onControlMouseup,
25812
- "onPointercancel": onControlPointerCancel,
25812
+ "onPointercancel": onControlMouseup,
25813
25813
  "size": controlNodeSize.value,
25814
25814
  "tabindex": "-1"
25815
25815
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25839,7 +25839,7 @@
25839
25839
  "onClick": onControlClick,
25840
25840
  "onPointerdown": onDownControlMousedown,
25841
25841
  "onPointerup": onControlMouseup,
25842
- "onPointercancel": onControlPointerCancel,
25842
+ "onPointercancel": onControlMouseup,
25843
25843
  "size": controlNodeSize.value,
25844
25844
  "tabindex": "-1"
25845
25845
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -30060,7 +30060,7 @@
30060
30060
  ...slots,
30061
30061
  prepend: hasPrepend ? slotProps => {
30062
30062
  return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VListItemAction, {
30063
- "start": false
30063
+ "start": true
30064
30064
  }, {
30065
30065
  default: () => [props.toggleIcon ? vue.createVNode(VBtn, {
30066
30066
  "density": "compact",
@@ -30069,13 +30069,11 @@
30069
30069
  "variant": "text",
30070
30070
  "onClick": onClickAction
30071
30071
  }, {
30072
- loader() {
30073
- return vue.createVNode(VProgressCircular, {
30074
- "indeterminate": "disable-shrink",
30075
- "size": "20",
30076
- "width": "2"
30077
- }, null);
30078
- }
30072
+ loader: () => vue.createVNode(VProgressCircular, {
30073
+ "indeterminate": "disable-shrink",
30074
+ "size": "20",
30075
+ "width": "2"
30076
+ }, null)
30079
30077
  }) : vue.createElementVNode("div", {
30080
30078
  "class": "v-treeview-item__level"
30081
30079
  }, null)]
@@ -30083,7 +30081,7 @@
30083
30081
  } : undefined
30084
30082
  });
30085
30083
  });
30086
- return {};
30084
+ return forwardRefs({}, vListItemRef);
30087
30085
  }
30088
30086
  });
30089
30087
 
@@ -30126,6 +30124,7 @@
30126
30124
  slots
30127
30125
  } = _ref;
30128
30126
  const isLoading = vue.reactive(new Set());
30127
+ const activatorItems = vue.ref([]);
30129
30128
  const isClickOnOpen = vue.computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable));
30130
30129
  async function checkChildren(item) {
30131
30130
  try {
@@ -30140,7 +30139,7 @@
30140
30139
  }
30141
30140
  function selectItem(select, isSelected) {
30142
30141
  if (props.selectable) {
30143
- select(!isSelected);
30142
+ select(isSelected);
30144
30143
  }
30145
30144
  }
30146
30145
  return () => slots.default?.() ?? props.items?.map((item, index) => {
@@ -30168,7 +30167,8 @@
30168
30167
  "indeterminateIcon": props.indeterminateIcon,
30169
30168
  "falseIcon": props.falseIcon,
30170
30169
  "trueIcon": props.trueIcon,
30171
- "onClick": vue.withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
30170
+ "onUpdate:modelValue": v => selectItem(slotProps.select, v),
30171
+ "onClick": e => e.stopPropagation(),
30172
30172
  "onKeydown": e => {
30173
30173
  if (!['Enter', 'Space'].includes(e.key)) return;
30174
30174
  e.stopPropagation();
@@ -30215,9 +30215,11 @@
30215
30215
  ...activatorProps,
30216
30216
  value: itemProps?.value,
30217
30217
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
30218
- onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
30218
+ onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
30219
30219
  };
30220
- return vue.createVNode(VTreeviewItem, vue.mergeProps(listItemProps, {
30220
+ return vue.createVNode(VTreeviewItem, vue.mergeProps({
30221
+ "ref": el => activatorItems.value[index] = el
30222
+ }, listItemProps, {
30221
30223
  "value": props.returnObject ? item.raw : itemProps.value,
30222
30224
  "loading": loading
30223
30225
  }), slotsWithItem);
@@ -30894,7 +30896,7 @@
30894
30896
  };
30895
30897
  });
30896
30898
  }
30897
- const version$1 = "3.9.0-beta.0-dev.2025-06-20";
30899
+ const version$1 = "3.9.0-beta.0-dev.2025-06-24";
30898
30900
  createVuetify$1.version = version$1;
30899
30901
 
30900
30902
  // Vue's inject() can only be used in setup
@@ -30919,7 +30921,7 @@
30919
30921
  ...options
30920
30922
  });
30921
30923
  };
30922
- const version = "3.9.0-beta.0-dev.2025-06-20";
30924
+ const version = "3.9.0-beta.0-dev.2025-06-24";
30923
30925
  createVuetify.version = version;
30924
30926
 
30925
30927
  exports.blueprints = index;