Skip to content

Commit 0dca2f2

Browse files
committed
Rename settings change event for better consistency and add test
Refs: #1834
1 parent 819a75c commit 0dca2f2

File tree

4 files changed

+46
-4
lines changed

4 files changed

+46
-4
lines changed

packages/components/src/components/table-stateless/component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ export class KolTableStateless implements TableStatelessAPI {
191191
}
192192
}
193193

194-
@Listen('kolTableSettingsChange')
194+
@Listen('settingsChange')
195195
public handleSettingsChange(event: CustomEvent<TableSettings>) {
196196
setState(this, '_tableSettings', event.detail);
197197
}

packages/components/src/components/table-stateless/table-settings.e2e.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { expect } from '@playwright/test';
22
import { test } from '@stencil/playwright';
3-
import type { TableHeaderCellsPropType } from '../../schema';
3+
import type { TableHeaderCellsPropType, TableSettings } from '../../schema';
4+
import { KolEvent } from '../../utils/events';
45

56
const DATA = [
67
{ id: '1001', name: 'John', age: 30 },
@@ -63,6 +64,47 @@ test.describe('kol-table-settings', () => {
6364
// Verify name column is still hidden
6465
await expect(nameCheckbox).not.toBeChecked();
6566
});
67+
68+
test('it emits an DOM event when settings change', async ({ page }) => {
69+
const tableStateless = page.locator('kol-table-stateless');
70+
const settingsButton = page.getByTestId('popover-button').locator('button');
71+
await settingsButton.click();
72+
73+
const eventPromise = tableStateless.evaluate((element: HTMLKolTableStatelessElement, KolEvent) => {
74+
return new Promise<TableSettings>((resolve) => {
75+
element.addEventListener(KolEvent.settingsChange, (event: Event) => {
76+
resolve((event as CustomEvent).detail as TableSettings);
77+
});
78+
});
79+
}, KolEvent);
80+
81+
// Apply changes
82+
const applyButton = page.getByTestId('table-settings-apply');
83+
await applyButton.click();
84+
85+
await expect(eventPromise).resolves.toEqual({
86+
columns: [
87+
{
88+
key: 'id',
89+
label: 'ID',
90+
position: 0,
91+
visible: true,
92+
},
93+
{
94+
key: 'name',
95+
label: 'Name',
96+
position: 1,
97+
visible: true,
98+
},
99+
{
100+
key: 'age',
101+
label: 'Age',
102+
position: 2,
103+
visible: true,
104+
},
105+
],
106+
});
107+
});
66108
});
67109

68110
test.describe('Column Visibility Management', () => {

packages/components/src/components/table-stateless/table-settings.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export class KolTableSettings {
8787
return;
8888
} else if (this.host) {
8989
this.errorMessage = null;
90-
dispatchDomEvent(this.host, KolEvent.tableSettingsChange, this.tableSettings);
90+
dispatchDomEvent(this.host, KolEvent.settingsChange, this.tableSettings);
9191
void this.popoverRef?.hidePopover();
9292
}
9393
}

packages/components/src/utils/events.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ enum KolEvent {
1414
sort = 'kolSort',
1515
submit = 'kolSubmit',
1616
toggle = 'kolToggle',
17-
tableSettingsChange = 'kolTableSettingsChange',
17+
settingsChange = 'settingsChange',
1818
}
1919

2020
function createKoliBriEvent<T>(event: KolEvent, detail?: T): CustomEvent {

0 commit comments

Comments
 (0)