@dimailn/vuetify 2.7.2-alpha46 → 2.7.2-alpha48
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.
- package/dist/vuetify.js +100 -97
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +1 -1
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VIcon/VIcon.js +73 -93
- package/es5/components/VIcon/VIcon.js.map +1 -1
- package/es5/components/VItemGroup/VItemGroup.js +2 -1
- package/es5/components/VItemGroup/VItemGroup.js.map +1 -1
- package/es5/components/VMenu/VMenu.js +3 -1
- package/es5/components/VMenu/VMenu.js.map +1 -1
- package/es5/framework.js +1 -1
- package/lib/components/VIcon/VIcon.js +50 -96
- package/lib/components/VIcon/VIcon.js.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.js +2 -1
- package/lib/components/VItemGroup/VItemGroup.js.map +1 -1
- package/lib/components/VMenu/VMenu.js +8 -5
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/framework.js +1 -1
- package/package.json +1 -1
- package/src/components/VAlert/__tests__/__snapshots__/VAlert.spec.ts.snap +2 -2
- package/src/components/VAppBar/__tests__/__snapshots__/VAppBarNavIcon.spec.ts.snap +1 -1
- package/src/components/VBanner/__tests__/__snapshots__/VBanner.spec.ts.snap +1 -1
- package/src/components/VCheckbox/__tests__/__snapshots__/VCheckbox.spec.ts.snap +16 -13
- package/src/components/VChip/__tests__/__snapshots__/VChip.spec.ts.snap +5 -0
- package/src/components/VColorPicker/__tests__/__snapshots__/VColorPicker.spec.ts.snap +33 -24
- package/src/components/VColorPicker/__tests__/__snapshots__/VColorPickerEdit.spec.ts.snap +10 -5
- package/src/components/VDataIterator/__tests__/__snapshots__/VDataFooter.spec.ts.snap +50 -29
- package/src/components/VDataIterator/__tests__/__snapshots__/VDataIterator.spec.ts.snap +38 -23
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +670 -438
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTableHeader.spec.ts.snap +88 -53
- package/src/components/VDataTable/mixins/__tests__/__snapshots__/header.spec.ts.snap +4 -4
- package/src/components/VDatePicker/__tests__/__snapshots__/VDatePicker.date.spec.ts.snap +68 -0
- package/src/components/VDatePicker/__tests__/__snapshots__/VDatePicker.month.spec.ts.snap +40 -0
- package/src/components/VDatePicker/__tests__/__snapshots__/VDatePickerHeader.spec.ts.snap +40 -0
- package/src/components/VDatePicker/__tests__/__snapshots__/VDatePickerTitle.spec.ts.snap +4 -0
- package/src/components/VExpansionPanel/__tests__/__snapshots__/VExpansionPanel.spec.ts.snap +1 -1
- package/src/components/VFileInput/__tests__/__snapshots__/VFileInput.spec.ts.snap +43 -43
- package/src/components/VIcon/VIcon.ts +50 -98
- package/src/components/VIcon/__tests__/VIcon.spec.ts +26 -5
- package/src/components/VIcon/__tests__/__snapshots__/VIcon.spec.ts.snap +11 -4
- package/src/components/VInput/__tests__/__snapshots__/VInput.spec.ts.snap +18 -2
- package/src/components/VItemGroup/VItemGroup.ts +5 -2
- package/src/components/VItemGroup/__tests__/VItemGroup.spec.ts +2 -0
- package/src/components/VList/__tests__/VListItemGroup.spec.ts +31 -0
- package/src/components/VList/__tests__/__snapshots__/VListGroup.spec.ts.snap +1 -1
- package/src/components/VMenu/VMenu.ts +10 -7
- package/src/components/VOverflowBtn/__tests__/__snapshots__/VOverflowBtn.spec.ts.snap +10 -10
- package/src/components/VPagination/__tests__/__snapshots__/VPagination.spec.ts.snap +16 -16
- package/src/components/VRadioGroup/__tests__/__snapshots__/VRadio.spec.ts.snap +13 -11
- package/src/components/VRadioGroup/__tests__/__snapshots__/VRadioGroup.spec.ts.snap +1 -1
- package/src/components/VSelect/__tests__/__snapshots__/VSelect.spec.ts.snap +19 -7
- package/src/components/VSelect/__tests__/__snapshots__/VSelect2.spec.ts.snap +29 -9
- package/src/components/VSelect/__tests__/__snapshots__/VSelect3.spec.ts.snap +6 -2
- package/src/components/VStepper/__tests__/__snapshots__/VStepperStep.spec.ts.snap +6 -5
- package/src/components/VTextField/__tests__/__snapshots__/VTextField.spec.ts.snap +14 -12
- package/src/components/VTimeline/__tests__/__snapshots__/VTimelineItem.spec.ts.snap +2 -1
- package/src/components/VTreeview/__tests__/__snapshots__/VTreeview.spec.ts.snap +42 -21
- package/src/components/VTreeview/__tests__/__snapshots__/VTreeviewNode.spec.ts.snap +5 -4
|
@@ -7,7 +7,7 @@ import Themeable from '../../mixins/themeable'; // Util
|
|
|
7
7
|
|
|
8
8
|
import { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'; // Types
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { h } from 'vue';
|
|
11
11
|
import mixins from '../../util/mixins';
|
|
12
12
|
import { normalizeClasses, getTagValue } from '../../util/helpers';
|
|
13
13
|
var SIZE_MAP;
|
|
@@ -29,11 +29,22 @@ function isSvgPath(icon) {
|
|
|
29
29
|
return /^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\dz]$/i.test(icon) && icon.length > 4;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
function
|
|
33
|
-
|
|
32
|
+
function readFirstText(node) {
|
|
33
|
+
if (!node) return '';
|
|
34
|
+
if (typeof node === 'string') return node.trim();
|
|
35
|
+
if (typeof node.children === 'string') return node.children.trim();
|
|
36
|
+
|
|
37
|
+
if (Array.isArray(node.children)) {
|
|
38
|
+
for (const child of node.children) {
|
|
39
|
+
const text = readFirstText(child);
|
|
40
|
+
if (text) return text;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return '';
|
|
34
45
|
}
|
|
35
46
|
|
|
36
|
-
export
|
|
47
|
+
export default mixins(BindsAttrs, Colorable, Sizeable, Themeable
|
|
37
48
|
/* @vue/component */
|
|
38
49
|
).extend({
|
|
39
50
|
name: 'v-icon',
|
|
@@ -47,7 +58,9 @@ export const VIconInternal = mixins(BindsAttrs, Colorable, Sizeable, Themeable
|
|
|
47
58
|
type: String,
|
|
48
59
|
required: false,
|
|
49
60
|
default: 'i'
|
|
50
|
-
}
|
|
61
|
+
},
|
|
62
|
+
textContent: String,
|
|
63
|
+
innerHTML: String
|
|
51
64
|
},
|
|
52
65
|
computed: {
|
|
53
66
|
medium() {
|
|
@@ -61,20 +74,17 @@ export const VIconInternal = mixins(BindsAttrs, Colorable, Sizeable, Themeable
|
|
|
61
74
|
},
|
|
62
75
|
methods: {
|
|
63
76
|
getIcon() {
|
|
64
|
-
|
|
77
|
+
var _a, _b;
|
|
65
78
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (slotChildren && slotChildren[0]) {
|
|
70
|
-
const children = slotChildren[0].children;
|
|
79
|
+
let iconName = '';
|
|
80
|
+
if (this.textContent) iconName = this.textContent.trim();else if (this.innerHTML) iconName = this.innerHTML.trim();else {
|
|
81
|
+
const slotChildren = ((_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
|
|
71
82
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
83
|
+
for (const child of slotChildren) {
|
|
84
|
+
iconName = readFirstText(child);
|
|
85
|
+
if (iconName) break;
|
|
75
86
|
}
|
|
76
87
|
}
|
|
77
|
-
|
|
78
88
|
return remapInternalIcon(this, iconName);
|
|
79
89
|
},
|
|
80
90
|
|
|
@@ -116,36 +126,26 @@ export const VIconInternal = mixins(BindsAttrs, Colorable, Sizeable, Themeable
|
|
|
116
126
|
},
|
|
117
127
|
|
|
118
128
|
applyColors(data) {
|
|
129
|
+
data.class = normalizeClasses([data.class, this.themeClasses]);
|
|
119
130
|
this.setTextColor(this.color, data);
|
|
120
131
|
},
|
|
121
132
|
|
|
122
133
|
getSvgWrapperData() {
|
|
123
134
|
const fontSize = this.getSize();
|
|
124
|
-
const
|
|
125
|
-
const normalizedClasses = normalizeClasses([defaultData.class, this.themeClasses]);
|
|
126
|
-
const wrapperData = {
|
|
127
|
-
class: classesToString(normalizedClasses),
|
|
128
|
-
'aria-hidden': defaultData['aria-hidden'],
|
|
129
|
-
type: defaultData.type,
|
|
135
|
+
const wrapperData = { ...this.getDefaultData(),
|
|
130
136
|
style: fontSize ? {
|
|
131
137
|
fontSize,
|
|
132
138
|
height: fontSize,
|
|
133
139
|
width: fontSize
|
|
134
|
-
} : undefined
|
|
135
|
-
...this.listeners$
|
|
140
|
+
} : undefined
|
|
136
141
|
};
|
|
137
|
-
|
|
138
|
-
if (this.hasClickListener && this.disabled) {
|
|
139
|
-
wrapperData.disabled = true;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
142
|
this.applyColors(wrapperData);
|
|
143
143
|
return wrapperData;
|
|
144
144
|
},
|
|
145
145
|
|
|
146
146
|
renderFontIcon(icon) {
|
|
147
147
|
const newChildren = [];
|
|
148
|
-
const
|
|
148
|
+
const data = this.getDefaultData();
|
|
149
149
|
let iconType = 'material-icons'; // Material Icon delimiter is _
|
|
150
150
|
// https://material.io/icons/
|
|
151
151
|
|
|
@@ -158,36 +158,17 @@ export const VIconInternal = mixins(BindsAttrs, Colorable, Sizeable, Themeable
|
|
|
158
158
|
} else {
|
|
159
159
|
iconType = icon.slice(0, delimiterIndex);
|
|
160
160
|
if (isFontAwesome5(iconType)) iconType = '';
|
|
161
|
-
} // Создаем объект классов для иконки
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const iconClasses = {
|
|
165
|
-
[iconType]: true
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
if (!isMaterialIcon) {
|
|
169
|
-
iconClasses[icon] = true;
|
|
170
161
|
}
|
|
171
162
|
|
|
172
|
-
|
|
163
|
+
data.class[iconType] = true;
|
|
164
|
+
data.class[icon] = !isMaterialIcon;
|
|
173
165
|
const fontSize = this.getSize();
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
'aria-hidden': defaultData['aria-hidden'],
|
|
177
|
-
type: defaultData.type,
|
|
178
|
-
style: fontSize ? {
|
|
179
|
-
fontSize
|
|
180
|
-
} : undefined,
|
|
181
|
-
...this.listeners$
|
|
166
|
+
if (fontSize) data.style = {
|
|
167
|
+
fontSize
|
|
182
168
|
};
|
|
183
|
-
|
|
184
|
-
if (this.hasClickListener && this.disabled) {
|
|
185
|
-
fontData.disabled = true;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
this.applyColors(fontData);
|
|
169
|
+
this.applyColors(data);
|
|
189
170
|
const el = this.hasClickListener ? 'button' : getTagValue(this.tag);
|
|
190
|
-
return typeof el === 'string' ? h(el,
|
|
171
|
+
return typeof el === 'string' ? h(el, data, newChildren) : h(el, data, {
|
|
191
172
|
default: () => newChildren
|
|
192
173
|
});
|
|
193
174
|
},
|
|
@@ -216,22 +197,26 @@ export const VIconInternal = mixins(BindsAttrs, Colorable, Sizeable, Themeable
|
|
|
216
197
|
},
|
|
217
198
|
|
|
218
199
|
renderSvgIconComponent(icon) {
|
|
200
|
+
const data = {
|
|
201
|
+
class: {
|
|
202
|
+
'v-icon__component': true
|
|
203
|
+
}
|
|
204
|
+
};
|
|
219
205
|
const size = this.getSize();
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
const componentData = {
|
|
224
|
-
class: classesToString(componentClasses),
|
|
225
|
-
style: size ? {
|
|
206
|
+
|
|
207
|
+
if (size) {
|
|
208
|
+
data.style = {
|
|
226
209
|
fontSize: size,
|
|
227
210
|
height: size,
|
|
228
211
|
width: size
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
this.applyColors(
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
this.applyColors(data);
|
|
216
|
+
const component = icon.component;
|
|
217
|
+
Object.assign(data, icon.props);
|
|
233
218
|
return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), {
|
|
234
|
-
default: () => [h(
|
|
219
|
+
default: () => [h(component, data)]
|
|
235
220
|
});
|
|
236
221
|
}
|
|
237
222
|
|
|
@@ -251,36 +236,5 @@ export const VIconInternal = mixins(BindsAttrs, Colorable, Sizeable, Themeable
|
|
|
251
236
|
return this.renderSvgIconComponent(icon);
|
|
252
237
|
}
|
|
253
238
|
|
|
254
|
-
});
|
|
255
|
-
export default defineComponent({
|
|
256
|
-
name: 'v-icon',
|
|
257
|
-
$_wrapperFor: VIconInternal,
|
|
258
|
-
functional: true,
|
|
259
|
-
|
|
260
|
-
mounted() {
|
|
261
|
-
this.$el.innerHTML = '';
|
|
262
|
-
},
|
|
263
|
-
|
|
264
|
-
render() {
|
|
265
|
-
const data = { ...this.$attrs
|
|
266
|
-
}; // console.log(children && children[0]?.children)
|
|
267
|
-
|
|
268
|
-
return h(VIconInternal, data, {
|
|
269
|
-
default: () => {
|
|
270
|
-
var _a, _b, _c, _d;
|
|
271
|
-
|
|
272
|
-
let iconName = ''; // Support usage of v-text and v-html
|
|
273
|
-
// if (data.domProps) {
|
|
274
|
-
|
|
275
|
-
if ((_a = this.$.vnode.props) === null || _a === void 0 ? void 0 : _a.textContent) {
|
|
276
|
-
iconName = this.$.vnode.props.textContent || this.$.vnode.props.innerHTML || iconName;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
const children = (_c = (_b = this.$slots).default) === null || _c === void 0 ? void 0 : _c.call(_b);
|
|
280
|
-
return iconName ? [iconName] : children && ((_d = children[0]) === null || _d === void 0 ? void 0 : _d.children);
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
|
|
285
239
|
});
|
|
286
240
|
//# sourceMappingURL=VIcon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VIcon/VIcon.ts"],"names":[],"mappings":"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","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":"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","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"}
|
|
@@ -105,7 +105,8 @@ export const BaseItemGroup = mixins(Comparable, Proxyable, Themeable).extend({
|
|
|
105
105
|
},
|
|
106
106
|
|
|
107
107
|
getValue(item, i) {
|
|
108
|
-
|
|
108
|
+
const identity = item.value !== undefined ? item.value : item.modelValue;
|
|
109
|
+
return identity === undefined ? i : identity;
|
|
109
110
|
},
|
|
110
111
|
|
|
111
112
|
onClick(item) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VItemGroup/VItemGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, defineComponent } from 'vue'\n// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot, getTagValue } from '../../util/helpers'\n\n// Types\nimport type { VNode } from '../../types/vue-internal'\n\nexport type GroupableInstance = any & {\n id?: string\n to?: any\n value?: any\n}\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n emits: ['update:modelValue'],\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active'\n },\n allowDeselect: {\n type: Boolean,\n default: true\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div'\n }\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.modelValue !== undefined\n ? this.modelValue\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[]\n }\n },\n\n computed: {\n classes (): Record<string, boolean> {\n return {\n 'v-item-group': true,\n ...this.themeClasses\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n }\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState'\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n // TODO!!!\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this.$.isUnmounted) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n if (!this.allowDeselect && isSame) return\n\n this.internalValue = isSame ? undefined : value\n }\n },\n\n render (): VNode {\n const data = this.genData()\n return h(getTagValue(this.tag), {\n class: data.class,\n ...data.attrs\n }, getSlot(this))\n }\n})\n\nexport default defineComponent({\n name: 'v-item-group',\n extends: BaseItemGroup,\n\n provide (): object {\n return {\n itemGroup: this\n }\n }\n})\n"],"sourceRoot":"","file":"VItemGroup.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VItemGroup/VItemGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, defineComponent } from 'vue'\n// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot, getTagValue } from '../../util/helpers'\n\n// Types\nimport type { VNode } from '../../types/vue-internal'\n\nexport type GroupableInstance = any & {\n id?: string\n to?: any\n value?: any\n modelValue?: any\n}\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n emits: ['update:modelValue'],\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active'\n },\n allowDeselect: {\n type: Boolean,\n default: true\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div'\n }\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.modelValue !== undefined\n ? this.modelValue\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[]\n }\n },\n\n computed: {\n classes (): Record<string, boolean> {\n return {\n 'v-item-group': true,\n ...this.themeClasses\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n }\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState'\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n const identity = item.value !== undefined ? item.value : item.modelValue\n\n return identity === undefined\n ? i\n : identity\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n // TODO!!!\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this.$.isUnmounted) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n if (!this.allowDeselect && isSame) return\n\n this.internalValue = isSame ? undefined : value\n }\n },\n\n render (): VNode {\n const data = this.genData()\n return h(getTagValue(this.tag), {\n class: data.class,\n ...data.attrs\n }, getSlot(this))\n }\n})\n\nexport default defineComponent({\n name: 'v-item-group',\n extends: BaseItemGroup,\n\n provide (): object {\n return {\n itemGroup: this\n }\n }\n})\n"],"sourceRoot":"","file":"VItemGroup.js"}
|
|
@@ -461,11 +461,14 @@ export default baseMixins.extend({
|
|
|
461
461
|
};
|
|
462
462
|
const directives = [[Resize, this.onResize, '500']]; // console.log('vmenurender', this, this.activator, this.getActivator())
|
|
463
463
|
|
|
464
|
-
return withDirectives(h('div', data, [!this.activator && this.genActivator(), this.showLazyContent(() =>
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
464
|
+
return withDirectives(h('div', data, [!this.activator && this.genActivator(), this.showLazyContent(() => {
|
|
465
|
+
const transition = this.genTransition();
|
|
466
|
+
return [h(VThemeProvider, {
|
|
467
|
+
root: true,
|
|
468
|
+
light: this.light,
|
|
469
|
+
dark: this.dark
|
|
470
|
+
}, () => [transition])];
|
|
471
|
+
})]), directives);
|
|
469
472
|
}
|
|
470
473
|
|
|
471
474
|
});
|
|
@@ -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/lib/framework.js
CHANGED
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ exports[`VAlert.ts should be dismissible 1`] = `
|
|
|
13
13
|
aria-label="Close"
|
|
14
14
|
>
|
|
15
15
|
<span class="v-btn__content">
|
|
16
|
-
<i class="v-icon notranslate
|
|
16
|
+
<i class="v-icon notranslate mdi mdi-close-circle theme--light"
|
|
17
17
|
aria-hidden="true"
|
|
18
18
|
>
|
|
19
19
|
</i>
|
|
@@ -58,7 +58,7 @@ exports[`VAlert.ts should have a close icon 1`] = `
|
|
|
58
58
|
aria-label="Close"
|
|
59
59
|
>
|
|
60
60
|
<span class="v-btn__content">
|
|
61
|
-
<i class="v-icon notranslate
|
|
61
|
+
<i class="v-icon notranslate mdi mdi-close-circle theme--light"
|
|
62
62
|
aria-hidden="true"
|
|
63
63
|
>
|
|
64
64
|
</i>
|
|
@@ -80,7 +80,7 @@ exports[`VBanner.ts should render component with icon 1`] = `
|
|
|
80
80
|
<div class="v-avatar v-banner__icon"
|
|
81
81
|
style="height: 40px; min-width: 40px; width: 40px;"
|
|
82
82
|
>
|
|
83
|
-
<i class="v-icon notranslate
|
|
83
|
+
<i class="v-icon notranslate mdi mdi-plus theme--light"
|
|
84
84
|
aria-hidden="true"
|
|
85
85
|
style="font-size: 28px;"
|
|
86
86
|
>
|