@@ -7,27 +7,30 @@ import Modifier from 'ember-modifier';
7
7
const modifierName = 'on-event' ;
8
8
9
9
const cleanup = ( instance ) => {
10
- const { eventName , events } = instance ;
11
- if ( eventName ) {
10
+ const { eventNames , events } = instance ;
11
+ for ( const eventName of eventNames ?? [ ] ) {
12
12
events . off ( eventName , instance , instance . _handler ) ;
13
13
}
14
14
} ;
15
15
16
16
export default class OnEventModifier extends Modifier {
17
17
@service events ;
18
- @tracked eventName ;
18
+ @tracked eventNames ;
19
19
@tracked handler ;
20
20
21
21
modify ( element , positionalArgs ) {
22
22
assert ( `You must provide at least 2 arguments for {{${ modifierName } }}` , positionalArgs . length > 1 ) ;
23
- const [ eventName , handler ] = positionalArgs ;
23
+ const [ eventNameOrNames , handler ] = positionalArgs ;
24
+ const eventNames = Array . isArray ( eventNameOrNames ) ? eventNameOrNames : [ eventNameOrNames ] ;
24
25
assert (
25
- `You must provide a string as the first positional argument for {{${ modifierName } }}` ,
26
- typeof eventName === 'string' && eventName . length > 0
26
+ `You must provide a string or array of strings as the first positional argument for {{${ modifierName } }}` ,
27
+ eventNames . every ( ( eventName ) => typeof eventName === 'string' && eventName . length > 0 )
27
28
) ;
28
- this . eventName = eventName ;
29
+ this . eventNames = eventNames ;
29
30
this . handler = handler ;
30
- this . events . on ( this . eventName , this , this . _handler ) ;
31
+ for ( const eventName of this . eventNames ) {
32
+ this . events . on ( eventName , this , this . _handler ) ;
33
+ }
31
34
registerDestructor ( this , cleanup ) ;
32
35
}
33
36
0 commit comments