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, withModifiers } 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, withModifiers } 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;
@@ -3330,14 +3340,13 @@ const makeScrollProps = propsFactory({
3330
3340
  type: String
3331
3341
  },
3332
3342
  scrollThreshold: {
3333
- type: [String, Number]
3343
+ type: [String, Number],
3344
+ default: 300
3334
3345
  }
3335
3346
  }, 'scroll');
3336
3347
  function useScroll(props) {
3337
3348
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3338
3349
  const {
3339
- thresholdMetCallback,
3340
- scrollThreshold,
3341
3350
  canScroll
3342
3351
  } = args;
3343
3352
  let previousScroll = 0;
@@ -3347,8 +3356,16 @@ function useScroll(props) {
3347
3356
  const currentThreshold = ref(0);
3348
3357
  const isScrollActive = ref(false);
3349
3358
  const isScrollingUp = ref(false);
3350
- const computedScrollThreshold = computed(() => {
3351
- return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3359
+ const scrollThreshold = computed(() => {
3360
+ return Number(props.scrollThreshold);
3361
+ });
3362
+
3363
+ /**
3364
+ * 1: at top
3365
+ * 0: at threshold
3366
+ */
3367
+ const scrollRatio = computed(() => {
3368
+ return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
3352
3369
  });
3353
3370
  const onScroll = () => {
3354
3371
  const targetEl = target.value;
@@ -3356,7 +3373,7 @@ function useScroll(props) {
3356
3373
  previousScroll = currentScroll.value;
3357
3374
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3358
3375
  isScrollingUp.value = currentScroll.value < previousScroll;
3359
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3376
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3360
3377
  };
3361
3378
  watch(isScrollingUp, () => {
3362
3379
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3384,15 +3401,6 @@ function useScroll(props) {
3384
3401
  onBeforeUnmount(() => {
3385
3402
  target.value?.removeEventListener('scroll', onScroll);
3386
3403
  });
3387
- thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3388
- thresholdMet && thresholdMetCallback({
3389
- currentThreshold: currentThreshold.value,
3390
- isScrollingUp: isScrollingUp.value,
3391
- savedScroll
3392
- });
3393
- }, {
3394
- immediate: true
3395
- });
3396
3404
 
3397
3405
  // Do we need this? If yes - seems that
3398
3406
  // there's no need to expose onScroll
@@ -3400,10 +3408,11 @@ function useScroll(props) {
3400
3408
  immediate: true
3401
3409
  });
3402
3410
  return {
3403
- computedScrollThreshold,
3411
+ scrollThreshold,
3404
3412
  currentScroll,
3405
3413
  currentThreshold,
3406
3414
  isScrollActive,
3415
+ scrollRatio,
3407
3416
  // required only for testing
3408
3417
  // probably can be removed
3409
3418
  // later (2 chars chlng)
@@ -3486,15 +3495,14 @@ const VAppBar = genericComponent()({
3486
3495
  });
3487
3496
  const {
3488
3497
  currentScroll,
3489
- currentThreshold,
3490
- computedScrollThreshold,
3491
- isScrollingUp
3498
+ scrollThreshold,
3499
+ isScrollingUp,
3500
+ scrollRatio
3492
3501
  } = useScroll(props, {
3493
3502
  canScroll
3494
3503
  });
3495
- const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3496
- const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3497
- const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3504
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3505
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3498
3506
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3499
3507
  const height = computed(() => {
3500
3508
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3503,15 +3511,12 @@ const VAppBar = genericComponent()({
3503
3511
  return height + extensionHeight;
3504
3512
  });
3505
3513
  function setActive() {
3506
- const val = currentScroll.value;
3507
3514
  if (scrollBehavior.value.hide) {
3508
3515
  if (scrollBehavior.value.inverted) {
3509
- isActive.value = val > computedScrollThreshold.value;
3516
+ isActive.value = currentScroll.value > scrollThreshold.value;
3510
3517
  } else {
3511
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3518
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3512
3519
  }
3513
- } else if (scrollBehavior.value.inverted) {
3514
- isActive.value = currentScroll.value === 0;
3515
3520
  } else {
3516
3521
  isActive.value = true;
3517
3522
  }
@@ -4087,7 +4092,7 @@ const useIcon = props => {
4087
4092
  const icons = inject$1(IconSymbol);
4088
4093
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4089
4094
  const iconData = computed(() => {
4090
- const iconAlias = isRef(props) ? props.value : props.icon;
4095
+ const iconAlias = unref(props);
4091
4096
  if (!iconAlias) return {
4092
4097
  component: VComponentIcon
4093
4098
  };
@@ -4154,8 +4159,6 @@ function useSize(props) {
4154
4159
  });
4155
4160
  }
4156
4161
 
4157
- // Types
4158
-
4159
4162
  const makeVIconProps = propsFactory({
4160
4163
  color: String,
4161
4164
  start: Boolean,
@@ -4176,20 +4179,13 @@ const VIcon = genericComponent()({
4176
4179
  attrs,
4177
4180
  slots
4178
4181
  } = _ref;
4179
- let slotIcon;
4180
- if (slots.default) {
4181
- slotIcon = computed(() => {
4182
- const slot = slots.default?.();
4183
- if (!slot) return;
4184
- return slot.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4185
- });
4186
- }
4182
+ const slotIcon = ref();
4187
4183
  const {
4188
4184
  themeClasses
4189
4185
  } = provideTheme(props);
4190
4186
  const {
4191
4187
  iconData
4192
- } = useIcon(slotIcon || props);
4188
+ } = useIcon(computed(() => slotIcon.value || props.icon));
4193
4189
  const {
4194
4190
  sizeClasses
4195
4191
  } = useSize(props);
@@ -4197,24 +4193,30 @@ const VIcon = genericComponent()({
4197
4193
  textColorClasses,
4198
4194
  textColorStyles
4199
4195
  } = useTextColor(toRef(props, 'color'));
4200
- useRender(() => createVNode(iconData.value.component, {
4201
- "tag": props.tag,
4202
- "icon": iconData.value.icon,
4203
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4204
- 'v-icon--clickable': !!attrs.onClick,
4205
- 'v-icon--start': props.start,
4206
- 'v-icon--end': props.end
4207
- }, props.class],
4208
- "style": [!sizeClasses.value ? {
4209
- fontSize: convertToUnit(props.size),
4210
- height: convertToUnit(props.size),
4211
- width: convertToUnit(props.size)
4212
- } : undefined, textColorStyles.value, props.style],
4213
- "role": attrs.onClick ? 'button' : undefined,
4214
- "aria-hidden": !attrs.onClick
4215
- }, {
4216
- default: () => [slots.default?.()]
4217
- }));
4196
+ useRender(() => {
4197
+ const slotValue = slots.default?.();
4198
+ if (slotValue) {
4199
+ slotIcon.value = slotValue.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4200
+ }
4201
+ return createVNode(iconData.value.component, {
4202
+ "tag": props.tag,
4203
+ "icon": iconData.value.icon,
4204
+ "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4205
+ 'v-icon--clickable': !!attrs.onClick,
4206
+ 'v-icon--start': props.start,
4207
+ 'v-icon--end': props.end
4208
+ }, props.class],
4209
+ "style": [!sizeClasses.value ? {
4210
+ fontSize: convertToUnit(props.size),
4211
+ height: convertToUnit(props.size),
4212
+ width: convertToUnit(props.size)
4213
+ } : undefined, textColorStyles.value, props.style],
4214
+ "role": attrs.onClick ? 'button' : undefined,
4215
+ "aria-hidden": !attrs.onClick
4216
+ }, {
4217
+ default: () => [slotValue]
4218
+ });
4219
+ });
4218
4220
  return {};
4219
4221
  }
4220
4222
  });
@@ -5051,7 +5053,7 @@ const makeVBtnProps = propsFactory({
5051
5053
  ...makeVariantProps({
5052
5054
  variant: 'elevated'
5053
5055
  })
5054
- }, 'VBtn');
5056
+ }, 'v-btn');
5055
5057
  const VBtn = genericComponent()({
5056
5058
  name: 'VBtn',
5057
5059
  directives: {
@@ -5121,6 +5123,11 @@ const VBtn = genericComponent()({
5121
5123
  if (props.value === undefined) return undefined;
5122
5124
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5123
5125
  });
5126
+ function onClick(e) {
5127
+ if (isDisabled.value) return;
5128
+ link.navigate?.(e);
5129
+ group?.toggle();
5130
+ }
5124
5131
  useSelectLink(link, group?.select);
5125
5132
  useRender(() => {
5126
5133
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5143,11 +5150,7 @@ const VBtn = genericComponent()({
5143
5150
  "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5144
5151
  "disabled": isDisabled.value || undefined,
5145
5152
  "href": link.href.value,
5146
- "onClick": e => {
5147
- if (isDisabled.value) return;
5148
- link.navigate?.(e);
5149
- group?.toggle();
5150
- },
5153
+ "onClick": onClick,
5151
5154
  "value": valueAttr.value
5152
5155
  }, {
5153
5156
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
@@ -5213,22 +5216,17 @@ const VBtn = genericComponent()({
5213
5216
 
5214
5217
  const VAppBarNavIcon = genericComponent()({
5215
5218
  name: 'VAppBarNavIcon',
5216
- props: {
5217
- icon: {
5218
- type: IconValue,
5219
- default: '$menu'
5220
- },
5221
- ...makeComponentProps()
5222
- },
5219
+ props: makeVBtnProps({
5220
+ icon: '$menu',
5221
+ variant: 'text'
5222
+ }),
5223
5223
  setup(props, _ref) {
5224
5224
  let {
5225
5225
  slots
5226
5226
  } = _ref;
5227
- useRender(() => createVNode(VBtn, {
5228
- "class": ['v-app-bar-nav-icon', props.class],
5229
- "icon": props.icon,
5230
- "style": props.style
5231
- }, slots));
5227
+ useRender(() => createVNode(VBtn, mergeProps(props, {
5228
+ "class": ['v-app-bar-nav-icon']
5229
+ }), slots));
5232
5230
  return {};
5233
5231
  }
5234
5232
  });
@@ -6431,7 +6429,7 @@ const VTextField = genericComponent()({
6431
6429
  const vInputRef = ref();
6432
6430
  const vFieldRef = ref();
6433
6431
  const inputRef = ref();
6434
- const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
6432
+ const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
6435
6433
  function onFocus() {
6436
6434
  if (inputRef.value !== document.activeElement) {
6437
6435
  inputRef.value?.focus();
@@ -6867,7 +6865,6 @@ const VCheckboxBtn = genericComponent()({
6867
6865
  "class": ['v-checkbox-btn', props.class],
6868
6866
  "style": props.style,
6869
6867
  "type": "checkbox",
6870
- "inline": true,
6871
6868
  "falseIcon": falseIcon.value,
6872
6869
  "trueIcon": trueIcon.value,
6873
6870
  "aria-checked": props.indeterminate ? 'mixed' : undefined
@@ -10366,11 +10363,13 @@ const VSelect = genericComponent()({
10366
10363
  let {
10367
10364
  isSelected
10368
10365
  } = _ref2;
10369
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10366
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10370
10367
  "modelValue": isSelected,
10371
10368
  "ripple": false,
10372
10369
  "tabindex": "-1"
10373
- }, null) : undefined;
10370
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10371
+ "icon": item.props.prependIcon
10372
+ }, null)]);
10374
10373
  }
10375
10374
  });
10376
10375
  }), slots['append-item']?.()]
@@ -10383,6 +10382,10 @@ const VSelect = genericComponent()({
10383
10382
  }
10384
10383
  const slotProps = {
10385
10384
  'onClick:close': onChipClose,
10385
+ onMousedown(e) {
10386
+ e.preventDefault();
10387
+ e.stopPropagation();
10388
+ },
10386
10389
  modelValue: true,
10387
10390
  'onUpdate:modelValue': undefined
10388
10391
  };
@@ -10726,6 +10729,7 @@ const VAutocomplete = genericComponent()({
10726
10729
  isPristine.value = true;
10727
10730
  nextTick(() => isSelecting.value = false);
10728
10731
  } else {
10732
+ if (!props.multiple && !search.value) model.value = [];
10729
10733
  menu.value = false;
10730
10734
  search.value = '';
10731
10735
  }
@@ -10805,11 +10809,13 @@ const VAutocomplete = genericComponent()({
10805
10809
  let {
10806
10810
  isSelected
10807
10811
  } = _ref2;
10808
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10812
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10809
10813
  "modelValue": isSelected,
10810
10814
  "ripple": false,
10811
10815
  "tabindex": "-1"
10812
- }, null) : undefined;
10816
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10817
+ "icon": item.props.prependIcon
10818
+ }, null)]);
10813
10819
  },
10814
10820
  title: () => {
10815
10821
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -10824,6 +10830,10 @@ const VAutocomplete = genericComponent()({
10824
10830
  }
10825
10831
  const slotProps = {
10826
10832
  'onClick:close': onChipClose,
10833
+ onMousedown(e) {
10834
+ e.preventDefault();
10835
+ e.stopPropagation();
10836
+ },
10827
10837
  modelValue: true,
10828
10838
  'onUpdate:modelValue': undefined
10829
10839
  };
@@ -14250,11 +14260,13 @@ const VCombobox = genericComponent()({
14250
14260
  let {
14251
14261
  isSelected
14252
14262
  } = _ref2;
14253
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14263
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14254
14264
  "modelValue": isSelected,
14255
14265
  "ripple": false,
14256
14266
  "tabindex": "-1"
14257
- }, null) : undefined;
14267
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14268
+ "icon": item.props.prependIcon
14269
+ }, null)]);
14258
14270
  },
14259
14271
  title: () => {
14260
14272
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14269,6 +14281,10 @@ const VCombobox = genericComponent()({
14269
14281
  }
14270
14282
  const slotProps = {
14271
14283
  'onClick:close': onChipClose,
14284
+ onMousedown(e) {
14285
+ e.preventDefault();
14286
+ e.stopPropagation();
14287
+ },
14272
14288
  modelValue: true,
14273
14289
  'onUpdate:modelValue': undefined
14274
14290
  };
@@ -14732,6 +14748,7 @@ const VFileInput = genericComponent()({
14732
14748
  const vInputRef = ref();
14733
14749
  const vFieldRef = ref();
14734
14750
  const inputRef = ref();
14751
+ const isActive = computed(() => isFocused.value || props.active);
14735
14752
  function onFocus() {
14736
14753
  if (inputRef.value !== document.activeElement) {
14737
14754
  inputRef.value?.focus();
@@ -14800,7 +14817,7 @@ const VFileInput = genericComponent()({
14800
14817
  "onClick:appendInner": props['onClick:appendInner']
14801
14818
  }, fieldProps, {
14802
14819
  "id": id.value,
14803
- "active": isDirty.value || isFocused.value,
14820
+ "active": isActive.value || isDirty.value,
14804
14821
  "dirty": isDirty.value,
14805
14822
  "disabled": isDisabled.value,
14806
14823
  "focused": isFocused.value,
@@ -15966,7 +15983,6 @@ const VNavigationDrawer = genericComponent()({
15966
15983
  });
15967
15984
  const {
15968
15985
  layoutItemStyles,
15969
- layoutRect,
15970
15986
  layoutItemScrimStyles
15971
15987
  } = useLayoutItem({
15972
15988
  id: props.name,
@@ -15996,12 +16012,6 @@ const VNavigationDrawer = genericComponent()({
15996
16012
  opacity: dragProgress.value * 0.2,
15997
16013
  transition: 'none'
15998
16014
  } : undefined),
15999
- ...(layoutRect.value ? {
16000
- left: convertToUnit(layoutRect.value.left),
16001
- right: convertToUnit(layoutRect.value.right),
16002
- top: convertToUnit(layoutRect.value.top),
16003
- bottom: convertToUnit(layoutRect.value.bottom)
16004
- } : undefined),
16005
16015
  ...layoutItemScrimStyles.value
16006
16016
  }));
16007
16017
  provideDefaults({
@@ -17965,7 +17975,7 @@ const VTextarea = genericComponent()({
17965
17975
  const vFieldRef = ref();
17966
17976
  const controlHeight = ref('');
17967
17977
  const textareaRef = ref();
17968
- const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
17978
+ const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
17969
17979
  function onFocus() {
17970
17980
  if (textareaRef.value !== document.activeElement) {
17971
17981
  textareaRef.value?.focus();
@@ -19656,6 +19666,11 @@ function providePagination(options) {
19656
19666
  if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
19657
19667
  return Math.ceil(itemsLength.value / itemsPerPage.value);
19658
19668
  });
19669
+ watchEffect(() => {
19670
+ if (page.value > pageCount.value) {
19671
+ page.value = pageCount.value;
19672
+ }
19673
+ });
19659
19674
  function setItemsPerPage(value) {
19660
19675
  itemsPerPage.value = value;
19661
19676
  page.value = 1;
@@ -21531,7 +21546,7 @@ function createVuetify$1() {
21531
21546
  date
21532
21547
  };
21533
21548
  }
21534
- const version$1 = "3.2.0";
21549
+ const version$1 = "3.2.2";
21535
21550
  createVuetify$1.version = version$1;
21536
21551
 
21537
21552
  // Vue's inject() can only be used in setup
@@ -21543,7 +21558,7 @@ function inject(key) {
21543
21558
  }
21544
21559
  }
21545
21560
 
21546
- const version = "3.2.0";
21561
+ const version = "3.2.2";
21547
21562
 
21548
21563
  const createVuetify = function () {
21549
21564
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};