From 3350f166db67fa2af4806b830931168618e0aace Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 3 Dec 2017 13:50:04 -0500 Subject: [PATCH] dont transform bidi transitions twice - fixes #962 --- .../dom/visitors/Element/addTransitions.ts | 9 +++++--- .../_config.js | 21 +++++++++++++++++++ .../main.html | 18 ++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 test/runtime/samples/transition-js-parameterised-with-state/_config.js create mode 100644 test/runtime/samples/transition-js-parameterised-with-state/main.html diff --git a/src/generators/dom/visitors/Element/addTransitions.ts b/src/generators/dom/visitors/Element/addTransitions.ts index 10d0b90f50..0fa9d293c2 100644 --- a/src/generators/dom/visitors/Element/addTransitions.ts +++ b/src/generators/dom/visitors/Element/addTransitions.ts @@ -15,10 +15,9 @@ export default function addTransitions( if (!intro && !outro) return; - if (intro) block.contextualise(intro.expression); // TODO remove all these - if (outro) block.contextualise(outro.expression); - if (intro === outro) { + block.contextualise(intro.expression); // TODO remove all these + const name = block.getUniqueName(`${node.var}_transition`); const snippet = intro.expression ? intro.metadata.snippet @@ -49,6 +48,8 @@ export default function addTransitions( const outroName = outro && block.getUniqueName(`${node.var}_outro`); if (intro) { + block.contextualise(intro.expression); + block.addVariable(introName); const snippet = intro.expression ? intro.metadata.snippet @@ -74,6 +75,8 @@ export default function addTransitions( } if (outro) { + block.contextualise(outro.expression); + block.addVariable(outroName); const snippet = outro.expression ? outro.metadata.snippet diff --git a/test/runtime/samples/transition-js-parameterised-with-state/_config.js b/test/runtime/samples/transition-js-parameterised-with-state/_config.js new file mode 100644 index 0000000000..b656b77795 --- /dev/null +++ b/test/runtime/samples/transition-js-parameterised-with-state/_config.js @@ -0,0 +1,21 @@ +export default { + data: { + duration: 200 + }, + + test(assert, component, target, window, raf) { + component.set({ visible: true }); + const div = target.querySelector('div'); + assert.equal(div.foo, 0); + + raf.tick(50); + assert.equal(div.foo, 100); + + raf.tick(100); + assert.equal(div.foo, 200); + + raf.tick(101); + + component.destroy(); + }, +}; diff --git a/test/runtime/samples/transition-js-parameterised-with-state/main.html b/test/runtime/samples/transition-js-parameterised-with-state/main.html new file mode 100644 index 0000000000..45d9d37a1c --- /dev/null +++ b/test/runtime/samples/transition-js-parameterised-with-state/main.html @@ -0,0 +1,18 @@ +{{#if visible}} +
fades in
+{{/if}} + + \ No newline at end of file