feat: #3372 added a new `self` event modifier

pull/3377/head
Samuel Elgozi 6 years ago
parent 2ef004e324
commit 7342d484f1

@ -63,7 +63,8 @@ const valid_modifiers = new Set([
'stopPropagation', 'stopPropagation',
'capture', 'capture',
'once', 'once',
'passive' 'passive',
'self'
]); ]);
const passive_events = new Set([ const passive_events = new Set([

@ -10,6 +10,7 @@ export default function add_event_handlers(
let snippet = handler.render(block); let snippet = handler.render(block);
if (handler.modifiers.has('preventDefault')) snippet = `@prevent_default(${snippet})`; if (handler.modifiers.has('preventDefault')) snippet = `@prevent_default(${snippet})`;
if (handler.modifiers.has('stopPropagation')) snippet = `@stop_propagation(${snippet})`; if (handler.modifiers.has('stopPropagation')) snippet = `@stop_propagation(${snippet})`;
if (handler.modifiers.has('self')) snippet = `@self(${snippet}, ${target})`;
const opts = ['passive', 'once', 'capture'].filter(mod => handler.modifiers.has(mod)); const opts = ['passive', 'once', 'capture'].filter(mod => handler.modifiers.has(mod));

@ -73,6 +73,14 @@ export function stop_propagation(fn) {
}; };
} }
export function self(fn, el) {
return function(event) {
if(event.target !== el) return;
// @ts-ignore
return fn.call(this, event);
};
}
export function attr(node: Element, attribute: string, value?: string) { export function attr(node: Element, attribute: string, value?: string) {
if (value == null) node.removeAttribute(attribute); if (value == null) node.removeAttribute(attribute);
else node.setAttribute(attribute, value); else node.setAttribute(attribute, value);

@ -1,5 +1,5 @@
[{ [{
"message": "Valid event modifiers are preventDefault, stopPropagation, capture, once or passive", "message": "Valid event modifiers are preventDefault, stopPropagation, capture, once, passive or self",
"code": "invalid-event-modifier", "code": "invalid-event-modifier",
"start": { "start": {
"line": 1, "line": 1,

Loading…
Cancel
Save