diff options
Diffstat (limited to 'alpinejs/packages/alpinejs/src/directives/x-on.js')
-rw-r--r-- | alpinejs/packages/alpinejs/src/directives/x-on.js | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/alpinejs/packages/alpinejs/src/directives/x-on.js b/alpinejs/packages/alpinejs/src/directives/x-on.js new file mode 100644 index 0000000..91c6d89 --- /dev/null +++ b/alpinejs/packages/alpinejs/src/directives/x-on.js @@ -0,0 +1,16 @@ +import { directive, into, mapAttributes, prefix, startingWith } from '../directives' +import { evaluateLater } from '../evaluator' +import { skipDuringClone } from '../clone' +import on from '../utils/on' + +mapAttributes(startingWith('@', into(prefix('on:')))) + +directive('on', skipDuringClone((el, { value, modifiers, expression }, { cleanup }) => { + let evaluate = expression ? evaluateLater(el, expression) : () => {} + + let removeListener = on(el, value, modifiers, e => { + evaluate(() => {}, { scope: { '$event': e }, params: [e] }) + }) + + cleanup(() => removeListener()) +})) |