diff --git a/packages/shared/createEventHook/index.test.ts b/packages/shared/createEventHook/index.test.ts index a01ddad8d87..a9bbea364b6 100644 --- a/packages/shared/createEventHook/index.test.ts +++ b/packages/shared/createEventHook/index.test.ts @@ -39,6 +39,25 @@ describe('createEventHook', () => { expect(timesFired).toBe(2) }) + it('should trigger event and pass falsy values', () => { + let timesFired = 0 + + type Falsy = false | 0 | '' | null | undefined + const { on: onResult, trigger } = createEventHook() + + const values: Falsy[] = [false, 0, '', null, undefined] + const results: Falsy[] = [] + onResult((value: Falsy) => { + timesFired++ + results.push(value) + }) + for (const value of values) + trigger(value) + + expect(timesFired).toBe(values.length) + expect(results).toMatchObject(values) + }) + it('should add and remove event listener', () => { const listener = vi.fn() const { on, off, trigger } = createEventHook() diff --git a/packages/shared/createEventHook/index.ts b/packages/shared/createEventHook/index.ts index 8f048571e78..f4cf2ccbec5 100644 --- a/packages/shared/createEventHook/index.ts +++ b/packages/shared/createEventHook/index.ts @@ -48,8 +48,8 @@ export function createEventHook(): EventHook { } } - const trigger: EventHookTrigger = (param?: T) => { - return Promise.all(Array.from(fns).map(fn => param ? fn(param) : (fn as Callback)())) + const trigger: EventHookTrigger = (...args) => { + return Promise.all(Array.from(fns).map(fn => fn(...(args as [T])))) } return {