@vuetify/nightly 3.8.9-master.2025-06-13 → 3.8.9-master.2025-06-17

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 (50) hide show
  1. package/CHANGELOG.md +9 -3
  2. package/dist/json/attributes.json +3382 -3382
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +166 -166
  5. package/dist/json/web-types.json +6389 -6389
  6. package/dist/vuetify-labs.cjs +39 -14
  7. package/dist/vuetify-labs.css +3161 -3157
  8. package/dist/vuetify-labs.d.ts +65 -65
  9. package/dist/vuetify-labs.esm.js +39 -14
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +39 -14
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +38 -14
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3844 -3840
  16. package/dist/vuetify.d.ts +65 -65
  17. package/dist/vuetify.esm.js +38 -14
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +38 -14
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +372 -371
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBtnGroup/VBtnGroup.css +2 -1
  25. package/lib/components/VBtnGroup/VBtnGroup.sass +2 -1
  26. package/lib/components/VDataTable/VDataTable.css +6 -3
  27. package/lib/components/VDataTable/VDataTable.sass +4 -2
  28. package/lib/components/VOtpInput/VOtpInput.js +17 -1
  29. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  30. package/lib/components/VTextField/VTextField.js +4 -4
  31. package/lib/components/VTextField/VTextField.js.map +1 -1
  32. package/lib/components/VTextarea/VTextarea.js +4 -4
  33. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  34. package/lib/composables/autofocus.d.ts +7 -0
  35. package/lib/composables/autofocus.js +10 -0
  36. package/lib/composables/autofocus.js.map +1 -0
  37. package/lib/composables/group.js +1 -0
  38. package/lib/composables/group.js.map +1 -1
  39. package/lib/composables/hotkey.js +17 -17
  40. package/lib/composables/hotkey.js.map +1 -1
  41. package/lib/composables/intersectionObserver.js +2 -2
  42. package/lib/composables/intersectionObserver.js.map +1 -1
  43. package/lib/composables/selectLink.js +2 -2
  44. package/lib/composables/selectLink.js.map +1 -1
  45. package/lib/entry-bundler.js +1 -1
  46. package/lib/framework.d.ts +65 -65
  47. package/lib/framework.js +1 -1
  48. package/lib/labs/VFileUpload/VFileUploadItem.js +1 -0
  49. package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
  50. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.9-master.2025-06-13
2
+ * Vuetify v3.8.9-master.2025-06-17
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -4404,6 +4404,7 @@
4404
4404
  } else {
4405
4405
  const isSelected = selected.value.includes(id);
4406
4406
  if (props.mandatory && isSelected) return;
4407
+ if (!isSelected && !value) return;
4407
4408
  selected.value = value ?? !isSelected ? [id] : [];
4408
4409
  }
4409
4410
  }
@@ -4838,7 +4839,7 @@
4838
4839
  const observer = new IntersectionObserver(entries => {
4839
4840
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4840
4841
  }, options);
4841
- vue.onBeforeUnmount(() => {
4842
+ vue.onScopeDispose(() => {
4842
4843
  observer.disconnect();
4843
4844
  });
4844
4845
  vue.watch(intersectionRef, (newValue, oldValue) => {
@@ -5369,9 +5370,9 @@
5369
5370
 
5370
5371
  function useSelectLink(link, select) {
5371
5372
  vue.watch(() => link.isActive?.value, isActive => {
5372
- if (link.isLink.value && isActive && select) {
5373
+ if (link.isLink.value && isActive != null && select) {
5373
5374
  vue.nextTick(() => {
5374
- select(true);
5375
+ select(isActive);
5375
5376
  });
5376
5377
  }
5377
5378
  }, {
@@ -12068,6 +12069,16 @@
12068
12069
  }
12069
12070
  });
12070
12071
 
12072
+ function useAutofocus(props) {
12073
+ function onIntersect(isIntersecting, entries) {
12074
+ if (!props.autofocus || !isIntersecting) return;
12075
+ entries[0].target?.focus?.();
12076
+ }
12077
+ return {
12078
+ onIntersect
12079
+ };
12080
+ }
12081
+
12071
12082
  // Types
12072
12083
 
12073
12084
  const activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
@@ -12114,6 +12125,9 @@
12114
12125
  focus,
12115
12126
  blur
12116
12127
  } = useFocus(props);
12128
+ const {
12129
+ onIntersect
12130
+ } = useAutofocus(props);
12117
12131
  const counterValue = vue.computed(() => {
12118
12132
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;
12119
12133
  });
@@ -12123,10 +12137,6 @@
12123
12137
  return props.counter;
12124
12138
  });
12125
12139
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
12126
- function onIntersect(isIntersecting, entries) {
12127
- if (!props.autofocus || !isIntersecting) return;
12128
- entries[0].target?.focus?.();
12129
- }
12130
12140
  const vInputRef = vue.ref();
12131
12141
  const vFieldRef = vue.ref();
12132
12142
  const inputRef = vue.ref();
@@ -25372,6 +25382,21 @@
25372
25382
  const contentRef = vue.ref();
25373
25383
  const inputRef = vue.ref([]);
25374
25384
  const current = vue.computed(() => inputRef.value[focusIndex.value]);
25385
+ const intersectScope = vue.effectScope();
25386
+ intersectScope.run(() => {
25387
+ const {
25388
+ intersectionRef,
25389
+ isIntersecting
25390
+ } = useIntersectionObserver();
25391
+ vue.watch(isIntersecting, v => {
25392
+ if (!v) return;
25393
+ intersectionRef.value?.focus();
25394
+ intersectScope.stop();
25395
+ });
25396
+ vue.watchEffect(() => {
25397
+ intersectionRef.value = inputRef.value[0];
25398
+ });
25399
+ });
25375
25400
  function onInput() {
25376
25401
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
25377
25402
  // The following logic simulates the behavior of a number input.
@@ -28118,6 +28143,9 @@
28118
28143
  focus,
28119
28144
  blur
28120
28145
  } = useFocus(props);
28146
+ const {
28147
+ onIntersect
28148
+ } = useAutofocus(props);
28121
28149
  const counterValue = vue.computed(() => {
28122
28150
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;
28123
28151
  });
@@ -28126,10 +28154,6 @@
28126
28154
  if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
28127
28155
  return props.counter;
28128
28156
  });
28129
- function onIntersect(isIntersecting, entries) {
28130
- if (!props.autofocus || !isIntersecting) return;
28131
- entries[0].target?.focus?.();
28132
- }
28133
28157
  const vInputRef = vue.ref();
28134
28158
  const vFieldRef = vue.ref();
28135
28159
  const controlHeight = vue.shallowRef('');
@@ -29846,6 +29870,7 @@
29846
29870
  "class": "v-file-upload-item"
29847
29871
  }), {
29848
29872
  ...slots,
29873
+ title: () => props?.title ?? props.file?.name,
29849
29874
  prepend: slotProps => vue.createElementVNode(vue.Fragment, null, [!slots.prepend ? vue.createVNode(VAvatar, {
29850
29875
  "icon": props.fileIcon,
29851
29876
  "image": preview.value,
@@ -32174,7 +32199,7 @@
32174
32199
  };
32175
32200
  });
32176
32201
  }
32177
- const version$1 = "3.8.9-master.2025-06-13";
32202
+ const version$1 = "3.8.9-master.2025-06-17";
32178
32203
  createVuetify$1.version = version$1;
32179
32204
 
32180
32205
  // Vue's inject() can only be used in setup
@@ -32472,7 +32497,7 @@
32472
32497
 
32473
32498
  /* eslint-disable local-rules/sort-imports */
32474
32499
 
32475
- const version = "3.8.9-master.2025-06-13";
32500
+ const version = "3.8.9-master.2025-06-17";
32476
32501
 
32477
32502
  /* eslint-disable local-rules/sort-imports */
32478
32503