<!-- Copyright (c) 2015 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt --> <link rel="import" href="../../../polymer/polymer.html"> <link rel="import" href="../../neon-shared-element-animatable-behavior.html"> <dom-module id="fullsize-page-with-card"> <link rel="import" type="css" href="../shared.css"> <style> :host { display: block; } .fixed { position: fixed; top: 0; left: 0; height: 100vh; width: 100vw; } .card { position: relative; margin: 200px 100px 0; height: 700px; } </style> <template> <div id="fixed" class$="[[_computeFixedBackgroundClass(color)]]"></div> <div id="card" class$="[[_computeCardClass(color)]]"></div> </template> </dom-module> <script> Polymer({ is: 'fullsize-page-with-card', behaviors: [ Polymer.NeonSharedElementAnimatableBehavior ], properties: { color: { type: String }, sharedElements: { type: Object, value: function() { return { 'hero': this.$.card, 'ripple': this.$.fixed } } }, animationConfig: { type: Object, value: function() { return { 'entry': [{ name: 'ripple-animation', id: 'ripple', toPage: this, }, { name: 'hero-animation', id: 'hero', toPage: this, timing: { delay: 150 } }], 'exit': [{ name: 'fade-out-animation', node: this.$.fixed }, { name: 'transform-animation', transformFrom: 'none', transformTo: 'translate(0px,-200vh) scale(0.9,1)', node: this.$.card }] } } } }, _computeCardClass: function(color) { var cls = 'card'; if (color) { cls += ' ' + color + '-300'; } return cls; }, _computeFixedBackgroundClass: function(color) { var cls = 'fixed'; if (color) { cls += ' ' + color + '-100'; } return cls; } }); </script>