@vuetify/nightly 3.8.0-dev.2025-04-01 → 3.8.0-dev.2025-04-03

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 (46) hide show
  1. package/CHANGELOG.md +18 -3
  2. package/dist/json/attributes.json +3801 -3801
  3. package/dist/json/importMap-labs.json +18 -18
  4. package/dist/json/importMap.json +180 -180
  5. package/dist/json/web-types.json +6824 -6824
  6. package/dist/vuetify-labs.cjs +56 -44
  7. package/dist/vuetify-labs.css +4799 -4802
  8. package/dist/vuetify-labs.d.ts +114 -75
  9. package/dist/vuetify-labs.esm.js +56 -44
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +56 -44
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +56 -44
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2940 -2943
  16. package/dist/vuetify.d.ts +114 -75
  17. package/dist/vuetify.esm.js +56 -44
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +56 -44
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +85 -83
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAutocomplete/VAutocomplete.css +0 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +11 -9
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.sass +0 -1
  28. package/lib/components/VCombobox/VCombobox.css +0 -1
  29. package/lib/components/VCombobox/VCombobox.js +22 -20
  30. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  31. package/lib/components/VCombobox/VCombobox.sass +0 -1
  32. package/lib/components/VField/VField.d.ts +3 -0
  33. package/lib/components/VField/VField.js +3 -2
  34. package/lib/components/VField/VField.js.map +1 -1
  35. package/lib/components/VNumberInput/VNumberInput.d.ts +39 -12
  36. package/lib/components/VSelect/VSelect.css +0 -1
  37. package/lib/components/VSelect/VSelect.js +11 -9
  38. package/lib/components/VSelect/VSelect.js.map +1 -1
  39. package/lib/components/VSelect/VSelect.sass +0 -1
  40. package/lib/components/VTextField/VTextField.d.ts +12 -3
  41. package/lib/composables/virtual.js +6 -1
  42. package/lib/composables/virtual.js.map +1 -1
  43. package/lib/entry-bundler.js +1 -1
  44. package/lib/framework.d.ts +60 -60
  45. package/lib/framework.js +1 -1
  46. package/package.json +1 -1
package/dist/vuetify.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.0-dev.2025-04-01
2
+ * Vuetify v3.8.0-dev.2025-04-03
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -12001,7 +12001,7 @@
12001
12001
  return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
12002
12002
  });
12003
12003
  const iconColor = vue.computed(() => {
12004
- if (!props.iconColor) return undefined;
12004
+ if (!props.iconColor || props.glow && !isFocused.value) return undefined;
12005
12005
  return props.iconColor === true ? color.value : props.iconColor;
12006
12006
  });
12007
12007
  const {
@@ -12199,7 +12199,8 @@
12199
12199
  })])]);
12200
12200
  });
12201
12201
  return {
12202
- controlRef
12202
+ controlRef,
12203
+ fieldIconColor: iconColor
12203
12204
  };
12204
12205
  }
12205
12206
  });
@@ -12549,7 +12550,12 @@
12549
12550
  }
12550
12551
  function calculateOffset(index) {
12551
12552
  index = clamp(index, 0, items.value.length - 1);
12552
- return offsets[index] || 0;
12553
+ const whole = Math.floor(index);
12554
+ const fraction = index % 1;
12555
+ const next = whole + 1;
12556
+ const wholeOffset = offsets[whole] || 0;
12557
+ const nextOffset = offsets[next] || wholeOffset;
12558
+ return wholeOffset + (nextOffset - wholeOffset) * fraction;
12553
12559
  }
12554
12560
  function calculateIndex(scrollTop) {
12555
12561
  return binaryClosest(offsets, scrollTop);
@@ -12937,14 +12943,6 @@
12937
12943
  const vTextFieldRef = vue.ref();
12938
12944
  const vMenuRef = vue.ref();
12939
12945
  const vVirtualScrollRef = vue.ref();
12940
- const _menu = useProxiedModel(props, 'menu');
12941
- const menu = vue.computed({
12942
- get: () => _menu.value,
12943
- set: v => {
12944
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12945
- _menu.value = v;
12946
- }
12947
- });
12948
12946
  const {
12949
12947
  items,
12950
12948
  transformIn,
@@ -12960,7 +12958,6 @@
12960
12958
  const form = useForm(props);
12961
12959
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
12962
12960
  const isFocused = vue.shallowRef(false);
12963
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
12964
12961
  let keyboardLookupPrefix = '';
12965
12962
  let keyboardLookupLastTime;
12966
12963
  const displayItems = vue.computed(() => {
@@ -12970,6 +12967,16 @@
12970
12967
  return items.value;
12971
12968
  });
12972
12969
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
12970
+ const _menu = useProxiedModel(props, 'menu');
12971
+ const menu = vue.computed({
12972
+ get: () => _menu.value,
12973
+ set: v => {
12974
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12975
+ if (v && menuDisabled.value) return;
12976
+ _menu.value = v;
12977
+ }
12978
+ });
12979
+ const label = vue.computed(() => menu.value ? props.closeText : props.openText);
12973
12980
  const computedMenuProps = vue.computed(() => {
12974
12981
  return {
12975
12982
  ...props.menuProps,
@@ -13265,6 +13272,7 @@
13265
13272
  }
13266
13273
  return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
13267
13274
  "class": "v-select__menu-icon",
13275
+ "color": vTextFieldRef.value?.fieldIconColor,
13268
13276
  "icon": props.menuIcon
13269
13277
  }, null) : undefined]);
13270
13278
  }
@@ -13468,17 +13476,8 @@
13468
13476
  const listHasFocus = vue.shallowRef(false);
13469
13477
  const vMenuRef = vue.ref();
13470
13478
  const vVirtualScrollRef = vue.ref();
13471
- const _menu = useProxiedModel(props, 'menu');
13472
- const menu = vue.computed({
13473
- get: () => _menu.value,
13474
- set: v => {
13475
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13476
- _menu.value = v;
13477
- }
13478
- });
13479
13479
  const selectionIndex = vue.shallowRef(-1);
13480
13480
  const color = vue.computed(() => vTextFieldRef.value?.color);
13481
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
13482
13481
  const {
13483
13482
  items,
13484
13483
  transformIn,
@@ -13515,6 +13514,16 @@
13515
13514
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
13516
13515
  });
13517
13516
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
13517
+ const _menu = useProxiedModel(props, 'menu');
13518
+ const menu = vue.computed({
13519
+ get: () => _menu.value,
13520
+ set: v => {
13521
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13522
+ if (v && menuDisabled.value) return;
13523
+ _menu.value = v;
13524
+ }
13525
+ });
13526
+ const label = vue.computed(() => menu.value ? props.closeText : props.openText);
13518
13527
  const listRef = vue.ref();
13519
13528
  const listEvents = useScrolling(listRef, vTextFieldRef);
13520
13529
  function onClear(e) {
@@ -13864,6 +13873,7 @@
13864
13873
  }
13865
13874
  return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
13866
13875
  "class": "v-autocomplete__menu-icon",
13876
+ "color": vTextFieldRef.value?.fieldIconColor,
13867
13877
  "icon": props.menuIcon,
13868
13878
  "onMousedown": onMousedownMenuIcon,
13869
13879
  "onClick": noop,
@@ -18233,18 +18243,9 @@
18233
18243
  const listHasFocus = vue.shallowRef(false);
18234
18244
  const vMenuRef = vue.ref();
18235
18245
  const vVirtualScrollRef = vue.ref();
18236
- const _menu = useProxiedModel(props, 'menu');
18237
- const menu = vue.computed({
18238
- get: () => _menu.value,
18239
- set: v => {
18240
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
18241
- _menu.value = v;
18242
- }
18243
- });
18244
18246
  const selectionIndex = vue.shallowRef(-1);
18245
18247
  let cleared = false;
18246
18248
  const color = vue.computed(() => vTextFieldRef.value?.color);
18247
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
18248
18249
  const {
18249
18250
  items,
18250
18251
  transformIn,
@@ -18288,6 +18289,27 @@
18288
18289
  const counterValue = vue.computed(() => {
18289
18290
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;
18290
18291
  });
18292
+ const {
18293
+ filteredItems,
18294
+ getMatches
18295
+ } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18296
+ const displayItems = vue.computed(() => {
18297
+ if (props.hideSelected) {
18298
+ return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18299
+ }
18300
+ return filteredItems.value;
18301
+ });
18302
+ const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18303
+ const _menu = useProxiedModel(props, 'menu');
18304
+ const menu = vue.computed({
18305
+ get: () => _menu.value,
18306
+ set: v => {
18307
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
18308
+ if (v && menuDisabled.value) return;
18309
+ _menu.value = v;
18310
+ }
18311
+ });
18312
+ const label = vue.computed(() => menu.value ? props.closeText : props.openText);
18291
18313
  vue.watch(_search, value => {
18292
18314
  if (cleared) {
18293
18315
  // wait for clear to finish, VTextField sets _search to null
@@ -18303,22 +18325,11 @@
18303
18325
  _search.value = value[0]?.title ?? '';
18304
18326
  }
18305
18327
  });
18306
- const {
18307
- filteredItems,
18308
- getMatches
18309
- } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18310
- const displayItems = vue.computed(() => {
18311
- if (props.hideSelected) {
18312
- return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18313
- }
18314
- return filteredItems.value;
18315
- });
18316
18328
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
18317
18329
  const highlightFirst = vue.computed(() => {
18318
18330
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
18319
18331
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
18320
18332
  });
18321
- const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18322
18333
  const listRef = vue.ref();
18323
18334
  const listEvents = useScrolling(listRef, vTextFieldRef);
18324
18335
  function onClear(e) {
@@ -18669,6 +18680,7 @@
18669
18680
  }
18670
18681
  return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
18671
18682
  "class": "v-combobox__menu-icon",
18683
+ "color": vTextFieldRef.value?.fieldIconColor,
18672
18684
  "icon": props.menuIcon,
18673
18685
  "onMousedown": onMousedownMenuIcon,
18674
18686
  "onClick": noop,
@@ -29210,7 +29222,7 @@
29210
29222
  };
29211
29223
  });
29212
29224
  }
29213
- const version$1 = "3.8.0-dev.2025-04-01";
29225
+ const version$1 = "3.8.0-dev.2025-04-03";
29214
29226
  createVuetify$1.version = version$1;
29215
29227
 
29216
29228
  // Vue's inject() can only be used in setup
@@ -29235,7 +29247,7 @@
29235
29247
  ...options
29236
29248
  });
29237
29249
  };
29238
- const version = "3.8.0-dev.2025-04-01";
29250
+ const version = "3.8.0-dev.2025-04-03";
29239
29251
  createVuetify.version = version;
29240
29252
 
29241
29253
  exports.blueprints = index;