@zeedhi/vuetify 1.45.1 → 1.46.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.
@@ -331,9 +331,7 @@ class Application extends Service {
331
331
  }
332
332
 
333
333
  register(uid, location, size) {
334
- this.application[location] = {
335
- [uid]: size
336
- };
334
+ this.application[location][uid] = size;
337
335
  this.update(location);
338
336
  }
339
337
 
@@ -658,13 +656,20 @@ function createSimpleFunctional(c, el = 'div', name) {
658
656
  return Vue.extend({
659
657
  name: name || c.replace(/__/g, '-'),
660
658
  functional: true,
659
+ props: {
660
+ tag: {
661
+ type: String,
662
+ default: el
663
+ }
664
+ },
661
665
 
662
666
  render(h, {
663
667
  data,
668
+ props,
664
669
  children
665
670
  }) {
666
671
  data.staticClass = `${c} ${data.staticClass || ''}`.trim();
667
- return h(el, data, children);
672
+ return h(props.tag, data, children);
668
673
  }
669
674
 
670
675
  });
@@ -963,12 +968,12 @@ function searchItems(items, search) {
963
968
  */
964
969
 
965
970
  function getSlotType(vm, name, split) {
966
- if (vm.$slots[name] && vm.$scopedSlots[name] && vm.$scopedSlots[name].name) {
971
+ if (vm.$slots.hasOwnProperty(name) && vm.$scopedSlots.hasOwnProperty(name) && vm.$scopedSlots[name].name) {
967
972
  return split ? 'v-slot' : 'scoped';
968
973
  }
969
974
 
970
- if (vm.$slots[name]) return 'normal';
971
- if (vm.$scopedSlots[name]) return 'scoped';
975
+ if (vm.$slots.hasOwnProperty(name)) return 'normal';
976
+ if (vm.$scopedSlots.hasOwnProperty(name)) return 'scoped';
972
977
  }
973
978
  function debounce(fn, delay) {
974
979
  let timeoutId = 0;
@@ -994,9 +999,9 @@ function getPrefixedScopedSlots(prefix, scopedSlots) {
994
999
  }, {});
995
1000
  }
996
1001
  function getSlot(vm, name = 'default', data, optional = false) {
997
- if (vm.$scopedSlots[name]) {
1002
+ if (vm.$scopedSlots.hasOwnProperty(name)) {
998
1003
  return vm.$scopedSlots[name](data instanceof Function ? data() : data);
999
- } else if (vm.$slots[name] && (!data || optional)) {
1004
+ } else if (vm.$slots.hasOwnProperty(name) && (!data || optional)) {
1000
1005
  return vm.$slots[name];
1001
1006
  }
1002
1007
 
@@ -2216,7 +2221,7 @@ class Vuetify {
2216
2221
  }
2217
2222
  Vuetify.install = install;
2218
2223
  Vuetify.installed = false;
2219
- Vuetify.version = "2.5.14";
2224
+ Vuetify.version = "2.6.4";
2220
2225
  Vuetify.config = {
2221
2226
  silent: false
2222
2227
  };
@@ -3478,10 +3483,6 @@ function transform(el, value) {
3478
3483
  el.style.webkitTransform = value;
3479
3484
  }
3480
3485
 
3481
- function opacity(el, value) {
3482
- el.style.opacity = value.toString();
3483
- }
3484
-
3485
3486
  function isTouchEvent(e) {
3486
3487
  return e.constructor.name === 'TouchEvent';
3487
3488
  }
@@ -3565,13 +3566,11 @@ const ripples = {
3565
3566
  animation.classList.add('v-ripple__animation--enter');
3566
3567
  animation.classList.add('v-ripple__animation--visible');
3567
3568
  transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
3568
- opacity(animation, 0);
3569
3569
  animation.dataset.activated = String(performance.now());
3570
3570
  setTimeout(() => {
3571
3571
  animation.classList.remove('v-ripple__animation--enter');
3572
3572
  animation.classList.add('v-ripple__animation--in');
3573
3573
  transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
3574
- opacity(animation, 0.25);
3575
3574
  }, 0);
3576
3575
  },
3577
3576
 
@@ -3586,7 +3585,6 @@ const ripples = {
3586
3585
  setTimeout(() => {
3587
3586
  animation.classList.remove('v-ripple__animation--in');
3588
3587
  animation.classList.add('v-ripple__animation--out');
3589
- opacity(animation, 0);
3590
3588
  setTimeout(() => {
3591
3589
  const ripples = el.getElementsByClassName('v-ripple__animation');
3592
3590
 
@@ -4062,10 +4060,10 @@ function factory$2(prop = 'value', event = 'input') {
4062
4060
  const Toggleable = factory$2();
4063
4061
 
4064
4062
  // Styles
4065
- const baseMixins$t = mixins(VToolbar, Scrollable, SSRBootable, Toggleable, applicationable('top', ['clippedLeft', 'clippedRight', 'computedHeight', 'invertedScroll', 'isExtended', 'isProminent', 'value']));
4063
+ const baseMixins$u = mixins(VToolbar, Scrollable, SSRBootable, Toggleable, applicationable('top', ['clippedLeft', 'clippedRight', 'computedHeight', 'invertedScroll', 'isExtended', 'isProminent', 'value']));
4066
4064
  /* @vue/component */
4067
4065
 
4068
- var VAppBar = baseMixins$t.extend({
4066
+ var VAppBar = baseMixins$u.extend({
4069
4067
  name: 'v-app-bar',
4070
4068
  directives: {
4071
4069
  Scroll
@@ -4847,10 +4845,6 @@ var Routable = Vue.extend({
4847
4845
  },
4848
4846
 
4849
4847
  methods: {
4850
- click(e) {
4851
- this.$emit('click', e);
4852
- },
4853
-
4854
4848
  generateRouteLink() {
4855
4849
  let exact = this.exact;
4856
4850
  let tag;
@@ -4866,7 +4860,9 @@ var Routable = Vue.extend({
4866
4860
  value: this.computedRipple
4867
4861
  }],
4868
4862
  [this.to ? 'nativeOn' : 'on']: { ...this.$listeners,
4869
- click: this.click
4863
+ ...('click' in this ? {
4864
+ click: this.click
4865
+ } : undefined)
4870
4866
  },
4871
4867
  ref: 'link'
4872
4868
  };
@@ -4910,8 +4906,8 @@ var Routable = Vue.extend({
4910
4906
 
4911
4907
  onRouteChange() {
4912
4908
  if (!this.to || !this.$refs.link || !this.$route) return;
4913
- const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim();
4914
- const exactActiveClass = `${this.exactActiveClass} ${this.proxyClass || ''}`.trim() || activeClass;
4909
+ const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim();
4910
+ const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass;
4915
4911
  const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass);
4916
4912
  this.$nextTick(() => {
4917
4913
  /* istanbul ignore else */
@@ -4929,10 +4925,10 @@ var Routable = Vue.extend({
4929
4925
  });
4930
4926
 
4931
4927
  // Styles
4932
- const baseMixins$s = mixins(VSheet, Routable, Positionable, Sizeable, factory$1('btnToggle'), factory$2('inputValue')
4928
+ const baseMixins$t = mixins(VSheet, Routable, Positionable, Sizeable, factory$1('btnToggle'), factory$2('inputValue')
4933
4929
  /* @vue/component */
4934
4930
  );
4935
- var VBtn = baseMixins$s.extend().extend({
4931
+ var VBtn = baseMixins$t.extend().extend({
4936
4932
  name: 'v-btn',
4937
4933
  props: {
4938
4934
  activeClass: {
@@ -5831,10 +5827,10 @@ var Delayable = Vue.extend().extend({
5831
5827
  });
5832
5828
 
5833
5829
  // Mixins
5834
- const baseMixins$r = mixins(Delayable, Toggleable);
5830
+ const baseMixins$s = mixins(Delayable, Toggleable);
5835
5831
  /* @vue/component */
5836
5832
 
5837
- var Activatable = baseMixins$r.extend({
5833
+ var Activatable = baseMixins$s.extend({
5838
5834
  name: 'activatable',
5839
5835
  props: {
5840
5836
  activator: {
@@ -5845,6 +5841,10 @@ var Activatable = baseMixins$r.extend({
5845
5841
  },
5846
5842
  disabled: Boolean,
5847
5843
  internalActivator: Boolean,
5844
+ openOnClick: {
5845
+ type: Boolean,
5846
+ default: true
5847
+ },
5848
5848
  openOnHover: Boolean,
5849
5849
  openOnFocus: Boolean
5850
5850
  },
@@ -5897,7 +5897,7 @@ var Activatable = baseMixins$r.extend({
5897
5897
 
5898
5898
  genActivatorAttributes() {
5899
5899
  return {
5900
- role: 'button',
5900
+ role: this.openOnClick && !this.openOnHover ? 'button' : undefined,
5901
5901
  'aria-haspopup': true,
5902
5902
  'aria-expanded': String(this.isActive)
5903
5903
  };
@@ -5917,7 +5917,7 @@ var Activatable = baseMixins$r.extend({
5917
5917
  this.getActivator(e);
5918
5918
  this.runDelay('close');
5919
5919
  };
5920
- } else {
5920
+ } else if (this.openOnClick) {
5921
5921
  listeners.click = e => {
5922
5922
  const activator = this.getActivator(e);
5923
5923
  if (activator) activator.focus();
@@ -6321,10 +6321,10 @@ var Detachable = mixins(Bootable).extend({
6321
6321
  });
6322
6322
 
6323
6323
  // Mixins
6324
- const baseMixins$q = mixins(Stackable, factory$3(['top', 'right', 'bottom', 'left', 'absolute']), Activatable, Detachable);
6324
+ const baseMixins$r = mixins(Stackable, factory$3(['top', 'right', 'bottom', 'left', 'absolute']), Activatable, Detachable);
6325
6325
  /* @vue/component */
6326
6326
 
6327
- var Menuable = baseMixins$q.extend().extend({
6327
+ var Menuable = baseMixins$r.extend().extend({
6328
6328
  name: 'menuable',
6329
6329
  props: {
6330
6330
  allowOverflow: Boolean,
@@ -6356,7 +6356,6 @@ var Menuable = baseMixins$q.extend().extend({
6356
6356
  default: 0
6357
6357
  },
6358
6358
  offsetOverflow: Boolean,
6359
- openOnClick: Boolean,
6360
6359
  positionX: {
6361
6360
  type: Number,
6362
6361
  default: null
@@ -6416,7 +6415,8 @@ var Menuable = baseMixins$q.extend().extend({
6416
6415
  const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0;
6417
6416
  const minWidth = Math.max(a.width, c.width);
6418
6417
  let left = 0;
6419
- left += this.left ? activatorLeft - (minWidth - a.width) : activatorLeft;
6418
+ left += activatorLeft;
6419
+ if (this.left || this.$vuetify.rtl && !this.right) left -= minWidth - a.width;
6420
6420
 
6421
6421
  if (this.offsetX) {
6422
6422
  const maxWidth = isNaN(Number(this.maxWidth)) ? a.width : Math.min(a.width, Number(this.maxWidth));
@@ -6574,14 +6574,16 @@ var Menuable = baseMixins$q.extend().extend({
6574
6574
  const listeners = Activatable.options.methods.genActivatorListeners.call(this);
6575
6575
  const onClick = listeners.click;
6576
6576
 
6577
- listeners.click = e => {
6578
- if (this.openOnClick) {
6579
- onClick && onClick(e);
6580
- }
6577
+ if (onClick) {
6578
+ listeners.click = e => {
6579
+ if (this.openOnClick) {
6580
+ onClick && onClick(e);
6581
+ }
6581
6582
 
6582
- this.absoluteX = e.clientX;
6583
- this.absoluteY = e.clientY;
6584
- };
6583
+ this.absoluteX = e.clientX;
6584
+ this.absoluteY = e.clientY;
6585
+ };
6586
+ }
6585
6587
 
6586
6588
  return listeners;
6587
6589
  },
@@ -6730,10 +6732,10 @@ var Returnable = Vue.extend({
6730
6732
  });
6731
6733
 
6732
6734
  // Styles
6733
- const baseMixins$p = mixins(Dependent, Delayable, Menuable, Returnable, Roundable, Toggleable, Themeable);
6735
+ const baseMixins$q = mixins(Dependent, Delayable, Returnable, Roundable, Themeable, Menuable);
6734
6736
  /* @vue/component */
6735
6737
 
6736
- var VMenu = baseMixins$p.extend({
6738
+ var VMenu = baseMixins$q.extend({
6737
6739
  name: 'v-menu',
6738
6740
  directives: {
6739
6741
  ClickOutside,
@@ -6766,10 +6768,6 @@ var VMenu = baseMixins$p.extend({
6766
6768
  },
6767
6769
  offsetX: Boolean,
6768
6770
  offsetY: Boolean,
6769
- openOnClick: {
6770
- type: Boolean,
6771
- default: true
6772
- },
6773
6771
  openOnHover: Boolean,
6774
6772
  origin: {
6775
6773
  type: String,
@@ -7083,7 +7081,9 @@ var VMenu = baseMixins$p.extend({
7083
7081
  mouseLeaveHandler(e) {
7084
7082
  // Prevent accidental re-activation
7085
7083
  this.runDelay('close', () => {
7086
- if (this.$refs.content.contains(e.relatedTarget)) return;
7084
+ var _this$$refs$content;
7085
+
7086
+ if ((_this$$refs$content = this.$refs.content) != null && _this$$refs$content.contains(e.relatedTarget)) return;
7087
7087
  requestAnimationFrame(() => {
7088
7088
  this.isActive = false;
7089
7089
  this.callDeactivate();
@@ -7412,10 +7412,10 @@ var VList = VSheet.extend().extend({
7412
7412
  });
7413
7413
 
7414
7414
  // Styles
7415
- const baseMixins$o = mixins(Colorable, Routable, Themeable, factory$1('listItemGroup'), factory$2('inputValue'));
7415
+ const baseMixins$p = mixins(Colorable, Routable, Themeable, factory$1('listItemGroup'), factory$2('inputValue'));
7416
7416
  /* @vue/component */
7417
7417
 
7418
- var VListItem = baseMixins$o.extend().extend({
7418
+ var VListItem = baseMixins$p.extend().extend({
7419
7419
  name: 'v-list-item',
7420
7420
  directives: {
7421
7421
  Ripple
@@ -7576,8 +7576,8 @@ var VListItemIcon = Vue.extend({
7576
7576
  });
7577
7577
 
7578
7578
  // Styles
7579
- const baseMixins$n = mixins(BindsAttrs, Bootable, Colorable, inject('list'), Toggleable);
7580
- var VListGroup = baseMixins$n.extend().extend({
7579
+ const baseMixins$o = mixins(BindsAttrs, Bootable, Colorable, inject('list'), Toggleable);
7580
+ var VListGroup = baseMixins$o.extend().extend({
7581
7581
  name: 'v-list-group',
7582
7582
  directives: {
7583
7583
  ripple: Ripple
@@ -7734,6 +7734,16 @@ var VListGroup = baseMixins$n.extend().extend({
7734
7734
 
7735
7735
  });
7736
7736
 
7737
+ var Comparable = Vue.extend({
7738
+ name: 'comparable',
7739
+ props: {
7740
+ valueComparator: {
7741
+ type: Function,
7742
+ default: deepEqual
7743
+ }
7744
+ }
7745
+ });
7746
+
7737
7747
  function factory(prop = 'value', event = 'change') {
7738
7748
  return Vue.extend({
7739
7749
  name: 'proxyable',
@@ -7780,7 +7790,7 @@ function factory(prop = 'value', event = 'change') {
7780
7790
  const Proxyable = factory();
7781
7791
 
7782
7792
  // Styles
7783
- const BaseItemGroup = mixins(Proxyable, Themeable).extend({
7793
+ const BaseItemGroup = mixins(Comparable, Proxyable, Themeable).extend({
7784
7794
  name: 'base-item-group',
7785
7795
  props: {
7786
7796
  activeClass: {
@@ -7839,13 +7849,13 @@ const BaseItemGroup = mixins(Proxyable, Themeable).extend({
7839
7849
 
7840
7850
  toggleMethod() {
7841
7851
  if (!this.multiple) {
7842
- return v => this.internalValue === v;
7852
+ return v => this.valueComparator(this.internalValue, v);
7843
7853
  }
7844
7854
 
7845
7855
  const internalValue = this.internalValue;
7846
7856
 
7847
7857
  if (Array.isArray(internalValue)) {
7848
- return v => internalValue.includes(v);
7858
+ return v => internalValue.some(intern => this.valueComparator(intern, v));
7849
7859
  }
7850
7860
 
7851
7861
  return () => false;
@@ -7871,7 +7881,7 @@ const BaseItemGroup = mixins(Proxyable, Themeable).extend({
7871
7881
  },
7872
7882
 
7873
7883
  getValue(item, i) {
7874
- return item.value == null || item.value === '' ? i : item.value;
7884
+ return item.value === undefined ? i : item.value;
7875
7885
  },
7876
7886
 
7877
7887
  onClick(item) {
@@ -8458,10 +8468,10 @@ var VMessages = mixins(Colorable, Themeable).extend({
8458
8468
  });
8459
8469
 
8460
8470
  // Mixins
8461
- const baseMixins$m = mixins(Colorable, inject('form'), Themeable);
8471
+ const baseMixins$n = mixins(Colorable, inject('form'), Themeable);
8462
8472
  /* @vue/component */
8463
8473
 
8464
- var Validatable = baseMixins$m.extend({
8474
+ var Validatable = baseMixins$n.extend({
8465
8475
  name: 'validatable',
8466
8476
  props: {
8467
8477
  disabled: Boolean,
@@ -8710,10 +8720,10 @@ var Validatable = baseMixins$m.extend({
8710
8720
  });
8711
8721
 
8712
8722
  // Styles
8713
- const baseMixins$l = mixins(BindsAttrs, Validatable);
8723
+ const baseMixins$m = mixins(BindsAttrs, Validatable);
8714
8724
  /* @vue/component */
8715
8725
 
8716
- var VInput = baseMixins$l.extend().extend({
8726
+ var VInput = baseMixins$m.extend().extend({
8717
8727
  name: 'v-input',
8718
8728
  inheritAttrs: false,
8719
8729
  props: {
@@ -8725,6 +8735,7 @@ var VInput = baseMixins$l.extend().extend({
8725
8735
  dense: Boolean,
8726
8736
  height: [Number, String],
8727
8737
  hideDetails: [Boolean, String],
8738
+ hideSpinButtons: Boolean,
8728
8739
  hint: String,
8729
8740
  id: String,
8730
8741
  label: String,
@@ -8754,6 +8765,7 @@ var VInput = baseMixins$l.extend().extend({
8754
8765
  'v-input--is-loading': this.loading !== false && this.loading != null,
8755
8766
  'v-input--is-readonly': this.isReadonly,
8756
8767
  'v-input--dense': this.dense,
8768
+ 'v-input--hide-spin-buttons': this.hideSpinButtons,
8757
8769
  ...this.themeClasses
8758
8770
  };
8759
8771
  },
@@ -9061,10 +9073,10 @@ function intersectable(options) {
9061
9073
  });
9062
9074
  }
9063
9075
 
9064
- const baseMixins$k = mixins(Colorable, factory$3(['absolute', 'fixed', 'top', 'bottom']), Proxyable, Themeable);
9076
+ const baseMixins$l = mixins(Colorable, factory$3(['absolute', 'fixed', 'top', 'bottom']), Proxyable, Themeable);
9065
9077
  /* @vue/component */
9066
9078
 
9067
- var VProgressLinear = baseMixins$k.extend({
9079
+ var VProgressLinear = baseMixins$l.extend({
9068
9080
  name: 'v-progress-linear',
9069
9081
  directives: {
9070
9082
  intersect: Intersect
@@ -9339,13 +9351,13 @@ var Loadable = Vue.extend().extend({
9339
9351
  });
9340
9352
 
9341
9353
  // Styles
9342
- const baseMixins$j = mixins(VInput, intersectable({
9354
+ const baseMixins$k = mixins(VInput, intersectable({
9343
9355
  onVisible: ['onResize', 'tryAutofocus']
9344
9356
  }), Loadable);
9345
9357
  const dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
9346
9358
  /* @vue/component */
9347
9359
 
9348
- var VTextField = baseMixins$j.extend().extend({
9360
+ var VTextField = baseMixins$k.extend().extend({
9349
9361
  name: 'v-text-field',
9350
9362
  directives: {
9351
9363
  resize: Resize,
@@ -9850,16 +9862,6 @@ var VTextField = baseMixins$j.extend().extend({
9850
9862
  }
9851
9863
  });
9852
9864
 
9853
- var Comparable = Vue.extend({
9854
- name: 'comparable',
9855
- props: {
9856
- valueComparator: {
9857
- type: Function,
9858
- default: deepEqual
9859
- }
9860
- }
9861
- });
9862
-
9863
9865
  /* @vue/component */
9864
9866
 
9865
9867
  var Filterable = Vue.extend({
@@ -9881,10 +9883,10 @@ const defaultMenuProps$1 = {
9881
9883
  maxHeight: 304
9882
9884
  }; // Types
9883
9885
 
9884
- const baseMixins$i = mixins(VTextField, Comparable, Dependent, Filterable);
9886
+ const baseMixins$j = mixins(VTextField, Comparable, Dependent, Filterable);
9885
9887
  /* @vue/component */
9886
9888
 
9887
- var VSelect = baseMixins$i.extend().extend({
9889
+ var VSelect = baseMixins$j.extend().extend({
9888
9890
  name: 'v-select',
9889
9891
  directives: {
9890
9892
  ClickOutside
@@ -10081,6 +10083,14 @@ var VSelect = baseMixins$i.extend().extend({
10081
10083
  internalValue(val) {
10082
10084
  this.initialValue = val;
10083
10085
  this.setSelectedItems();
10086
+
10087
+ if (this.multiple) {
10088
+ this.$nextTick(() => {
10089
+ var _this$$refs$menu;
10090
+
10091
+ (_this$$refs$menu = this.$refs.menu) == null ? void 0 : _this$$refs$menu.updateDimensions();
10092
+ });
10093
+ }
10084
10094
  },
10085
10095
 
10086
10096
  isMenuActive(val) {
@@ -10140,7 +10150,12 @@ var VSelect = baseMixins$i.extend().extend({
10140
10150
  const uniqueValues = new Map();
10141
10151
 
10142
10152
  for (let index = 0; index < arr.length; ++index) {
10143
- const item = arr[index]; // Do not deduplicate headers or dividers (#12517)
10153
+ const item = arr[index]; // Do not return null values if existant (#14421)
10154
+
10155
+ if (item == null) {
10156
+ continue;
10157
+ } // Do not deduplicate headers or dividers (#12517)
10158
+
10144
10159
 
10145
10160
  if (item.header || item.divider) {
10146
10161
  uniqueValues.set(item, item);
@@ -10600,13 +10615,7 @@ var VSelect = baseMixins$i.extend().extend({
10600
10615
  i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item);
10601
10616
  this.setValue(internalValue.map(i => {
10602
10617
  return this.returnObject ? i : this.getValue(i);
10603
- })); // When selecting multiple
10604
- // adjust menu after each
10605
- // selection
10606
-
10607
- this.$nextTick(() => {
10608
- this.$refs.menu && this.$refs.menu.updateDimensions();
10609
- }); // There is no item to re-highlight
10618
+ })); // There is no item to re-highlight
10610
10619
  // when selections are hidden
10611
10620
 
10612
10621
  if (this.hideSelected) {
@@ -10969,6 +10978,7 @@ var VAutocomplete = VSelect.extend({
10969
10978
  const value = target.value; // If typing and menu is not currently active
10970
10979
 
10971
10980
  if (target.value) this.activateMenu();
10981
+ if (!this.multiple && value === '') this.deleteCurrentItem();
10972
10982
  this.internalSearch = value;
10973
10983
  this.badInput = target.validity && target.validity.badInput;
10974
10984
  },
@@ -11388,7 +11398,7 @@ mixins(VSheet, Mobile, Toggleable).extend({
11388
11398
  },
11389
11399
 
11390
11400
  render(h) {
11391
- return h(VExpandTransition, [h('div', this.setBackgroundColor(this.color, {
11401
+ const data = {
11392
11402
  staticClass: 'v-banner',
11393
11403
  attrs: this.attrs$,
11394
11404
  class: this.classes,
@@ -11397,7 +11407,8 @@ mixins(VSheet, Mobile, Toggleable).extend({
11397
11407
  name: 'show',
11398
11408
  value: this.isActive
11399
11409
  }]
11400
- }), [this.genWrapper()])]);
11410
+ };
11411
+ return h(VExpandTransition, [h('div', this.outlined ? data : this.setBackgroundColor(this.color, data), [this.genWrapper()])]);
11401
11412
  }
11402
11413
 
11403
11414
  });
@@ -11484,6 +11495,9 @@ mixins(applicationable('bottom', ['height', 'inputValue']), Colorable, Measurabl
11484
11495
  }
11485
11496
 
11486
11497
  },
11498
+ watch: {
11499
+ canScroll: 'onScroll'
11500
+ },
11487
11501
 
11488
11502
  created() {
11489
11503
  /* istanbul ignore next */
@@ -11494,8 +11508,13 @@ mixins(applicationable('bottom', ['height', 'inputValue']), Colorable, Measurabl
11494
11508
 
11495
11509
  methods: {
11496
11510
  thresholdMet() {
11497
- this.isActive = !this.isScrollingUp;
11498
- this.$emit('update:input-value', this.isActive);
11511
+ if (this.hideOnScroll) {
11512
+ this.isActive = !this.isScrollingUp || this.currentScroll > this.computedScrollThreshold;
11513
+ this.$emit('update:input-value', this.isActive);
11514
+ }
11515
+
11516
+ if (this.currentThreshold < this.computedScrollThreshold) return;
11517
+ this.savedScroll = this.currentScroll;
11499
11518
  },
11500
11519
 
11501
11520
  updateApplication() {
@@ -11809,10 +11828,10 @@ var Overlayable = Vue.extend().extend({
11809
11828
  });
11810
11829
 
11811
11830
  // Styles
11812
- const baseMixins$h = mixins(Activatable, Dependent, Detachable, Overlayable, Returnable, Stackable, Toggleable);
11831
+ const baseMixins$i = mixins(Dependent, Detachable, Overlayable, Returnable, Stackable, Activatable);
11813
11832
  /* @vue/component */
11814
11833
 
11815
- var VDialog = baseMixins$h.extend({
11834
+ var VDialog = baseMixins$i.extend({
11816
11835
  name: 'v-dialog',
11817
11836
  directives: {
11818
11837
  ClickOutside
@@ -11822,10 +11841,7 @@ var VDialog = baseMixins$h.extend({
11822
11841
  disabled: Boolean,
11823
11842
  fullscreen: Boolean,
11824
11843
  light: Boolean,
11825
- maxWidth: {
11826
- type: [String, Number],
11827
- default: 'none'
11828
- },
11844
+ maxWidth: [String, Number],
11829
11845
  noClickAnimation: Boolean,
11830
11846
  origin: {
11831
11847
  type: String,
@@ -11841,10 +11857,7 @@ var VDialog = baseMixins$h.extend({
11841
11857
  type: [String, Boolean],
11842
11858
  default: 'dialog-transition'
11843
11859
  },
11844
- width: {
11845
- type: [String, Number],
11846
- default: 'auto'
11847
- }
11860
+ width: [String, Number]
11848
11861
  },
11849
11862
 
11850
11863
  data() {
@@ -11852,7 +11865,6 @@ var VDialog = baseMixins$h.extend({
11852
11865
  activatedBy: null,
11853
11866
  animate: false,
11854
11867
  animateTimeout: -1,
11855
- isActive: !!this.value,
11856
11868
  stackMinZIndex: 200,
11857
11869
  previousActiveElement: null
11858
11870
  };
@@ -12033,8 +12045,9 @@ var VDialog = baseMixins$h.extend({
12033
12045
  }, [this.$createElement('div', {
12034
12046
  class: this.contentClasses,
12035
12047
  attrs: {
12036
- role: 'document',
12048
+ role: 'dialog',
12037
12049
  tabindex: this.isActive ? 0 : undefined,
12050
+ 'aria-modal': this.hideOverlay ? undefined : 'true',
12038
12051
  ...this.getScopeIdAttrs()
12039
12052
  },
12040
12053
  on: {
@@ -12081,8 +12094,8 @@ var VDialog = baseMixins$h.extend({
12081
12094
 
12082
12095
  if (!this.fullscreen) {
12083
12096
  data.style = { ...data.style,
12084
- maxWidth: this.maxWidth === 'none' ? undefined : convertToUnit(this.maxWidth),
12085
- width: this.width === 'auto' ? undefined : convertToUnit(this.width)
12097
+ maxWidth: convertToUnit(this.maxWidth),
12098
+ width: convertToUnit(this.width)
12086
12099
  };
12087
12100
  }
12088
12101
 
@@ -12096,9 +12109,6 @@ var VDialog = baseMixins$h.extend({
12096
12109
  staticClass: 'v-dialog__container',
12097
12110
  class: {
12098
12111
  'v-dialog__container--attached': this.attach === '' || this.attach === true || this.attach === 'attach'
12099
- },
12100
- attrs: {
12101
- role: 'dialog'
12102
12112
  }
12103
12113
  }, [this.genActivator(), this.genContent()]);
12104
12114
  }
@@ -12111,10 +12121,7 @@ var VBottomSheet = VDialog.extend({
12111
12121
  name: 'v-bottom-sheet',
12112
12122
  props: {
12113
12123
  inset: Boolean,
12114
- maxWidth: {
12115
- type: [String, Number],
12116
- default: 'auto'
12117
- },
12124
+ maxWidth: [String, Number],
12118
12125
  transition: {
12119
12126
  type: String,
12120
12127
  default: 'bottom-sheet-transition'
@@ -12355,11 +12362,16 @@ var Mouse = Vue.extend({
12355
12362
 
12356
12363
 
12357
12364
  if (e && 'touches' in e) {
12358
- var _e$target, _e$target2;
12365
+ var _e$currentTarget, _e$target;
12366
+
12367
+ const classSeparator = ' ';
12368
+ const eventTargetClasses = (_e$currentTarget = e.currentTarget) == null ? void 0 : _e$currentTarget.className.split(classSeparator);
12369
+ const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY); // Get "the same kind" current hovering target by checking
12370
+ // If element has the same class of initial touch start element (which has touch event listener registered)
12359
12371
 
12360
- const currentTarget = document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);
12372
+ const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)));
12361
12373
 
12362
- if (currentTarget && !((_e$target = e.target) != null && _e$target.isSameNode(currentTarget)) && ((_e$target2 = e.target) == null ? void 0 : _e$target2.className) === currentTarget.className) {
12374
+ if (currentTarget && !((_e$target = e.target) != null && _e$target.isSameNode(currentTarget))) {
12363
12375
  currentTarget.dispatchEvent(new TouchEvent(e.type, {
12364
12376
  changedTouches: e.changedTouches,
12365
12377
  targetTouches: e.targetTouches,
@@ -12369,7 +12381,7 @@ var Mouse = Vue.extend({
12369
12381
  }
12370
12382
  }
12371
12383
 
12372
- this.$emit(event, getEvent(e));
12384
+ this.$emit(event, getEvent(e), e);
12373
12385
  }
12374
12386
 
12375
12387
  return eventOptions.result;
@@ -14049,9 +14061,12 @@ var CalendarWithEvents = CalendarBase.extend({
14049
14061
  name: 'ripple',
14050
14062
  value: (_this$eventRipple2 = this.eventRipple) != null ? _this$eventRipple2 : true
14051
14063
  }],
14052
- on: {
14053
- click: () => this.$emit('click:more', day)
14054
- },
14064
+ on: this.getDefaultMouseEventHandlers(':more', nativeEvent => {
14065
+ return {
14066
+ nativeEvent,
14067
+ ...day
14068
+ };
14069
+ }),
14055
14070
  style: {
14056
14071
  display: 'none',
14057
14072
  height: `${eventHeight}px`,
@@ -14304,7 +14319,12 @@ var VCalendarWeekly = CalendarBase.extend({
14304
14319
  key: day.date,
14305
14320
  staticClass: 'v-calendar-weekly__day',
14306
14321
  class: this.getRelativeClasses(day, outside),
14307
- on: this.getDefaultMouseEventHandlers(':day', _e => day)
14322
+ on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {
14323
+ return {
14324
+ nativeEvent,
14325
+ ...day
14326
+ };
14327
+ })
14308
14328
  }, [this.genDayLabel(day), ...(getSlot(this, 'day', () => ({
14309
14329
  outside,
14310
14330
  index,
@@ -14340,7 +14360,10 @@ var VCalendarWeekly = CalendarBase.extend({
14340
14360
  prevent: true,
14341
14361
  result: false
14342
14362
  }
14343
- }, _e => day)
14363
+ }, nativeEvent => ({
14364
+ nativeEvent,
14365
+ ...day
14366
+ }))
14344
14367
  }, hasMonth ? this.monthFormatter(day, this.shortMonths) + ' ' + this.dayFormatter(day, false) : this.dayFormatter(day, false));
14345
14368
  },
14346
14369
 
@@ -14613,8 +14636,11 @@ var VCalendarDaily = CalendarWithIntervals.extend({
14613
14636
  key: day.date,
14614
14637
  staticClass: 'v-calendar-daily_head-day',
14615
14638
  class: this.getRelativeClasses(day),
14616
- on: this.getDefaultMouseEventHandlers(':day', _e => {
14617
- return this.getSlotScope(day);
14639
+ on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {
14640
+ return {
14641
+ nativeEvent,
14642
+ ...this.getSlotScope(day)
14643
+ };
14618
14644
  })
14619
14645
  }, [this.genHeadWeekday(day), this.genHeadDayLabel(day), ...this.genDayHeader(day, index)]);
14620
14646
  },
@@ -14659,8 +14685,11 @@ var VCalendarDaily = CalendarWithIntervals.extend({
14659
14685
  prevent: true,
14660
14686
  result: false
14661
14687
  }
14662
- }, _e => {
14663
- return day;
14688
+ }, nativeEvent => {
14689
+ return {
14690
+ nativeEvent,
14691
+ ...day
14692
+ };
14664
14693
  })
14665
14694
  }, this.dayFormatter(day, false));
14666
14695
  },
@@ -14703,8 +14732,11 @@ var VCalendarDaily = CalendarWithIntervals.extend({
14703
14732
  key: day.date,
14704
14733
  staticClass: 'v-calendar-daily__day',
14705
14734
  class: this.getRelativeClasses(day),
14706
- on: this.getDefaultMouseEventHandlers(':time', e => {
14707
- return this.getSlotScope(this.getTimestampAtEvent(e, day));
14735
+ on: this.getDefaultMouseEventHandlers(':time', nativeEvent => {
14736
+ return {
14737
+ nativeEvent,
14738
+ ...this.getSlotScope(this.getTimestampAtEvent(nativeEvent, day))
14739
+ };
14708
14740
  })
14709
14741
  }, [...this.genDayIntervals(index), ...this.genDayBody(day)]);
14710
14742
  },
@@ -14739,8 +14771,11 @@ var VCalendarDaily = CalendarWithIntervals.extend({
14739
14771
  style: {
14740
14772
  width
14741
14773
  },
14742
- on: this.getDefaultMouseEventHandlers(':interval', e => {
14743
- return this.getTimestampAtEvent(e, this.parsedStart);
14774
+ on: this.getDefaultMouseEventHandlers(':interval', nativeEvent => {
14775
+ return {
14776
+ nativeEvent,
14777
+ ...this.getTimestampAtEvent(nativeEvent, this.parsedStart)
14778
+ };
14744
14779
  })
14745
14780
  };
14746
14781
  return this.$createElement('div', data, this.genIntervalLabels());
@@ -14936,7 +14971,7 @@ var VCalendarCategory = VCalendarDaily.extend({
14936
14971
  // Styles
14937
14972
  /* @vue/component */
14938
14973
 
14939
- CalendarWithEvents.extend({
14974
+ var VCalendar = CalendarWithEvents.extend({
14940
14975
  name: 'v-calendar',
14941
14976
  props: { ...props.calendar,
14942
14977
  ...props.weeks,
@@ -15307,13 +15342,13 @@ CalendarWithEvents.extend({
15307
15342
  value: this.updateEventVisibility
15308
15343
  }],
15309
15344
  on: { ...this.$listeners,
15310
- 'click:date': day => {
15345
+ 'click:date': (day, e) => {
15311
15346
  if (this.$listeners.input) {
15312
15347
  this.$emit('input', day.date);
15313
15348
  }
15314
15349
 
15315
15350
  if (this.$listeners['click:date']) {
15316
- this.$emit('click:date', day);
15351
+ this.$emit('click:date', day, e);
15317
15352
  }
15318
15353
  }
15319
15354
  },
@@ -15862,8 +15897,8 @@ VWindow.extend({
15862
15897
  });
15863
15898
 
15864
15899
  // Mixins
15865
- const baseMixins$g = mixins(Bootable, factory$1('windowGroup', 'v-window-item', 'v-window'));
15866
- var VWindowItem = baseMixins$g.extend().extend().extend({
15900
+ const baseMixins$h = mixins(Bootable, factory$1('windowGroup', 'v-window-item', 'v-window'));
15901
+ var VWindowItem = baseMixins$h.extend().extend().extend({
15867
15902
  name: 'v-window-item',
15868
15903
  directives: {
15869
15904
  Touch
@@ -16000,10 +16035,10 @@ var VWindowItem = baseMixins$g.extend().extend().extend({
16000
16035
 
16001
16036
  // Extensions
16002
16037
 
16003
- const baseMixins$f = mixins(VWindowItem, Routable);
16038
+ const baseMixins$g = mixins(VWindowItem, Routable);
16004
16039
  /* @vue/component */
16005
16040
 
16006
- baseMixins$f.extend().extend({
16041
+ baseMixins$g.extend().extend({
16007
16042
  name: 'v-carousel-item',
16008
16043
  inject: {
16009
16044
  parentTheme: {
@@ -16339,6 +16374,13 @@ var VCheckbox = Selectable.extend({
16339
16374
  });
16340
16375
 
16341
16376
  // Styles
16377
+
16378
+ function bias(val) {
16379
+ const c = 0.501;
16380
+ const x = Math.abs(val);
16381
+ return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1));
16382
+ }
16383
+
16342
16384
  function calculateUpdatedOffset(selectedElement, widths, rtl, currentScrollOffset) {
16343
16385
  const clientWidth = selectedElement.clientWidth;
16344
16386
  const offsetLeft = rtl ? widths.content - selectedElement.offsetLeft - clientWidth : selectedElement.offsetLeft;
@@ -16482,7 +16524,10 @@ const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({
16482
16524
  isOverflowing: 'setWidths',
16483
16525
 
16484
16526
  scrollOffset(val) {
16485
- this.$refs.content.style.transform = `translateX(${-val}px)`;
16527
+ if (this.$vuetify.rtl) val = -val;
16528
+ let scroll = val <= 0 ? bias(-val) : val > this.widths.content - this.widths.wrapper ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val) : -val;
16529
+ if (this.$vuetify.rtl) scroll = -scroll;
16530
+ this.$refs.content.style.transform = `translateX(${scroll}px)`;
16486
16531
  }
16487
16532
 
16488
16533
  },
@@ -16723,10 +16768,9 @@ const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({
16723
16768
  }, this.$vuetify.rtl, this.scrollOffset);
16724
16769
  },
16725
16770
 
16726
- setWidths
16727
- /* istanbul ignore next */
16728
- () {
16771
+ setWidths() {
16729
16772
  window.requestAnimationFrame(() => {
16773
+ if (this._isDestroyed) return;
16730
16774
  const {
16731
16775
  content,
16732
16776
  wrapper
@@ -18640,7 +18684,7 @@ VAutocomplete.extend({
18640
18684
  },
18641
18685
 
18642
18686
  setValue(value) {
18643
- VSelect.options.methods.setValue.call(this, value != null ? value : this.internalSearch);
18687
+ VSelect.options.methods.setValue.call(this, value === undefined ? this.internalSearch : value);
18644
18688
  },
18645
18689
 
18646
18690
  updateEditing() {
@@ -18743,12 +18787,10 @@ var VData = Vue.extend({
18743
18787
  default: () => ({})
18744
18788
  },
18745
18789
  sortBy: {
18746
- type: [String, Array],
18747
- default: () => []
18790
+ type: [String, Array]
18748
18791
  },
18749
18792
  sortDesc: {
18750
- type: [Boolean, Array],
18751
- default: () => []
18793
+ type: [Boolean, Array]
18752
18794
  },
18753
18795
  customSort: {
18754
18796
  type: Function,
@@ -19912,7 +19954,7 @@ var VDataTableHeaderDesktop = mixins(header).extend({
19912
19954
  return this.$createElement('th', data, [this.genSelectAll()]);
19913
19955
  }
19914
19956
 
19915
- children.push(this.$scopedSlots[header.value] ? this.$scopedSlots[header.value]({
19957
+ children.push(this.$scopedSlots.hasOwnProperty(header.value) ? this.$scopedSlots[header.value]({
19916
19958
  header
19917
19959
  }) : this.$createElement('span', [header.text]));
19918
19960
 
@@ -20020,6 +20062,13 @@ var VDataTableHeader = Vue.extend({
20020
20062
  });
20021
20063
 
20022
20064
  // Types
20065
+
20066
+ function needsTd(slot) {
20067
+ var _slot$;
20068
+
20069
+ return slot.length !== 1 || !['td', 'th'].includes((_slot$ = slot[0]) == null ? void 0 : _slot$.tag);
20070
+ }
20071
+
20023
20072
  var Row = Vue.extend({
20024
20073
  name: 'row',
20025
20074
  functional: true,
@@ -20040,29 +20089,29 @@ var Row = Vue.extend({
20040
20089
  const children = [];
20041
20090
  const value = getObjectValueByPath(props.item, header.value);
20042
20091
  const slotName = header.value;
20043
- const scopedSlot = data.scopedSlots && data.scopedSlots[slotName];
20044
- const regularSlot = computedSlots[slotName];
20092
+ const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName];
20093
+ const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName];
20045
20094
 
20046
20095
  if (scopedSlot) {
20047
- children.push(scopedSlot({
20096
+ children.push(...wrapInArray(scopedSlot({
20048
20097
  item: props.item,
20049
20098
  isMobile: false,
20050
20099
  header,
20051
20100
  index: props.index,
20052
20101
  value
20053
- }));
20102
+ })));
20054
20103
  } else if (regularSlot) {
20055
- children.push(regularSlot);
20104
+ children.push(...wrapInArray(regularSlot));
20056
20105
  } else {
20057
20106
  children.push(value == null ? value : String(value));
20058
20107
  }
20059
20108
 
20060
20109
  const textAlign = `text-${header.align || 'start'}`;
20061
- return h('td', {
20110
+ return needsTd(children) ? h('td', {
20062
20111
  class: [textAlign, header.cellClass, {
20063
20112
  'v-data-table__divider': header.divider
20064
20113
  }]
20065
- }, children);
20114
+ }, children) : children;
20066
20115
  });
20067
20116
  return h('tr', data, columns);
20068
20117
  }
@@ -20183,8 +20232,8 @@ var MobileRow = Vue.extend({
20183
20232
  const children = [];
20184
20233
  const value = getObjectValueByPath(props.item, header.value);
20185
20234
  const slotName = header.value;
20186
- const scopedSlot = data.scopedSlots && data.scopedSlots[slotName];
20187
- const regularSlot = computedSlots[slotName];
20235
+ const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName];
20236
+ const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName];
20188
20237
 
20189
20238
  if (scopedSlot) {
20190
20239
  children.push(scopedSlot({
@@ -20947,8 +20996,8 @@ mixins(Returnable, Themeable).extend({
20947
20996
 
20948
20997
  });
20949
20998
 
20950
- const baseMixins$e = mixins(VSimpleTable);
20951
- baseMixins$e.extend().extend({
20999
+ const baseMixins$f = mixins(VSimpleTable);
21000
+ baseMixins$f.extend().extend({
20952
21001
  name: 'v-virtual-table',
20953
21002
  props: {
20954
21003
  chunkSize: {
@@ -21485,7 +21534,7 @@ var DatePickerTable = mixins(Colorable, Localable, Themeable
21485
21534
  },
21486
21535
 
21487
21536
  methods: {
21488
- genButtonClasses(isAllowed, isFloating, isSelected, isCurrent) {
21537
+ genButtonClasses(isAllowed, isFloating, isSelected, isCurrent, isFirst, isLast) {
21489
21538
  return {
21490
21539
  'v-size--default': !isFloating,
21491
21540
  'v-date-picker-table__current': isCurrent,
@@ -21495,6 +21544,8 @@ var DatePickerTable = mixins(Colorable, Localable, Themeable
21495
21544
  'v-btn--rounded': isFloating,
21496
21545
  'v-btn--disabled': !isAllowed || this.disabled,
21497
21546
  'v-btn--outlined': isCurrent && !isSelected,
21547
+ 'v-date-picker--first-in-range': isFirst,
21548
+ 'v-date-picker--last-in-range': isLast,
21498
21549
  ...this.themeClasses
21499
21550
  };
21500
21551
  },
@@ -21514,9 +21565,17 @@ var DatePickerTable = mixins(Colorable, Localable, Themeable
21514
21565
  const isCurrent = value === this.current;
21515
21566
  const setColor = isSelected ? this.setBackgroundColor : this.setTextColor;
21516
21567
  const color = (isSelected || isCurrent) && (this.color || 'accent');
21568
+ let isFirst = false;
21569
+ let isLast = false;
21570
+
21571
+ if (this.range && !!this.value && Array.isArray(this.value)) {
21572
+ isFirst = value === this.value[0];
21573
+ isLast = value === this.value[this.value.length - 1];
21574
+ }
21575
+
21517
21576
  return this.$createElement('button', setColor(color, {
21518
21577
  staticClass: 'v-btn',
21519
- class: this.genButtonClasses(isAllowed && !isOtherMonth, isFloating, isSelected, isCurrent),
21578
+ class: this.genButtonClasses(isAllowed && !isOtherMonth, isFloating, isSelected, isCurrent, isFirst, isLast),
21520
21579
  attrs: {
21521
21580
  type: 'button'
21522
21581
  },
@@ -22715,10 +22774,10 @@ var VExpansionPanel = mixins(factory$1('expansionPanels', 'v-expansion-panel', '
22715
22774
 
22716
22775
  });
22717
22776
 
22718
- const baseMixins$d = mixins(Bootable, Colorable, inject('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel'));
22777
+ const baseMixins$e = mixins(Bootable, Colorable, inject('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel'));
22719
22778
  /* @vue/component */
22720
22779
 
22721
- var VExpansionPanelContent = baseMixins$d.extend().extend({
22780
+ var VExpansionPanelContent = baseMixins$e.extend().extend({
22722
22781
  name: 'v-expansion-panel-content',
22723
22782
  data: () => ({
22724
22783
  isActive: false
@@ -22764,8 +22823,8 @@ var VExpansionPanelContent = baseMixins$d.extend().extend({
22764
22823
  });
22765
22824
 
22766
22825
  // Components
22767
- const baseMixins$c = mixins(Colorable, inject('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel'));
22768
- var VExpansionPanelHeader = baseMixins$c.extend().extend({
22826
+ const baseMixins$d = mixins(Colorable, inject('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel'));
22827
+ var VExpansionPanelHeader = baseMixins$d.extend().extend({
22769
22828
  name: 'v-expansion-panel-header',
22770
22829
  directives: {
22771
22830
  ripple: Ripple
@@ -23925,10 +23984,10 @@ mixins(Measurable, Toggleable).extend({
23925
23984
  });
23926
23985
 
23927
23986
  // Styles
23928
- const baseMixins$b = mixins(applicationable('left', ['isActive', 'isMobile', 'miniVariant', 'expandOnHover', 'permanent', 'right', 'temporary', 'width']), Colorable, Dependent, Mobile, Overlayable, SSRBootable, Themeable);
23987
+ const baseMixins$c = mixins(applicationable('left', ['isActive', 'isMobile', 'miniVariant', 'expandOnHover', 'permanent', 'right', 'temporary', 'width']), Colorable, Dependent, Mobile, Overlayable, SSRBootable, Themeable);
23929
23988
  /* @vue/component */
23930
23989
 
23931
- var VNavigationDrawer = baseMixins$b.extend({
23990
+ var VNavigationDrawer = baseMixins$c.extend({
23932
23991
  name: 'v-navigation-drawer',
23933
23992
  directives: {
23934
23993
  ClickOutside,
@@ -24205,6 +24264,8 @@ var VNavigationDrawer = baseMixins$b.extend({
24205
24264
 
24206
24265
  genListeners() {
24207
24266
  const on = {
24267
+ mouseenter: () => this.isMouseover = true,
24268
+ mouseleave: () => this.isMouseover = false,
24208
24269
  transitionend: e => {
24209
24270
  if (e.target !== e.currentTarget) return;
24210
24271
  this.$emit('transitionend', e); // IE11 does not support new Event('resize')
@@ -24219,12 +24280,6 @@ var VNavigationDrawer = baseMixins$b.extend({
24219
24280
  on.click = () => this.$emit('update:mini-variant', false);
24220
24281
  }
24221
24282
 
24222
- if (this.expandOnHover) {
24223
- on.mouseenter = () => this.isMouseover = true;
24224
-
24225
- on.mouseleave = () => this.isMouseover = false;
24226
- }
24227
-
24228
24283
  return on;
24229
24284
  },
24230
24285
 
@@ -24287,12 +24342,12 @@ var VNavigationDrawer = baseMixins$b.extend({
24287
24342
  */
24288
24343
  updateApplication() {
24289
24344
  if (!this.isActive || this.isMobile || this.temporary || !this.$el) return 0;
24290
- const width = Number(this.computedWidth);
24345
+ const width = Number(this.miniVariant ? this.miniVariantWidth : this.width);
24291
24346
  return isNaN(width) ? this.$el.clientWidth : width;
24292
24347
  },
24293
24348
 
24294
24349
  updateMiniVariant(val) {
24295
- if (this.miniVariant !== val) this.$emit('update:mini-variant', val);
24350
+ if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val);
24296
24351
  }
24297
24352
 
24298
24353
  },
@@ -24310,6 +24365,338 @@ var VNavigationDrawer = baseMixins$b.extend({
24310
24365
 
24311
24366
  });
24312
24367
 
24368
+ // Styles
24369
+ const baseMixins$b = mixins(VInput);
24370
+ /* @vue/component */
24371
+
24372
+ var VOtpInput = baseMixins$b.extend().extend({
24373
+ name: 'v-otp-input',
24374
+ directives: {
24375
+ ripple: Ripple
24376
+ },
24377
+ inheritAttrs: false,
24378
+ props: {
24379
+ length: {
24380
+ type: [Number, String],
24381
+ default: 6
24382
+ },
24383
+ type: {
24384
+ type: String,
24385
+ default: 'text'
24386
+ },
24387
+ plain: Boolean
24388
+ },
24389
+ data: () => ({
24390
+ badInput: false,
24391
+ initialValue: null,
24392
+ isBooted: false,
24393
+ otp: []
24394
+ }),
24395
+ computed: {
24396
+ outlined() {
24397
+ return !this.plain;
24398
+ },
24399
+
24400
+ classes() {
24401
+ return { ...VInput.options.computed.classes.call(this),
24402
+ ...VTextField.options.computed.classes.call(this),
24403
+ 'v-otp-input--plain': this.plain
24404
+ };
24405
+ },
24406
+
24407
+ isDirty() {
24408
+ return VInput.options.computed.isDirty.call(this) || this.badInput;
24409
+ }
24410
+
24411
+ },
24412
+ watch: {
24413
+ isFocused: 'updateValue',
24414
+
24415
+ value(val) {
24416
+ this.lazyValue = val;
24417
+ this.otp = (val == null ? void 0 : val.split('')) || [];
24418
+ }
24419
+
24420
+ },
24421
+
24422
+ created() {
24423
+ var _this$internalValue;
24424
+
24425
+ /* istanbul ignore next */
24426
+ if (this.$attrs.hasOwnProperty('browser-autocomplete')) {
24427
+ breaking('browser-autocomplete', 'autocomplete', this);
24428
+ }
24429
+
24430
+ this.otp = ((_this$internalValue = this.internalValue) == null ? void 0 : _this$internalValue.split('')) || [];
24431
+ },
24432
+
24433
+ mounted() {
24434
+ requestAnimationFrame(() => this.isBooted = true);
24435
+ },
24436
+
24437
+ methods: {
24438
+ /** @public */
24439
+ focus(e, otpIdx) {
24440
+ this.onFocus(e, otpIdx || 0);
24441
+ },
24442
+
24443
+ genInputSlot(otpIdx) {
24444
+ return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {
24445
+ staticClass: 'v-input__slot',
24446
+ style: {
24447
+ height: convertToUnit(this.height)
24448
+ },
24449
+ on: {
24450
+ click: () => this.onClick(otpIdx),
24451
+ mousedown: e => this.onMouseDown(e, otpIdx),
24452
+ mouseup: e => this.onMouseUp(e, otpIdx)
24453
+ }
24454
+ }), [this.genDefaultSlot(otpIdx)]);
24455
+ },
24456
+
24457
+ genControl(otpIdx) {
24458
+ return this.$createElement('div', {
24459
+ staticClass: 'v-input__control'
24460
+ }, [this.genInputSlot(otpIdx)]);
24461
+ },
24462
+
24463
+ genDefaultSlot(otpIdx) {
24464
+ return [this.genFieldset(), this.genTextFieldSlot(otpIdx)];
24465
+ },
24466
+
24467
+ genContent() {
24468
+ return Array.from({
24469
+ length: +this.length
24470
+ }, (_, i) => {
24471
+ return this.$createElement('div', this.setTextColor(this.validationState, {
24472
+ staticClass: 'v-input',
24473
+ class: this.classes
24474
+ }), [this.genControl(i)]);
24475
+ });
24476
+ },
24477
+
24478
+ genFieldset() {
24479
+ return this.$createElement('fieldset', {
24480
+ attrs: {
24481
+ 'aria-hidden': true
24482
+ }
24483
+ }, [this.genLegend()]);
24484
+ },
24485
+
24486
+ genLegend() {
24487
+ const span = this.$createElement('span', {
24488
+ domProps: {
24489
+ innerHTML: '&#8203;'
24490
+ }
24491
+ });
24492
+ return this.$createElement('legend', {
24493
+ style: {
24494
+ width: '0px'
24495
+ }
24496
+ }, [span]);
24497
+ },
24498
+
24499
+ genInput(otpIdx) {
24500
+ const listeners = Object.assign({}, this.listeners$);
24501
+ delete listeners.change; // Change should not be bound externally
24502
+
24503
+ return this.$createElement('input', {
24504
+ style: {},
24505
+ domProps: {
24506
+ value: this.otp[otpIdx],
24507
+ min: this.type === 'number' ? 0 : null
24508
+ },
24509
+ attrs: { ...this.attrs$,
24510
+ disabled: this.isDisabled,
24511
+ readonly: this.isReadonly,
24512
+ type: this.type,
24513
+ id: `${this.computedId}--${otpIdx}`,
24514
+ class: `otp-field-box--${otpIdx}`,
24515
+ maxlength: 1
24516
+ },
24517
+ on: Object.assign(listeners, {
24518
+ blur: this.onBlur,
24519
+ input: e => this.onInput(e, otpIdx),
24520
+ focus: e => this.onFocus(e, otpIdx),
24521
+ paste: e => this.onPaste(e, otpIdx),
24522
+ keydown: this.onKeyDown,
24523
+ keyup: e => this.onKeyUp(e, otpIdx)
24524
+ }),
24525
+ ref: 'input',
24526
+ refInFor: true
24527
+ });
24528
+ },
24529
+
24530
+ genTextFieldSlot(otpIdx) {
24531
+ return this.$createElement('div', {
24532
+ staticClass: 'v-text-field__slot'
24533
+ }, [this.genInput(otpIdx)]);
24534
+ },
24535
+
24536
+ onBlur(e) {
24537
+ this.isFocused = false;
24538
+ e && this.$nextTick(() => this.$emit('blur', e));
24539
+ },
24540
+
24541
+ onClick(otpIdx) {
24542
+ if (this.isFocused || this.isDisabled || !this.$refs.input[otpIdx]) return;
24543
+ this.onFocus(undefined, otpIdx);
24544
+ },
24545
+
24546
+ onFocus(e, otpIdx) {
24547
+ e == null ? void 0 : e.preventDefault();
24548
+ e == null ? void 0 : e.stopPropagation();
24549
+ const elements = this.$refs.input;
24550
+ const ref = this.$refs.input && elements[otpIdx || 0];
24551
+ if (!ref) return;
24552
+
24553
+ if (document.activeElement !== ref) {
24554
+ ref.focus();
24555
+ return ref.select();
24556
+ }
24557
+
24558
+ if (!this.isFocused) {
24559
+ this.isFocused = true;
24560
+ ref.select();
24561
+ e && this.$emit('focus', e);
24562
+ }
24563
+ },
24564
+
24565
+ onInput(e, otpIdx) {
24566
+ const target = e.target;
24567
+ const value = target.value;
24568
+ this.applyValue(otpIdx, target.value, () => {
24569
+ this.internalValue = this.otp.join('');
24570
+ });
24571
+ this.badInput = target.validity && target.validity.badInput;
24572
+ const nextIndex = otpIdx + 1;
24573
+
24574
+ if (value) {
24575
+ if (nextIndex < +this.length) {
24576
+ this.changeFocus(nextIndex);
24577
+ } else {
24578
+ this.clearFocus(otpIdx);
24579
+ this.onCompleted();
24580
+ }
24581
+ }
24582
+ },
24583
+
24584
+ clearFocus(index) {
24585
+ const input = this.$refs.input[index];
24586
+ input.blur();
24587
+ },
24588
+
24589
+ onKeyDown(e) {
24590
+ if (e.keyCode === keyCodes.enter) {
24591
+ this.$emit('change', this.internalValue);
24592
+ }
24593
+
24594
+ this.$emit('keydown', e);
24595
+ },
24596
+
24597
+ onMouseDown(e, otpIdx) {
24598
+ // Prevent input from being blurred
24599
+ if (e.target !== this.$refs.input[otpIdx]) {
24600
+ e.preventDefault();
24601
+ e.stopPropagation();
24602
+ }
24603
+
24604
+ VInput.options.methods.onMouseDown.call(this, e);
24605
+ },
24606
+
24607
+ onMouseUp(e, otpIdx) {
24608
+ if (this.hasMouseDown) this.focus(e, otpIdx);
24609
+ VInput.options.methods.onMouseUp.call(this, e);
24610
+ },
24611
+
24612
+ onPaste(event, index) {
24613
+ var _event$clipboardData;
24614
+
24615
+ const maxCursor = +this.length - 1;
24616
+ const inputVal = event == null ? void 0 : (_event$clipboardData = event.clipboardData) == null ? void 0 : _event$clipboardData.getData('Text');
24617
+ const inputDataArray = (inputVal == null ? void 0 : inputVal.split('')) || [];
24618
+ event.preventDefault();
24619
+ const newOtp = [...this.otp];
24620
+
24621
+ for (let i = 0; i < inputDataArray.length; i++) {
24622
+ const appIdx = index + i;
24623
+ if (appIdx > maxCursor) break;
24624
+ newOtp[appIdx] = inputDataArray[i].toString();
24625
+ }
24626
+
24627
+ this.otp = newOtp;
24628
+ this.internalValue = this.otp.join('');
24629
+ const targetFocus = Math.min(index + inputDataArray.length, maxCursor);
24630
+ this.changeFocus(targetFocus);
24631
+
24632
+ if (newOtp.length === +this.length) {
24633
+ this.onCompleted();
24634
+ this.clearFocus(targetFocus);
24635
+ }
24636
+ },
24637
+
24638
+ applyValue(index, inputVal, next) {
24639
+ const newOtp = [...this.otp];
24640
+ newOtp[index] = inputVal;
24641
+ this.otp = newOtp;
24642
+ next();
24643
+ },
24644
+
24645
+ changeFocus(index) {
24646
+ this.onFocus(undefined, index || 0);
24647
+ },
24648
+
24649
+ updateValue(val) {
24650
+ // Sets validationState from validatable
24651
+ this.hasColor = val;
24652
+
24653
+ if (val) {
24654
+ this.initialValue = this.lazyValue;
24655
+ } else if (this.initialValue !== this.lazyValue) {
24656
+ this.$emit('change', this.lazyValue);
24657
+ }
24658
+ },
24659
+
24660
+ onKeyUp(event, index) {
24661
+ event.preventDefault();
24662
+ const eventKey = event.key;
24663
+
24664
+ if (['Tab', 'Shift', 'Meta', 'Control', 'Alt'].includes(eventKey)) {
24665
+ return;
24666
+ }
24667
+
24668
+ if (['Delete'].includes(eventKey)) {
24669
+ return;
24670
+ }
24671
+
24672
+ if (eventKey === 'ArrowLeft' || eventKey === 'Backspace' && !this.otp[index]) {
24673
+ return index > 0 && this.changeFocus(index - 1);
24674
+ }
24675
+
24676
+ if (eventKey === 'ArrowRight') {
24677
+ return index + 1 < +this.length && this.changeFocus(index + 1);
24678
+ }
24679
+ },
24680
+
24681
+ onCompleted() {
24682
+ const rsp = this.otp.join('');
24683
+
24684
+ if (rsp.length === +this.length) {
24685
+ this.$emit('finish', rsp);
24686
+ }
24687
+ }
24688
+
24689
+ },
24690
+
24691
+ render(h) {
24692
+ return h('div', {
24693
+ staticClass: 'v-otp-input',
24694
+ class: this.themeClasses
24695
+ }, this.genContent());
24696
+ }
24697
+
24698
+ });
24699
+
24313
24700
  // Styles
24314
24701
  /* @vue/component */
24315
24702
 
@@ -24515,13 +24902,14 @@ var VPagination = mixins(Colorable, intersectable({
24515
24902
 
24516
24903
  },
24517
24904
 
24518
- mounted() {
24905
+ beforeMount() {
24519
24906
  this.init();
24520
24907
  },
24521
24908
 
24522
24909
  methods: {
24523
24910
  init() {
24524
24911
  this.selected = null;
24912
+ this.onResize();
24525
24913
  this.$nextTick(this.onResize); // TODO: Change this (f75dee3a, cbdf7caa)
24526
24914
 
24527
24915
  setTimeout(() => this.selected = this.value, 100);
@@ -24773,7 +25161,7 @@ baseMixins$a.extend().extend({
24773
25161
  });
24774
25162
 
24775
25163
  // Styles
24776
- const baseMixins$9 = mixins(Comparable, BaseItemGroup, VInput);
25164
+ const baseMixins$9 = mixins(BaseItemGroup, VInput);
24777
25165
  /* @vue/component */
24778
25166
 
24779
25167
  var VRadioGroup = baseMixins$9.extend({
@@ -25699,9 +26087,7 @@ var VSnackbar = mixins(VSheet, Colorable, Toggleable, factory$3(['absolute', 'bo
25699
26087
  },
25700
26088
 
25701
26089
  styles() {
25702
- // Styles are not needed when
25703
- // using the absolute prop.
25704
- if (this.absolute) return {};
26090
+ if (this.absolute || !this.app) return {};
25705
26091
  const {
25706
26092
  bar,
25707
26093
  bottom,
@@ -25710,13 +26096,11 @@ var VSnackbar = mixins(VSheet, Colorable, Toggleable, factory$3(['absolute', 'bo
25710
26096
  left,
25711
26097
  right,
25712
26098
  top
25713
- } = this.$vuetify.application; // Should always move for y-axis
25714
- // applicationable components.
25715
-
26099
+ } = this.$vuetify.application;
25716
26100
  return {
25717
26101
  paddingBottom: convertToUnit(bottom + footer + insetFooter),
25718
- paddingLeft: !this.app ? undefined : convertToUnit(left),
25719
- paddingRight: !this.app ? undefined : convertToUnit(right),
26102
+ paddingLeft: convertToUnit(left),
26103
+ paddingRight: convertToUnit(right),
25720
26104
  paddingTop: convertToUnit(bar + top)
25721
26105
  };
25722
26106
  }
@@ -26592,6 +26976,12 @@ var VStepperStep = baseMixins$6.extend().extend({
26592
26976
  return children;
26593
26977
  },
26594
26978
 
26979
+ keyboardClick(e) {
26980
+ if (e.keyCode === keyCodes.space) {
26981
+ this.click(e);
26982
+ }
26983
+ },
26984
+
26595
26985
  toggle(step) {
26596
26986
  this.isActive = step.toString() === this.step.toString();
26597
26987
  this.isInactive = Number(step) < Number(this.step);
@@ -26601,6 +26991,9 @@ var VStepperStep = baseMixins$6.extend().extend({
26601
26991
 
26602
26992
  render(h) {
26603
26993
  return h('div', {
26994
+ attrs: {
26995
+ tabindex: this.editable ? 0 : -1
26996
+ },
26604
26997
  staticClass: 'v-stepper__step',
26605
26998
  class: this.classes,
26606
26999
  directives: [{
@@ -26608,7 +27001,8 @@ var VStepperStep = baseMixins$6.extend().extend({
26608
27001
  value: this.editable
26609
27002
  }],
26610
27003
  on: {
26611
- click: this.click
27004
+ click: this.click,
27005
+ keydown: this.keyboardClick
26612
27006
  }
26613
27007
  }, [this.genStep(), this.genLabel()]);
26614
27008
  }
@@ -27340,7 +27734,8 @@ var VTab = baseMixins$3.extend().extend().extend({
27340
27734
  },
27341
27735
 
27342
27736
  value() {
27343
- let to = this.to || this.href || '';
27737
+ let to = this.to || this.href;
27738
+ if (to == null) return to;
27344
27739
 
27345
27740
  if (this.$router && this.to === Object(this.to)) {
27346
27741
  const resolve = this.$router.resolve(this.to, this.$route, this.append);
@@ -27372,7 +27767,7 @@ var VTab = baseMixins$3.extend().extend().extend({
27372
27767
 
27373
27768
  toggle() {
27374
27769
  // VItemGroup treats a change event as a click
27375
- if (!this.isActive) {
27770
+ if (!this.isActive || !this.tabsBar.mandatory && !this.to) {
27376
27771
  this.$emit('change');
27377
27772
  }
27378
27773
  }
@@ -27387,7 +27782,7 @@ var VTab = baseMixins$3.extend().extend().extend({
27387
27782
  data.attrs = { ...data.attrs,
27388
27783
  'aria-selected': String(this.isActive),
27389
27784
  role: 'tab',
27390
- tabindex: 0
27785
+ tabindex: this.disabled ? -1 : 0
27391
27786
  };
27392
27787
  data.on = { ...data.on,
27393
27788
  keydown: e => {
@@ -28328,11 +28723,11 @@ var VTimePicker = mixins(Picker, PickerButton
28328
28723
 
28329
28724
  // Components
28330
28725
  createSimpleFunctional('v-toolbar__title');
28331
- createSimpleFunctional('v-toolbar__items');
28726
+ const VToolbarItems = createSimpleFunctional('v-toolbar__items');
28332
28727
 
28333
28728
  /* @vue/component */
28334
28729
 
28335
- var VTooltip = mixins(Colorable, Delayable, Dependent, Menuable, Toggleable).extend({
28730
+ var VTooltip = mixins(Colorable, Delayable, Dependent, Menuable).extend({
28336
28731
  name: 'v-tooltip',
28337
28732
  props: {
28338
28733
  closeDelay: {
@@ -28348,6 +28743,10 @@ var VTooltip = mixins(Colorable, Delayable, Dependent, Menuable, Toggleable).ext
28348
28743
  type: Boolean,
28349
28744
  default: true
28350
28745
  },
28746
+ openOnFocus: {
28747
+ type: Boolean,
28748
+ default: true
28749
+ },
28351
28750
  tag: {
28352
28751
  type: String,
28353
28752
  default: 'span'
@@ -28427,7 +28826,6 @@ var VTooltip = mixins(Colorable, Delayable, Dependent, Menuable, Toggleable).ext
28427
28826
  left: this.calculatedLeft,
28428
28827
  maxWidth: convertToUnit(this.maxWidth),
28429
28828
  minWidth: convertToUnit(this.minWidth),
28430
- opacity: this.isActive ? 0.9 : 0,
28431
28829
  top: this.calculatedTop,
28432
28830
  zIndex: this.zIndex || this.activeZIndex
28433
28831
  };
@@ -28463,15 +28861,17 @@ var VTooltip = mixins(Colorable, Delayable, Dependent, Menuable, Toggleable).ext
28463
28861
  genActivatorListeners() {
28464
28862
  const listeners = Activatable.options.methods.genActivatorListeners.call(this);
28465
28863
 
28466
- listeners.focus = e => {
28467
- this.getActivator(e);
28468
- this.runDelay('open');
28469
- };
28864
+ if (this.openOnFocus) {
28865
+ listeners.focus = e => {
28866
+ this.getActivator(e);
28867
+ this.runDelay('open');
28868
+ };
28470
28869
 
28471
- listeners.blur = e => {
28472
- this.getActivator(e);
28473
- this.runDelay('close');
28474
- };
28870
+ listeners.blur = e => {
28871
+ this.getActivator(e);
28872
+ this.runDelay('close');
28873
+ };
28874
+ }
28475
28875
 
28476
28876
  listeners.keydown = e => {
28477
28877
  if (e.keyCode === keyCodes.esc) {
@@ -28541,6 +28941,7 @@ const VTreeviewNodeProps = {
28541
28941
  type: String,
28542
28942
  default: 'primary'
28543
28943
  },
28944
+ disablePerNode: Boolean,
28544
28945
  expandIcon: {
28545
28946
  type: String,
28546
28947
  default: '$subgroup'
@@ -28621,7 +29022,7 @@ const VTreeviewNode = baseMixins.extend().extend({
28621
29022
  }),
28622
29023
  computed: {
28623
29024
  disabled() {
28624
- return getObjectValueByPath(this.item, this.itemDisabled) || this.parentIsDisabled && this.selectionType === 'leaf';
29025
+ return getObjectValueByPath(this.item, this.itemDisabled) || !this.disablePerNode && this.parentIsDisabled && this.selectionType === 'leaf';
28625
29026
  },
28626
29027
 
28627
29028
  key() {
@@ -28805,6 +29206,7 @@ const VTreeviewNode = baseMixins.extend().extend({
28805
29206
  selectable: this.selectable,
28806
29207
  selectedColor: this.selectedColor,
28807
29208
  color: this.color,
29209
+ disablePerNode: this.disablePerNode,
28808
29210
  expandIcon: this.expandIcon,
28809
29211
  indeterminateIcon: this.indeterminateIcon,
28810
29212
  offIcon: this.offIcon,
@@ -28907,6 +29309,7 @@ mixins(provide('treeview'), Themeable
28907
29309
  default: () => []
28908
29310
  },
28909
29311
  dense: Boolean,
29312
+ disabled: Boolean,
28910
29313
  filter: Function,
28911
29314
  hoverable: Boolean,
28912
29315
  items: {
@@ -29257,7 +29660,7 @@ mixins(provide('treeview'), Themeable
29257
29660
  return !this.isExcluded(getObjectValueByPath(item, this.itemKey));
29258
29661
  }).map(item => {
29259
29662
  const genChild = VTreeviewNode.options.methods.genChild.bind(this);
29260
- return genChild(item, getObjectValueByPath(item, this.itemDisabled));
29663
+ return genChild(item, this.disabled || getObjectValueByPath(item, this.itemDisabled));
29261
29664
  })
29262
29665
  /* istanbul ignore next */
29263
29666
  : this.$slots.default; // TODO: remove type annotation with TS 3.2
@@ -31530,8 +31933,10 @@ let ZdInput = class ZdInput extends ZdComponentRender$1 {
31530
31933
  }
31531
31934
  mounted() {
31532
31935
  this.inputRef = this.$refs.instance;
31533
- this.instance.setViewValidate(this.inputRef.validate);
31534
- this.instance.setViewResetValidation(this.inputRef.resetValidation);
31936
+ if (this.inputRef) {
31937
+ this.instance.setViewValidate(this.inputRef.validate);
31938
+ this.instance.setViewResetValidation(this.inputRef.resetValidation);
31939
+ }
31535
31940
  }
31536
31941
  input(value) {
31537
31942
  this.$emit('update:value', value);
@@ -42150,10 +42555,7 @@ let ZdMenu = class ZdMenu extends ZdComponentRender$1 {
42150
42555
  KeyMap.unbind(this.navigationKeyMapping, this);
42151
42556
  }
42152
42557
  showSlotOnHover() {
42153
- if (this.instance.miniState && this.$children.length >= 2 && this.$children[1].$el.matches(':hover')) {
42154
- return this.instance.miniState;
42155
- }
42156
- return !this.instance.miniState;
42558
+ return (this.instance.miniState && this.instance.mouseOver) || (!this.instance.miniState || this.instance.mini);
42157
42559
  }
42158
42560
  doSearch({ component }) {
42159
42561
  this.instance.search = component.value;
@@ -42406,11 +42808,13 @@ var __vue_render__$z = function () {
42406
42808
  floating: _vm.instance.floating,
42407
42809
  "mini-variant-width": _vm.instance.miniWidth,
42408
42810
  "mini-variant":
42409
- (_vm.instance.mini ||
42410
- (_vm.instance.miniState &&
42411
- _vm.$refs.ZdMenu &&
42412
- !_vm.$refs.ZdMenu.isMobile)) &&
42413
- !_vm.instance.mouseOver,
42811
+ (!_vm.instance.opened && _vm.instance.mini) ||
42812
+ (_vm.instance.miniState &&
42813
+ !_vm.instance.mouseOver &&
42814
+ _vm.instance.miniState &&
42815
+ _vm.$refs.ZdMenu &&
42816
+ !_vm.$refs.ZdMenu.isMobile) ||
42817
+ (_vm.instance.miniState && _vm.instance.mini),
42414
42818
  "mobile-breakpoint": _vm.instance.mobileBreakpoint,
42415
42819
  temporary: _vm.instance.temporary,
42416
42820
  width: _vm.instance.width,
@@ -42513,7 +42917,7 @@ __vue_render__$z._withStripped = true;
42513
42917
  /* style */
42514
42918
  const __vue_inject_styles__$z = function (inject) {
42515
42919
  if (!inject) return
42516
- inject("data-v-368f7c97_0", { source: ".zd-menu .v-list .v-list-item .v-list-item__title {\n font-weight: var(--zd-font-body1-weight);\n font-size: var(--zd-font-body1-size);\n color: var(--zd-font-color);\n text-align: left;\n}\n.zd-menu .v-list .v-list-item .v-list-item__icon .v-icon {\n color: var(--zd-font-color);\n}\n.zd-menu .v-list .v-list-item.selected .v-list-item__title {\n font-weight: var(--zd-font-body2-weight);\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .v-list-item.selected .v-list-item__icon .v-icon {\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .v-list-item.v-list-item--active:not(.focus-visible):not(:focus):not([data-focus-visible-added]):not(:hover):before {\n opacity: 0;\n}\n.zd-menu .v-list .v-list-group.selected > .v-list-group__header .v-list-item__title {\n font-weight: var(--zd-font-body2-weight);\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .v-list-group.selected > .v-list-group__header .v-list-item__icon .v-icon {\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .zd-menu-top-slot {\n margin-bottom: 10px;\n display: block;\n}\n.zd-menu.v-navigation-drawer--mini-variant .v-list-item {\n justify-content: inherit;\n}\n.zd-menu.v-navigation-drawer--is-mobile div > .zd-menu-top-slot {\n display: block !important;\n}\n.zd-menu.theme--dark .v-list .v-list-item .v-list-item__title {\n color: var(--v--grey-lighten5);\n}\n.zd-menu.theme--dark .v-list .v-list-item .v-list-item__icon .v-icon {\n color: var(--v--grey-lighten5);\n}", map: undefined, media: undefined });
42920
+ inject("data-v-13b6f89c_0", { source: ".zd-menu .v-list .v-list-item .v-list-item__title {\n font-weight: var(--zd-font-body1-weight);\n font-size: var(--zd-font-body1-size);\n color: var(--zd-font-color);\n text-align: left;\n}\n.zd-menu .v-list .v-list-item .v-list-item__icon .v-icon {\n color: var(--zd-font-color);\n}\n.zd-menu .v-list .v-list-item.selected .v-list-item__title {\n font-weight: var(--zd-font-body2-weight);\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .v-list-item.selected .v-list-item__icon .v-icon {\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .v-list-item.v-list-item--active:not(.focus-visible):not(:focus):not([data-focus-visible-added]):not(:hover):before {\n opacity: 0;\n}\n.zd-menu .v-list .v-list-group.selected > .v-list-group__header .v-list-item__title {\n font-weight: var(--zd-font-body2-weight);\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .v-list-group.selected > .v-list-group__header .v-list-item__icon .v-icon {\n color: var(--v-primary-base);\n}\n.zd-menu .v-list .zd-menu-top-slot {\n margin-bottom: 10px;\n display: block;\n}\n.zd-menu.v-navigation-drawer--mini-variant .v-list-item {\n justify-content: inherit;\n}\n.zd-menu.v-navigation-drawer--is-mobile div > .zd-menu-top-slot {\n display: block !important;\n}\n.zd-menu.theme--dark .v-list .v-list-item .v-list-item__title {\n color: var(--v--grey-lighten5);\n}\n.zd-menu.theme--dark .v-list .v-list-item .v-list-item__icon .v-icon {\n color: var(--v--grey-lighten5);\n}", map: undefined, media: undefined });
42517
42921
 
42518
42922
  };
42519
42923
  /* scoped */
@@ -48048,26 +48452,30 @@ __vue_render__$5._withStripped = true;
48048
48452
  let ZdTreeCheckbox = class ZdTreeCheckbox extends Vue {
48049
48453
  get childrenCheck() {
48050
48454
  var _a;
48051
- return (_a = this.node.children) === null || _a === void 0 ? void 0 : _a.every((child) => child.isChecked);
48455
+ return (_a = this.node.children) === null || _a === void 0 ? void 0 : _a.every((child) => child.data && child.data[this.checkedField]);
48052
48456
  }
48053
48457
  check() {
48054
- this.node.isChecked = this.childrenCheck;
48458
+ if (!this.node.data)
48459
+ return;
48460
+ this.node.data[this.checkedField] = this.childrenCheck;
48055
48461
  }
48056
48462
  get isIndeterminate() {
48057
48463
  var _a, _b;
48058
48464
  let count = 0;
48059
48465
  (_a = this.node.children) === null || _a === void 0 ? void 0 : _a.forEach((child) => {
48060
- if (child.isChecked)
48466
+ if (child.data && child.data[this.checkedField])
48061
48467
  count += 1;
48062
48468
  });
48063
48469
  return (count > 0) && (count < (((_b = this.node.children) === null || _b === void 0 ? void 0 : _b.length) || 0));
48064
48470
  }
48065
48471
  checkboxToggle(node) {
48066
- this.toggleChildren([node], !!node.isChecked);
48472
+ this.toggleChildren([node], !!(node.data && node.data[this.checkedField]));
48067
48473
  }
48068
48474
  toggleChildren(nodes, value) {
48069
48475
  nodes.forEach((node) => {
48070
- node.isChecked = value;
48476
+ if (!node.data)
48477
+ return;
48478
+ node.data[this.checkedField] = value;
48071
48479
  if (node.children && node.children.length > 0)
48072
48480
  this.toggleChildren(node.children, value);
48073
48481
  });
@@ -48081,6 +48489,10 @@ __decorate([
48081
48489
  Prop({ type: [Object], default: () => [] }),
48082
48490
  __metadata("design:type", Object)
48083
48491
  ], ZdTreeCheckbox.prototype, "node", void 0);
48492
+ __decorate([
48493
+ Prop({ type: [String], default: 'checked' }),
48494
+ __metadata("design:type", String)
48495
+ ], ZdTreeCheckbox.prototype, "checkedField", void 0);
48084
48496
  __decorate([
48085
48497
  Watch('childrenCheck'),
48086
48498
  __metadata("design:type", Function),
@@ -48108,7 +48520,7 @@ var __vue_render__$4 = function () {
48108
48520
  "on-icon": _vm.$getIcon("checkboxOn"),
48109
48521
  "off-icon": _vm.$getIcon("checkboxOff"),
48110
48522
  "indeterminate-icon": _vm.$getIcon("checkboxIndeterminate"),
48111
- "input-value": _vm.node.isChecked,
48523
+ "input-value": _vm.node.data[_vm.checkedField],
48112
48524
  indeterminate: _vm.isIndeterminate,
48113
48525
  },
48114
48526
  on: {
@@ -48117,11 +48529,11 @@ var __vue_render__$4 = function () {
48117
48529
  },
48118
48530
  },
48119
48531
  model: {
48120
- value: _vm.node.isChecked,
48532
+ value: _vm.node.data[_vm.checkedField],
48121
48533
  callback: function ($$v) {
48122
- _vm.$set(_vm.node, "isChecked", $$v);
48534
+ _vm.$set(_vm.node.data, _vm.checkedField, $$v);
48123
48535
  },
48124
- expression: "node.isChecked",
48536
+ expression: "node.data[checkedField]",
48125
48537
  },
48126
48538
  })
48127
48539
  };
@@ -48131,7 +48543,7 @@ __vue_render__$4._withStripped = true;
48131
48543
  /* style */
48132
48544
  const __vue_inject_styles__$4 = function (inject) {
48133
48545
  if (!inject) return
48134
- inject("data-v-6000ad85_0", { source: ".zd-tree-checkbox {\n display: inline-block;\n top: 50%;\n transform: translate(0, -50%);\n}\n.zd-tree-checkbox > .v-input--selection-controls__input {\n margin-right: 0;\n}", map: undefined, media: undefined });
48546
+ inject("data-v-130a7c09_0", { source: ".zd-tree-checkbox {\n display: inline-block;\n top: 50%;\n transform: translate(0, -50%);\n}\n.zd-tree-checkbox > .v-input--selection-controls__input {\n margin-right: 0;\n}", map: undefined, media: undefined });
48135
48547
 
48136
48548
  };
48137
48549
  /* scoped */
@@ -48253,6 +48665,7 @@ let ZdTree = class ZdTree extends ZdComponentRender$1 {
48253
48665
  mounted() {
48254
48666
  this.instance.setTree(this.$refs.tree);
48255
48667
  this.setAfterTitleMargin();
48668
+ this.nodeChange();
48256
48669
  this.$watch('$refs.tree.nodes', this.nodeChange, { deep: true });
48257
48670
  }
48258
48671
  dataChange() {
@@ -48383,6 +48796,10 @@ __decorate([
48383
48796
  Prop({ type: String, default: '' }),
48384
48797
  __metadata("design:type", String)
48385
48798
  ], ZdTree.prototype, "dataField", void 0);
48799
+ __decorate([
48800
+ Prop({ type: String, default: 'checked' }),
48801
+ __metadata("design:type", String)
48802
+ ], ZdTree.prototype, "checkedField", void 0);
48386
48803
  __decorate([
48387
48804
  Prop({ type: [Boolean, String], default: false }),
48388
48805
  __metadata("design:type", Boolean)
@@ -48486,7 +48903,10 @@ var __vue_render__$2 = function () {
48486
48903
  return [
48487
48904
  _vm.instance.checkbox
48488
48905
  ? _c("zd-tree-checkbox", {
48489
- attrs: { node: _vm.instanceNode(node) },
48906
+ attrs: {
48907
+ node: _vm.instanceNode(node),
48908
+ checkedField: _vm.instance.checkedField,
48909
+ },
48490
48910
  on: {
48491
48911
  click: function ($event) {
48492
48912
  return _vm.nodeCheck(node, $event)
@@ -48688,7 +49108,7 @@ __vue_render__$2._withStripped = true;
48688
49108
  /* style */
48689
49109
  const __vue_inject_styles__$2 = function (inject) {
48690
49110
  if (!inject) return
48691
- inject("data-v-71da43d2_0", { source: ".zd-tree {\n color: var(--zd-font-color);\n font-size: var(--zd-font-body1-size);\n font-weight: normal;\n}\n.zd-tree.theme--light .sl-vue-tree-title {\n color: var(--zd-font-color);\n}\n.zd-tree.theme--light .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-node-item:hover {\n background: #eee;\n}\n.zd-tree.theme--dark .sl-vue-tree-title {\n color: #fff;\n}\n.zd-tree.theme--dark .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-node-item:hover {\n background: #616161;\n}\n.zd-tree .sl-vue-tree-title {\n display: flex;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node {\n padding-top: 3px;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-node-item {\n height: 30px;\n line-height: 30px;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node.sl-vue-tree-selected > .sl-vue-tree-node-item {\n background-color: var(--current-row-color);\n color: var(--zd-font-color);\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node.sl-vue-tree-selected > .sl-vue-tree-node-item:hover {\n background: var(--current-row-hover-color) !important;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node.sl-vue-tree-selected > .sl-vue-tree-node-item .sl-vue-tree-toggle .v-icon {\n color: var(--zd-font-color);\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-toggle span .v-icon {\n margin-right: -6px;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-gap {\n width: 32px;\n}\n.zd-tree .item-title {\n padding-left: 6px;\n}\n.zd-tree .item-title.has-children {\n font-weight: 700;\n}\n.zd-tree .item-title.is-clickable {\n cursor: pointer;\n}", map: undefined, media: undefined });
49111
+ inject("data-v-58bd8c74_0", { source: ".zd-tree {\n color: var(--zd-font-color);\n font-size: var(--zd-font-body1-size);\n font-weight: normal;\n}\n.zd-tree.theme--light .sl-vue-tree-title {\n color: var(--zd-font-color);\n}\n.zd-tree.theme--light .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-node-item:hover {\n background: #eee;\n}\n.zd-tree.theme--dark .sl-vue-tree-title {\n color: #fff;\n}\n.zd-tree.theme--dark .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-node-item:hover {\n background: #616161;\n}\n.zd-tree .sl-vue-tree-title {\n display: flex;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node {\n padding-top: 3px;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-node-item {\n height: 30px;\n line-height: 30px;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node.sl-vue-tree-selected > .sl-vue-tree-node-item {\n background-color: var(--current-row-color);\n color: var(--zd-font-color);\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node.sl-vue-tree-selected > .sl-vue-tree-node-item:hover {\n background: var(--current-row-hover-color) !important;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node.sl-vue-tree-selected > .sl-vue-tree-node-item .sl-vue-tree-toggle .v-icon {\n color: var(--zd-font-color);\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-node .sl-vue-tree-toggle span .v-icon {\n margin-right: -6px;\n}\n.zd-tree .sl-vue-tree-nodes-list .sl-vue-tree-gap {\n width: 32px;\n}\n.zd-tree .item-title {\n padding-left: 6px;\n}\n.zd-tree .item-title.has-children {\n font-weight: 700;\n}\n.zd-tree .item-title.is-clickable {\n cursor: pointer;\n}", map: undefined, media: undefined });
48692
49112
 
48693
49113
  };
48694
49114
  /* scoped */
@@ -50951,6 +51371,7 @@ const Zeedhi = {
50951
51371
  VBreadcrumbs,
50952
51372
  VBtn,
50953
51373
  VBtnToggle,
51374
+ VCalendar,
50954
51375
  VCard,
50955
51376
  VCardActions,
50956
51377
  VCardText,
@@ -50986,6 +51407,7 @@ const Zeedhi = {
50986
51407
  VMenu,
50987
51408
  VNavigationDrawer,
50988
51409
  VOverlay,
51410
+ VOtpInput,
50989
51411
  VPagination,
50990
51412
  VProgressCircular,
50991
51413
  VProgressLinear,
@@ -51017,6 +51439,8 @@ const Zeedhi = {
51017
51439
  VTextField,
51018
51440
  VTimePicker,
51019
51441
  VTooltip,
51442
+ VToolbar,
51443
+ VToolbarItems,
51020
51444
  VSimpleCheckbox,
51021
51445
  },
51022
51446
  });