@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
  */
@@ -11997,7 +11997,7 @@ const VField = genericComponent()({
11997
11997
  return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
11998
11998
  });
11999
11999
  const iconColor = computed(() => {
12000
- if (!props.iconColor) return undefined;
12000
+ if (!props.iconColor || props.glow && !isFocused.value) return undefined;
12001
12001
  return props.iconColor === true ? color.value : props.iconColor;
12002
12002
  });
12003
12003
  const {
@@ -12195,7 +12195,8 @@ const VField = genericComponent()({
12195
12195
  })])]);
12196
12196
  });
12197
12197
  return {
12198
- controlRef
12198
+ controlRef,
12199
+ fieldIconColor: iconColor
12199
12200
  };
12200
12201
  }
12201
12202
  });
@@ -12545,7 +12546,12 @@ function useVirtual(props, items) {
12545
12546
  }
12546
12547
  function calculateOffset(index) {
12547
12548
  index = clamp(index, 0, items.value.length - 1);
12548
- return offsets[index] || 0;
12549
+ const whole = Math.floor(index);
12550
+ const fraction = index % 1;
12551
+ const next = whole + 1;
12552
+ const wholeOffset = offsets[whole] || 0;
12553
+ const nextOffset = offsets[next] || wholeOffset;
12554
+ return wholeOffset + (nextOffset - wholeOffset) * fraction;
12549
12555
  }
12550
12556
  function calculateIndex(scrollTop) {
12551
12557
  return binaryClosest(offsets, scrollTop);
@@ -12933,14 +12939,6 @@ const VSelect = genericComponent()({
12933
12939
  const vTextFieldRef = ref();
12934
12940
  const vMenuRef = ref();
12935
12941
  const vVirtualScrollRef = ref();
12936
- const _menu = useProxiedModel(props, 'menu');
12937
- const menu = computed({
12938
- get: () => _menu.value,
12939
- set: v => {
12940
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12941
- _menu.value = v;
12942
- }
12943
- });
12944
12942
  const {
12945
12943
  items,
12946
12944
  transformIn,
@@ -12956,7 +12954,6 @@ const VSelect = genericComponent()({
12956
12954
  const form = useForm(props);
12957
12955
  const selectedValues = computed(() => model.value.map(selection => selection.value));
12958
12956
  const isFocused = shallowRef(false);
12959
- const label = computed(() => menu.value ? props.closeText : props.openText);
12960
12957
  let keyboardLookupPrefix = '';
12961
12958
  let keyboardLookupLastTime;
12962
12959
  const displayItems = computed(() => {
@@ -12966,6 +12963,16 @@ const VSelect = genericComponent()({
12966
12963
  return items.value;
12967
12964
  });
12968
12965
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
12966
+ const _menu = useProxiedModel(props, 'menu');
12967
+ const menu = computed({
12968
+ get: () => _menu.value,
12969
+ set: v => {
12970
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12971
+ if (v && menuDisabled.value) return;
12972
+ _menu.value = v;
12973
+ }
12974
+ });
12975
+ const label = computed(() => menu.value ? props.closeText : props.openText);
12969
12976
  const computedMenuProps = computed(() => {
12970
12977
  return {
12971
12978
  ...props.menuProps,
@@ -13261,6 +13268,7 @@ const VSelect = genericComponent()({
13261
13268
  }
13262
13269
  return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
13263
13270
  "class": "v-select__menu-icon",
13271
+ "color": vTextFieldRef.value?.fieldIconColor,
13264
13272
  "icon": props.menuIcon
13265
13273
  }, null) : undefined]);
13266
13274
  }
@@ -13464,17 +13472,8 @@ const VAutocomplete = genericComponent()({
13464
13472
  const listHasFocus = shallowRef(false);
13465
13473
  const vMenuRef = ref();
13466
13474
  const vVirtualScrollRef = ref();
13467
- const _menu = useProxiedModel(props, 'menu');
13468
- const menu = computed({
13469
- get: () => _menu.value,
13470
- set: v => {
13471
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13472
- _menu.value = v;
13473
- }
13474
- });
13475
13475
  const selectionIndex = shallowRef(-1);
13476
13476
  const color = computed(() => vTextFieldRef.value?.color);
13477
- const label = computed(() => menu.value ? props.closeText : props.openText);
13478
13477
  const {
13479
13478
  items,
13480
13479
  transformIn,
@@ -13511,6 +13510,16 @@ const VAutocomplete = genericComponent()({
13511
13510
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
13512
13511
  });
13513
13512
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
13513
+ const _menu = useProxiedModel(props, 'menu');
13514
+ const menu = computed({
13515
+ get: () => _menu.value,
13516
+ set: v => {
13517
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13518
+ if (v && menuDisabled.value) return;
13519
+ _menu.value = v;
13520
+ }
13521
+ });
13522
+ const label = computed(() => menu.value ? props.closeText : props.openText);
13514
13523
  const listRef = ref();
13515
13524
  const listEvents = useScrolling(listRef, vTextFieldRef);
13516
13525
  function onClear(e) {
@@ -13860,6 +13869,7 @@ const VAutocomplete = genericComponent()({
13860
13869
  }
13861
13870
  return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
13862
13871
  "class": "v-autocomplete__menu-icon",
13872
+ "color": vTextFieldRef.value?.fieldIconColor,
13863
13873
  "icon": props.menuIcon,
13864
13874
  "onMousedown": onMousedownMenuIcon,
13865
13875
  "onClick": noop,
@@ -18229,18 +18239,9 @@ const VCombobox = genericComponent()({
18229
18239
  const listHasFocus = shallowRef(false);
18230
18240
  const vMenuRef = ref();
18231
18241
  const vVirtualScrollRef = ref();
18232
- const _menu = useProxiedModel(props, 'menu');
18233
- const menu = computed({
18234
- get: () => _menu.value,
18235
- set: v => {
18236
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
18237
- _menu.value = v;
18238
- }
18239
- });
18240
18242
  const selectionIndex = shallowRef(-1);
18241
18243
  let cleared = false;
18242
18244
  const color = computed(() => vTextFieldRef.value?.color);
18243
- const label = computed(() => menu.value ? props.closeText : props.openText);
18244
18245
  const {
18245
18246
  items,
18246
18247
  transformIn,
@@ -18284,6 +18285,27 @@ const VCombobox = genericComponent()({
18284
18285
  const counterValue = computed(() => {
18285
18286
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;
18286
18287
  });
18288
+ const {
18289
+ filteredItems,
18290
+ getMatches
18291
+ } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18292
+ const displayItems = computed(() => {
18293
+ if (props.hideSelected) {
18294
+ return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18295
+ }
18296
+ return filteredItems.value;
18297
+ });
18298
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18299
+ const _menu = useProxiedModel(props, 'menu');
18300
+ const menu = computed({
18301
+ get: () => _menu.value,
18302
+ set: v => {
18303
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
18304
+ if (v && menuDisabled.value) return;
18305
+ _menu.value = v;
18306
+ }
18307
+ });
18308
+ const label = computed(() => menu.value ? props.closeText : props.openText);
18287
18309
  watch(_search, value => {
18288
18310
  if (cleared) {
18289
18311
  // wait for clear to finish, VTextField sets _search to null
@@ -18299,22 +18321,11 @@ const VCombobox = genericComponent()({
18299
18321
  _search.value = value[0]?.title ?? '';
18300
18322
  }
18301
18323
  });
18302
- const {
18303
- filteredItems,
18304
- getMatches
18305
- } = useFilter(props, items, () => isPristine.value ? '' : search.value);
18306
- const displayItems = computed(() => {
18307
- if (props.hideSelected) {
18308
- return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
18309
- }
18310
- return filteredItems.value;
18311
- });
18312
18324
  const selectedValues = computed(() => model.value.map(selection => selection.value));
18313
18325
  const highlightFirst = computed(() => {
18314
18326
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
18315
18327
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
18316
18328
  });
18317
- const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
18318
18329
  const listRef = ref();
18319
18330
  const listEvents = useScrolling(listRef, vTextFieldRef);
18320
18331
  function onClear(e) {
@@ -18665,6 +18676,7 @@ const VCombobox = genericComponent()({
18665
18676
  }
18666
18677
  return createVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
18667
18678
  "class": "v-combobox__menu-icon",
18679
+ "color": vTextFieldRef.value?.fieldIconColor,
18668
18680
  "icon": props.menuIcon,
18669
18681
  "onMousedown": onMousedownMenuIcon,
18670
18682
  "onClick": noop,
@@ -29206,7 +29218,7 @@ function createVuetify$1() {
29206
29218
  };
29207
29219
  });
29208
29220
  }
29209
- const version$1 = "3.8.0-dev.2025-04-01";
29221
+ const version$1 = "3.8.0-dev.2025-04-03";
29210
29222
  createVuetify$1.version = version$1;
29211
29223
 
29212
29224
  // Vue's inject() can only be used in setup
@@ -29231,7 +29243,7 @@ const createVuetify = function () {
29231
29243
  ...options
29232
29244
  });
29233
29245
  };
29234
- const version = "3.8.0-dev.2025-04-01";
29246
+ const version = "3.8.0-dev.2025-04-03";
29235
29247
  createVuetify.version = version;
29236
29248
 
29237
29249
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };