@vuetify/nightly 3.8.6-master.2025-05-22 → 3.8.6-master.2025-05-24

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 (37) hide show
  1. package/CHANGELOG.md +15 -3
  2. package/dist/json/attributes.json +3419 -3419
  3. package/dist/json/importMap-labs.json +32 -32
  4. package/dist/json/importMap.json +162 -162
  5. package/dist/json/web-types.json +6126 -6126
  6. package/dist/vuetify-labs.cjs +37 -11
  7. package/dist/vuetify-labs.css +3740 -3740
  8. package/dist/vuetify-labs.d.ts +60 -60
  9. package/dist/vuetify-labs.esm.js +37 -11
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +37 -11
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +37 -11
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2094 -2094
  16. package/dist/vuetify.d.ts +60 -60
  17. package/dist/vuetify.esm.js +37 -11
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +37 -11
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +11 -8
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VField/VField.js +4 -2
  25. package/lib/components/VField/VField.js.map +1 -1
  26. package/lib/components/VInput/InputIcon.d.ts +1 -1
  27. package/lib/components/VInput/InputIcon.js +5 -4
  28. package/lib/components/VInput/InputIcon.js.map +1 -1
  29. package/lib/components/VNumberInput/VNumberInput.js +12 -4
  30. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  31. package/lib/entry-bundler.js +1 -1
  32. package/lib/framework.d.ts +60 -60
  33. package/lib/framework.js +1 -1
  34. package/lib/util/helpers.d.ts +1 -0
  35. package/lib/util/helpers.js +15 -0
  36. package/lib/util/helpers.js.map +1 -1
  37. package/package.json +1 -1
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.6-master.2025-05-22
2
+ * Vuetify v3.8.6-master.2025-05-24
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -514,6 +514,21 @@
514
514
  function isPrimitive(value) {
515
515
  return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
516
516
  }
517
+ function extractNumber(text, decimalDigitsLimit) {
518
+ const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
519
+ // sign allowed at the start
520
+ x === '.' && i === all.indexOf('.') ||
521
+ // decimal separator allowed only once
522
+ /\d/.test(x)).join('');
523
+ if (decimalDigitsLimit === 0) {
524
+ return cleanText.split('.')[0];
525
+ }
526
+ if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
527
+ const parts = cleanText.split('.');
528
+ return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
529
+ }
530
+ return cleanText;
531
+ }
517
532
 
518
533
  // Utilities
519
534
  const block = ['top', 'bottom'];
@@ -6824,7 +6839,8 @@
6824
6839
  function InputIcon(_ref) {
6825
6840
  let {
6826
6841
  name,
6827
- color
6842
+ color,
6843
+ ...attrs
6828
6844
  } = _ref;
6829
6845
  const localeKey = {
6830
6846
  prepend: 'prependAction',
@@ -6841,13 +6857,13 @@
6841
6857
  callEvent(listener, new PointerEvent('click', e));
6842
6858
  }
6843
6859
  const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;
6844
- return vue.createVNode(VIcon, {
6860
+ return vue.createVNode(VIcon, vue.mergeProps({
6845
6861
  "icon": props[`${name}Icon`],
6846
6862
  "aria-label": label,
6847
6863
  "onClick": listener,
6848
6864
  "onKeydown": onKeydown,
6849
6865
  "color": color
6850
- }, null);
6866
+ }, attrs), null);
6851
6867
  }
6852
6868
  return {
6853
6869
  InputIcon
@@ -12260,12 +12276,14 @@
12260
12276
  props: {
12261
12277
  onFocus: focus,
12262
12278
  onBlur: blur,
12263
- onClick: props['onClick:clear']
12279
+ onClick: props['onClick:clear'],
12280
+ tabindex: -1
12264
12281
  }
12265
12282
  }) : vue.createVNode(InputIcon, {
12266
12283
  "name": "clear",
12267
12284
  "onFocus": focus,
12268
- "onBlur": blur
12285
+ "onBlur": blur,
12286
+ "tabindex": -1
12269
12287
  }, null)]
12270
12288
  })]), [[vue.vShow, props.dirty]])]
12271
12289
  }), hasAppend && vue.createVNode("div", {
@@ -25175,25 +25193,33 @@
25175
25193
  }
25176
25194
  function onBeforeinput(e) {
25177
25195
  if (!e.data) return;
25178
- const existingTxt = e.target?.value;
25179
- const selectionStart = e.target?.selectionStart;
25180
- const selectionEnd = e.target?.selectionEnd;
25196
+ const inputElement = e.target;
25197
+ const {
25198
+ value: existingTxt,
25199
+ selectionStart,
25200
+ selectionEnd
25201
+ } = inputElement ?? {};
25181
25202
  const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
25203
+ const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
25204
+
25182
25205
  // Only numbers, "-", "." are allowed
25183
25206
  // AND "-", "." are allowed only once
25184
25207
  // AND "-" is only allowed at the start
25185
25208
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
25186
25209
  e.preventDefault();
25210
+ inputElement.value = potentialNewNumber;
25187
25211
  }
25188
25212
  if (props.precision == null) return;
25189
25213
 
25190
25214
  // Ignore decimal digits above precision limit
25191
25215
  if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
25192
25216
  e.preventDefault();
25217
+ inputElement.value = potentialNewNumber;
25193
25218
  }
25194
25219
  // Ignore decimal separator when precision = 0
25195
25220
  if (props.precision === 0 && potentialNewInputVal.includes('.')) {
25196
25221
  e.preventDefault();
25222
+ inputElement.value = potentialNewNumber;
25197
25223
  }
25198
25224
  }
25199
25225
  async function onKeydown(e) {
@@ -29294,7 +29320,7 @@
29294
29320
  };
29295
29321
  });
29296
29322
  }
29297
- const version$1 = "3.8.6-master.2025-05-22";
29323
+ const version$1 = "3.8.6-master.2025-05-24";
29298
29324
  createVuetify$1.version = version$1;
29299
29325
 
29300
29326
  // Vue's inject() can only be used in setup
@@ -29319,7 +29345,7 @@
29319
29345
  ...options
29320
29346
  });
29321
29347
  };
29322
- const version = "3.8.6-master.2025-05-22";
29348
+ const version = "3.8.6-master.2025-05-24";
29323
29349
  createVuetify.version = version;
29324
29350
 
29325
29351
  exports.blueprints = index;