vuetify 3.2.1 → 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 (64) hide show
  1. package/dist/json/attributes.json +775 -639
  2. package/dist/json/importMap.json +16 -16
  3. package/dist/json/tags.json +35 -1
  4. package/dist/json/web-types.json +1657 -1327
  5. package/dist/vuetify-labs.css +131 -125
  6. package/dist/vuetify-labs.d.ts +419 -86
  7. package/dist/vuetify-labs.esm.js +100 -95
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +100 -95
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +53 -47
  12. package/dist/vuetify.d.ts +524 -191
  13. package/dist/vuetify.esm.js +95 -95
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +95 -95
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +46 -48
  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/icons.mjs +2 -2
  53. package/lib/composables/icons.mjs.map +1 -1
  54. package/lib/composables/scroll.mjs +16 -17
  55. package/lib/composables/scroll.mjs.map +1 -1
  56. package/lib/entry-bundler.mjs +1 -1
  57. package/lib/framework.mjs +1 -1
  58. package/lib/framework.mjs.map +1 -1
  59. package/lib/index.d.ts +5 -5
  60. package/lib/labs/VDataTable/composables/paginate.mjs +6 -1
  61. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  62. package/lib/locale/el.mjs +0 -0
  63. package/lib/locale/index.mjs +0 -0
  64. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.2.1
2
+ * Vuetify v3.2.2
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -3336,14 +3336,13 @@ const makeScrollProps = propsFactory({
3336
3336
  type: String
3337
3337
  },
3338
3338
  scrollThreshold: {
3339
- type: [String, Number]
3339
+ type: [String, Number],
3340
+ default: 300
3340
3341
  }
3341
3342
  }, 'scroll');
3342
3343
  function useScroll(props) {
3343
3344
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3344
3345
  const {
3345
- thresholdMetCallback,
3346
- scrollThreshold,
3347
3346
  canScroll
3348
3347
  } = args;
3349
3348
  let previousScroll = 0;
@@ -3353,8 +3352,16 @@ function useScroll(props) {
3353
3352
  const currentThreshold = ref(0);
3354
3353
  const isScrollActive = ref(false);
3355
3354
  const isScrollingUp = ref(false);
3356
- const computedScrollThreshold = computed(() => {
3357
- 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);
3358
3365
  });
3359
3366
  const onScroll = () => {
3360
3367
  const targetEl = target.value;
@@ -3362,7 +3369,7 @@ function useScroll(props) {
3362
3369
  previousScroll = currentScroll.value;
3363
3370
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3364
3371
  isScrollingUp.value = currentScroll.value < previousScroll;
3365
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3372
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3366
3373
  };
3367
3374
  watch(isScrollingUp, () => {
3368
3375
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3390,15 +3397,6 @@ function useScroll(props) {
3390
3397
  onBeforeUnmount(() => {
3391
3398
  target.value?.removeEventListener('scroll', onScroll);
3392
3399
  });
3393
- thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3394
- thresholdMet && thresholdMetCallback({
3395
- currentThreshold: currentThreshold.value,
3396
- isScrollingUp: isScrollingUp.value,
3397
- savedScroll
3398
- });
3399
- }, {
3400
- immediate: true
3401
- });
3402
3400
 
3403
3401
  // Do we need this? If yes - seems that
3404
3402
  // there's no need to expose onScroll
@@ -3406,10 +3404,11 @@ function useScroll(props) {
3406
3404
  immediate: true
3407
3405
  });
3408
3406
  return {
3409
- computedScrollThreshold,
3407
+ scrollThreshold,
3410
3408
  currentScroll,
3411
3409
  currentThreshold,
3412
3410
  isScrollActive,
3411
+ scrollRatio,
3413
3412
  // required only for testing
3414
3413
  // probably can be removed
3415
3414
  // later (2 chars chlng)
@@ -3492,15 +3491,14 @@ const VAppBar = genericComponent()({
3492
3491
  });
3493
3492
  const {
3494
3493
  currentScroll,
3495
- currentThreshold,
3496
- computedScrollThreshold,
3497
- isScrollingUp
3494
+ scrollThreshold,
3495
+ isScrollingUp,
3496
+ scrollRatio
3498
3497
  } = useScroll(props, {
3499
3498
  canScroll
3500
3499
  });
3501
- const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3502
- const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3503
- 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));
3504
3502
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3505
3503
  const height = computed(() => {
3506
3504
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3509,15 +3507,12 @@ const VAppBar = genericComponent()({
3509
3507
  return height + extensionHeight;
3510
3508
  });
3511
3509
  function setActive() {
3512
- const val = currentScroll.value;
3513
3510
  if (scrollBehavior.value.hide) {
3514
3511
  if (scrollBehavior.value.inverted) {
3515
- isActive.value = val > computedScrollThreshold.value;
3512
+ isActive.value = currentScroll.value > scrollThreshold.value;
3516
3513
  } else {
3517
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3514
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3518
3515
  }
3519
- } else if (scrollBehavior.value.inverted) {
3520
- isActive.value = currentScroll.value === 0;
3521
3516
  } else {
3522
3517
  isActive.value = true;
3523
3518
  }
@@ -4093,7 +4088,7 @@ const useIcon = props => {
4093
4088
  const icons = inject$1(IconSymbol);
4094
4089
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4095
4090
  const iconData = computed(() => {
4096
- const iconAlias = isRef(props) ? props.value : props.icon;
4091
+ const iconAlias = unref(props);
4097
4092
  if (!iconAlias) return {
4098
4093
  component: VComponentIcon
4099
4094
  };
@@ -4160,8 +4155,6 @@ function useSize(props) {
4160
4155
  });
4161
4156
  }
4162
4157
 
4163
- // Types
4164
-
4165
4158
  const makeVIconProps = propsFactory({
4166
4159
  color: String,
4167
4160
  start: Boolean,
@@ -4182,20 +4175,13 @@ const VIcon = genericComponent()({
4182
4175
  attrs,
4183
4176
  slots
4184
4177
  } = _ref;
4185
- let slotIcon;
4186
- if (slots.default) {
4187
- slotIcon = computed(() => {
4188
- const slot = slots.default?.();
4189
- if (!slot) return;
4190
- return slot.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4191
- });
4192
- }
4178
+ const slotIcon = ref();
4193
4179
  const {
4194
4180
  themeClasses
4195
4181
  } = provideTheme(props);
4196
4182
  const {
4197
4183
  iconData
4198
- } = useIcon(slotIcon || props);
4184
+ } = useIcon(computed(() => slotIcon.value || props.icon));
4199
4185
  const {
4200
4186
  sizeClasses
4201
4187
  } = useSize(props);
@@ -4203,24 +4189,30 @@ const VIcon = genericComponent()({
4203
4189
  textColorClasses,
4204
4190
  textColorStyles
4205
4191
  } = useTextColor(toRef(props, 'color'));
4206
- useRender(() => createVNode(iconData.value.component, {
4207
- "tag": props.tag,
4208
- "icon": iconData.value.icon,
4209
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4210
- 'v-icon--clickable': !!attrs.onClick,
4211
- 'v-icon--start': props.start,
4212
- 'v-icon--end': props.end
4213
- }, props.class],
4214
- "style": [!sizeClasses.value ? {
4215
- fontSize: convertToUnit(props.size),
4216
- height: convertToUnit(props.size),
4217
- width: convertToUnit(props.size)
4218
- } : undefined, textColorStyles.value, props.style],
4219
- "role": attrs.onClick ? 'button' : undefined,
4220
- "aria-hidden": !attrs.onClick
4221
- }, {
4222
- default: () => [slots.default?.()]
4223
- }));
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
+ });
4224
4216
  return {};
4225
4217
  }
4226
4218
  });
@@ -5057,7 +5049,7 @@ const makeVBtnProps = propsFactory({
5057
5049
  ...makeVariantProps({
5058
5050
  variant: 'elevated'
5059
5051
  })
5060
- }, 'VBtn');
5052
+ }, 'v-btn');
5061
5053
  const VBtn = genericComponent()({
5062
5054
  name: 'VBtn',
5063
5055
  directives: {
@@ -5127,6 +5119,11 @@ const VBtn = genericComponent()({
5127
5119
  if (props.value === undefined) return undefined;
5128
5120
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5129
5121
  });
5122
+ function onClick(e) {
5123
+ if (isDisabled.value) return;
5124
+ link.navigate?.(e);
5125
+ group?.toggle();
5126
+ }
5130
5127
  useSelectLink(link, group?.select);
5131
5128
  useRender(() => {
5132
5129
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5149,11 +5146,7 @@ const VBtn = genericComponent()({
5149
5146
  "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5150
5147
  "disabled": isDisabled.value || undefined,
5151
5148
  "href": link.href.value,
5152
- "onClick": e => {
5153
- if (isDisabled.value) return;
5154
- link.navigate?.(e);
5155
- group?.toggle();
5156
- },
5149
+ "onClick": onClick,
5157
5150
  "value": valueAttr.value
5158
5151
  }, {
5159
5152
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
@@ -5219,22 +5212,17 @@ const VBtn = genericComponent()({
5219
5212
 
5220
5213
  const VAppBarNavIcon = genericComponent()({
5221
5214
  name: 'VAppBarNavIcon',
5222
- props: {
5223
- icon: {
5224
- type: IconValue,
5225
- default: '$menu'
5226
- },
5227
- ...makeComponentProps()
5228
- },
5215
+ props: makeVBtnProps({
5216
+ icon: '$menu',
5217
+ variant: 'text'
5218
+ }),
5229
5219
  setup(props, _ref) {
5230
5220
  let {
5231
5221
  slots
5232
5222
  } = _ref;
5233
- useRender(() => createVNode(VBtn, {
5234
- "class": ['v-app-bar-nav-icon', props.class],
5235
- "icon": props.icon,
5236
- "style": props.style
5237
- }, slots));
5223
+ useRender(() => createVNode(VBtn, mergeProps(props, {
5224
+ "class": ['v-app-bar-nav-icon']
5225
+ }), slots));
5238
5226
  return {};
5239
5227
  }
5240
5228
  });
@@ -6437,7 +6425,7 @@ const VTextField = genericComponent()({
6437
6425
  const vInputRef = ref();
6438
6426
  const vFieldRef = ref();
6439
6427
  const inputRef = ref();
6440
- 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);
6441
6429
  function onFocus() {
6442
6430
  if (inputRef.value !== document.activeElement) {
6443
6431
  inputRef.value?.focus();
@@ -6873,7 +6861,6 @@ const VCheckboxBtn = genericComponent()({
6873
6861
  "class": ['v-checkbox-btn', props.class],
6874
6862
  "style": props.style,
6875
6863
  "type": "checkbox",
6876
- "inline": true,
6877
6864
  "falseIcon": falseIcon.value,
6878
6865
  "trueIcon": trueIcon.value,
6879
6866
  "aria-checked": props.indeterminate ? 'mixed' : undefined
@@ -10372,11 +10359,13 @@ const VSelect = genericComponent()({
10372
10359
  let {
10373
10360
  isSelected
10374
10361
  } = _ref2;
10375
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10362
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10376
10363
  "modelValue": isSelected,
10377
10364
  "ripple": false,
10378
10365
  "tabindex": "-1"
10379
- }, null) : undefined;
10366
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10367
+ "icon": item.props.prependIcon
10368
+ }, null)]);
10380
10369
  }
10381
10370
  });
10382
10371
  }), slots['append-item']?.()]
@@ -10389,6 +10378,10 @@ const VSelect = genericComponent()({
10389
10378
  }
10390
10379
  const slotProps = {
10391
10380
  'onClick:close': onChipClose,
10381
+ onMousedown(e) {
10382
+ e.preventDefault();
10383
+ e.stopPropagation();
10384
+ },
10392
10385
  modelValue: true,
10393
10386
  'onUpdate:modelValue': undefined
10394
10387
  };
@@ -10732,6 +10725,7 @@ const VAutocomplete = genericComponent()({
10732
10725
  isPristine.value = true;
10733
10726
  nextTick(() => isSelecting.value = false);
10734
10727
  } else {
10728
+ if (!props.multiple && !search.value) model.value = [];
10735
10729
  menu.value = false;
10736
10730
  search.value = '';
10737
10731
  }
@@ -10811,11 +10805,13 @@ const VAutocomplete = genericComponent()({
10811
10805
  let {
10812
10806
  isSelected
10813
10807
  } = _ref2;
10814
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10808
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10815
10809
  "modelValue": isSelected,
10816
10810
  "ripple": false,
10817
10811
  "tabindex": "-1"
10818
- }, null) : undefined;
10812
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10813
+ "icon": item.props.prependIcon
10814
+ }, null)]);
10819
10815
  },
10820
10816
  title: () => {
10821
10817
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -10830,6 +10826,10 @@ const VAutocomplete = genericComponent()({
10830
10826
  }
10831
10827
  const slotProps = {
10832
10828
  'onClick:close': onChipClose,
10829
+ onMousedown(e) {
10830
+ e.preventDefault();
10831
+ e.stopPropagation();
10832
+ },
10833
10833
  modelValue: true,
10834
10834
  'onUpdate:modelValue': undefined
10835
10835
  };
@@ -14256,11 +14256,13 @@ const VCombobox = genericComponent()({
14256
14256
  let {
14257
14257
  isSelected
14258
14258
  } = _ref2;
14259
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14259
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14260
14260
  "modelValue": isSelected,
14261
14261
  "ripple": false,
14262
14262
  "tabindex": "-1"
14263
- }, null) : undefined;
14263
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14264
+ "icon": item.props.prependIcon
14265
+ }, null)]);
14264
14266
  },
14265
14267
  title: () => {
14266
14268
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14275,6 +14277,10 @@ const VCombobox = genericComponent()({
14275
14277
  }
14276
14278
  const slotProps = {
14277
14279
  'onClick:close': onChipClose,
14280
+ onMousedown(e) {
14281
+ e.preventDefault();
14282
+ e.stopPropagation();
14283
+ },
14278
14284
  modelValue: true,
14279
14285
  'onUpdate:modelValue': undefined
14280
14286
  };
@@ -14738,6 +14744,7 @@ const VFileInput = genericComponent()({
14738
14744
  const vInputRef = ref();
14739
14745
  const vFieldRef = ref();
14740
14746
  const inputRef = ref();
14747
+ const isActive = computed(() => isFocused.value || props.active);
14741
14748
  function onFocus() {
14742
14749
  if (inputRef.value !== document.activeElement) {
14743
14750
  inputRef.value?.focus();
@@ -14806,7 +14813,7 @@ const VFileInput = genericComponent()({
14806
14813
  "onClick:appendInner": props['onClick:appendInner']
14807
14814
  }, fieldProps, {
14808
14815
  "id": id.value,
14809
- "active": isDirty.value || isFocused.value,
14816
+ "active": isActive.value || isDirty.value,
14810
14817
  "dirty": isDirty.value,
14811
14818
  "disabled": isDisabled.value,
14812
14819
  "focused": isFocused.value,
@@ -15972,7 +15979,6 @@ const VNavigationDrawer = genericComponent()({
15972
15979
  });
15973
15980
  const {
15974
15981
  layoutItemStyles,
15975
- layoutRect,
15976
15982
  layoutItemScrimStyles
15977
15983
  } = useLayoutItem({
15978
15984
  id: props.name,
@@ -16002,12 +16008,6 @@ const VNavigationDrawer = genericComponent()({
16002
16008
  opacity: dragProgress.value * 0.2,
16003
16009
  transition: 'none'
16004
16010
  } : undefined),
16005
- ...(layoutRect.value ? {
16006
- left: convertToUnit(layoutRect.value.left),
16007
- right: convertToUnit(layoutRect.value.right),
16008
- top: convertToUnit(layoutRect.value.top),
16009
- bottom: convertToUnit(layoutRect.value.bottom)
16010
- } : undefined),
16011
16011
  ...layoutItemScrimStyles.value
16012
16012
  }));
16013
16013
  provideDefaults({
@@ -17971,7 +17971,7 @@ const VTextarea = genericComponent()({
17971
17971
  const vFieldRef = ref();
17972
17972
  const controlHeight = ref('');
17973
17973
  const textareaRef = ref();
17974
- const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
17974
+ const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
17975
17975
  function onFocus() {
17976
17976
  if (textareaRef.value !== document.activeElement) {
17977
17977
  textareaRef.value?.focus();
@@ -19427,7 +19427,7 @@ function createVuetify$1() {
19427
19427
  date
19428
19428
  };
19429
19429
  }
19430
- const version$1 = "3.2.1";
19430
+ const version$1 = "3.2.2";
19431
19431
  createVuetify$1.version = version$1;
19432
19432
 
19433
19433
  // Vue's inject() can only be used in setup
@@ -19447,7 +19447,7 @@ const createVuetify = function () {
19447
19447
  ...options
19448
19448
  });
19449
19449
  };
19450
- const version = "3.2.1";
19450
+ const version = "3.2.2";
19451
19451
  createVuetify.version = version;
19452
19452
 
19453
19453
  export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };