Skip to content

Commit 0c7a532

Browse files
committed
fix: formdata is not updating when options populated dynamically
1 parent 7692d62 commit 0c7a532

File tree

4 files changed

+53
-6
lines changed

4 files changed

+53
-6
lines changed

packages/demo/src/examples/example01.html

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ <h2 class="bd-title">
3939
<label class="col-sm-2">Multiple Select</label>
4040

4141
<div class="col-sm-10">
42-
<select class="multiple-select full-width" data-test="select1">
43-
<option value="1">First</option>
44-
<option value="2">Second</option>
45-
<option value="3">Third</option>
46-
<option value="4">Fourth</option>
47-
</select>
42+
<form id="form">
43+
<select name="select1" class="multiple-select full-width" data-test="select1">
44+
<option value="1">First</option>
45+
<option value="2">Second</option>
46+
<option value="3">Third</option>
47+
<option value="4">Fourth</option>
48+
</select>
49+
</form>
4850
</div>
4951
</div>
5052

packages/demo/src/examples/example08.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,14 @@ <h2 class="bd-title">
6363
<select id="group" class="full-width" multiple></select>
6464
</div>
6565
</div>
66+
67+
<div class="mb-3 row">
68+
<label class="col-sm-2">With Form</label>
69+
70+
<div class="col-sm-10">
71+
<form id="form">
72+
<select name="select6" id="withform" class="full-width"></select>
73+
</form>
74+
</div>
75+
</div>
6676
</div>

packages/demo/src/examples/example08.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export default class Example {
66
ms3?: MultipleSelectInstance;
77
ms4?: MultipleSelectInstance;
88
ms5?: MultipleSelectInstance;
9+
ms6?: MultipleSelectInstance;
910

1011
mount() {
1112
this.ms1 = multipleSelect('#basic', {
@@ -157,6 +158,24 @@ export default class Example {
157158
},
158159
],
159160
}) as MultipleSelectInstance;
161+
162+
this.ms6 = multipleSelect('#withform', {
163+
dataTest: 'select6',
164+
data: [
165+
{
166+
text: 'June',
167+
value: 6,
168+
},
169+
{
170+
text: 'July',
171+
value: 7,
172+
},
173+
{
174+
text: 'August',
175+
value: 8,
176+
},
177+
],
178+
}) as MultipleSelectInstance;
160179
}
161180

162181
unmount() {
@@ -166,10 +185,12 @@ export default class Example {
166185
this.ms3?.destroy();
167186
this.ms4?.destroy();
168187
this.ms5?.destroy();
188+
this.ms6?.destroy();
169189
this.ms1 = undefined;
170190
this.ms2 = undefined;
171191
this.ms3 = undefined;
172192
this.ms4 = undefined;
173193
this.ms5 = undefined;
194+
this.ms6 = undefined;
174195
}
175196
}

playwright/e2e/example08.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,18 @@ test.describe('Example 08 - Data Property', () => {
4343
await page.getByRole('option', { name: 'Group 1' }).click();
4444
await page.getByRole('button', { name: '11 of 12 selected' }).click();
4545
});
46+
47+
test('formdata should be updated after select', async({ page }) => {
48+
await page.goto('#/example08');
49+
await page.locator('div[data-test=select6].ms-parent').click();
50+
await page.getByRole('option', { name: 'July' }).click();
51+
52+
const selectedItemValue = await page.evaluate(() => {
53+
const form = document.getElementById('form');
54+
const formData = new FormData(form);
55+
return formData.get('select6')
56+
})
57+
58+
expect(selectedItemValue).toBe(7)
59+
});
4660
});

0 commit comments

Comments
 (0)