From 5c36ed7b7307c54c7323ea003edfd6a42540926c Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Mon, 12 Jun 2017 04:58:03 +0430 Subject: [PATCH] fix(client): combine & prefer leave* transitions of from route #566 --- lib/app/client.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/app/client.js b/lib/app/client.js index ccb2381d02..422eff8221 100644 --- a/lib/app/client.js +++ b/lib/app/client.js @@ -14,12 +14,23 @@ let router <%= (store ? 'let store' : '') %> function mapTransitions(Components, to, from) { + const resolve = t => (typeof t.options.transition === 'function') + ? t.options.transition(to, from) + : Object.assign({}, t.options.transition) + + const resolveRoute = r => resolve(r.matched[0].components.default) + return Components.map((Component) => { - let transition = Component.options.transition - if (typeof transition === 'function') { - return transition(to, from) - } - return transition + let transitions = Object.assign({}, to ? resolveRoute(to) : resolve(Component)) + // Combine transitions + // Prefer leave* transitions of from route + let from_transitions = from ? resolveRoute(from) : {} + Object.keys(from_transitions).forEach(key=> { + if(from_transitions[key] && key.toLowerCase().indexOf('leave') !== -1) { + transitions[key] = from_transitions[key] + } + }) + return transitions }) }