@vuetify/nightly 3.8.3-master.2025-05-05 → 3.8.4-master.2025-05-07

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 +3 -35
  2. package/dist/json/attributes.json +3324 -3324
  3. package/dist/json/importMap-labs.json +28 -28
  4. package/dist/json/importMap.json +162 -162
  5. package/dist/json/web-types.json +6199 -6199
  6. package/dist/vuetify-labs.cjs +54 -44
  7. package/dist/vuetify-labs.css +3363 -3359
  8. package/dist/vuetify-labs.d.ts +98 -98
  9. package/dist/vuetify-labs.esm.js +54 -44
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +54 -44
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +33 -11
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4003 -3999
  16. package/dist/vuetify.d.ts +127 -127
  17. package/dist/vuetify.esm.js +33 -11
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +33 -11
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +17 -14
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAutocomplete/VAutocomplete.d.ts +3 -3
  25. package/lib/components/VAutocomplete/VAutocomplete.js +5 -0
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +6 -6
  28. package/lib/components/VCombobox/VCombobox.d.ts +3 -3
  29. package/lib/components/VDataTable/VDataTable.d.ts +110 -110
  30. package/lib/components/VDataTable/VDataTableHeaders.js +1 -2
  31. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  32. package/lib/components/VDataTable/VDataTableServer.d.ts +55 -55
  33. package/lib/components/VDataTable/VDataTableVirtual.d.ts +55 -55
  34. package/lib/components/VDataTable/composables/headers.d.ts +75 -75
  35. package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
  36. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +6 -6
  37. package/lib/components/VFileInput/VFileInput.css +4 -0
  38. package/lib/components/VFileInput/VFileInput.js +21 -3
  39. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  40. package/lib/components/VFileInput/VFileInput.sass +4 -0
  41. package/lib/components/VNumberInput/VNumberInput.d.ts +3 -3
  42. package/lib/components/VOverlay/locationStrategies.js +1 -1
  43. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  44. package/lib/components/VSelect/VSelect.d.ts +3 -3
  45. package/lib/components/VTabs/VTabs.d.ts +6 -6
  46. package/lib/components/transitions/dialog-transition.js +3 -3
  47. package/lib/components/transitions/dialog-transition.js.map +1 -1
  48. package/lib/entry-bundler.d.ts +6 -6
  49. package/lib/entry-bundler.js +1 -1
  50. package/lib/framework.d.ts +57 -57
  51. package/lib/framework.js +1 -1
  52. package/lib/labs/VCalendar/VCalendar.d.ts +3 -3
  53. package/lib/labs/VCalendar/VCalendarDay.d.ts +3 -3
  54. package/lib/labs/VCalendar/VCalendarInterval.d.ts +3 -3
  55. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +3 -3
  56. package/lib/labs/VDateInput/VDateInput.d.ts +9 -9
  57. package/lib/labs/VFileUpload/VFileUpload.js +19 -31
  58. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  59. package/lib/labs/VTimePicker/VTimePickerClock.js +2 -2
  60. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  61. package/lib/util/helpers.js.map +1 -1
  62. package/package.json +6 -6
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.3-master.2025-05-05
2
+ * Vuetify v3.8.4-master.2025-05-07
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2927,10 +2927,10 @@
2927
2927
  async onLeave(el, done) {
2928
2928
  await new Promise(resolve => requestAnimationFrame(resolve));
2929
2929
  let dimensions;
2930
- if (!Array.isArray(props.target) && !props.target.offsetParent && saved.has(el)) {
2931
- dimensions = saved.get(el);
2932
- } else {
2930
+ if (!saved.has(el) || Array.isArray(props.target) || props.target.offsetParent || props.target.getClientRects().length) {
2933
2931
  dimensions = getDimensions(props.target, el);
2932
+ } else {
2933
+ dimensions = saved.get(el);
2934
2934
  }
2935
2935
  const {
2936
2936
  x,
@@ -10168,7 +10168,7 @@
10168
10168
  observe = false;
10169
10169
  requestAnimationFrame(() => observe = true);
10170
10170
  if (!data.target.value || !data.contentEl.value) return;
10171
- if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10171
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent || data.target.value.getClientRects().length) {
10172
10172
  targetBox = getTargetBox(data.target.value);
10173
10173
  } // Otherwise target element is hidden, use last known value
10174
10174
 
@@ -13506,6 +13506,11 @@
13506
13506
  menu.value = true;
13507
13507
  }
13508
13508
  });
13509
+ vue.watch(model, value => {
13510
+ if (!props.multiple && !hasSelectionSlot.value) {
13511
+ search.value = value[0]?.title ?? '';
13512
+ }
13513
+ });
13509
13514
  useRender(() => {
13510
13515
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
13511
13516
  const isDirty = model.value.length > 0;
@@ -20333,7 +20338,6 @@
20333
20338
  });
20334
20339
  };
20335
20340
  const VDataTableMobileHeaderCell = () => {
20336
- const headerProps = vue.mergeProps(props.headerProps ?? {} ?? {});
20337
20341
  const displayItems = vue.computed(() => {
20338
20342
  return columns.value.filter(column => column?.sortable && !props.disableSort);
20339
20343
  });
@@ -20346,7 +20350,7 @@
20346
20350
  "tag": "th",
20347
20351
  "class": [...headerCellClasses.value],
20348
20352
  "colspan": headers.value.length + 1
20349
- }, headerProps), {
20353
+ }, props.headerProps), {
20350
20354
  default: () => [vue.createVNode("div", {
20351
20355
  "class": "v-data-table-header__content"
20352
20356
  }, [vue.createVNode(VSelect, {
@@ -23269,6 +23273,7 @@
23269
23273
  const inputRef = vue.ref();
23270
23274
  const isActive = vue.toRef(() => isFocused.value || props.active);
23271
23275
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
23276
+ const isDragging = vue.shallowRef(false);
23272
23277
  function onFocus() {
23273
23278
  if (inputRef.value !== document.activeElement) {
23274
23279
  inputRef.value?.focus();
@@ -23295,11 +23300,26 @@
23295
23300
  }
23296
23301
  function onDragover(e) {
23297
23302
  e.preventDefault();
23303
+ e.stopImmediatePropagation();
23304
+ isDragging.value = true;
23305
+ }
23306
+ function onDragleave(e) {
23307
+ e.preventDefault();
23308
+ isDragging.value = false;
23298
23309
  }
23299
23310
  function onDrop(e) {
23300
23311
  e.preventDefault();
23301
- if (!e.dataTransfer) return;
23302
- model.value = [...(e.dataTransfer.files ?? [])];
23312
+ e.stopImmediatePropagation();
23313
+ isDragging.value = false;
23314
+ if (!e.dataTransfer?.files?.length || !inputRef.value) return;
23315
+ const dataTransfer = new DataTransfer();
23316
+ for (const file of e.dataTransfer.files) {
23317
+ dataTransfer.items.add(file);
23318
+ }
23319
+ inputRef.value.files = dataTransfer.files;
23320
+ inputRef.value.dispatchEvent(new Event('change', {
23321
+ bubbles: true
23322
+ }));
23303
23323
  }
23304
23324
  vue.watch(model, newValue => {
23305
23325
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
@@ -23321,6 +23341,7 @@
23321
23341
  "modelValue": props.multiple ? model.value : model.value[0],
23322
23342
  "class": ['v-file-input', {
23323
23343
  'v-file-input--chips': !!props.chips,
23344
+ 'v-file-input--dragging': isDragging.value,
23324
23345
  'v-file-input--hide': props.hideInput,
23325
23346
  'v-input--plain-underlined': isPlainOrUnderlined.value
23326
23347
  }, props.class],
@@ -23382,6 +23403,7 @@
23382
23403
  const target = e.target;
23383
23404
  model.value = [...(target.files ?? [])];
23384
23405
  },
23406
+ "onDragleave": onDragleave,
23385
23407
  "onFocus": onFocus,
23386
23408
  "onBlur": blur
23387
23409
  }, slotProps, inputAttrs), null), vue.createVNode("div", {
@@ -29434,43 +29456,31 @@
29434
29456
  densityClasses
29435
29457
  } = useDensity(props);
29436
29458
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
29437
- const dragOver = vue.shallowRef(false);
29459
+ const isDragging = vue.shallowRef(false);
29438
29460
  const vSheetRef = vue.ref(null);
29439
29461
  const inputRef = vue.ref(null);
29440
- vue.onMounted(() => {
29441
- vSheetRef.value?.$el.addEventListener('dragover', onDragOver);
29442
- vSheetRef.value?.$el.addEventListener('drop', onDrop);
29443
- });
29444
- vue.onUnmounted(() => {
29445
- vSheetRef.value?.$el.removeEventListener('dragover', onDragOver);
29446
- vSheetRef.value?.$el.removeEventListener('drop', onDrop);
29447
- });
29448
- function onDragOver(e) {
29462
+ function onDragover(e) {
29449
29463
  e.preventDefault();
29450
29464
  e.stopImmediatePropagation();
29451
- dragOver.value = true;
29465
+ isDragging.value = true;
29452
29466
  }
29453
- function onDragLeave(e) {
29467
+ function onDragleave(e) {
29454
29468
  e.preventDefault();
29455
- dragOver.value = false;
29469
+ isDragging.value = false;
29456
29470
  }
29457
29471
  function onDrop(e) {
29458
29472
  e.preventDefault();
29459
29473
  e.stopImmediatePropagation();
29460
- dragOver.value = false;
29461
- const files = Array.from(e.dataTransfer?.files ?? []);
29462
- if (!files.length) return;
29463
- if (!props.multiple) {
29464
- model.value = [files[0]];
29465
- return;
29466
- }
29467
- const array = model.value.slice();
29468
- for (const file of files) {
29469
- if (!array.some(f => f.name === file.name)) {
29470
- array.push(file);
29471
- }
29472
- }
29473
- model.value = array;
29474
+ isDragging.value = false;
29475
+ if (!e.dataTransfer?.files?.length || !inputRef.value) return;
29476
+ const dataTransfer = new DataTransfer();
29477
+ for (const file of e.dataTransfer.files) {
29478
+ dataTransfer.items.add(file);
29479
+ }
29480
+ inputRef.value.files = dataTransfer.files;
29481
+ inputRef.value.dispatchEvent(new Event('change', {
29482
+ bubbles: true
29483
+ }));
29474
29484
  }
29475
29485
  function onClick() {
29476
29486
  inputRef.value?.click();
@@ -29506,11 +29516,11 @@
29506
29516
  "class": ['v-file-upload', {
29507
29517
  'v-file-upload--clickable': !hasBrowse,
29508
29518
  'v-file-upload--disabled': props.disabled,
29509
- 'v-file-upload--dragging': dragOver.value
29519
+ 'v-file-upload--dragging': isDragging.value
29510
29520
  }, densityClasses.value, props.class],
29511
29521
  "style": [props.style],
29512
- "onDragleave": onDragLeave,
29513
- "onDragover": onDragOver,
29522
+ "onDragleave": onDragleave,
29523
+ "onDragover": onDragover,
29514
29524
  "onDrop": onDrop,
29515
29525
  "onClick": !hasBrowse ? onClick : undefined
29516
29526
  }, rootAttrs), {
@@ -29561,7 +29571,7 @@
29561
29571
  })]), props.subtitle && vue.createVNode("div", {
29562
29572
  "class": "v-file-upload-subtitle"
29563
29573
  }, [props.subtitle])]), vue.createVNode(VOverlay, {
29564
- "model-value": dragOver.value,
29574
+ "model-value": isDragging.value,
29565
29575
  "contained": true,
29566
29576
  "scrim": props.scrim
29567
29577
  }, null), slots.input?.({
@@ -30259,8 +30269,8 @@
30259
30269
  y
30260
30270
  } = getPosition(i);
30261
30271
  return {
30262
- left: `${50 + x * 50}%`,
30263
- top: `${50 + y * 50}%`
30272
+ left: `${Math.round(50 + x * 50)}%`,
30273
+ top: `${Math.round(50 + y * 50)}%`
30264
30274
  };
30265
30275
  }
30266
30276
  function euclidean(p0, p1) {
@@ -31664,7 +31674,7 @@
31664
31674
  };
31665
31675
  });
31666
31676
  }
31667
- const version$1 = "3.8.3-master.2025-05-05";
31677
+ const version$1 = "3.8.4-master.2025-05-07";
31668
31678
  createVuetify$1.version = version$1;
31669
31679
 
31670
31680
  // Vue's inject() can only be used in setup
@@ -31962,7 +31972,7 @@
31962
31972
 
31963
31973
  /* eslint-disable local-rules/sort-imports */
31964
31974
 
31965
- const version = "3.8.3-master.2025-05-05";
31975
+ const version = "3.8.4-master.2025-05-07";
31966
31976
 
31967
31977
  /* eslint-disable local-rules/sort-imports */
31968
31978