@dimailn/vuetify 2.7.2-alpha46 → 2.7.2-alpha47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/vuetify.js +98 -96
  2. package/dist/vuetify.js.map +1 -1
  3. package/dist/vuetify.min.css +1 -1
  4. package/dist/vuetify.min.js +2 -2
  5. package/es5/components/VIcon/VIcon.js +73 -93
  6. package/es5/components/VIcon/VIcon.js.map +1 -1
  7. package/es5/components/VMenu/VMenu.js +3 -1
  8. package/es5/components/VMenu/VMenu.js.map +1 -1
  9. package/es5/framework.js +1 -1
  10. package/lib/components/VIcon/VIcon.js +50 -96
  11. package/lib/components/VIcon/VIcon.js.map +1 -1
  12. package/lib/components/VMenu/VMenu.js +8 -5
  13. package/lib/components/VMenu/VMenu.js.map +1 -1
  14. package/lib/framework.js +1 -1
  15. package/package.json +1 -1
  16. package/src/components/VAlert/__tests__/__snapshots__/VAlert.spec.ts.snap +2 -2
  17. package/src/components/VAppBar/__tests__/__snapshots__/VAppBarNavIcon.spec.ts.snap +1 -1
  18. package/src/components/VBanner/__tests__/__snapshots__/VBanner.spec.ts.snap +1 -1
  19. package/src/components/VCheckbox/__tests__/__snapshots__/VCheckbox.spec.ts.snap +16 -13
  20. package/src/components/VChip/__tests__/__snapshots__/VChip.spec.ts.snap +5 -0
  21. package/src/components/VColorPicker/__tests__/__snapshots__/VColorPicker.spec.ts.snap +33 -24
  22. package/src/components/VColorPicker/__tests__/__snapshots__/VColorPickerEdit.spec.ts.snap +10 -5
  23. package/src/components/VDataIterator/__tests__/__snapshots__/VDataFooter.spec.ts.snap +50 -29
  24. package/src/components/VDataIterator/__tests__/__snapshots__/VDataIterator.spec.ts.snap +38 -23
  25. package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +670 -438
  26. package/src/components/VDataTable/__tests__/__snapshots__/VDataTableHeader.spec.ts.snap +88 -53
  27. package/src/components/VDataTable/mixins/__tests__/__snapshots__/header.spec.ts.snap +4 -4
  28. package/src/components/VDatePicker/__tests__/__snapshots__/VDatePicker.date.spec.ts.snap +68 -0
  29. package/src/components/VDatePicker/__tests__/__snapshots__/VDatePicker.month.spec.ts.snap +40 -0
  30. package/src/components/VDatePicker/__tests__/__snapshots__/VDatePickerHeader.spec.ts.snap +40 -0
  31. package/src/components/VDatePicker/__tests__/__snapshots__/VDatePickerTitle.spec.ts.snap +4 -0
  32. package/src/components/VExpansionPanel/__tests__/__snapshots__/VExpansionPanel.spec.ts.snap +1 -1
  33. package/src/components/VFileInput/__tests__/__snapshots__/VFileInput.spec.ts.snap +43 -43
  34. package/src/components/VIcon/VIcon.ts +50 -98
  35. package/src/components/VIcon/__tests__/VIcon.spec.ts +26 -5
  36. package/src/components/VIcon/__tests__/__snapshots__/VIcon.spec.ts.snap +11 -4
  37. package/src/components/VInput/__tests__/__snapshots__/VInput.spec.ts.snap +18 -2
  38. package/src/components/VList/__tests__/__snapshots__/VListGroup.spec.ts.snap +1 -1
  39. package/src/components/VMenu/VMenu.ts +10 -7
  40. package/src/components/VOverflowBtn/__tests__/__snapshots__/VOverflowBtn.spec.ts.snap +10 -10
  41. package/src/components/VPagination/__tests__/__snapshots__/VPagination.spec.ts.snap +16 -16
  42. package/src/components/VRadioGroup/__tests__/__snapshots__/VRadio.spec.ts.snap +13 -11
  43. package/src/components/VRadioGroup/__tests__/__snapshots__/VRadioGroup.spec.ts.snap +1 -1
  44. package/src/components/VSelect/__tests__/__snapshots__/VSelect.spec.ts.snap +19 -7
  45. package/src/components/VSelect/__tests__/__snapshots__/VSelect2.spec.ts.snap +29 -9
  46. package/src/components/VSelect/__tests__/__snapshots__/VSelect3.spec.ts.snap +6 -2
  47. package/src/components/VStepper/__tests__/__snapshots__/VStepperStep.spec.ts.snap +6 -5
  48. package/src/components/VTextField/__tests__/__snapshots__/VTextField.spec.ts.snap +14 -12
  49. package/src/components/VTimeline/__tests__/__snapshots__/VTimelineItem.spec.ts.snap +2 -1
  50. package/src/components/VTreeview/__tests__/__snapshots__/VTreeview.spec.ts.snap +42 -21
  51. package/src/components/VTreeview/__tests__/__snapshots__/VTreeviewNode.spec.ts.snap +5 -4
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.VIconInternal = void 0;
6
+ exports.default = void 0;
7
7
 
8
8
  require("../../../src/components/VIcon/VIcon.sass");
9
9
 
@@ -29,6 +29,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
29
29
 
30
30
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
31
 
32
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
33
+
34
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
35
+
36
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
37
+
32
38
  var SIZE_MAP;
33
39
 
34
40
  (function (SIZE_MAP) {
@@ -50,13 +56,32 @@ function isSvgPath(icon) {
50
56
  return /^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\dz]$/i.test(icon) && icon.length > 4;
51
57
  }
52
58
 
53
- function classesToString(classObj) {
54
- return Object.keys(classObj).filter(function (key) {
55
- return classObj[key];
56
- }).join(' ');
59
+ function readFirstText(node) {
60
+ if (!node) return '';
61
+ if (typeof node === 'string') return node.trim();
62
+ if (typeof node.children === 'string') return node.children.trim();
63
+
64
+ if (Array.isArray(node.children)) {
65
+ var _iterator = _createForOfIteratorHelper(node.children),
66
+ _step;
67
+
68
+ try {
69
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
70
+ var child = _step.value;
71
+ var text = readFirstText(child);
72
+ if (text) return text;
73
+ }
74
+ } catch (err) {
75
+ _iterator.e(err);
76
+ } finally {
77
+ _iterator.f();
78
+ }
79
+ }
80
+
81
+ return '';
57
82
  }
58
83
 
59
- var VIconInternal = (0, _mixins.default)(_bindsAttrs.default, _colorable.default, _sizeable.default, _themeable.default
84
+ var _default2 = (0, _mixins.default)(_bindsAttrs.default, _colorable.default, _sizeable.default, _themeable.default
60
85
  /* @vue/component */
61
86
  ).extend({
62
87
  name: 'v-icon',
@@ -70,7 +95,9 @@ var VIconInternal = (0, _mixins.default)(_bindsAttrs.default, _colorable.default
70
95
  type: String,
71
96
  required: false,
72
97
  default: 'i'
73
- }
98
+ },
99
+ textContent: String,
100
+ innerHTML: String
74
101
  },
75
102
  computed: {
76
103
  medium: function medium() {
@@ -82,20 +109,27 @@ var VIconInternal = (0, _mixins.default)(_bindsAttrs.default, _colorable.default
82
109
  },
83
110
  methods: {
84
111
  getIcon: function getIcon() {
85
- var iconName = '';
112
+ var _a, _b;
86
113
 
87
- if (this.$slots.default) {
88
- var slotChildren = this.$slots.default();
114
+ var iconName = '';
115
+ if (this.textContent) iconName = this.textContent.trim();else if (this.innerHTML) iconName = this.innerHTML.trim();else {
116
+ var slotChildren = ((_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
89
117
 
90
- if (slotChildren && slotChildren[0]) {
91
- var children = slotChildren[0].children;
118
+ var _iterator2 = _createForOfIteratorHelper(slotChildren),
119
+ _step2;
92
120
 
93
- if (typeof children === 'string') {
94
- iconName = children.trim();
121
+ try {
122
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
123
+ var child = _step2.value;
124
+ iconName = readFirstText(child);
125
+ if (iconName) break;
95
126
  }
127
+ } catch (err) {
128
+ _iterator2.e(err);
129
+ } finally {
130
+ _iterator2.f();
96
131
  }
97
132
  }
98
-
99
133
  return (0, _helpers.remapInternalIcon)(this, iconName);
100
134
  },
101
135
  getSize: function getSize() {
@@ -134,34 +168,26 @@ var VIconInternal = (0, _mixins.default)(_bindsAttrs.default, _colorable.default
134
168
  return data;
135
169
  },
136
170
  applyColors: function applyColors(data) {
171
+ data.class = (0, _helpers.normalizeClasses)([data.class, this.themeClasses]);
137
172
  this.setTextColor(this.color, data);
138
173
  },
139
174
  getSvgWrapperData: function getSvgWrapperData() {
140
175
  var fontSize = this.getSize();
141
- var defaultData = this.getDefaultData();
142
- var normalizedClasses = (0, _helpers.normalizeClasses)([defaultData.class, this.themeClasses]);
143
176
 
144
- var wrapperData = _objectSpread({
145
- class: classesToString(normalizedClasses),
146
- 'aria-hidden': defaultData['aria-hidden'],
147
- type: defaultData.type,
177
+ var wrapperData = _objectSpread(_objectSpread({}, this.getDefaultData()), {}, {
148
178
  style: fontSize ? {
149
179
  fontSize: fontSize,
150
180
  height: fontSize,
151
181
  width: fontSize
152
182
  } : undefined
153
- }, this.listeners$);
154
-
155
- if (this.hasClickListener && this.disabled) {
156
- wrapperData.disabled = true;
157
- }
183
+ });
158
184
 
159
185
  this.applyColors(wrapperData);
160
186
  return wrapperData;
161
187
  },
162
188
  renderFontIcon: function renderFontIcon(icon) {
163
189
  var newChildren = [];
164
- var defaultData = this.getDefaultData();
190
+ var data = this.getDefaultData();
165
191
  var iconType = 'material-icons'; // Material Icon delimiter is _
166
192
  // https://material.io/icons/
167
193
 
@@ -174,34 +200,17 @@ var VIconInternal = (0, _mixins.default)(_bindsAttrs.default, _colorable.default
174
200
  } else {
175
201
  iconType = icon.slice(0, delimiterIndex);
176
202
  if (isFontAwesome5(iconType)) iconType = '';
177
- } // Создаем объект классов для иконки
178
-
179
-
180
- var iconClasses = _defineProperty({}, iconType, true);
181
-
182
- if (!isMaterialIcon) {
183
- iconClasses[icon] = true;
184
203
  }
185
204
 
186
- var allClasses = (0, _helpers.normalizeClasses)([defaultData.class, this.themeClasses, iconClasses]);
205
+ data.class[iconType] = true;
206
+ data.class[icon] = !isMaterialIcon;
187
207
  var fontSize = this.getSize();
188
-
189
- var fontData = _objectSpread({
190
- class: classesToString(allClasses),
191
- 'aria-hidden': defaultData['aria-hidden'],
192
- type: defaultData.type,
193
- style: fontSize ? {
194
- fontSize: fontSize
195
- } : undefined
196
- }, this.listeners$);
197
-
198
- if (this.hasClickListener && this.disabled) {
199
- fontData.disabled = true;
200
- }
201
-
202
- this.applyColors(fontData);
208
+ if (fontSize) data.style = {
209
+ fontSize: fontSize
210
+ };
211
+ this.applyColors(data);
203
212
  var el = this.hasClickListener ? 'button' : (0, _helpers.getTagValue)(this.tag);
204
- return typeof el === 'string' ? (0, _vue.h)(el, fontData, newChildren) : (0, _vue.h)(el, fontData, {
213
+ return typeof el === 'string' ? (0, _vue.h)(el, data, newChildren) : (0, _vue.h)(el, data, {
205
214
  default: function _default() {
206
215
  return newChildren;
207
216
  }
@@ -230,24 +239,27 @@ var VIconInternal = (0, _mixins.default)(_bindsAttrs.default, _colorable.default
230
239
  })])]);
231
240
  },
232
241
  renderSvgIconComponent: function renderSvgIconComponent(icon) {
242
+ var data = {
243
+ class: {
244
+ 'v-icon__component': true
245
+ }
246
+ };
233
247
  var size = this.getSize();
234
- var componentClasses = (0, _helpers.normalizeClasses)([{
235
- 'v-icon__component': true
236
- }, this.themeClasses]);
237
248
 
238
- var componentData = _objectSpread({
239
- class: classesToString(componentClasses),
240
- style: size ? {
249
+ if (size) {
250
+ data.style = {
241
251
  fontSize: size,
242
252
  height: size,
243
253
  width: size
244
- } : undefined
245
- }, icon.props);
254
+ };
255
+ }
246
256
 
247
- this.applyColors(componentData);
257
+ this.applyColors(data);
258
+ var component = icon.component;
259
+ Object.assign(data, icon.props);
248
260
  return (0, _vue.h)(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), {
249
261
  default: function _default() {
250
- return [(0, _vue.h)(icon.component, componentData)];
262
+ return [(0, _vue.h)(component, data)];
251
263
  }
252
264
  });
253
265
  }
@@ -266,38 +278,6 @@ var VIconInternal = (0, _mixins.default)(_bindsAttrs.default, _colorable.default
266
278
  return this.renderSvgIconComponent(icon);
267
279
  }
268
280
  });
269
- exports.VIconInternal = VIconInternal;
270
-
271
- var _default2 = (0, _vue.defineComponent)({
272
- name: 'v-icon',
273
- $_wrapperFor: VIconInternal,
274
- functional: true,
275
- mounted: function mounted() {
276
- this.$el.innerHTML = '';
277
- },
278
- render: function render() {
279
- var _this = this;
280
-
281
- var data = _objectSpread({}, this.$attrs); // console.log(children && children[0]?.children)
282
-
283
-
284
- return (0, _vue.h)(VIconInternal, data, {
285
- default: function _default() {
286
- var _a, _b, _c, _d;
287
-
288
- var iconName = ''; // Support usage of v-text and v-html
289
- // if (data.domProps) {
290
-
291
- if ((_a = _this.$.vnode.props) === null || _a === void 0 ? void 0 : _a.textContent) {
292
- iconName = _this.$.vnode.props.textContent || _this.$.vnode.props.innerHTML || iconName;
293
- }
294
-
295
- var children = (_c = (_b = _this.$slots).default) === null || _c === void 0 ? void 0 : _c.call(_b);
296
- return iconName ? [iconName] : children && ((_d = children[0]) === null || _d === void 0 ? void 0 : _d.children);
297
- }
298
- });
299
- }
300
- });
301
281
 
302
282
  exports.default = _default2;
303
283
  //# sourceMappingURL=VIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VIcon/VIcon.ts"],"names":[],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AACA;;AACA;;AAGA;;AAGA;;AAEA;;;;;;;;;;AAIA,IAAK,QAAL;;AAAA,CAAA,UAAK,QAAL,EAAa;AACX,EAAA,QAAA,CAAA,QAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,OAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,SAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,QAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,OAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,QAAA,CAAA,GAAA,MAAA;AACD,CAPD,EAAK,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAb;;AASA,SAAS,cAAT,CAAyB,QAAzB,EAAyC;AACvC,SAAO,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,IAA3C,CAAgD,UAAA,GAAG;AAAA,WAAI,QAAQ,CAAC,QAAT,CAAkB,GAAlB,CAAJ;AAAA,GAAnD,CAAP;AACD;;AAED,SAAS,SAAT,CAAoB,IAApB,EAAgC;AAC9B,SAAQ,0CAA0C,IAA1C,CAA+C,IAA/C,KAAwD,UAAU,IAAV,CAAe,IAAf,CAAxD,IAAgF,IAAI,CAAC,MAAL,GAAc,CAAtG;AACD;;AAED,SAAS,eAAT,CAA0B,QAA1B,EAA2D;AACzD,SAAO,MAAM,CAAC,IAAP,CAAY,QAAZ,EAAsB,MAAtB,CAA6B,UAAA,GAAG;AAAA,WAAI,QAAQ,CAAC,GAAD,CAAZ;AAAA,GAAhC,EAAmD,IAAnD,CAAwD,GAAxD,CAAP;AACD;;AAEM,IAAM,aAAa,GAAG,qBAC3B,mBAD2B,EAE3B,kBAF2B,EAG3B,iBAH2B,EAI3B;AACA;AAL2B,EAM3B,MAN2B,CAMpB;AACP,EAAA,IAAI,EAAE,QADC;AAGP,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE,OADF;AAEL,IAAA,QAAQ,EAAE,OAFL;AAGL,IAAA,IAAI,EAAE,OAHD;AAIL,IAAA,KAAK,EAAE,OAJF;AAKL,IAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CALD;AAML,IAAA,GAAG,EAAE;AACH,MAAA,IAAI,EAAE,MADH;AAEH,MAAA,QAAQ,EAAE,KAFP;AAGH,MAAA,OAAO,EAAE;AAHN;AANA,GAHA;AAgBP,EAAA,QAAQ,EAAE;AACR,IAAA,MADQ,oBACF;AACJ,aAAO,KAAP;AACD,KAHO;AAIR,IAAA,gBAJQ,8BAIQ;AACd,aAAO,OAAO,CACZ,KAAK,UAAL,CAAgB,OADJ,CAAd;AAGD;AARO,GAhBH;AA2BP,EAAA,OAAO,EAAE;AACP,IAAA,OADO,qBACA;AACL,UAAI,QAAQ,GAAG,EAAf;;AACA,UAAI,KAAK,MAAL,CAAY,OAAhB,EAAyB;AACvB,YAAM,YAAY,GAAG,KAAK,MAAL,CAAY,OAAZ,EAArB;;AACA,YAAI,YAAY,IAAI,YAAY,CAAC,CAAD,CAAhC,EAAqC;AACnC,cAAM,QAAQ,GAAG,YAAY,CAAC,CAAD,CAAZ,CAAgB,QAAjC;;AACA,cAAI,OAAO,QAAP,KAAoB,QAAxB,EAAkC;AAChC,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAT,EAAX;AACD;AACF;AACF;;AACD,aAAO,gCAAkB,IAAlB,EAAwB,QAAxB,CAAP;AACD,KAbM;AAcP,IAAA,OAdO,qBAcA;AACL,UAAM,KAAK,GAAG;AACZ,QAAA,MAAM,EAAE,KAAK,MADD;AAEZ,QAAA,KAAK,EAAE,KAAK,KAFA;AAGZ,QAAA,MAAM,EAAE,KAAK,MAHD;AAIZ,QAAA,KAAK,EAAE,KAAK,KAJA;AAKZ,QAAA,MAAM,EAAE,KAAK;AALD,OAAd;AAQA,UAAM,YAAY,GAAG,mBAAK,KAAL,EAAY,IAAZ,CAAiB,UAAA,GAAG;AAAA,eAAI,KAAK,CAAC,GAAD,CAAT;AAAA,OAApB,CAArB;AAEA,aACG,YAAY,IAAI,QAAQ,CAAC,YAAD,CAAzB,IAA4C,4BAAc,KAAK,IAAnB,CAD9C;AAGD,KA5BM;AA6BP;AACA,IAAA,cA9BO,4BA8BO;AACZ,UAAM,IAAI;AACR,QAAA,KAAK,EAAE;AACL,8BAAoB,KAAK,QADpB;AAEL,0BAAgB,KAAK,IAFhB;AAGL,0BAAgB,KAAK,gBAHhB;AAIL,2BAAiB,KAAK,KAJjB;AAKL,2BAAiB,KAAK,KALjB;AAML,oBAAU,IANL;AAOL,UAAA,WAAW,EAAE;AAPR,SADC;AAUR,uBAAe,CAAC,KAAK,gBAVb;AAWR,QAAA,IAAI,EAAE,KAAK,gBAAL,GAAwB,QAAxB,GAAmC;AAXjC,SAaL,KAAK,UAbA,CAAV;;AAgBA,UAAI,KAAK,gBAAL,IAAyB,KAAK,QAAlC,EAA4C;AAC1C,QAAA,IAAI,CAAC,QAAL,GAAgB,IAAhB;AACD;;AACD,aAAO,IAAP;AACD,KAnDM;AAoDP,IAAA,WApDO,uBAoDM,IApDN,EAoDe;AACpB,WAAK,YAAL,CAAkB,KAAK,KAAvB,EAA8B,IAA9B;AACD,KAtDM;AAuDP,IAAA,iBAvDO,+BAuDU;AACf,UAAM,QAAQ,GAAG,KAAK,OAAL,EAAjB;AAEA,UAAM,WAAW,GAAG,KAAK,cAAL,EAApB;AACA,UAAM,iBAAiB,GAAG,+BAAiB,CAAC,WAAW,CAAC,KAAb,EAAoB,KAAK,YAAzB,CAAjB,CAA1B;;AAEA,UAAM,WAAW;AACf,QAAA,KAAK,EAAE,eAAe,CAAC,iBAAD,CADP;AAEf,uBAAe,WAAW,CAAC,aAAD,CAFX;AAGf,QAAA,IAAI,EAAE,WAAW,CAAC,IAHH;AAIf,QAAA,KAAK,EAAE,QAAQ,GACX;AACE,UAAA,QAAQ,EAAR,QADF;AAEE,UAAA,MAAM,EAAE,QAFV;AAGE,UAAA,KAAK,EAAE;AAHT,SADW,GAMX;AAVW,SAWZ,KAAK,UAXO,CAAjB;;AAcA,UAAI,KAAK,gBAAL,IAAyB,KAAK,QAAlC,EAA4C;AAC1C,QAAA,WAAW,CAAC,QAAZ,GAAuB,IAAvB;AACD;;AAED,WAAK,WAAL,CAAiB,WAAjB;AAEA,aAAO,WAAP;AACD,KAlFM;AAmFP,IAAA,cAnFO,0BAmFS,IAnFT,EAmFqB;AAC1B,UAAM,WAAW,GAAkB,EAAnC;AACA,UAAM,WAAW,GAAG,KAAK,cAAL,EAApB;AAEA,UAAI,QAAQ,GAAG,gBAAf,CAJ0B,CAK1B;AACA;;AACA,UAAM,cAAc,GAAG,IAAI,CAAC,OAAL,CAAa,GAAb,CAAvB;AACA,UAAM,cAAc,GAAG,cAAc,IAAI,CAAC,CAA1C;;AAEA,UAAI,cAAJ,EAAoB;AAClB;AACA,QAAA,WAAW,CAAC,IAAZ,CAAiB,IAAjB;AACD,OAHD,MAGO;AACL,QAAA,QAAQ,GAAG,IAAI,CAAC,KAAL,CAAW,CAAX,EAAc,cAAd,CAAX;AACA,YAAI,cAAc,CAAC,QAAD,CAAlB,EAA8B,QAAQ,GAAG,EAAX;AAC/B,OAhByB,CAkB1B;;;AACA,UAAM,WAAW,uBAAM,QAAN,EAAiB,IAAjB,CAAjB;;AACA,UAAI,CAAC,cAAL,EAAqB;AACnB,QAAA,WAAW,CAAC,IAAD,CAAX,GAAoB,IAApB;AACD;;AAED,UAAM,UAAU,GAAG,+BAAiB,CAAC,WAAW,CAAC,KAAb,EAAoB,KAAK,YAAzB,EAAuC,WAAvC,CAAjB,CAAnB;AAEA,UAAM,QAAQ,GAAG,KAAK,OAAL,EAAjB;;AACA,UAAM,QAAQ;AACZ,QAAA,KAAK,EAAE,eAAe,CAAC,UAAD,CADV;AAEZ,uBAAe,WAAW,CAAC,aAAD,CAFd;AAGZ,QAAA,IAAI,EAAE,WAAW,CAAC,IAHN;AAIZ,QAAA,KAAK,EAAE,QAAQ,GAAG;AAAE,UAAA,QAAQ,EAAR;AAAF,SAAH,GAAkB;AAJrB,SAKT,KAAK,UALI,CAAd;;AAQA,UAAI,KAAK,gBAAL,IAAyB,KAAK,QAAlC,EAA4C;AAC1C,QAAA,QAAQ,CAAC,QAAT,GAAoB,IAApB;AACD;;AAED,WAAK,WAAL,CAAiB,QAAjB;AAEA,UAAM,EAAE,GAAG,KAAK,gBAAL,GAAwB,QAAxB,GAAmC,0BAAY,KAAK,GAAjB,CAA9C;AACA,aAAO,OAAO,EAAP,KAAc,QAAd,GACH,YAAE,EAAF,EAAM,QAAN,EAAgB,WAAhB,CADG,GAEH,YAAE,EAAF,EAAM,QAAN,EAAgB;AAAE,QAAA,OAAO,EAAE;AAAA,iBAAM,WAAN;AAAA;AAAX,OAAhB,CAFJ;AAGD,KAhIM;AAiIP,IAAA,aAjIO,yBAiIQ,IAjIR,EAiIoB;AACzB,UAAM,IAAI,GAAG,KAAK,OAAL,EAAb;AACA,UAAM,QAAQ,GAAQ;AACpB,QAAA,KAAK,EAAE,aADa;AAEpB,QAAA,KAAK,EAAE,4BAFa;AAGpB,QAAA,OAAO,EAAE,WAHW;AAIpB,QAAA,IAAI,EAAE,KAJc;AAKpB,uBAAe;AALK,OAAtB;;AAQA,UAAI,IAAJ,EAAU;AACR,QAAA,QAAQ,CAAC,KAAT,GAAiB;AACf,UAAA,QAAQ,EAAE,IADK;AAEf,UAAA,MAAM,EAAE,IAFO;AAGf,UAAA,KAAK,EAAE;AAHQ,SAAjB;AAKD;;AAED,aAAO,YAAE,KAAK,gBAAL,GAAwB,QAAxB,GAAmC,MAArC,EAA6C,KAAK,iBAAL,EAA7C,EAAuE,CAC5E,YAAE,KAAF,EAAS,QAAT,EAAmB,CACjB,YAAE,MAAF,EAAU;AACR,QAAA,CAAC,EAAE;AADK,OAAV,CADiB,CAAnB,CAD4E,CAAvE,CAAP;AAOD,KA1JM;AA2JP,IAAA,sBA3JO,kCA4JL,IA5JK,EA4JqB;AAE1B,UAAM,IAAI,GAAG,KAAK,OAAL,EAAb;AACA,UAAM,gBAAgB,GAAG,+BAAiB,CACxC;AAAE,6BAAqB;AAAvB,OADwC,EAExC,KAAK,YAFmC,CAAjB,CAAzB;;AAKA,UAAM,aAAa;AACjB,QAAA,KAAK,EAAE,eAAe,CAAC,gBAAD,CADL;AAEjB,QAAA,KAAK,EAAE,IAAI,GACP;AACE,UAAA,QAAQ,EAAE,IADZ;AAEE,UAAA,MAAM,EAAE,IAFV;AAGE,UAAA,KAAK,EAAE;AAHT,SADO,GAMP;AARa,SASd,IAAI,CAAC,KATS,CAAnB;;AAYA,WAAK,WAAL,CAAiB,aAAjB;AAEA,aAAO,YAAE,KAAK,gBAAL,GAAwB,QAAxB,GAAmC,MAArC,EAA6C,KAAK,iBAAL,EAA7C,EAAuE;AAC5E,QAAA,OAAO,EAAE;AAAA,iBAAM,CACb,YAAE,IAAI,CAAC,SAAP,EAAkB,aAAlB,CADa,CAAN;AAAA;AADmE,OAAvE,CAAP;AAKD;AAvLM,GA3BF;AAqNP,EAAA,MArNO,oBAqND;AACJ,QAAM,IAAI,GAAG,KAAK,OAAL,EAAb;;AAEA,QAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;AAC5B,UAAI,SAAS,CAAC,IAAD,CAAb,EAAqB;AACnB,eAAO,KAAK,aAAL,CAAmB,IAAnB,CAAP;AACD;;AACD,aAAO,KAAK,cAAL,CAAoB,IAApB,CAAP;AACD;;AAED,WAAO,KAAK,sBAAL,CAA4B,IAA5B,CAAP;AACD;AAhOM,CANoB,CAAtB;;;gBAyOQ,0BAAgB;AAC7B,EAAA,IAAI,EAAE,QADuB;AAG7B,EAAA,YAAY,EAAE,aAHe;AAK7B,EAAA,UAAU,EAAE,IALiB;AAO7B,EAAA,OAP6B,qBAOtB;AACL,SAAK,GAAL,CAAS,SAAT,GAAqB,EAArB;AACD,GAT4B;AAW7B,EAAA,MAX6B,oBAWvB;AAAA;;AACJ,QAAM,IAAI,qBAAQ,KAAK,MAAb,CAAV,CADI,CAGJ;;;AACA,WAAO,YAAE,aAAF,EAAiB,IAAjB,EAAuB;AAC5B,MAAA,OAAO,EAAE,oBAAK;;;AACZ,YAAI,QAAQ,GAAG,EAAf,CADY,CAGZ;AACA;;AACA,YAAI,CAAA,EAAA,GAAA,KAAI,CAAC,CAAL,CAAO,KAAP,CAAa,KAAb,MAAkB,IAAlB,IAAkB,EAAA,KAAA,KAAA,CAAlB,GAAkB,KAAA,CAAlB,GAAkB,EAAA,CAAE,WAAxB,EAAqC;AACnC,UAAA,QAAQ,GAAG,KAAI,CAAC,CAAL,CAAO,KAAP,CAAa,KAAb,CAAmB,WAAnB,IACX,KAAI,CAAC,CAAL,CAAO,KAAP,CAAa,KAAb,CAAmB,SADR,IAET,QAFF;AAGD;;AAED,YAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,MAAL,EAAY,OAAZ,MAAmB,IAAnB,IAAmB,EAAA,KAAA,KAAA,CAAnB,GAAmB,KAAA,CAAnB,GAAmB,EAAA,CAAA,IAAA,CAAA,EAAA,CAApC;AAEA,eAAO,QAAQ,GAAG,CAAC,QAAD,CAAH,GAAgB,QAAQ,KAAI,CAAA,EAAA,GAAA,QAAQ,CAAC,CAAD,CAAR,MAAW,IAAX,IAAW,EAAA,KAAA,KAAA,CAAX,GAAW,KAAA,CAAX,GAAW,EAAA,CAAE,QAAjB,CAAvC;AACD;AAf2B,KAAvB,CAAP;AAiBD;AAhC4B,CAAhB,C","sourcesContent":["import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport { defineComponent, VNode, h } from 'vue'\nimport type { CreateElement, VNodeChildren, VNodeData } from '../../types/vue-internal'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\nimport { normalizeAttrs, normalizeClasses, getTagValue } from '../../util/helpers'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nfunction classesToString (classObj: Record<string, boolean>): string {\n return Object.keys(classObj).filter(key => classObj[key]).join(' ')\n}\n\nexport const VIconInternal = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i'\n }\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.onClick\n )\n }\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) {\n const slotChildren = this.$slots.default()\n if (slotChildren && slotChildren[0]) {\n const children = slotChildren[0].children\n if (typeof children === 'string') {\n iconName = children.trim()\n }\n }\n }\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n const data = {\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n 'v-icon': true,\n notranslate: true\n },\n 'aria-hidden': !this.hasClickListener,\n type: this.hasClickListener ? 'button' : undefined,\n // ...this.attrs$,\n ...this.listeners$\n }\n\n if (this.hasClickListener && this.disabled) {\n data.disabled = true\n }\n return data\n },\n applyColors (data: any): void {\n this.setTextColor(this.color, data)\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n\n const defaultData = this.getDefaultData()\n const normalizedClasses = normalizeClasses([defaultData.class, this.themeClasses])\n\n const wrapperData: any = {\n class: classesToString(normalizedClasses),\n 'aria-hidden': defaultData['aria-hidden'],\n type: defaultData.type,\n style: fontSize\n ? {\n fontSize,\n height: fontSize,\n width: fontSize\n }\n : undefined,\n ...this.listeners$\n }\n\n if (this.hasClickListener && this.disabled) {\n wrapperData.disabled = true\n }\n\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n renderFontIcon (icon: string): VNode {\n const newChildren: VNodeChildren = []\n const defaultData = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n // Создаем объект классов для иконки\n const iconClasses = { [iconType]: true }\n if (!isMaterialIcon) {\n iconClasses[icon] = true\n }\n\n const allClasses = normalizeClasses([defaultData.class, this.themeClasses, iconClasses])\n\n const fontSize = this.getSize()\n const fontData: any = {\n class: classesToString(allClasses),\n 'aria-hidden': defaultData['aria-hidden'],\n type: defaultData.type,\n style: fontSize ? { fontSize } : undefined,\n ...this.listeners$\n }\n\n if (this.hasClickListener && this.disabled) {\n fontData.disabled = true\n }\n\n this.applyColors(fontData)\n\n const el = this.hasClickListener ? 'button' : getTagValue(this.tag)\n return typeof el === 'string'\n ? h(el, fontData, newChildren)\n : h(el, fontData, { default: () => newChildren })\n },\n renderSvgIcon (icon: string): VNode {\n const size = this.getSize()\n const svgProps: any = {\n class: 'v-icon__svg',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true\n }\n\n if (size) {\n svgProps.style = {\n fontSize: size,\n height: size,\n width: size\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgProps, [\n h('path', {\n d: icon\n })\n ])\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent\n ): VNode {\n const size = this.getSize()\n const componentClasses = normalizeClasses([\n { 'v-icon__component': true },\n this.themeClasses\n ])\n\n const componentData: any = {\n class: classesToString(componentClasses),\n style: size\n ? {\n fontSize: size,\n height: size,\n width: size\n }\n : undefined,\n ...icon.props\n }\n\n this.applyColors(componentData)\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), {\n default: () => [\n h(icon.component, componentData)\n ]\n })\n }\n },\n\n render (): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon)\n }\n return this.renderFontIcon(icon)\n }\n\n return this.renderSvgIconComponent(icon)\n }\n})\n\nexport default defineComponent({\n name: 'v-icon',\n\n $_wrapperFor: VIconInternal,\n\n functional: true,\n\n mounted () {\n this.$el.innerHTML = ''\n },\n\n render (): VNode {\n const data = { ...this.$attrs }\n\n // console.log(children && children[0]?.children)\n return h(VIconInternal, data, {\n default: () => {\n let iconName = ''\n\n // Support usage of v-text and v-html\n // if (data.domProps) {\n if (this.$.vnode.props?.textContent) {\n iconName = this.$.vnode.props.textContent ||\n this.$.vnode.props.innerHTML ||\n iconName\n }\n\n const children = this.$slots.default?.()\n\n return iconName ? [iconName] : children && children[0]?.children\n }\n })\n }\n})\n"],"sourceRoot":"","file":"VIcon.js"}
1
+ {"version":3,"sources":["../../../src/components/VIcon/VIcon.ts"],"names":[],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AACA;;AACA;;AAGA;;AAGA;;AAEA;;;;;;;;;;;;;;;;AAIA,IAAK,QAAL;;AAAA,CAAA,UAAK,QAAL,EAAa;AACX,EAAA,QAAA,CAAA,QAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,OAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,SAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,QAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,OAAA,CAAA,GAAA,MAAA;AACA,EAAA,QAAA,CAAA,QAAA,CAAA,GAAA,MAAA;AACD,CAPD,EAAK,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAb;;AASA,SAAS,cAAT,CAAyB,QAAzB,EAAyC;AACvC,SAAO,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,IAA3C,CAAgD,UAAA,GAAG;AAAA,WAAI,QAAQ,CAAC,QAAT,CAAkB,GAAlB,CAAJ;AAAA,GAAnD,CAAP;AACD;;AAED,SAAS,SAAT,CAAoB,IAApB,EAAgC;AAC9B,SAAQ,0CAA0C,IAA1C,CAA+C,IAA/C,KAAwD,UAAU,IAAV,CAAe,IAAf,CAAxD,IAAgF,IAAI,CAAC,MAAL,GAAc,CAAtG;AACD;;AAED,SAAS,aAAT,CAAwB,IAAxB,EAAiC;AAC/B,MAAI,CAAC,IAAL,EAAW,OAAO,EAAP;AACX,MAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B,OAAO,IAAI,CAAC,IAAL,EAAP;AAC9B,MAAI,OAAO,IAAI,CAAC,QAAZ,KAAyB,QAA7B,EAAuC,OAAO,IAAI,CAAC,QAAL,CAAc,IAAd,EAAP;;AACvC,MAAI,KAAK,CAAC,OAAN,CAAc,IAAI,CAAC,QAAnB,CAAJ,EAAkC;AAAA,+CACZ,IAAI,CAAC,QADO;AAAA;;AAAA;AAChC,0DAAmC;AAAA,YAAxB,KAAwB;AACjC,YAAM,IAAI,GAAG,aAAa,CAAC,KAAD,CAA1B;AACA,YAAI,IAAJ,EAAU,OAAO,IAAP;AACX;AAJ+B;AAAA;AAAA;AAAA;AAAA;AAKjC;;AACD,SAAO,EAAP;AACD;;gBAEc,qBACb,mBADa,EAEb,kBAFa,EAGb,iBAHa,EAIb;AACA;AALa,EAMb,MANa,CAMN;AACP,EAAA,IAAI,EAAE,QADC;AAGP,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE,OADF;AAEL,IAAA,QAAQ,EAAE,OAFL;AAGL,IAAA,IAAI,EAAE,OAHD;AAIL,IAAA,KAAK,EAAE,OAJF;AAKL,IAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CALD;AAML,IAAA,GAAG,EAAE;AACH,MAAA,IAAI,EAAE,MADH;AAEH,MAAA,QAAQ,EAAE,KAFP;AAGH,MAAA,OAAO,EAAE;AAHN,KANA;AAWL,IAAA,WAAW,EAAE,MAXR;AAYL,IAAA,SAAS,EAAE;AAZN,GAHA;AAkBP,EAAA,QAAQ,EAAE;AACR,IAAA,MADQ,oBACF;AACJ,aAAO,KAAP;AACD,KAHO;AAIR,IAAA,gBAJQ,8BAIQ;AACd,aAAO,OAAO,CACZ,KAAK,UAAL,CAAgB,OADJ,CAAd;AAGD;AARO,GAlBH;AA6BP,EAAA,OAAO,EAAE;AACP,IAAA,OADO,qBACA;;;AACL,UAAI,QAAQ,GAAG,EAAf;AACA,UAAI,KAAK,WAAT,EAAsB,QAAQ,GAAG,KAAK,WAAL,CAAiB,IAAjB,EAAX,CAAtB,KACK,IAAI,KAAK,SAAT,EAAoB,QAAQ,GAAG,KAAK,SAAL,CAAe,IAAf,EAAX,CAApB,KACA;AACH,YAAM,YAAY,GAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,MAAL,EAAY,OAAZ,MAAmB,IAAnB,IAAmB,EAAA,KAAA,KAAA,CAAnB,GAAmB,KAAA,CAAnB,GAAmB,EAAA,CAAA,IAAA,CAAA,EAAA,CAAnB,KAA2B,EAAhD;;AADG,oDAEiB,YAFjB;AAAA;;AAAA;AAEH,iEAAkC;AAAA,gBAAvB,KAAuB;AAChC,YAAA,QAAQ,GAAG,aAAa,CAAC,KAAD,CAAxB;AACA,gBAAI,QAAJ,EAAc;AACf;AALE;AAAA;AAAA;AAAA;AAAA;AAMJ;AAED,aAAO,gCAAkB,IAAlB,EAAwB,QAAxB,CAAP;AACD,KAdM;AAeP,IAAA,OAfO,qBAeA;AACL,UAAM,KAAK,GAAG;AACZ,QAAA,MAAM,EAAE,KAAK,MADD;AAEZ,QAAA,KAAK,EAAE,KAAK,KAFA;AAGZ,QAAA,MAAM,EAAE,KAAK,MAHD;AAIZ,QAAA,KAAK,EAAE,KAAK,KAJA;AAKZ,QAAA,MAAM,EAAE,KAAK;AALD,OAAd;AAQA,UAAM,YAAY,GAAG,mBAAK,KAAL,EAAY,IAAZ,CAAiB,UAAA,GAAG;AAAA,eAAI,KAAK,CAAC,GAAD,CAAT;AAAA,OAApB,CAArB;AAEA,aACG,YAAY,IAAI,QAAQ,CAAC,YAAD,CAAzB,IAA4C,4BAAc,KAAK,IAAnB,CAD9C;AAGD,KA7BM;AA8BP;AACA,IAAA,cA/BO,4BA+BO;AACZ,UAAM,IAAI;AACR,QAAA,KAAK,EAAE;AACL,8BAAoB,KAAK,QADpB;AAEL,0BAAgB,KAAK,IAFhB;AAGL,0BAAgB,KAAK,gBAHhB;AAIL,2BAAiB,KAAK,KAJjB;AAKL,2BAAiB,KAAK,KALjB;AAML,oBAAU,IANL;AAOL,UAAA,WAAW,EAAE;AAPR,SADC;AAUR,uBAAe,CAAC,KAAK,gBAVb;AAWR,QAAA,IAAI,EAAE,KAAK,gBAAL,GAAwB,QAAxB,GAAmC;AAXjC,SAaL,KAAK,UAbA,CAAV;;AAgBA,UAAI,KAAK,gBAAL,IAAyB,KAAK,QAAlC,EAA4C;AAC1C,QAAA,IAAI,CAAC,QAAL,GAAgB,IAAhB;AACD;;AACD,aAAO,IAAP;AACD,KApDM;AAqDP,IAAA,WArDO,uBAqDM,IArDN,EAqDe;AACpB,MAAA,IAAI,CAAC,KAAL,GAAa,+BAAiB,CAAC,IAAI,CAAC,KAAN,EAAa,KAAK,YAAlB,CAAjB,CAAb;AACA,WAAK,YAAL,CAAkB,KAAK,KAAvB,EAA8B,IAA9B;AACD,KAxDM;AAyDP,IAAA,iBAzDO,+BAyDU;AACf,UAAM,QAAQ,GAAG,KAAK,OAAL,EAAjB;;AACA,UAAM,WAAW,mCACZ,KAAK,cAAL,EADY;AAEf,QAAA,KAAK,EAAE,QAAQ,GACX;AACE,UAAA,QAAQ,EAAR,QADF;AAEE,UAAA,MAAM,EAAE,QAFV;AAGE,UAAA,KAAK,EAAE;AAHT,SADW,GAMX;AARW,QAAjB;;AAWA,WAAK,WAAL,CAAiB,WAAjB;AAEA,aAAO,WAAP;AACD,KAzEM;AA0EP,IAAA,cA1EO,0BA0ES,IA1ET,EA0EqB;AAC1B,UAAM,WAAW,GAAkB,EAAnC;AACA,UAAM,IAAI,GAAG,KAAK,cAAL,EAAb;AAEA,UAAI,QAAQ,GAAG,gBAAf,CAJ0B,CAK1B;AACA;;AACA,UAAM,cAAc,GAAG,IAAI,CAAC,OAAL,CAAa,GAAb,CAAvB;AACA,UAAM,cAAc,GAAG,cAAc,IAAI,CAAC,CAA1C;;AAEA,UAAI,cAAJ,EAAoB;AAClB;AACA,QAAA,WAAW,CAAC,IAAZ,CAAiB,IAAjB;AACD,OAHD,MAGO;AACL,QAAA,QAAQ,GAAG,IAAI,CAAC,KAAL,CAAW,CAAX,EAAc,cAAd,CAAX;AACA,YAAI,cAAc,CAAC,QAAD,CAAlB,EAA8B,QAAQ,GAAG,EAAX;AAC/B;;AAED,MAAA,IAAI,CAAC,KAAL,CAAW,QAAX,IAAuB,IAAvB;AACA,MAAA,IAAI,CAAC,KAAL,CAAW,IAAX,IAAmB,CAAC,cAApB;AAEA,UAAM,QAAQ,GAAG,KAAK,OAAL,EAAjB;AACA,UAAI,QAAJ,EAAc,IAAI,CAAC,KAAL,GAAa;AAAE,QAAA,QAAQ,EAAR;AAAF,OAAb;AAEd,WAAK,WAAL,CAAiB,IAAjB;AAEA,UAAM,EAAE,GAAG,KAAK,gBAAL,GAAwB,QAAxB,GAAmC,0BAAY,KAAK,GAAjB,CAA9C;AACA,aAAO,OAAO,EAAP,KAAc,QAAd,GACH,YAAE,EAAF,EAAM,IAAN,EAAY,WAAZ,CADG,GAEH,YAAE,EAAF,EAAM,IAAN,EAAY;AAAE,QAAA,OAAO,EAAE;AAAA,iBAAM,WAAN;AAAA;AAAX,OAAZ,CAFJ;AAGD,KAxGM;AAyGP,IAAA,aAzGO,yBAyGQ,IAzGR,EAyGoB;AACzB,UAAM,IAAI,GAAG,KAAK,OAAL,EAAb;AACA,UAAM,QAAQ,GAAQ;AACpB,QAAA,KAAK,EAAE,aADa;AAEpB,QAAA,KAAK,EAAE,4BAFa;AAGpB,QAAA,OAAO,EAAE,WAHW;AAIpB,QAAA,IAAI,EAAE,KAJc;AAKpB,uBAAe;AALK,OAAtB;;AAQA,UAAI,IAAJ,EAAU;AACR,QAAA,QAAQ,CAAC,KAAT,GAAiB;AACf,UAAA,QAAQ,EAAE,IADK;AAEf,UAAA,MAAM,EAAE,IAFO;AAGf,UAAA,KAAK,EAAE;AAHQ,SAAjB;AAKD;;AAED,aAAO,YAAE,KAAK,gBAAL,GAAwB,QAAxB,GAAmC,MAArC,EAA6C,KAAK,iBAAL,EAA7C,EAAuE,CAC5E,YAAE,KAAF,EAAS,QAAT,EAAmB,CACjB,YAAE,MAAF,EAAU;AACR,QAAA,CAAC,EAAE;AADK,OAAV,CADiB,CAAnB,CAD4E,CAAvE,CAAP;AAOD,KAlIM;AAmIP,IAAA,sBAnIO,kCAoIL,IApIK,EAoIqB;AAE1B,UAAM,IAAI,GAAQ;AAChB,QAAA,KAAK,EAAE;AACL,+BAAqB;AADhB;AADS,OAAlB;AAMA,UAAM,IAAI,GAAG,KAAK,OAAL,EAAb;;AACA,UAAI,IAAJ,EAAU;AACR,QAAA,IAAI,CAAC,KAAL,GAAa;AACX,UAAA,QAAQ,EAAE,IADC;AAEX,UAAA,MAAM,EAAE,IAFG;AAGX,UAAA,KAAK,EAAE;AAHI,SAAb;AAKD;;AAED,WAAK,WAAL,CAAiB,IAAjB;AAEA,UAAM,SAAS,GAAG,IAAI,CAAC,SAAvB;AACA,MAAA,MAAM,CAAC,MAAP,CAAc,IAAd,EAAoB,IAAI,CAAC,KAAzB;AAEA,aAAO,YAAE,KAAK,gBAAL,GAAwB,QAAxB,GAAmC,MAArC,EAA6C,KAAK,iBAAL,EAA7C,EAAuE;AAC5E,QAAA,OAAO,EAAE;AAAA,iBAAM,CACb,YAAE,SAAF,EAAa,IAAb,CADa,CAAN;AAAA;AADmE,OAAvE,CAAP;AAKD;AA/JM,GA7BF;AA+LP,EAAA,MA/LO,oBA+LD;AACJ,QAAM,IAAI,GAAG,KAAK,OAAL,EAAb;;AAEA,QAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;AAC5B,UAAI,SAAS,CAAC,IAAD,CAAb,EAAqB;AACnB,eAAO,KAAK,aAAL,CAAmB,IAAnB,CAAP;AACD;;AACD,aAAO,KAAK,cAAL,CAAoB,IAApB,CAAP;AACD;;AAED,WAAO,KAAK,sBAAL,CAA4B,IAA5B,CAAP;AACD;AA1MM,CANM,C","sourcesContent":["import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport { defineComponent, VNode, h } from 'vue'\nimport type { CreateElement, VNodeChildren, VNodeData } from '../../types/vue-internal'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\nimport { normalizeAttrs, normalizeClasses, getTagValue } from '../../util/helpers'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nfunction readFirstText (node: any): string {\n if (!node) return ''\n if (typeof node === 'string') return node.trim()\n if (typeof node.children === 'string') return node.children.trim()\n if (Array.isArray(node.children)) {\n for (const child of node.children) {\n const text = readFirstText(child)\n if (text) return text\n }\n }\n return ''\n}\n\nexport default mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i'\n },\n textContent: String,\n innerHTML: String\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.onClick\n )\n }\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.textContent) iconName = this.textContent.trim()\n else if (this.innerHTML) iconName = this.innerHTML.trim()\n else {\n const slotChildren = this.$slots.default?.() || []\n for (const child of slotChildren) {\n iconName = readFirstText(child)\n if (iconName) break\n }\n }\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n const data = {\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n 'v-icon': true,\n notranslate: true\n },\n 'aria-hidden': !this.hasClickListener,\n type: this.hasClickListener ? 'button' : undefined,\n // ...this.attrs$,\n ...this.listeners$\n }\n\n if (this.hasClickListener && this.disabled) {\n data.disabled = true\n }\n return data\n },\n applyColors (data: any): void {\n data.class = normalizeClasses([data.class, this.themeClasses])\n this.setTextColor(this.color, data)\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData: any = {\n ...this.getDefaultData(),\n style: fontSize\n ? {\n fontSize,\n height: fontSize,\n width: fontSize\n }\n : undefined\n }\n\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n renderFontIcon (icon: string): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n const el = this.hasClickListener ? 'button' : getTagValue(this.tag)\n return typeof el === 'string'\n ? h(el, data, newChildren)\n : h(el, data, { default: () => newChildren })\n },\n renderSvgIcon (icon: string): VNode {\n const size = this.getSize()\n const svgProps: any = {\n class: 'v-icon__svg',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true\n }\n\n if (size) {\n svgProps.style = {\n fontSize: size,\n height: size,\n width: size\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgProps, [\n h('path', {\n d: icon\n })\n ])\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent\n ): VNode {\n const data: any = {\n class: {\n 'v-icon__component': true\n }\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n Object.assign(data, icon.props)\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), {\n default: () => [\n h(component, data)\n ]\n })\n }\n },\n\n render (): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon)\n }\n return this.renderFontIcon(icon)\n }\n\n return this.renderSvgIconComponent(icon)\n }\n})\n"],"sourceRoot":"","file":"VIcon.js"}
@@ -499,12 +499,14 @@ var _default2 = baseMixins.extend({
499
499
  var directives = [[_resize.default, this.onResize, '500']]; // console.log('vmenurender', this, this.activator, this.getActivator())
500
500
 
501
501
  return (0, _vue.withDirectives)((0, _vue.h)('div', data, [!this.activator && this.genActivator(), this.showLazyContent(function () {
502
+ var transition = _this8.genTransition();
503
+
502
504
  return [(0, _vue.h)(_VThemeProvider.VThemeProvider, {
503
505
  root: true,
504
506
  light: _this8.light,
505
507
  dark: _this8.dark
506
508
  }, function () {
507
- return [_this8.genTransition()];
509
+ return [transition];
508
510
  })];
509
511
  })]), directives);
510
512
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VMenu/VMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, Transition, vShow, withDirectives } from 'vue'\n// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed, breaking } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport type { VNodeData } from '../../types/vue-internal'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true\n },\n closeOnContentClick: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto'\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left'\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition'\n },\n contentProps: {\n type: Object as PropType<Record<string, any>>,\n default: () => ({})\n },\n onScroll: {\n type: Function as PropType<(event: Event) => void>,\n default: undefined\n }\n },\n\n emits: [\n 'keydown',\n 'update:modelValue',\n 'update:return-value'\n ],\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[]\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '220px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex\n }\n }\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n }\n },\n\n created () {\n const breakingProps = [\n ['value', 'modelValue'],\n ['onInput', 'onUpdate:modelValue']\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this.$.isUnmounted &&\n this.closeOnClick &&\n this.$refs.content &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.onKeydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return h(Transition, {\n name: this.transition\n }, () => [content])\n },\n genDirectives (): any[] {\n const directives: any[] = [[\n vShow,\n this.isContentActive\n ]]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push([\n ClickOutside,\n {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()]\n }\n ])\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n ...this.getScopeIdAttrs(),\n ...this.contentProps,\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n class: ['v-menu__content', {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true\n }],\n style: this.styles,\n ref: 'content',\n onClick: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n onKeydown: this.onKeyDown\n } as VNodeData\n\n if (this.onScroll) {\n options.onScroll = this.onScroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.onMouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.onMouseleave = this.mouseLeaveHandler\n }\n\n const directives = this.genDirectives()\n\n return withDirectives(h('div', options, this.getContentSlot()), directives as any)\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.disableKeys) return\n\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode as typeof keyCodes.up | typeof keyCodes.down)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n }\n },\n\n render (): VNode {\n const data = {\n class: ['v-menu', {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach'\n }]\n }\n\n const directives = [[\n Resize,\n this.onResize,\n '500'\n ]]\n\n // console.log('vmenurender', this, this.activator, this.getActivator())\n\n return withDirectives(h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n h(VThemeProvider, {\n root: true,\n light: this.light,\n dark: this.dark\n }, () => [this.genTransition()])\n ])\n ]), directives as any)\n }\n})\n"],"sourceRoot":"","file":"VMenu.js"}
1
+ {"version":3,"sources":["../../../src/components/VMenu/VMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, Transition, vShow, withDirectives } from 'vue'\n// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed, breaking } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport type { VNodeData } from '../../types/vue-internal'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true\n },\n closeOnContentClick: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto'\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left'\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition'\n },\n contentProps: {\n type: Object as PropType<Record<string, any>>,\n default: () => ({})\n },\n onScroll: {\n type: Function as PropType<(event: Event) => void>,\n default: undefined\n }\n },\n\n emits: [\n 'keydown',\n 'update:modelValue',\n 'update:return-value'\n ],\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[]\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '220px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex\n }\n }\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n }\n },\n\n created () {\n const breakingProps = [\n ['value', 'modelValue'],\n ['onInput', 'onUpdate:modelValue']\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this.$.isUnmounted &&\n this.closeOnClick &&\n this.$refs.content &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.onKeydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return h(Transition, {\n name: this.transition\n }, () => [content])\n },\n genDirectives (): any[] {\n const directives: any[] = [[\n vShow,\n this.isContentActive\n ]]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push([\n ClickOutside,\n {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()]\n }\n ])\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n ...this.getScopeIdAttrs(),\n ...this.contentProps,\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n class: ['v-menu__content', {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true\n }],\n style: this.styles,\n ref: 'content',\n onClick: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n onKeydown: this.onKeyDown\n } as VNodeData\n\n if (this.onScroll) {\n options.onScroll = this.onScroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.onMouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.onMouseleave = this.mouseLeaveHandler\n }\n\n const directives = this.genDirectives()\n\n return withDirectives(h('div', options, this.getContentSlot()), directives as any)\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.disableKeys) return\n\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode as typeof keyCodes.up | typeof keyCodes.down)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n }\n },\n\n render (): VNode {\n const data = {\n class: ['v-menu', {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach'\n }]\n }\n\n const directives = [[\n Resize,\n this.onResize,\n '500'\n ]]\n\n // console.log('vmenurender', this, this.activator, this.getActivator())\n\n return withDirectives(h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => {\n const transition = this.genTransition()\n return [\n h(VThemeProvider, {\n root: true,\n light: this.light,\n dark: this.dark\n }, () => [transition])\n ]\n })\n ]), directives as any)\n }\n})\n"],"sourceRoot":"","file":"VMenu.js"}
package/es5/framework.js CHANGED
@@ -79,7 +79,7 @@ var Vuetify = /*#__PURE__*/function () {
79
79
  exports.default = Vuetify;
80
80
  Vuetify.install = _install.install;
81
81
  Vuetify.installed = false;
82
- Vuetify.version = "2.7.2-alpha46";
82
+ Vuetify.version = "2.7.2-alpha47";
83
83
  Vuetify.config = {
84
84
  silent: false
85
85
  };