@vuetify/nightly 3.8.8-master.2025-06-07 → 3.8.8-master.2025-06-10

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 (58) hide show
  1. package/CHANGELOG.md +11 -3
  2. package/dist/json/attributes.json +2832 -2832
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +162 -162
  5. package/dist/json/web-types.json +5438 -5438
  6. package/dist/vuetify-labs.cjs +98 -34
  7. package/dist/vuetify-labs.css +4072 -4072
  8. package/dist/vuetify-labs.d.ts +58 -62
  9. package/dist/vuetify-labs.esm.js +99 -35
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +98 -34
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +91 -30
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4746 -4746
  16. package/dist/vuetify.d.ts +58 -62
  17. package/dist/vuetify.esm.js +92 -31
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +91 -30
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +964 -958
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VDataTable/VDataTableColumn.js +1 -0
  25. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  26. package/lib/components/VDataTable/VDataTableHeaders.js +8 -1
  27. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  28. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  29. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  30. package/lib/components/VFileInput/VFileInput.js +8 -3
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VSelect/VSelect.js +6 -5
  33. package/lib/components/VSelect/VSelect.js.map +1 -1
  34. package/lib/components/VSlider/VSliderThumb.js +1 -1
  35. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  36. package/lib/composables/date/adapters/vuetify.js +1 -1
  37. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  38. package/lib/composables/date/date.d.ts +1 -4
  39. package/lib/composables/date/date.js +13 -14
  40. package/lib/composables/date/date.js.map +1 -1
  41. package/lib/composables/fileDrop.d.ts +4 -0
  42. package/lib/composables/fileDrop.js +50 -0
  43. package/lib/composables/fileDrop.js.map +1 -0
  44. package/lib/composables/list-items.js +2 -2
  45. package/lib/composables/list-items.js.map +1 -1
  46. package/lib/entry-bundler.d.ts +0 -3
  47. package/lib/entry-bundler.js +1 -1
  48. package/lib/framework.d.ts +58 -62
  49. package/lib/framework.js +1 -1
  50. package/lib/labs/VDateInput/VDateInput.js +2 -1
  51. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  52. package/lib/labs/VFileUpload/VFileUpload.js +7 -3
  53. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  54. package/lib/labs/entry-bundler.d.ts +0 -3
  55. package/lib/util/helpers.d.ts +1 -1
  56. package/lib/util/helpers.js +0 -1
  57. package/lib/util/helpers.js.map +1 -1
  58. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.8-master.2025-06-07
2
+ * Vuetify v3.8.8-master.2025-06-10
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -607,7 +607,6 @@
607
607
  return cleanText;
608
608
  }
609
609
  function camelizeProps(props) {
610
- if (!props) return;
611
610
  const out = {};
612
611
  for (const prop in props) {
613
612
  out[vue.camelize(prop)] = props[prop];
@@ -9590,7 +9589,7 @@
9590
9589
  const _props = {
9591
9590
  title,
9592
9591
  value,
9593
- ...camelizeProps(itemProps)
9592
+ ...itemProps
9594
9593
  };
9595
9594
  return {
9596
9595
  title: String(_props.title ?? ''),
@@ -13057,6 +13056,7 @@
13057
13056
  index,
13058
13057
  itemRef
13059
13058
  } = _ref2;
13059
+ const camelizedProps = camelizeProps(item.props);
13060
13060
  const itemProps = vue.mergeProps(item.props, {
13061
13061
  ref: itemRef,
13062
13062
  key: item.value,
@@ -13078,10 +13078,10 @@
13078
13078
  "modelValue": isSelected,
13079
13079
  "ripple": false,
13080
13080
  "tabindex": "-1"
13081
- }, null) : undefined, item.props.prependAvatar && vue.createVNode(VAvatar, {
13082
- "image": item.props.prependAvatar
13083
- }, null), item.props.prependIcon && vue.createVNode(VIcon, {
13084
- "icon": item.props.prependIcon
13081
+ }, null) : undefined, camelizedProps.prependAvatar && vue.createVNode(VAvatar, {
13082
+ "image": camelizedProps.prependAvatar
13083
+ }, null), camelizedProps.prependIcon && vue.createVNode(VIcon, {
13084
+ "icon": camelizedProps.prependIcon
13085
13085
  }, null)]);
13086
13086
  }
13087
13087
  });
@@ -16260,7 +16260,7 @@
16260
16260
  default: () => [vue.withDirectives(vue.createElementVNode("div", {
16261
16261
  "class": "v-slider-thumb__label-container"
16262
16262
  }, [vue.createElementVNode("div", {
16263
- "class": vue.normalizeClass(['v-slider-thumb__label'])
16263
+ "class": vue.normalizeClass(['v-slider-thumb__label', textColorClasses.value])
16264
16264
  }, [vue.createElementVNode("div", null, [slots['thumb-label']?.({
16265
16265
  modelValue: props.modelValue
16266
16266
  }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
@@ -17529,7 +17529,7 @@
17529
17529
  const yearStart = new Date(year, 0, 1);
17530
17530
  const size = firstWeekSize(year);
17531
17531
  const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17532
- return 1 + getDiff(date, d1w1, 'weeks');
17532
+ return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
17533
17533
  }
17534
17534
  function getDate(date) {
17535
17535
  return date.getDate();
@@ -17832,6 +17832,18 @@
17832
17832
  instance: createInstance(_options, locale)
17833
17833
  };
17834
17834
  }
17835
+ function createDateRange(adapter, start, stop) {
17836
+ const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
17837
+ const datesInRange = [start];
17838
+ for (let i = 1; i < diff; i++) {
17839
+ const nextDate = adapter.addDays(start, i);
17840
+ datesInRange.push(nextDate);
17841
+ }
17842
+ if (stop) {
17843
+ datesInRange.push(adapter.endOfDay(stop));
17844
+ }
17845
+ return datesInRange;
17846
+ }
17835
17847
  function createInstance(options, locale) {
17836
17848
  const instance = vue.reactive(typeof options.adapter === 'function'
17837
17849
  // eslint-disable-next-line new-cap
@@ -17842,20 +17854,7 @@
17842
17854
  vue.watch(locale.current, value => {
17843
17855
  instance.locale = options.locale[value] ?? value ?? instance.locale;
17844
17856
  });
17845
- return Object.assign(instance, {
17846
- createDateRange(start, stop) {
17847
- const diff = instance.getDiff(stop ?? start, start, 'days');
17848
- const datesInRange = [start];
17849
- for (let i = 1; i < diff; i++) {
17850
- const nextDate = instance.addDays(start, i);
17851
- datesInRange.push(nextDate);
17852
- }
17853
- if (stop) {
17854
- datesInRange.push(instance.endOfDay(stop));
17855
- }
17856
- return datesInRange;
17857
- }
17858
- });
17857
+ return instance;
17859
17858
  }
17860
17859
  function useDate() {
17861
17860
  const options = vue.inject(DateOptionsSymbol);
@@ -19998,6 +19997,7 @@
19998
19997
  } = _ref;
19999
19998
  const Tag = props.tag ?? 'td';
20000
19999
  return vue.createVNode(Tag, {
20000
+ "tabindex": "0",
20001
20001
  "class": vue.normalizeClass(['v-data-table__td', {
20002
20002
  'v-data-table-column--fixed': props.fixed,
20003
20003
  'v-data-table-column--last-fixed': props.lastFixed,
@@ -20342,6 +20342,11 @@
20342
20342
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20343
20343
  };
20344
20344
  }
20345
+ function handleEnterKeyPress(event, column) {
20346
+ if (event.key === 'Enter' && !props.disableSort) {
20347
+ toggleSort(column);
20348
+ }
20349
+ }
20345
20350
  function getSortIcon(column) {
20346
20351
  const item = sortBy.value.find(item => item.key === column.key);
20347
20352
  if (!item) return props.sortAscIcon;
@@ -20398,7 +20403,9 @@
20398
20403
  "nowrap": column.nowrap,
20399
20404
  "lastFixed": column.lastFixed,
20400
20405
  "noPadding": noPadding
20401
- }, headerProps), {
20406
+ }, headerProps, {
20407
+ "onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
20408
+ }), {
20402
20409
  default: () => {
20403
20410
  const columnSlotName = `header.${column.key}`;
20404
20411
  const columnSlotProps = {
@@ -22251,7 +22258,7 @@
22251
22258
  } else {
22252
22259
  rangeStop.value = adapter.endOfDay(_value);
22253
22260
  }
22254
- model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22261
+ model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
22255
22262
  } else {
22256
22263
  rangeStart.value = value;
22257
22264
  rangeStop.value = undefined;
@@ -23338,6 +23345,56 @@
23338
23345
 
23339
23346
  // Types
23340
23347
 
23348
+ function useFileDrop() {
23349
+ function hasFilesOrFolders(e) {
23350
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
23351
+ return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
23352
+ }
23353
+ async function handleDrop(e) {
23354
+ const result = [];
23355
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
23356
+ if (entries.length) {
23357
+ for (const entry of entries) {
23358
+ const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
23359
+ result.push(...files.map(x => x.file));
23360
+ }
23361
+ } else {
23362
+ result.push(...[...(e.dataTransfer?.files ?? [])]);
23363
+ }
23364
+ return result;
23365
+ }
23366
+ return {
23367
+ handleDrop,
23368
+ hasFilesOrFolders
23369
+ };
23370
+ }
23371
+ function traverseFileTree(item) {
23372
+ let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
23373
+ return new Promise((resolve, reject) => {
23374
+ if (item.isFile) {
23375
+ const fileEntry = item;
23376
+ fileEntry.file(file => resolve([{
23377
+ file,
23378
+ path
23379
+ }]), reject);
23380
+ } else if (item.isDirectory) {
23381
+ const directoryReader = item.createReader();
23382
+ directoryReader.readEntries(async entries => {
23383
+ const files = [];
23384
+ for (const entry of entries) {
23385
+ files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
23386
+ }
23387
+ resolve(files);
23388
+ });
23389
+ }
23390
+ });
23391
+ }
23392
+ function appendIfDirectory(path, item) {
23393
+ return item.isDirectory ? `${path}/${item.name}` : path;
23394
+ }
23395
+
23396
+ // Types
23397
+
23341
23398
  const makeVFileInputProps = propsFactory({
23342
23399
  chips: Boolean,
23343
23400
  counter: Boolean,
@@ -23422,6 +23479,10 @@
23422
23479
  const isActive = vue.toRef(() => isFocused.value || props.active);
23423
23480
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
23424
23481
  const isDragging = vue.shallowRef(false);
23482
+ const {
23483
+ handleDrop,
23484
+ hasFilesOrFolders
23485
+ } = useFileDrop();
23425
23486
  function onFocus() {
23426
23487
  if (inputRef.value !== document.activeElement) {
23427
23488
  inputRef.value?.focus();
@@ -23455,13 +23516,13 @@
23455
23516
  e.preventDefault();
23456
23517
  isDragging.value = false;
23457
23518
  }
23458
- function onDrop(e) {
23519
+ async function onDrop(e) {
23459
23520
  e.preventDefault();
23460
23521
  e.stopImmediatePropagation();
23461
23522
  isDragging.value = false;
23462
- if (!e.dataTransfer?.files?.length || !inputRef.value) return;
23523
+ if (!inputRef.value || !hasFilesOrFolders(e)) return;
23463
23524
  const dataTransfer = new DataTransfer();
23464
- for (const file of e.dataTransfer.files) {
23525
+ for (const file of await handleDrop(e)) {
23465
23526
  dataTransfer.items.add(file);
23466
23527
  }
23467
23528
  inputRef.value.files = dataTransfer.files;
@@ -29631,7 +29692,7 @@
29631
29692
  if (parts.every(isValid)) {
29632
29693
  if (props.multiple === 'range') {
29633
29694
  const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
29634
- model.value = adapter.createDateRange(start, stop);
29695
+ model.value = createDateRange(adapter, start, stop);
29635
29696
  } else {
29636
29697
  model.value = parts.map(parseDate);
29637
29698
  }
@@ -29873,6 +29934,9 @@
29873
29934
  const isDragging = vue.shallowRef(false);
29874
29935
  const vSheetRef = vue.ref(null);
29875
29936
  const inputRef = vue.ref(null);
29937
+ const {
29938
+ handleDrop
29939
+ } = useFileDrop();
29876
29940
  function onDragover(e) {
29877
29941
  e.preventDefault();
29878
29942
  e.stopImmediatePropagation();
@@ -29882,13 +29946,13 @@
29882
29946
  e.preventDefault();
29883
29947
  isDragging.value = false;
29884
29948
  }
29885
- function onDrop(e) {
29949
+ async function onDrop(e) {
29886
29950
  e.preventDefault();
29887
29951
  e.stopImmediatePropagation();
29888
29952
  isDragging.value = false;
29889
- if (!e.dataTransfer?.files?.length || !inputRef.value) return;
29953
+ if (!inputRef.value) return;
29890
29954
  const dataTransfer = new DataTransfer();
29891
- for (const file of e.dataTransfer.files) {
29955
+ for (const file of await handleDrop(e)) {
29892
29956
  dataTransfer.items.add(file);
29893
29957
  }
29894
29958
  inputRef.value.files = dataTransfer.files;
@@ -32089,7 +32153,7 @@
32089
32153
  };
32090
32154
  });
32091
32155
  }
32092
- const version$1 = "3.8.8-master.2025-06-07";
32156
+ const version$1 = "3.8.8-master.2025-06-10";
32093
32157
  createVuetify$1.version = version$1;
32094
32158
 
32095
32159
  // Vue's inject() can only be used in setup
@@ -32387,7 +32451,7 @@
32387
32451
 
32388
32452
  /* eslint-disable local-rules/sort-imports */
32389
32453
 
32390
- const version = "3.8.8-master.2025-06-07";
32454
+ const version = "3.8.8-master.2025-06-10";
32391
32455
 
32392
32456
  /* eslint-disable local-rules/sort-imports */
32393
32457