From 58e532fc0870d6ba29dc69eb6b32953501a4b4d5 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 21 Nov 2018 19:42:51 -0500 Subject: [PATCH] component shorthand events --- src/compile/render-dom/index.ts | 2 +- .../render-dom/wrappers/InlineComponent/index.ts | 6 ++++-- src/internal/Component.js | 7 +++++++ .../event-handler-shorthand-component/_config.js | 2 +- test/runtime/samples/events-custom/_config.js | 15 --------------- test/runtime/samples/events-custom/main.html | 1 - 6 files changed, 13 insertions(+), 20 deletions(-) delete mode 100644 test/runtime/samples/events-custom/_config.js delete mode 100644 test/runtime/samples/events-custom/main.html diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index 80d26de0ce..2011ca85f5 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -113,7 +113,7 @@ export default function dom( const superclass = component.alias(options.dev ? '$$ComponentDev' : '$$Component'); if (options.dev && !options.hydratable) { - block.builders.hydrate.addLine( + block.builders.claim.addLine( 'throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");' ); } diff --git a/src/compile/render-dom/wrappers/InlineComponent/index.ts b/src/compile/render-dom/wrappers/InlineComponent/index.ts index 216d4f3fcd..b72c69e59d 100644 --- a/src/compile/render-dom/wrappers/InlineComponent/index.ts +++ b/src/compile/render-dom/wrappers/InlineComponent/index.ts @@ -54,7 +54,9 @@ export default class InlineComponentWrapper extends Wrapper { }); this.node.handlers.forEach(handler => { - block.addDependencies(handler.expression.dependencies); + if (handler.expression) { + block.addDependencies(handler.expression.dependencies); + } }); this.var = ( @@ -260,7 +262,7 @@ export default class InlineComponentWrapper extends Wrapper { `${handler.name.replace(/[^a-zA-Z0-9_$]/g, '_')}_handler` ); - if (handler.expression.contextual_dependencies.size > 0) { + if (handler.expression && handler.expression.contextual_dependencies.size > 0) { block.maintainContext = true; // TODO is there a better place to put this? const deps = Array.from(handler.expression.contextual_dependencies); diff --git a/src/internal/Component.js b/src/internal/Component.js index 01d9f046d1..bc3f9a424a 100644 --- a/src/internal/Component.js +++ b/src/internal/Component.js @@ -117,4 +117,11 @@ export class $$ComponentDev extends $$Component { super(options); } + + $destroy() { + super.$destroy(); + this.$$destroy = () => { + console.warn(`Component was already destroyed`); + }; + } } \ No newline at end of file diff --git a/test/runtime/samples/event-handler-shorthand-component/_config.js b/test/runtime/samples/event-handler-shorthand-component/_config.js index 065df36d77..3463b5c6f4 100644 --- a/test/runtime/samples/event-handler-shorthand-component/_config.js +++ b/test/runtime/samples/event-handler-shorthand-component/_config.js @@ -9,7 +9,7 @@ export default { let answer; component.$on('foo', event => { - answer = event.answer; + answer = event.detail.answer; }); button.dispatchEvent(event); diff --git a/test/runtime/samples/events-custom/_config.js b/test/runtime/samples/events-custom/_config.js deleted file mode 100644 index c34faf4b61..0000000000 --- a/test/runtime/samples/events-custom/_config.js +++ /dev/null @@ -1,15 +0,0 @@ -export default { - test(assert, component) { - let count = 0; - - const expected = { x: 1 }; - - component.$on('foo', data => { - assert.equal(data, expected); - count += 1; - }); - - component.fire('foo', expected); - assert.equal(count, 1); - } -}; diff --git a/test/runtime/samples/events-custom/main.html b/test/runtime/samples/events-custom/main.html deleted file mode 100644 index 7c89b545c5..0000000000 --- a/test/runtime/samples/events-custom/main.html +++ /dev/null @@ -1 +0,0 @@ -