vuetify 3.0.4 → 3.0.5

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 (72) hide show
  1. package/dist/json/attributes.json +25 -9
  2. package/dist/json/importMap.json +52 -52
  3. package/dist/json/tags.json +4 -0
  4. package/dist/json/web-types.json +57 -28
  5. package/dist/vuetify.css +55 -56
  6. package/dist/vuetify.d.ts +278 -170
  7. package/dist/vuetify.esm.js +199 -167
  8. package/dist/vuetify.esm.js.map +1 -1
  9. package/dist/vuetify.js +199 -167
  10. package/dist/vuetify.js.map +1 -1
  11. package/dist/vuetify.min.css +2 -2
  12. package/dist/vuetify.min.js +100 -100
  13. package/dist/vuetify.min.js.map +1 -1
  14. package/lib/components/VAlert/index.d.ts +1 -1
  15. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  16. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  17. package/lib/components/VAutocomplete/index.d.ts +41 -24
  18. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +6 -3
  19. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  20. package/lib/components/VBottomNavigation/index.d.ts +9 -0
  21. package/lib/components/VBtn/index.d.ts +2 -3
  22. package/lib/components/VCard/index.d.ts +2 -3
  23. package/lib/components/VChip/VChip.mjs +1 -1
  24. package/lib/components/VChip/VChip.mjs.map +1 -1
  25. package/lib/components/VChip/index.d.ts +1 -1
  26. package/lib/components/VChipGroup/index.d.ts +1 -1
  27. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  28. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  29. package/lib/components/VCombobox/index.d.ts +41 -24
  30. package/lib/components/VDialog/index.d.ts +21 -6
  31. package/lib/components/VExpansionPanel/index.d.ts +1 -1
  32. package/lib/components/VField/VField.mjs +1 -1
  33. package/lib/components/VField/VField.mjs.map +1 -1
  34. package/lib/components/VField/index.d.ts +5 -8
  35. package/lib/components/VFileInput/index.d.ts +3 -4
  36. package/lib/components/VMenu/index.d.ts +21 -6
  37. package/lib/components/VOverlay/VOverlay.mjs +10 -3
  38. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  39. package/lib/components/VOverlay/index.d.ts +8 -1
  40. package/lib/components/VPagination/index.d.ts +1 -1
  41. package/lib/components/VSelect/VSelect.mjs +6 -2
  42. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  43. package/lib/components/VSelect/index.d.ts +41 -24
  44. package/lib/components/VSnackbar/index.d.ts +25 -10
  45. package/lib/components/VTabs/VTab.css +1 -2
  46. package/lib/components/VTabs/VTab.sass +4 -3
  47. package/lib/components/VTextField/index.d.ts +20 -29
  48. package/lib/components/VTextarea/index.d.ts +2 -3
  49. package/lib/components/VToolbar/VToolbar.mjs +6 -0
  50. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  51. package/lib/components/VTooltip/VTooltip.mjs +2 -1
  52. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  53. package/lib/components/VTooltip/index.d.ts +21 -6
  54. package/lib/components/index.d.ts +264 -156
  55. package/lib/composables/display.mjs +5 -4
  56. package/lib/composables/display.mjs.map +1 -1
  57. package/lib/composables/hydration.mjs +13 -8
  58. package/lib/composables/hydration.mjs.map +1 -1
  59. package/lib/composables/loader.mjs +1 -1
  60. package/lib/composables/loader.mjs.map +1 -1
  61. package/lib/composables/stack.mjs +16 -9
  62. package/lib/composables/stack.mjs.map +1 -1
  63. package/lib/composables/validation.mjs +2 -2
  64. package/lib/composables/validation.mjs.map +1 -1
  65. package/lib/entry-bundler.mjs +1 -1
  66. package/lib/framework.mjs +1 -1
  67. package/lib/index.d.ts +14 -14
  68. package/lib/services/goto/util.mjs +1 -1
  69. package/lib/services/goto/util.mjs.map +1 -1
  70. package/lib/util/console.mjs +3 -3
  71. package/lib/util/console.mjs.map +1 -1
  72. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.0.4
2
+ * Vuetify v3.0.5
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -513,7 +513,7 @@
513
513
 
514
514
  if (parent) {
515
515
  vm = {
516
- _isVue: true,
516
+ __isVue: true,
517
517
  $parent: parent,
518
518
  $options: vm
519
519
  };
@@ -545,7 +545,7 @@
545
545
  if (vm.$root === vm) {
546
546
  return '<Root>';
547
547
  }
548
- const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm || {};
548
+ const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm.__isVue ? vm.$options || vm.constructor.options : vm || {};
549
549
  let name = options.name || options._componentTag;
550
550
  const file = options.__file;
551
551
  if (!name && file) {
@@ -555,7 +555,7 @@
555
555
  return (name ? `<${classify(name)}>` : `<Anonymous>`) + (file && includeFile !== false ? ` at ${file}` : '');
556
556
  }
557
557
  function generateComponentTrace(vm) {
558
- if (vm._isVue && vm.$parent) {
558
+ if (vm.__isVue && vm.$parent) {
559
559
  const tree = [];
560
560
  let currentRecursiveSequence = 0;
561
561
  while (vm) {
@@ -3147,6 +3147,11 @@
3147
3147
  const isExtended = vue.ref(!!(props.extended || (_slots$extension = slots.extension) != null && _slots$extension.call(slots)));
3148
3148
  const contentHeight = vue.computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
3149
3149
  const extensionHeight = vue.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);
3150
+ provideDefaults({
3151
+ VBtn: {
3152
+ variant: 'text'
3153
+ }
3154
+ });
3150
3155
  useRender(() => {
3151
3156
  var _slots$extension2, _slots$image, _slots$prepend, _slots$default, _slots$append;
3152
3157
  const hasTitle = !!(props.title || slots.title);
@@ -4531,7 +4536,7 @@
4531
4536
 
4532
4537
  // Composables
4533
4538
  const makeLoaderProps = propsFactory({
4534
- loading: Boolean
4539
+ loading: [Boolean, String]
4535
4540
  }, 'loader');
4536
4541
  function useLoader(props) {
4537
4542
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
@@ -5409,7 +5414,7 @@
5409
5414
  "class": "v-field__overlay"
5410
5415
  }, null), vue.createVNode(LoaderSlot, {
5411
5416
  "name": "v-field",
5412
- "active": props.loading,
5417
+ "active": !!props.loading,
5413
5418
  "color": props.error ? 'error' : props.color
5414
5419
  }, {
5415
5420
  default: slots.loader
@@ -5702,7 +5707,7 @@
5702
5707
  const isDisabled = vue.computed(() => !!(props.disabled || form != null && form.isDisabled.value));
5703
5708
  const isReadonly = vue.computed(() => !!(props.readonly || form != null && form.isReadonly.value));
5704
5709
  const errorMessages = vue.computed(() => {
5705
- return props.errorMessages.length ? wrapInArray(props.errorMessages.slice(0, Math.max(0, +props.maxErrors))) : internalErrorMessages.value;
5710
+ return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
5706
5711
  });
5707
5712
  const isValid = vue.computed(() => {
5708
5713
  if (props.error || errorMessages.value.length) return false;
@@ -5766,7 +5771,7 @@
5766
5771
  const results = [];
5767
5772
  isValidating.value = true;
5768
5773
  for (const rule of props.rules) {
5769
- if (results.length >= (props.maxErrors || 1)) {
5774
+ if (results.length >= (props.maxErrors ?? 1)) {
5770
5775
  break;
5771
5776
  }
5772
5777
  const handler = typeof rule === 'function' ? rule : () => rule;
@@ -6799,7 +6804,7 @@
6799
6804
  "class": ['v-chip', {
6800
6805
  'v-chip--disabled': props.disabled,
6801
6806
  'v-chip--label': props.label,
6802
- 'v-chip--link': isClickable,
6807
+ 'v-chip--link': isClickable.value,
6803
6808
  'v-chip--filter': hasFilter,
6804
6809
  'v-chip--pill': props.pill
6805
6810
  }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group == null ? void 0 : group.selectedClass.value],
@@ -9042,25 +9047,163 @@
9042
9047
  });
9043
9048
  }
9044
9049
 
9050
+ // Utilities
9051
+
9052
+ // Types
9053
+
9054
+ const DisplaySymbol = Symbol.for('vuetify:display');
9055
+ const defaultDisplayOptions = {
9056
+ mobileBreakpoint: 'lg',
9057
+ thresholds: {
9058
+ xs: 0,
9059
+ sm: 600,
9060
+ md: 960,
9061
+ lg: 1280,
9062
+ xl: 1920,
9063
+ xxl: 2560
9064
+ }
9065
+ };
9066
+ const parseDisplayOptions = function () {
9067
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
9068
+ return mergeDeep(defaultDisplayOptions, options);
9069
+ };
9070
+ function getClientWidth(isHydrate) {
9071
+ return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
9072
+ }
9073
+ function getClientHeight(isHydrate) {
9074
+ return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9075
+ }
9076
+ function getPlatform() {
9077
+ const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
9078
+ function match(regexp) {
9079
+ return Boolean(userAgent.match(regexp));
9080
+ }
9081
+ const android = match(/android/i);
9082
+ const ios = match(/iphone|ipad|ipod/i);
9083
+ const cordova = match(/cordova/i);
9084
+ const electron = match(/electron/i);
9085
+ const chrome = match(/chrome/i);
9086
+ const edge = match(/edge/i);
9087
+ const firefox = match(/firefox/i);
9088
+ const opera = match(/opera/i);
9089
+ const win = match(/win/i);
9090
+ const mac = match(/mac/i);
9091
+ const linux = match(/linux/i);
9092
+ const ssr = match(/ssr/i);
9093
+ return {
9094
+ android,
9095
+ ios,
9096
+ cordova,
9097
+ electron,
9098
+ chrome,
9099
+ edge,
9100
+ firefox,
9101
+ opera,
9102
+ win,
9103
+ mac,
9104
+ linux,
9105
+ touch: SUPPORTS_TOUCH,
9106
+ ssr
9107
+ };
9108
+ }
9109
+ function createDisplay(options, ssr) {
9110
+ const {
9111
+ thresholds,
9112
+ mobileBreakpoint
9113
+ } = parseDisplayOptions(options);
9114
+ const height = vue.ref(getClientHeight(ssr));
9115
+ const platform = getPlatform();
9116
+ const state = vue.reactive({});
9117
+ const width = vue.ref(getClientWidth(ssr));
9118
+ function update() {
9119
+ height.value = getClientHeight();
9120
+ width.value = getClientWidth();
9121
+ }
9122
+
9123
+ // eslint-disable-next-line max-statements
9124
+ vue.watchEffect(() => {
9125
+ const xs = width.value < thresholds.sm;
9126
+ const sm = width.value < thresholds.md && !xs;
9127
+ const md = width.value < thresholds.lg && !(sm || xs);
9128
+ const lg = width.value < thresholds.xl && !(md || sm || xs);
9129
+ const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);
9130
+ const xxl = width.value >= thresholds.xxl;
9131
+ const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
9132
+ const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
9133
+ const mobile = !platform.ssr ? width.value < breakpointValue : platform.android || platform.ios || platform.opera;
9134
+ state.xs = xs;
9135
+ state.sm = sm;
9136
+ state.md = md;
9137
+ state.lg = lg;
9138
+ state.xl = xl;
9139
+ state.xxl = xxl;
9140
+ state.smAndUp = !xs;
9141
+ state.mdAndUp = !(xs || sm);
9142
+ state.lgAndUp = !(xs || sm || md);
9143
+ state.xlAndUp = !(xs || sm || md || lg);
9144
+ state.smAndDown = !(md || lg || xl || xxl);
9145
+ state.mdAndDown = !(lg || xl || xxl);
9146
+ state.lgAndDown = !(xl || xxl);
9147
+ state.xlAndDown = !xxl;
9148
+ state.name = name;
9149
+ state.height = height.value;
9150
+ state.width = width.value;
9151
+ state.mobile = mobile;
9152
+ state.mobileBreakpoint = mobileBreakpoint;
9153
+ state.platform = platform;
9154
+ state.thresholds = thresholds;
9155
+ });
9156
+ if (IN_BROWSER) {
9157
+ window.addEventListener('resize', update, {
9158
+ passive: true
9159
+ });
9160
+ }
9161
+ return {
9162
+ ...vue.toRefs(state),
9163
+ update,
9164
+ ssr: !!ssr
9165
+ };
9166
+ }
9167
+ function useDisplay() {
9168
+ const display = vue.inject(DisplaySymbol);
9169
+ if (!display) throw new Error('Could not find Vuetify display injection');
9170
+ return display;
9171
+ }
9172
+
9045
9173
  // Utilities
9046
9174
  function useHydration() {
9047
- var _vm$root, _vm$root$appContext, _vm$root$appContext$a;
9048
9175
  if (!IN_BROWSER) return vue.ref(false);
9049
- const vm = getCurrentInstance('useHydration');
9050
- const rootEl = vm == null ? void 0 : (_vm$root = vm.root) == null ? void 0 : (_vm$root$appContext = _vm$root.appContext) == null ? void 0 : (_vm$root$appContext$a = _vm$root$appContext.app) == null ? void 0 : _vm$root$appContext$a._container;
9051
- const isMounted = vue.ref(!!(rootEl != null && rootEl.__vue_app__));
9052
- if (!isMounted.value) {
9053
- vue.onMounted(() => isMounted.value = true);
9176
+ const {
9177
+ ssr
9178
+ } = useDisplay();
9179
+ if (ssr) {
9180
+ const isMounted = vue.ref(false);
9181
+ vue.onMounted(() => {
9182
+ isMounted.value = true;
9183
+ });
9184
+ return isMounted;
9185
+ } else {
9186
+ return vue.ref(true);
9054
9187
  }
9055
- return isMounted;
9188
+ }
9189
+
9190
+ function useScopeId() {
9191
+ const vm = getCurrentInstance('useScopeId');
9192
+ const scopeId = vm.vnode.scopeId;
9193
+ return {
9194
+ scopeId: scopeId ? {
9195
+ [scopeId]: ''
9196
+ } : undefined
9197
+ };
9056
9198
  }
9057
9199
 
9058
9200
  // Types
9059
9201
 
9060
9202
  const StackSymbol = Symbol.for('vuetify:stack');
9061
9203
  const globalStack = vue.reactive([]);
9062
- function useStack(isActive, zIndex) {
9204
+ function useStack(isActive, zIndex, disableGlobalStack) {
9063
9205
  const vm = getCurrentInstance('useStack');
9206
+ const createStackEntry = !disableGlobalStack;
9064
9207
  const parent = vue.inject(StackSymbol, undefined);
9065
9208
  const stack = vue.reactive({
9066
9209
  activeChildren: new Set()
@@ -9071,20 +9214,26 @@
9071
9214
  var _globalStack$at;
9072
9215
  const lastZIndex = (_globalStack$at = globalStack.at(-1)) == null ? void 0 : _globalStack$at[1];
9073
9216
  _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
9074
- globalStack.push([vm.uid, _zIndex.value]);
9217
+ if (createStackEntry) {
9218
+ globalStack.push([vm.uid, _zIndex.value]);
9219
+ }
9075
9220
  parent == null ? void 0 : parent.activeChildren.add(vm.uid);
9076
9221
  vue.onScopeDispose(() => {
9077
- const idx = globalStack.findIndex(v => v[0] === vm.uid);
9078
- globalStack.splice(idx, 1);
9222
+ if (createStackEntry) {
9223
+ const idx = globalStack.findIndex(v => v[0] === vm.uid);
9224
+ globalStack.splice(idx, 1);
9225
+ }
9079
9226
  parent == null ? void 0 : parent.activeChildren.delete(vm.uid);
9080
9227
  });
9081
9228
  });
9082
9229
  const globalTop = vue.ref(true);
9083
- vue.watchEffect(() => {
9084
- var _globalStack$at2;
9085
- const _isTop = ((_globalStack$at2 = globalStack.at(-1)) == null ? void 0 : _globalStack$at2[0]) === vm.uid;
9086
- setTimeout(() => globalTop.value = _isTop);
9087
- });
9230
+ if (createStackEntry) {
9231
+ vue.watchEffect(() => {
9232
+ var _globalStack$at2;
9233
+ const _isTop = ((_globalStack$at2 = globalStack.at(-1)) == null ? void 0 : _globalStack$at2[0]) === vm.uid;
9234
+ setTimeout(() => globalTop.value = _isTop);
9235
+ });
9236
+ }
9088
9237
  const localTop = vue.computed(() => !stack.activeChildren.size);
9089
9238
  return {
9090
9239
  globalTop: vue.readonly(globalTop),
@@ -9263,7 +9412,10 @@
9263
9412
  ClickOutside
9264
9413
  },
9265
9414
  inheritAttrs: false,
9266
- props: makeVOverlayProps(),
9415
+ props: {
9416
+ _disableGlobalStack: Boolean,
9417
+ ...makeVOverlayProps()
9418
+ },
9267
9419
  emits: {
9268
9420
  'click:outside': e => true,
9269
9421
  'update:modelValue': value => true,
@@ -9303,7 +9455,7 @@
9303
9455
  globalTop,
9304
9456
  localTop,
9305
9457
  stackStyles
9306
- } = useStack(isActive, vue.toRef(props, 'zIndex'));
9458
+ } = useStack(isActive, vue.toRef(props, 'zIndex'), props._disableGlobalStack);
9307
9459
  const {
9308
9460
  activatorEl,
9309
9461
  activatorRef,
@@ -9318,6 +9470,9 @@
9318
9470
  dimensionStyles
9319
9471
  } = useDimension(props);
9320
9472
  const isMounted = useHydration();
9473
+ const {
9474
+ scopeId
9475
+ } = useScopeId();
9321
9476
  vue.watch(() => props.disabled, v => {
9322
9477
  if (v) isActive.value = false;
9323
9478
  });
@@ -9418,7 +9573,7 @@
9418
9573
  top: convertToUnit(top.value)
9419
9574
  }],
9420
9575
  "ref": root
9421
- }, attrs), [vue.createVNode(Scrim, vue.mergeProps({
9576
+ }, scopeId, attrs), [vue.createVNode(Scrim, vue.mergeProps({
9422
9577
  "color": scrimColor,
9423
9578
  "modelValue": isActive.value && !!props.scrim
9424
9579
  }, vue.toHandlers(scrimEvents.value)), null), vue.createVNode(MaybeTransition, {
@@ -9459,16 +9614,6 @@
9459
9614
  return pick(props, Object.keys(VOverlay.props));
9460
9615
  }
9461
9616
 
9462
- function useScopeId() {
9463
- const vm = getCurrentInstance('useScopeId');
9464
- const scopeId = vm.vnode.scopeId;
9465
- return {
9466
- scopeId: scopeId ? {
9467
- [scopeId]: ''
9468
- } : undefined
9469
- };
9470
- }
9471
-
9472
9617
  // Types
9473
9618
 
9474
9619
  const VMenu = genericComponent()({
@@ -9585,6 +9730,10 @@
9585
9730
  default: '$vuetify.noDataText'
9586
9731
  },
9587
9732
  openOnClear: Boolean,
9733
+ valueComparator: {
9734
+ type: Function,
9735
+ default: deepEqual
9736
+ },
9588
9737
  ...makeItemsProps({
9589
9738
  itemChildren: false
9590
9739
  })
@@ -9626,7 +9775,7 @@
9626
9775
  });
9627
9776
  const selections = vue.computed(() => {
9628
9777
  return model.value.map(v => {
9629
- return items.value.find(item => item.value === v.value) || v;
9778
+ return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
9630
9779
  });
9631
9780
  });
9632
9781
  const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
@@ -9967,7 +10116,7 @@
9967
10116
  } = useFilter(props, items, vue.computed(() => isPristine.value ? undefined : search.value));
9968
10117
  const selections = vue.computed(() => {
9969
10118
  return model.value.map(v => {
9970
- return items.value.find(item => item.value === v.value) || v;
10119
+ return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
9971
10120
  });
9972
10121
  });
9973
10122
  const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
@@ -10316,128 +10465,6 @@
10316
10465
 
10317
10466
  const VBannerText = createSimpleFunctional('v-banner-text');
10318
10467
 
10319
- // Utilities
10320
-
10321
- // Types
10322
-
10323
- const DisplaySymbol = Symbol.for('vuetify:display');
10324
- const defaultDisplayOptions = {
10325
- mobileBreakpoint: 'lg',
10326
- thresholds: {
10327
- xs: 0,
10328
- sm: 600,
10329
- md: 960,
10330
- lg: 1280,
10331
- xl: 1920,
10332
- xxl: 2560
10333
- }
10334
- };
10335
- const parseDisplayOptions = function () {
10336
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
10337
- return mergeDeep(defaultDisplayOptions, options);
10338
- };
10339
- function getClientWidth(isHydrate) {
10340
- return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
10341
- }
10342
- function getClientHeight(isHydrate) {
10343
- return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
10344
- }
10345
- function getPlatform() {
10346
- const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
10347
- function match(regexp) {
10348
- return Boolean(userAgent.match(regexp));
10349
- }
10350
- const android = match(/android/i);
10351
- const ios = match(/iphone|ipad|ipod/i);
10352
- const cordova = match(/cordova/i);
10353
- const electron = match(/electron/i);
10354
- const chrome = match(/chrome/i);
10355
- const edge = match(/edge/i);
10356
- const firefox = match(/firefox/i);
10357
- const opera = match(/opera/i);
10358
- const win = match(/win/i);
10359
- const mac = match(/mac/i);
10360
- const linux = match(/linux/i);
10361
- const ssr = match(/ssr/i);
10362
- return {
10363
- android,
10364
- ios,
10365
- cordova,
10366
- electron,
10367
- chrome,
10368
- edge,
10369
- firefox,
10370
- opera,
10371
- win,
10372
- mac,
10373
- linux,
10374
- touch: SUPPORTS_TOUCH,
10375
- ssr
10376
- };
10377
- }
10378
- function createDisplay(options, isHydrate) {
10379
- const {
10380
- thresholds,
10381
- mobileBreakpoint
10382
- } = parseDisplayOptions(options);
10383
- const height = vue.ref(getClientHeight(isHydrate));
10384
- const platform = getPlatform();
10385
- const state = vue.reactive({});
10386
- const width = vue.ref(getClientWidth(isHydrate));
10387
- function update() {
10388
- height.value = getClientHeight();
10389
- width.value = getClientWidth();
10390
- }
10391
-
10392
- // eslint-disable-next-line max-statements
10393
- vue.watchEffect(() => {
10394
- const xs = width.value < thresholds.sm;
10395
- const sm = width.value < thresholds.md && !xs;
10396
- const md = width.value < thresholds.lg && !(sm || xs);
10397
- const lg = width.value < thresholds.xl && !(md || sm || xs);
10398
- const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);
10399
- const xxl = width.value >= thresholds.xxl;
10400
- const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
10401
- const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
10402
- const mobile = !platform.ssr ? width.value < breakpointValue : platform.android || platform.ios || platform.opera;
10403
- state.xs = xs;
10404
- state.sm = sm;
10405
- state.md = md;
10406
- state.lg = lg;
10407
- state.xl = xl;
10408
- state.xxl = xxl;
10409
- state.smAndUp = !xs;
10410
- state.mdAndUp = !(xs || sm);
10411
- state.lgAndUp = !(xs || sm || md);
10412
- state.xlAndUp = !(xs || sm || md || lg);
10413
- state.smAndDown = !(md || lg || xl || xxl);
10414
- state.mdAndDown = !(lg || xl || xxl);
10415
- state.lgAndDown = !(xl || xxl);
10416
- state.xlAndDown = !xxl;
10417
- state.name = name;
10418
- state.height = height.value;
10419
- state.width = width.value;
10420
- state.mobile = mobile;
10421
- state.mobileBreakpoint = mobileBreakpoint;
10422
- state.platform = platform;
10423
- state.thresholds = thresholds;
10424
- });
10425
- if (IN_BROWSER) {
10426
- window.addEventListener('resize', update, {
10427
- passive: true
10428
- });
10429
- }
10430
- return {
10431
- ...vue.toRefs(state),
10432
- update
10433
- };
10434
- }
10435
- function useDisplay() {
10436
- const display = vue.inject(DisplaySymbol);
10437
- if (!display) throw new Error('Could not find Vuetify display injection');
10438
- return display;
10439
- }
10440
-
10441
10468
  // Types
10442
10469
 
10443
10470
  const VBanner = defineComponent({
@@ -10554,6 +10581,10 @@
10554
10581
  type: [Number, String],
10555
10582
  default: 56
10556
10583
  },
10584
+ active: {
10585
+ type: Boolean,
10586
+ default: true
10587
+ },
10557
10588
  ...makeBorderProps(),
10558
10589
  ...makeDensityProps(),
10559
10590
  ...makeElevationProps(),
@@ -10597,7 +10628,7 @@
10597
10628
  roundedClasses
10598
10629
  } = useRounded(props);
10599
10630
  const height = vue.computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
10600
- const isActive = useProxiedModel(props, 'modelValue');
10631
+ const isActive = vue.toRef(props, 'active');
10601
10632
  const {
10602
10633
  layoutItemStyles
10603
10634
  } = useLayoutItem({
@@ -13393,7 +13424,7 @@
13393
13424
  } = useFilter(props, items, vue.computed(() => isPristine.value ? undefined : search.value));
13394
13425
  const selections = vue.computed(() => {
13395
13426
  return model.value.map(v => {
13396
- return items.value.find(item => item.value === v.value) || v;
13427
+ return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
13397
13428
  });
13398
13429
  });
13399
13430
  const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
@@ -17815,7 +17846,8 @@
17815
17846
  "eager": true,
17816
17847
  "activatorProps": vue.mergeProps({
17817
17848
  'aria-describedby': id.value
17818
- }, props.activatorProps)
17849
+ }, props.activatorProps),
17850
+ "_disableGlobalStack": true
17819
17851
  }, scopeId), {
17820
17852
  activator: slots.activator,
17821
17853
  default: function () {
@@ -18198,7 +18230,7 @@
18198
18230
  locale
18199
18231
  };
18200
18232
  }
18201
- const version$1 = "3.0.4";
18233
+ const version$1 = "3.0.5";
18202
18234
  createVuetify$1.version = version$1;
18203
18235
 
18204
18236
  // Vue's inject() can only be used in setup
@@ -18219,7 +18251,7 @@
18219
18251
  ...options
18220
18252
  });
18221
18253
  };
18222
- const version = "3.0.4";
18254
+ const version = "3.0.5";
18223
18255
  createVuetify.version = version;
18224
18256
 
18225
18257
  exports.components = components;