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,5 +1,5 @@
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
  */
@@ -1016,7 +1016,7 @@
1016
1016
  function propIsDefined(vnode, prop) {
1017
1017
  return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1018
1018
  }
1019
- function useDefaults() {
1019
+ function internalUseDefaults() {
1020
1020
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1021
1021
  let name = arguments.length > 1 ? arguments[1] : undefined;
1022
1022
  let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
@@ -1060,6 +1060,16 @@
1060
1060
  provideSubDefaults
1061
1061
  };
1062
1062
  }
1063
+ function useDefaults() {
1064
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1065
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1066
+ const {
1067
+ props: _props,
1068
+ provideSubDefaults
1069
+ } = internalUseDefaults(props, name);
1070
+ provideSubDefaults();
1071
+ return _props;
1072
+ }
1063
1073
 
1064
1074
  // Utils
1065
1075
 
@@ -1087,7 +1097,7 @@
1087
1097
  const {
1088
1098
  props: _props,
1089
1099
  provideSubDefaults
1090
- } = useDefaults(props, props._as ?? options.name, defaults);
1100
+ } = internalUseDefaults(props, props._as ?? options.name, defaults);
1091
1101
  const setupBindings = options._setup(_props, ctx);
1092
1102
  provideSubDefaults();
1093
1103
  return setupBindings;
@@ -3334,14 +3344,13 @@
3334
3344
  type: String
3335
3345
  },
3336
3346
  scrollThreshold: {
3337
- type: [String, Number]
3347
+ type: [String, Number],
3348
+ default: 300
3338
3349
  }
3339
3350
  }, 'scroll');
3340
3351
  function useScroll(props) {
3341
3352
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3342
3353
  const {
3343
- thresholdMetCallback,
3344
- scrollThreshold,
3345
3354
  canScroll
3346
3355
  } = args;
3347
3356
  let previousScroll = 0;
@@ -3351,8 +3360,16 @@
3351
3360
  const currentThreshold = vue.ref(0);
3352
3361
  const isScrollActive = vue.ref(false);
3353
3362
  const isScrollingUp = vue.ref(false);
3354
- const computedScrollThreshold = vue.computed(() => {
3355
- return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3363
+ const scrollThreshold = vue.computed(() => {
3364
+ return Number(props.scrollThreshold);
3365
+ });
3366
+
3367
+ /**
3368
+ * 1: at top
3369
+ * 0: at threshold
3370
+ */
3371
+ const scrollRatio = vue.computed(() => {
3372
+ return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
3356
3373
  });
3357
3374
  const onScroll = () => {
3358
3375
  const targetEl = target.value;
@@ -3360,7 +3377,7 @@
3360
3377
  previousScroll = currentScroll.value;
3361
3378
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3362
3379
  isScrollingUp.value = currentScroll.value < previousScroll;
3363
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3380
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3364
3381
  };
3365
3382
  vue.watch(isScrollingUp, () => {
3366
3383
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3388,15 +3405,6 @@
3388
3405
  vue.onBeforeUnmount(() => {
3389
3406
  target.value?.removeEventListener('scroll', onScroll);
3390
3407
  });
3391
- thresholdMetCallback && vue.watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3392
- thresholdMet && thresholdMetCallback({
3393
- currentThreshold: currentThreshold.value,
3394
- isScrollingUp: isScrollingUp.value,
3395
- savedScroll
3396
- });
3397
- }, {
3398
- immediate: true
3399
- });
3400
3408
 
3401
3409
  // Do we need this? If yes - seems that
3402
3410
  // there's no need to expose onScroll
@@ -3404,10 +3412,11 @@
3404
3412
  immediate: true
3405
3413
  });
3406
3414
  return {
3407
- computedScrollThreshold,
3415
+ scrollThreshold,
3408
3416
  currentScroll,
3409
3417
  currentThreshold,
3410
3418
  isScrollActive,
3419
+ scrollRatio,
3411
3420
  // required only for testing
3412
3421
  // probably can be removed
3413
3422
  // later (2 chars chlng)
@@ -3490,15 +3499,14 @@
3490
3499
  });
3491
3500
  const {
3492
3501
  currentScroll,
3493
- currentThreshold,
3494
- computedScrollThreshold,
3495
- isScrollingUp
3502
+ scrollThreshold,
3503
+ isScrollingUp,
3504
+ scrollRatio
3496
3505
  } = useScroll(props, {
3497
3506
  canScroll
3498
3507
  });
3499
- const isCollapsed = vue.computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3500
- const isFlat = vue.computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3501
- const scrollRatio = vue.computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3508
+ const isCollapsed = vue.computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3509
+ const isFlat = vue.computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3502
3510
  const opacity = vue.computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3503
3511
  const height = vue.computed(() => {
3504
3512
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3507,15 +3515,12 @@
3507
3515
  return height + extensionHeight;
3508
3516
  });
3509
3517
  function setActive() {
3510
- const val = currentScroll.value;
3511
3518
  if (scrollBehavior.value.hide) {
3512
3519
  if (scrollBehavior.value.inverted) {
3513
- isActive.value = val > computedScrollThreshold.value;
3520
+ isActive.value = currentScroll.value > scrollThreshold.value;
3514
3521
  } else {
3515
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3522
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3516
3523
  }
3517
- } else if (scrollBehavior.value.inverted) {
3518
- isActive.value = currentScroll.value === 0;
3519
3524
  } else {
3520
3525
  isActive.value = true;
3521
3526
  }
@@ -4091,7 +4096,7 @@
4091
4096
  const icons = vue.inject(IconSymbol);
4092
4097
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4093
4098
  const iconData = vue.computed(() => {
4094
- const iconAlias = vue.isRef(props) ? props.value : props.icon;
4099
+ const iconAlias = vue.unref(props);
4095
4100
  if (!iconAlias) return {
4096
4101
  component: VComponentIcon
4097
4102
  };
@@ -4158,8 +4163,6 @@
4158
4163
  });
4159
4164
  }
4160
4165
 
4161
- // Types
4162
-
4163
4166
  const makeVIconProps = propsFactory({
4164
4167
  color: String,
4165
4168
  start: Boolean,
@@ -4180,20 +4183,13 @@
4180
4183
  attrs,
4181
4184
  slots
4182
4185
  } = _ref;
4183
- let slotIcon;
4184
- if (slots.default) {
4185
- slotIcon = vue.computed(() => {
4186
- const slot = slots.default?.();
4187
- if (!slot) return;
4188
- return slot.filter(node => node.type === vue.Text && node.children && typeof node.children === 'string')[0]?.children;
4189
- });
4190
- }
4186
+ const slotIcon = vue.ref();
4191
4187
  const {
4192
4188
  themeClasses
4193
4189
  } = provideTheme(props);
4194
4190
  const {
4195
4191
  iconData
4196
- } = useIcon(slotIcon || props);
4192
+ } = useIcon(vue.computed(() => slotIcon.value || props.icon));
4197
4193
  const {
4198
4194
  sizeClasses
4199
4195
  } = useSize(props);
@@ -4201,24 +4197,30 @@
4201
4197
  textColorClasses,
4202
4198
  textColorStyles
4203
4199
  } = useTextColor(vue.toRef(props, 'color'));
4204
- useRender(() => vue.createVNode(iconData.value.component, {
4205
- "tag": props.tag,
4206
- "icon": iconData.value.icon,
4207
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4208
- 'v-icon--clickable': !!attrs.onClick,
4209
- 'v-icon--start': props.start,
4210
- 'v-icon--end': props.end
4211
- }, props.class],
4212
- "style": [!sizeClasses.value ? {
4213
- fontSize: convertToUnit(props.size),
4214
- height: convertToUnit(props.size),
4215
- width: convertToUnit(props.size)
4216
- } : undefined, textColorStyles.value, props.style],
4217
- "role": attrs.onClick ? 'button' : undefined,
4218
- "aria-hidden": !attrs.onClick
4219
- }, {
4220
- default: () => [slots.default?.()]
4221
- }));
4200
+ useRender(() => {
4201
+ const slotValue = slots.default?.();
4202
+ if (slotValue) {
4203
+ slotIcon.value = slotValue.filter(node => node.type === vue.Text && node.children && typeof node.children === 'string')[0]?.children;
4204
+ }
4205
+ return vue.createVNode(iconData.value.component, {
4206
+ "tag": props.tag,
4207
+ "icon": iconData.value.icon,
4208
+ "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4209
+ 'v-icon--clickable': !!attrs.onClick,
4210
+ 'v-icon--start': props.start,
4211
+ 'v-icon--end': props.end
4212
+ }, props.class],
4213
+ "style": [!sizeClasses.value ? {
4214
+ fontSize: convertToUnit(props.size),
4215
+ height: convertToUnit(props.size),
4216
+ width: convertToUnit(props.size)
4217
+ } : undefined, textColorStyles.value, props.style],
4218
+ "role": attrs.onClick ? 'button' : undefined,
4219
+ "aria-hidden": !attrs.onClick
4220
+ }, {
4221
+ default: () => [slotValue]
4222
+ });
4223
+ });
4222
4224
  return {};
4223
4225
  }
4224
4226
  });
@@ -5055,7 +5057,7 @@
5055
5057
  ...makeVariantProps({
5056
5058
  variant: 'elevated'
5057
5059
  })
5058
- }, 'VBtn');
5060
+ }, 'v-btn');
5059
5061
  const VBtn = genericComponent()({
5060
5062
  name: 'VBtn',
5061
5063
  directives: {
@@ -5125,6 +5127,11 @@
5125
5127
  if (props.value === undefined) return undefined;
5126
5128
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5127
5129
  });
5130
+ function onClick(e) {
5131
+ if (isDisabled.value) return;
5132
+ link.navigate?.(e);
5133
+ group?.toggle();
5134
+ }
5128
5135
  useSelectLink(link, group?.select);
5129
5136
  useRender(() => {
5130
5137
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5147,11 +5154,7 @@
5147
5154
  "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5148
5155
  "disabled": isDisabled.value || undefined,
5149
5156
  "href": link.href.value,
5150
- "onClick": e => {
5151
- if (isDisabled.value) return;
5152
- link.navigate?.(e);
5153
- group?.toggle();
5154
- },
5157
+ "onClick": onClick,
5155
5158
  "value": valueAttr.value
5156
5159
  }, {
5157
5160
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
@@ -5217,22 +5220,17 @@
5217
5220
 
5218
5221
  const VAppBarNavIcon = genericComponent()({
5219
5222
  name: 'VAppBarNavIcon',
5220
- props: {
5221
- icon: {
5222
- type: IconValue,
5223
- default: '$menu'
5224
- },
5225
- ...makeComponentProps()
5226
- },
5223
+ props: makeVBtnProps({
5224
+ icon: '$menu',
5225
+ variant: 'text'
5226
+ }),
5227
5227
  setup(props, _ref) {
5228
5228
  let {
5229
5229
  slots
5230
5230
  } = _ref;
5231
- useRender(() => vue.createVNode(VBtn, {
5232
- "class": ['v-app-bar-nav-icon', props.class],
5233
- "icon": props.icon,
5234
- "style": props.style
5235
- }, slots));
5231
+ useRender(() => vue.createVNode(VBtn, vue.mergeProps(props, {
5232
+ "class": ['v-app-bar-nav-icon']
5233
+ }), slots));
5236
5234
  return {};
5237
5235
  }
5238
5236
  });
@@ -6435,7 +6433,7 @@
6435
6433
  const vInputRef = vue.ref();
6436
6434
  const vFieldRef = vue.ref();
6437
6435
  const inputRef = vue.ref();
6438
- const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
6436
+ const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
6439
6437
  function onFocus() {
6440
6438
  if (inputRef.value !== document.activeElement) {
6441
6439
  inputRef.value?.focus();
@@ -6871,7 +6869,6 @@
6871
6869
  "class": ['v-checkbox-btn', props.class],
6872
6870
  "style": props.style,
6873
6871
  "type": "checkbox",
6874
- "inline": true,
6875
6872
  "falseIcon": falseIcon.value,
6876
6873
  "trueIcon": trueIcon.value,
6877
6874
  "aria-checked": props.indeterminate ? 'mixed' : undefined
@@ -10370,11 +10367,13 @@
10370
10367
  let {
10371
10368
  isSelected
10372
10369
  } = _ref2;
10373
- return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10370
+ return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10374
10371
  "modelValue": isSelected,
10375
10372
  "ripple": false,
10376
10373
  "tabindex": "-1"
10377
- }, null) : undefined;
10374
+ }, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
10375
+ "icon": item.props.prependIcon
10376
+ }, null)]);
10378
10377
  }
10379
10378
  });
10380
10379
  }), slots['append-item']?.()]
@@ -10387,6 +10386,10 @@
10387
10386
  }
10388
10387
  const slotProps = {
10389
10388
  'onClick:close': onChipClose,
10389
+ onMousedown(e) {
10390
+ e.preventDefault();
10391
+ e.stopPropagation();
10392
+ },
10390
10393
  modelValue: true,
10391
10394
  'onUpdate:modelValue': undefined
10392
10395
  };
@@ -10730,6 +10733,7 @@
10730
10733
  isPristine.value = true;
10731
10734
  vue.nextTick(() => isSelecting.value = false);
10732
10735
  } else {
10736
+ if (!props.multiple && !search.value) model.value = [];
10733
10737
  menu.value = false;
10734
10738
  search.value = '';
10735
10739
  }
@@ -10809,11 +10813,13 @@
10809
10813
  let {
10810
10814
  isSelected
10811
10815
  } = _ref2;
10812
- return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10816
+ return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10813
10817
  "modelValue": isSelected,
10814
10818
  "ripple": false,
10815
10819
  "tabindex": "-1"
10816
- }, null) : undefined;
10820
+ }, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
10821
+ "icon": item.props.prependIcon
10822
+ }, null)]);
10817
10823
  },
10818
10824
  title: () => {
10819
10825
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -10828,6 +10834,10 @@
10828
10834
  }
10829
10835
  const slotProps = {
10830
10836
  'onClick:close': onChipClose,
10837
+ onMousedown(e) {
10838
+ e.preventDefault();
10839
+ e.stopPropagation();
10840
+ },
10831
10841
  modelValue: true,
10832
10842
  'onUpdate:modelValue': undefined
10833
10843
  };
@@ -14254,11 +14264,13 @@
14254
14264
  let {
14255
14265
  isSelected
14256
14266
  } = _ref2;
14257
- return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
14267
+ return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
14258
14268
  "modelValue": isSelected,
14259
14269
  "ripple": false,
14260
14270
  "tabindex": "-1"
14261
- }, null) : undefined;
14271
+ }, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
14272
+ "icon": item.props.prependIcon
14273
+ }, null)]);
14262
14274
  },
14263
14275
  title: () => {
14264
14276
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14273,6 +14285,10 @@
14273
14285
  }
14274
14286
  const slotProps = {
14275
14287
  'onClick:close': onChipClose,
14288
+ onMousedown(e) {
14289
+ e.preventDefault();
14290
+ e.stopPropagation();
14291
+ },
14276
14292
  modelValue: true,
14277
14293
  'onUpdate:modelValue': undefined
14278
14294
  };
@@ -14736,6 +14752,7 @@
14736
14752
  const vInputRef = vue.ref();
14737
14753
  const vFieldRef = vue.ref();
14738
14754
  const inputRef = vue.ref();
14755
+ const isActive = vue.computed(() => isFocused.value || props.active);
14739
14756
  function onFocus() {
14740
14757
  if (inputRef.value !== document.activeElement) {
14741
14758
  inputRef.value?.focus();
@@ -14804,7 +14821,7 @@
14804
14821
  "onClick:appendInner": props['onClick:appendInner']
14805
14822
  }, fieldProps, {
14806
14823
  "id": id.value,
14807
- "active": isDirty.value || isFocused.value,
14824
+ "active": isActive.value || isDirty.value,
14808
14825
  "dirty": isDirty.value,
14809
14826
  "disabled": isDisabled.value,
14810
14827
  "focused": isFocused.value,
@@ -15970,7 +15987,6 @@
15970
15987
  });
15971
15988
  const {
15972
15989
  layoutItemStyles,
15973
- layoutRect,
15974
15990
  layoutItemScrimStyles
15975
15991
  } = useLayoutItem({
15976
15992
  id: props.name,
@@ -16000,12 +16016,6 @@
16000
16016
  opacity: dragProgress.value * 0.2,
16001
16017
  transition: 'none'
16002
16018
  } : undefined),
16003
- ...(layoutRect.value ? {
16004
- left: convertToUnit(layoutRect.value.left),
16005
- right: convertToUnit(layoutRect.value.right),
16006
- top: convertToUnit(layoutRect.value.top),
16007
- bottom: convertToUnit(layoutRect.value.bottom)
16008
- } : undefined),
16009
16019
  ...layoutItemScrimStyles.value
16010
16020
  }));
16011
16021
  provideDefaults({
@@ -17969,7 +17979,7 @@
17969
17979
  const vFieldRef = vue.ref();
17970
17980
  const controlHeight = vue.ref('');
17971
17981
  const textareaRef = vue.ref();
17972
- const isActive = vue.computed(() => isFocused.value || props.persistentPlaceholder);
17982
+ const isActive = vue.computed(() => props.persistentPlaceholder || isFocused.value || props.active);
17973
17983
  function onFocus() {
17974
17984
  if (textareaRef.value !== document.activeElement) {
17975
17985
  textareaRef.value?.focus();
@@ -19660,6 +19670,11 @@
19660
19670
  if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
19661
19671
  return Math.ceil(itemsLength.value / itemsPerPage.value);
19662
19672
  });
19673
+ vue.watchEffect(() => {
19674
+ if (page.value > pageCount.value) {
19675
+ page.value = pageCount.value;
19676
+ }
19677
+ });
19663
19678
  function setItemsPerPage(value) {
19664
19679
  itemsPerPage.value = value;
19665
19680
  page.value = 1;
@@ -21535,7 +21550,7 @@
21535
21550
  date
21536
21551
  };
21537
21552
  }
21538
- const version$1 = "3.2.0";
21553
+ const version$1 = "3.2.2";
21539
21554
  createVuetify$1.version = version$1;
21540
21555
 
21541
21556
  // Vue's inject() can only be used in setup
@@ -21547,7 +21562,7 @@
21547
21562
  }
21548
21563
  }
21549
21564
 
21550
- const version = "3.2.0";
21565
+ const version = "3.2.2";
21551
21566
 
21552
21567
  const createVuetify = function () {
21553
21568
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};