Skip to content

Commit 5cbb23f

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/main' into main-beta
2 parents b61fcaf + 81100f2 commit 5cbb23f

File tree

5 files changed

+76
-47
lines changed

5 files changed

+76
-47
lines changed

package-lock.json

+44-44
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@
104104
"@semantic-release/npm": "^12.0.0",
105105
"@semantic-release/release-notes-generator": "^13.0.0",
106106
"@types/jest": "^29.5.12",
107-
"@typescript-eslint/eslint-plugin": "^7.7.1",
108-
"@typescript-eslint/parser": "^7.7.1",
107+
"@typescript-eslint/eslint-plugin": "^7.8.0",
108+
"@typescript-eslint/parser": "^7.8.0",
109109
"chokidar-cli": "^3.0.0",
110110
"concurrently": "^8.2.2",
111111
"copyfiles": "^2.4.1",

src/modules/esl-event-listener/test/listener.delegate.test.ts

+11
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {ESLEventUtils} from '../core/api';
2+
import type {DelegatedEvent} from '../core/api';
23

34
describe('ESlEventListener subscription and delegation', () => {
45
const host = document.createElement('section');
@@ -104,4 +105,14 @@ describe('ESlEventListener subscription and delegation', () => {
104105
expect(handler).toHaveBeenCalledWith(expect.objectContaining({$delegate: $btn}));
105106
});
106107
});
108+
109+
test('Delegation types are correct (build time)', () => {
110+
ESLEventUtils.subscribe(host, {event: 'click', selector: '.btn'}, (e: MouseEvent) => void 0);
111+
ESLEventUtils.subscribe(host, {event: 'keyup keydown', selector: '.btn'}, (e: KeyboardEvent) => void 0);
112+
ESLEventUtils.subscribe(host, {event: 'touchstart mousedown', selector: '.btn'}, (e: MouseEvent) => void 0);
113+
ESLEventUtils.subscribe(host, {event: 'click', selector: '.btn'}, (e: DelegatedEvent<MouseEvent>) => void 0);
114+
ESLEventUtils.subscribe(host, {event: 'keyup keydown', selector: '.btn'}, (e: DelegatedEvent<KeyboardEvent>) => void 0);
115+
ESLEventUtils.subscribe(host, {event: 'touchstart mousedown', selector: '.btn'}, (e: DelegatedEvent<PointerEvent>) => void 0);
116+
expect(true).toBe(true);
117+
});
107118
});

src/modules/esl-utils/decorators/listen.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function listen<K extends keyof ESLListenerEventMap>(event: K | PropertyP
2424
*/
2525
export function listen<K extends keyof ESLListenerEventMap>(
2626
desc: ESLListenerDescriptorExt<K> & {selector: string | PropertyProvider<string>}
27-
): ListenDecorator<DelegatedEvent<ESLListenerEventMap[K]>>;
27+
): ListenDecorator<DelegatedEvent<ESLListenerEventMap[K]> | ESLListenerEventMap[K]>;
2828
/**
2929
* Decorator to declare listener ({@link ESLEventListener}) meta information using {@link ESLListenerDescriptor}
3030
* Defines auto-subscribable event by default

src/modules/esl-utils/decorators/test/listen.test.ts

+18
Original file line numberDiff line numberDiff line change
@@ -189,4 +189,22 @@ describe('Decorator: @listen', () => {
189189
const button = test.querySelector('button');
190190
button?.click();
191191
});
192+
193+
test('Delegation types are correct (build time)', () => {
194+
class Test extends HTMLElement {
195+
@listen({event: 'click', selector: '.btn'})
196+
onEvent1(e: MouseEvent) {}
197+
@listen({event: 'keyup keydown', selector: '.btn'})
198+
onEvent2(e: KeyboardEvent) {}
199+
@listen({event: 'touchstart mousedown', selector: '.btn'})
200+
onEvent3(e: PointerEvent) {}
201+
@listen({event: 'click', selector: '.btn'})
202+
onEvent4(e: DelegatedEvent<MouseEvent>) {}
203+
@listen({event: 'keyup keydown', selector: '.btn'})
204+
onEvent5(e: DelegatedEvent<KeyboardEvent>) {}
205+
@listen({event: 'touchstart mousedown', selector: '.btn'})
206+
onEvent6(e: DelegatedEvent<PointerEvent>) {}
207+
}
208+
expect(Test).toBe(Test);
209+
});
192210
});

0 commit comments

Comments
 (0)