merge master -> gh-1088

pull/1819/head
Rich Harris 6 years ago
commit 769e03296f

@ -73,12 +73,12 @@ export function createComment() {
return document.createComment('');
}
export function addListener(node, event, handler) {
node.addEventListener(event, handler, false);
export function addListener(node, event, handler, options) {
node.addEventListener(event, handler, options);
}
export function removeListener(node, event, handler) {
node.removeEventListener(event, handler, false);
export function removeListener(node, event, handler, options) {
node.removeEventListener(event, handler, options);
}
export function setAttribute(node, attribute, value) {

@ -0,0 +1,36 @@
import EventHandler from '../compile/nodes/EventHandler';
import deindent from '../utils/deindent';
export default function getEventModifiers(handlerName: String) {
// Ignore first element because it's the event name, i.e. click
let modifiers = handlerName.split('|').slice(1);
let eventModifiers = modifiers.reduce((acc, m) => {
if (m === 'stopPropagation')
acc.bodyModifiers += 'event.stopPropagation();\n';
else if (m === 'preventDefault')
acc.bodyModifiers += 'event.preventDefault();\n';
else if (m === 'capture')
acc.optionModifiers[m] = true;
else if (m === 'once')
acc.optionModifiers[m] = true;
else if (m === 'passive')
acc.optionModifiers[m] = true;
return acc;
}, {
bodyModifiers: '',
optionModifiers: {
capture: false,
once: false,
passive: false,
}
});
if (eventModifiers.bodyModifiers !== '')
eventModifiers.bodyModifiers = deindent`
${eventModifiers.bodyModifiers}
`;
return eventModifiers;
}

@ -0,0 +1,15 @@
[{
"message": "Valid event modifiers are stopPropagation, preventDefault, capture, once, passive.",
"code": "invalid-event-modifiers",
"start": {
"line": 1,
"column": 8,
"character": 8
},
"end": {
"line": 1,
"column": 36,
"character": 36
},
"pos": 8
}]

@ -0,0 +1 @@
<button on:click|stop|bad="doThat()"></button>
Loading…
Cancel
Save