@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
package/dist/vuetify.js CHANGED
@@ -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
  */
@@ -530,7 +530,6 @@
530
530
  return cleanText;
531
531
  }
532
532
  function camelizeProps(props) {
533
- if (!props) return;
534
533
  const out = {};
535
534
  for (const prop in props) {
536
535
  out[vue.camelize(prop)] = props[prop];
@@ -9868,7 +9867,7 @@
9868
9867
  const _props = {
9869
9868
  title,
9870
9869
  value,
9871
- ...camelizeProps(itemProps)
9870
+ ...itemProps
9872
9871
  };
9873
9872
  return {
9874
9873
  title: String(_props.title ?? ''),
@@ -13335,6 +13334,7 @@
13335
13334
  index,
13336
13335
  itemRef
13337
13336
  } = _ref2;
13337
+ const camelizedProps = camelizeProps(item.props);
13338
13338
  const itemProps = vue.mergeProps(item.props, {
13339
13339
  ref: itemRef,
13340
13340
  key: item.value,
@@ -13356,10 +13356,10 @@
13356
13356
  "modelValue": isSelected,
13357
13357
  "ripple": false,
13358
13358
  "tabindex": "-1"
13359
- }, null) : undefined, item.props.prependAvatar && vue.createVNode(VAvatar, {
13360
- "image": item.props.prependAvatar
13361
- }, null), item.props.prependIcon && vue.createVNode(VIcon, {
13362
- "icon": item.props.prependIcon
13359
+ }, null) : undefined, camelizedProps.prependAvatar && vue.createVNode(VAvatar, {
13360
+ "image": camelizedProps.prependAvatar
13361
+ }, null), camelizedProps.prependIcon && vue.createVNode(VIcon, {
13362
+ "icon": camelizedProps.prependIcon
13363
13363
  }, null)]);
13364
13364
  }
13365
13365
  });
@@ -16538,7 +16538,7 @@
16538
16538
  default: () => [vue.withDirectives(vue.createElementVNode("div", {
16539
16539
  "class": "v-slider-thumb__label-container"
16540
16540
  }, [vue.createElementVNode("div", {
16541
- "class": vue.normalizeClass(['v-slider-thumb__label'])
16541
+ "class": vue.normalizeClass(['v-slider-thumb__label', textColorClasses.value])
16542
16542
  }, [vue.createElementVNode("div", null, [slots['thumb-label']?.({
16543
16543
  modelValue: props.modelValue
16544
16544
  }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
@@ -17807,7 +17807,7 @@
17807
17807
  const yearStart = new Date(year, 0, 1);
17808
17808
  const size = firstWeekSize(year);
17809
17809
  const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17810
- return 1 + getDiff(date, d1w1, 'weeks');
17810
+ return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
17811
17811
  }
17812
17812
  function getDate(date) {
17813
17813
  return date.getDate();
@@ -18110,6 +18110,18 @@
18110
18110
  instance: createInstance(_options, locale)
18111
18111
  };
18112
18112
  }
18113
+ function createDateRange(adapter, start, stop) {
18114
+ const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
18115
+ const datesInRange = [start];
18116
+ for (let i = 1; i < diff; i++) {
18117
+ const nextDate = adapter.addDays(start, i);
18118
+ datesInRange.push(nextDate);
18119
+ }
18120
+ if (stop) {
18121
+ datesInRange.push(adapter.endOfDay(stop));
18122
+ }
18123
+ return datesInRange;
18124
+ }
18113
18125
  function createInstance(options, locale) {
18114
18126
  const instance = vue.reactive(typeof options.adapter === 'function'
18115
18127
  // eslint-disable-next-line new-cap
@@ -18120,20 +18132,7 @@
18120
18132
  vue.watch(locale.current, value => {
18121
18133
  instance.locale = options.locale[value] ?? value ?? instance.locale;
18122
18134
  });
18123
- return Object.assign(instance, {
18124
- createDateRange(start, stop) {
18125
- const diff = instance.getDiff(stop ?? start, start, 'days');
18126
- const datesInRange = [start];
18127
- for (let i = 1; i < diff; i++) {
18128
- const nextDate = instance.addDays(start, i);
18129
- datesInRange.push(nextDate);
18130
- }
18131
- if (stop) {
18132
- datesInRange.push(instance.endOfDay(stop));
18133
- }
18134
- return datesInRange;
18135
- }
18136
- });
18135
+ return instance;
18137
18136
  }
18138
18137
  function useDate() {
18139
18138
  const options = vue.inject(DateOptionsSymbol);
@@ -20276,6 +20275,7 @@
20276
20275
  } = _ref;
20277
20276
  const Tag = props.tag ?? 'td';
20278
20277
  return vue.createVNode(Tag, {
20278
+ "tabindex": "0",
20279
20279
  "class": vue.normalizeClass(['v-data-table__td', {
20280
20280
  'v-data-table-column--fixed': props.fixed,
20281
20281
  'v-data-table-column--last-fixed': props.lastFixed,
@@ -20620,6 +20620,11 @@
20620
20620
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20621
20621
  };
20622
20622
  }
20623
+ function handleEnterKeyPress(event, column) {
20624
+ if (event.key === 'Enter' && !props.disableSort) {
20625
+ toggleSort(column);
20626
+ }
20627
+ }
20623
20628
  function getSortIcon(column) {
20624
20629
  const item = sortBy.value.find(item => item.key === column.key);
20625
20630
  if (!item) return props.sortAscIcon;
@@ -20676,7 +20681,9 @@
20676
20681
  "nowrap": column.nowrap,
20677
20682
  "lastFixed": column.lastFixed,
20678
20683
  "noPadding": noPadding
20679
- }, headerProps), {
20684
+ }, headerProps, {
20685
+ "onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
20686
+ }), {
20680
20687
  default: () => {
20681
20688
  const columnSlotName = `header.${column.key}`;
20682
20689
  const columnSlotProps = {
@@ -22529,7 +22536,7 @@
22529
22536
  } else {
22530
22537
  rangeStop.value = adapter.endOfDay(_value);
22531
22538
  }
22532
- model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22539
+ model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
22533
22540
  } else {
22534
22541
  rangeStart.value = value;
22535
22542
  rangeStop.value = undefined;
@@ -23616,6 +23623,56 @@
23616
23623
 
23617
23624
  // Types
23618
23625
 
23626
+ function useFileDrop() {
23627
+ function hasFilesOrFolders(e) {
23628
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
23629
+ return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
23630
+ }
23631
+ async function handleDrop(e) {
23632
+ const result = [];
23633
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
23634
+ if (entries.length) {
23635
+ for (const entry of entries) {
23636
+ const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
23637
+ result.push(...files.map(x => x.file));
23638
+ }
23639
+ } else {
23640
+ result.push(...[...(e.dataTransfer?.files ?? [])]);
23641
+ }
23642
+ return result;
23643
+ }
23644
+ return {
23645
+ handleDrop,
23646
+ hasFilesOrFolders
23647
+ };
23648
+ }
23649
+ function traverseFileTree(item) {
23650
+ let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
23651
+ return new Promise((resolve, reject) => {
23652
+ if (item.isFile) {
23653
+ const fileEntry = item;
23654
+ fileEntry.file(file => resolve([{
23655
+ file,
23656
+ path
23657
+ }]), reject);
23658
+ } else if (item.isDirectory) {
23659
+ const directoryReader = item.createReader();
23660
+ directoryReader.readEntries(async entries => {
23661
+ const files = [];
23662
+ for (const entry of entries) {
23663
+ files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
23664
+ }
23665
+ resolve(files);
23666
+ });
23667
+ }
23668
+ });
23669
+ }
23670
+ function appendIfDirectory(path, item) {
23671
+ return item.isDirectory ? `${path}/${item.name}` : path;
23672
+ }
23673
+
23674
+ // Types
23675
+
23619
23676
  const makeVFileInputProps = propsFactory({
23620
23677
  chips: Boolean,
23621
23678
  counter: Boolean,
@@ -23700,6 +23757,10 @@
23700
23757
  const isActive = vue.toRef(() => isFocused.value || props.active);
23701
23758
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
23702
23759
  const isDragging = vue.shallowRef(false);
23760
+ const {
23761
+ handleDrop,
23762
+ hasFilesOrFolders
23763
+ } = useFileDrop();
23703
23764
  function onFocus() {
23704
23765
  if (inputRef.value !== document.activeElement) {
23705
23766
  inputRef.value?.focus();
@@ -23733,13 +23794,13 @@
23733
23794
  e.preventDefault();
23734
23795
  isDragging.value = false;
23735
23796
  }
23736
- function onDrop(e) {
23797
+ async function onDrop(e) {
23737
23798
  e.preventDefault();
23738
23799
  e.stopImmediatePropagation();
23739
23800
  isDragging.value = false;
23740
- if (!e.dataTransfer?.files?.length || !inputRef.value) return;
23801
+ if (!inputRef.value || !hasFilesOrFolders(e)) return;
23741
23802
  const dataTransfer = new DataTransfer();
23742
- for (const file of e.dataTransfer.files) {
23803
+ for (const file of await handleDrop(e)) {
23743
23804
  dataTransfer.items.add(file);
23744
23805
  }
23745
23806
  inputRef.value.files = dataTransfer.files;
@@ -29407,7 +29468,7 @@
29407
29468
  };
29408
29469
  });
29409
29470
  }
29410
- const version$1 = "3.8.8-master.2025-06-07";
29471
+ const version$1 = "3.8.8-master.2025-06-10";
29411
29472
  createVuetify$1.version = version$1;
29412
29473
 
29413
29474
  // Vue's inject() can only be used in setup
@@ -29432,7 +29493,7 @@
29432
29493
  ...options
29433
29494
  });
29434
29495
  };
29435
- const version = "3.8.8-master.2025-06-07";
29496
+ const version = "3.8.8-master.2025-06-10";
29436
29497
  createVuetify.version = version;
29437
29498
 
29438
29499
  exports.blueprints = index;