Skip to content

Commit cb81b73

Browse files
committed
fix for src attributes
1 parent f220c0d commit cb81b73

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

Diff for: lib/rules/no-invalid-template-root.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ function create (context) {
3131
return
3232
}
3333

34+
const hasSrc = utils.hasAttribute(node.startTag, 'src')
3435
const rootElements = []
3536
let extraText = null
3637
let extraElement = null
3738
let vIf = false
3839
for (const child of node.children) {
3940
if (child.type === 'VElement') {
40-
if (rootElements.length === 0) {
41+
if (rootElements.length === 0 && !hasSrc) {
4142
rootElements.push(child)
4243
vIf = utils.hasDirective(child.startTag, 'if')
4344
} else if (vIf && utils.hasDirective(child.startTag, 'else-if')) {
@@ -53,7 +54,13 @@ function create (context) {
5354
}
5455
}
5556

56-
if (extraText != null) {
57+
if (hasSrc && (extraText != null || extraElement != null)) {
58+
context.report({
59+
node: extraText || extraElement,
60+
loc: (extraText || extraElement).loc,
61+
message: "The template root which has 'src' attribute requires empty."
62+
})
63+
} else if (extraText != null) {
5764
context.report({
5865
node: extraText,
5966
loc: extraText.loc,
@@ -65,7 +72,7 @@ function create (context) {
6572
loc: extraElement.loc,
6673
message: 'The template root requires exactly one element.'
6774
})
68-
} else if (rootElements.length === 0) {
75+
} else if (rootElements.length === 0 && !hasSrc) {
6976
context.report({
7077
node,
7178
loc: node.loc,

Diff for: tests/lib/rules/no-invalid-template-root.js

+14
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ tester.run('no-invalid-template-root', rule, {
5858
{
5959
filename: 'test.vue',
6060
code: '<template><div v-if="foo"></div><div v-else-if="bar"></div></template>'
61+
},
62+
{
63+
filename: 'test.vue',
64+
code: '<template src="foo.html"></template>'
6165
}
6266
],
6367
invalid: [
@@ -105,6 +109,16 @@ tester.run('no-invalid-template-root', rule, {
105109
filename: 'test.vue',
106110
code: '<template><template></template></template>',
107111
errors: ["The template root disallows '<template>' elements."]
112+
},
113+
{
114+
filename: 'test.vue',
115+
code: '<template src="foo.html">abc</template>',
116+
errors: ["The template root which has 'src' attribute requires empty."]
117+
},
118+
{
119+
filename: 'test.vue',
120+
code: '<template src="foo.html"><div></div></template>',
121+
errors: ["The template root which has 'src' attribute requires empty."]
108122
}
109123
]
110124
})

0 commit comments

Comments
 (0)