Skip to content

Commit 01a82be

Browse files
authored
fix(ui): svelte select clear event (#1792)
Signed-off-by: axel7083 <[email protected]>
1 parent 7576181 commit 01a82be

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

packages/frontend/src/lib/select/Select.spec.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,38 @@ test('selecting value should call onchange callback', async () => {
121121
});
122122
});
123123
});
124+
125+
test('clearing value should call onchange callback with undefined', async () => {
126+
const onChangeMock = vi.fn();
127+
const { container } = render(Select, {
128+
label: 'Select Item',
129+
items: [
130+
{
131+
label: 'Dummy Item 1',
132+
value: 'item-1',
133+
},
134+
{
135+
label: 'Dummy Item 2',
136+
value: 'item-2',
137+
},
138+
],
139+
value: {
140+
label: 'Dummy Item 2',
141+
value: 'item-2',
142+
},
143+
onchange: onChangeMock,
144+
});
145+
146+
// get clear HTMLElement
147+
const clear = container.querySelector('button[class~="clear-select"]');
148+
// ensure we have two options
149+
expect(clear).not.toBeNull();
150+
if (!clear) throw new Error('clear is null');
151+
152+
await fireEvent.click(clear);
153+
154+
await vi.waitFor(() => {
155+
expect(onChangeMock).toHaveBeenCalledWith(undefined);
156+
expect(onChangeMock).toHaveBeenCalledOnce();
157+
});
158+
});

packages/frontend/src/lib/select/Select.svelte

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,19 @@ function handleOnChange(e: CustomEvent<T | undefined>): void {
1515
value = e.detail;
1616
onchange?.(value);
1717
}
18+
19+
function handleOnClear(): void {
20+
value = undefined;
21+
onchange?.(value);
22+
}
1823
</script>
1924

2025
<Select
2126
inputAttributes={{ 'aria-label': label }}
2227
name={name}
2328
disabled={disabled}
2429
value={value}
30+
on:clear={handleOnClear}
2531
on:change={handleOnChange}
2632
--item-color={'var(--pd-dropdown-item-text)'}
2733
--item-is-active-color={'var(--pd-dropdown-item-text)'}

0 commit comments

Comments
 (0)