@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
package/dist/vuetify.cjs CHANGED
@@ -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
  */
@@ -435,7 +435,7 @@
435
435
  }
436
436
  function focusChild(el, location) {
437
437
  const focusable = focusableChildren(el);
438
- if (!location) {
438
+ if (location == null) {
439
439
  if (el === document.activeElement || !el.contains(document.activeElement)) {
440
440
  focusable[0]?.focus();
441
441
  }
@@ -7039,13 +7039,18 @@
7039
7039
  };
7040
7040
  }
7041
7041
 
7042
+ // Utilities
7043
+ const RulesSymbol = Symbol.for('vuetify:rules');
7044
+ function useRules(fn) {
7045
+ const resolveRules = vue.inject(RulesSymbol, null);
7046
+ if (!resolveRules) return vue.toRef(fn);
7047
+ return resolveRules(fn);
7048
+ }
7049
+
7042
7050
  // Composables
7043
7051
 
7044
7052
  // Types
7045
7053
 
7046
- // type ValidationRuleParams = [any, string?]
7047
- // type ValidationAlias = string | [string, ...ValidationRuleParams]
7048
-
7049
7054
  const makeValidationProps = propsFactory({
7050
7055
  disabled: {
7051
7056
  type: Boolean,
@@ -7068,7 +7073,6 @@
7068
7073
  },
7069
7074
  rules: {
7070
7075
  type: Array,
7071
- // type: Array as PropType<readonly (ValidationRule | ValidationAlias)[]>,
7072
7076
  default: () => []
7073
7077
  },
7074
7078
  modelValue: null,
@@ -7082,7 +7086,7 @@
7082
7086
  const model = useProxiedModel(props, 'modelValue');
7083
7087
  const validationModel = vue.computed(() => props.validationValue === undefined ? model.value : props.validationValue);
7084
7088
  const form = useForm(props);
7085
- // const rules = useRules()
7089
+ const rules = useRules(() => props.rules);
7086
7090
  const internalErrorMessages = vue.ref([]);
7087
7091
  const isPristine = vue.shallowRef(true);
7088
7092
  const isDirty = vue.computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
@@ -7122,28 +7126,6 @@
7122
7126
  });
7123
7127
  const vm = getCurrentInstance('validation');
7124
7128
  const uid = vue.computed(() => props.name ?? vue.unref(id));
7125
-
7126
- // const resolvedRules = computed(() => props.rules.map(rule => {
7127
- // let ruleName: string | null = null
7128
- // let ruleParams: ValidationRuleParams = [undefined]
7129
- // if (Array.isArray(rule)) {
7130
- // ruleName = rule[0]
7131
- // ruleParams = rule.slice(1) as ValidationRuleParams
7132
- // } else if (typeof rule === 'string') {
7133
- // ruleName = rule
7134
- // }
7135
-
7136
- // if (ruleName !== null) {
7137
- // if (ruleName.startsWith('$')) {
7138
- // ruleName = ruleName.slice(1)
7139
- // }
7140
-
7141
- // return rules?.[ruleName]?.(...ruleParams)
7142
- // } else {
7143
- // return rule
7144
- // }
7145
- // }))
7146
-
7147
7129
  vue.onBeforeMount(() => {
7148
7130
  form.register?.({
7149
7131
  id: uid.value,
@@ -7199,7 +7181,7 @@
7199
7181
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
7200
7182
  const results = [];
7201
7183
  isValidating.value = true;
7202
- for (const rule of props.rules) {
7184
+ for (const rule of rules.value) {
7203
7185
  if (results.length >= Number(props.maxErrors ?? 1)) {
7204
7186
  break;
7205
7187
  }
@@ -13039,6 +13021,7 @@
13039
13021
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
13040
13022
  const isFocused = vue.shallowRef(false);
13041
13023
  let keyboardLookupPrefix = '';
13024
+ let keyboardLookupIndex = -1;
13042
13025
  let keyboardLookupLastTime;
13043
13026
  const displayItems = vue.computed(() => {
13044
13027
  if (props.hideSelected) {
@@ -13106,16 +13089,49 @@
13106
13089
  const now = performance.now();
13107
13090
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
13108
13091
  keyboardLookupPrefix = '';
13092
+ keyboardLookupIndex = -1;
13109
13093
  }
13110
13094
  keyboardLookupPrefix += e.key.toLowerCase();
13111
13095
  keyboardLookupLastTime = now;
13112
- const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
13096
+ const items = displayItems.value;
13097
+ function findItem() {
13098
+ let result = findItemBase();
13099
+ if (result !== undefined) return result;
13100
+ if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
13101
+ // No matches but we have a repeated letter, try the next item with that prefix
13102
+ keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
13103
+ result = findItemBase();
13104
+ if (result !== undefined) return result;
13105
+ }
13106
+
13107
+ // Still nothing, wrap around to the top
13108
+ keyboardLookupIndex = -1;
13109
+ result = findItemBase();
13110
+ if (result !== undefined) return result;
13111
+
13112
+ // Still nothing, try just the new letter
13113
+ keyboardLookupPrefix = e.key.toLowerCase();
13114
+ return findItemBase();
13115
+ }
13116
+ function findItemBase() {
13117
+ for (let i = 0; i < items.length; i++) {
13118
+ const _item = items[i];
13119
+ if (i > keyboardLookupIndex && _item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
13120
+ keyboardLookupIndex = i;
13121
+ return _item;
13122
+ }
13123
+ }
13124
+ return undefined;
13125
+ }
13126
+ const item = findItem();
13113
13127
  if (item !== undefined) {
13114
- model.value = [item];
13128
+ if (!props.multiple) {
13129
+ model.value = [item];
13130
+ }
13115
13131
  const index = displayItems.value.indexOf(item);
13116
- IN_BROWSER && window.requestAnimationFrame(() => {
13117
- index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
13118
- });
13132
+ if (~index && IN_BROWSER) {
13133
+ listRef.value?.focus(index);
13134
+ }
13119
13135
  }
13120
13136
  }
13121
13137
 
@@ -29238,7 +29254,7 @@
29238
29254
  };
29239
29255
  });
29240
29256
  }
29241
- const version$1 = "3.8.5-master.2025-05-14";
29257
+ const version$1 = "3.8.5-pr-21419.3ae3440";
29242
29258
  createVuetify$1.version = version$1;
29243
29259
 
29244
29260
  // Vue's inject() can only be used in setup
@@ -29263,7 +29279,7 @@
29263
29279
  ...options
29264
29280
  });
29265
29281
  };
29266
- const version = "3.8.5-master.2025-05-14";
29282
+ const version = "3.8.5-pr-21419.3ae3440";
29267
29283
  createVuetify.version = version;
29268
29284
 
29269
29285
  exports.blueprints = index;