@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
@@ -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
  */
@@ -591,6 +591,21 @@
591
591
  function isPrimitive(value) {
592
592
  return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
593
593
  }
594
+ function extractNumber(text, decimalDigitsLimit) {
595
+ const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
596
+ // sign allowed at the start
597
+ x === '.' && i === all.indexOf('.') ||
598
+ // decimal separator allowed only once
599
+ /\d/.test(x)).join('');
600
+ if (decimalDigitsLimit === 0) {
601
+ return cleanText.split('.')[0];
602
+ }
603
+ if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
604
+ const parts = cleanText.split('.');
605
+ return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
606
+ }
607
+ return cleanText;
608
+ }
594
609
 
595
610
  // Utilities
596
611
  const block = ['top', 'bottom'];
@@ -6546,7 +6561,8 @@
6546
6561
  function InputIcon(_ref) {
6547
6562
  let {
6548
6563
  name,
6549
- color
6564
+ color,
6565
+ ...attrs
6550
6566
  } = _ref;
6551
6567
  const localeKey = {
6552
6568
  prepend: 'prependAction',
@@ -6563,13 +6579,13 @@
6563
6579
  callEvent(listener, new PointerEvent('click', e));
6564
6580
  }
6565
6581
  const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;
6566
- return vue.createVNode(VIcon, {
6582
+ return vue.createVNode(VIcon, vue.mergeProps({
6567
6583
  "icon": props[`${name}Icon`],
6568
6584
  "aria-label": label,
6569
6585
  "onClick": listener,
6570
6586
  "onKeydown": onKeydown,
6571
6587
  "color": color
6572
- }, null);
6588
+ }, attrs), null);
6573
6589
  }
6574
6590
  return {
6575
6591
  InputIcon
@@ -11982,12 +11998,14 @@
11982
11998
  props: {
11983
11999
  onFocus: focus,
11984
12000
  onBlur: blur,
11985
- onClick: props['onClick:clear']
12001
+ onClick: props['onClick:clear'],
12002
+ tabindex: -1
11986
12003
  }
11987
12004
  }) : vue.createVNode(InputIcon, {
11988
12005
  "name": "clear",
11989
12006
  "onFocus": focus,
11990
- "onBlur": blur
12007
+ "onBlur": blur,
12008
+ "tabindex": -1
11991
12009
  }, null)]
11992
12010
  })]), [[vue.vShow, props.dirty]])]
11993
12011
  }), hasAppend && vue.createVNode("div", {
@@ -24897,25 +24915,33 @@
24897
24915
  }
24898
24916
  function onBeforeinput(e) {
24899
24917
  if (!e.data) return;
24900
- const existingTxt = e.target?.value;
24901
- const selectionStart = e.target?.selectionStart;
24902
- const selectionEnd = e.target?.selectionEnd;
24918
+ const inputElement = e.target;
24919
+ const {
24920
+ value: existingTxt,
24921
+ selectionStart,
24922
+ selectionEnd
24923
+ } = inputElement ?? {};
24903
24924
  const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
24925
+ const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
24926
+
24904
24927
  // Only numbers, "-", "." are allowed
24905
24928
  // AND "-", "." are allowed only once
24906
24929
  // AND "-" is only allowed at the start
24907
24930
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
24908
24931
  e.preventDefault();
24932
+ inputElement.value = potentialNewNumber;
24909
24933
  }
24910
24934
  if (props.precision == null) return;
24911
24935
 
24912
24936
  // Ignore decimal digits above precision limit
24913
24937
  if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
24914
24938
  e.preventDefault();
24939
+ inputElement.value = potentialNewNumber;
24915
24940
  }
24916
24941
  // Ignore decimal separator when precision = 0
24917
24942
  if (props.precision === 0 && potentialNewInputVal.includes('.')) {
24918
24943
  e.preventDefault();
24944
+ inputElement.value = potentialNewNumber;
24919
24945
  }
24920
24946
  }
24921
24947
  async function onKeydown(e) {
@@ -31989,7 +32015,7 @@
31989
32015
  };
31990
32016
  });
31991
32017
  }
31992
- const version$1 = "3.8.6-master.2025-05-22";
32018
+ const version$1 = "3.8.6-master.2025-05-24";
31993
32019
  createVuetify$1.version = version$1;
31994
32020
 
31995
32021
  // Vue's inject() can only be used in setup
@@ -32287,7 +32313,7 @@
32287
32313
 
32288
32314
  /* eslint-disable local-rules/sort-imports */
32289
32315
 
32290
- const version = "3.8.6-master.2025-05-22";
32316
+ const version = "3.8.6-master.2025-05-24";
32291
32317
 
32292
32318
  /* eslint-disable local-rules/sort-imports */
32293
32319