@vuetify/nightly 3.6.8-master.2024-06-11 → 3.6.9-dev.2024-06-20

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 (101) hide show
  1. package/CHANGELOG.md +14 -6
  2. package/dist/json/attributes.json +293 -121
  3. package/dist/json/importMap-labs.json +22 -22
  4. package/dist/json/importMap.json +158 -158
  5. package/dist/json/tags.json +49 -6
  6. package/dist/json/web-types.json +610 -221
  7. package/dist/vuetify-labs.css +3356 -3340
  8. package/dist/vuetify-labs.d.ts +840 -564
  9. package/dist/vuetify-labs.esm.js +93 -44
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +93 -44
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +551 -535
  14. package/dist/vuetify.d.ts +763 -565
  15. package/dist/vuetify.esm.js +81 -38
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +81 -38
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +51 -48
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAppBar/index.d.mts +6 -0
  23. package/lib/components/VAutocomplete/index.d.mts +49 -49
  24. package/lib/components/VAvatar/VAvatar.css +7 -0
  25. package/lib/components/VAvatar/VAvatar.mjs +6 -1
  26. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  27. package/lib/components/VAvatar/VAvatar.sass +1 -0
  28. package/lib/components/VAvatar/_variables.scss +13 -0
  29. package/lib/components/VAvatar/index.d.mts +6 -0
  30. package/lib/components/VBottomSheet/index.d.mts +7 -7
  31. package/lib/components/VBreadcrumbs/index.d.mts +8 -8
  32. package/lib/components/VBtn/VBtn.mjs +3 -1
  33. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  34. package/lib/components/VBtn/index.d.mts +6 -0
  35. package/lib/components/VCarousel/index.d.mts +16 -7
  36. package/lib/components/VCheckbox/index.d.mts +6 -6
  37. package/lib/components/VCombobox/index.d.mts +49 -49
  38. package/lib/components/VDialog/index.d.mts +31 -31
  39. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +23 -11
  40. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  41. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +20 -7
  42. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  43. package/lib/components/VExpansionPanel/index.d.mts +122 -14
  44. package/lib/components/VFab/VFab.mjs +4 -7
  45. package/lib/components/VFab/VFab.mjs.map +1 -1
  46. package/lib/components/VFab/index.d.mts +52 -49
  47. package/lib/components/VFileInput/index.d.mts +18 -18
  48. package/lib/components/VForm/index.d.mts +9 -9
  49. package/lib/components/VGrid/VContainer.mjs +6 -1
  50. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  51. package/lib/components/VGrid/index.d.mts +36 -0
  52. package/lib/components/VImg/VImg.css +9 -0
  53. package/lib/components/VImg/VImg.mjs +2 -0
  54. package/lib/components/VImg/VImg.mjs.map +1 -1
  55. package/lib/components/VImg/VImg.sass +9 -0
  56. package/lib/components/VImg/index.d.mts +16 -7
  57. package/lib/components/VInput/index.d.mts +6 -6
  58. package/lib/components/VList/VList.mjs +1 -0
  59. package/lib/components/VList/VList.mjs.map +1 -1
  60. package/lib/components/VList/index.d.mts +14 -12
  61. package/lib/components/VMenu/VMenu.mjs +1 -1
  62. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  63. package/lib/components/VMenu/index.d.mts +33 -33
  64. package/lib/components/VOverlay/VOverlay.mjs +4 -3
  65. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  66. package/lib/components/VOverlay/index.d.mts +7 -7
  67. package/lib/components/VRadioGroup/index.d.mts +6 -6
  68. package/lib/components/VRangeSlider/index.d.mts +6 -6
  69. package/lib/components/VSelect/index.d.mts +49 -49
  70. package/lib/components/VSlider/index.d.mts +6 -6
  71. package/lib/components/VSnackbar/index.d.mts +33 -33
  72. package/lib/components/VSpeedDial/index.d.mts +9 -9
  73. package/lib/components/VSwitch/index.d.mts +6 -6
  74. package/lib/components/VTabs/index.d.mts +21 -3
  75. package/lib/components/VTextField/index.d.mts +18 -18
  76. package/lib/components/VTextarea/index.d.mts +18 -18
  77. package/lib/components/VTooltip/index.d.mts +39 -39
  78. package/lib/components/VValidation/index.d.mts +9 -8
  79. package/lib/components/index.d.mts +707 -509
  80. package/lib/composables/scroll.mjs +6 -0
  81. package/lib/composables/scroll.mjs.map +1 -1
  82. package/lib/composables/validation.mjs +8 -6
  83. package/lib/composables/validation.mjs.map +1 -1
  84. package/lib/entry-bundler.mjs +1 -1
  85. package/lib/entry-bundler.mjs.map +1 -1
  86. package/lib/framework.mjs +1 -1
  87. package/lib/framework.mjs.map +1 -1
  88. package/lib/index.d.mts +56 -56
  89. package/lib/labs/VDateInput/index.d.mts +6 -6
  90. package/lib/labs/VNumberInput/index.d.mts +6 -6
  91. package/lib/labs/VSnackbarQueue/index.d.mts +42 -42
  92. package/lib/labs/VStepperVertical/index.d.mts +90 -18
  93. package/lib/labs/VTimePicker/VTimePickerClock.mjs +3 -1
  94. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  95. package/lib/labs/VTimePicker/VTimePickerControls.mjs +7 -2
  96. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  97. package/lib/labs/VTreeview/VTreeview.mjs +3 -4
  98. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  99. package/lib/labs/VTreeview/index.d.mts +22 -16
  100. package/lib/labs/components.d.mts +166 -88
  101. package/package.json +1 -1
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.8-master.2024-06-11
2
+ * Vuetify v3.6.9-dev.2024-06-20
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -3692,6 +3692,7 @@
3692
3692
  // not intended for public use, this is passed in by vuetify-loader
3693
3693
 
3694
3694
  const makeVImgProps = propsFactory({
3695
+ absolute: Boolean,
3695
3696
  alt: String,
3696
3697
  cover: Boolean,
3697
3698
  color: String,
@@ -3948,6 +3949,7 @@
3948
3949
  const responsiveProps = VResponsive.filterProps(props);
3949
3950
  return vue.withDirectives(vue.createVNode(VResponsive, vue.mergeProps({
3950
3951
  "class": ['v-img', {
3952
+ 'v-img--absolute': props.absolute,
3951
3953
  'v-img--booting': !isBooted.value
3952
3954
  }, backgroundColorClasses.value, roundedClasses.value, props.class],
3953
3955
  "style": [{
@@ -4200,6 +4202,7 @@
4200
4202
  canScroll
4201
4203
  } = args;
4202
4204
  let previousScroll = 0;
4205
+ let previousScrollHeight = 0;
4203
4206
  const target = vue.ref(null);
4204
4207
  const currentScroll = vue.shallowRef(0);
4205
4208
  const savedScroll = vue.shallowRef(0);
@@ -4222,6 +4225,11 @@
4222
4225
  if (!targetEl || canScroll && !canScroll.value) return;
4223
4226
  previousScroll = currentScroll.value;
4224
4227
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
4228
+ const currentScrollHeight = targetEl instanceof Window ? document.documentElement.scrollHeight : targetEl.scrollHeight;
4229
+ if (previousScrollHeight !== currentScrollHeight) {
4230
+ previousScrollHeight = currentScrollHeight;
4231
+ return;
4232
+ }
4225
4233
  isScrollingUp.value = currentScroll.value < previousScroll;
4226
4234
  currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
4227
4235
  };
@@ -5741,6 +5749,7 @@
5741
5749
  type: Boolean,
5742
5750
  default: undefined
5743
5751
  },
5752
+ activeColor: String,
5744
5753
  baseColor: String,
5745
5754
  symbol: {
5746
5755
  type: null,
@@ -5832,10 +5841,11 @@
5832
5841
  }
5833
5842
  return group?.isSelected.value;
5834
5843
  });
5844
+ const color = vue.computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5835
5845
  const variantProps = vue.computed(() => {
5836
5846
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5837
5847
  return {
5838
- color: showColor ? props.color ?? props.baseColor : props.baseColor,
5848
+ color: showColor ? color.value ?? props.baseColor : props.baseColor,
5839
5849
  variant: props.variant
5840
5850
  };
5841
5851
  });
@@ -6176,6 +6186,7 @@
6176
6186
  icon: IconValue,
6177
6187
  image: String,
6178
6188
  text: String,
6189
+ ...makeBorderProps(),
6179
6190
  ...makeComponentProps(),
6180
6191
  ...makeDensityProps(),
6181
6192
  ...makeRoundedProps(),
@@ -6196,6 +6207,9 @@
6196
6207
  const {
6197
6208
  themeClasses
6198
6209
  } = provideTheme(props);
6210
+ const {
6211
+ borderClasses
6212
+ } = useBorder(props);
6199
6213
  const {
6200
6214
  colorClasses,
6201
6215
  colorStyles,
@@ -6215,7 +6229,7 @@
6215
6229
  "class": ['v-avatar', {
6216
6230
  'v-avatar--start': props.start,
6217
6231
  'v-avatar--end': props.end
6218
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6232
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6219
6233
  "style": [colorStyles.value, sizeStyles.value, props.style]
6220
6234
  }, {
6221
6235
  default: () => [!slots.default ? props.image ? vue.createVNode(VImg, {
@@ -6915,12 +6929,14 @@
6915
6929
  const validateOn = vue.computed(() => {
6916
6930
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
6917
6931
  if (value === 'lazy') value = 'input lazy';
6932
+ if (value === 'eager') value = 'input eager';
6918
6933
  const set = new Set(value?.split(' ') ?? []);
6919
6934
  return {
6920
- blur: set.has('blur') || set.has('input'),
6921
6935
  input: set.has('input'),
6922
- submit: set.has('submit'),
6923
- lazy: set.has('lazy')
6936
+ blur: set.has('blur') || set.has('input') || set.has('invalid-input'),
6937
+ invalidInput: set.has('invalid-input'),
6938
+ lazy: set.has('lazy'),
6939
+ eager: set.has('eager')
6924
6940
  };
6925
6941
  });
6926
6942
  const isValid = vue.computed(() => {
@@ -6957,11 +6973,11 @@
6957
6973
  });
6958
6974
  vue.onMounted(async () => {
6959
6975
  if (!validateOn.value.lazy) {
6960
- await validate(true);
6976
+ await validate(!validateOn.value.eager);
6961
6977
  }
6962
6978
  form?.update(uid.value, isValid.value, errorMessages.value);
6963
6979
  });
6964
- useToggleScope(() => validateOn.value.input, () => {
6980
+ useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
6965
6981
  vue.watch(validationModel, () => {
6966
6982
  if (validationModel.value != null) {
6967
6983
  validate();
@@ -6989,7 +7005,7 @@
6989
7005
  async function resetValidation() {
6990
7006
  isPristine.value = true;
6991
7007
  if (!validateOn.value.lazy) {
6992
- await validate(true);
7008
+ await validate(!validateOn.value.eager);
6993
7009
  } else {
6994
7010
  internalErrorMessages.value = [];
6995
7011
  }
@@ -9621,6 +9637,7 @@
9621
9637
  nav: Boolean,
9622
9638
  'onClick:open': EventProp(),
9623
9639
  'onClick:select': EventProp(),
9640
+ 'onUpdate:opened': EventProp(),
9624
9641
  ...makeNestedProps({
9625
9642
  selectStrategy: 'single-leaf',
9626
9643
  openStrategy: 'list'
@@ -11024,9 +11041,6 @@
11024
11041
  if (!(v && props.disabled)) model.value = v;
11025
11042
  }
11026
11043
  });
11027
- const {
11028
- teleportTarget
11029
- } = useTeleport(vue.computed(() => props.attach || props.contained));
11030
11044
  const {
11031
11045
  themeClasses
11032
11046
  } = provideTheme(props);
@@ -11059,6 +11073,10 @@
11059
11073
  isActive,
11060
11074
  isTop: localTop
11061
11075
  });
11076
+ const potentialShadowDomRoot = vue.computed(() => activatorEl?.value?.getRootNode());
11077
+ const {
11078
+ teleportTarget
11079
+ } = useTeleport(vue.computed(() => props.attach || props.contained || potentialShadowDomRoot.value instanceof ShadowRoot ? potentialShadowDomRoot.value : false));
11062
11080
  const {
11063
11081
  dimensionStyles
11064
11082
  } = useDimension(props);
@@ -11401,7 +11419,7 @@
11401
11419
  function onKeydown(e) {
11402
11420
  if (props.disabled) return;
11403
11421
  if (e.key === 'Tab' || e.key === 'Enter' && !props.closeOnContentClick) {
11404
- if (e.key === 'Enter' && e.target instanceof HTMLTextAreaElement) return;
11422
+ if (e.key === 'Enter' && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest('form'))) return;
11405
11423
  if (e.key === 'Enter') e.preventDefault();
11406
11424
  const nextElement = getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? 'prev' : 'next', el => el.tabIndex >= 0);
11407
11425
  if (!nextElement) {
@@ -21129,6 +21147,7 @@
21129
21147
  default: false
21130
21148
  },
21131
21149
  ...makeComponentProps(),
21150
+ ...makeDimensionProps(),
21132
21151
  ...makeTagProps()
21133
21152
  }, 'VContainer');
21134
21153
  const VContainer = genericComponent()({
@@ -21141,11 +21160,14 @@
21141
21160
  const {
21142
21161
  rtlClasses
21143
21162
  } = useRtl();
21163
+ const {
21164
+ dimensionStyles
21165
+ } = useDimension(props);
21144
21166
  useRender(() => vue.createVNode(props.tag, {
21145
21167
  "class": ['v-container', {
21146
21168
  'v-container--fluid': props.fluid
21147
21169
  }, rtlClasses.value, props.class],
21148
- "style": props.style
21170
+ "style": [dimensionStyles.value, props.style]
21149
21171
  }, slots));
21150
21172
  return {};
21151
21173
  }
@@ -22555,7 +22577,8 @@
22555
22577
  default: false
22556
22578
  },
22557
22579
  readonly: Boolean,
22558
- ...makeComponentProps()
22580
+ ...makeComponentProps(),
22581
+ ...makeDimensionProps()
22559
22582
  }, 'VExpansionPanelTitle');
22560
22583
  const VExpansionPanelTitle = genericComponent()({
22561
22584
  name: 'VExpansionPanelTitle',
@@ -22573,6 +22596,9 @@
22573
22596
  backgroundColorClasses,
22574
22597
  backgroundColorStyles
22575
22598
  } = useBackgroundColor(props, 'color');
22599
+ const {
22600
+ dimensionStyles
22601
+ } = useDimension(props);
22576
22602
  const slotProps = vue.computed(() => ({
22577
22603
  collapseIcon: props.collapseIcon,
22578
22604
  disabled: expansionPanel.disabled.value,
@@ -22580,13 +22606,14 @@
22580
22606
  expandIcon: props.expandIcon,
22581
22607
  readonly: props.readonly
22582
22608
  }));
22609
+ const icon = vue.computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22583
22610
  useRender(() => vue.withDirectives(vue.createVNode("button", {
22584
22611
  "class": ['v-expansion-panel-title', {
22585
22612
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
22586
22613
  'v-expansion-panel-title--focusable': props.focusable,
22587
22614
  'v-expansion-panel-title--static': props.static
22588
22615
  }, backgroundColorClasses.value, props.class],
22589
- "style": [backgroundColorStyles.value, props.style],
22616
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
22590
22617
  "type": "button",
22591
22618
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
22592
22619
  "disabled": expansionPanel.disabled.value,
@@ -22594,11 +22621,17 @@
22594
22621
  "onClick": !props.readonly ? expansionPanel.toggle : undefined
22595
22622
  }, [vue.createVNode("span", {
22596
22623
  "class": "v-expansion-panel-title__overlay"
22597
- }, null), slots.default?.(slotProps.value), !props.hideActions && vue.createVNode("span", {
22598
- "class": "v-expansion-panel-title__icon"
22599
- }, [slots.actions ? slots.actions(slotProps.value) : vue.createVNode(VIcon, {
22600
- "icon": expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon
22601
- }, null)])]), [[vue.resolveDirective("ripple"), props.ripple]]));
22624
+ }, null), slots.default?.(slotProps.value), !props.hideActions && vue.createVNode(VDefaultsProvider, {
22625
+ "defaults": {
22626
+ VIcon: {
22627
+ icon: icon.value
22628
+ }
22629
+ }
22630
+ }, {
22631
+ default: () => [vue.createVNode("span", {
22632
+ "class": "v-expansion-panel-title__icon"
22633
+ }, [slots.actions?.(slotProps.value) ?? vue.createVNode(VIcon, null, null)])]
22634
+ })]), [[vue.resolveDirective("ripple"), props.ripple]]));
22602
22635
  return {};
22603
22636
  }
22604
22637
  });
@@ -22665,15 +22698,26 @@
22665
22698
  }, {
22666
22699
  default: () => [vue.createVNode("div", {
22667
22700
  "class": ['v-expansion-panel__shadow', ...elevationClasses.value]
22668
- }, null), hasTitle && vue.createVNode(VExpansionPanelTitle, vue.mergeProps({
22669
- "key": "title"
22670
- }, expansionPanelTitleProps), {
22671
- default: () => [slots.title ? slots.title() : props.title]
22672
- }), hasText && vue.createVNode(VExpansionPanelText, vue.mergeProps({
22673
- "key": "text"
22674
- }, expansionPanelTextProps), {
22675
- default: () => [slots.text ? slots.text() : props.text]
22676
- }), slots.default?.()]
22701
+ }, null), vue.createVNode(VDefaultsProvider, {
22702
+ "defaults": {
22703
+ VExpansionPanelTitle: {
22704
+ ...expansionPanelTitleProps
22705
+ },
22706
+ VExpansionPanelText: {
22707
+ ...expansionPanelTextProps
22708
+ }
22709
+ }
22710
+ }, {
22711
+ default: () => [hasTitle && vue.createVNode(VExpansionPanelTitle, {
22712
+ "key": "title"
22713
+ }, {
22714
+ default: () => [slots.title ? slots.title() : props.title]
22715
+ }), hasText && vue.createVNode(VExpansionPanelText, {
22716
+ "key": "text"
22717
+ }, {
22718
+ default: () => [slots.text ? slots.text() : props.text]
22719
+ }), slots.default?.()]
22720
+ })]
22677
22721
  });
22678
22722
  });
22679
22723
  return {
@@ -22749,15 +22793,13 @@
22749
22793
  }
22750
22794
  });
22751
22795
 
22796
+ // Types
22797
+
22752
22798
  const makeVFabProps = propsFactory({
22753
22799
  app: Boolean,
22754
22800
  appear: Boolean,
22755
22801
  extended: Boolean,
22756
22802
  layout: Boolean,
22757
- location: {
22758
- type: String,
22759
- default: 'bottom end'
22760
- },
22761
22803
  offset: Boolean,
22762
22804
  modelValue: {
22763
22805
  type: Boolean,
@@ -22767,6 +22809,7 @@
22767
22809
  active: true
22768
22810
  }), ['location']),
22769
22811
  ...makeLayoutItemProps(),
22812
+ ...makeLocationProps(),
22770
22813
  ...makeTransitionProps({
22771
22814
  transition: 'fab-transition'
22772
22815
  })
@@ -22793,11 +22836,11 @@
22793
22836
  const hasPosition = vue.computed(() => props.app || props.absolute);
22794
22837
  const position = vue.computed(() => {
22795
22838
  if (!hasPosition.value) return false;
22796
- return props.location.split(' ').shift();
22839
+ return props.location?.split(' ').shift() ?? 'bottom';
22797
22840
  });
22798
22841
  const orientation = vue.computed(() => {
22799
22842
  if (!hasPosition.value) return false;
22800
- return props.location.split(' ')[1] ?? 'end';
22843
+ return props.location?.split(' ')[1] ?? 'end';
22801
22844
  });
22802
22845
  useToggleScope(() => props.app, () => {
22803
22846
  const layout = useLayoutItem({
@@ -28071,7 +28114,7 @@
28071
28114
  goTo
28072
28115
  };
28073
28116
  }
28074
- const version$1 = "3.6.8-master.2024-06-11";
28117
+ const version$1 = "3.6.9-dev.2024-06-20";
28075
28118
  createVuetify$1.version = version$1;
28076
28119
 
28077
28120
  // Vue's inject() can only be used in setup
@@ -28096,7 +28139,7 @@
28096
28139
  ...options
28097
28140
  });
28098
28141
  };
28099
- const version = "3.6.8-master.2024-06-11";
28142
+ const version = "3.6.9-dev.2024-06-20";
28100
28143
  createVuetify.version = version;
28101
28144
 
28102
28145
  exports.blueprints = index;