@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
  */
@@ -431,7 +431,7 @@ function getNextElement(elements, location, condition) {
431
431
  }
432
432
  function focusChild(el, location) {
433
433
  const focusable = focusableChildren(el);
434
- if (!location) {
434
+ if (location == null) {
435
435
  if (el === document.activeElement || !el.contains(document.activeElement)) {
436
436
  focusable[0]?.focus();
437
437
  }
@@ -7035,13 +7035,18 @@ function useForm(props) {
7035
7035
  };
7036
7036
  }
7037
7037
 
7038
+ // Utilities
7039
+ const RulesSymbol = Symbol.for('vuetify:rules');
7040
+ function useRules(fn) {
7041
+ const resolveRules = inject$1(RulesSymbol, null);
7042
+ if (!resolveRules) return toRef(fn);
7043
+ return resolveRules(fn);
7044
+ }
7045
+
7038
7046
  // Composables
7039
7047
 
7040
7048
  // Types
7041
7049
 
7042
- // type ValidationRuleParams = [any, string?]
7043
- // type ValidationAlias = string | [string, ...ValidationRuleParams]
7044
-
7045
7050
  const makeValidationProps = propsFactory({
7046
7051
  disabled: {
7047
7052
  type: Boolean,
@@ -7064,7 +7069,6 @@ const makeValidationProps = propsFactory({
7064
7069
  },
7065
7070
  rules: {
7066
7071
  type: Array,
7067
- // type: Array as PropType<readonly (ValidationRule | ValidationAlias)[]>,
7068
7072
  default: () => []
7069
7073
  },
7070
7074
  modelValue: null,
@@ -7078,7 +7082,7 @@ function useValidation(props) {
7078
7082
  const model = useProxiedModel(props, 'modelValue');
7079
7083
  const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
7080
7084
  const form = useForm(props);
7081
- // const rules = useRules()
7085
+ const rules = useRules(() => props.rules);
7082
7086
  const internalErrorMessages = ref([]);
7083
7087
  const isPristine = shallowRef(true);
7084
7088
  const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
@@ -7118,28 +7122,6 @@ function useValidation(props) {
7118
7122
  });
7119
7123
  const vm = getCurrentInstance('validation');
7120
7124
  const uid = computed(() => props.name ?? unref(id));
7121
-
7122
- // const resolvedRules = computed(() => props.rules.map(rule => {
7123
- // let ruleName: string | null = null
7124
- // let ruleParams: ValidationRuleParams = [undefined]
7125
- // if (Array.isArray(rule)) {
7126
- // ruleName = rule[0]
7127
- // ruleParams = rule.slice(1) as ValidationRuleParams
7128
- // } else if (typeof rule === 'string') {
7129
- // ruleName = rule
7130
- // }
7131
-
7132
- // if (ruleName !== null) {
7133
- // if (ruleName.startsWith('$')) {
7134
- // ruleName = ruleName.slice(1)
7135
- // }
7136
-
7137
- // return rules?.[ruleName]?.(...ruleParams)
7138
- // } else {
7139
- // return rule
7140
- // }
7141
- // }))
7142
-
7143
7125
  onBeforeMount(() => {
7144
7126
  form.register?.({
7145
7127
  id: uid.value,
@@ -7195,7 +7177,7 @@ function useValidation(props) {
7195
7177
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
7196
7178
  const results = [];
7197
7179
  isValidating.value = true;
7198
- for (const rule of props.rules) {
7180
+ for (const rule of rules.value) {
7199
7181
  if (results.length >= Number(props.maxErrors ?? 1)) {
7200
7182
  break;
7201
7183
  }
@@ -13035,6 +13017,7 @@ const VSelect = genericComponent()({
13035
13017
  const selectedValues = computed(() => model.value.map(selection => selection.value));
13036
13018
  const isFocused = shallowRef(false);
13037
13019
  let keyboardLookupPrefix = '';
13020
+ let keyboardLookupIndex = -1;
13038
13021
  let keyboardLookupLastTime;
13039
13022
  const displayItems = computed(() => {
13040
13023
  if (props.hideSelected) {
@@ -13102,16 +13085,49 @@ const VSelect = genericComponent()({
13102
13085
  const now = performance.now();
13103
13086
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
13104
13087
  keyboardLookupPrefix = '';
13088
+ keyboardLookupIndex = -1;
13105
13089
  }
13106
13090
  keyboardLookupPrefix += e.key.toLowerCase();
13107
13091
  keyboardLookupLastTime = now;
13108
- const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
13092
+ const items = displayItems.value;
13093
+ function findItem() {
13094
+ let result = findItemBase();
13095
+ if (result !== undefined) return result;
13096
+ if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
13097
+ // No matches but we have a repeated letter, try the next item with that prefix
13098
+ keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
13099
+ result = findItemBase();
13100
+ if (result !== undefined) return result;
13101
+ }
13102
+
13103
+ // Still nothing, wrap around to the top
13104
+ keyboardLookupIndex = -1;
13105
+ result = findItemBase();
13106
+ if (result !== undefined) return result;
13107
+
13108
+ // Still nothing, try just the new letter
13109
+ keyboardLookupPrefix = e.key.toLowerCase();
13110
+ return findItemBase();
13111
+ }
13112
+ function findItemBase() {
13113
+ for (let i = 0; i < items.length; i++) {
13114
+ const _item = items[i];
13115
+ if (i > keyboardLookupIndex && _item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
13116
+ keyboardLookupIndex = i;
13117
+ return _item;
13118
+ }
13119
+ }
13120
+ return undefined;
13121
+ }
13122
+ const item = findItem();
13109
13123
  if (item !== undefined) {
13110
- model.value = [item];
13124
+ if (!props.multiple) {
13125
+ model.value = [item];
13126
+ }
13111
13127
  const index = displayItems.value.indexOf(item);
13112
- IN_BROWSER && window.requestAnimationFrame(() => {
13113
- index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
13114
- });
13128
+ if (~index && IN_BROWSER) {
13129
+ listRef.value?.focus(index);
13130
+ }
13115
13131
  }
13116
13132
  }
13117
13133
 
@@ -29234,7 +29250,7 @@ function createVuetify$1() {
29234
29250
  };
29235
29251
  });
29236
29252
  }
29237
- const version$1 = "3.8.5-master.2025-05-14";
29253
+ const version$1 = "3.8.5-pr-21419.3ae3440";
29238
29254
  createVuetify$1.version = version$1;
29239
29255
 
29240
29256
  // Vue's inject() can only be used in setup
@@ -29259,7 +29275,7 @@ const createVuetify = function () {
29259
29275
  ...options
29260
29276
  });
29261
29277
  };
29262
- const version = "3.8.5-master.2025-05-14";
29278
+ const version = "3.8.5-pr-21419.3ae3440";
29263
29279
  createVuetify.version = version;
29264
29280
 
29265
29281
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };