@vuetify/nightly 3.2.2-master-20230501.0 → 3.2.3-master-20230503.0

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 (82) hide show
  1. package/CHANGELOG.md +6 -7
  2. package/dist/json/attributes.json +795 -659
  3. package/dist/json/importMap-labs.json +4 -4
  4. package/dist/json/importMap.json +84 -84
  5. package/dist/json/tags.json +35 -1
  6. package/dist/json/web-types.json +1683 -1353
  7. package/dist/vuetify-labs.css +133 -127
  8. package/dist/vuetify-labs.d.ts +404 -71
  9. package/dist/vuetify-labs.esm.js +126 -109
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +126 -109
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +100 -94
  14. package/dist/vuetify.d.ts +429 -96
  15. package/dist/vuetify.esm.js +126 -109
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +126 -109
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +158 -159
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAppBar/VAppBar.mjs +7 -11
  23. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  24. package/lib/components/VAppBar/VAppBarNavIcon.mjs +10 -16
  25. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  26. package/lib/components/VAppBar/index.d.ts +394 -28
  27. package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -2
  29. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  30. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  31. package/lib/components/VBtn/VBtn.mjs +7 -6
  32. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  33. package/lib/components/VCarousel/index.d.ts +9 -9
  34. package/lib/components/VColorPicker/VColorPicker.mjs +6 -2
  35. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  36. package/lib/components/VCombobox/VCombobox.mjs +5 -2
  37. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  38. package/lib/components/VField/VField.mjs +6 -2
  39. package/lib/components/VField/VField.mjs.map +1 -1
  40. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  41. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  42. package/lib/components/VGrid/VContainer.mjs +6 -2
  43. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  44. package/lib/components/VIcon/VIcon.mjs +28 -29
  45. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  46. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -8
  47. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  48. package/lib/components/VNavigationDrawer/sticky.mjs +9 -3
  49. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  50. package/lib/components/VOverlay/locationStrategies.mjs +2 -2
  51. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  52. package/lib/components/VProgressLinear/VProgressLinear.mjs +3 -2
  53. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  54. package/lib/components/VRangeSlider/VRangeSlider.mjs +6 -2
  55. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  56. package/lib/components/VSelect/VSelect.mjs +5 -2
  57. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  58. package/lib/components/VSheet/VSheet.css +6 -0
  59. package/lib/components/VSheet/_variables.scss +1 -1
  60. package/lib/components/VSlider/VSlider.mjs +7 -3
  61. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  62. package/lib/components/VTextField/VTextField.mjs +1 -1
  63. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  64. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  65. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  66. package/lib/components/VTimeline/VTimeline.mjs +6 -2
  67. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  68. package/lib/components/VToolbar/VToolbar.mjs +6 -2
  69. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  70. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  71. package/lib/components/VWindow/index.d.ts +9 -9
  72. package/lib/components/index.d.ts +404 -71
  73. package/lib/composables/icons.mjs +2 -2
  74. package/lib/composables/icons.mjs.map +1 -1
  75. package/lib/composables/scroll.mjs +16 -17
  76. package/lib/composables/scroll.mjs.map +1 -1
  77. package/lib/directives/click-outside/index.mjs +1 -1
  78. package/lib/directives/click-outside/index.mjs.map +1 -1
  79. package/lib/entry-bundler.mjs +1 -1
  80. package/lib/framework.mjs +1 -1
  81. package/lib/index.d.ts +25 -25
  82. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.2.2-master-20230501.0
2
+ * Vuetify v3.2.3-master-20230503.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -3244,6 +3244,9 @@ const VToolbar = genericComponent()({
3244
3244
  const {
3245
3245
  themeClasses
3246
3246
  } = provideTheme(props);
3247
+ const {
3248
+ rtlClasses
3249
+ } = useRtl();
3247
3250
  const isExtended = ref(!!(props.extended || slots.extension?.()));
3248
3251
  const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
3249
3252
  const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);
@@ -3264,7 +3267,7 @@ const VToolbar = genericComponent()({
3264
3267
  'v-toolbar--flat': props.flat,
3265
3268
  'v-toolbar--floating': props.floating,
3266
3269
  [`v-toolbar--density-${props.density}`]: true
3267
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3270
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
3268
3271
  "style": [backgroundColorStyles.value, props.style]
3269
3272
  }, {
3270
3273
  default: () => [hasImage && createVNode("div", {
@@ -3340,14 +3343,13 @@ const makeScrollProps = propsFactory({
3340
3343
  type: String
3341
3344
  },
3342
3345
  scrollThreshold: {
3343
- type: [String, Number]
3346
+ type: [String, Number],
3347
+ default: 300
3344
3348
  }
3345
3349
  }, 'scroll');
3346
3350
  function useScroll(props) {
3347
3351
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3348
3352
  const {
3349
- thresholdMetCallback,
3350
- scrollThreshold,
3351
3353
  canScroll
3352
3354
  } = args;
3353
3355
  let previousScroll = 0;
@@ -3357,8 +3359,16 @@ function useScroll(props) {
3357
3359
  const currentThreshold = ref(0);
3358
3360
  const isScrollActive = ref(false);
3359
3361
  const isScrollingUp = ref(false);
3360
- const computedScrollThreshold = computed(() => {
3361
- return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3362
+ const scrollThreshold = computed(() => {
3363
+ return Number(props.scrollThreshold);
3364
+ });
3365
+
3366
+ /**
3367
+ * 1: at top
3368
+ * 0: at threshold
3369
+ */
3370
+ const scrollRatio = computed(() => {
3371
+ return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
3362
3372
  });
3363
3373
  const onScroll = () => {
3364
3374
  const targetEl = target.value;
@@ -3366,7 +3376,7 @@ function useScroll(props) {
3366
3376
  previousScroll = currentScroll.value;
3367
3377
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3368
3378
  isScrollingUp.value = currentScroll.value < previousScroll;
3369
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3379
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3370
3380
  };
3371
3381
  watch(isScrollingUp, () => {
3372
3382
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3394,15 +3404,6 @@ function useScroll(props) {
3394
3404
  onBeforeUnmount(() => {
3395
3405
  target.value?.removeEventListener('scroll', onScroll);
3396
3406
  });
3397
- thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3398
- thresholdMet && thresholdMetCallback({
3399
- currentThreshold: currentThreshold.value,
3400
- isScrollingUp: isScrollingUp.value,
3401
- savedScroll
3402
- });
3403
- }, {
3404
- immediate: true
3405
- });
3406
3407
 
3407
3408
  // Do we need this? If yes - seems that
3408
3409
  // there's no need to expose onScroll
@@ -3410,10 +3411,11 @@ function useScroll(props) {
3410
3411
  immediate: true
3411
3412
  });
3412
3413
  return {
3413
- computedScrollThreshold,
3414
+ scrollThreshold,
3414
3415
  currentScroll,
3415
3416
  currentThreshold,
3416
3417
  isScrollActive,
3418
+ scrollRatio,
3417
3419
  // required only for testing
3418
3420
  // probably can be removed
3419
3421
  // later (2 chars chlng)
@@ -3496,15 +3498,14 @@ const VAppBar = genericComponent()({
3496
3498
  });
3497
3499
  const {
3498
3500
  currentScroll,
3499
- currentThreshold,
3500
- computedScrollThreshold,
3501
- isScrollingUp
3501
+ scrollThreshold,
3502
+ isScrollingUp,
3503
+ scrollRatio
3502
3504
  } = useScroll(props, {
3503
3505
  canScroll
3504
3506
  });
3505
- const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3506
- const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3507
- const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3507
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3508
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3508
3509
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3509
3510
  const height = computed(() => {
3510
3511
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3513,15 +3514,12 @@ const VAppBar = genericComponent()({
3513
3514
  return height + extensionHeight;
3514
3515
  });
3515
3516
  function setActive() {
3516
- const val = currentScroll.value;
3517
3517
  if (scrollBehavior.value.hide) {
3518
3518
  if (scrollBehavior.value.inverted) {
3519
- isActive.value = val > computedScrollThreshold.value;
3519
+ isActive.value = currentScroll.value > scrollThreshold.value;
3520
3520
  } else {
3521
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3521
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3522
3522
  }
3523
- } else if (scrollBehavior.value.inverted) {
3524
- isActive.value = currentScroll.value === 0;
3525
3523
  } else {
3526
3524
  isActive.value = true;
3527
3525
  }
@@ -4097,7 +4095,7 @@ const useIcon = props => {
4097
4095
  const icons = inject$1(IconSymbol);
4098
4096
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4099
4097
  const iconData = computed(() => {
4100
- const iconAlias = isRef(props) ? props.value : props.icon;
4098
+ const iconAlias = unref(props);
4101
4099
  if (!iconAlias) return {
4102
4100
  component: VComponentIcon
4103
4101
  };
@@ -4164,8 +4162,6 @@ function useSize(props) {
4164
4162
  });
4165
4163
  }
4166
4164
 
4167
- // Types
4168
-
4169
4165
  const makeVIconProps = propsFactory({
4170
4166
  color: String,
4171
4167
  start: Boolean,
@@ -4186,20 +4182,13 @@ const VIcon = genericComponent()({
4186
4182
  attrs,
4187
4183
  slots
4188
4184
  } = _ref;
4189
- let slotIcon;
4190
- if (slots.default) {
4191
- slotIcon = computed(() => {
4192
- const slot = slots.default?.();
4193
- if (!slot) return;
4194
- return slot.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4195
- });
4196
- }
4185
+ const slotIcon = ref();
4197
4186
  const {
4198
4187
  themeClasses
4199
4188
  } = provideTheme(props);
4200
4189
  const {
4201
4190
  iconData
4202
- } = useIcon(slotIcon || props);
4191
+ } = useIcon(computed(() => slotIcon.value || props.icon));
4203
4192
  const {
4204
4193
  sizeClasses
4205
4194
  } = useSize(props);
@@ -4207,24 +4196,30 @@ const VIcon = genericComponent()({
4207
4196
  textColorClasses,
4208
4197
  textColorStyles
4209
4198
  } = useTextColor(toRef(props, 'color'));
4210
- useRender(() => createVNode(iconData.value.component, {
4211
- "tag": props.tag,
4212
- "icon": iconData.value.icon,
4213
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4214
- 'v-icon--clickable': !!attrs.onClick,
4215
- 'v-icon--start': props.start,
4216
- 'v-icon--end': props.end
4217
- }, props.class],
4218
- "style": [!sizeClasses.value ? {
4219
- fontSize: convertToUnit(props.size),
4220
- height: convertToUnit(props.size),
4221
- width: convertToUnit(props.size)
4222
- } : undefined, textColorStyles.value, props.style],
4223
- "role": attrs.onClick ? 'button' : undefined,
4224
- "aria-hidden": !attrs.onClick
4225
- }, {
4226
- default: () => [slots.default?.()]
4227
- }));
4199
+ useRender(() => {
4200
+ const slotValue = slots.default?.();
4201
+ if (slotValue) {
4202
+ slotIcon.value = slotValue.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4203
+ }
4204
+ return 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: () => [slotValue]
4221
+ });
4222
+ });
4228
4223
  return {};
4229
4224
  }
4230
4225
  });
@@ -4770,7 +4765,8 @@ const VProgressLinear = genericComponent()({
4770
4765
  } = _ref;
4771
4766
  const progress = useProxiedModel(props, 'modelValue');
4772
4767
  const {
4773
- isRtl
4768
+ isRtl,
4769
+ rtlClasses
4774
4770
  } = useRtl();
4775
4771
  const {
4776
4772
  themeClasses
@@ -4825,7 +4821,7 @@ const VProgressLinear = genericComponent()({
4825
4821
  'v-progress-linear--rounded': props.rounded,
4826
4822
  'v-progress-linear--rounded-bar': props.roundedBar,
4827
4823
  'v-progress-linear--striped': props.striped
4828
- }, roundedClasses.value, themeClasses.value, props.class],
4824
+ }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
4829
4825
  "style": [{
4830
4826
  bottom: props.location === 'bottom' ? 0 : undefined,
4831
4827
  top: props.location === 'top' ? 0 : undefined,
@@ -5061,7 +5057,7 @@ const makeVBtnProps = propsFactory({
5061
5057
  ...makeVariantProps({
5062
5058
  variant: 'elevated'
5063
5059
  })
5064
- }, 'VBtn');
5060
+ }, 'v-btn');
5065
5061
  const VBtn = genericComponent()({
5066
5062
  name: 'VBtn',
5067
5063
  directives: {
@@ -5131,6 +5127,11 @@ const VBtn = genericComponent()({
5131
5127
  if (props.value === undefined) return undefined;
5132
5128
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5133
5129
  });
5130
+ function onClick(e) {
5131
+ if (isDisabled.value) return;
5132
+ link.navigate?.(e);
5133
+ group?.toggle();
5134
+ }
5134
5135
  useSelectLink(link, group?.select);
5135
5136
  useRender(() => {
5136
5137
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5153,11 +5154,7 @@ const VBtn = genericComponent()({
5153
5154
  "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5154
5155
  "disabled": isDisabled.value || undefined,
5155
5156
  "href": link.href.value,
5156
- "onClick": e => {
5157
- if (isDisabled.value) return;
5158
- link.navigate?.(e);
5159
- group?.toggle();
5160
- },
5157
+ "onClick": onClick,
5161
5158
  "value": valueAttr.value
5162
5159
  }, {
5163
5160
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
@@ -5223,22 +5220,17 @@ const VBtn = genericComponent()({
5223
5220
 
5224
5221
  const VAppBarNavIcon = genericComponent()({
5225
5222
  name: 'VAppBarNavIcon',
5226
- props: {
5227
- icon: {
5228
- type: IconValue,
5229
- default: '$menu'
5230
- },
5231
- ...makeComponentProps()
5232
- },
5223
+ props: makeVBtnProps({
5224
+ icon: '$menu',
5225
+ variant: 'text'
5226
+ }),
5233
5227
  setup(props, _ref) {
5234
5228
  let {
5235
5229
  slots
5236
5230
  } = _ref;
5237
- useRender(() => createVNode(VBtn, {
5238
- "class": ['v-app-bar-nav-icon', props.class],
5239
- "icon": props.icon,
5240
- "style": props.style
5241
- }, slots));
5231
+ useRender(() => createVNode(VBtn, mergeProps(props, {
5232
+ "class": ['v-app-bar-nav-icon']
5233
+ }), slots));
5242
5234
  return {};
5243
5235
  }
5244
5236
  });
@@ -5645,6 +5637,9 @@ const VField = genericComponent()({
5645
5637
  const {
5646
5638
  roundedClasses
5647
5639
  } = useRounded(props);
5640
+ const {
5641
+ rtlClasses
5642
+ } = useRtl();
5648
5643
  const isActive = computed(() => props.dirty || props.active);
5649
5644
  const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));
5650
5645
  const uid = getUid();
@@ -5738,7 +5733,7 @@ const VField = genericComponent()({
5738
5733
  'v-field--single-line': props.singleLine,
5739
5734
  'v-field--no-label': !label,
5740
5735
  [`v-field--variant-${props.variant}`]: true
5741
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5736
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, rtlClasses.value, props.class],
5742
5737
  "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5743
5738
  "onClick": onClick
5744
5739
  }, attrs), [createVNode("div", {
@@ -6441,7 +6436,7 @@ const VTextField = genericComponent()({
6441
6436
  const vInputRef = ref();
6442
6437
  const vFieldRef = ref();
6443
6438
  const inputRef = ref();
6444
- const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
6439
+ const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
6445
6440
  function onFocus() {
6446
6441
  if (inputRef.value !== document.activeElement) {
6447
6442
  inputRef.value?.focus();
@@ -9108,8 +9103,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
9108
9103
  if (!scrollParents.length) {
9109
9104
  scrollParents.push(document.documentElement);
9110
9105
  if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {
9111
- contentBox.x += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);
9112
- contentBox.y += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);
9106
+ contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);
9107
+ contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);
9113
9108
  }
9114
9109
  }
9115
9110
  const viewport = scrollParents.reduce((box, el) => {
@@ -9762,7 +9757,7 @@ const ClickOutside = {
9762
9757
  });
9763
9758
  if (!el._clickOutside) {
9764
9759
  el._clickOutside = {
9765
- lastMousedownWasOutside: true
9760
+ lastMousedownWasOutside: false
9766
9761
  };
9767
9762
  }
9768
9763
  el._clickOutside[binding.instance.$.uid] = {
@@ -10375,11 +10370,13 @@ const VSelect = genericComponent()({
10375
10370
  let {
10376
10371
  isSelected
10377
10372
  } = _ref2;
10378
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10373
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10379
10374
  "modelValue": isSelected,
10380
10375
  "ripple": false,
10381
10376
  "tabindex": "-1"
10382
- }, null) : undefined;
10377
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10378
+ "icon": item.props.prependIcon
10379
+ }, null)]);
10383
10380
  }
10384
10381
  });
10385
10382
  }), slots['append-item']?.()]
@@ -10739,6 +10736,7 @@ const VAutocomplete = genericComponent()({
10739
10736
  isPristine.value = true;
10740
10737
  nextTick(() => isSelecting.value = false);
10741
10738
  } else {
10739
+ if (!props.multiple && !search.value) model.value = [];
10742
10740
  menu.value = false;
10743
10741
  search.value = '';
10744
10742
  }
@@ -10818,11 +10816,13 @@ const VAutocomplete = genericComponent()({
10818
10816
  let {
10819
10817
  isSelected
10820
10818
  } = _ref2;
10821
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10819
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10822
10820
  "modelValue": isSelected,
10823
10821
  "ripple": false,
10824
10822
  "tabindex": "-1"
10825
- }, null) : undefined;
10823
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10824
+ "icon": item.props.prependIcon
10825
+ }, null)]);
10826
10826
  },
10827
10827
  title: () => {
10828
10828
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -13273,6 +13273,9 @@ const VSlider = genericComponent()({
13273
13273
  emit
13274
13274
  } = _ref;
13275
13275
  const thumbContainerRef = ref();
13276
+ const {
13277
+ rtlClasses
13278
+ } = useRtl();
13276
13279
  const steps = useSteps(props);
13277
13280
  const model = useProxiedModel(props, 'modelValue', undefined, v => {
13278
13281
  const value = typeof v === 'string' ? parseFloat(v) : v == null ? steps.min.value : v;
@@ -13326,7 +13329,7 @@ const VSlider = genericComponent()({
13326
13329
  'v-slider--focused': isFocused.value,
13327
13330
  'v-slider--pressed': mousePressed.value,
13328
13331
  'v-slider--disabled': props.disabled
13329
- }, props.class],
13332
+ }, rtlClasses.value, props.class],
13330
13333
  "style": props.style
13331
13334
  }, inputProps, {
13332
13335
  "focused": isFocused.value
@@ -13883,6 +13886,9 @@ const VColorPicker = defineComponent({
13883
13886
  if (!v) return null;
13884
13887
  return extractColor(v, props.modelValue);
13885
13888
  });
13889
+ const {
13890
+ rtlClasses
13891
+ } = useRtl();
13886
13892
  const updateColor = hsva => {
13887
13893
  currentColor.value = hsva;
13888
13894
  lastPickedColor.value = hsva;
@@ -13903,7 +13909,7 @@ const VColorPicker = defineComponent({
13903
13909
  "rounded": props.rounded,
13904
13910
  "elevation": props.elevation,
13905
13911
  "theme": props.theme,
13906
- "class": ['v-color-picker', props.class],
13912
+ "class": ['v-color-picker', rtlClasses.value, props.class],
13907
13913
  "style": [{
13908
13914
  '--v-color-picker-color-hsv': HSVtoCSS({
13909
13915
  ...(currentColor.value ?? nullColor),
@@ -14267,11 +14273,13 @@ const VCombobox = genericComponent()({
14267
14273
  let {
14268
14274
  isSelected
14269
14275
  } = _ref2;
14270
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14276
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14271
14277
  "modelValue": isSelected,
14272
14278
  "ripple": false,
14273
14279
  "tabindex": "-1"
14274
- }, null) : undefined;
14280
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14281
+ "icon": item.props.prependIcon
14282
+ }, null)]);
14275
14283
  },
14276
14284
  title: () => {
14277
14285
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14753,6 +14761,7 @@ const VFileInput = genericComponent()({
14753
14761
  const vInputRef = ref();
14754
14762
  const vFieldRef = ref();
14755
14763
  const inputRef = ref();
14764
+ const isActive = computed(() => isFocused.value || props.active);
14756
14765
  function onFocus() {
14757
14766
  if (inputRef.value !== document.activeElement) {
14758
14767
  inputRef.value?.focus();
@@ -14821,7 +14830,7 @@ const VFileInput = genericComponent()({
14821
14830
  "onClick:appendInner": props['onClick:appendInner']
14822
14831
  }, fieldProps, {
14823
14832
  "id": id.value,
14824
- "active": isDirty.value || isFocused.value,
14833
+ "active": isActive.value || isDirty.value,
14825
14834
  "dirty": isDirty.value,
14826
14835
  "disabled": isDisabled.value,
14827
14836
  "focused": isFocused.value,
@@ -15014,10 +15023,13 @@ const VContainer = genericComponent()({
15014
15023
  let {
15015
15024
  slots
15016
15025
  } = _ref;
15026
+ const {
15027
+ rtlClasses
15028
+ } = useRtl();
15017
15029
  useRender(() => createVNode(props.tag, {
15018
15030
  "class": ['v-container', {
15019
15031
  'v-container--fluid': props.fluid
15020
- }, props.class],
15032
+ }, rtlClasses.value, props.class],
15021
15033
  "style": props.style
15022
15034
  }, slots));
15023
15035
  return {};
@@ -15605,18 +15617,24 @@ function useSticky(_ref) {
15605
15617
  const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15606
15618
  const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15607
15619
  const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15620
+ const bodyScroll = parseFloat(getComputedStyle(rootEl.value).getPropertyValue('--v-body-scroll-y')) || 0;
15608
15621
  if (rect.height < window.innerHeight - layoutTop) {
15609
15622
  isStuck.value = 'top';
15610
15623
  stuckPosition.value = layoutTop;
15611
15624
  } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15612
- stuckPosition.value = window.scrollY + rect.top;
15625
+ stuckPosition.value = window.scrollY + rect.top - bodyScroll;
15613
15626
  isStuck.value = true;
15614
15627
  } else if (direction === 'down' && bottom <= 0) {
15615
15628
  stuckPosition.value = 0;
15616
15629
  isStuck.value = 'bottom';
15617
15630
  } else if (direction === 'up' && top <= 0) {
15618
- stuckPosition.value = rect.top + top;
15619
- isStuck.value = 'top';
15631
+ if (!bodyScroll) {
15632
+ stuckPosition.value = rect.top + top;
15633
+ isStuck.value = 'top';
15634
+ } else if (isStuck.value !== 'top') {
15635
+ stuckPosition.value = -top + bodyScroll + layoutTop;
15636
+ isStuck.value = 'top';
15637
+ }
15620
15638
  }
15621
15639
  lastScrollTop = window.scrollY;
15622
15640
  }
@@ -15987,7 +16005,6 @@ const VNavigationDrawer = genericComponent()({
15987
16005
  });
15988
16006
  const {
15989
16007
  layoutItemStyles,
15990
- layoutRect,
15991
16008
  layoutItemScrimStyles
15992
16009
  } = useLayoutItem({
15993
16010
  id: props.name,
@@ -16017,12 +16034,6 @@ const VNavigationDrawer = genericComponent()({
16017
16034
  opacity: dragProgress.value * 0.2,
16018
16035
  transition: 'none'
16019
16036
  } : undefined),
16020
- ...(layoutRect.value ? {
16021
- left: convertToUnit(layoutRect.value.left),
16022
- right: convertToUnit(layoutRect.value.right),
16023
- top: convertToUnit(layoutRect.value.top),
16024
- bottom: convertToUnit(layoutRect.value.bottom)
16025
- } : undefined),
16026
16037
  ...layoutItemScrimStyles.value
16027
16038
  }));
16028
16039
  provideDefaults({
@@ -16650,6 +16661,9 @@ const VRangeSlider = genericComponent()({
16650
16661
  const startThumbRef = ref();
16651
16662
  const stopThumbRef = ref();
16652
16663
  const inputRef = ref();
16664
+ const {
16665
+ rtlClasses
16666
+ } = useRtl();
16653
16667
  function getActiveThumb(e) {
16654
16668
  if (!startThumbRef.value || !stopThumbRef.value) return;
16655
16669
  const startOffset = getOffset(e, startThumbRef.value.$el, props.direction);
@@ -16720,7 +16734,7 @@ const VRangeSlider = genericComponent()({
16720
16734
  'v-slider--focused': isFocused.value,
16721
16735
  'v-slider--pressed': mousePressed.value,
16722
16736
  'v-slider--disabled': props.disabled
16723
- }, props.class],
16737
+ }, rtlClasses.value, props.class],
16724
16738
  "style": props.style,
16725
16739
  "ref": inputRef
16726
16740
  }, inputProps, {
@@ -17986,7 +18000,7 @@ const VTextarea = genericComponent()({
17986
18000
  const vFieldRef = ref();
17987
18001
  const controlHeight = ref('');
17988
18002
  const textareaRef = ref();
17989
- const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
18003
+ const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
17990
18004
  function onFocus() {
17991
18005
  if (textareaRef.value !== document.activeElement) {
17992
18006
  textareaRef.value?.focus();
@@ -18232,6 +18246,9 @@ const VTimeline = genericComponent()({
18232
18246
  const {
18233
18247
  densityClasses
18234
18248
  } = useDensity(props);
18249
+ const {
18250
+ rtlClasses
18251
+ } = useRtl();
18235
18252
  provideDefaults({
18236
18253
  VTimelineDivider: {
18237
18254
  lineColor: toRef(props, 'lineColor')
@@ -18261,7 +18278,7 @@ const VTimeline = genericComponent()({
18261
18278
  useRender(() => createVNode(props.tag, {
18262
18279
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
18263
18280
  'v-timeline--inset-line': !!props.lineInset
18264
- }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18281
+ }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class],
18265
18282
  "style": [{
18266
18283
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
18267
18284
  }, props.style]
@@ -21557,7 +21574,7 @@ function createVuetify$1() {
21557
21574
  date
21558
21575
  };
21559
21576
  }
21560
- const version$1 = "3.2.2-master-20230501.0";
21577
+ const version$1 = "3.2.3-master-20230503.0";
21561
21578
  createVuetify$1.version = version$1;
21562
21579
 
21563
21580
  // Vue's inject() can only be used in setup
@@ -21569,7 +21586,7 @@ function inject(key) {
21569
21586
  }
21570
21587
  }
21571
21588
 
21572
- const version = "3.2.2-master-20230501.0";
21589
+ const version = "3.2.3-master-20230503.0";
21573
21590
 
21574
21591
  const createVuetify = function () {
21575
21592
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};