Skip to content

Commit 81dff42

Browse files
committed
fix: the label cannot be changed programatically
1 parent 61bf2ac commit 81dff42

2 files changed

Lines changed: 53 additions & 0 deletions

File tree

src/test/vscode-single-select.test.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,56 @@ describe('vscode-single-select', () => {
3333
expect(el.value).to.eq('Ipsum');
3434
});
3535

36+
it('should display selected value when value prop is changed', async () => {
37+
const el = (await fixture(html`
38+
<vscode-single-select>
39+
<vscode-option>Lorem</vscode-option>
40+
<vscode-option>Ipsum</vscode-option>
41+
<vscode-option>Dolor</vscode-option>
42+
</vscode-single-select>
43+
`)) as VscodeSingleSelect;
44+
45+
el.value = 'Ipsum';
46+
await el.updateComplete;
47+
48+
expect(el).shadowDom.to.equal(`
49+
<slot class="main-slot"></slot>
50+
<div class="select-face">
51+
<span class="text">
52+
Ipsum
53+
</span>
54+
<span class="icon">
55+
</span>
56+
</div>
57+
`);
58+
expect(el.value).to.eq('Ipsum');
59+
});
60+
61+
it('select face should be empty when the value is invalid', async () => {
62+
const el = (await fixture(html`
63+
<vscode-single-select>
64+
<vscode-option>Lorem</vscode-option>
65+
<vscode-option>Ipsum</vscode-option>
66+
<vscode-option>Dolor</vscode-option>
67+
</vscode-single-select>
68+
`)) as VscodeSingleSelect;
69+
70+
el.value = 'trololo';
71+
await el.updateComplete;
72+
73+
expect(el).shadowDom.to.equal(`
74+
<slot class="main-slot"></slot>
75+
<div class="select-face">
76+
<span class="text">
77+
<span class="empty-label-placeholder"></span>
78+
</span>
79+
<span class="icon">
80+
</span>
81+
</div>
82+
`);
83+
expect(el.value).to.eq('trololo');
84+
});
85+
3686
it('should display selected value when an option is clicked', async () => {
3787
const el = (await fixture(html`
3888
<vscode-single-select>

src/vscode-select/vscode-single-select.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ export class VscodeSingleSelect extends VscodeSelectBase {
4646

4747
if (this._selectedIndex > -1) {
4848
this._options[this._selectedIndex].selected = true;
49+
this._labelText = this._options[this._selectedIndex].label;
50+
} else {
51+
this._labelText = '';
4952
}
5053
}
5154
get value(): string {

0 commit comments

Comments
 (0)