@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
@@ -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
  */
@@ -11736,7 +11736,7 @@
11736
11736
  return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
11737
11737
  });
11738
11738
  const iconColor = vue.computed(() => {
11739
- if (!props.iconColor) return undefined;
11739
+ if (!props.iconColor || props.glow && !isFocused.value) return undefined;
11740
11740
  return props.iconColor === true ? color.value : props.iconColor;
11741
11741
  });
11742
11742
  const {
@@ -11934,7 +11934,8 @@
11934
11934
  })])]);
11935
11935
  });
11936
11936
  return {
11937
- controlRef
11937
+ controlRef,
11938
+ fieldIconColor: iconColor
11938
11939
  };
11939
11940
  }
11940
11941
  });
@@ -12284,7 +12285,12 @@
12284
12285
  }
12285
12286
  function calculateOffset(index) {
12286
12287
  index = clamp(index, 0, items.value.length - 1);
12287
- return offsets[index] || 0;
12288
+ const whole = Math.floor(index);
12289
+ const fraction = index % 1;
12290
+ const next = whole + 1;
12291
+ const wholeOffset = offsets[whole] || 0;
12292
+ const nextOffset = offsets[next] || wholeOffset;
12293
+ return wholeOffset + (nextOffset - wholeOffset) * fraction;
12288
12294
  }
12289
12295
  function calculateIndex(scrollTop) {
12290
12296
  return binaryClosest(offsets, scrollTop);
@@ -12672,14 +12678,6 @@
12672
12678
  const vTextFieldRef = vue.ref();
12673
12679
  const vMenuRef = vue.ref();
12674
12680
  const vVirtualScrollRef = vue.ref();
12675
- const _menu = useProxiedModel(props, 'menu');
12676
- const menu = vue.computed({
12677
- get: () => _menu.value,
12678
- set: v => {
12679
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12680
- _menu.value = v;
12681
- }
12682
- });
12683
12681
  const {
12684
12682
  items,
12685
12683
  transformIn,
@@ -12695,7 +12693,6 @@
12695
12693
  const form = useForm(props);
12696
12694
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
12697
12695
  const isFocused = vue.shallowRef(false);
12698
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
12699
12696
  let keyboardLookupPrefix = '';
12700
12697
  let keyboardLookupLastTime;
12701
12698
  const displayItems = vue.computed(() => {
@@ -12705,6 +12702,16 @@
12705
12702
  return items.value;
12706
12703
  });
12707
12704
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
12705
+ const _menu = useProxiedModel(props, 'menu');
12706
+ const menu = vue.computed({
12707
+ get: () => _menu.value,
12708
+ set: v => {
12709
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12710
+ if (v && menuDisabled.value) return;
12711
+ _menu.value = v;
12712
+ }
12713
+ });
12714
+ const label = vue.computed(() => menu.value ? props.closeText : props.openText);
12708
12715
  const computedMenuProps = vue.computed(() => {
12709
12716
  return {
12710
12717
  ...props.menuProps,
@@ -13000,6 +13007,7 @@
13000
13007
  }
13001
13008
  return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
13002
13009
  "class": "v-select__menu-icon",
13010
+ "color": vTextFieldRef.value?.fieldIconColor,
13003
13011
  "icon": props.menuIcon
13004
13012
  }, null) : undefined]);
13005
13013
  }
@@ -13203,17 +13211,8 @@
13203
13211
  const listHasFocus = vue.shallowRef(false);
13204
13212
  const vMenuRef = vue.ref();
13205
13213
  const vVirtualScrollRef = vue.ref();
13206
- const _menu = useProxiedModel(props, 'menu');
13207
- const menu = vue.computed({
13208
- get: () => _menu.value,
13209
- set: v => {
13210
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13211
- _menu.value = v;
13212
- }
13213
- });
13214
13214
  const selectionIndex = vue.shallowRef(-1);
13215
13215
  const color = vue.computed(() => vTextFieldRef.value?.color);
13216
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
13217
13216
  const {
13218
13217
  items,
13219
13218
  transformIn,
@@ -13250,6 +13249,16 @@
13250
13249
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
13251
13250
  });
13252
13251
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
13252
+ const _menu = useProxiedModel(props, 'menu');
13253
+ const menu = vue.computed({
13254
+ get: () => _menu.value,
13255
+ set: v => {
13256
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13257
+ if (v && menuDisabled.value) return;
13258
+ _menu.value = v;
13259
+ }
13260
+ });
13261
+ const label = vue.computed(() => menu.value ? props.closeText : props.openText);
13253
13262
  const listRef = vue.ref();
13254
13263
  const listEvents = useScrolling(listRef, vTextFieldRef);
13255
13264
  function onClear(e) {
@@ -13599,6 +13608,7 @@
13599
13608
  }
13600
13609
  return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
13601
13610
  "class": "v-autocomplete__menu-icon",
13611
+ "color": vTextFieldRef.value?.fieldIconColor,
13602
13612
  "icon": props.menuIcon,
13603
13613
  "onMousedown": onMousedownMenuIcon,
13604
13614
  "onClick": noop,
@@ -17968,18 +17978,9 @@
17968
17978
  const listHasFocus = vue.shallowRef(false);
17969
17979
  const vMenuRef = vue.ref();
17970
17980
  const vVirtualScrollRef = vue.ref();
17971
- const _menu = useProxiedModel(props, 'menu');
17972
- const menu = vue.computed({
17973
- get: () => _menu.value,
17974
- set: v => {
17975
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
17976
- _menu.value = v;
17977
- }
17978
- });
17979
17981
  const selectionIndex = vue.shallowRef(-1);
17980
17982
  let cleared = false;
17981
17983
  const color = vue.computed(() => vTextFieldRef.value?.color);
17982
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
17983
17984
  const {
17984
17985
  items,
17985
17986
  transformIn,
@@ -18023,6 +18024,27 @@
18023
18024
  const counterValue = vue.computed(() => {
18024
18025
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;
18025
18026
  });
18027
+ const {
18028
+ filteredItems,
18029
+ getMatches
18030
+ } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18031
+ const displayItems = vue.computed(() => {
18032
+ if (props.hideSelected) {
18033
+ return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18034
+ }
18035
+ return filteredItems.value;
18036
+ });
18037
+ const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18038
+ const _menu = useProxiedModel(props, 'menu');
18039
+ const menu = vue.computed({
18040
+ get: () => _menu.value,
18041
+ set: v => {
18042
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
18043
+ if (v && menuDisabled.value) return;
18044
+ _menu.value = v;
18045
+ }
18046
+ });
18047
+ const label = vue.computed(() => menu.value ? props.closeText : props.openText);
18026
18048
  vue.watch(_search, value => {
18027
18049
  if (cleared) {
18028
18050
  // wait for clear to finish, VTextField sets _search to null
@@ -18038,22 +18060,11 @@
18038
18060
  _search.value = value[0]?.title ?? '';
18039
18061
  }
18040
18062
  });
18041
- const {
18042
- filteredItems,
18043
- getMatches
18044
- } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18045
- const displayItems = vue.computed(() => {
18046
- if (props.hideSelected) {
18047
- return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18048
- }
18049
- return filteredItems.value;
18050
- });
18051
18063
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
18052
18064
  const highlightFirst = vue.computed(() => {
18053
18065
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
18054
18066
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
18055
18067
  });
18056
- const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18057
18068
  const listRef = vue.ref();
18058
18069
  const listEvents = useScrolling(listRef, vTextFieldRef);
18059
18070
  function onClear(e) {
@@ -18404,6 +18415,7 @@
18404
18415
  }
18405
18416
  return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
18406
18417
  "class": "v-combobox__menu-icon",
18418
+ "color": vTextFieldRef.value?.fieldIconColor,
18407
18419
  "icon": props.menuIcon,
18408
18420
  "onMousedown": onMousedownMenuIcon,
18409
18421
  "onClick": noop,
@@ -31534,7 +31546,7 @@
31534
31546
  };
31535
31547
  });
31536
31548
  }
31537
- const version$1 = "3.8.0-dev.2025-04-01";
31549
+ const version$1 = "3.8.0-dev.2025-04-03";
31538
31550
  createVuetify$1.version = version$1;
31539
31551
 
31540
31552
  // Vue's inject() can only be used in setup
@@ -31819,7 +31831,7 @@
31819
31831
 
31820
31832
  /* eslint-disable local-rules/sort-imports */
31821
31833
 
31822
- const version = "3.8.0-dev.2025-04-01";
31834
+ const version = "3.8.0-dev.2025-04-03";
31823
31835
 
31824
31836
  /* eslint-disable local-rules/sort-imports */
31825
31837