@vuetify/nightly 3.8.8-master.2025-06-06 → 3.8.8-master.2025-06-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 (41) hide show
  1. package/CHANGELOG.md +9 -3
  2. package/dist/json/attributes.json +2176 -2176
  3. package/dist/json/importMap-labs.json +28 -28
  4. package/dist/json/importMap.json +148 -148
  5. package/dist/json/web-types.json +4180 -4180
  6. package/dist/vuetify-labs.cjs +29 -35
  7. package/dist/vuetify-labs.css +4211 -4211
  8. package/dist/vuetify-labs.d.ts +64 -54
  9. package/dist/vuetify-labs.esm.js +29 -35
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +29 -35
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +23 -20
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3951 -3951
  16. package/dist/vuetify.d.ts +59 -54
  17. package/dist/vuetify.esm.js +23 -20
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +23 -20
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +30 -30
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VDataTable/VDataTableFooter.js +3 -1
  25. package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
  26. package/lib/components/VNumberInput/VNumberInput.d.ts +5 -0
  27. package/lib/components/VNumberInput/VNumberInput.js +7 -11
  28. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  29. package/lib/components/VOtpInput/VOtpInput.js +5 -2
  30. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  31. package/lib/components/VTextField/VTextField.js +5 -4
  32. package/lib/components/VTextField/VTextField.js.map +1 -1
  33. package/lib/entry-bundler.js +1 -1
  34. package/lib/framework.d.ts +54 -54
  35. package/lib/framework.js +1 -1
  36. package/lib/labs/VColorInput/VColorInput.js +3 -8
  37. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  38. package/lib/labs/VDateInput/VDateInput.d.ts +5 -0
  39. package/lib/labs/VDateInput/VDateInput.js +5 -9
  40. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  41. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.8-master.2025-06-06
2
+ * Vuetify v3.8.8-master.2025-06-07
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -12118,10 +12118,12 @@
12118
12118
  const inputRef = vue.ref();
12119
12119
  const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
12120
12120
  function onFocus() {
12121
- if (inputRef.value !== document.activeElement) {
12122
- inputRef.value?.focus();
12123
- }
12124
12121
  if (!isFocused.value) focus();
12122
+ vue.nextTick(() => {
12123
+ if (inputRef.value !== document.activeElement) {
12124
+ inputRef.value?.focus();
12125
+ }
12126
+ });
12125
12127
  }
12126
12128
  function onControlMousedown(e) {
12127
12129
  emit('mousedown:control', e);
@@ -12130,7 +12132,6 @@
12130
12132
  e.preventDefault();
12131
12133
  }
12132
12134
  function onControlClick(e) {
12133
- onFocus();
12134
12135
  emit('click:control', e);
12135
12136
  }
12136
12137
  function onClear(e, reset) {
@@ -19943,7 +19944,9 @@
19943
19944
  "class": "v-data-table-footer"
19944
19945
  }, [slots.prepend?.(), vue.createElementVNode("div", {
19945
19946
  "class": "v-data-table-footer__items-per-page"
19946
- }, [vue.createElementVNode("span", null, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
19947
+ }, [vue.createElementVNode("span", {
19948
+ "aria-label": t(props.itemsPerPageText)
19949
+ }, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
19947
19950
  "items": itemsPerPageOptions.value,
19948
19951
  "modelValue": itemsPerPage.value,
19949
19952
  "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
@@ -24889,6 +24892,7 @@
24889
24892
  ...makeVNumberInputProps()
24890
24893
  },
24891
24894
  emits: {
24895
+ 'update:focused': val => true,
24892
24896
  'update:modelValue': val => true
24893
24897
  },
24894
24898
  setup(props, _ref) {
@@ -24904,11 +24908,7 @@
24904
24908
  });
24905
24909
  const form = useForm(props);
24906
24910
  const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
24907
- const {
24908
- isFocused,
24909
- focus,
24910
- blur
24911
- } = useFocus(props);
24911
+ const isFocused = vue.shallowRef(props.focused);
24912
24912
  function correctPrecision(val) {
24913
24913
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
24914
24914
  const fixed = precision == null ? String(val) : val.toFixed(precision);
@@ -25093,11 +25093,9 @@
25093
25093
  inputText.value = model.value.toString();
25094
25094
  }
25095
25095
  function onFocus() {
25096
- focus();
25097
25096
  trimDecimalZeros();
25098
25097
  }
25099
25098
  function onBlur() {
25100
- blur();
25101
25099
  clampModel();
25102
25100
  }
25103
25101
  useRender(() => {
@@ -25190,9 +25188,12 @@
25190
25188
  }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? vue.createElementVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
25191
25189
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
25192
25190
  return vue.createVNode(VTextField, vue.mergeProps({
25193
- "ref": vTextFieldRef,
25191
+ "ref": vTextFieldRef
25192
+ }, textFieldProps, {
25194
25193
  "modelValue": inputText.value,
25195
25194
  "onUpdate:modelValue": $event => inputText.value = $event,
25195
+ "focused": isFocused.value,
25196
+ "onUpdate:focused": $event => isFocused.value = $event,
25196
25197
  "validationValue": model.value,
25197
25198
  "onBeforeinput": onBeforeinput,
25198
25199
  "onFocus": onFocus,
@@ -25205,8 +25206,7 @@
25205
25206
  'v-number-input--reverse': props.reverse,
25206
25207
  'v-number-input--split': controlVariant.value === 'split',
25207
25208
  'v-number-input--stacked': controlVariant.value === 'stacked'
25208
- }, props.class]
25209
- }, textFieldProps, {
25209
+ }, props.class],
25210
25210
  "style": props.style,
25211
25211
  "inputmode": "decimal"
25212
25212
  }), {
@@ -25341,7 +25341,7 @@
25341
25341
  function onPaste(index, e) {
25342
25342
  e.preventDefault();
25343
25343
  e.stopPropagation();
25344
- const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
25344
+ const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
25345
25345
  if (isValidNumber(clipboardText)) return;
25346
25346
  model.value = clipboardText.split('');
25347
25347
  inputRef.value?.[index].blur();
@@ -25373,7 +25373,10 @@
25373
25373
  scoped: true
25374
25374
  });
25375
25375
  vue.watch(model, val => {
25376
- if (val.length === length.value) emit('finish', val.join(''));
25376
+ if (val.length === length.value) {
25377
+ focusIndex.value = length.value - 1;
25378
+ emit('finish', val.join(''));
25379
+ }
25377
25380
  }, {
25378
25381
  deep: true
25379
25382
  });
@@ -29264,13 +29267,9 @@
29264
29267
  let {
29265
29268
  slots
29266
29269
  } = _ref;
29267
- const {
29268
- isFocused,
29269
- focus,
29270
- blur
29271
- } = useFocus(props);
29272
29270
  const model = useProxiedModel(props, 'modelValue');
29273
29271
  const menu = vue.shallowRef(false);
29272
+ const isFocused = vue.shallowRef(props.focused);
29274
29273
  const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
29275
29274
  const display = vue.computed(() => model.value || null);
29276
29275
  function onKeydown(e) {
@@ -29301,10 +29300,9 @@
29301
29300
  "modelValue": display.value,
29302
29301
  "onKeydown": isInteractive.value ? onKeydown : undefined,
29303
29302
  "focused": menu.value || isFocused.value,
29304
- "onFocus": focus,
29305
- "onBlur": blur,
29306
29303
  "onClick:control": isInteractive.value ? onClick : undefined,
29307
29304
  "onClick:prependInner": isInteractive.value ? onClick : undefined,
29305
+ "onUpdate:focused": event => isFocused.value = event,
29308
29306
  "onClick:appendInner": isInteractive.value ? onClick : undefined,
29309
29307
  "onUpdate:modelValue": val => {
29310
29308
  model.value = val;
@@ -29508,6 +29506,7 @@
29508
29506
  emits: {
29509
29507
  save: value => true,
29510
29508
  cancel: () => true,
29509
+ 'update:focused': val => true,
29511
29510
  'update:modelValue': val => true,
29512
29511
  'update:menu': val => true
29513
29512
  },
@@ -29530,15 +29529,11 @@
29530
29529
  const {
29531
29530
  mobile
29532
29531
  } = useDisplay(props);
29533
- const {
29534
- isFocused,
29535
- focus,
29536
- blur
29537
- } = useFocus(props);
29538
29532
  const emptyModelValue = () => props.multiple ? [] : null;
29539
29533
  const model = useProxiedModel(props, 'modelValue', emptyModelValue(), val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
29540
29534
  const menu = useProxiedModel(props, 'menu');
29541
29535
  const isEditingInput = vue.shallowRef(false);
29536
+ const isFocused = vue.shallowRef(props.focused);
29542
29537
  const vTextFieldRef = vue.ref();
29543
29538
  const disabledActions = vue.ref(['save']);
29544
29539
  function format(date) {
@@ -29614,7 +29609,6 @@
29614
29609
  if (props.updateOn.includes('blur')) {
29615
29610
  onUserInput(e.target);
29616
29611
  }
29617
- blur();
29618
29612
 
29619
29613
  // When in mobile mode and editing is done (due to keyboard dismissal), close the menu
29620
29614
  if (mobile.value && isEditingInput.value && !isFocused.value) {
@@ -29659,12 +29653,12 @@
29659
29653
  "readonly": isReadonly.value,
29660
29654
  "onKeydown": isInteractive.value ? onKeydown : undefined,
29661
29655
  "focused": menu.value || isFocused.value,
29662
- "onFocus": focus,
29663
29656
  "onBlur": onBlur,
29664
29657
  "validationValue": model.value,
29665
29658
  "onClick:control": isInteractive.value ? onClick : undefined,
29666
29659
  "onClick:prepend": isInteractive.value ? onClick : undefined,
29667
- "onUpdate:modelValue": onUpdateDisplayModel
29660
+ "onUpdate:modelValue": onUpdateDisplayModel,
29661
+ "onUpdate:focused": event => isFocused.value = event
29668
29662
  }), {
29669
29663
  ...slots,
29670
29664
  default: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VMenu, {
@@ -32095,7 +32089,7 @@
32095
32089
  };
32096
32090
  });
32097
32091
  }
32098
- const version$1 = "3.8.8-master.2025-06-06";
32092
+ const version$1 = "3.8.8-master.2025-06-07";
32099
32093
  createVuetify$1.version = version$1;
32100
32094
 
32101
32095
  // Vue's inject() can only be used in setup
@@ -32393,7 +32387,7 @@
32393
32387
 
32394
32388
  /* eslint-disable local-rules/sort-imports */
32395
32389
 
32396
- const version = "3.8.8-master.2025-06-06";
32390
+ const version = "3.8.8-master.2025-06-07";
32397
32391
 
32398
32392
  /* eslint-disable local-rules/sort-imports */
32399
32393