@vuetify/nightly 3.8.5-master.2025-05-14 → 3.8.5-pr-21419.3ae3440

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 (57) hide show
  1. package/CHANGELOG.md +17 -3
  2. package/dist/json/attributes.json +3653 -3653
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +150 -150
  5. package/dist/json/web-types.json +6400 -6400
  6. package/dist/vuetify-labs.cjs +53 -37
  7. package/dist/vuetify-labs.css +3989 -3989
  8. package/dist/vuetify-labs.d.ts +605 -602
  9. package/dist/vuetify-labs.esm.js +53 -37
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +53 -37
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +53 -37
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4937 -4937
  16. package/dist/vuetify.d.ts +517 -514
  17. package/dist/vuetify.esm.js +53 -37
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +53 -37
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +589 -583
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAutocomplete/VAutocomplete.d.ts +84 -84
  25. package/lib/components/VCheckbox/VCheckbox.d.ts +12 -12
  26. package/lib/components/VCombobox/VCombobox.d.ts +84 -84
  27. package/lib/components/VFileInput/VFileInput.d.ts +30 -30
  28. package/lib/components/VInput/VInput.d.ts +12 -12
  29. package/lib/components/VList/VList.d.ts +3 -3
  30. package/lib/components/VList/VList.js.map +1 -1
  31. package/lib/components/VNumberInput/VNumberInput.d.ts +80 -80
  32. package/lib/components/VRadioGroup/VRadioGroup.d.ts +12 -12
  33. package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
  34. package/lib/components/VSelect/VSelect.d.ts +84 -84
  35. package/lib/components/VSelect/VSelect.js +39 -5
  36. package/lib/components/VSelect/VSelect.js.map +1 -1
  37. package/lib/components/VSlider/VSlider.d.ts +12 -12
  38. package/lib/components/VSwitch/VSwitch.d.ts +12 -12
  39. package/lib/components/VTextField/VTextField.d.ts +30 -30
  40. package/lib/components/VTextarea/VTextarea.d.ts +30 -30
  41. package/lib/components/VValidation/VValidation.d.ts +8 -8
  42. package/lib/composables/validation.d.ts +6 -5
  43. package/lib/composables/validation.js +4 -29
  44. package/lib/composables/validation.js.map +1 -1
  45. package/lib/entry-bundler.js +1 -1
  46. package/lib/entry-bundler.js.map +1 -1
  47. package/lib/framework.d.ts +56 -56
  48. package/lib/framework.js +1 -1
  49. package/lib/framework.js.map +1 -1
  50. package/lib/labs/VColorInput/VColorInput.d.ts +12 -12
  51. package/lib/labs/VDateInput/VDateInput.d.ts +84 -84
  52. package/lib/labs/rules/rules.d.ts +9 -5
  53. package/lib/labs/rules/rules.js +73 -51
  54. package/lib/labs/rules/rules.js.map +1 -1
  55. package/lib/util/helpers.js +1 -1
  56. package/lib/util/helpers.js.map +1 -1
  57. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.5-master.2025-05-14
2
+ * Vuetify v3.8.5-pr-21419.3ae3440
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -512,7 +512,7 @@
512
512
  }
513
513
  function focusChild(el, location) {
514
514
  const focusable = focusableChildren(el);
515
- if (!location) {
515
+ if (location == null) {
516
516
  if (el === document.activeElement || !el.contains(document.activeElement)) {
517
517
  focusable[0]?.focus();
518
518
  }
@@ -6761,13 +6761,18 @@
6761
6761
  };
6762
6762
  }
6763
6763
 
6764
+ // Utilities
6765
+ const RulesSymbol = Symbol.for('vuetify:rules');
6766
+ function useRules(fn) {
6767
+ const resolveRules = vue.inject(RulesSymbol, null);
6768
+ if (!resolveRules) return vue.toRef(fn);
6769
+ return resolveRules(fn);
6770
+ }
6771
+
6764
6772
  // Composables
6765
6773
 
6766
6774
  // Types
6767
6775
 
6768
- // type ValidationRuleParams = [any, string?]
6769
- // type ValidationAlias = string | [string, ...ValidationRuleParams]
6770
-
6771
6776
  const makeValidationProps = propsFactory({
6772
6777
  disabled: {
6773
6778
  type: Boolean,
@@ -6790,7 +6795,6 @@
6790
6795
  },
6791
6796
  rules: {
6792
6797
  type: Array,
6793
- // type: Array as PropType<readonly (ValidationRule | ValidationAlias)[]>,
6794
6798
  default: () => []
6795
6799
  },
6796
6800
  modelValue: null,
@@ -6804,7 +6808,7 @@
6804
6808
  const model = useProxiedModel(props, 'modelValue');
6805
6809
  const validationModel = vue.computed(() => props.validationValue === undefined ? model.value : props.validationValue);
6806
6810
  const form = useForm(props);
6807
- // const rules = useRules()
6811
+ const rules = useRules(() => props.rules);
6808
6812
  const internalErrorMessages = vue.ref([]);
6809
6813
  const isPristine = vue.shallowRef(true);
6810
6814
  const isDirty = vue.computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
@@ -6844,28 +6848,6 @@
6844
6848
  });
6845
6849
  const vm = getCurrentInstance('validation');
6846
6850
  const uid = vue.computed(() => props.name ?? vue.unref(id));
6847
-
6848
- // const resolvedRules = computed(() => props.rules.map(rule => {
6849
- // let ruleName: string | null = null
6850
- // let ruleParams: ValidationRuleParams = [undefined]
6851
- // if (Array.isArray(rule)) {
6852
- // ruleName = rule[0]
6853
- // ruleParams = rule.slice(1) as ValidationRuleParams
6854
- // } else if (typeof rule === 'string') {
6855
- // ruleName = rule
6856
- // }
6857
-
6858
- // if (ruleName !== null) {
6859
- // if (ruleName.startsWith('$')) {
6860
- // ruleName = ruleName.slice(1)
6861
- // }
6862
-
6863
- // return rules?.[ruleName]?.(...ruleParams)
6864
- // } else {
6865
- // return rule
6866
- // }
6867
- // }))
6868
-
6869
6851
  vue.onBeforeMount(() => {
6870
6852
  form.register?.({
6871
6853
  id: uid.value,
@@ -6921,7 +6903,7 @@
6921
6903
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6922
6904
  const results = [];
6923
6905
  isValidating.value = true;
6924
- for (const rule of props.rules) {
6906
+ for (const rule of rules.value) {
6925
6907
  if (results.length >= Number(props.maxErrors ?? 1)) {
6926
6908
  break;
6927
6909
  }
@@ -12761,6 +12743,7 @@
12761
12743
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
12762
12744
  const isFocused = vue.shallowRef(false);
12763
12745
  let keyboardLookupPrefix = '';
12746
+ let keyboardLookupIndex = -1;
12764
12747
  let keyboardLookupLastTime;
12765
12748
  const displayItems = vue.computed(() => {
12766
12749
  if (props.hideSelected) {
@@ -12828,16 +12811,49 @@
12828
12811
  const now = performance.now();
12829
12812
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
12830
12813
  keyboardLookupPrefix = '';
12814
+ keyboardLookupIndex = -1;
12831
12815
  }
12832
12816
  keyboardLookupPrefix += e.key.toLowerCase();
12833
12817
  keyboardLookupLastTime = now;
12834
- const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
12818
+ const items = displayItems.value;
12819
+ function findItem() {
12820
+ let result = findItemBase();
12821
+ if (result !== undefined) return result;
12822
+ if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
12823
+ // No matches but we have a repeated letter, try the next item with that prefix
12824
+ keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
12825
+ result = findItemBase();
12826
+ if (result !== undefined) return result;
12827
+ }
12828
+
12829
+ // Still nothing, wrap around to the top
12830
+ keyboardLookupIndex = -1;
12831
+ result = findItemBase();
12832
+ if (result !== undefined) return result;
12833
+
12834
+ // Still nothing, try just the new letter
12835
+ keyboardLookupPrefix = e.key.toLowerCase();
12836
+ return findItemBase();
12837
+ }
12838
+ function findItemBase() {
12839
+ for (let i = 0; i < items.length; i++) {
12840
+ const _item = items[i];
12841
+ if (i > keyboardLookupIndex && _item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
12842
+ keyboardLookupIndex = i;
12843
+ return _item;
12844
+ }
12845
+ }
12846
+ return undefined;
12847
+ }
12848
+ const item = findItem();
12835
12849
  if (item !== undefined) {
12836
- model.value = [item];
12850
+ if (!props.multiple) {
12851
+ model.value = [item];
12852
+ }
12837
12853
  const index = displayItems.value.indexOf(item);
12838
- IN_BROWSER && window.requestAnimationFrame(() => {
12839
- index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
12840
- });
12854
+ if (~index && IN_BROWSER) {
12855
+ listRef.value?.focus(index);
12856
+ }
12841
12857
  }
12842
12858
  }
12843
12859
 
@@ -31933,7 +31949,7 @@
31933
31949
  };
31934
31950
  });
31935
31951
  }
31936
- const version$1 = "3.8.5-master.2025-05-14";
31952
+ const version$1 = "3.8.5-pr-21419.3ae3440";
31937
31953
  createVuetify$1.version = version$1;
31938
31954
 
31939
31955
  // Vue's inject() can only be used in setup
@@ -32231,7 +32247,7 @@
32231
32247
 
32232
32248
  /* eslint-disable local-rules/sort-imports */
32233
32249
 
32234
- const version = "3.8.5-master.2025-05-14";
32250
+ const version = "3.8.5-pr-21419.3ae3440";
32235
32251
 
32236
32252
  /* eslint-disable local-rules/sort-imports */
32237
32253