Skip to content

Commit 1bb0bfa

Browse files
authored
fix(engine): do not render empty string attr values (#4748)
1 parent 421dbc4 commit 1bb0bfa

File tree

12 files changed

+78
-48
lines changed

12 files changed

+78
-48
lines changed

packages/@lwc/engine-server/src/__tests__/fixtures/attribute-empty-string/error.txt

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<x-test>
2+
<template shadowrootmode="open">
3+
<div data-foo>
4+
</div>
5+
<div data-foo>
6+
</div>
7+
<div data-foo>
8+
</div>
9+
</template>
10+
</x-test>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export const tagName = 'x-test';
2+
export { default } from 'x/test';
3+
export * from 'x/test';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<template>
2+
<div data-foo></div>
3+
<div data-foo=''></div>
4+
<div data-foo=""></div>
5+
</template>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { LightningElement } from 'lwc';
2+
3+
export default class extends LightningElement {
4+
}
Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
<x-component>
22
<template shadowrootmode="open">
3-
<button autofocus="">
3+
<button autofocus>
44
</button>
5-
<input autofocus="">
6-
<keygen autofocus="">
7-
<select autofocus="">
5+
<input autofocus>
6+
<keygen autofocus>
7+
<select autofocus>
88
</select>
9-
<textarea autofocus="">
9+
<textarea autofocus>
1010
</textarea>
11-
<audio autoplay="">
11+
<audio autoplay>
1212
</audio>
13-
<video autoplay="">
13+
<video autoplay>
1414
</video>
15-
<input checked="">
16-
<button disabled="">
15+
<input checked>
16+
<button disabled>
1717
</button>
18-
<fieldset disabled="">
18+
<fieldset disabled>
1919
</fieldset>
20-
<input disabled="">
21-
<optgroup disabled="">
20+
<input disabled>
21+
<optgroup disabled>
2222
</optgroup>
23-
<select disabled="">
23+
<select disabled>
2424
</select>
25-
<textarea disabled="">
25+
<textarea disabled>
2626
</textarea>
27-
<button formnovalidate="">
27+
<button formnovalidate>
2828
</button>
29-
<audio loop="">
29+
<audio loop>
3030
</audio>
31-
<video loop="">
31+
<video loop>
3232
</video>
33-
<input multiple="">
34-
<select multiple="">
33+
<input multiple>
34+
<select multiple>
3535
</select>
36-
<audio muted="">
36+
<audio muted>
3737
</audio>
38-
<video muted="">
38+
<video muted>
3939
</video>
40-
<form novalidate="">
40+
<form novalidate>
4141
</form>
42-
<details open="">
42+
<details open>
4343
</details>
44-
<input readonly="">
45-
<textarea readonly="">
44+
<input readonly>
45+
<textarea readonly>
4646
</textarea>
47-
<input required="">
48-
<select required="">
47+
<input required>
48+
<select required>
4949
</select>
50-
<textarea required="">
50+
<textarea required>
5151
</textarea>
52-
<ol reversed="">
52+
<ol reversed>
5353
</ol>
54-
<option selected="">
54+
<option selected>
5555
</option>
5656
</template>
5757
</x-component>

packages/@lwc/engine-server/src/__tests__/fixtures/known-boolean-attributes/default-def-html-attributes/static/expected.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,21 @@
2020
</div>
2121
<div title>
2222
</div>
23-
<div accesskey="">
23+
<div accesskey>
2424
</div>
25-
<div dir="">
25+
<div dir>
2626
</div>
27-
<div draggable="">
27+
<div draggable>
2828
</div>
29-
<div hidden="">
29+
<div hidden>
3030
</div>
3131
<div id>
3232
</div>
33-
<div lang="">
33+
<div lang>
3434
</div>
3535
<div spellcheck="true">
3636
</div>
37-
<div title="">
37+
<div title>
3838
</div>
3939
<div accesskey=" ">
4040
</div>

packages/@lwc/engine-server/src/__tests__/fixtures/known-boolean-attributes/incorrect-tag-attr-pair/static/expected.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
</div>
55
<div formnovalidate>
66
</div>
7-
<div autofocus="">
7+
<div autofocus>
88
</div>
9-
<div formnovalidate="">
9+
<div formnovalidate>
1010
</div>
1111
<div autofocus=" ">
1212
</div>

packages/@lwc/template-compiler/src/__tests__/fixtures/attributes/boolean-attribute/hidden-global-attr/expected.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import _implicitScopedStylesheets from "./hidden-global-attr.scoped.css?scoped=t
33
import _xFoo from "x/foo";
44
import { freezeTemplate, parseFragment, registerTemplate } from "lwc";
55
const $fragment1 = parseFragment`<p hidden${3}>boolean present</p>`;
6-
const $fragment2 = parseFragment`<p hidden=""${3}>empty string, should be true</p>`;
6+
const $fragment2 = parseFragment`<p hidden${3}>empty string, should be true</p>`;
77
const $fragment3 = parseFragment`<p hidden="other than true"${3}>string value, should be true</p>`;
88
const $fragment4 = parseFragment`<p${"a0:hidden"}${3}>computed value, should be resolved in component</p>`;
99
const $fragment5 = parseFragment`<p hidden="3"${3}>integer value, should be true</p>`;

packages/@lwc/template-compiler/src/__tests__/fixtures/attributes/boolean-attribute/required/expected.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import _implicitScopedStylesheets from "./required.scoped.css?scoped=true";
33
import _xFoo from "x/foo";
44
import { freezeTemplate, parseFragment, registerTemplate } from "lwc";
55
const $fragment1 = parseFragment`<input required value="boolean present"${3}>`;
6-
const $fragment2 = parseFragment`<input required="" value="empty string"${3}>`;
6+
const $fragment2 = parseFragment`<input required value="empty string"${3}>`;
77
const $fragment3 = parseFragment`<input required="other than true" value="string value"${3}>`;
88
const $fragment4 = parseFragment`<input${"a0:required"} value="computed value"${3}>`;
99
const $fragment5 = parseFragment`<input required="3" value="integer value"${3}>`;

0 commit comments

Comments
 (0)