@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
@@ -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
  */
@@ -9945,7 +9945,7 @@
9945
9945
  function transformItem$2(props, item) {
9946
9946
  const type = getPropertyFromItem(item, props.itemType, 'item');
9947
9947
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9948
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9948
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9949
9949
  const children = getPropertyFromItem(item, props.itemChildren);
9950
9950
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9951
9951
  const _props = {
@@ -12097,11 +12097,7 @@
12097
12097
  default: slots.loader
12098
12098
  }), hasPrepend && vue.createElementVNode("div", {
12099
12099
  "key": "prepend",
12100
- "class": "v-field__prepend-inner",
12101
- "onMousedown": e => {
12102
- e.preventDefault();
12103
- e.stopPropagation();
12104
- }
12100
+ "class": "v-field__prepend-inner"
12105
12101
  }, [props.prependInnerIcon && vue.createVNode(InputIcon, {
12106
12102
  "key": "prepend-icon",
12107
12103
  "name": "prependInner",
@@ -12170,11 +12166,7 @@
12170
12166
  })]), [[vue.vShow, props.dirty]])]
12171
12167
  }), hasAppend && vue.createElementVNode("div", {
12172
12168
  "key": "append",
12173
- "class": "v-field__append-inner",
12174
- "onMousedown": e => {
12175
- e.preventDefault();
12176
- e.stopPropagation();
12177
- }
12169
+ "class": "v-field__append-inner"
12178
12170
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
12179
12171
  "key": "append-icon",
12180
12172
  "name": "appendInner",
@@ -15420,6 +15412,7 @@
15420
15412
  }) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
15421
15413
  })]
15422
15414
  })]), props.progress && vue.createVNode(VProgressLinear, {
15415
+ "absolute": true,
15423
15416
  "class": "v-carousel__progress",
15424
15417
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15425
15418
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22334,8 +22327,11 @@
22334
22327
  }, v => adapter.getMonth(v));
22335
22328
  const weekDays = vue.computed(() => {
22336
22329
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22337
- // Always generate all days, regardless of props.weekdays
22338
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22330
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22331
+ });
22332
+ const weekdayLabels = vue.computed(() => {
22333
+ const labels = adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat);
22334
+ return weekDays.value.map(day => labels[day]);
22339
22335
  });
22340
22336
  const weeksInMonth = vue.computed(() => {
22341
22337
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22416,7 +22412,7 @@
22416
22412
  if (typeof props.allowedDates === 'function') {
22417
22413
  return !props.allowedDates(date);
22418
22414
  }
22419
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22415
+ return false;
22420
22416
  }
22421
22417
  return {
22422
22418
  displayValue,
@@ -22426,6 +22422,7 @@
22426
22422
  model,
22427
22423
  weeksInMonth,
22428
22424
  weekDays,
22425
+ weekdayLabels,
22429
22426
  weekNumbers
22430
22427
  };
22431
22428
  }
@@ -22464,7 +22461,9 @@
22464
22461
  const {
22465
22462
  daysInMonth,
22466
22463
  model,
22467
- weekNumbers
22464
+ weekNumbers,
22465
+ weekDays,
22466
+ weekdayLabels
22468
22467
  } = useCalendar(props);
22469
22468
  const adapter = useDate();
22470
22469
  const rangeStart = vue.shallowRef();
@@ -22536,7 +22535,10 @@
22536
22535
  }
22537
22536
  }
22538
22537
  useRender(() => vue.createElementVNode("div", {
22539
- "class": "v-date-picker-month"
22538
+ "class": "v-date-picker-month",
22539
+ "style": {
22540
+ '--v-date-picker-days-in-week': weekDays.value.length
22541
+ }
22540
22542
  }, [props.showWeek && vue.createElementVNode("div", {
22541
22543
  "key": "weeks",
22542
22544
  "class": "v-date-picker-month__weeks"
@@ -22552,7 +22554,7 @@
22552
22554
  "ref": daysRef,
22553
22555
  "key": daysInMonth.value[0].date?.toString(),
22554
22556
  "class": "v-date-picker-month__days"
22555
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => vue.createElementVNode("div", {
22557
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
22556
22558
  "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22557
22559
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22558
22560
  const slotProps = {
@@ -25232,6 +25234,8 @@
25232
25234
  function holdStart(value) {
25233
25235
  holdStop();
25234
25236
  tick(value);
25237
+ window.addEventListener('pointerup', holdStop);
25238
+ document.addEventListener('blur', holdStop);
25235
25239
  timeout = window.setTimeout(() => {
25236
25240
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
25237
25241
  }, HOLD_DELAY);
@@ -25239,6 +25243,8 @@
25239
25243
  function holdStop() {
25240
25244
  window.clearTimeout(timeout);
25241
25245
  window.clearInterval(interval);
25246
+ window.removeEventListener('pointerup', holdStop);
25247
+ document.removeEventListener('blur', holdStop);
25242
25248
  }
25243
25249
  function tick(value) {
25244
25250
  toggleUpDown(value === 'up');
@@ -25374,7 +25380,7 @@
25374
25380
  onClick: onControlClick,
25375
25381
  onPointerup: onControlMouseup,
25376
25382
  onPointerdown: onUpControlMousedown,
25377
- onPointercancel: onControlPointerCancel
25383
+ onPointercancel: onControlMouseup
25378
25384
  }
25379
25385
  };
25380
25386
  const decrementSlotProps = {
@@ -25382,7 +25388,7 @@
25382
25388
  onClick: onControlClick,
25383
25389
  onPointerup: onControlMouseup,
25384
25390
  onPointerdown: onDownControlMousedown,
25385
- onPointercancel: onControlPointerCancel
25391
+ onPointercancel: onControlMouseup
25386
25392
  }
25387
25393
  };
25388
25394
  vue.watch(() => props.precision, () => formatInputValue());
@@ -25463,7 +25469,6 @@
25463
25469
  const el = e.currentTarget;
25464
25470
  el?.releasePointerCapture(e.pointerId);
25465
25471
  e.preventDefault();
25466
- e.stopPropagation();
25467
25472
  holdStop();
25468
25473
  }
25469
25474
  function onUpControlMousedown(e) {
@@ -25480,11 +25485,6 @@
25480
25485
  e.stopPropagation();
25481
25486
  holdStart('down');
25482
25487
  }
25483
- function onControlPointerCancel(e) {
25484
- const el = e.currentTarget;
25485
- el?.releasePointerCapture(e.pointerId);
25486
- holdStop();
25487
- }
25488
25488
  function clampModel() {
25489
25489
  if (controlsDisabled.value) return;
25490
25490
  if (!vTextFieldRef.value) return;
@@ -25531,7 +25531,7 @@
25531
25531
  "onClick": onControlClick,
25532
25532
  "onPointerdown": onUpControlMousedown,
25533
25533
  "onPointerup": onControlMouseup,
25534
- "onPointercancel": onControlPointerCancel,
25534
+ "onPointercancel": onControlMouseup,
25535
25535
  "size": controlNodeSize.value,
25536
25536
  "tabindex": "-1"
25537
25537
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25561,7 +25561,7 @@
25561
25561
  "onClick": onControlClick,
25562
25562
  "onPointerdown": onDownControlMousedown,
25563
25563
  "onPointerup": onControlMouseup,
25564
- "onPointercancel": onControlPointerCancel,
25564
+ "onPointercancel": onControlMouseup,
25565
25565
  "size": controlNodeSize.value,
25566
25566
  "tabindex": "-1"
25567
25567
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -29782,7 +29782,7 @@
29782
29782
  ...slots,
29783
29783
  prepend: hasPrepend ? slotProps => {
29784
29784
  return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VListItemAction, {
29785
- "start": false
29785
+ "start": true
29786
29786
  }, {
29787
29787
  default: () => [props.toggleIcon ? vue.createVNode(VBtn, {
29788
29788
  "density": "compact",
@@ -29791,13 +29791,11 @@
29791
29791
  "variant": "text",
29792
29792
  "onClick": onClickAction
29793
29793
  }, {
29794
- loader() {
29795
- return vue.createVNode(VProgressCircular, {
29796
- "indeterminate": "disable-shrink",
29797
- "size": "20",
29798
- "width": "2"
29799
- }, null);
29800
- }
29794
+ loader: () => vue.createVNode(VProgressCircular, {
29795
+ "indeterminate": "disable-shrink",
29796
+ "size": "20",
29797
+ "width": "2"
29798
+ }, null)
29801
29799
  }) : vue.createElementVNode("div", {
29802
29800
  "class": "v-treeview-item__level"
29803
29801
  }, null)]
@@ -29805,7 +29803,7 @@
29805
29803
  } : undefined
29806
29804
  });
29807
29805
  });
29808
- return {};
29806
+ return forwardRefs({}, vListItemRef);
29809
29807
  }
29810
29808
  });
29811
29809
 
@@ -29848,6 +29846,7 @@
29848
29846
  slots
29849
29847
  } = _ref;
29850
29848
  const isLoading = vue.reactive(new Set());
29849
+ const activatorItems = vue.ref([]);
29851
29850
  const isClickOnOpen = vue.computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable));
29852
29851
  async function checkChildren(item) {
29853
29852
  try {
@@ -29862,7 +29861,7 @@
29862
29861
  }
29863
29862
  function selectItem(select, isSelected) {
29864
29863
  if (props.selectable) {
29865
- select(!isSelected);
29864
+ select(isSelected);
29866
29865
  }
29867
29866
  }
29868
29867
  return () => slots.default?.() ?? props.items?.map((item, index) => {
@@ -29890,7 +29889,8 @@
29890
29889
  "indeterminateIcon": props.indeterminateIcon,
29891
29890
  "falseIcon": props.falseIcon,
29892
29891
  "trueIcon": props.trueIcon,
29893
- "onClick": vue.withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
29892
+ "onUpdate:modelValue": v => selectItem(slotProps.select, v),
29893
+ "onClick": e => e.stopPropagation(),
29894
29894
  "onKeydown": e => {
29895
29895
  if (!['Enter', 'Space'].includes(e.key)) return;
29896
29896
  e.stopPropagation();
@@ -29937,9 +29937,11 @@
29937
29937
  ...activatorProps,
29938
29938
  value: itemProps?.value,
29939
29939
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
29940
- onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
29940
+ onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
29941
29941
  };
29942
- return vue.createVNode(VTreeviewItem, vue.mergeProps(listItemProps, {
29942
+ return vue.createVNode(VTreeviewItem, vue.mergeProps({
29943
+ "ref": el => activatorItems.value[index] = el
29944
+ }, listItemProps, {
29943
29945
  "value": props.returnObject ? item.raw : itemProps.value,
29944
29946
  "loading": loading
29945
29947
  }), slotsWithItem);
@@ -32790,7 +32792,7 @@
32790
32792
  };
32791
32793
  });
32792
32794
  }
32793
- const version$1 = "3.9.0-beta.0-dev.2025-06-20";
32795
+ const version$1 = "3.9.0-beta.0-dev.2025-06-24";
32794
32796
  createVuetify$1.version = version$1;
32795
32797
 
32796
32798
  // Vue's inject() can only be used in setup
@@ -33088,7 +33090,7 @@
33088
33090
 
33089
33091
  /* eslint-disable local-rules/sort-imports */
33090
33092
 
33091
- const version = "3.9.0-beta.0-dev.2025-06-20";
33093
+ const version = "3.9.0-beta.0-dev.2025-06-24";
33092
33094
 
33093
33095
  /* eslint-disable local-rules/sort-imports */
33094
33096