@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
  */
@@ -11732,7 +11732,7 @@ const VField = genericComponent()({
11732
11732
  return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
11733
11733
  });
11734
11734
  const iconColor = computed(() => {
11735
- if (!props.iconColor) return undefined;
11735
+ if (!props.iconColor || props.glow && !isFocused.value) return undefined;
11736
11736
  return props.iconColor === true ? color.value : props.iconColor;
11737
11737
  });
11738
11738
  const {
@@ -11930,7 +11930,8 @@ const VField = genericComponent()({
11930
11930
  })])]);
11931
11931
  });
11932
11932
  return {
11933
- controlRef
11933
+ controlRef,
11934
+ fieldIconColor: iconColor
11934
11935
  };
11935
11936
  }
11936
11937
  });
@@ -12280,7 +12281,12 @@ function useVirtual(props, items) {
12280
12281
  }
12281
12282
  function calculateOffset(index) {
12282
12283
  index = clamp(index, 0, items.value.length - 1);
12283
- return offsets[index] || 0;
12284
+ const whole = Math.floor(index);
12285
+ const fraction = index % 1;
12286
+ const next = whole + 1;
12287
+ const wholeOffset = offsets[whole] || 0;
12288
+ const nextOffset = offsets[next] || wholeOffset;
12289
+ return wholeOffset + (nextOffset - wholeOffset) * fraction;
12284
12290
  }
12285
12291
  function calculateIndex(scrollTop) {
12286
12292
  return binaryClosest(offsets, scrollTop);
@@ -12668,14 +12674,6 @@ const VSelect = genericComponent()({
12668
12674
  const vTextFieldRef = ref();
12669
12675
  const vMenuRef = ref();
12670
12676
  const vVirtualScrollRef = ref();
12671
- const _menu = useProxiedModel(props, 'menu');
12672
- const menu = computed({
12673
- get: () => _menu.value,
12674
- set: v => {
12675
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12676
- _menu.value = v;
12677
- }
12678
- });
12679
12677
  const {
12680
12678
  items,
12681
12679
  transformIn,
@@ -12691,7 +12689,6 @@ const VSelect = genericComponent()({
12691
12689
  const form = useForm(props);
12692
12690
  const selectedValues = computed(() => model.value.map(selection => selection.value));
12693
12691
  const isFocused = shallowRef(false);
12694
- const label = computed(() => menu.value ? props.closeText : props.openText);
12695
12692
  let keyboardLookupPrefix = '';
12696
12693
  let keyboardLookupLastTime;
12697
12694
  const displayItems = computed(() => {
@@ -12701,6 +12698,16 @@ const VSelect = genericComponent()({
12701
12698
  return items.value;
12702
12699
  });
12703
12700
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
12701
+ const _menu = useProxiedModel(props, 'menu');
12702
+ const menu = computed({
12703
+ get: () => _menu.value,
12704
+ set: v => {
12705
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12706
+ if (v && menuDisabled.value) return;
12707
+ _menu.value = v;
12708
+ }
12709
+ });
12710
+ const label = computed(() => menu.value ? props.closeText : props.openText);
12704
12711
  const computedMenuProps = computed(() => {
12705
12712
  return {
12706
12713
  ...props.menuProps,
@@ -12996,6 +13003,7 @@ const VSelect = genericComponent()({
12996
13003
  }
12997
13004
  return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
12998
13005
  "class": "v-select__menu-icon",
13006
+ "color": vTextFieldRef.value?.fieldIconColor,
12999
13007
  "icon": props.menuIcon
13000
13008
  }, null) : undefined]);
13001
13009
  }
@@ -13199,17 +13207,8 @@ const VAutocomplete = genericComponent()({
13199
13207
  const listHasFocus = shallowRef(false);
13200
13208
  const vMenuRef = ref();
13201
13209
  const vVirtualScrollRef = ref();
13202
- const _menu = useProxiedModel(props, 'menu');
13203
- const menu = computed({
13204
- get: () => _menu.value,
13205
- set: v => {
13206
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13207
- _menu.value = v;
13208
- }
13209
- });
13210
13210
  const selectionIndex = shallowRef(-1);
13211
13211
  const color = computed(() => vTextFieldRef.value?.color);
13212
- const label = computed(() => menu.value ? props.closeText : props.openText);
13213
13212
  const {
13214
13213
  items,
13215
13214
  transformIn,
@@ -13246,6 +13245,16 @@ const VAutocomplete = genericComponent()({
13246
13245
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
13247
13246
  });
13248
13247
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
13248
+ const _menu = useProxiedModel(props, 'menu');
13249
+ const menu = computed({
13250
+ get: () => _menu.value,
13251
+ set: v => {
13252
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13253
+ if (v && menuDisabled.value) return;
13254
+ _menu.value = v;
13255
+ }
13256
+ });
13257
+ const label = computed(() => menu.value ? props.closeText : props.openText);
13249
13258
  const listRef = ref();
13250
13259
  const listEvents = useScrolling(listRef, vTextFieldRef);
13251
13260
  function onClear(e) {
@@ -13595,6 +13604,7 @@ const VAutocomplete = genericComponent()({
13595
13604
  }
13596
13605
  return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
13597
13606
  "class": "v-autocomplete__menu-icon",
13607
+ "color": vTextFieldRef.value?.fieldIconColor,
13598
13608
  "icon": props.menuIcon,
13599
13609
  "onMousedown": onMousedownMenuIcon,
13600
13610
  "onClick": noop,
@@ -17964,18 +17974,9 @@ const VCombobox = genericComponent()({
17964
17974
  const listHasFocus = shallowRef(false);
17965
17975
  const vMenuRef = ref();
17966
17976
  const vVirtualScrollRef = ref();
17967
- const _menu = useProxiedModel(props, 'menu');
17968
- const menu = computed({
17969
- get: () => _menu.value,
17970
- set: v => {
17971
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
17972
- _menu.value = v;
17973
- }
17974
- });
17975
17977
  const selectionIndex = shallowRef(-1);
17976
17978
  let cleared = false;
17977
17979
  const color = computed(() => vTextFieldRef.value?.color);
17978
- const label = computed(() => menu.value ? props.closeText : props.openText);
17979
17980
  const {
17980
17981
  items,
17981
17982
  transformIn,
@@ -18019,6 +18020,27 @@ const VCombobox = genericComponent()({
18019
18020
  const counterValue = computed(() => {
18020
18021
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;
18021
18022
  });
18023
+ const {
18024
+ filteredItems,
18025
+ getMatches
18026
+ } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18027
+ const displayItems = computed(() => {
18028
+ if (props.hideSelected) {
18029
+ return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18030
+ }
18031
+ return filteredItems.value;
18032
+ });
18033
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18034
+ const _menu = useProxiedModel(props, 'menu');
18035
+ const menu = computed({
18036
+ get: () => _menu.value,
18037
+ set: v => {
18038
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
18039
+ if (v && menuDisabled.value) return;
18040
+ _menu.value = v;
18041
+ }
18042
+ });
18043
+ const label = computed(() => menu.value ? props.closeText : props.openText);
18022
18044
  watch(_search, value => {
18023
18045
  if (cleared) {
18024
18046
  // wait for clear to finish, VTextField sets _search to null
@@ -18034,22 +18056,11 @@ const VCombobox = genericComponent()({
18034
18056
  _search.value = value[0]?.title ?? '';
18035
18057
  }
18036
18058
  });
18037
- const {
18038
- filteredItems,
18039
- getMatches
18040
- } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18041
- const displayItems = computed(() => {
18042
- if (props.hideSelected) {
18043
- return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18044
- }
18045
- return filteredItems.value;
18046
- });
18047
18059
  const selectedValues = computed(() => model.value.map(selection => selection.value));
18048
18060
  const highlightFirst = computed(() => {
18049
18061
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
18050
18062
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
18051
18063
  });
18052
- const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18053
18064
  const listRef = ref();
18054
18065
  const listEvents = useScrolling(listRef, vTextFieldRef);
18055
18066
  function onClear(e) {
@@ -18400,6 +18411,7 @@ const VCombobox = genericComponent()({
18400
18411
  }
18401
18412
  return createVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
18402
18413
  "class": "v-combobox__menu-icon",
18414
+ "color": vTextFieldRef.value?.fieldIconColor,
18403
18415
  "icon": props.menuIcon,
18404
18416
  "onMousedown": onMousedownMenuIcon,
18405
18417
  "onClick": noop,
@@ -31530,7 +31542,7 @@ function createVuetify$1() {
31530
31542
  };
31531
31543
  });
31532
31544
  }
31533
- const version$1 = "3.8.0-dev.2025-04-01";
31545
+ const version$1 = "3.8.0-dev.2025-04-03";
31534
31546
  createVuetify$1.version = version$1;
31535
31547
 
31536
31548
  // Vue's inject() can only be used in setup
@@ -31815,7 +31827,7 @@ var index = /*#__PURE__*/Object.freeze({
31815
31827
 
31816
31828
  /* eslint-disable local-rules/sort-imports */
31817
31829
 
31818
- const version = "3.8.0-dev.2025-04-01";
31830
+ const version = "3.8.0-dev.2025-04-03";
31819
31831
 
31820
31832
  /* eslint-disable local-rules/sort-imports */
31821
31833