@revolugo/elements 4.13.18-beta.4 → 4.13.18-beta.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. package/dist/css/revolugo.29.min.css +1 -1
  2. package/dist/css/revolugo.30.min.css +1 -1
  3. package/dist/css/revolugo.32.min.css +1 -1
  4. package/dist/css/revolugo.33.min.css +1 -1
  5. package/dist/css/revolugo.34.min.css +1 -1
  6. package/dist/css/revolugo.35.min.css +1 -0
  7. package/dist/index.min.js +1 -1
  8. package/dist/revolugo.1.js +0 -11
  9. package/dist/revolugo.1.min.js +1 -1
  10. package/dist/revolugo.10.js +13 -0
  11. package/dist/revolugo.10.min.js +2 -2
  12. package/dist/revolugo.11.js +13 -0
  13. package/dist/revolugo.11.min.js +2 -2
  14. package/dist/revolugo.12.js +13 -0
  15. package/dist/revolugo.12.min.js +2 -2
  16. package/dist/revolugo.13.js +13 -0
  17. package/dist/revolugo.13.min.js +2 -2
  18. package/dist/revolugo.14.js +13 -0
  19. package/dist/revolugo.14.min.js +2 -2
  20. package/dist/revolugo.15.js +13 -0
  21. package/dist/revolugo.15.min.js +2 -2
  22. package/dist/revolugo.16.js +13 -0
  23. package/dist/revolugo.16.min.js +2 -2
  24. package/dist/revolugo.17.js +13 -0
  25. package/dist/revolugo.17.min.js +1 -1
  26. package/dist/revolugo.18.js +2 -0
  27. package/dist/revolugo.18.min.js +1 -1
  28. package/dist/revolugo.19.js +2 -0
  29. package/dist/revolugo.19.min.js +1 -1
  30. package/dist/revolugo.20.js +2 -0
  31. package/dist/revolugo.20.min.js +2 -2
  32. package/dist/revolugo.21.js +13 -0
  33. package/dist/revolugo.21.min.js +2 -2
  34. package/dist/revolugo.22.js +2 -0
  35. package/dist/revolugo.22.min.js +1 -1
  36. package/dist/revolugo.23.js +2 -0
  37. package/dist/revolugo.23.min.js +1 -1
  38. package/dist/revolugo.24.js +2 -0
  39. package/dist/revolugo.24.min.js +1 -1
  40. package/dist/revolugo.25.js +11 -0
  41. package/dist/revolugo.25.min.js +1 -1
  42. package/dist/revolugo.26.js +2 -0
  43. package/dist/revolugo.26.min.js +1 -1
  44. package/dist/revolugo.29.js +1460 -997
  45. package/dist/revolugo.29.min.js +1 -1
  46. package/dist/revolugo.30.js +1141 -35810
  47. package/dist/revolugo.30.min.js +1 -1
  48. package/dist/revolugo.31.js +1359 -2190
  49. package/dist/revolugo.31.min.js +1 -1
  50. package/dist/revolugo.32.js +36689 -1836
  51. package/dist/revolugo.32.min.js +1 -1
  52. package/dist/revolugo.33.js +1724 -1437
  53. package/dist/revolugo.33.min.js +1 -1
  54. package/dist/revolugo.34.js +1576 -6567
  55. package/dist/revolugo.34.min.js +1 -1
  56. package/dist/revolugo.35.js +5198 -909
  57. package/dist/revolugo.35.min.js +1 -1
  58. package/dist/revolugo.36.js +680 -1607
  59. package/dist/revolugo.36.min.js +1 -1
  60. package/dist/revolugo.37.js +2986 -250
  61. package/dist/revolugo.37.min.js +1 -1
  62. package/dist/revolugo.38.js +1819 -0
  63. package/dist/revolugo.38.min.js +1 -0
  64. package/dist/revolugo.39.js +579 -0
  65. package/dist/revolugo.39.min.js +1 -0
  66. package/dist/revolugo.4.js +11 -0
  67. package/dist/revolugo.4.min.js +1 -1
  68. package/dist/revolugo.5.js +2 -0
  69. package/dist/revolugo.5.min.js +1 -1
  70. package/dist/revolugo.9.js +13 -0
  71. package/dist/revolugo.9.min.js +2 -2
  72. package/dist/revolugo.en-US.js +7 -0
  73. package/dist/revolugo.en-US.min.js +1 -1
  74. package/dist/revolugo.fr-FR.js +7 -0
  75. package/dist/revolugo.fr-FR.min.js +1 -1
  76. package/dist/revolugo.js +10 -8
  77. package/dist/revolugo.min.js +1 -1
  78. package/package.json +1 -1
  79. /package/dist/css/{revolugo.36.min.css → revolugo.37.min.css} +0 -0
@@ -1,1685 +1,1972 @@
1
1
  (window["revolugo_jsonp"] = window["revolugo_jsonp"] || []).push([[33],{
2
2
 
3
- /***/ "3473":
3
+ /***/ "0ce2":
4
4
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5
5
 
6
6
  "use strict";
7
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return factory; });
8
7
  /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad27");
9
- /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3d78");
10
-
11
-
12
- const availableProps = {
13
- absolute: Boolean,
14
- bottom: Boolean,
15
- fixed: Boolean,
16
- left: Boolean,
17
- right: Boolean,
18
- top: Boolean
19
- };
20
- function factory(selected = []) {
21
- return vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
22
- name: 'positionable',
23
- props: selected.length ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[/* filterObjectOnKeys */ "k"])(availableProps, selected) : availableProps
24
- });
25
- }
26
- /* harmony default export */ __webpack_exports__["a"] = (factory()); // Add a `*` before the second `/`
27
-
28
- /* Tests /
29
- let single = factory(['top']).extend({
30
- created () {
31
- this.top
32
- this.bottom
33
- this.absolute
34
- }
35
- })
36
-
37
- let some = factory(['top', 'bottom']).extend({
38
- created () {
39
- this.top
40
- this.bottom
41
- this.absolute
42
- }
43
- })
44
-
45
- let all = factory().extend({
46
- created () {
47
- this.top
48
- this.bottom
49
- this.absolute
50
- this.foobar
51
- }
52
- })
53
- /**/
54
-
55
- /***/ }),
56
-
57
- /***/ "3f84":
58
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
59
-
60
- "use strict";
61
- /* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("64ad");
62
- // Mixins
63
8
 
64
- /* @vue/component */
9
+ /**
10
+ * Delayable
11
+ *
12
+ * @mixin
13
+ *
14
+ * Changes the open or close delay time for elements
15
+ */
65
16
 
66
- /* harmony default export */ __webpack_exports__["a"] = (_mixins_themeable__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
67
- name: 'v-theme-provider',
17
+ /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend().extend({
18
+ name: 'delayable',
68
19
  props: {
69
- root: Boolean
70
- },
71
- computed: {
72
- isDark() {
73
- return this.root ? this.rootIsDark : _mixins_themeable__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].options.computed.isDark.call(this);
20
+ openDelay: {
21
+ type: [Number, String],
22
+ default: 0
23
+ },
24
+ closeDelay: {
25
+ type: [Number, String],
26
+ default: 0
74
27
  }
75
28
  },
76
- render() {
77
- /* istanbul ignore next */
78
- return this.$slots.default && this.$slots.default.find(node => !node.isComment && node.text !== ' ');
79
- }
80
- }));
81
-
82
- /***/ }),
83
-
84
- /***/ "4368":
85
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
86
-
87
- "use strict";
88
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad27");
89
-
90
- /* @vue/component */
91
-
92
- /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
93
- name: 'returnable',
94
- props: {
95
- returnValue: null
96
- },
97
29
  data: () => ({
98
- isActive: false,
99
- originalValue: null
30
+ openTimeout: undefined,
31
+ closeTimeout: undefined
100
32
  }),
101
- watch: {
102
- isActive(val) {
103
- if (val) {
104
- this.originalValue = this.returnValue;
105
- } else {
106
- this.$emit('update:return-value', this.originalValue);
107
- }
108
- }
109
- },
110
33
  methods: {
111
- save(value) {
112
- this.originalValue = value;
113
- setTimeout(() => {
114
- this.isActive = false;
115
- });
34
+ /**
35
+ * Clear any pending delay timers from executing
36
+ */
37
+ clearDelay() {
38
+ clearTimeout(this.openTimeout);
39
+ clearTimeout(this.closeTimeout);
40
+ },
41
+ /**
42
+ * Runs callback after a specified delay
43
+ */
44
+ runDelay(type, cb) {
45
+ this.clearDelay();
46
+ const delay = parseInt(this[`${type}Delay`], 10);
47
+ this[`${type}Timeout`] = setTimeout(cb || (() => {
48
+ this.isActive = {
49
+ open: true,
50
+ close: false
51
+ }[type];
52
+ }), delay);
116
53
  }
117
54
  }
118
55
  }));
119
56
 
120
57
  /***/ }),
121
58
 
122
- /***/ "536f":
59
+ /***/ "17d8":
123
60
  /***/ (function(module, exports, __webpack_require__) {
124
61
 
125
- // extracted by mini-css-extract-plugin
62
+ "use strict";
126
63
 
127
- /***/ }),
128
64
 
129
- /***/ "5ae4":
130
- /***/ (function(module, exports, __webpack_require__) {
65
+ class QuickLRU {
66
+ constructor(options = {}) {
67
+ if (!(options.maxSize && options.maxSize > 0)) {
68
+ throw new TypeError('`maxSize` must be a number greater than 0');
69
+ }
70
+
71
+ this.maxSize = options.maxSize;
72
+ this.onEviction = options.onEviction;
73
+ this.cache = new Map();
74
+ this.oldCache = new Map();
75
+ this._size = 0;
76
+ }
77
+
78
+ _set(key, value) {
79
+ this.cache.set(key, value);
80
+ this._size++;
81
+
82
+ if (this._size >= this.maxSize) {
83
+ this._size = 0;
84
+
85
+ if (typeof this.onEviction === 'function') {
86
+ for (const [key, value] of this.oldCache.entries()) {
87
+ this.onEviction(key, value);
88
+ }
89
+ }
90
+
91
+ this.oldCache = this.cache;
92
+ this.cache = new Map();
93
+ }
94
+ }
95
+
96
+ get(key) {
97
+ if (this.cache.has(key)) {
98
+ return this.cache.get(key);
99
+ }
100
+
101
+ if (this.oldCache.has(key)) {
102
+ const value = this.oldCache.get(key);
103
+ this.oldCache.delete(key);
104
+ this._set(key, value);
105
+ return value;
106
+ }
107
+ }
108
+
109
+ set(key, value) {
110
+ if (this.cache.has(key)) {
111
+ this.cache.set(key, value);
112
+ } else {
113
+ this._set(key, value);
114
+ }
115
+
116
+ return this;
117
+ }
118
+
119
+ has(key) {
120
+ return this.cache.has(key) || this.oldCache.has(key);
121
+ }
122
+
123
+ peek(key) {
124
+ if (this.cache.has(key)) {
125
+ return this.cache.get(key);
126
+ }
127
+
128
+ if (this.oldCache.has(key)) {
129
+ return this.oldCache.get(key);
130
+ }
131
+ }
132
+
133
+ delete(key) {
134
+ const deleted = this.cache.delete(key);
135
+ if (deleted) {
136
+ this._size--;
137
+ }
138
+
139
+ return this.oldCache.delete(key) || deleted;
140
+ }
141
+
142
+ clear() {
143
+ this.cache.clear();
144
+ this.oldCache.clear();
145
+ this._size = 0;
146
+ }
147
+
148
+ * keys() {
149
+ for (const [key] of this) {
150
+ yield key;
151
+ }
152
+ }
153
+
154
+ * values() {
155
+ for (const [, value] of this) {
156
+ yield value;
157
+ }
158
+ }
159
+
160
+ * [Symbol.iterator]() {
161
+ for (const item of this.cache) {
162
+ yield item;
163
+ }
164
+
165
+ for (const item of this.oldCache) {
166
+ const [key] = item;
167
+ if (!this.cache.has(key)) {
168
+ yield item;
169
+ }
170
+ }
171
+ }
172
+
173
+ get size() {
174
+ let oldCacheSize = 0;
175
+ for (const key of this.oldCache.keys()) {
176
+ if (!this.cache.has(key)) {
177
+ oldCacheSize++;
178
+ }
179
+ }
180
+
181
+ return Math.min(this._size + oldCacheSize, this.maxSize);
182
+ }
183
+ }
131
184
 
132
- // extracted by mini-css-extract-plugin
185
+ module.exports = QuickLRU;
133
186
 
134
- /***/ }),
135
187
 
136
- /***/ "7b64":
137
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
188
+ /***/ }),
138
189
 
139
- "use strict";
140
- /* unused harmony export Ripple */
141
- /* harmony import */ var _src_directives_ripple_VRipple_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("536f");
142
- /* harmony import */ var _src_directives_ripple_VRipple_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_src_directives_ripple_VRipple_sass__WEBPACK_IMPORTED_MODULE_0__);
143
- /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3d78");
144
- // Styles
145
- // Utilities
190
+ /***/ "2444":
191
+ /***/ (function(module, exports, __webpack_require__) {
146
192
 
193
+ /* global ActiveXObject -- old IE, WSH */
194
+ var anObject = __webpack_require__("50b4");
195
+ var definePropertiesModule = __webpack_require__("de39");
196
+ var enumBugKeys = __webpack_require__("7edb");
197
+ var hiddenKeys = __webpack_require__("23d9");
198
+ var html = __webpack_require__("ce02");
199
+ var documentCreateElement = __webpack_require__("6e0f");
200
+ var sharedKey = __webpack_require__("2cac");
201
+
202
+ var GT = '>';
203
+ var LT = '<';
204
+ var PROTOTYPE = 'prototype';
205
+ var SCRIPT = 'script';
206
+ var IE_PROTO = sharedKey('IE_PROTO');
207
+
208
+ var EmptyConstructor = function () { /* empty */ };
209
+
210
+ var scriptTag = function (content) {
211
+ return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
212
+ };
147
213
 
214
+ // Create object with fake `null` prototype: use ActiveX Object with cleared prototype
215
+ var NullProtoObjectViaActiveX = function (activeXDocument) {
216
+ activeXDocument.write(scriptTag(''));
217
+ activeXDocument.close();
218
+ var temp = activeXDocument.parentWindow.Object;
219
+ activeXDocument = null; // avoid memory leak
220
+ return temp;
221
+ };
148
222
 
149
- const DELAY_RIPPLE = 80;
150
- function transform(el, value) {
151
- el.style.transform = value;
152
- el.style.webkitTransform = value;
153
- }
154
- function isTouchEvent(e) {
155
- return e.constructor.name === 'TouchEvent';
156
- }
157
- function isKeyboardEvent(e) {
158
- return e.constructor.name === 'KeyboardEvent';
159
- }
160
- const calculate = (e, el, value = {}) => {
161
- let localX = 0;
162
- let localY = 0;
163
- if (!isKeyboardEvent(e)) {
164
- const offset = el.getBoundingClientRect();
165
- const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e;
166
- localX = target.clientX - offset.left;
167
- localY = target.clientY - offset.top;
168
- }
169
- let radius = 0;
170
- let scale = 0.3;
171
- if (el._ripple && el._ripple.circle) {
172
- scale = 0.15;
173
- radius = el.clientWidth / 2;
174
- radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4;
175
- } else {
176
- radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2;
177
- }
178
- const centerX = `${(el.clientWidth - radius * 2) / 2}px`;
179
- const centerY = `${(el.clientHeight - radius * 2) / 2}px`;
180
- const x = value.center ? centerX : `${localX - radius}px`;
181
- const y = value.center ? centerY : `${localY - radius}px`;
182
- return {
183
- radius,
184
- scale,
185
- x,
186
- y,
187
- centerX,
188
- centerY
189
- };
223
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
224
+ var NullProtoObjectViaIFrame = function () {
225
+ // Thrash, waste and sodomy: IE GC bug
226
+ var iframe = documentCreateElement('iframe');
227
+ var JS = 'java' + SCRIPT + ':';
228
+ var iframeDocument;
229
+ iframe.style.display = 'none';
230
+ html.appendChild(iframe);
231
+ // https://github.com/zloirock/core-js/issues/475
232
+ iframe.src = String(JS);
233
+ iframeDocument = iframe.contentWindow.document;
234
+ iframeDocument.open();
235
+ iframeDocument.write(scriptTag('document.F=Object'));
236
+ iframeDocument.close();
237
+ return iframeDocument.F;
190
238
  };
191
- const ripples = {
192
- /* eslint-disable max-statements */
193
- show(e, el, value = {}) {
194
- if (!el._ripple || !el._ripple.enabled) {
195
- return;
196
- }
197
- const container = document.createElement('span');
198
- const animation = document.createElement('span');
199
- container.appendChild(animation);
200
- container.className = 'v-ripple__container';
201
- if (value.class) {
202
- container.className += ` ${value.class}`;
203
- }
204
- const {
205
- radius,
206
- scale,
207
- x,
208
- y,
209
- centerX,
210
- centerY
211
- } = calculate(e, el, value);
212
- const size = `${radius * 2}px`;
213
- animation.className = 'v-ripple__animation';
214
- animation.style.width = size;
215
- animation.style.height = size;
216
- el.appendChild(container);
217
- const computed = window.getComputedStyle(el);
218
- if (computed && computed.position === 'static') {
219
- el.style.position = 'relative';
220
- el.dataset.previousPosition = 'static';
221
- }
222
- animation.classList.add('v-ripple__animation--enter');
223
- animation.classList.add('v-ripple__animation--visible');
224
- transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
225
- animation.dataset.activated = String(performance.now());
226
- setTimeout(() => {
227
- animation.classList.remove('v-ripple__animation--enter');
228
- animation.classList.add('v-ripple__animation--in');
229
- transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
230
- }, 0);
231
- },
232
- hide(el) {
233
- if (!el || !el._ripple || !el._ripple.enabled) return;
234
- const ripples = el.getElementsByClassName('v-ripple__animation');
235
- if (ripples.length === 0) return;
236
- const animation = ripples[ripples.length - 1];
237
- if (animation.dataset.isHiding) return;else animation.dataset.isHiding = 'true';
238
- const diff = performance.now() - Number(animation.dataset.activated);
239
- const delay = Math.max(250 - diff, 0);
240
- setTimeout(() => {
241
- animation.classList.remove('v-ripple__animation--in');
242
- animation.classList.add('v-ripple__animation--out');
243
- setTimeout(() => {
244
- var _a;
245
- const ripples = el.getElementsByClassName('v-ripple__animation');
246
- if (ripples.length === 1 && el.dataset.previousPosition) {
247
- el.style.position = el.dataset.previousPosition;
248
- delete el.dataset.previousPosition;
249
- }
250
- if (((_a = animation.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode) === el) el.removeChild(animation.parentNode);
251
- }, 300);
252
- }, delay);
253
- }
239
+
240
+ // Check for document.domain and active x support
241
+ // No need to use active x approach when document.domain is not set
242
+ // see https://github.com/es-shims/es5-shim/issues/150
243
+ // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
244
+ // avoid IE GC bug
245
+ var activeXDocument;
246
+ var NullProtoObject = function () {
247
+ try {
248
+ activeXDocument = new ActiveXObject('htmlfile');
249
+ } catch (error) { /* ignore */ }
250
+ NullProtoObject = typeof document != 'undefined'
251
+ ? document.domain && activeXDocument
252
+ ? NullProtoObjectViaActiveX(activeXDocument) // old IE
253
+ : NullProtoObjectViaIFrame()
254
+ : NullProtoObjectViaActiveX(activeXDocument); // WSH
255
+ var length = enumBugKeys.length;
256
+ while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
257
+ return NullProtoObject();
254
258
  };
255
- function isRippleEnabled(value) {
256
- return typeof value === 'undefined' || !!value;
257
- }
258
- function rippleShow(e) {
259
- const value = {};
260
- const element = e.currentTarget;
261
- if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return; // Don't allow the event to trigger ripples on any other elements
262
-
263
- e.rippleStop = true;
264
- if (isTouchEvent(e)) {
265
- element._ripple.touched = true;
266
- element._ripple.isTouch = true;
267
- } else {
268
- // It's possible for touch events to fire
269
- // as mouse events on Android/iOS, this
270
- // will skip the event call if it has
271
- // already been registered as touch
272
- if (element._ripple.isTouch) return;
273
- }
274
- value.center = element._ripple.centered || isKeyboardEvent(e);
275
- if (element._ripple.class) {
276
- value.class = element._ripple.class;
277
- }
278
- if (isTouchEvent(e)) {
279
- // already queued that shows or hides the ripple
280
- if (element._ripple.showTimerCommit) return;
281
- element._ripple.showTimerCommit = () => {
282
- ripples.show(e, element, value);
283
- };
284
- element._ripple.showTimer = window.setTimeout(() => {
285
- if (element && element._ripple && element._ripple.showTimerCommit) {
286
- element._ripple.showTimerCommit();
287
- element._ripple.showTimerCommit = null;
288
- }
289
- }, DELAY_RIPPLE);
290
- } else {
291
- ripples.show(e, element, value);
292
- }
293
- }
294
- function rippleHide(e) {
295
- const element = e.currentTarget;
296
- if (!element || !element._ripple) return;
297
- window.clearTimeout(element._ripple.showTimer); // The touch interaction occurs before the show timer is triggered.
298
- // We still want to show ripple effect.
299
-
300
- if (e.type === 'touchend' && element._ripple.showTimerCommit) {
301
- element._ripple.showTimerCommit();
302
- element._ripple.showTimerCommit = null; // re-queue ripple hiding
303
-
304
- element._ripple.showTimer = setTimeout(() => {
305
- rippleHide(e);
306
- });
307
- return;
308
- }
309
- window.setTimeout(() => {
310
- if (element._ripple) {
311
- element._ripple.touched = false;
312
- }
313
- });
314
- ripples.hide(element);
315
- }
316
- function rippleCancelShow(e) {
317
- const element = e.currentTarget;
318
- if (!element || !element._ripple) return;
319
- if (element._ripple.showTimerCommit) {
320
- element._ripple.showTimerCommit = null;
321
- }
322
- window.clearTimeout(element._ripple.showTimer);
323
- }
324
- let keyboardRipple = false;
325
- function keyboardRippleShow(e) {
326
- if (!keyboardRipple && (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_1__[/* keyCodes */ "s"].enter || e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_1__[/* keyCodes */ "s"].space)) {
327
- keyboardRipple = true;
328
- rippleShow(e);
329
- }
330
- }
331
- function keyboardRippleHide(e) {
332
- keyboardRipple = false;
333
- rippleHide(e);
334
- }
335
- function focusRippleHide(e) {
336
- if (keyboardRipple === true) {
337
- keyboardRipple = false;
338
- rippleHide(e);
339
- }
340
- }
341
- function updateRipple(el, binding, wasEnabled) {
342
- const enabled = isRippleEnabled(binding.value);
343
- if (!enabled) {
344
- ripples.hide(el);
345
- }
346
- el._ripple = el._ripple || {};
347
- el._ripple.enabled = enabled;
348
- const value = binding.value || {};
349
- if (value.center) {
350
- el._ripple.centered = true;
351
- }
352
- if (value.class) {
353
- el._ripple.class = binding.value.class;
354
- }
355
- if (value.circle) {
356
- el._ripple.circle = value.circle;
357
- }
358
- if (enabled && !wasEnabled) {
359
- el.addEventListener('touchstart', rippleShow, {
360
- passive: true
361
- });
362
- el.addEventListener('touchend', rippleHide, {
363
- passive: true
364
- });
365
- el.addEventListener('touchmove', rippleCancelShow, {
366
- passive: true
367
- });
368
- el.addEventListener('touchcancel', rippleHide);
369
- el.addEventListener('mousedown', rippleShow);
370
- el.addEventListener('mouseup', rippleHide);
371
- el.addEventListener('mouseleave', rippleHide);
372
- el.addEventListener('keydown', keyboardRippleShow);
373
- el.addEventListener('keyup', keyboardRippleHide);
374
- el.addEventListener('blur', focusRippleHide); // Anchor tags can be dragged, causes other hides to fail - #1537
375
-
376
- el.addEventListener('dragstart', rippleHide, {
377
- passive: true
378
- });
379
- } else if (!enabled && wasEnabled) {
380
- removeListeners(el);
381
- }
382
- }
383
- function removeListeners(el) {
384
- el.removeEventListener('mousedown', rippleShow);
385
- el.removeEventListener('touchstart', rippleShow);
386
- el.removeEventListener('touchend', rippleHide);
387
- el.removeEventListener('touchmove', rippleCancelShow);
388
- el.removeEventListener('touchcancel', rippleHide);
389
- el.removeEventListener('mouseup', rippleHide);
390
- el.removeEventListener('mouseleave', rippleHide);
391
- el.removeEventListener('keydown', keyboardRippleShow);
392
- el.removeEventListener('keyup', keyboardRippleHide);
393
- el.removeEventListener('dragstart', rippleHide);
394
- el.removeEventListener('blur', focusRippleHide);
395
- }
396
- function directive(el, binding, node) {
397
- updateRipple(el, binding, false);
398
- if (false) {}
399
- }
400
- function unbind(el) {
401
- delete el._ripple;
402
- removeListeners(el);
403
- }
404
- function update(el, binding) {
405
- if (binding.value === binding.oldValue) {
406
- return;
407
- }
408
- const wasEnabled = isRippleEnabled(binding.oldValue);
409
- updateRipple(el, binding, wasEnabled);
410
- }
411
- const Ripple = {
412
- bind: directive,
413
- unbind,
414
- update
259
+
260
+ hiddenKeys[IE_PROTO] = true;
261
+
262
+ // `Object.create` method
263
+ // https://tc39.es/ecma262/#sec-object.create
264
+ // eslint-disable-next-line es/no-object-create -- safe
265
+ module.exports = Object.create || function create(O, Properties) {
266
+ var result;
267
+ if (O !== null) {
268
+ EmptyConstructor[PROTOTYPE] = anObject(O);
269
+ result = new EmptyConstructor();
270
+ EmptyConstructor[PROTOTYPE] = null;
271
+ // add "__proto__" for Object.getPrototypeOf polyfill
272
+ result[IE_PROTO] = O;
273
+ } else result = NullProtoObject();
274
+ return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
415
275
  };
416
- /* harmony default export */ __webpack_exports__["a"] = (Ripple);
276
+
417
277
 
418
278
  /***/ }),
419
279
 
420
- /***/ "7c5f":
280
+ /***/ "36e1":
421
281
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
422
282
 
423
283
  "use strict";
424
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad27");
284
+ /* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fbf8");
425
285
 
426
- /**
427
- * This mixin provides `attrs$` and `listeners$` to work around
428
- * vue bug https://github.com/vuejs/vue/issues/10115
429
- */
430
286
 
431
- function makeWatcher(property) {
432
- return function (val, oldVal) {
433
- for (const attr in oldVal) {
434
- if (!Object.prototype.hasOwnProperty.call(val, attr)) {
435
- this.$delete(this.$data[property], attr);
436
- }
437
- }
438
- for (const attr in val) {
439
- this.$set(this.$data[property], attr, val[attr]);
440
- }
441
- };
442
- }
443
- /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
444
- data: () => ({
445
- attrs$: {},
446
- listeners$: {}
447
- }),
448
- created() {
449
- // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115
450
- // Make sure to use `attrs$` instead of `$attrs` (confusing right?)
451
- this.$watch('$attrs', makeWatcher('attrs$'), {
452
- immediate: true
453
- });
454
- this.$watch('$listeners', makeWatcher('listeners$'), {
455
- immediate: true
456
- });
457
- }
458
- }));
287
+ /* harmony default export */ __webpack_exports__["a"] = (_VIcon__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]);
459
288
 
460
289
  /***/ }),
461
290
 
462
- /***/ "8082":
463
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
291
+ /***/ "45a8":
292
+ /***/ (function(module, exports, __webpack_require__) {
464
293
 
465
294
  "use strict";
466
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad27");
467
295
 
468
- /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
469
- name: 'sizeable',
470
- props: {
471
- large: Boolean,
472
- small: Boolean,
473
- xLarge: Boolean,
474
- xSmall: Boolean
475
- },
476
- computed: {
477
- medium() {
478
- return Boolean(!this.xSmall && !this.small && !this.large && !this.xLarge);
479
- },
480
- sizeableClasses() {
481
- return {
482
- 'v-size--x-small': this.xSmall,
483
- 'v-size--small': this.small,
484
- 'v-size--default': this.medium,
485
- 'v-size--large': this.large,
486
- 'v-size--x-large': this.xLarge
487
- };
488
- }
296
+ var $ = __webpack_require__("4b31");
297
+ var toObject = __webpack_require__("368f");
298
+ var lengthOfArrayLike = __webpack_require__("c944");
299
+ var toIntegerOrInfinity = __webpack_require__("015b");
300
+ var addToUnscopables = __webpack_require__("7310");
301
+
302
+ // `Array.prototype.at` method
303
+ // https://github.com/tc39/proposal-relative-indexing-method
304
+ $({ target: 'Array', proto: true }, {
305
+ at: function at(index) {
306
+ var O = toObject(this);
307
+ var len = lengthOfArrayLike(O);
308
+ var relativeIndex = toIntegerOrInfinity(index);
309
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
310
+ return (k < 0 || k >= len) ? undefined : O[k];
489
311
  }
490
- }));
491
-
492
- /***/ }),
493
-
494
- /***/ "901a":
495
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
496
-
497
- "use strict";
498
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return factory; });
499
- /* harmony import */ var _registrable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("92e2");
500
- // Mixins
312
+ });
501
313
 
502
- function factory(namespace, child, parent) {
503
- return Object(_registrable__WEBPACK_IMPORTED_MODULE_0__[/* inject */ "a"])(namespace, child, parent).extend({
504
- name: 'groupable',
505
- props: {
506
- activeClass: {
507
- type: String,
508
- default() {
509
- if (!this[namespace]) return undefined;
510
- return this[namespace].activeClass;
511
- }
512
- },
513
- disabled: Boolean
514
- },
515
- data() {
516
- return {
517
- isActive: false
518
- };
519
- },
520
- computed: {
521
- groupClasses() {
522
- if (!this.activeClass) return {};
523
- return {
524
- [this.activeClass]: this.isActive
525
- };
526
- }
527
- },
528
- created() {
529
- this[namespace] && this[namespace].register(this);
530
- },
531
- beforeDestroy() {
532
- this[namespace] && this[namespace].unregister(this);
533
- },
534
- methods: {
535
- toggle() {
536
- this.$emit('change');
537
- }
538
- }
539
- });
540
- }
541
- /* eslint-disable-next-line @typescript-eslint/no-redeclare */
314
+ addToUnscopables('at');
542
315
 
543
- const Groupable = factory('itemGroup');
544
- /* unused harmony default export */ var _unused_webpack_default_export = (Groupable);
545
316
 
546
317
  /***/ }),
547
318
 
548
- /***/ "92e2":
549
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
319
+ /***/ "5375":
320
+ /***/ (function(module, exports, __webpack_require__) {
550
321
 
551
322
  "use strict";
552
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return inject; });
553
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return provide; });
554
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad27");
555
- /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("6c21");
556
-
557
-
558
- function generateWarning(child, parent) {
559
- return () => Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[/* consoleWarn */ "c"])(`The ${child} component must be used inside a ${parent}`);
560
- }
561
- function inject(namespace, child, parent) {
562
- const defaultImpl = child && parent ? {
563
- register: generateWarning(child, parent),
564
- unregister: generateWarning(child, parent)
565
- } : null;
566
- return vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
567
- name: 'registrable-inject',
568
- inject: {
569
- [namespace]: {
570
- default: defaultImpl
571
- }
572
- }
573
- });
574
- }
575
- function provide(namespace, self = false) {
576
- return vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
577
- name: 'registrable-provide',
578
- provide() {
579
- return {
580
- [namespace]: self ? this : {
581
- register: this.register,
582
- unregister: this.unregister
583
- }
584
- };
585
- }
586
- });
587
- }
588
-
589
- /***/ }),
590
323
 
591
- /***/ "9d92":
592
- /***/ (function(module, exports, __webpack_require__) {
593
324
 
594
- // extracted by mini-css-extract-plugin
325
+ const UPPERCASE = /[\p{Lu}]/u;
326
+ const LOWERCASE = /[\p{Ll}]/u;
327
+ const LEADING_CAPITAL = /^[\p{Lu}](?![\p{Lu}])/gu;
328
+ const IDENTIFIER = /([\p{Alpha}\p{N}_]|$)/u;
329
+ const SEPARATORS = /[_.\- ]+/;
330
+
331
+ const LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);
332
+ const SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');
333
+ const NUMBERS_AND_IDENTIFIER = new RegExp('\\d+' + IDENTIFIER.source, 'gu');
334
+
335
+ const preserveCamelCase = (string, toLowerCase, toUpperCase) => {
336
+ let isLastCharLower = false;
337
+ let isLastCharUpper = false;
338
+ let isLastLastCharUpper = false;
339
+
340
+ for (let i = 0; i < string.length; i++) {
341
+ const character = string[i];
342
+
343
+ if (isLastCharLower && UPPERCASE.test(character)) {
344
+ string = string.slice(0, i) + '-' + string.slice(i);
345
+ isLastCharLower = false;
346
+ isLastLastCharUpper = isLastCharUpper;
347
+ isLastCharUpper = true;
348
+ i++;
349
+ } else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {
350
+ string = string.slice(0, i - 1) + '-' + string.slice(i - 1);
351
+ isLastLastCharUpper = isLastCharUpper;
352
+ isLastCharUpper = false;
353
+ isLastCharLower = true;
354
+ } else {
355
+ isLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;
356
+ isLastLastCharUpper = isLastCharUpper;
357
+ isLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;
358
+ }
359
+ }
360
+
361
+ return string;
362
+ };
595
363
 
596
- /***/ }),
364
+ const preserveConsecutiveUppercase = (input, toLowerCase) => {
365
+ LEADING_CAPITAL.lastIndex = 0;
597
366
 
598
- /***/ "c533":
599
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
367
+ return input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));
368
+ };
600
369
 
601
- "use strict";
602
- /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c3d6");
603
- /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);
604
- /* harmony import */ var _src_components_VList_VList_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("9d92");
605
- /* harmony import */ var _src_components_VList_VList_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_components_VList_VList_sass__WEBPACK_IMPORTED_MODULE_1__);
606
- /* harmony import */ var _VSheet_VSheet__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("1163");
370
+ const postProcess = (input, toUpperCase) => {
371
+ SEPARATORS_AND_IDENTIFIER.lastIndex = 0;
372
+ NUMBERS_AND_IDENTIFIER.lastIndex = 0;
607
373
 
608
- // Styles
609
- // Components
374
+ return input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))
375
+ .replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));
376
+ };
610
377
 
378
+ const camelCase = (input, options) => {
379
+ if (!(typeof input === 'string' || Array.isArray(input))) {
380
+ throw new TypeError('Expected the input to be `string | string[]`');
381
+ }
382
+
383
+ options = {
384
+ pascalCase: false,
385
+ preserveConsecutiveUppercase: false,
386
+ ...options
387
+ };
388
+
389
+ if (Array.isArray(input)) {
390
+ input = input.map(x => x.trim())
391
+ .filter(x => x.length)
392
+ .join('-');
393
+ } else {
394
+ input = input.trim();
395
+ }
396
+
397
+ if (input.length === 0) {
398
+ return '';
399
+ }
400
+
401
+ const toLowerCase = options.locale === false ?
402
+ string => string.toLowerCase() :
403
+ string => string.toLocaleLowerCase(options.locale);
404
+ const toUpperCase = options.locale === false ?
405
+ string => string.toUpperCase() :
406
+ string => string.toLocaleUpperCase(options.locale);
407
+
408
+ if (input.length === 1) {
409
+ return options.pascalCase ? toUpperCase(input) : toLowerCase(input);
410
+ }
411
+
412
+ const hasUpperCase = input !== toLowerCase(input);
413
+
414
+ if (hasUpperCase) {
415
+ input = preserveCamelCase(input, toLowerCase, toUpperCase);
416
+ }
417
+
418
+ input = input.replace(LEADING_SEPARATORS, '');
419
+
420
+ if (options.preserveConsecutiveUppercase) {
421
+ input = preserveConsecutiveUppercase(input, toLowerCase);
422
+ } else {
423
+ input = toLowerCase(input);
424
+ }
425
+
426
+ if (options.pascalCase) {
427
+ input = toUpperCase(input.charAt(0)) + input.slice(1);
428
+ }
429
+
430
+ return postProcess(input, toUpperCase);
431
+ };
611
432
 
612
- /* @vue/component */
433
+ module.exports = camelCase;
434
+ // TODO: Remove this for the next major release
435
+ module.exports.default = camelCase;
613
436
 
614
- /* harmony default export */ __webpack_exports__["a"] = (_VSheet_VSheet__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].extend().extend({
615
- name: 'v-list',
616
- provide() {
617
- return {
618
- isInList: true,
619
- list: this
620
- };
621
- },
622
- inject: {
623
- isInMenu: {
624
- default: false
625
- },
626
- isInNav: {
627
- default: false
628
- }
629
- },
630
- props: {
631
- dense: Boolean,
632
- disabled: Boolean,
633
- expand: Boolean,
634
- flat: Boolean,
635
- nav: Boolean,
636
- rounded: Boolean,
637
- subheader: Boolean,
638
- threeLine: Boolean,
639
- twoLine: Boolean
640
- },
641
- data: () => ({
642
- groups: []
643
- }),
644
- computed: {
645
- classes() {
646
- return {
647
- ..._VSheet_VSheet__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].options.computed.classes.call(this),
648
- 'v-list--dense': this.dense,
649
- 'v-list--disabled': this.disabled,
650
- 'v-list--flat': this.flat,
651
- 'v-list--nav': this.nav,
652
- 'v-list--rounded': this.rounded,
653
- 'v-list--subheader': this.subheader,
654
- 'v-list--two-line': this.twoLine,
655
- 'v-list--three-line': this.threeLine
656
- };
657
- }
658
- },
659
- methods: {
660
- register(content) {
661
- this.groups.push(content);
662
- },
663
- unregister(content) {
664
- const index = this.groups.findIndex(g => g._uid === content._uid);
665
- if (index > -1) this.groups.splice(index, 1);
666
- },
667
- listClick(uid) {
668
- if (this.expand) return;
669
- for (const group of this.groups) {
670
- group.toggle(uid);
671
- }
672
- }
673
- },
674
- render(h) {
675
- const data = {
676
- staticClass: 'v-list',
677
- class: this.classes,
678
- style: this.styles,
679
- attrs: {
680
- role: this.isInNav || this.isInMenu ? undefined : 'list',
681
- ...this.attrs$
682
- }
683
- };
684
- return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default]);
685
- }
686
- }));
687
437
 
688
438
  /***/ }),
689
439
 
690
- /***/ "dc7f":
440
+ /***/ "5d2e":
691
441
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
692
442
 
693
443
  "use strict";
694
- /* harmony import */ var _src_components_VList_VListItem_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f286");
695
- /* harmony import */ var _src_components_VList_VListItem_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_src_components_VList_VListItem_sass__WEBPACK_IMPORTED_MODULE_0__);
696
- /* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("de91");
697
- /* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("facc");
698
- /* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("901a");
699
- /* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("64ad");
700
- /* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("646d");
701
- /* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("7b64");
702
- /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("3d78");
703
- /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("6c21");
704
- /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("9d7d");
705
- // Styles
706
- // Mixins
707
-
708
-
709
-
444
+ /* harmony import */ var _stackable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9c0d");
445
+ /* harmony import */ var _positionable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3473");
446
+ /* harmony import */ var _activatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("9be2");
447
+ /* harmony import */ var _detachable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("eeb4");
448
+ /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("9d7d");
449
+ /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("3d78");
450
+ // Mixins
710
451
 
711
452
 
712
- // Directives
713
453
 
714
454
  // Utilities
715
455
 
716
456
 
717
- // Types
718
-
719
457
 
720
- const baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"], _mixins_routable__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_3__[/* factory */ "a"])('listItemGroup'), Object(_mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__[/* factory */ "b"])('inputValue'));
458
+ const baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"])(_stackable__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"], Object(_positionable__WEBPACK_IMPORTED_MODULE_1__[/* factory */ "b"])(['top', 'right', 'bottom', 'left', 'absolute']), _activatable__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"], _detachable__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"]);
721
459
  /* @vue/component */
722
460
 
723
461
  /* harmony default export */ __webpack_exports__["a"] = (baseMixins.extend().extend({
724
- name: 'v-list-item',
725
- directives: {
726
- Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"]
727
- },
728
- inject: {
729
- isInGroup: {
730
- default: false
462
+ name: 'menuable',
463
+ props: {
464
+ allowOverflow: Boolean,
465
+ light: Boolean,
466
+ dark: Boolean,
467
+ maxWidth: {
468
+ type: [Number, String],
469
+ default: 'auto'
731
470
  },
732
- isInList: {
733
- default: false
471
+ minWidth: [Number, String],
472
+ nudgeBottom: {
473
+ type: [Number, String],
474
+ default: 0
734
475
  },
735
- isInMenu: {
736
- default: false
476
+ nudgeLeft: {
477
+ type: [Number, String],
478
+ default: 0
737
479
  },
738
- isInNav: {
739
- default: false
740
- }
741
- },
742
- inheritAttrs: false,
743
- props: {
744
- activeClass: {
745
- type: String,
746
- default() {
747
- if (!this.listItemGroup) return '';
748
- return this.listItemGroup.activeClass;
749
- }
480
+ nudgeRight: {
481
+ type: [Number, String],
482
+ default: 0
750
483
  },
751
- dense: Boolean,
752
- inactive: Boolean,
753
- link: Boolean,
754
- selectable: {
755
- type: Boolean
484
+ nudgeTop: {
485
+ type: [Number, String],
486
+ default: 0
756
487
  },
757
- tag: {
758
- type: String,
759
- default: 'div'
488
+ nudgeWidth: {
489
+ type: [Number, String],
490
+ default: 0
760
491
  },
761
- threeLine: Boolean,
762
- twoLine: Boolean,
763
- value: null
492
+ offsetOverflow: Boolean,
493
+ positionX: {
494
+ type: Number,
495
+ default: null
496
+ },
497
+ positionY: {
498
+ type: Number,
499
+ default: null
500
+ },
501
+ zIndex: {
502
+ type: [Number, String],
503
+ default: null
504
+ }
764
505
  },
765
506
  data: () => ({
766
- proxyClass: 'v-list-item--active'
767
- }),
768
- computed: {
769
- classes() {
770
- return {
771
- 'v-list-item': true,
772
- ..._mixins_routable__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].options.computed.classes.call(this),
773
- 'v-list-item--dense': this.dense,
774
- 'v-list-item--disabled': this.disabled,
775
- 'v-list-item--link': this.isClickable && !this.inactive,
776
- 'v-list-item--selectable': this.selectable,
777
- 'v-list-item--three-line': this.threeLine,
778
- 'v-list-item--two-line': this.twoLine,
779
- ...this.themeClasses
780
- };
507
+ activatorNode: [],
508
+ absoluteX: 0,
509
+ absoluteY: 0,
510
+ activatedBy: null,
511
+ activatorFixed: false,
512
+ dimensions: {
513
+ activator: {
514
+ top: 0,
515
+ left: 0,
516
+ bottom: 0,
517
+ right: 0,
518
+ width: 0,
519
+ height: 0,
520
+ offsetTop: 0,
521
+ scrollHeight: 0,
522
+ offsetLeft: 0
523
+ },
524
+ content: {
525
+ top: 0,
526
+ left: 0,
527
+ bottom: 0,
528
+ right: 0,
529
+ width: 0,
530
+ height: 0,
531
+ offsetTop: 0,
532
+ scrollHeight: 0
533
+ }
781
534
  },
782
- isClickable() {
783
- return Boolean(_mixins_routable__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].options.computed.isClickable.call(this) || this.listItemGroup);
535
+ relativeYOffset: 0,
536
+ hasJustFocused: false,
537
+ hasWindow: false,
538
+ inputActivator: false,
539
+ isContentActive: false,
540
+ pageWidth: 0,
541
+ pageYOffset: 0,
542
+ stackClass: 'v-menu__content--active',
543
+ stackMinZIndex: 6
544
+ }),
545
+ computed: {
546
+ computedLeft() {
547
+ const a = this.dimensions.activator;
548
+ const c = this.dimensions.content;
549
+ const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0;
550
+ const minWidth = Math.max(a.width, c.width);
551
+ let left = 0;
552
+ left += activatorLeft;
553
+ if (this.left || this.$vuetify.rtl && !this.right) left -= minWidth - a.width;
554
+ if (this.offsetX) {
555
+ const maxWidth = isNaN(Number(this.maxWidth)) ? a.width : Math.min(a.width, Number(this.maxWidth));
556
+ left += this.left ? -maxWidth : a.width;
557
+ }
558
+ if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);
559
+ if (this.nudgeRight) left += parseInt(this.nudgeRight);
560
+ return left;
561
+ },
562
+ computedTop() {
563
+ const a = this.dimensions.activator;
564
+ const c = this.dimensions.content;
565
+ let top = 0;
566
+ if (this.top) top += a.height - c.height;
567
+ if (this.attach !== false) top += a.offsetTop;else top += a.top + this.pageYOffset;
568
+ if (this.offsetY) top += this.top ? -a.height : a.height;
569
+ if (this.nudgeTop) top -= parseInt(this.nudgeTop);
570
+ if (this.nudgeBottom) top += parseInt(this.nudgeBottom);
571
+ return top;
572
+ },
573
+ hasActivator() {
574
+ return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator;
575
+ },
576
+ absoluteYOffset() {
577
+ return this.pageYOffset - this.relativeYOffset;
784
578
  }
785
579
  },
786
- created() {
787
- /* istanbul ignore next */
788
- if (this.$attrs.hasOwnProperty('avatar')) {
789
- Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[/* removed */ "e"])('avatar', this);
580
+ watch: {
581
+ disabled(val) {
582
+ val && this.callDeactivate();
583
+ },
584
+ isActive(val) {
585
+ if (this.disabled) return;
586
+ val ? this.callActivate() : this.callDeactivate();
587
+ },
588
+ positionX: 'updateDimensions',
589
+ positionY: 'updateDimensions'
590
+ },
591
+ beforeMount() {
592
+ this.hasWindow = typeof window !== 'undefined';
593
+ if (this.hasWindow) {
594
+ window.addEventListener('resize', this.updateDimensions, false);
595
+ }
596
+ },
597
+ beforeDestroy() {
598
+ if (this.hasWindow) {
599
+ window.removeEventListener('resize', this.updateDimensions, false);
790
600
  }
791
601
  },
792
602
  methods: {
793
- click(e) {
794
- if (e.detail) this.$el.blur();
795
- this.$emit('click', e);
796
- this.to || this.toggle();
797
- },
798
- genAttrs() {
799
- const attrs = {
800
- 'aria-disabled': this.disabled ? true : undefined,
801
- tabindex: this.isClickable && !this.disabled ? 0 : -1,
802
- ...this.$attrs
603
+ absolutePosition() {
604
+ return {
605
+ offsetTop: this.positionY || this.absoluteY,
606
+ offsetLeft: this.positionX || this.absoluteX,
607
+ scrollHeight: 0,
608
+ top: this.positionY || this.absoluteY,
609
+ bottom: this.positionY || this.absoluteY,
610
+ left: this.positionX || this.absoluteX,
611
+ right: this.positionX || this.absoluteX,
612
+ height: 0,
613
+ width: 0
803
614
  };
804
- if (this.$attrs.hasOwnProperty('role')) {// do nothing, role already provided
805
- } else if (this.isInNav) {// do nothing, role is inherit
806
- } else if (this.isInGroup) {
807
- attrs.role = 'option';
808
- attrs['aria-selected'] = String(this.isActive);
809
- } else if (this.isInMenu) {
810
- attrs.role = this.isClickable ? 'menuitem' : undefined;
811
- attrs.id = attrs.id || `list-item-${this._uid}`;
812
- } else if (this.isInList) {
813
- attrs.role = 'listitem';
615
+ },
616
+ activate() {},
617
+ calcLeft(menuWidth) {
618
+ return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[/* convertToUnit */ "g"])(this.attach !== false ? this.computedLeft : this.calcXOverflow(this.computedLeft, menuWidth));
619
+ },
620
+ calcTop() {
621
+ return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[/* convertToUnit */ "g"])(this.attach !== false ? this.computedTop : this.calcYOverflow(this.computedTop));
622
+ },
623
+ calcXOverflow(left, menuWidth) {
624
+ const xOverflow = left + menuWidth - this.pageWidth + 12;
625
+ if ((!this.left || this.right) && xOverflow > 0) {
626
+ left = Math.max(left - xOverflow, 0);
627
+ } else {
628
+ left = Math.max(left, 12);
814
629
  }
815
- return attrs;
630
+ return left + this.getOffsetLeft();
631
+ },
632
+ calcYOverflow(top) {
633
+ const documentHeight = this.getInnerHeight();
634
+ const toTop = this.absoluteYOffset + documentHeight;
635
+ const activator = this.dimensions.activator;
636
+ const contentHeight = this.dimensions.content.height;
637
+ const totalHeight = top + contentHeight;
638
+ const isOverflowing = toTop < totalHeight; // If overflowing bottom and offset
639
+ // TODO: set 'bottom' position instead of 'top'
640
+
641
+ if (isOverflowing && this.offsetOverflow &&
642
+ // If we don't have enough room to offset
643
+ // the overflow, don't offset
644
+ activator.top > contentHeight) {
645
+ top = this.pageYOffset + (activator.top - contentHeight); // If overflowing bottom
646
+ } else if (isOverflowing && !this.allowOverflow) {
647
+ top = toTop - contentHeight - 12; // If overflowing top
648
+ } else if (top < this.absoluteYOffset && !this.allowOverflow) {
649
+ top = this.absoluteYOffset + 12;
650
+ }
651
+ return top < 12 ? 12 : top;
652
+ },
653
+ callActivate() {
654
+ if (!this.hasWindow) return;
655
+ this.activate();
816
656
  },
817
- toggle() {
818
- if (this.to && this.inputValue === undefined) {
819
- this.isActive = !this.isActive;
657
+ callDeactivate() {
658
+ this.isContentActive = false;
659
+ this.deactivate();
660
+ },
661
+ checkForPageYOffset() {
662
+ if (this.hasWindow) {
663
+ this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop();
820
664
  }
821
- this.$emit('change');
822
- }
823
- },
824
- render(h) {
825
- let {
826
- tag,
827
- data
828
- } = this.generateRouteLink();
829
- data.attrs = {
830
- ...data.attrs,
831
- ...this.genAttrs()
832
- };
833
- data[this.to ? 'nativeOn' : 'on'] = {
834
- ...data[this.to ? 'nativeOn' : 'on'],
835
- keydown: e => {
836
- if (!this.disabled) {
837
- /* istanbul ignore else */
838
- if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_7__[/* keyCodes */ "s"].enter) this.click(e);
839
- this.$emit('keydown', e);
665
+ },
666
+ checkActivatorFixed() {
667
+ if (this.attach !== false) {
668
+ this.activatorFixed = false;
669
+ return;
670
+ }
671
+ let el = this.getActivator();
672
+ while (el) {
673
+ if (window.getComputedStyle(el).position === 'fixed') {
674
+ this.activatorFixed = true;
675
+ return;
840
676
  }
677
+ el = el.offsetParent;
841
678
  }
842
- };
843
- if (this.inactive) tag = 'div';
844
- if (this.inactive && this.to) {
845
- data.on = data.nativeOn;
846
- delete data.nativeOn;
679
+ this.activatorFixed = false;
680
+ },
681
+ deactivate() {},
682
+ genActivatorListeners() {
683
+ const listeners = _activatable__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].options.methods.genActivatorListeners.call(this);
684
+ const onClick = listeners.click;
685
+ if (onClick) {
686
+ listeners.click = e => {
687
+ if (this.openOnClick) {
688
+ onClick && onClick(e);
689
+ }
690
+ this.absoluteX = e.clientX;
691
+ this.absoluteY = e.clientY;
692
+ };
693
+ }
694
+ return listeners;
695
+ },
696
+ getInnerHeight() {
697
+ if (!this.hasWindow) return 0;
698
+ return window.innerHeight || document.documentElement.clientHeight;
699
+ },
700
+ getOffsetLeft() {
701
+ if (!this.hasWindow) return 0;
702
+ return window.pageXOffset || document.documentElement.scrollLeft;
703
+ },
704
+ getOffsetTop() {
705
+ if (!this.hasWindow) return 0;
706
+ return window.pageYOffset || document.documentElement.scrollTop;
707
+ },
708
+ getRoundedBoundedClientRect(el) {
709
+ const rect = el.getBoundingClientRect();
710
+ return {
711
+ top: Math.round(rect.top),
712
+ left: Math.round(rect.left),
713
+ bottom: Math.round(rect.bottom),
714
+ right: Math.round(rect.right),
715
+ width: Math.round(rect.width),
716
+ height: Math.round(rect.height)
717
+ };
718
+ },
719
+ measure(el) {
720
+ if (!el || !this.hasWindow) return null;
721
+ const rect = this.getRoundedBoundedClientRect(el); // Account for activator margin
722
+
723
+ if (this.attach !== false) {
724
+ const style = window.getComputedStyle(el);
725
+ rect.left = parseInt(style.marginLeft);
726
+ rect.top = parseInt(style.marginTop);
727
+ }
728
+ return rect;
729
+ },
730
+ sneakPeek(cb) {
731
+ requestAnimationFrame(() => {
732
+ const el = this.$refs.content;
733
+ if (!el || el.style.display !== 'none') {
734
+ cb();
735
+ return;
736
+ }
737
+ el.style.display = 'inline-block';
738
+ cb();
739
+ el.style.display = 'none';
740
+ });
741
+ },
742
+ startTransition() {
743
+ return new Promise(resolve => requestAnimationFrame(() => {
744
+ this.isContentActive = this.hasJustFocused = this.isActive;
745
+ resolve();
746
+ }));
747
+ },
748
+ updateDimensions() {
749
+ this.hasWindow = typeof window !== 'undefined';
750
+ this.checkActivatorFixed();
751
+ this.checkForPageYOffset();
752
+ this.pageWidth = document.documentElement.clientWidth;
753
+ const dimensions = {
754
+ activator: {
755
+ ...this.dimensions.activator
756
+ },
757
+ content: {
758
+ ...this.dimensions.content
759
+ }
760
+ }; // Activator should already be shown
761
+
762
+ if (!this.hasActivator || this.absolute) {
763
+ dimensions.activator = this.absolutePosition();
764
+ } else {
765
+ const activator = this.getActivator();
766
+ if (!activator) return;
767
+ dimensions.activator = this.measure(activator);
768
+ dimensions.activator.offsetLeft = activator.offsetLeft;
769
+ if (this.attach !== false) {
770
+ // account for css padding causing things to not line up
771
+ // this is mostly for v-autocomplete, hopefully it won't break anything
772
+ dimensions.activator.offsetTop = activator.offsetTop;
773
+ } else {
774
+ dimensions.activator.offsetTop = 0;
775
+ }
776
+ } // Display and hide to get dimensions
777
+
778
+ this.sneakPeek(() => {
779
+ if (this.$refs.content) {
780
+ if (this.$refs.content.offsetParent) {
781
+ const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent);
782
+ this.relativeYOffset = window.pageYOffset + offsetRect.top;
783
+ dimensions.activator.top -= this.relativeYOffset;
784
+ dimensions.activator.left -= window.pageXOffset + offsetRect.left;
785
+ }
786
+ dimensions.content = this.measure(this.$refs.content);
787
+ }
788
+ this.dimensions = dimensions;
789
+ });
847
790
  }
848
- const children = this.$scopedSlots.default ? this.$scopedSlots.default({
849
- active: this.isActive,
850
- toggle: this.toggle
851
- }) : this.$slots.default;
852
- return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children);
853
791
  }
854
792
  }));
855
793
 
856
794
  /***/ }),
857
795
 
858
- /***/ "f119":
796
+ /***/ "5ecd":
797
+ /***/ (function(module, exports, __webpack_require__) {
798
+
799
+ !function(e,i){ true?module.exports=i():undefined}(this,(function(){"use strict";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r="("===(f=f||"()")[0],u=")"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));
800
+
801
+ /***/ }),
802
+
803
+ /***/ "7310":
804
+ /***/ (function(module, exports, __webpack_require__) {
805
+
806
+ var wellKnownSymbol = __webpack_require__("1860");
807
+ var create = __webpack_require__("2444");
808
+ var defineProperty = __webpack_require__("3ce5").f;
809
+
810
+ var UNSCOPABLES = wellKnownSymbol('unscopables');
811
+ var ArrayPrototype = Array.prototype;
812
+
813
+ // Array.prototype[@@unscopables]
814
+ // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
815
+ if (ArrayPrototype[UNSCOPABLES] == undefined) {
816
+ defineProperty(ArrayPrototype, UNSCOPABLES, {
817
+ configurable: true,
818
+ value: create(null)
819
+ });
820
+ }
821
+
822
+ // add a key to Array.prototype[@@unscopables]
823
+ module.exports = function (key) {
824
+ ArrayPrototype[UNSCOPABLES][key] = true;
825
+ };
826
+
827
+
828
+ /***/ }),
829
+
830
+ /***/ "759d":
859
831
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
860
832
 
861
833
  "use strict";
862
834
  /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c3d6");
863
835
  /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);
864
- /* harmony import */ var _src_components_VMenu_VMenu_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("ff7f");
865
- /* harmony import */ var _src_components_VMenu_VMenu_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_components_VMenu_VMenu_sass__WEBPACK_IMPORTED_MODULE_1__);
866
- /* harmony import */ var _VThemeProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("3f84");
867
- /* harmony import */ var _mixins_activatable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("9be2");
868
- /* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("0ce2");
869
- /* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("759d");
870
- /* harmony import */ var _mixins_menuable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("5d2e");
871
- /* harmony import */ var _mixins_returnable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("4368");
872
- /* harmony import */ var _mixins_roundable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("a0f0");
873
- /* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("64ad");
874
- /* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("9d2d");
875
- /* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("d257");
876
- /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("9d7d");
877
- /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__("6c21");
878
- /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__("3d78");
879
- /* harmony import */ var _services_goto__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__("3b2f");
836
+ /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("9d7d");
880
837
 
881
- // Styles
882
- // Components
883
838
 
884
- // Mixins
839
+ function searchChildren(children) {
840
+ const results = [];
841
+ for (let index = 0; index < children.length; index++) {
842
+ const child = children[index];
843
+ if (child.isActive && child.isDependent) {
844
+ results.push(child);
845
+ } else {
846
+ results.push(...searchChildren(child.$children));
847
+ }
848
+ }
849
+ return results;
850
+ }
851
+ /* @vue/component */
885
852
 
853
+ /* harmony default export */ __webpack_exports__["a"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])().extend({
854
+ name: 'dependent',
855
+ data() {
856
+ return {
857
+ closeDependents: true,
858
+ isActive: false,
859
+ isDependent: true
860
+ };
861
+ },
862
+ watch: {
863
+ isActive(val) {
864
+ if (val) return;
865
+ const openDependents = this.getOpenDependents();
866
+ for (let index = 0; index < openDependents.length; index++) {
867
+ openDependents[index].isActive = false;
868
+ }
869
+ }
870
+ },
871
+ methods: {
872
+ getOpenDependents() {
873
+ if (this.closeDependents) return searchChildren(this.$children);
874
+ return [];
875
+ },
876
+ getOpenDependentElements() {
877
+ const result = [];
878
+ const openDependents = this.getOpenDependents();
879
+ for (let index = 0; index < openDependents.length; index++) {
880
+ result.push(...openDependents[index].getClickableDependentElements());
881
+ }
882
+ return result;
883
+ },
884
+ getClickableDependentElements() {
885
+ const result = [this.$el];
886
+ if (this.$refs.content) result.push(this.$refs.content);
887
+ if (this.overlay) result.push(this.overlay.$el);
888
+ result.push(...this.getOpenDependentElements());
889
+ return result;
890
+ }
891
+ }
892
+ }));
893
+
894
+ /***/ }),
886
895
 
896
+ /***/ "886c":
897
+ /***/ (function(module, exports, __webpack_require__) {
887
898
 
899
+ // extracted by mini-css-extract-plugin
888
900
 
901
+ /***/ }),
889
902
 
903
+ /***/ "8e6b":
904
+ /***/ (function(module, exports, __webpack_require__) {
890
905
 
906
+ // extracted by mini-css-extract-plugin
891
907
 
892
- // Directives
908
+ /***/ }),
893
909
 
910
+ /***/ "9be2":
911
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
894
912
 
895
- // Utilities
913
+ "use strict";
914
+ /* harmony import */ var _delayable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0ce2");
915
+ /* harmony import */ var _toggleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("646d");
916
+ /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("9d7d");
917
+ /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("3d78");
918
+ /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("6c21");
919
+ // Mixins
896
920
 
921
+ // Utilities
897
922
 
898
923
 
899
924
 
900
925
 
901
- const baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"])(_mixins_dependent__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"], _mixins_returnable__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"], _mixins_roundable__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"], _mixins_menuable__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"]);
926
+ const baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_delayable__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"], _toggleable__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]);
902
927
  /* @vue/component */
903
928
 
904
929
  /* harmony default export */ __webpack_exports__["a"] = (baseMixins.extend({
905
- name: 'v-menu',
906
- directives: {
907
- ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"],
908
- Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"]
909
- },
910
- provide() {
911
- return {
912
- isInMenu: true,
913
- // Pass theme through to default slot
914
- theme: this.theme
915
- };
916
- },
930
+ name: 'activatable',
917
931
  props: {
918
- auto: Boolean,
919
- closeOnClick: {
920
- type: Boolean,
921
- default: true
932
+ activator: {
933
+ default: null,
934
+ validator: val => {
935
+ return ['string', 'object'].includes(typeof val);
936
+ }
922
937
  },
923
- closeOnContentClick: {
938
+ disabled: Boolean,
939
+ internalActivator: Boolean,
940
+ openOnClick: {
924
941
  type: Boolean,
925
942
  default: true
926
943
  },
927
- disabled: Boolean,
928
- disableKeys: Boolean,
929
- maxHeight: {
930
- type: [Number, String],
931
- default: 'auto'
932
- },
933
- offsetX: Boolean,
934
- offsetY: Boolean,
935
944
  openOnHover: Boolean,
936
- origin: {
937
- type: String,
938
- default: 'top left'
939
- },
940
- transition: {
941
- type: [Boolean, String],
942
- default: 'v-menu-transition'
943
- }
944
- },
945
- data() {
946
- return {
947
- calculatedTopAuto: 0,
948
- defaultOffset: 8,
949
- hasJustFocused: false,
950
- listIndex: -1,
951
- resizeTimeout: 0,
952
- selectedIndex: null,
953
- tiles: []
954
- };
955
- },
956
- computed: {
957
- activeTile() {
958
- return this.tiles[this.listIndex];
959
- },
960
- calculatedLeft() {
961
- const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth));
962
- if (!this.auto) return this.calcLeft(menuWidth) || '0';
963
- return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* convertToUnit */ "g"])(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0';
964
- },
965
- calculatedMaxHeight() {
966
- const height = this.auto ? '200px' : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* convertToUnit */ "g"])(this.maxHeight);
967
- return height || '0';
968
- },
969
- calculatedMaxWidth() {
970
- return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* convertToUnit */ "g"])(this.maxWidth) || '0';
971
- },
972
- calculatedMinWidth() {
973
- if (this.minWidth) {
974
- return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* convertToUnit */ "g"])(this.minWidth) || '0';
975
- }
976
- const minWidth = Math.min(this.dimensions.activator.width + Number(this.nudgeWidth) + (this.auto ? 16 : 0), Math.max(this.pageWidth - 24, 0));
977
- const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth)) ? minWidth : parseInt(this.calculatedMaxWidth);
978
- return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* convertToUnit */ "g"])(Math.min(calculatedMaxWidth, minWidth)) || '0';
979
- },
980
- calculatedTop() {
981
- const top = !this.auto ? this.calcTop() : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* convertToUnit */ "g"])(this.calcYOverflow(this.calculatedTopAuto));
982
- return top || '0';
983
- },
984
- hasClickableTiles() {
985
- return Boolean(this.tiles.find(tile => tile.tabIndex > -1));
986
- },
987
- styles() {
988
- return {
989
- maxHeight: this.calculatedMaxHeight,
990
- minWidth: this.calculatedMinWidth,
991
- maxWidth: this.calculatedMaxWidth,
992
- top: this.calculatedTop,
993
- left: this.calculatedLeft,
994
- transformOrigin: this.origin,
995
- zIndex: this.zIndex || this.activeZIndex
996
- };
997
- }
945
+ openOnFocus: Boolean
998
946
  },
947
+ data: () => ({
948
+ // Do not use this directly, call getActivator() instead
949
+ activatorElement: null,
950
+ activatorNode: [],
951
+ events: ['click', 'mouseenter', 'mouseleave', 'focus'],
952
+ listeners: {}
953
+ }),
999
954
  watch: {
1000
- isActive(val) {
1001
- if (!val) this.listIndex = -1;
1002
- },
1003
- isContentActive(val) {
1004
- this.hasJustFocused = val;
1005
- },
1006
- listIndex(next, prev) {
1007
- if (next in this.tiles) {
1008
- const tile = this.tiles[next];
1009
- tile.classList.add('v-list-item--highlighted');
1010
- const scrollTop = this.$refs.content.scrollTop;
1011
- const contentHeight = this.$refs.content.clientHeight;
1012
- if (scrollTop > tile.offsetTop - 8) {
1013
- Object(_services_goto__WEBPACK_IMPORTED_MODULE_15__[/* default */ "b"])(tile.offsetTop - tile.clientHeight, {
1014
- appOffset: false,
1015
- duration: 300,
1016
- container: this.$refs.content
1017
- });
1018
- } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {
1019
- Object(_services_goto__WEBPACK_IMPORTED_MODULE_15__[/* default */ "b"])(tile.offsetTop - contentHeight + tile.clientHeight * 2, {
1020
- appOffset: false,
1021
- duration: 300,
1022
- container: this.$refs.content
1023
- });
1024
- }
1025
- }
1026
- prev in this.tiles && this.tiles[prev].classList.remove('v-list-item--highlighted');
1027
- }
955
+ activator: 'resetActivator',
956
+ openOnFocus: 'resetActivator',
957
+ openOnHover: 'resetActivator'
1028
958
  },
1029
- created() {
1030
- /* istanbul ignore next */
1031
- if (this.$attrs.hasOwnProperty('full-width')) {
1032
- Object(_util_console__WEBPACK_IMPORTED_MODULE_13__[/* removed */ "e"])('full-width', this);
959
+ mounted() {
960
+ const slotType = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[/* getSlotType */ "p"])(this, 'activator', true);
961
+ if (slotType && ['v-slot', 'normal'].includes(slotType)) {
962
+ Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[/* consoleError */ "b"])(`The activator slot must be bound, try '<template v-slot:activator="{ on }"><v-btn v-on="on">'`, this);
1033
963
  }
964
+ this.addActivatorEvents();
1034
965
  },
1035
- mounted() {
1036
- this.isActive && this.callActivate();
966
+ beforeDestroy() {
967
+ this.removeActivatorEvents();
1037
968
  },
1038
969
  methods: {
1039
- activate() {
1040
- // Update coordinates and dimensions of menu
1041
- // and its activator
1042
- this.updateDimensions(); // Start the transition
1043
-
1044
- requestAnimationFrame(() => {
1045
- // Once transitioning, calculate scroll and top position
1046
- this.startTransition().then(() => {
1047
- if (this.$refs.content) {
1048
- this.calculatedTopAuto = this.calcTopAuto();
1049
- this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition());
1050
- }
1051
- });
1052
- });
1053
- },
1054
- calcScrollPosition() {
1055
- const $el = this.$refs.content;
1056
- const activeTile = $el.querySelector('.v-list-item--active');
1057
- const maxScrollTop = $el.scrollHeight - $el.offsetHeight;
1058
- return activeTile ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2)) : $el.scrollTop;
1059
- },
1060
- calcLeftAuto() {
1061
- return parseInt(this.dimensions.activator.left - this.defaultOffset * 2);
1062
- },
1063
- calcTopAuto() {
1064
- const $el = this.$refs.content;
1065
- const activeTile = $el.querySelector('.v-list-item--active');
1066
- if (!activeTile) {
1067
- this.selectedIndex = null;
1068
- }
1069
- if (this.offsetY || !activeTile) {
1070
- return this.computedTop;
970
+ addActivatorEvents() {
971
+ if (!this.activator || this.disabled || !this.getActivator()) return;
972
+ this.listeners = this.genActivatorListeners();
973
+ const keys = Object.keys(this.listeners);
974
+ for (const key of keys) {
975
+ this.getActivator().addEventListener(key, this.listeners[key]);
1071
976
  }
1072
- this.selectedIndex = Array.from(this.tiles).indexOf(activeTile);
1073
- const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition();
1074
- const firstTileOffsetTop = $el.querySelector('.v-list-item').offsetTop;
1075
- return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1;
1076
- },
1077
- changeListIndex(e) {
1078
- // For infinite scroll and autocomplete, re-evaluate children
1079
- this.getTiles();
1080
- if (!this.isActive || !this.hasClickableTiles) {
1081
- return;
1082
- } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].tab) {
1083
- this.isActive = false;
1084
- return;
1085
- } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].down) {
1086
- this.nextTile();
1087
- } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].up) {
1088
- this.prevTile();
1089
- } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].end) {
1090
- this.lastTile();
1091
- } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].home) {
1092
- this.firstTile();
1093
- } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].enter && this.listIndex !== -1) {
1094
- this.tiles[this.listIndex].click();
1095
- } else {
1096
- return;
1097
- } // One of the conditions was met, prevent default action (#2988)
1098
-
1099
- e.preventDefault();
1100
977
  },
1101
- closeConditional(e) {
1102
- const target = e.target;
1103
- return this.isActive && !this._isDestroyed && this.closeOnClick && !this.$refs.content.contains(target);
978
+ genActivator() {
979
+ const node = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[/* getSlot */ "o"])(this, 'activator', Object.assign(this.getValueProxy(), {
980
+ on: this.genActivatorListeners(),
981
+ attrs: this.genActivatorAttributes()
982
+ })) || [];
983
+ this.activatorNode = node;
984
+ return node;
1104
985
  },
1105
986
  genActivatorAttributes() {
1106
- const attributes = _mixins_activatable__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].options.methods.genActivatorAttributes.call(this);
1107
- if (this.activeTile && this.activeTile.id) {
1108
- return {
1109
- ...attributes,
1110
- 'aria-activedescendant': this.activeTile.id
1111
- };
1112
- }
1113
- return attributes;
987
+ return {
988
+ role: this.openOnClick && !this.openOnHover ? 'button' : undefined,
989
+ 'aria-haspopup': true,
990
+ 'aria-expanded': String(this.isActive)
991
+ };
1114
992
  },
1115
993
  genActivatorListeners() {
1116
- const listeners = _mixins_menuable__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].options.methods.genActivatorListeners.call(this);
1117
- if (!this.disableKeys) {
1118
- listeners.keydown = this.onKeyDown;
994
+ if (this.disabled) return {};
995
+ const listeners = {};
996
+ if (this.openOnHover) {
997
+ listeners.mouseenter = e => {
998
+ this.getActivator(e);
999
+ this.runDelay('open');
1000
+ };
1001
+ listeners.mouseleave = e => {
1002
+ this.getActivator(e);
1003
+ this.runDelay('close');
1004
+ };
1005
+ } else if (this.openOnClick) {
1006
+ listeners.click = e => {
1007
+ const activator = this.getActivator(e);
1008
+ if (activator) activator.focus();
1009
+ e.stopPropagation();
1010
+ this.isActive = !this.isActive;
1011
+ };
1012
+ }
1013
+ if (this.openOnFocus) {
1014
+ listeners.focus = e => {
1015
+ this.getActivator(e);
1016
+ e.stopPropagation();
1017
+ this.isActive = !this.isActive;
1018
+ };
1119
1019
  }
1120
1020
  return listeners;
1121
1021
  },
1122
- genTransition() {
1123
- const content = this.genContent();
1124
- if (!this.transition) return content;
1125
- return this.$createElement('transition', {
1126
- props: {
1127
- name: this.transition
1022
+ getActivator(e) {
1023
+ // If we've already fetched the activator, re-use
1024
+ if (this.activatorElement) return this.activatorElement;
1025
+ let activator = null;
1026
+ if (this.activator) {
1027
+ const target = this.internalActivator ? this.$el : document;
1028
+ if (typeof this.activator === 'string') {
1029
+ // Selector
1030
+ activator = target.querySelector(this.activator);
1031
+ } else if (this.activator.$el) {
1032
+ // Component (ref)
1033
+ activator = this.activator.$el;
1034
+ } else {
1035
+ // HTMLElement | Element
1036
+ activator = this.activator;
1128
1037
  }
1129
- }, [content]);
1038
+ } else if (this.activatorNode.length === 1 || this.activatorNode.length && !e) {
1039
+ // Use the contents of the activator slot
1040
+ // There's either only one element in it or we
1041
+ // don't have a click event to use as a last resort
1042
+ const vm = this.activatorNode[0].componentInstance;
1043
+ if (vm && vm.$options.mixins &&
1044
+ // Activatable is indirectly used via Menuable
1045
+ vm.$options.mixins.some(m => m.options && ['activatable', 'menuable'].includes(m.options.name))) {
1046
+ // Activator is actually another activatible component, use its activator (#8846)
1047
+ activator = vm.getActivator();
1048
+ } else {
1049
+ activator = this.activatorNode[0].elm;
1050
+ }
1051
+ } else if (e) {
1052
+ // Activated by a click or focus event
1053
+ activator = e.currentTarget || e.target;
1054
+ } // The activator should only be a valid element (Ignore comments and text nodes)
1055
+
1056
+ this.activatorElement = (activator === null || activator === void 0 ? void 0 : activator.nodeType) === Node.ELEMENT_NODE ? activator : null;
1057
+ return this.activatorElement;
1130
1058
  },
1131
- genDirectives() {
1132
- const directives = [{
1133
- name: 'show',
1134
- value: this.isContentActive
1135
- }]; // Do not add click outside for hover menu
1136
-
1137
- if (!this.openOnHover && this.closeOnClick) {
1138
- directives.push({
1139
- name: 'click-outside',
1140
- value: {
1141
- handler: () => {
1142
- this.isActive = false;
1143
- },
1144
- closeConditional: this.closeConditional,
1145
- include: () => [this.$el, ...this.getOpenDependentElements()]
1146
- }
1147
- });
1148
- }
1149
- return directives;
1059
+ getContentSlot() {
1060
+ return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[/* getSlot */ "o"])(this, 'default', this.getValueProxy(), true);
1150
1061
  },
1151
- genContent() {
1152
- const options = {
1153
- attrs: {
1154
- ...this.getScopeIdAttrs(),
1155
- role: 'role' in this.$attrs ? this.$attrs.role : 'menu'
1156
- },
1157
- staticClass: 'v-menu__content',
1158
- class: {
1159
- ...this.rootThemeClasses,
1160
- ...this.roundedClasses,
1161
- 'v-menu__content--auto': this.auto,
1162
- 'v-menu__content--fixed': this.activatorFixed,
1163
- menuable__content__active: this.isActive,
1164
- [this.contentClass.trim()]: true
1062
+ getValueProxy() {
1063
+ const self = this;
1064
+ return {
1065
+ get value() {
1066
+ return self.isActive;
1165
1067
  },
1166
- style: this.styles,
1167
- directives: this.genDirectives(),
1168
- ref: 'content',
1169
- on: {
1170
- click: e => {
1171
- const target = e.target;
1172
- if (target.getAttribute('disabled')) return;
1173
- if (this.closeOnContentClick) this.isActive = false;
1174
- },
1175
- keydown: this.onKeyDown
1068
+ set value(isActive) {
1069
+ self.isActive = isActive;
1176
1070
  }
1177
1071
  };
1178
- if (this.$listeners.scroll) {
1179
- options.on = options.on || {};
1180
- options.on.scroll = this.$listeners.scroll;
1181
- }
1182
- if (!this.disabled && this.openOnHover) {
1183
- options.on = options.on || {};
1184
- options.on.mouseenter = this.mouseEnterHandler;
1185
- }
1186
- if (this.openOnHover) {
1187
- options.on = options.on || {};
1188
- options.on.mouseleave = this.mouseLeaveHandler;
1189
- }
1190
- return this.$createElement('div', options, this.getContentSlot());
1191
- },
1192
- getTiles() {
1193
- if (!this.$refs.content) return;
1194
- this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'));
1195
- },
1196
- mouseEnterHandler() {
1197
- this.runDelay('open', () => {
1198
- if (this.hasJustFocused) return;
1199
- this.hasJustFocused = true;
1200
- });
1201
- },
1202
- mouseLeaveHandler(e) {
1203
- // Prevent accidental re-activation
1204
- this.runDelay('close', () => {
1205
- var _a;
1206
- if ((_a = this.$refs.content) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget)) return;
1207
- requestAnimationFrame(() => {
1208
- this.isActive = false;
1209
- this.callDeactivate();
1210
- });
1211
- });
1212
1072
  },
1213
- nextTile() {
1214
- const tile = this.tiles[this.listIndex + 1];
1215
- if (!tile) {
1216
- if (!this.tiles.length) return;
1217
- this.listIndex = -1;
1218
- this.nextTile();
1219
- return;
1220
- }
1221
- this.listIndex++;
1222
- if (tile.tabIndex === -1) this.nextTile();
1223
- },
1224
- prevTile() {
1225
- const tile = this.tiles[this.listIndex - 1];
1226
- if (!tile) {
1227
- if (!this.tiles.length) return;
1228
- this.listIndex = this.tiles.length;
1229
- this.prevTile();
1230
- return;
1073
+ removeActivatorEvents() {
1074
+ if (!this.activator || !this.activatorElement) return;
1075
+ const keys = Object.keys(this.listeners);
1076
+ for (const key of keys) {
1077
+ this.activatorElement.removeEventListener(key, this.listeners[key]);
1231
1078
  }
1232
- this.listIndex--;
1233
- if (tile.tabIndex === -1) this.prevTile();
1234
- },
1235
- lastTile() {
1236
- const tile = this.tiles[this.tiles.length - 1];
1237
- if (!tile) return;
1238
- this.listIndex = this.tiles.length - 1;
1239
- if (tile.tabIndex === -1) this.prevTile();
1240
- },
1241
- firstTile() {
1242
- const tile = this.tiles[0];
1243
- if (!tile) return;
1244
- this.listIndex = 0;
1245
- if (tile.tabIndex === -1) this.nextTile();
1246
- },
1247
- onKeyDown(e) {
1248
- if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].esc) {
1249
- // Wait for dependent elements to close first
1250
- setTimeout(() => {
1251
- this.isActive = false;
1252
- });
1253
- const activator = this.getActivator();
1254
- this.$nextTick(() => activator && activator.focus());
1255
- } else if (!this.isActive && [_util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].up, _util_helpers__WEBPACK_IMPORTED_MODULE_14__[/* keyCodes */ "s"].down].includes(e.keyCode)) {
1256
- this.isActive = true;
1257
- } // Allow for isActive watcher to generate tile list
1258
-
1259
- this.$nextTick(() => this.changeListIndex(e));
1260
- },
1261
- onResize() {
1262
- if (!this.isActive) return; // Account for screen resize
1263
- // and orientation change
1264
- // eslint-disable-next-line no-unused-expressions
1265
-
1266
- this.$refs.content.offsetWidth;
1267
- this.updateDimensions(); // When resizing to a smaller width
1268
- // content width is evaluated before
1269
- // the new activator width has been
1270
- // set, causing it to not size properly
1271
- // hacky but will revisit in the future
1272
-
1273
- clearTimeout(this.resizeTimeout);
1274
- this.resizeTimeout = window.setTimeout(this.updateDimensions, 100);
1079
+ this.listeners = {};
1080
+ },
1081
+ resetActivator() {
1082
+ this.removeActivatorEvents();
1083
+ this.activatorElement = null;
1084
+ this.getActivator();
1085
+ this.addActivatorEvents();
1275
1086
  }
1276
- },
1277
- render(h) {
1278
- const data = {
1279
- staticClass: 'v-menu',
1280
- class: {
1281
- 'v-menu--attached': this.attach === '' || this.attach === true || this.attach === 'attach'
1282
- },
1283
- directives: [{
1284
- arg: '500',
1285
- name: 'resize',
1286
- value: this.onResize
1287
- }]
1288
- };
1289
- return h('div', data, [!this.activator && this.genActivator(), this.showLazyContent(() => [this.$createElement(_VThemeProvider__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"], {
1290
- props: {
1291
- root: true,
1292
- light: this.light,
1293
- dark: this.dark
1294
- }
1295
- }, [this.genTransition()])])]);
1296
1087
  }
1297
1088
  }));
1298
1089
 
1299
1090
  /***/ }),
1300
1091
 
1301
- /***/ "f286":
1302
- /***/ (function(module, exports, __webpack_require__) {
1092
+ /***/ "9be7":
1093
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1303
1094
 
1304
- // extracted by mini-css-extract-plugin
1095
+ "use strict";
1096
+ /* harmony import */ var _src_components_VTooltip_VTooltip_sass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("886c");
1097
+ /* harmony import */ var _src_components_VTooltip_VTooltip_sass__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_src_components_VTooltip_VTooltip_sass__WEBPACK_IMPORTED_MODULE_0__);
1098
+ /* harmony import */ var _mixins_activatable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("9be2");
1099
+ /* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("de91");
1100
+ /* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("0ce2");
1101
+ /* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("759d");
1102
+ /* harmony import */ var _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("5d2e");
1103
+ /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("3d78");
1104
+ /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("6c21");
1105
+ /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("9d7d");
1106
+ // Mixins
1305
1107
 
1306
- /***/ }),
1307
1108
 
1308
- /***/ "facc":
1309
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
1310
1109
 
1311
- "use strict";
1312
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad27");
1313
- /* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("7b64");
1314
- /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("3d78");
1315
- // Directives
1316
1110
 
1317
- // Utilities
1318
1111
 
1112
+ // Helpers
1319
1113
 
1320
- /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].extend({
1321
- name: 'routable',
1322
- directives: {
1323
- Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]
1324
- },
1325
- props: {
1326
- activeClass: String,
1327
- append: Boolean,
1328
- disabled: Boolean,
1329
- exact: {
1330
- type: Boolean,
1331
- default: undefined
1114
+
1115
+
1116
+
1117
+ /* @vue/component */
1118
+
1119
+ /* harmony default export */ __webpack_exports__["a"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"], _mixins_dependent__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"], _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"]).extend({
1120
+ name: 'v-tooltip',
1121
+ props: {
1122
+ closeDelay: {
1123
+ type: [Number, String],
1124
+ default: 0
1332
1125
  },
1333
- exactPath: Boolean,
1334
- exactActiveClass: String,
1335
- link: Boolean,
1336
- href: [String, Object],
1337
- to: [String, Object],
1338
- nuxt: Boolean,
1339
- replace: Boolean,
1340
- ripple: {
1341
- type: [Boolean, Object],
1342
- default: null
1126
+ disabled: Boolean,
1127
+ openDelay: {
1128
+ type: [Number, String],
1129
+ default: 0
1130
+ },
1131
+ openOnHover: {
1132
+ type: Boolean,
1133
+ default: true
1134
+ },
1135
+ openOnFocus: {
1136
+ type: Boolean,
1137
+ default: true
1138
+ },
1139
+ tag: {
1140
+ type: String,
1141
+ default: 'span'
1343
1142
  },
1344
- tag: String,
1345
- target: String
1143
+ transition: String
1346
1144
  },
1347
1145
  data: () => ({
1348
- isActive: false,
1349
- proxyClass: ''
1146
+ calculatedMinWidth: 0,
1147
+ closeDependents: false
1350
1148
  }),
1351
1149
  computed: {
1150
+ calculatedLeft() {
1151
+ const {
1152
+ activator,
1153
+ content
1154
+ } = this.dimensions;
1155
+ const unknown = !this.bottom && !this.left && !this.top && !this.right;
1156
+ const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left;
1157
+ let left = 0;
1158
+ if (this.top || this.bottom || unknown) {
1159
+ left = activatorLeft + activator.width / 2 - content.width / 2;
1160
+ } else if (this.left || this.right) {
1161
+ left = activatorLeft + (this.right ? activator.width : -content.width) + (this.right ? 10 : -10);
1162
+ }
1163
+ if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);
1164
+ if (this.nudgeRight) left += parseInt(this.nudgeRight);
1165
+ return `${this.calcXOverflow(left, this.dimensions.content.width)}px`;
1166
+ },
1167
+ calculatedTop() {
1168
+ const {
1169
+ activator,
1170
+ content
1171
+ } = this.dimensions;
1172
+ const activatorTop = this.attach !== false ? activator.offsetTop : activator.top;
1173
+ let top = 0;
1174
+ if (this.top || this.bottom) {
1175
+ top = activatorTop + (this.bottom ? activator.height : -content.height) + (this.bottom ? 10 : -10);
1176
+ } else if (this.left || this.right) {
1177
+ top = activatorTop + activator.height / 2 - content.height / 2;
1178
+ }
1179
+ if (this.nudgeTop) top -= parseInt(this.nudgeTop);
1180
+ if (this.nudgeBottom) top += parseInt(this.nudgeBottom);
1181
+ if (this.attach === false) top += this.pageYOffset;
1182
+ return `${this.calcYOverflow(top)}px`;
1183
+ },
1352
1184
  classes() {
1353
- const classes = {};
1354
- if (this.to) return classes;
1355
- if (this.activeClass) classes[this.activeClass] = this.isActive;
1356
- if (this.proxyClass) classes[this.proxyClass] = this.isActive;
1357
- return classes;
1185
+ return {
1186
+ 'v-tooltip--top': this.top,
1187
+ 'v-tooltip--right': this.right,
1188
+ 'v-tooltip--bottom': this.bottom,
1189
+ 'v-tooltip--left': this.left,
1190
+ 'v-tooltip--attached': this.attach === '' || this.attach === true || this.attach === 'attach'
1191
+ };
1358
1192
  },
1359
- computedRipple() {
1360
- var _a;
1361
- return (_a = this.ripple) !== null && _a !== void 0 ? _a : !this.disabled && this.isClickable;
1193
+ computedTransition() {
1194
+ if (this.transition) return this.transition;
1195
+ return this.isActive ? 'scale-transition' : 'fade-transition';
1362
1196
  },
1363
- isClickable() {
1364
- if (this.disabled) return false;
1365
- return Boolean(this.isLink || this.$listeners.click || this.$listeners['!click'] || this.$attrs.tabindex);
1197
+ offsetY() {
1198
+ return this.top || this.bottom;
1366
1199
  },
1367
- isLink() {
1368
- return this.to || this.href || this.link;
1200
+ offsetX() {
1201
+ return this.left || this.right;
1369
1202
  },
1370
- styles: () => ({})
1203
+ styles() {
1204
+ return {
1205
+ left: this.calculatedLeft,
1206
+ maxWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[/* convertToUnit */ "g"])(this.maxWidth),
1207
+ minWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[/* convertToUnit */ "g"])(this.minWidth),
1208
+ top: this.calculatedTop,
1209
+ zIndex: this.zIndex || this.activeZIndex
1210
+ };
1211
+ }
1371
1212
  },
1372
- watch: {
1373
- $route: 'onRouteChange'
1213
+ beforeMount() {
1214
+ this.$nextTick(() => {
1215
+ this.value && this.callActivate();
1216
+ });
1374
1217
  },
1375
1218
  mounted() {
1376
- this.onRouteChange();
1219
+ if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[/* getSlotType */ "p"])(this, 'activator', true) === 'v-slot') {
1220
+ Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[/* consoleError */ "b"])(`v-tooltip's activator slot must be bound, try '<template #activator="data"><v-btn v-on="data.on>'`, this);
1221
+ }
1377
1222
  },
1378
1223
  methods: {
1379
- generateRouteLink() {
1380
- let exact = this.exact;
1381
- let tag;
1382
- const data = {
1383
- attrs: {
1384
- tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined
1385
- },
1386
- class: this.classes,
1387
- style: this.styles,
1388
- props: {},
1389
- directives: [{
1390
- name: 'ripple',
1391
- value: this.computedRipple
1392
- }],
1393
- [this.to ? 'nativeOn' : 'on']: {
1394
- ...this.$listeners,
1395
- ...('click' in this ? {
1396
- click: this.click
1397
- } : undefined) // #14447
1398
- },
1224
+ activate() {
1225
+ // Update coordinates and dimensions of menu
1226
+ // and its activator
1227
+ this.updateDimensions(); // Start the transition
1399
1228
 
1400
- ref: 'link'
1401
- };
1402
- if (typeof this.exact === 'undefined') {
1403
- exact = this.to === '/' || this.to === Object(this.to) && this.to.path === '/';
1229
+ requestAnimationFrame(this.startTransition);
1230
+ },
1231
+ deactivate() {
1232
+ this.runDelay('close');
1233
+ },
1234
+ genActivatorListeners() {
1235
+ const listeners = _mixins_activatable__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].options.methods.genActivatorListeners.call(this);
1236
+ if (this.openOnFocus) {
1237
+ listeners.focus = e => {
1238
+ this.getActivator(e);
1239
+ this.runDelay('open');
1240
+ };
1241
+ listeners.blur = e => {
1242
+ this.getActivator(e);
1243
+ this.runDelay('close');
1244
+ };
1404
1245
  }
1405
- if (this.to) {
1406
- // Add a special activeClass hook
1407
- // for component level styles
1408
- let activeClass = this.activeClass;
1409
- let exactActiveClass = this.exactActiveClass || activeClass;
1410
- if (this.proxyClass) {
1411
- activeClass = `${activeClass} ${this.proxyClass}`.trim();
1412
- exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim();
1246
+ listeners.keydown = e => {
1247
+ if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_6__[/* keyCodes */ "s"].esc) {
1248
+ this.getActivator(e);
1249
+ this.runDelay('close');
1413
1250
  }
1414
- tag = this.nuxt ? 'nuxt-link' : 'router-link';
1415
- Object.assign(data.props, {
1416
- to: this.to,
1417
- exact,
1418
- exactPath: this.exactPath,
1419
- activeClass,
1420
- exactActiveClass,
1421
- append: this.append,
1422
- replace: this.replace
1423
- });
1424
- } else {
1425
- tag = this.href && 'a' || this.tag || 'div';
1426
- if (tag === 'a' && this.href) data.attrs.href = this.href;
1427
- }
1428
- if (this.target) data.attrs.target = this.target;
1251
+ };
1252
+ return listeners;
1253
+ },
1254
+ genActivatorAttributes() {
1429
1255
  return {
1430
- tag,
1431
- data
1256
+ 'aria-haspopup': true,
1257
+ 'aria-expanded': String(this.isActive)
1432
1258
  };
1433
1259
  },
1434
- onRouteChange() {
1435
- if (!this.to || !this.$refs.link || !this.$route) return;
1436
- const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim();
1437
- const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass;
1438
- const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass);
1439
- this.$nextTick(() => {
1440
- /* istanbul ignore else */
1441
- if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[/* getObjectValueByPath */ "m"])(this.$refs.link, path) === this.isActive) {
1442
- this.toggle();
1260
+ genTransition() {
1261
+ const content = this.genContent();
1262
+ if (!this.computedTransition) return content;
1263
+ return this.$createElement('transition', {
1264
+ props: {
1265
+ name: this.computedTransition
1443
1266
  }
1444
- });
1267
+ }, [content]);
1445
1268
  },
1446
- toggle() {
1447
- this.isActive = !this.isActive;
1269
+ genContent() {
1270
+ return this.$createElement('div', this.setBackgroundColor(this.color, {
1271
+ staticClass: 'v-tooltip__content',
1272
+ class: {
1273
+ [this.contentClass]: true,
1274
+ menuable__content__active: this.isActive,
1275
+ 'v-tooltip__content--fixed': this.activatorFixed
1276
+ },
1277
+ style: this.styles,
1278
+ attrs: this.getScopeIdAttrs(),
1279
+ directives: [{
1280
+ name: 'show',
1281
+ value: this.isContentActive
1282
+ }],
1283
+ ref: 'content'
1284
+ }), this.getContentSlot());
1448
1285
  }
1286
+ },
1287
+ render(h) {
1288
+ return h(this.tag, {
1289
+ staticClass: 'v-tooltip',
1290
+ class: this.classes
1291
+ }, [this.showLazyContent(() => [this.genTransition()]), this.genActivator()]);
1449
1292
  }
1450
1293
  }));
1451
1294
 
1452
1295
  /***/ }),
1453
1296
 
1454
- /***/ "fbf8":
1297
+ /***/ "9c0d":
1455
1298
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1456
1299
 
1457
1300
  "use strict";
1458
1301
  /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c3d6");
1459
1302
  /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);
1460
- /* harmony import */ var _src_components_VIcon_VIcon_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("5ae4");
1461
- /* harmony import */ var _src_components_VIcon_VIcon_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_components_VIcon_VIcon_sass__WEBPACK_IMPORTED_MODULE_1__);
1462
- /* harmony import */ var _mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("7c5f");
1463
- /* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("de91");
1464
- /* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("8082");
1465
- /* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("64ad");
1466
- /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("3d78");
1467
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("ad27");
1468
- /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("9d7d");
1303
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("ad27");
1304
+ /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("3d78");
1469
1305
 
1470
- // Mixins
1471
1306
 
1472
1307
 
1308
+ /* @vue/component */
1309
+
1310
+ /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].extend().extend({
1311
+ name: 'stackable',
1312
+ data() {
1313
+ return {
1314
+ stackElement: null,
1315
+ stackExclude: null,
1316
+ stackMinZIndex: 0,
1317
+ isActive: false
1318
+ };
1319
+ },
1320
+ computed: {
1321
+ activeZIndex() {
1322
+ if (typeof window === 'undefined') return 0;
1323
+ const content = this.stackElement || this.$refs.content; // Return current zindex if not active
1324
+
1325
+ const index = !this.isActive ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[/* getZIndex */ "q"])(content) : this.getMaxZIndex(this.stackExclude || [content]) + 2;
1326
+ if (index == null) return index; // Return max current z-index (excluding self) + 2
1327
+ // (2 to leave room for an overlay below, if needed)
1328
+
1329
+ return parseInt(index);
1330
+ }
1331
+ },
1332
+ methods: {
1333
+ getMaxZIndex(exclude = []) {
1334
+ const base = this.$el; // Start with lowest allowed z-index or z-index of
1335
+ // base component's element, whichever is greater
1336
+
1337
+ const zis = [this.stackMinZIndex, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[/* getZIndex */ "q"])(base)]; // Convert the NodeList to an array to
1338
+ // prevent an Edge bug with Symbol.iterator
1339
+ // https://github.com/vuetifyjs/vuetify/issues/2146
1340
+
1341
+ const activeElements = [...document.getElementsByClassName('v-menu__content--active'), ...document.getElementsByClassName('v-dialog__content--active')]; // Get z-index for all active dialogs
1342
+
1343
+ for (let index = 0; index < activeElements.length; index++) {
1344
+ if (!exclude.includes(activeElements[index])) {
1345
+ zis.push(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[/* getZIndex */ "q"])(activeElements[index]));
1346
+ }
1347
+ }
1348
+ return Math.max(...zis);
1349
+ }
1350
+ }
1351
+ }));
1352
+
1353
+ /***/ }),
1354
+
1355
+ /***/ "9e3f":
1356
+ /***/ (function(module, exports, __webpack_require__) {
1357
+
1358
+ "use strict";
1359
+
1360
+
1361
+ const isObject = value => typeof value === 'object' && value !== null;
1362
+ const mapObjectSkip = Symbol('skip');
1363
+
1364
+ // Customized for this use-case
1365
+ const isObjectCustom = value =>
1366
+ isObject(value) &&
1367
+ !(value instanceof RegExp) &&
1368
+ !(value instanceof Error) &&
1369
+ !(value instanceof Date);
1370
+
1371
+ const mapObject = (object, mapper, options, isSeen = new WeakMap()) => {
1372
+ options = {
1373
+ deep: false,
1374
+ target: {},
1375
+ ...options
1376
+ };
1377
+
1378
+ if (isSeen.has(object)) {
1379
+ return isSeen.get(object);
1380
+ }
1381
+
1382
+ isSeen.set(object, options.target);
1383
+
1384
+ const {target} = options;
1385
+ delete options.target;
1386
+
1387
+ const mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);
1388
+ if (Array.isArray(object)) {
1389
+ return mapArray(object);
1390
+ }
1391
+
1392
+ for (const [key, value] of Object.entries(object)) {
1393
+ const mapResult = mapper(key, value, object);
1394
+
1395
+ if (mapResult === mapObjectSkip) {
1396
+ continue;
1397
+ }
1473
1398
 
1399
+ let [newKey, newValue, {shouldRecurse = true} = {}] = mapResult;
1400
+
1401
+ // Drop `__proto__` keys.
1402
+ if (newKey === '__proto__') {
1403
+ continue;
1404
+ }
1405
+
1406
+ if (options.deep && shouldRecurse && isObjectCustom(newValue)) {
1407
+ newValue = Array.isArray(newValue) ?
1408
+ mapArray(newValue) :
1409
+ mapObject(newValue, mapper, options, isSeen);
1410
+ }
1411
+
1412
+ target[newKey] = newValue;
1413
+ }
1414
+
1415
+ return target;
1416
+ };
1417
+
1418
+ module.exports = (object, mapper, options) => {
1419
+ if (!isObject(object)) {
1420
+ throw new TypeError(`Expected an object, got \`${object}\` (${typeof object})`);
1421
+ }
1422
+
1423
+ return mapObject(object, mapper, options);
1424
+ };
1425
+
1426
+ module.exports.mapObjectSkip = mapObjectSkip;
1427
+
1428
+
1429
+ /***/ }),
1430
+
1431
+ /***/ "c9b3":
1432
+ /***/ (function(module, exports, __webpack_require__) {
1433
+
1434
+ "use strict";
1435
+
1436
+ var $ = __webpack_require__("4b31");
1437
+ var uncurryThis = __webpack_require__("d244");
1438
+ var requireObjectCoercible = __webpack_require__("7768");
1439
+ var toIntegerOrInfinity = __webpack_require__("015b");
1440
+ var toString = __webpack_require__("b0b4");
1441
+ var fails = __webpack_require__("8659");
1442
+
1443
+ var charAt = uncurryThis(''.charAt);
1444
+
1445
+ var FORCED = fails(function () {
1446
+ // eslint-disable-next-line es/no-array-string-prototype-at -- safe
1447
+ return '𠮷'.at(-2) !== '\uD842';
1448
+ });
1449
+
1450
+ // `String.prototype.at` method
1451
+ // https://github.com/tc39/proposal-relative-indexing-method
1452
+ $({ target: 'String', proto: true, forced: FORCED }, {
1453
+ at: function at(index) {
1454
+ var S = toString(requireObjectCoercible(this));
1455
+ var len = S.length;
1456
+ var relativeIndex = toIntegerOrInfinity(index);
1457
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
1458
+ return (k < 0 || k >= len) ? undefined : charAt(S, k);
1459
+ }
1460
+ });
1474
1461
 
1475
- // Util
1476
1462
 
1463
+ /***/ }),
1464
+
1465
+ /***/ "cbfb":
1466
+ /***/ (function(module, exports, __webpack_require__) {
1467
+
1468
+ "use strict";
1469
+
1470
+ const mapObj = __webpack_require__("9e3f");
1471
+ const camelCase = __webpack_require__("5375");
1472
+ const QuickLru = __webpack_require__("17d8");
1473
+
1474
+ const has = (array, key) => array.some(x => {
1475
+ if (typeof x === 'string') {
1476
+ return x === key;
1477
+ }
1478
+
1479
+ x.lastIndex = 0;
1480
+ return x.test(key);
1481
+ });
1482
+
1483
+ const cache = new QuickLru({maxSize: 100000});
1484
+
1485
+ // Reproduces behavior from `map-obj`
1486
+ const isObject = value =>
1487
+ typeof value === 'object' &&
1488
+ value !== null &&
1489
+ !(value instanceof RegExp) &&
1490
+ !(value instanceof Error) &&
1491
+ !(value instanceof Date);
1492
+
1493
+ const camelCaseConvert = (input, options) => {
1494
+ if (!isObject(input)) {
1495
+ return input;
1496
+ }
1497
+
1498
+ options = {
1499
+ deep: false,
1500
+ pascalCase: false,
1501
+ ...options
1502
+ };
1503
+
1504
+ const {exclude, pascalCase, stopPaths, deep} = options;
1505
+
1506
+ const stopPathsSet = new Set(stopPaths);
1507
+
1508
+ const makeMapper = parentPath => (key, value) => {
1509
+ if (deep && isObject(value)) {
1510
+ const path = parentPath === undefined ? key : `${parentPath}.${key}`;
1511
+
1512
+ if (!stopPathsSet.has(path)) {
1513
+ value = mapObj(value, makeMapper(path));
1514
+ }
1515
+ }
1516
+
1517
+ if (!(exclude && has(exclude, key))) {
1518
+ const cacheKey = pascalCase ? `${key}_` : key;
1519
+
1520
+ if (cache.has(cacheKey)) {
1521
+ key = cache.get(cacheKey);
1522
+ } else {
1523
+ const returnValue = camelCase(key, {pascalCase, locale: false});
1524
+
1525
+ if (key.length < 100) { // Prevent abuse
1526
+ cache.set(cacheKey, returnValue);
1527
+ }
1528
+
1529
+ key = returnValue;
1530
+ }
1531
+ }
1532
+
1533
+ return [key, value];
1534
+ };
1535
+
1536
+ return mapObj(input, makeMapper(undefined));
1537
+ };
1538
+
1539
+ module.exports = (input, options) => {
1540
+ if (Array.isArray(input)) {
1541
+ return Object.keys(input).map(key => camelCaseConvert(input[key], options));
1542
+ }
1543
+
1544
+ return camelCaseConvert(input, options);
1545
+ };
1546
+
1547
+
1548
+ /***/ }),
1549
+
1550
+ /***/ "ce02":
1551
+ /***/ (function(module, exports, __webpack_require__) {
1552
+
1553
+ var getBuiltIn = __webpack_require__("a542");
1554
+
1555
+ module.exports = getBuiltIn('document', 'documentElement');
1556
+
1557
+
1558
+ /***/ }),
1559
+
1560
+ /***/ "d63e":
1561
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1562
+
1563
+ "use strict";
1564
+ /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6c21");
1565
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("ad27");
1566
+ // Utilities
1477
1567
  // Types
1478
1568
 
1479
1569
 
1570
+ /**
1571
+ * Bootable
1572
+ * @mixin
1573
+ *
1574
+ * Used to add lazy content functionality to components
1575
+ * Looks for change in "isActive" to automatically boot
1576
+ * Otherwise can be set manually
1577
+ */
1480
1578
 
1481
- var SIZE_MAP;
1482
- (function (SIZE_MAP) {
1483
- SIZE_MAP["xSmall"] = "12px";
1484
- SIZE_MAP["small"] = "16px";
1485
- SIZE_MAP["default"] = "24px";
1486
- SIZE_MAP["medium"] = "28px";
1487
- SIZE_MAP["large"] = "36px";
1488
- SIZE_MAP["xLarge"] = "40px";
1489
- })(SIZE_MAP || (SIZE_MAP = {}));
1490
- function isFontAwesome5(iconType) {
1491
- return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val));
1492
- }
1493
- function isSvgPath(icon) {
1494
- return /^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\dz]$/i.test(icon) && icon.length > 4;
1495
- }
1496
- const VIcon = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"])(_mixins_binds_attrs__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"], _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"]
1497
- /* @vue/component */).extend({
1498
- name: 'v-icon',
1579
+ /* @vue/component */
1580
+
1581
+ /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].extend().extend({
1582
+ name: 'bootable',
1499
1583
  props: {
1500
- dense: Boolean,
1501
- disabled: Boolean,
1502
- left: Boolean,
1503
- right: Boolean,
1504
- size: [Number, String],
1505
- tag: {
1506
- type: String,
1507
- required: false,
1508
- default: 'i'
1509
- }
1584
+ eager: Boolean
1510
1585
  },
1586
+ data: () => ({
1587
+ isBooted: false
1588
+ }),
1511
1589
  computed: {
1512
- medium() {
1513
- return false;
1514
- },
1515
- hasClickListener() {
1516
- return Boolean(this.listeners$.click || this.listeners$['!click']);
1590
+ hasContent() {
1591
+ return this.isBooted || this.eager || this.isActive;
1592
+ }
1593
+ },
1594
+ watch: {
1595
+ isActive() {
1596
+ this.isBooted = true;
1597
+ }
1598
+ },
1599
+ created() {
1600
+ /* istanbul ignore next */
1601
+ if ('lazy' in this.$attrs) {
1602
+ Object(_util_console__WEBPACK_IMPORTED_MODULE_0__[/* removed */ "e"])('lazy', this);
1517
1603
  }
1518
1604
  },
1519
1605
  methods: {
1520
- getIcon() {
1521
- let iconName = '';
1522
- if (this.$slots.default) iconName = this.$slots.default[0].text.trim();
1523
- return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[/* remapInternalIcon */ "x"])(this, iconName);
1524
- },
1525
- getSize() {
1526
- const sizes = {
1527
- xSmall: this.xSmall,
1528
- small: this.small,
1529
- medium: this.medium,
1530
- large: this.large,
1531
- xLarge: this.xLarge
1532
- };
1533
- const explicitSize = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[/* keys */ "t"])(sizes).find(key => sizes[key]);
1534
- return explicitSize && SIZE_MAP[explicitSize] || Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[/* convertToUnit */ "g"])(this.size);
1606
+ showLazyContent(content) {
1607
+ return this.hasContent && content ? content() : [this.$createElement()];
1608
+ }
1609
+ }
1610
+ }));
1611
+
1612
+ /***/ }),
1613
+
1614
+ /***/ "dcde":
1615
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1616
+
1617
+ "use strict";
1618
+ /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c3d6");
1619
+ /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);
1620
+ /* harmony import */ var _src_components_VChip_VChip_sass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("8e6b");
1621
+ /* harmony import */ var _src_components_VChip_VChip_sass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_components_VChip_VChip_sass__WEBPACK_IMPORTED_MODULE_1__);
1622
+ /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("9d7d");
1623
+ /* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("177c");
1624
+ /* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("36e1");
1625
+ /* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("de91");
1626
+ /* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("901a");
1627
+ /* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("64ad");
1628
+ /* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("646d");
1629
+ /* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("facc");
1630
+ /* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("8082");
1631
+ /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("6c21");
1632
+
1633
+ // Styles
1634
+
1635
+ // Components
1636
+
1637
+
1638
+ // Mixins
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+ // Utilities
1646
+
1647
+
1648
+ /* @vue/component */
1649
+
1650
+ /* harmony default export */ __webpack_exports__["a"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"], _mixins_routable__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_6__[/* factory */ "a"])('chipGroup'), Object(_mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__[/* factory */ "b"])('inputValue')).extend({
1651
+ name: 'v-chip',
1652
+ props: {
1653
+ active: {
1654
+ type: Boolean,
1655
+ default: true
1656
+ },
1657
+ activeClass: {
1658
+ type: String,
1659
+ default() {
1660
+ if (!this.chipGroup) return '';
1661
+ return this.chipGroup.activeClass;
1662
+ }
1535
1663
  },
1536
- // Component data for both font icon and SVG wrapper span
1537
- getDefaultData() {
1664
+ close: Boolean,
1665
+ closeIcon: {
1666
+ type: String,
1667
+ default: '$delete'
1668
+ },
1669
+ closeLabel: {
1670
+ type: String,
1671
+ default: '$vuetify.close'
1672
+ },
1673
+ disabled: Boolean,
1674
+ draggable: Boolean,
1675
+ filter: Boolean,
1676
+ filterIcon: {
1677
+ type: String,
1678
+ default: '$complete'
1679
+ },
1680
+ label: Boolean,
1681
+ link: Boolean,
1682
+ outlined: Boolean,
1683
+ pill: Boolean,
1684
+ tag: {
1685
+ type: String,
1686
+ default: 'span'
1687
+ },
1688
+ textColor: String,
1689
+ value: null
1690
+ },
1691
+ data: () => ({
1692
+ proxyClass: 'v-chip--active'
1693
+ }),
1694
+ computed: {
1695
+ classes() {
1538
1696
  return {
1539
- staticClass: 'v-icon notranslate',
1540
- class: {
1541
- 'v-icon--disabled': this.disabled,
1542
- 'v-icon--left': this.left,
1543
- 'v-icon--link': this.hasClickListener,
1544
- 'v-icon--right': this.right,
1545
- 'v-icon--dense': this.dense
1546
- },
1547
- attrs: {
1548
- 'aria-hidden': !this.hasClickListener,
1549
- disabled: this.hasClickListener && this.disabled,
1550
- type: this.hasClickListener ? 'button' : undefined,
1551
- ...this.attrs$
1552
- },
1553
- on: this.listeners$
1697
+ 'v-chip': true,
1698
+ ..._mixins_routable__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].options.computed.classes.call(this),
1699
+ 'v-chip--clickable': this.isClickable,
1700
+ 'v-chip--disabled': this.disabled,
1701
+ 'v-chip--draggable': this.draggable,
1702
+ 'v-chip--label': this.label,
1703
+ 'v-chip--link': this.isLink,
1704
+ 'v-chip--no-color': !this.color,
1705
+ 'v-chip--outlined': this.outlined,
1706
+ 'v-chip--pill': this.pill,
1707
+ 'v-chip--removable': this.hasClose,
1708
+ ...this.themeClasses,
1709
+ ...this.sizeableClasses,
1710
+ ...this.groupClasses
1554
1711
  };
1555
1712
  },
1556
- getSvgWrapperData() {
1557
- const fontSize = this.getSize();
1558
- const wrapperData = {
1559
- ...this.getDefaultData(),
1560
- style: fontSize ? {
1561
- fontSize,
1562
- height: fontSize,
1563
- width: fontSize
1564
- } : undefined
1565
- };
1566
- this.applyColors(wrapperData);
1567
- return wrapperData;
1713
+ hasClose() {
1714
+ return Boolean(this.close);
1568
1715
  },
1569
- applyColors(data) {
1570
- data.class = {
1571
- ...data.class,
1572
- ...this.themeClasses
1573
- };
1574
- this.setTextColor(this.color, data);
1575
- },
1576
- renderFontIcon(icon, h) {
1577
- const newChildren = [];
1578
- const data = this.getDefaultData();
1579
- let iconType = 'material-icons'; // Material Icon delimiter is _
1580
- // https://material.io/icons/
1581
-
1582
- const delimiterIndex = icon.indexOf('-');
1583
- const isMaterialIcon = delimiterIndex <= -1;
1584
- if (isMaterialIcon) {
1585
- // Material icon uses ligatures.
1586
- newChildren.push(icon);
1587
- } else {
1588
- iconType = icon.slice(0, delimiterIndex);
1589
- if (isFontAwesome5(iconType)) iconType = '';
1716
+ isClickable() {
1717
+ return Boolean(_mixins_routable__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].options.computed.isClickable.call(this) || this.chipGroup);
1718
+ }
1719
+ },
1720
+ created() {
1721
+ const breakingProps = [['outline', 'outlined'], ['selected', 'input-value'], ['value', 'active'], ['@input', '@active.sync']];
1722
+ /* istanbul ignore next */
1723
+
1724
+ breakingProps.forEach(([original, replacement]) => {
1725
+ if (this.$attrs.hasOwnProperty(original)) Object(_util_console__WEBPACK_IMPORTED_MODULE_11__[/* breaking */ "a"])(original, replacement, this);
1726
+ });
1727
+ },
1728
+ methods: {
1729
+ click(e) {
1730
+ this.$emit('click', e);
1731
+ this.chipGroup && this.toggle();
1732
+ },
1733
+ genFilter() {
1734
+ const children = [];
1735
+ if (this.isActive) {
1736
+ children.push(this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"], {
1737
+ staticClass: 'v-chip__filter',
1738
+ props: {
1739
+ left: true
1740
+ }
1741
+ }, this.filterIcon));
1590
1742
  }
1591
- data.class[iconType] = true;
1592
- data.class[icon] = !isMaterialIcon;
1593
- const fontSize = this.getSize();
1594
- if (fontSize) data.style = {
1595
- fontSize
1596
- };
1597
- this.applyColors(data);
1598
- return h(this.hasClickListener ? 'button' : this.tag, data, newChildren);
1743
+ return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_3__[/* VExpandXTransition */ "b"], children);
1599
1744
  },
1600
- renderSvgIcon(icon, h) {
1601
- const svgData = {
1602
- class: 'v-icon__svg',
1603
- attrs: {
1604
- xmlns: 'http://www.w3.org/2000/svg',
1605
- viewBox: '0 0 24 24',
1606
- role: 'img',
1607
- 'aria-hidden': true
1608
- }
1609
- };
1610
- const size = this.getSize();
1611
- if (size) {
1612
- svgData.style = {
1613
- fontSize: size,
1614
- height: size,
1615
- width: size
1616
- };
1617
- }
1618
- return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [h('svg', svgData, [h('path', {
1745
+ genClose() {
1746
+ return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"], {
1747
+ staticClass: 'v-chip__close',
1748
+ props: {
1749
+ right: true,
1750
+ size: 18
1751
+ },
1619
1752
  attrs: {
1620
- d: icon
1753
+ 'aria-label': this.$vuetify.lang.t(this.closeLabel)
1754
+ },
1755
+ on: {
1756
+ click: e => {
1757
+ e.stopPropagation();
1758
+ e.preventDefault();
1759
+ this.$emit('click:close');
1760
+ this.$emit('update:active', false);
1761
+ }
1621
1762
  }
1622
- })])]);
1763
+ }, this.closeIcon);
1623
1764
  },
1624
- renderSvgIconComponent(icon, h) {
1625
- const data = {
1626
- class: {
1627
- 'v-icon__component': true
1628
- }
1629
- };
1630
- const size = this.getSize();
1631
- if (size) {
1632
- data.style = {
1633
- fontSize: size,
1634
- height: size,
1635
- width: size
1636
- };
1637
- }
1638
- this.applyColors(data);
1639
- const component = icon.component;
1640
- data.props = icon.props;
1641
- data.nativeOn = data.on;
1642
- return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [h(component, data)]);
1765
+ genContent() {
1766
+ return this.$createElement('span', {
1767
+ staticClass: 'v-chip__content'
1768
+ }, [this.filter && this.genFilter(), this.$slots.default, this.hasClose && this.genClose()]);
1643
1769
  }
1644
1770
  },
1645
1771
  render(h) {
1646
- const icon = this.getIcon();
1647
- if (typeof icon === 'string') {
1648
- if (isSvgPath(icon)) {
1649
- return this.renderSvgIcon(icon, h);
1650
- }
1651
- return this.renderFontIcon(icon, h);
1652
- }
1653
- return this.renderSvgIconComponent(icon, h);
1654
- }
1655
- });
1656
- /* harmony default export */ __webpack_exports__["a"] = (vue__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].extend({
1657
- name: 'v-icon',
1658
- $_wrapperFor: VIcon,
1659
- functional: true,
1660
- render(h, {
1661
- data,
1662
- children
1663
- }) {
1664
- let iconName = ''; // Support usage of v-text and v-html
1665
-
1666
- if (data.domProps) {
1667
- iconName = data.domProps.textContent || data.domProps.innerHTML || iconName; // Remove nodes so it doesn't
1668
- // overwrite our changes
1669
-
1670
- delete data.domProps.textContent;
1671
- delete data.domProps.innerHTML;
1672
- }
1673
- return h(VIcon, data, iconName ? [iconName] : children);
1772
+ const children = [this.genContent()];
1773
+ let {
1774
+ tag,
1775
+ data
1776
+ } = this.generateRouteLink();
1777
+ data.attrs = {
1778
+ ...data.attrs,
1779
+ draggable: this.draggable ? 'true' : undefined,
1780
+ tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs.tabindex
1781
+ };
1782
+ data.directives.push({
1783
+ name: 'show',
1784
+ value: this.active
1785
+ });
1786
+ data = this.setBackgroundColor(this.color, data);
1787
+ const color = this.textColor || this.outlined && this.color;
1788
+ return h(tag, this.setTextColor(color, data), children);
1674
1789
  }
1675
1790
  }));
1676
1791
 
1677
1792
  /***/ }),
1678
1793
 
1679
- /***/ "ff7f":
1794
+ /***/ "de39":
1680
1795
  /***/ (function(module, exports, __webpack_require__) {
1681
1796
 
1682
- // extracted by mini-css-extract-plugin
1797
+ var DESCRIPTORS = __webpack_require__("1616");
1798
+ var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__("7ded");
1799
+ var definePropertyModule = __webpack_require__("3ce5");
1800
+ var anObject = __webpack_require__("50b4");
1801
+ var toIndexedObject = __webpack_require__("52b6");
1802
+ var objectKeys = __webpack_require__("e23e");
1803
+
1804
+ // `Object.defineProperties` method
1805
+ // https://tc39.es/ecma262/#sec-object.defineproperties
1806
+ // eslint-disable-next-line es/no-object-defineproperties -- safe
1807
+ exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
1808
+ anObject(O);
1809
+ var props = toIndexedObject(Properties);
1810
+ var keys = objectKeys(Properties);
1811
+ var length = keys.length;
1812
+ var index = 0;
1813
+ var key;
1814
+ while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
1815
+ return O;
1816
+ };
1817
+
1818
+
1819
+ /***/ }),
1820
+
1821
+ /***/ "e23e":
1822
+ /***/ (function(module, exports, __webpack_require__) {
1823
+
1824
+ var internalObjectKeys = __webpack_require__("6a9b");
1825
+ var enumBugKeys = __webpack_require__("7edb");
1826
+
1827
+ // `Object.keys` method
1828
+ // https://tc39.es/ecma262/#sec-object.keys
1829
+ // eslint-disable-next-line es/no-object-keys -- safe
1830
+ module.exports = Object.keys || function keys(O) {
1831
+ return internalObjectKeys(O, enumBugKeys);
1832
+ };
1833
+
1834
+
1835
+ /***/ }),
1836
+
1837
+ /***/ "eeb4":
1838
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1839
+
1840
+ "use strict";
1841
+ /* harmony import */ var _bootable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d63e");
1842
+ /* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3d78");
1843
+ /* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("9d7d");
1844
+ /* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("6c21");
1845
+ // Mixins
1846
+ // Utilities
1847
+
1848
+
1849
+
1850
+
1851
+ function validateAttachTarget(val) {
1852
+ const type = typeof val;
1853
+ if (type === 'boolean' || type === 'string') return true;
1854
+ return val.nodeType === Node.ELEMENT_NODE;
1855
+ }
1856
+ function removeActivator(activator) {
1857
+ activator.forEach(node => {
1858
+ node.elm && node.elm.parentNode && node.elm.parentNode.removeChild(node.elm);
1859
+ });
1860
+ }
1861
+ /* @vue/component */
1862
+
1863
+ /* harmony default export */ __webpack_exports__["a"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_bootable__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]).extend({
1864
+ name: 'detachable',
1865
+ props: {
1866
+ attach: {
1867
+ default: false,
1868
+ validator: validateAttachTarget
1869
+ },
1870
+ contentClass: {
1871
+ type: String,
1872
+ default: ''
1873
+ }
1874
+ },
1875
+ data: () => ({
1876
+ activatorNode: null,
1877
+ hasDetached: false
1878
+ }),
1879
+ watch: {
1880
+ attach() {
1881
+ this.hasDetached = false;
1882
+ this.initDetach();
1883
+ },
1884
+ hasContent() {
1885
+ this.$nextTick(this.initDetach);
1886
+ }
1887
+ },
1888
+ beforeMount() {
1889
+ this.$nextTick(() => {
1890
+ if (this.activatorNode) {
1891
+ const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];
1892
+ activator.forEach(node => {
1893
+ if (!node.elm) return;
1894
+ if (!this.$el.parentNode) return;
1895
+ const target = this.$el === this.$el.parentNode.firstChild ? this.$el : this.$el.nextSibling;
1896
+ this.$el.parentNode.insertBefore(node.elm, target);
1897
+ });
1898
+ }
1899
+ });
1900
+ },
1901
+ mounted() {
1902
+ this.hasContent && this.initDetach();
1903
+ },
1904
+ deactivated() {
1905
+ this.isActive = false;
1906
+ },
1907
+ beforeDestroy() {
1908
+ if (this.$refs.content && this.$refs.content.parentNode) {
1909
+ this.$refs.content.parentNode.removeChild(this.$refs.content);
1910
+ }
1911
+ },
1912
+ destroyed() {
1913
+ if (this.activatorNode) {
1914
+ const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];
1915
+ if (this.$el.isConnected) {
1916
+ // Component has been destroyed but the element still exists, we must be in a transition
1917
+ // Wait for the transition to finish before cleaning up the detached activator
1918
+ const observer = new MutationObserver(list => {
1919
+ if (list.some(record => Array.from(record.removedNodes).includes(this.$el))) {
1920
+ observer.disconnect();
1921
+ removeActivator(activator);
1922
+ }
1923
+ });
1924
+ observer.observe(this.$el.parentNode, {
1925
+ subtree: false,
1926
+ childList: true
1927
+ });
1928
+ } else {
1929
+ removeActivator(activator);
1930
+ }
1931
+ }
1932
+ },
1933
+ methods: {
1934
+ getScopeIdAttrs() {
1935
+ const scopeId = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[/* getObjectValueByPath */ "m"])(this.$vnode, 'context.$options._scopeId');
1936
+ return scopeId && {
1937
+ [scopeId]: ''
1938
+ };
1939
+ },
1940
+ initDetach() {
1941
+ if (this._isDestroyed || !this.$refs.content || this.hasDetached ||
1942
+ // Leave menu in place if attached
1943
+ // and dev has not changed target
1944
+ this.attach === '' ||
1945
+ // If used as a boolean prop (<v-menu attach>)
1946
+ this.attach === true ||
1947
+ // If bound to a boolean (<v-menu :attach="true">)
1948
+ this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))
1949
+ ) return;
1950
+ let target;
1951
+ if (this.attach === false) {
1952
+ // Default, detach to app
1953
+ target = document.querySelector('[data-app]');
1954
+ } else if (typeof this.attach === 'string') {
1955
+ // CSS selector
1956
+ target = document.querySelector(this.attach);
1957
+ } else {
1958
+ // DOM Element
1959
+ target = this.attach;
1960
+ }
1961
+ if (!target) {
1962
+ Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[/* consoleWarn */ "c"])(`Unable to locate target ${this.attach || '[data-app]'}`, this);
1963
+ return;
1964
+ }
1965
+ target.appendChild(this.$refs.content);
1966
+ this.hasDetached = true;
1967
+ }
1968
+ }
1969
+ }));
1683
1970
 
1684
1971
  /***/ })
1685
1972