fullsize-page-with-card-controllet.html 3.75 KB
<!--
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="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/neon-animation/neon-shared-element-animatable-behavior.html">

<dom-module id="fullsize-page-with-card">

    <style>

        :host {
            display: block;
        }

        .fixed {
            position: absolute;
            top: 0;
            left: 0;
            height: 100vh;
            width: 100vw;
        }

        .card {
            position: relative;
            margin: 20px 20px 20px 20px;
            height: 700px;
        }

        .grid-item-c0 {background-color: #0D47A1;}
        .grid-item-c1 {background-color: #1976D2;}
        .grid-item-c2 {background-color: #2196F3;}
        .grid-item-c3 {background-color: #64B5F6;}
        .grid-item-c4 {background-color: #BBDEFB;}

        .grid-item-c0-l {background-color: #1565C0;}
        .grid-item-c1-l {background-color: #1E88E5;}
        .grid-item-c2-l {background-color: #42A5F5;}
        .grid-item-c3-l {background-color: #90CAF9;}
        .grid-item-c4-l {background-color: #E3F2FD;}

    </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';
            return cls + ' ' + color;
        },

        _computeFixedBackgroundClass: function(color) {
            var cls = 'fixed';
            return cls + ' ' + color + '-l';
        }

    });

</script>