vuetify 3.8.10 → 3.8.12

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 (79) hide show
  1. package/dist/json/attributes.json +3366 -3366
  2. package/dist/json/importMap-labs.json +24 -24
  3. package/dist/json/importMap.json +150 -150
  4. package/dist/json/web-types.json +6157 -6157
  5. package/dist/vuetify-labs.cjs +81 -83
  6. package/dist/vuetify-labs.css +2588 -2594
  7. package/dist/vuetify-labs.d.ts +200 -200
  8. package/dist/vuetify-labs.esm.js +81 -83
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +81 -83
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.cjs +56 -59
  13. package/dist/vuetify.cjs.map +1 -1
  14. package/dist/vuetify.css +3957 -3963
  15. package/dist/vuetify.d.ts +57 -57
  16. package/dist/vuetify.esm.js +56 -59
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +56 -59
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +45 -46
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/components/VBtn/VBtn.sass +3 -1
  24. package/lib/components/VCarousel/VCarousel.css +0 -1
  25. package/lib/components/VCarousel/VCarousel.js +1 -0
  26. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  27. package/lib/components/VCarousel/VCarousel.sass +0 -1
  28. package/lib/components/VDataTable/VDataTableColumn.js +0 -1
  29. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  30. package/lib/components/VDataTable/VDataTableHeaders.js +5 -5
  31. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  32. package/lib/components/VDataTable/composables/sort.js +2 -1
  33. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  34. package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
  35. package/lib/components/VDatePicker/VDatePickerMonth.js +7 -3
  36. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  37. package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
  38. package/lib/components/VField/VField.js +2 -10
  39. package/lib/components/VField/VField.js.map +1 -1
  40. package/lib/components/VList/VList.js +1 -1
  41. package/lib/components/VList/VList.js.map +1 -1
  42. package/lib/components/VNumberInput/VNumberInput.js +4 -10
  43. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  44. package/lib/components/VNumberInput/hold.js +4 -0
  45. package/lib/components/VNumberInput/hold.js.map +1 -1
  46. package/lib/components/VOtpInput/VOtpInput.js +17 -14
  47. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  48. package/lib/components/VOverlay/locationStrategies.js +1 -1
  49. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  50. package/lib/components/VTextField/VTextField.js +1 -1
  51. package/lib/components/VTextField/VTextField.js.map +1 -1
  52. package/lib/composables/calendar.d.ts +1 -1
  53. package/lib/composables/calendar.js +8 -8
  54. package/lib/composables/calendar.js.map +1 -1
  55. package/lib/composables/date/adapters/vuetify.js +1 -1
  56. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  57. package/lib/composables/virtual.js +1 -1
  58. package/lib/composables/virtual.js.map +1 -1
  59. package/lib/entry-bundler.js +1 -1
  60. package/lib/framework.d.ts +57 -57
  61. package/lib/framework.js +1 -1
  62. package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
  63. package/lib/labs/VCalendar/VCalendar.js +9 -9
  64. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  65. package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
  66. package/lib/labs/VCalendar/VCalendarDay.js +1 -1
  67. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  68. package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
  69. package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
  70. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  71. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
  72. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
  73. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  74. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
  75. package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
  76. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  77. package/lib/labs/VIconBtn/VIconBtn.js +1 -0
  78. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  79. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.10
2
+ * Vuetify v3.8.12
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -9991,7 +9991,7 @@
9991
9991
  function transformItem$2(props, item) {
9992
9992
  const type = getPropertyFromItem(item, props.itemType, 'item');
9993
9993
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9994
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9994
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9995
9995
  const children = getPropertyFromItem(item, props.itemChildren);
9996
9996
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9997
9997
  const _props = {
@@ -10470,7 +10470,7 @@
10470
10470
  });
10471
10471
  if (flipped.isFull) {
10472
10472
  const values = flipped.values();
10473
- if (deepEqual(values.at(-1), values.at(-3))) {
10473
+ if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {
10474
10474
  // Flipping is causing a container resize loop
10475
10475
  return;
10476
10476
  }
@@ -12236,11 +12236,7 @@
12236
12236
  default: slots.loader
12237
12237
  }), hasPrepend && vue.createElementVNode("div", {
12238
12238
  "key": "prepend",
12239
- "class": "v-field__prepend-inner",
12240
- "onMousedown": e => {
12241
- e.preventDefault();
12242
- e.stopPropagation();
12243
- }
12239
+ "class": "v-field__prepend-inner"
12244
12240
  }, [props.prependInnerIcon && vue.createVNode(InputIcon, {
12245
12241
  "key": "prepend-icon",
12246
12242
  "name": "prependInner",
@@ -12309,11 +12305,7 @@
12309
12305
  })]), [[vue.vShow, props.dirty]])]
12310
12306
  }), hasAppend && vue.createElementVNode("div", {
12311
12307
  "key": "append",
12312
- "class": "v-field__append-inner",
12313
- "onMousedown": e => {
12314
- e.preventDefault();
12315
- e.stopPropagation();
12316
- }
12308
+ "class": "v-field__append-inner"
12317
12309
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
12318
12310
  "key": "append-icon",
12319
12311
  "name": "appendInner",
@@ -12424,7 +12416,7 @@
12424
12416
  if (!isFocused.value) focus();
12425
12417
  vue.nextTick(() => {
12426
12418
  if (inputRef.value !== document.activeElement) {
12427
- inputRef.value?.focus();
12419
+ vue.nextTick(() => inputRef.value?.focus());
12428
12420
  }
12429
12421
  });
12430
12422
  }
@@ -12758,7 +12750,7 @@
12758
12750
  raf = requestAnimationFrame(_calculateVisibleItems);
12759
12751
  }
12760
12752
  function _calculateVisibleItems() {
12761
- if (!containerRef.value || !viewportHeight.value) return;
12753
+ if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;
12762
12754
  const scrollTop = lastScrollTop - markerOffset;
12763
12755
  const direction = Math.sign(scrollVelocity);
12764
12756
  const startPx = Math.max(0, scrollTop - BUFFER_PX);
@@ -15507,6 +15499,7 @@
15507
15499
  }) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
15508
15500
  })]
15509
15501
  })]), props.progress && vue.createVNode(VProgressLinear, {
15502
+ "absolute": true,
15510
15503
  "class": "v-carousel__progress",
15511
15504
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15512
15505
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -17589,7 +17582,7 @@
17589
17582
  case 'fullDate':
17590
17583
  options = {
17591
17584
  year: 'numeric',
17592
- month: 'long',
17585
+ month: 'short',
17593
17586
  day: 'numeric'
17594
17587
  };
17595
17588
  break;
@@ -19577,7 +19570,8 @@
19577
19570
 
19578
19571
  // Dates should be compared numerically
19579
19572
  if (sortA instanceof Date && sortB instanceof Date) {
19580
- return sortA.getTime() - sortB.getTime();
19573
+ sortA = sortA.getTime();
19574
+ sortB = sortB.getTime();
19581
19575
  }
19582
19576
  [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
19583
19577
  if (sortA !== sortB) {
@@ -20301,7 +20295,6 @@
20301
20295
  } = _ref;
20302
20296
  const Tag = props.tag ?? 'td';
20303
20297
  return vue.createVNode(Tag, {
20304
- "tabindex": "0",
20305
20298
  "class": vue.normalizeClass(['v-data-table__td', {
20306
20299
  'v-data-table-column--fixed': props.fixed,
20307
20300
  'v-data-table-column--last-fixed': props.lastFixed,
@@ -20702,14 +20695,14 @@
20702
20695
  },
20703
20696
  "colspan": column.colspan,
20704
20697
  "rowspan": column.rowspan,
20705
- "onClick": column.sortable ? () => toggleSort(column) : undefined,
20706
20698
  "fixed": column.fixed,
20707
20699
  "nowrap": column.nowrap,
20708
20700
  "lastFixed": column.lastFixed,
20709
- "noPadding": noPadding
20710
- }, headerProps, {
20711
- "onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
20712
- }), {
20701
+ "noPadding": noPadding,
20702
+ "tabindex": column.sortable ? 0 : undefined,
20703
+ "onClick": column.sortable ? () => toggleSort(column) : undefined,
20704
+ "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
20705
+ }, headerProps), {
20713
20706
  default: () => {
20714
20707
  const columnSlotName = `header.${column.key}`;
20715
20708
  const columnSlotProps = {
@@ -22385,10 +22378,9 @@
22385
22378
  const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));
22386
22379
  return adapter.setMonth(date, value);
22387
22380
  }, v => adapter.getMonth(v));
22388
- const weekDays = vue.computed(() => {
22381
+ const weekdayLabels = vue.computed(() => {
22389
22382
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22390
- // Always generate all days, regardless of props.weekdays
22391
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22383
+ return adapter.getWeekdays(props.firstDayOfWeek).filter((_, i) => props.weekdays.includes((i + firstDayOfWeek) % 7));
22392
22384
  });
22393
22385
  const weeksInMonth = vue.computed(() => {
22394
22386
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22412,13 +22404,14 @@
22412
22404
  });
22413
22405
  function genDays(days, today) {
22414
22406
  return days.filter(date => {
22415
- return weekDays.value.includes(adapter.toJsDate(date).getDay());
22407
+ return props.weekdays.includes(adapter.toJsDate(date).getDay());
22416
22408
  }).map((date, index) => {
22417
22409
  const isoDate = adapter.toISO(date);
22418
22410
  const isAdjacent = !adapter.isSameMonth(date, month.value);
22419
22411
  const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
22420
22412
  const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));
22421
22413
  const isSame = adapter.isSameDay(date, month.value);
22414
+ const weekdaysCount = props.weekdays.length;
22422
22415
  return {
22423
22416
  date,
22424
22417
  formatted: adapter.format(date, 'keyboardDate'),
@@ -22430,8 +22423,8 @@
22430
22423
  isSelected: model.value.some(value => adapter.isSameDay(date, value)),
22431
22424
  isStart,
22432
22425
  isToday: adapter.isSameDay(date, today),
22433
- isWeekEnd: index % 7 === 6,
22434
- isWeekStart: index % 7 === 0,
22426
+ isWeekEnd: index % weekdaysCount === weekdaysCount - 1,
22427
+ isWeekStart: index % weekdaysCount === 0,
22435
22428
  isoDate,
22436
22429
  localized: adapter.format(date, 'dayOfMonth'),
22437
22430
  month: adapter.getMonth(date),
@@ -22469,7 +22462,7 @@
22469
22462
  if (typeof props.allowedDates === 'function') {
22470
22463
  return !props.allowedDates(date);
22471
22464
  }
22472
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22465
+ return false;
22473
22466
  }
22474
22467
  return {
22475
22468
  displayValue,
@@ -22478,7 +22471,7 @@
22478
22471
  genDays,
22479
22472
  model,
22480
22473
  weeksInMonth,
22481
- weekDays,
22474
+ weekdayLabels,
22482
22475
  weekNumbers
22483
22476
  };
22484
22477
  }
@@ -22517,7 +22510,8 @@
22517
22510
  const {
22518
22511
  daysInMonth,
22519
22512
  model,
22520
- weekNumbers
22513
+ weekNumbers,
22514
+ weekdayLabels
22521
22515
  } = useCalendar(props);
22522
22516
  const adapter = useDate();
22523
22517
  const rangeStart = vue.shallowRef();
@@ -22589,7 +22583,10 @@
22589
22583
  }
22590
22584
  }
22591
22585
  useRender(() => vue.createElementVNode("div", {
22592
- "class": "v-date-picker-month"
22586
+ "class": "v-date-picker-month",
22587
+ "style": {
22588
+ '--v-date-picker-days-in-week': props.weekdays.length
22589
+ }
22593
22590
  }, [props.showWeek && vue.createElementVNode("div", {
22594
22591
  "key": "weeks",
22595
22592
  "class": "v-date-picker-month__weeks"
@@ -22605,7 +22602,7 @@
22605
22602
  "ref": daysRef,
22606
22603
  "key": daysInMonth.value[0].date?.toString(),
22607
22604
  "class": "v-date-picker-month__days"
22608
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
22605
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
22609
22606
  "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22610
22607
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22611
22608
  const slotProps = {
@@ -25207,6 +25204,8 @@
25207
25204
  function holdStart(value) {
25208
25205
  holdStop();
25209
25206
  tick(value);
25207
+ window.addEventListener('pointerup', holdStop);
25208
+ document.addEventListener('blur', holdStop);
25210
25209
  timeout = window.setTimeout(() => {
25211
25210
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
25212
25211
  }, HOLD_DELAY);
@@ -25214,6 +25213,8 @@
25214
25213
  function holdStop() {
25215
25214
  window.clearTimeout(timeout);
25216
25215
  window.clearInterval(interval);
25216
+ window.removeEventListener('pointerup', holdStop);
25217
+ document.removeEventListener('blur', holdStop);
25217
25218
  }
25218
25219
  function tick(value) {
25219
25220
  toggleUpDown(value === 'up');
@@ -25325,7 +25326,7 @@
25325
25326
  onClick: onControlClick,
25326
25327
  onPointerup: onControlMouseup,
25327
25328
  onPointerdown: onUpControlMousedown,
25328
- onPointercancel: onControlPointerCancel
25329
+ onPointercancel: onControlMouseup
25329
25330
  }
25330
25331
  };
25331
25332
  const decrementSlotProps = {
@@ -25333,7 +25334,7 @@
25333
25334
  onClick: onControlClick,
25334
25335
  onPointerup: onControlMouseup,
25335
25336
  onPointerdown: onDownControlMousedown,
25336
- onPointercancel: onControlPointerCancel
25337
+ onPointercancel: onControlMouseup
25337
25338
  }
25338
25339
  };
25339
25340
  vue.watch(() => props.precision, () => formatInputValue());
@@ -25413,7 +25414,6 @@
25413
25414
  const el = e.currentTarget;
25414
25415
  el?.releasePointerCapture(e.pointerId);
25415
25416
  e.preventDefault();
25416
- e.stopPropagation();
25417
25417
  holdStop();
25418
25418
  }
25419
25419
  function onUpControlMousedown(e) {
@@ -25430,11 +25430,6 @@
25430
25430
  e.stopPropagation();
25431
25431
  holdStart('down');
25432
25432
  }
25433
- function onControlPointerCancel(e) {
25434
- const el = e.currentTarget;
25435
- el?.releasePointerCapture(e.pointerId);
25436
- holdStop();
25437
- }
25438
25433
  function clampModel() {
25439
25434
  if (controlsDisabled.value) return;
25440
25435
  if (!vTextFieldRef.value) return;
@@ -25484,7 +25479,7 @@
25484
25479
  "onClick": onControlClick,
25485
25480
  "onPointerdown": onUpControlMousedown,
25486
25481
  "onPointerup": onControlMouseup,
25487
- "onPointercancel": onControlPointerCancel,
25482
+ "onPointercancel": onControlMouseup,
25488
25483
  "size": controlNodeSize.value,
25489
25484
  "tabindex": "-1"
25490
25485
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25514,7 +25509,7 @@
25514
25509
  "onClick": onControlClick,
25515
25510
  "onPointerdown": onDownControlMousedown,
25516
25511
  "onPointerup": onControlMouseup,
25517
- "onPointercancel": onControlPointerCancel,
25512
+ "onPointercancel": onControlMouseup,
25518
25513
  "size": controlNodeSize.value,
25519
25514
  "tabindex": "-1"
25520
25515
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25661,19 +25656,21 @@
25661
25656
  const contentRef = vue.ref();
25662
25657
  const inputRef = vue.ref([]);
25663
25658
  const current = vue.computed(() => inputRef.value[focusIndex.value]);
25664
- const intersectScope = vue.effectScope();
25665
- intersectScope.run(() => {
25666
- const {
25667
- intersectionRef,
25668
- isIntersecting
25669
- } = useIntersectionObserver();
25670
- vue.watch(isIntersecting, v => {
25671
- if (!v) return;
25672
- intersectionRef.value?.focus();
25673
- intersectScope.stop();
25674
- });
25675
- vue.watchEffect(() => {
25676
- intersectionRef.value = inputRef.value[0];
25659
+ useToggleScope(() => props.autofocus, () => {
25660
+ const intersectScope = vue.effectScope();
25661
+ intersectScope.run(() => {
25662
+ const {
25663
+ intersectionRef,
25664
+ isIntersecting
25665
+ } = useIntersectionObserver();
25666
+ vue.watchEffect(() => {
25667
+ intersectionRef.value = inputRef.value[0];
25668
+ });
25669
+ vue.watch(isIntersecting, v => {
25670
+ if (!v) return;
25671
+ intersectionRef.value?.focus();
25672
+ intersectScope.stop();
25673
+ });
25677
25674
  });
25678
25675
  });
25679
25676
  function onInput() {
@@ -29512,7 +29509,7 @@
29512
29509
  };
29513
29510
  });
29514
29511
  }
29515
- const version$1 = "3.8.10";
29512
+ const version$1 = "3.8.12";
29516
29513
  createVuetify$1.version = version$1;
29517
29514
 
29518
29515
  // Vue's inject() can only be used in setup
@@ -29537,7 +29534,7 @@
29537
29534
  ...options
29538
29535
  });
29539
29536
  };
29540
- const version = "3.8.10";
29537
+ const version = "3.8.12";
29541
29538
  createVuetify.version = version;
29542
29539
 
29543
29540
  exports.blueprints = index;