@dimailn/vuetify 2.7.2-alpha21 → 2.7.2-alpha23

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 (79) hide show
  1. package/dist/vuetify.js +141 -72
  2. package/dist/vuetify.js.map +1 -1
  3. package/dist/vuetify.min.css +1 -1
  4. package/dist/vuetify.min.js +2 -2
  5. package/es5/components/VForm/VForm.js +44 -30
  6. package/es5/components/VForm/VForm.js.map +1 -1
  7. package/es5/components/VOverlay/VOverlay.js +2 -3
  8. package/es5/components/VOverlay/VOverlay.js.map +1 -1
  9. package/es5/components/VProgressCircular/VProgressCircular.js +5 -3
  10. package/es5/components/VProgressCircular/VProgressCircular.js.map +1 -1
  11. package/es5/components/VProgressLinear/VProgressLinear.js +41 -19
  12. package/es5/components/VProgressLinear/VProgressLinear.js.map +1 -1
  13. package/es5/components/VTabs/VTabsBar.js.map +1 -1
  14. package/es5/components/VVirtualScroll/VVirtualScroll.js +15 -16
  15. package/es5/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  16. package/es5/components/VWindow/VWindow.js +13 -5
  17. package/es5/components/VWindow/VWindow.js.map +1 -1
  18. package/es5/components/VWindow/VWindowItem.js +9 -5
  19. package/es5/components/VWindow/VWindowItem.js.map +1 -1
  20. package/es5/framework.js +1 -1
  21. package/es5/mixins/overlayable/index.js.map +1 -1
  22. package/es5/mixins/validatable/index.js +8 -5
  23. package/es5/mixins/validatable/index.js.map +1 -1
  24. package/lib/components/VForm/VForm.js +40 -26
  25. package/lib/components/VForm/VForm.js.map +1 -1
  26. package/lib/components/VOverlay/VOverlay.js +1 -2
  27. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  28. package/lib/components/VProgressCircular/VProgressCircular.js +5 -3
  29. package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
  30. package/lib/components/VProgressLinear/VProgressLinear.js +35 -17
  31. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  32. package/lib/components/VTabs/VTabsBar.js.map +1 -1
  33. package/lib/components/VVirtualScroll/VVirtualScroll.js +8 -11
  34. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  35. package/lib/components/VWindow/VWindow.js +7 -3
  36. package/lib/components/VWindow/VWindow.js.map +1 -1
  37. package/lib/components/VWindow/VWindowItem.js +3 -1
  38. package/lib/components/VWindow/VWindowItem.js.map +1 -1
  39. package/lib/framework.js +1 -1
  40. package/lib/mixins/overlayable/index.js.map +1 -1
  41. package/lib/mixins/validatable/index.js +8 -4
  42. package/lib/mixins/validatable/index.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/components/VAvatar/__tests__/VAvatar.spec.ts +72 -10
  45. package/src/components/VForm/VForm.ts +61 -35
  46. package/src/components/VForm/__tests__/VForm.spec.ts +100 -80
  47. package/src/components/VOverlay/VOverlay.ts +1 -1
  48. package/src/components/VOverlay/__tests__/VOverlay.spec.ts +6 -6
  49. package/src/components/VProgressCircular/VProgressCircular.ts +6 -5
  50. package/src/components/VProgressCircular/__tests__/VProgressCircular.spec.ts +28 -21
  51. package/src/components/VProgressCircular/__tests__/__snapshots__/VProgressCircular.spec.ts.snap +62 -62
  52. package/src/components/VProgressLinear/VProgressLinear.ts +42 -22
  53. package/src/components/VProgressLinear/__tests__/VProgressLinear.spec.ts +378 -71
  54. package/src/components/VProgressLinear/__tests__/__snapshots__/VProgressLinear.spec.ts.snap +53 -79
  55. package/src/components/VSheet/__tests__/VSheet.spec.ts +5 -5
  56. package/src/components/VTabs/VTabsBar.ts +7 -5
  57. package/src/components/VVirtualScroll/VVirtualScroll.ts +14 -13
  58. package/src/components/VVirtualScroll/__tests__/VVirtualScroll.spec.ts +26 -19
  59. package/src/components/VWindow/VWindow.ts +9 -5
  60. package/src/components/VWindow/VWindowItem.ts +3 -1
  61. package/src/components/VWindow/__tests__/VWindow.spec.ts +226 -185
  62. package/src/components/VWindow/__tests__/VWindowItem.spec.ts +162 -132
  63. package/src/mixins/applicationable/__tests__/applicationable.spec.ts +31 -27
  64. package/src/mixins/colorable/__tests__/colorable.spec.ts +9 -6
  65. package/src/mixins/elevatable/__tests__/elevatable.spec.ts +14 -13
  66. package/src/mixins/intersectable/__tests__/intersectable.spec.ts +35 -29
  67. package/src/mixins/menuable/__tests__/menuable.spec.ts +76 -33
  68. package/src/mixins/mobile/__tests__/mobile.spec.ts +9 -6
  69. package/src/mixins/overlayable/__tests__/overlayable.spec.ts +32 -24
  70. package/src/mixins/overlayable/index.ts +1 -1
  71. package/src/mixins/proxyable/__tests__/proxyable.spec.ts +18 -17
  72. package/src/mixins/registrable/__tests__/registrable.spec.ts +31 -0
  73. package/src/mixins/rippleable/__tests__/rippleable.spec.ts +10 -9
  74. package/src/mixins/roundable/__tests__/roundable.spec.ts +7 -5
  75. package/src/mixins/routable/__tests__/routable.spec.ts +60 -52
  76. package/src/mixins/scrollable/__tests__/scrollable.spec.ts +56 -27
  77. package/src/mixins/selectable/__tests__/selectable.spec.ts +22 -9
  78. package/src/mixins/validatable/__tests__/validatable.spec.ts +194 -158
  79. package/src/mixins/validatable/index.ts +16 -18
@@ -7,12 +7,12 @@ import intersect, { Intersect } from '../../directives/intersect'; // Mixins
7
7
 
8
8
  import Colorable from '../../mixins/colorable';
9
9
  import { factory as PositionableFactory } from '../../mixins/positionable';
10
- import Proxyable from '../../mixins/proxyable';
10
+ import { factory as ProxyableFactory } from '../../mixins/proxyable';
11
11
  import Themeable from '../../mixins/themeable'; // Utilities
12
12
 
13
13
  import { convertToUnit, getSlot } from '../../util/helpers';
14
14
  import mixins from '../../util/mixins';
15
- const baseMixins = mixins(Colorable, PositionableFactory(['absolute', 'fixed', 'top', 'bottom']), Proxyable, Themeable);
15
+ const baseMixins = mixins(Colorable, PositionableFactory(['absolute', 'fixed', 'top', 'bottom']), ProxyableFactory('modelValue', 'update:modelValue'), Themeable);
16
16
  /* @vue/component */
17
17
 
18
18
  export default baseMixins.extend({
@@ -46,11 +46,16 @@ export default baseMixins.extend({
46
46
  default: 4
47
47
  },
48
48
  indeterminate: Boolean,
49
+ modelValue: {
50
+ type: [Number, String],
51
+ default: 0
52
+ },
49
53
  query: Boolean,
50
54
  reverse: Boolean,
51
55
  rounded: Boolean,
52
56
  stream: Boolean,
53
57
  striped: Boolean,
58
+ // Оставляем value для обратной совместимости
54
59
  value: {
55
60
  type: [Number, String],
56
61
  default: 0
@@ -59,7 +64,7 @@ export default baseMixins.extend({
59
64
 
60
65
  data() {
61
66
  return {
62
- internalLazyValue: this.value || 0,
67
+ internalLazyValue: this.modelValue || this.value || 0,
63
68
  isVisible: true
64
69
  };
65
70
  },
@@ -73,7 +78,9 @@ export default baseMixins.extend({
73
78
  },
74
79
 
75
80
  __cachedBar() {
76
- return h(this.computedTransition, [this.__cachedBarType]);
81
+ return h(this.computedTransition, {}, {
82
+ default: () => [this.__cachedBarType]
83
+ });
77
84
  },
78
85
 
79
86
  __cachedBarType() {
@@ -154,7 +161,7 @@ export default baseMixins.extend({
154
161
  },
155
162
 
156
163
  reactive() {
157
- return Boolean(this.$listeners.change);
164
+ return Boolean(this.$listeners.onChange) || Boolean(this.$listeners['onUpdate:modelValue']);
158
165
  },
159
166
 
160
167
  styles() {
@@ -171,6 +178,16 @@ export default baseMixins.extend({
171
178
  return styles;
172
179
  }
173
180
 
181
+ },
182
+ watch: {
183
+ modelValue(val) {
184
+ this.internalLazyValue = val;
185
+ },
186
+
187
+ value(val) {
188
+ this.internalLazyValue = val;
189
+ }
190
+
174
191
  },
175
192
  methods: {
176
193
  genContent() {
@@ -178,9 +195,11 @@ export default baseMixins.extend({
178
195
  value: this.internalLazyValue
179
196
  });
180
197
  if (!slot) return null;
181
- return h('div', {
182
- class: 'v-progress-linear__content'
183
- }, slot);
198
+ return h("div", {
199
+ class: "v-progress-linear__content"
200
+ }, {
201
+ default: () => slot
202
+ });
184
203
  },
185
204
 
186
205
  genListeners() {
@@ -214,9 +233,10 @@ export default baseMixins.extend({
214
233
  },
215
234
 
216
235
  normalize(value) {
217
- if (value < 0) return 0;
218
- if (value > 100) return 100;
219
- return parseFloat(value);
236
+ const numValue = typeof value === 'string' ? parseFloat(value) : value;
237
+ if (numValue < 0) return 0;
238
+ if (numValue > 100) return 100;
239
+ return numValue;
220
240
  }
221
241
 
222
242
  },
@@ -224,12 +244,10 @@ export default baseMixins.extend({
224
244
  render() {
225
245
  const data = {
226
246
  class: ['v-progress-linear', this.classes],
227
- attrs: {
228
- role: 'progressbar',
229
- 'aria-valuemin': 0,
230
- 'aria-valuemax': this.normalizedBuffer,
231
- 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue
232
- },
247
+ role: 'progressbar',
248
+ 'aria-valuemin': 0,
249
+ 'aria-valuemax': this.normalizedBuffer,
250
+ 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,
233
251
  style: {
234
252
  bottom: this.bottom ? 0 : undefined,
235
253
  height: this.active ? convertToUnit(this.height) : 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VProgressLinear/VProgressLinear.ts"],"names":[],"mappings":"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","sourcesContent":["import {h, withDirectives} from 'vue'\nimport './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect, { Intersect } from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return h('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n class: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return h(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return h('div', {\n class: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n class: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return h('div', {\n class: ['v-progress-linear__indeterminate',\n {\n 'v-progress-linear__indeterminate--active': this.active,\n }\n ]\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return h('div', this.setTextColor(this.color, {\n class: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record<string, any> = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return h('div', {\n class: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.onClick = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return h('div', this.setBackgroundColor(this.color, {\n class: ['v-progress-linear__indeterminate',\n {\n [name]: true,\n }\n ]\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (): VNode {\n const data = {\n class: ['v-progress-linear', this.classes],\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n ...this.genListeners(),\n }\n\n return withDirectives(h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ]), [\n [\n Intersect,\n this.onObserve\n ]\n ])\n },\n})\n"],"sourceRoot":"","file":"VProgressLinear.js"}
1
+ {"version":3,"sources":["../../../src/components/VProgressLinear/VProgressLinear.ts"],"names":[],"mappings":"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","sourcesContent":["import {h, withDirectives} from 'vue'\nimport './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect, { Intersect } from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport { factory as ProxyableFactory } from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n ProxyableFactory('modelValue', 'update:modelValue'),\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n // Оставляем value для обратной совместимости\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.modelValue || this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return h('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n class: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return h(this.computedTransition, {}, {\n default: () => [this.__cachedBarType]\n })\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return h('div', {\n class: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n class: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return h('div', {\n class: ['v-progress-linear__indeterminate',\n {\n 'v-progress-linear__indeterminate--active': this.active,\n }\n ]\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return h('div', this.setTextColor(this.color, {\n class: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): any {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.onChange) || Boolean(this.$listeners['onUpdate:modelValue'])\n },\n styles (): object {\n const styles: Record<string, any> = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n watch: {\n modelValue (val) {\n this.internalLazyValue = val\n },\n value (val) {\n this.internalLazyValue = val\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return h(\n \"div\",\n {\n class: \"v-progress-linear__content\"\n },\n {\n default: () => slot\n }\n );\n },\n genListeners (): any {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.onClick = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short'): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n class: ['v-progress-linear__indeterminate',\n {\n [name]: true,\n }\n ]\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number): number {\n const numValue = typeof value === 'string' ? parseFloat(value) : value\n if (numValue < 0) return 0\n if (numValue > 100) return 100\n return numValue\n },\n },\n\n render (): VNode {\n const data = {\n class: ['v-progress-linear', this.classes],\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n ...this.genListeners(),\n }\n\n return withDirectives(h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ]), [\n [\n Intersect,\n this.onObserve\n ]\n ])\n },\n})\n"],"sourceRoot":"","file":"VProgressLinear.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VTabs/VTabsBar.ts"],"names":[],"mappings":"AAAA,SAAQ,CAAR,QAAgB,KAAhB,C,CACA;;AACA,SAAS,cAAT,QAA+B,4BAA/B,C,CAKA;;AACA,OAAO,SAAP,MAAsB,wBAAtB;AACA,OAAO,WAAP,MAAwB,2BAAxB,C,CAEA;;AACA,OAAO,MAAP,MAAmB,mBAAnB;AAQA,eAAe,MAAM,CACnB,cADmB,EAEnB,WAFmB,EAGnB;AACA;AAJmB,CAAN,CAKb,MALa,CAKN;AACP,EAAA,IAAI,EAAE,YADC;;AAGP,EAAA,OAAO,GAAA;AACL,WAAO;AACL,MAAA,OAAO,EAAE;AADJ,KAAP;AAGD,GAPM;;AASP,EAAA,QAAQ,EAAE;AACR,IAAA,OAAO,GAAA;AACL,aAAO,EACL,GAAG,cAAc,CAAC,QAAf,CAAwB,OAAxB,CAAgC,IAAhC,CAAqC,IAArC,CADE;AAEL,sBAAc,IAFT;AAGL,iCAAyB,KAAK,QAHzB;AAIL;AACA,mCAA2B,KAAK,UAL3B;AAML,WAAG,KAAK;AANH,OAAP;AAQD;;AAVO,GATH;AAsBP,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE,YADF;AAEL,IAAA,aAAa,EAAE,YAFV;AAGL,IAAA,MAAM,EAAE;AAHH,GAtBA;AA4BP,EAAA,OAAO,EAAE;AACP,IAAA,UAAU,GAAA;AACR,UAAI,CAAC,KAAK,QAAV,EAAoB;AAEpB,WAAK,KAAL,CAAW,aAAX;AACD,KALM;;AAMP,IAAA,UAAU,GAAA;AACR,YAAM,MAAM,GAAG,cAAc,CAAC,OAAf,CAAuB,UAAvB,CAAkC,IAAlC,CAAuC,IAAvC,CAAf;AAEA,MAAA,MAAM,CAAC,KAAP,CAAa,KAAb,IAAsB,sBAAtB;AAEA,aAAO,MAAP;AACD,KAZM;;AAaP,IAAA,aAAa,CAAE,GAAF,EAAc,MAAd,EAA2B;AACtC;AACA,UAAI,KAAK,SAAT,EAAoB;AAEpB,YAAM,KAAK,GAAG,KAAK,KAAnB;AACA,YAAM,OAAO,GAAG,GAAG,CAAC,IAApB;AACA,YAAM,OAAO,GAAG,MAAM,CAAC,IAAvB;AAEA,UAAI,MAAM,GAAG,KAAb;AACA,UAAI,MAAM,GAAG,KAAb;;AAEA,WAAK,MAAM,IAAX,IAAmB,KAAnB,EAA0B;AACxB,YAAI,IAAI,CAAC,EAAL,KAAY,OAAhB,EAAyB,MAAM,GAAG,IAAT,CAAzB,KACK,IAAI,IAAI,CAAC,EAAL,KAAY,OAAhB,EAAyB,MAAM,GAAG,IAAT;AAE9B,YAAI,MAAM,IAAI,MAAd,EAAsB;AACvB,OAhBqC,CAkBtC;AACA;AACA;;;AACA,UAAI,CAAC,MAAD,IAAW,MAAf,EAAuB,KAAK,aAAL,GAAqB,SAArB;AACxB;;AAnCM,GA5BF;;AAkEP,EAAA,MAAM,GAAA;AACJ,UAAM,MAAM,GAAG,cAAc,CAAC,MAAf,CAAsB,IAAtB,CAA2B,IAA3B,EAAiC,CAAjC,CAAf;AAEA,IAAA,MAAM,CAAC,IAAP,GAAc,SAAd;AAEA,WAAO,MAAP;AACD;;AAxEM,CALM,CAAf","sourcesContent":["import {h} from 'vue'\n// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType<typeof VTab>\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.methods.genContent.call(this)\n\n render.props.class += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (): VNode {\n const render = BaseSlideGroup.render.call(this, h)\n\n render.role = 'tablist'\n\n return render\n },\n})\n"],"sourceRoot":"","file":"VTabsBar.js"}
1
+ {"version":3,"sources":["../../../src/components/VTabs/VTabsBar.ts"],"names":[],"mappings":"AAAA,SAAS,CAAT,QAAyB,KAAzB,C,CACA;;AACA,SAAS,cAAT,QAA+B,4BAA/B,C,CAKA;;AACA,OAAO,SAAP,MAAsB,wBAAtB;AACA,OAAO,WAAP,MAAwB,2BAAxB,C,CAEA;;AACA,OAAO,MAAP,MAAmB,mBAAnB;AAOA,eAAe,MAAM,CACnB,cADmB,EAEnB,WAFmB,EAGnB;AACA;AAJmB,CAAN,CAKb,MALa,CAKN;AACP,EAAA,IAAI,EAAE,YADC;;AAGP,EAAA,OAAO,GAAA;AACL,WAAO;AACL,MAAA,OAAO,EAAE;AADJ,KAAP;AAGD,GAPM;;AASP,EAAA,QAAQ,EAAE;AACR,IAAA,OAAO,GAAA;AACL,aAAO,EACL,GAAG,cAAc,CAAC,QAAf,CAAwB,OAAxB,CAAgC,IAAhC,CAAqC,IAArC,CADE;AAEL,sBAAc,IAFT;AAGL,iCAAyB,KAAK,QAHzB;AAIL;AACA,mCAA2B,KAAK,UAL3B;AAML,WAAG,KAAK;AANH,OAAP;AAQD;;AAVO,GATH;AAsBP,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE,YADF;AAEL,IAAA,aAAa,EAAE,YAFV;AAGL,IAAA,MAAM,EAAE;AAHH,GAtBA;AA4BP,EAAA,OAAO,EAAE;AACP,IAAA,UAAU,GAAA;AACR,UAAI,CAAC,KAAK,QAAV,EAAoB;AAEpB,WAAK,KAAL,CAAW,aAAX;AACD,KALM;;AAMP,IAAA,UAAU,GAAA;AACR,YAAM,MAAM,GAAG,cAAc,CAAC,OAAf,CAAuB,UAAvB,CAAkC,IAAlC,CAAuC,IAAvC,CAAf;AAEA,MAAA,MAAM,CAAC,KAAP,CAAa,KAAb,IAAsB,sBAAtB;AAEA,aAAO,MAAP;AACD,KAZM;;AAaP,IAAA,aAAa,CACX,GADW,EAEX,MAFW,EAEoB;AAE/B;AACA,UAAI,KAAK,SAAT,EAAoB;AAEpB,YAAM,KAAK,GAAI,KAAK,KAApB;AACA,YAAM,OAAO,GAAG,GAAG,CAAC,IAApB;AACA,YAAM,OAAO,GAAG,MAAM,CAAC,IAAvB;AAEA,UAAI,MAAM,GAAG,KAAb;AACA,UAAI,MAAM,GAAG,KAAb;;AAEA,WAAK,MAAM,IAAX,IAAmB,KAAnB,EAA0B;AACxB,YAAI,IAAI,CAAC,EAAL,KAAY,OAAhB,EAAyB,MAAM,GAAG,IAAT,CAAzB,KACK,IAAI,IAAI,CAAC,EAAL,KAAY,OAAhB,EAAyB,MAAM,GAAG,IAAT;AAE9B,YAAI,MAAM,IAAI,MAAd,EAAsB;AACvB,OAjB8B,CAmB/B;AACA;AACA;;;AACA,UAAI,CAAC,MAAD,IAAW,MAAf,EAAuB,KAAK,aAAL,GAAqB,SAArB;AACxB;;AAtCM,GA5BF;;AAqEP,EAAA,MAAM,GAAA;AACJ,UAAM,MAAM,GAAG,cAAc,CAAC,MAAf,CAAsB,IAAtB,CAA2B,IAA3B,EAAiC,CAAjC,CAAf;AAEA,IAAA,MAAM,CAAC,IAAP,GAAc,SAAd;AAEA,WAAO,MAAP;AACD;;AA3EM,CALM,CAAf","sourcesContent":["import { h, VNode } from 'vue'\n// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { RouteLocationNormalized } from 'vue-router'\n\ntype VTabInstance = InstanceType<typeof VTab>\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.methods.genContent.call(this)\n\n render.props.class += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (\n val: RouteLocationNormalized,\n oldVal: RouteLocationNormalized\n ) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = (this.items as unknown) as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (): VNode {\n const render = BaseSlideGroup.render.call(this, h)\n\n render.role = 'tablist'\n\n return render\n },\n})\n"],"sourceRoot":"","file":"VTabsBar.js"}
@@ -1,4 +1,4 @@
1
- import { h } from 'vue'; // Styles
1
+ import { h, withDirectives } from 'vue'; // Styles
2
2
 
3
3
  import "../../../src/components/VVirtualScroll/VVirtualScroll.sass"; // Mixins
4
4
 
@@ -105,18 +105,15 @@ export default defineComponent({
105
105
  height: convertToUnit(this.items.length * this.__itemHeight)
106
106
  }
107
107
  }, this.getChildren());
108
- return h('div', {
108
+ return withDirectives(h('div', {
109
109
  class: 'v-virtual-scroll',
110
110
  style: this.measurableStyles,
111
- directives: [{
112
- name: 'scroll',
113
- modifiers: {
114
- self: true
115
- },
116
- value: this.onScroll
117
- }],
118
- on: this.$listeners
119
- }, [content]);
111
+ ...this.$listeners
112
+ }, {
113
+ default: () => [content]
114
+ }), [[Scroll, this.onScroll, '', {
115
+ self: true
116
+ }]]);
120
117
  }
121
118
 
122
119
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VVirtualScroll/VVirtualScroll.ts"],"names":[],"mappings":"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","sourcesContent":["import {h} from 'vue'\n// Styles\nimport './VVirtualScroll.sass'\n\n// Mixins\nimport Measurable from '../../mixins/measurable'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, defineComponent } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport default defineComponent({\n name: 'v-virtual-scroll',\n\n directives: { Scroll },\n\n extends: Measurable,\n\n props: {\n bench: {\n type: [Number, String],\n default: 0,\n },\n itemHeight: {\n type: [Number, String],\n required: true,\n },\n items: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n },\n\n data: () => ({\n first: 0,\n last: 0,\n scrollTop: 0,\n }),\n\n computed: {\n __bench (): number {\n return parseInt(this.bench, 10)\n },\n __itemHeight (): number {\n return parseInt(this.itemHeight, 10)\n },\n firstToRender (): number {\n return Math.max(0, this.first - this.__bench)\n },\n lastToRender (): number {\n return Math.min(this.items.length, this.last + this.__bench)\n },\n },\n\n watch: {\n height: 'onScroll',\n itemHeight: 'onScroll',\n },\n\n mounted () {\n this.last = this.getLast(0)\n },\n\n methods: {\n getChildren (): VNode[] {\n return this.items.slice(\n this.firstToRender,\n this.lastToRender,\n ).map(this.genChild)\n },\n genChild (item: any, index: number) {\n index += this.firstToRender\n\n const top = convertToUnit(index * this.__itemHeight)\n\n return h('div', {\n class: 'v-virtual-scroll__item',\n style: { top },\n key: index,\n }, getSlot(this, 'default', { index, item }))\n },\n getFirst (): number {\n return Math.floor(this.scrollTop / this.__itemHeight)\n },\n getLast (first: number): number {\n const height = parseInt(this.height || 0, 10) || this.$el.clientHeight\n\n return first + Math.ceil(height / this.__itemHeight)\n },\n onScroll () {\n this.scrollTop = this.$el.scrollTop\n this.first = this.getFirst()\n this.last = this.getLast(this.first)\n },\n },\n\n render (): VNode {\n const content = h('div', {\n class: 'v-virtual-scroll__container',\n style: {\n height: convertToUnit((this.items.length * this.__itemHeight)),\n },\n }, this.getChildren())\n\n return h('div', {\n class: 'v-virtual-scroll',\n style: this.measurableStyles,\n directives: [{\n name: 'scroll',\n modifiers: { self: true },\n value: this.onScroll,\n }],\n on: this.$listeners,\n }, [content])\n },\n})\n"],"sourceRoot":"","file":"VVirtualScroll.js"}
1
+ {"version":3,"sources":["../../../src/components/VVirtualScroll/VVirtualScroll.ts"],"names":[],"mappings":"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","sourcesContent":["import {h, withDirectives} from 'vue'\n// Styles\nimport './VVirtualScroll.sass'\n\n// Mixins\nimport Measurable from '../../mixins/measurable'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'v-virtual-scroll',\n\n directives: { Scroll },\n\n extends: Measurable,\n\n props: {\n bench: {\n type: [Number, String],\n default: 0,\n },\n itemHeight: {\n type: [Number, String],\n required: true,\n },\n items: {\n type: Array,\n default: () => [],\n },\n },\n\n data: () => ({\n first: 0,\n last: 0,\n scrollTop: 0,\n }),\n\n computed: {\n __bench (): number {\n return parseInt(this.bench, 10)\n },\n __itemHeight (): number {\n return parseInt(this.itemHeight, 10)\n },\n firstToRender (): number {\n return Math.max(0, this.first - this.__bench)\n },\n lastToRender (): number {\n return Math.min(this.items.length, this.last + this.__bench)\n },\n },\n\n watch: {\n height: 'onScroll',\n itemHeight: 'onScroll',\n },\n\n mounted () {\n this.last = this.getLast(0)\n },\n\n methods: {\n getChildren (): VNode[] {\n return this.items.slice(\n this.firstToRender,\n this.lastToRender,\n ).map(this.genChild)\n },\n genChild (item: any, index: number) {\n index += this.firstToRender\n\n const top = convertToUnit(index * this.__itemHeight)\n\n return h('div', {\n class: 'v-virtual-scroll__item',\n style: { top },\n key: index,\n }, getSlot(this, 'default', { index, item }))\n },\n getFirst (): number {\n return Math.floor(this.scrollTop / this.__itemHeight)\n },\n getLast (first: number): number {\n const height = parseInt(this.height || 0, 10) || this.$el.clientHeight\n\n return first + Math.ceil(height / this.__itemHeight)\n },\n onScroll () {\n this.scrollTop = this.$el.scrollTop\n this.first = this.getFirst()\n this.last = this.getLast(this.first)\n },\n },\n\n render (): VNode {\n const content = h('div', {\n class: 'v-virtual-scroll__container',\n style: {\n height: convertToUnit((this.items.length * this.__itemHeight)),\n },\n }, this.getChildren())\n\n return withDirectives(\n h('div', {\n class: 'v-virtual-scroll',\n style: this.measurableStyles,\n ...(this as any).$listeners,\n }, {\n default: () => [content]\n }),\n [\n [Scroll, this.onScroll, '', { self: true }]\n ]\n )\n },\n})\n"],"sourceRoot":"","file":"VVirtualScroll.js"}
@@ -155,9 +155,13 @@ export default defineComponent({
155
155
  })) !== null && _c !== void 0 ? _c : [h(VBtn, {
156
156
  icon: true,
157
157
  ...attrs
158
- }, [h(VIcon, {
159
- large: true
160
- }, icon)])];
158
+ }, {
159
+ default: () => [h(VIcon, {
160
+ large: true
161
+ }, {
162
+ default: () => icon
163
+ })]
164
+ })];
161
165
  return h('div', {
162
166
  class: `v-window__${direction}`
163
167
  }, children);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VWindow/VWindow.ts"],"names":[],"mappings":"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","sourcesContent":["import {h, withDirectives} from 'vue'\n// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType, defineComponent } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default defineComponent({\n name: 'v-window',\n extends: BaseItemGroup,\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType<TouchHandlers>,\n touchless: Boolean,\n modelValue: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return getSlot(this)\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return h('div', {\n class: ['v-window__container', {\n 'v-window__container--is-active': this.isActive,\n }],\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n onClick: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n }\n }\n const children = this.$slots[direction]?.({\n attrs,\n }) ?? [h(VBtn, {\n icon: true,\n ...attrs,\n }, [\n h(VIcon, {\n large: true,\n }, icon),\n ])]\n\n return h('div', {\n class: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (): VNode {\n const directives = []\n\n const data = {\n class: ['v-window', this.classes]\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n directives.push([\n Touch,\n value\n ])\n }\n\n return withDirectives(h('div', data, [this.genContainer()]), directives)\n },\n})\n"],"sourceRoot":"","file":"VWindow.js"}
1
+ {"version":3,"sources":["../../../src/components/VWindow/VWindow.ts"],"names":[],"mappings":"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","sourcesContent":["import {h, withDirectives} from 'vue'\n// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType, defineComponent } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default defineComponent({\n name: 'v-window',\n extends: BaseItemGroup,\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType<TouchHandlers>,\n touchless: Boolean,\n modelValue: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return getSlot(this)\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return h('div', {\n class: ['v-window__container', {\n 'v-window__container--is-active': this.isActive,\n }],\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n onClick: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n }\n }\n const children = this.$slots[direction]?.({\n attrs,\n }) ?? [h(VBtn, {\n icon: true,\n ...attrs,\n }, {\n default: () => [\n h(VIcon, {\n large: true,\n }, {\n default: () => icon\n }),\n ]\n })]\n\n return h('div', {\n class: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (): VNode {\n const directives = []\n\n const data = {\n class: ['v-window', this.classes]\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n directives.push([\n Touch,\n value\n ])\n }\n\n return withDirectives(h('div', data, [this.genContainer()]), directives)\n },\n})\n"],"sourceRoot":"","file":"VWindow.js"}
@@ -131,7 +131,9 @@ export default baseMixins.extend({
131
131
  onLeaveCancelled: this.onTransitionCancelled,
132
132
  // Enter handler for height transition.
133
133
  onEnter: this.onEnter
134
- }, this.showLazyContent(() => [this.genWindowItem()]));
134
+ }, {
135
+ default: () => this.showLazyContent(() => [this.genWindowItem()])
136
+ });
135
137
  }
136
138
 
137
139
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VWindow/VWindowItem.ts"],"names":[],"mappings":"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","sourcesContent":["import {h, vShow, withDirectives} from 'vue'\n// Components\nimport VWindow from './VWindow'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport { VNode, Transition } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n GroupableFactory('windowGroup', 'v-window-item', 'v-window')\n)\n\ninterface options extends ExtractVue<typeof baseMixins> {\n $el: HTMLElement\n windowGroup: InstanceType<typeof VWindow>\n}\n\nexport default baseMixins.extend({\n name: 'v-window-item',\n\n directives: {\n Touch,\n },\n\n props: {\n disabled: Boolean,\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n value: {\n required: false,\n },\n },\n\n data () {\n return {\n isActive: false,\n inTransition: false,\n }\n },\n\n computed: {\n classes (): object {\n return this.groupClasses\n },\n computedTransition (): string | boolean {\n if (!this.windowGroup.internalReverse) {\n return typeof this.transition !== 'undefined'\n ? this.transition || ''\n : this.windowGroup.computedTransition\n }\n\n return typeof this.reverseTransition !== 'undefined'\n ? this.reverseTransition || ''\n : this.windowGroup.computedTransition\n },\n },\n\n methods: {\n genDefaultSlot () {\n return getSlot(this)\n },\n genWindowItem () {\n return withDirectives(h('div', {\n class: ['v-window-item', this.classes],\n ...this.$listeners,\n }, this.genDefaultSlot()), [\n [\n vShow,\n this.isActive\n ]\n ])\n },\n onAfterTransition () {\n if (!this.inTransition) {\n return\n }\n\n // Finalize transition state.\n this.inTransition = false\n if (this.windowGroup.transitionCount > 0) {\n this.windowGroup.transitionCount--\n\n // Remove container height if we are out of transition.\n if (this.windowGroup.transitionCount === 0) {\n this.windowGroup.transitionHeight = undefined\n }\n }\n },\n onBeforeTransition () {\n if (this.inTransition) {\n return\n }\n\n // Initialize transition state here.\n this.inTransition = true\n if (this.windowGroup.transitionCount === 0) {\n // Set initial height for height transition.\n this.windowGroup.transitionHeight = convertToUnit(this.windowGroup.$el.clientHeight)\n }\n this.windowGroup.transitionCount++\n },\n onTransitionCancelled () {\n this.onAfterTransition() // This should have the same path as normal transition end.\n },\n onEnter (el: HTMLElement) {\n if (!this.inTransition) {\n return\n }\n\n this.$nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!this.computedTransition || !this.inTransition) {\n return\n }\n\n // Set transition target height.\n this.windowGroup.transitionHeight = convertToUnit(el.clientHeight)\n })\n },\n },\n\n render (): VNode {\n return h(Transition, {\n name: this.computedTransition,\n // Handlers for enter windows.\n onBeforeEnter: this.onBeforeTransition,\n onAfterEnter: this.onAfterTransition,\n onEnterCancelled: this.onTransitionCancelled,\n\n // Handlers for leave windows.\n onBeforeLeave: this.onBeforeTransition,\n onAfterLeave: this.onAfterTransition,\n onLeaveCancelled: this.onTransitionCancelled,\n\n // Enter handler for height transition.\n onEnter: this.onEnter,\n }, this.showLazyContent(() => [this.genWindowItem()]))\n },\n})\n"],"sourceRoot":"","file":"VWindowItem.js"}
1
+ {"version":3,"sources":["../../../src/components/VWindow/VWindowItem.ts"],"names":[],"mappings":"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","sourcesContent":["import {h, vShow, withDirectives} from 'vue'\n// Components\nimport VWindow from './VWindow'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport { VNode, Transition } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n GroupableFactory('windowGroup', 'v-window-item', 'v-window')\n)\n\ninterface options extends ExtractVue<typeof baseMixins> {\n $el: HTMLElement\n windowGroup: InstanceType<typeof VWindow>\n}\n\nexport default baseMixins.extend({\n name: 'v-window-item',\n\n directives: {\n Touch,\n },\n\n props: {\n disabled: Boolean,\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n value: {\n required: false,\n },\n },\n\n data () {\n return {\n isActive: false,\n inTransition: false,\n }\n },\n\n computed: {\n classes (): object {\n return this.groupClasses\n },\n computedTransition (): string | boolean {\n if (!this.windowGroup.internalReverse) {\n return typeof this.transition !== 'undefined'\n ? this.transition || ''\n : this.windowGroup.computedTransition\n }\n\n return typeof this.reverseTransition !== 'undefined'\n ? this.reverseTransition || ''\n : this.windowGroup.computedTransition\n },\n },\n\n methods: {\n genDefaultSlot () {\n return getSlot(this)\n },\n genWindowItem () {\n return withDirectives(h('div', {\n class: ['v-window-item', this.classes],\n ...this.$listeners,\n }, this.genDefaultSlot()), [\n [\n vShow,\n this.isActive\n ]\n ])\n },\n onAfterTransition () {\n if (!this.inTransition) {\n return\n }\n\n // Finalize transition state.\n this.inTransition = false\n if (this.windowGroup.transitionCount > 0) {\n this.windowGroup.transitionCount--\n\n // Remove container height if we are out of transition.\n if (this.windowGroup.transitionCount === 0) {\n this.windowGroup.transitionHeight = undefined\n }\n }\n },\n onBeforeTransition () {\n if (this.inTransition) {\n return\n }\n\n // Initialize transition state here.\n this.inTransition = true\n if (this.windowGroup.transitionCount === 0) {\n // Set initial height for height transition.\n this.windowGroup.transitionHeight = convertToUnit(this.windowGroup.$el.clientHeight)\n }\n this.windowGroup.transitionCount++\n },\n onTransitionCancelled () {\n this.onAfterTransition() // This should have the same path as normal transition end.\n },\n onEnter (el: HTMLElement) {\n if (!this.inTransition) {\n return\n }\n\n this.$nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!this.computedTransition || !this.inTransition) {\n return\n }\n\n // Set transition target height.\n this.windowGroup.transitionHeight = convertToUnit(el.clientHeight)\n })\n },\n },\n\n render (): VNode {\n return h(Transition, {\n name: this.computedTransition,\n // Handlers for enter windows.\n onBeforeEnter: this.onBeforeTransition,\n onAfterEnter: this.onAfterTransition,\n onEnterCancelled: this.onTransitionCancelled,\n\n // Handlers for leave windows.\n onBeforeLeave: this.onBeforeTransition,\n onAfterLeave: this.onAfterTransition,\n onLeaveCancelled: this.onTransitionCancelled,\n\n // Enter handler for height transition.\n onEnter: this.onEnter,\n }, {\n default: () => this.showLazyContent(() => [this.genWindowItem()])\n })\n },\n})\n"],"sourceRoot":"","file":"VWindowItem.js"}
package/lib/framework.js CHANGED
@@ -46,7 +46,7 @@ export default class Vuetify {
46
46
  }
47
47
  Vuetify.install = install;
48
48
  Vuetify.installed = false;
49
- Vuetify.version = "2.7.2-alpha20";
49
+ Vuetify.version = "2.7.2-alpha22";
50
50
  Vuetify.config = {
51
51
  silent: false
52
52
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/overlayable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport {defineComponent, App, createApp, h} from 'vue'\n\ninterface Toggleable extends App {\n isActive?: boolean\n}\n\ninterface Stackable extends App {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default defineComponent({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeUnmount () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n // Create a container element\n const container = document.createElement('div');\n\n const props = {\n absolute: this.absolute,\n color: this.overlayColor,\n opacity: this.overlayOpacity\n }\n const wrapper = {\n data() {\n return { value: false, zIndex: undefined }\n },\n render() {\n return h(VOverlay, {\n modelValue: this.value,\n zIndex: this.zIndex,\n ...props\n })\n }\n }\n // // Create the overlay app\n // const overlayApp = createApp(VOverlay, {\n // absolute: this.absolute,\n // value: false,\n // color: this.overlayColor,\n // opacity: this.overlayOpacity,\n // });\n\n const overlayApp = createApp(wrapper)\n\n // Mount the app to the container\n const overlayInstance = overlayApp.mount(container);\n\n // Determine the parent element\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]');\n\n if (parent) {\n parent.insertBefore(container, parent.firstChild);\n }\n\n this.overlay = overlayInstance;\n this.overlayApp = overlayApp\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlayApp.unmount()\n this.overlayApp = null\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent | KeyboardEvent) {\n if ('key' in e) {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e as WheelEvent)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd) && el.parentNode) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/overlayable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport { defineComponent, App, createApp, h } from 'vue'\n\ninterface Toggleable extends App {\n isActive?: boolean\n}\n\ninterface Stackable extends App {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default defineComponent({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeUnmount () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n // Create a container element\n const container = document.createElement('div');\n\n const props = {\n absolute: this.absolute,\n color: this.overlayColor,\n opacity: this.overlayOpacity\n }\n const wrapper = {\n data() {\n return { value: false, zIndex: undefined }\n },\n render() {\n return h(VOverlay, {\n modelValue: this.value,\n zIndex: this.zIndex,\n ...props\n })\n }\n }\n // // Create the overlay app\n // const overlayApp = createApp(VOverlay, {\n // absolute: this.absolute,\n // value: false,\n // color: this.overlayColor,\n // opacity: this.overlayOpacity,\n // });\n\n const overlayApp = createApp(wrapper)\n\n // Mount the app to the container\n const overlayInstance = overlayApp.mount(container);\n\n // Determine the parent element\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]');\n\n if (parent) {\n parent.insertBefore(container, parent.firstChild);\n }\n\n this.overlay = overlayInstance;\n this.overlayApp = overlayApp\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlayApp.unmount()\n this.overlayApp = null\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent | KeyboardEvent) {\n if ('key' in e) {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e as WheelEvent)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd) && el.parentNode) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
@@ -5,12 +5,13 @@ import { inject as RegistrableInject } from '../registrable'; // Utilities
5
5
 
6
6
  import { deepEqual } from '../../util/helpers';
7
7
  import { consoleError } from '../../util/console';
8
- import mixins from '../../util/mixins';
9
- const baseMixins = mixins(Colorable, RegistrableInject('form'), Themeable);
8
+ import { defineComponent } from 'vue';
10
9
  /* @vue/component */
11
10
 
12
- export default baseMixins.extend({
11
+ export default defineComponent({
13
12
  name: 'validatable',
13
+ extends: RegistrableInject('form'),
14
+ mixins: [Colorable, Themeable],
14
15
  props: {
15
16
  disabled: {
16
17
  type: Boolean,
@@ -49,6 +50,8 @@ export default baseMixins.extend({
49
50
  },
50
51
 
51
52
  data() {
53
+ var _a;
54
+
52
55
  return {
53
56
  errorBucket: [],
54
57
  hasColor: false,
@@ -56,7 +59,7 @@ export default baseMixins.extend({
56
59
  hasInput: false,
57
60
  isFocused: false,
58
61
  isResetting: false,
59
- lazyValue: this.value,
62
+ lazyValue: (_a = this.modelValue) !== null && _a !== void 0 ? _a : null,
60
63
  valid: false
61
64
  };
62
65
  },
@@ -116,6 +119,7 @@ export default baseMixins.extend({
116
119
  set(val) {
117
120
  this.lazyValue = val;
118
121
  this.$emit('input', val);
122
+ this.$emit('update:modelValue', val);
119
123
  }
120
124
 
121
125
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/validatable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n readonly: {\n type: Boolean,\n default: null,\n },\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator<InputValidationRules>,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n validateOnBlur: Boolean,\n modelValue: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n modelValue (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeUnmount () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/validatable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { defineComponent, PropType } from 'vue'\n\n// Types\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\n/* @vue/component */\nexport default defineComponent({\n name: 'validatable',\n\n extends: RegistrableInject<'form', any>('form'),\n\n mixins: [Colorable, Themeable],\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n messages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n readonly: {\n type: Boolean,\n default: null,\n },\n rules: {\n type: Array as PropType<InputValidationRules>,\n default: () => [],\n },\n success: Boolean,\n successMessages: {\n type: [String, Array] as PropType<InputMessage | null>,\n default: () => [],\n },\n validateOnBlur: Boolean,\n modelValue: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.modelValue ?? null,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n this.$emit('update:modelValue', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n modelValue (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeUnmount () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}