vuetify 3.2.0 → 3.2.2

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 (68) hide show
  1. package/dist/json/attributes.json +775 -639
  2. package/dist/json/importMap.json +8 -8
  3. package/dist/json/tags.json +35 -1
  4. package/dist/json/web-types.json +1657 -1327
  5. package/dist/vuetify-labs.css +389 -383
  6. package/dist/vuetify-labs.d.ts +419 -89
  7. package/dist/vuetify-labs.esm.js +113 -98
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +112 -97
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +60 -54
  12. package/dist/vuetify.d.ts +522 -192
  13. package/dist/vuetify.esm.js +108 -98
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +107 -97
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +49 -49
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAppBar/VAppBar.mjs +7 -11
  21. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  22. package/lib/components/VAppBar/VAppBarNavIcon.mjs +10 -16
  23. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  24. package/lib/components/VAppBar/index.d.ts +394 -28
  25. package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs +10 -2
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  29. package/lib/components/VBtn/VBtn.mjs +7 -6
  30. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  31. package/lib/components/VCheckbox/VCheckboxBtn.mjs +0 -1
  32. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  33. package/lib/components/VCombobox/VCombobox.mjs +9 -2
  34. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  35. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  36. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  37. package/lib/components/VIcon/VIcon.mjs +28 -29
  38. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  39. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -8
  40. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  41. package/lib/components/VSelect/VSelect.mjs +9 -2
  42. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  43. package/lib/components/VSheet/VSheet.css +6 -0
  44. package/lib/components/VSheet/_variables.scss +1 -1
  45. package/lib/components/VTextField/VTextField.mjs +1 -1
  46. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  47. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  48. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  49. package/lib/components/VTreeview/_mixins.sass +0 -0
  50. package/lib/components/VTreeview/util/filterTreeItems.mjs +0 -0
  51. package/lib/components/index.d.ts +386 -53
  52. package/lib/composables/defaults.mjs +11 -1
  53. package/lib/composables/defaults.mjs.map +1 -1
  54. package/lib/composables/icons.mjs +2 -2
  55. package/lib/composables/icons.mjs.map +1 -1
  56. package/lib/composables/scroll.mjs +16 -17
  57. package/lib/composables/scroll.mjs.map +1 -1
  58. package/lib/entry-bundler.mjs +1 -1
  59. package/lib/framework.mjs +1 -1
  60. package/lib/framework.mjs.map +1 -1
  61. package/lib/index.d.ts +4 -7
  62. package/lib/labs/VDataTable/composables/paginate.mjs +6 -1
  63. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  64. package/lib/locale/el.mjs +0 -0
  65. package/lib/locale/index.mjs +0 -0
  66. package/lib/util/defineComponent.mjs +2 -2
  67. package/lib/util/defineComponent.mjs.map +1 -1
  68. package/package.json +2 -2
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.2.0
2
+ * Vuetify v3.2.2
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, onScopeDispose, effectScope, shallowRef, inject as inject$1, unref, provide, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, onScopeDispose, effectScope, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -1012,7 +1012,7 @@ function provideDefaults(defaults, options) {
1012
1012
  function propIsDefined(vnode, prop) {
1013
1013
  return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1014
1014
  }
1015
- function useDefaults() {
1015
+ function internalUseDefaults() {
1016
1016
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1017
1017
  let name = arguments.length > 1 ? arguments[1] : undefined;
1018
1018
  let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
@@ -1056,6 +1056,16 @@ function useDefaults() {
1056
1056
  provideSubDefaults
1057
1057
  };
1058
1058
  }
1059
+ function useDefaults() {
1060
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1061
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1062
+ const {
1063
+ props: _props,
1064
+ provideSubDefaults
1065
+ } = internalUseDefaults(props, name);
1066
+ provideSubDefaults();
1067
+ return _props;
1068
+ }
1059
1069
 
1060
1070
  // Utils
1061
1071
 
@@ -1083,7 +1093,7 @@ function defineComponent(options) {
1083
1093
  const {
1084
1094
  props: _props,
1085
1095
  provideSubDefaults
1086
- } = useDefaults(props, props._as ?? options.name, defaults);
1096
+ } = internalUseDefaults(props, props._as ?? options.name, defaults);
1087
1097
  const setupBindings = options._setup(_props, ctx);
1088
1098
  provideSubDefaults();
1089
1099
  return setupBindings;
@@ -3326,14 +3336,13 @@ const makeScrollProps = propsFactory({
3326
3336
  type: String
3327
3337
  },
3328
3338
  scrollThreshold: {
3329
- type: [String, Number]
3339
+ type: [String, Number],
3340
+ default: 300
3330
3341
  }
3331
3342
  }, 'scroll');
3332
3343
  function useScroll(props) {
3333
3344
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3334
3345
  const {
3335
- thresholdMetCallback,
3336
- scrollThreshold,
3337
3346
  canScroll
3338
3347
  } = args;
3339
3348
  let previousScroll = 0;
@@ -3343,8 +3352,16 @@ function useScroll(props) {
3343
3352
  const currentThreshold = ref(0);
3344
3353
  const isScrollActive = ref(false);
3345
3354
  const isScrollingUp = ref(false);
3346
- const computedScrollThreshold = computed(() => {
3347
- return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3355
+ const scrollThreshold = computed(() => {
3356
+ return Number(props.scrollThreshold);
3357
+ });
3358
+
3359
+ /**
3360
+ * 1: at top
3361
+ * 0: at threshold
3362
+ */
3363
+ const scrollRatio = computed(() => {
3364
+ return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
3348
3365
  });
3349
3366
  const onScroll = () => {
3350
3367
  const targetEl = target.value;
@@ -3352,7 +3369,7 @@ function useScroll(props) {
3352
3369
  previousScroll = currentScroll.value;
3353
3370
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3354
3371
  isScrollingUp.value = currentScroll.value < previousScroll;
3355
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3372
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3356
3373
  };
3357
3374
  watch(isScrollingUp, () => {
3358
3375
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3380,15 +3397,6 @@ function useScroll(props) {
3380
3397
  onBeforeUnmount(() => {
3381
3398
  target.value?.removeEventListener('scroll', onScroll);
3382
3399
  });
3383
- thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3384
- thresholdMet && thresholdMetCallback({
3385
- currentThreshold: currentThreshold.value,
3386
- isScrollingUp: isScrollingUp.value,
3387
- savedScroll
3388
- });
3389
- }, {
3390
- immediate: true
3391
- });
3392
3400
 
3393
3401
  // Do we need this? If yes - seems that
3394
3402
  // there's no need to expose onScroll
@@ -3396,10 +3404,11 @@ function useScroll(props) {
3396
3404
  immediate: true
3397
3405
  });
3398
3406
  return {
3399
- computedScrollThreshold,
3407
+ scrollThreshold,
3400
3408
  currentScroll,
3401
3409
  currentThreshold,
3402
3410
  isScrollActive,
3411
+ scrollRatio,
3403
3412
  // required only for testing
3404
3413
  // probably can be removed
3405
3414
  // later (2 chars chlng)
@@ -3482,15 +3491,14 @@ const VAppBar = genericComponent()({
3482
3491
  });
3483
3492
  const {
3484
3493
  currentScroll,
3485
- currentThreshold,
3486
- computedScrollThreshold,
3487
- isScrollingUp
3494
+ scrollThreshold,
3495
+ isScrollingUp,
3496
+ scrollRatio
3488
3497
  } = useScroll(props, {
3489
3498
  canScroll
3490
3499
  });
3491
- const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3492
- const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3493
- const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3500
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3501
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3494
3502
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3495
3503
  const height = computed(() => {
3496
3504
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3499,15 +3507,12 @@ const VAppBar = genericComponent()({
3499
3507
  return height + extensionHeight;
3500
3508
  });
3501
3509
  function setActive() {
3502
- const val = currentScroll.value;
3503
3510
  if (scrollBehavior.value.hide) {
3504
3511
  if (scrollBehavior.value.inverted) {
3505
- isActive.value = val > computedScrollThreshold.value;
3512
+ isActive.value = currentScroll.value > scrollThreshold.value;
3506
3513
  } else {
3507
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3514
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3508
3515
  }
3509
- } else if (scrollBehavior.value.inverted) {
3510
- isActive.value = currentScroll.value === 0;
3511
3516
  } else {
3512
3517
  isActive.value = true;
3513
3518
  }
@@ -4083,7 +4088,7 @@ const useIcon = props => {
4083
4088
  const icons = inject$1(IconSymbol);
4084
4089
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4085
4090
  const iconData = computed(() => {
4086
- const iconAlias = isRef(props) ? props.value : props.icon;
4091
+ const iconAlias = unref(props);
4087
4092
  if (!iconAlias) return {
4088
4093
  component: VComponentIcon
4089
4094
  };
@@ -4150,8 +4155,6 @@ function useSize(props) {
4150
4155
  });
4151
4156
  }
4152
4157
 
4153
- // Types
4154
-
4155
4158
  const makeVIconProps = propsFactory({
4156
4159
  color: String,
4157
4160
  start: Boolean,
@@ -4172,20 +4175,13 @@ const VIcon = genericComponent()({
4172
4175
  attrs,
4173
4176
  slots
4174
4177
  } = _ref;
4175
- let slotIcon;
4176
- if (slots.default) {
4177
- slotIcon = computed(() => {
4178
- const slot = slots.default?.();
4179
- if (!slot) return;
4180
- return slot.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4181
- });
4182
- }
4178
+ const slotIcon = ref();
4183
4179
  const {
4184
4180
  themeClasses
4185
4181
  } = provideTheme(props);
4186
4182
  const {
4187
4183
  iconData
4188
- } = useIcon(slotIcon || props);
4184
+ } = useIcon(computed(() => slotIcon.value || props.icon));
4189
4185
  const {
4190
4186
  sizeClasses
4191
4187
  } = useSize(props);
@@ -4193,24 +4189,30 @@ const VIcon = genericComponent()({
4193
4189
  textColorClasses,
4194
4190
  textColorStyles
4195
4191
  } = useTextColor(toRef(props, 'color'));
4196
- useRender(() => createVNode(iconData.value.component, {
4197
- "tag": props.tag,
4198
- "icon": iconData.value.icon,
4199
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4200
- 'v-icon--clickable': !!attrs.onClick,
4201
- 'v-icon--start': props.start,
4202
- 'v-icon--end': props.end
4203
- }, props.class],
4204
- "style": [!sizeClasses.value ? {
4205
- fontSize: convertToUnit(props.size),
4206
- height: convertToUnit(props.size),
4207
- width: convertToUnit(props.size)
4208
- } : undefined, textColorStyles.value, props.style],
4209
- "role": attrs.onClick ? 'button' : undefined,
4210
- "aria-hidden": !attrs.onClick
4211
- }, {
4212
- default: () => [slots.default?.()]
4213
- }));
4192
+ useRender(() => {
4193
+ const slotValue = slots.default?.();
4194
+ if (slotValue) {
4195
+ slotIcon.value = slotValue.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4196
+ }
4197
+ return createVNode(iconData.value.component, {
4198
+ "tag": props.tag,
4199
+ "icon": iconData.value.icon,
4200
+ "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4201
+ 'v-icon--clickable': !!attrs.onClick,
4202
+ 'v-icon--start': props.start,
4203
+ 'v-icon--end': props.end
4204
+ }, props.class],
4205
+ "style": [!sizeClasses.value ? {
4206
+ fontSize: convertToUnit(props.size),
4207
+ height: convertToUnit(props.size),
4208
+ width: convertToUnit(props.size)
4209
+ } : undefined, textColorStyles.value, props.style],
4210
+ "role": attrs.onClick ? 'button' : undefined,
4211
+ "aria-hidden": !attrs.onClick
4212
+ }, {
4213
+ default: () => [slotValue]
4214
+ });
4215
+ });
4214
4216
  return {};
4215
4217
  }
4216
4218
  });
@@ -5047,7 +5049,7 @@ const makeVBtnProps = propsFactory({
5047
5049
  ...makeVariantProps({
5048
5050
  variant: 'elevated'
5049
5051
  })
5050
- }, 'VBtn');
5052
+ }, 'v-btn');
5051
5053
  const VBtn = genericComponent()({
5052
5054
  name: 'VBtn',
5053
5055
  directives: {
@@ -5117,6 +5119,11 @@ const VBtn = genericComponent()({
5117
5119
  if (props.value === undefined) return undefined;
5118
5120
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5119
5121
  });
5122
+ function onClick(e) {
5123
+ if (isDisabled.value) return;
5124
+ link.navigate?.(e);
5125
+ group?.toggle();
5126
+ }
5120
5127
  useSelectLink(link, group?.select);
5121
5128
  useRender(() => {
5122
5129
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5139,11 +5146,7 @@ const VBtn = genericComponent()({
5139
5146
  "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5140
5147
  "disabled": isDisabled.value || undefined,
5141
5148
  "href": link.href.value,
5142
- "onClick": e => {
5143
- if (isDisabled.value) return;
5144
- link.navigate?.(e);
5145
- group?.toggle();
5146
- },
5149
+ "onClick": onClick,
5147
5150
  "value": valueAttr.value
5148
5151
  }, {
5149
5152
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
@@ -5209,22 +5212,17 @@ const VBtn = genericComponent()({
5209
5212
 
5210
5213
  const VAppBarNavIcon = genericComponent()({
5211
5214
  name: 'VAppBarNavIcon',
5212
- props: {
5213
- icon: {
5214
- type: IconValue,
5215
- default: '$menu'
5216
- },
5217
- ...makeComponentProps()
5218
- },
5215
+ props: makeVBtnProps({
5216
+ icon: '$menu',
5217
+ variant: 'text'
5218
+ }),
5219
5219
  setup(props, _ref) {
5220
5220
  let {
5221
5221
  slots
5222
5222
  } = _ref;
5223
- useRender(() => createVNode(VBtn, {
5224
- "class": ['v-app-bar-nav-icon', props.class],
5225
- "icon": props.icon,
5226
- "style": props.style
5227
- }, slots));
5223
+ useRender(() => createVNode(VBtn, mergeProps(props, {
5224
+ "class": ['v-app-bar-nav-icon']
5225
+ }), slots));
5228
5226
  return {};
5229
5227
  }
5230
5228
  });
@@ -6427,7 +6425,7 @@ const VTextField = genericComponent()({
6427
6425
  const vInputRef = ref();
6428
6426
  const vFieldRef = ref();
6429
6427
  const inputRef = ref();
6430
- const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
6428
+ const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
6431
6429
  function onFocus() {
6432
6430
  if (inputRef.value !== document.activeElement) {
6433
6431
  inputRef.value?.focus();
@@ -6863,7 +6861,6 @@ const VCheckboxBtn = genericComponent()({
6863
6861
  "class": ['v-checkbox-btn', props.class],
6864
6862
  "style": props.style,
6865
6863
  "type": "checkbox",
6866
- "inline": true,
6867
6864
  "falseIcon": falseIcon.value,
6868
6865
  "trueIcon": trueIcon.value,
6869
6866
  "aria-checked": props.indeterminate ? 'mixed' : undefined
@@ -10362,11 +10359,13 @@ const VSelect = genericComponent()({
10362
10359
  let {
10363
10360
  isSelected
10364
10361
  } = _ref2;
10365
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10362
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10366
10363
  "modelValue": isSelected,
10367
10364
  "ripple": false,
10368
10365
  "tabindex": "-1"
10369
- }, null) : undefined;
10366
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10367
+ "icon": item.props.prependIcon
10368
+ }, null)]);
10370
10369
  }
10371
10370
  });
10372
10371
  }), slots['append-item']?.()]
@@ -10379,6 +10378,10 @@ const VSelect = genericComponent()({
10379
10378
  }
10380
10379
  const slotProps = {
10381
10380
  'onClick:close': onChipClose,
10381
+ onMousedown(e) {
10382
+ e.preventDefault();
10383
+ e.stopPropagation();
10384
+ },
10382
10385
  modelValue: true,
10383
10386
  'onUpdate:modelValue': undefined
10384
10387
  };
@@ -10722,6 +10725,7 @@ const VAutocomplete = genericComponent()({
10722
10725
  isPristine.value = true;
10723
10726
  nextTick(() => isSelecting.value = false);
10724
10727
  } else {
10728
+ if (!props.multiple && !search.value) model.value = [];
10725
10729
  menu.value = false;
10726
10730
  search.value = '';
10727
10731
  }
@@ -10801,11 +10805,13 @@ const VAutocomplete = genericComponent()({
10801
10805
  let {
10802
10806
  isSelected
10803
10807
  } = _ref2;
10804
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10808
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10805
10809
  "modelValue": isSelected,
10806
10810
  "ripple": false,
10807
10811
  "tabindex": "-1"
10808
- }, null) : undefined;
10812
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10813
+ "icon": item.props.prependIcon
10814
+ }, null)]);
10809
10815
  },
10810
10816
  title: () => {
10811
10817
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -10820,6 +10826,10 @@ const VAutocomplete = genericComponent()({
10820
10826
  }
10821
10827
  const slotProps = {
10822
10828
  'onClick:close': onChipClose,
10829
+ onMousedown(e) {
10830
+ e.preventDefault();
10831
+ e.stopPropagation();
10832
+ },
10823
10833
  modelValue: true,
10824
10834
  'onUpdate:modelValue': undefined
10825
10835
  };
@@ -14246,11 +14256,13 @@ const VCombobox = genericComponent()({
14246
14256
  let {
14247
14257
  isSelected
14248
14258
  } = _ref2;
14249
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14259
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14250
14260
  "modelValue": isSelected,
14251
14261
  "ripple": false,
14252
14262
  "tabindex": "-1"
14253
- }, null) : undefined;
14263
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14264
+ "icon": item.props.prependIcon
14265
+ }, null)]);
14254
14266
  },
14255
14267
  title: () => {
14256
14268
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14265,6 +14277,10 @@ const VCombobox = genericComponent()({
14265
14277
  }
14266
14278
  const slotProps = {
14267
14279
  'onClick:close': onChipClose,
14280
+ onMousedown(e) {
14281
+ e.preventDefault();
14282
+ e.stopPropagation();
14283
+ },
14268
14284
  modelValue: true,
14269
14285
  'onUpdate:modelValue': undefined
14270
14286
  };
@@ -14728,6 +14744,7 @@ const VFileInput = genericComponent()({
14728
14744
  const vInputRef = ref();
14729
14745
  const vFieldRef = ref();
14730
14746
  const inputRef = ref();
14747
+ const isActive = computed(() => isFocused.value || props.active);
14731
14748
  function onFocus() {
14732
14749
  if (inputRef.value !== document.activeElement) {
14733
14750
  inputRef.value?.focus();
@@ -14796,7 +14813,7 @@ const VFileInput = genericComponent()({
14796
14813
  "onClick:appendInner": props['onClick:appendInner']
14797
14814
  }, fieldProps, {
14798
14815
  "id": id.value,
14799
- "active": isDirty.value || isFocused.value,
14816
+ "active": isActive.value || isDirty.value,
14800
14817
  "dirty": isDirty.value,
14801
14818
  "disabled": isDisabled.value,
14802
14819
  "focused": isFocused.value,
@@ -15962,7 +15979,6 @@ const VNavigationDrawer = genericComponent()({
15962
15979
  });
15963
15980
  const {
15964
15981
  layoutItemStyles,
15965
- layoutRect,
15966
15982
  layoutItemScrimStyles
15967
15983
  } = useLayoutItem({
15968
15984
  id: props.name,
@@ -15992,12 +16008,6 @@ const VNavigationDrawer = genericComponent()({
15992
16008
  opacity: dragProgress.value * 0.2,
15993
16009
  transition: 'none'
15994
16010
  } : undefined),
15995
- ...(layoutRect.value ? {
15996
- left: convertToUnit(layoutRect.value.left),
15997
- right: convertToUnit(layoutRect.value.right),
15998
- top: convertToUnit(layoutRect.value.top),
15999
- bottom: convertToUnit(layoutRect.value.bottom)
16000
- } : undefined),
16001
16011
  ...layoutItemScrimStyles.value
16002
16012
  }));
16003
16013
  provideDefaults({
@@ -17961,7 +17971,7 @@ const VTextarea = genericComponent()({
17961
17971
  const vFieldRef = ref();
17962
17972
  const controlHeight = ref('');
17963
17973
  const textareaRef = ref();
17964
- const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
17974
+ const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
17965
17975
  function onFocus() {
17966
17976
  if (textareaRef.value !== document.activeElement) {
17967
17977
  textareaRef.value?.focus();
@@ -19417,7 +19427,7 @@ function createVuetify$1() {
19417
19427
  date
19418
19428
  };
19419
19429
  }
19420
- const version$1 = "3.2.0";
19430
+ const version$1 = "3.2.2";
19421
19431
  createVuetify$1.version = version$1;
19422
19432
 
19423
19433
  // Vue's inject() can only be used in setup
@@ -19437,7 +19447,7 @@ const createVuetify = function () {
19437
19447
  ...options
19438
19448
  });
19439
19449
  };
19440
- const version = "3.2.0";
19450
+ const version = "3.2.2";
19441
19451
  createVuetify.version = version;
19442
19452
 
19443
19453
  export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };