Commit 925d7edd5464ea6025aec05ae148dd06d21133b0

Authored by isisadmin
1 parent 9bb60e44

animated-grid-controllet fullsize-page-with-card-controllet

controllets/animated-grid-controllet/animated-grid-controllet.html 0 → 100644
  1 +<!--
  2 +Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
  3 +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
  4 +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
  5 +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
  6 +Code distributed by Google as part of the polymer project is also
  7 +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
  8 +-->
  9 +<link rel="import" href="../../bower_components/polymer/polymer.html">
  10 +<link rel="import" href="../../bower_components/paper-styles/paper-styles.html">
  11 +<link rel="import" href="../../bower_components/neon-animation/neon-shared-element-animatable-behavior.html">
  12 +
  13 +<dom-module id="animated-grid-controllet">
  14 +
  15 + <style>
  16 +
  17 + :host {
  18 + display: block;
  19 + /*background: #000;*/
  20 + }
  21 +
  22 + /* clearfix */
  23 + .grid:after
  24 + {
  25 + content: '';
  26 + display: block;
  27 + clear: both;
  28 + }
  29 +
  30 + /* ---- grid-item ---- */
  31 +
  32 +
  33 + .grid-item
  34 + {
  35 + float: left;
  36 + box-sizing: border-box;
  37 + -moz-box-sizing: border-box;
  38 + -webkit-box-sizing: border-box;
  39 + border: 4px solid white;
  40 + }
  41 +
  42 + .grid-sizer {width: 200px;}
  43 + .grid-item-w20 {width: 200px;}
  44 + .grid-item-w40 {width: 400px;}
  45 + .grid-item-w60 {width: 600px;}
  46 + .grid-item-w80 {width: 80%;}
  47 + .grid-item-w100 {width: 100%;}
  48 +
  49 + .grid-item-h200 {height: 200px;}
  50 + .grid-item-h400 {height: 400px;}
  51 + .grid-item-h600 {height: 600px;}
  52 + .grid-item-h800 {height: 800px;}
  53 +
  54 + .grid-item-c0 {background-color: #0D47A1;}
  55 + .grid-item-c1 {background-color: #1976D2;}
  56 + .grid-item-c2 {background-color: #2196F3;}
  57 + .grid-item-c3 {background-color: #64B5F6;}
  58 + .grid-item-c4 {background-color: #BBDEFB;}
  59 +
  60 + </style>
  61 +
  62 + <template>
  63 +
  64 + <div class="grid">
  65 + <template is="dom-repeat" items="{{data}}">
  66 + <div class$="{{item.b}} {{item.w}} {{item.h}} {{item.c}}">{{index}}</div>
  67 + </template>
  68 + </div>
  69 +
  70 + <div class="grid-sizer"></div>
  71 +
  72 + </template>
  73 +
  74 +</dom-module>
  75 +
  76 +<script>
  77 +
  78 + Polymer({
  79 +
  80 + is: 'animated-grid-controllet',
  81 +
  82 + behaviors: [
  83 + Polymer.NeonSharedElementAnimatableBehavior
  84 + ],
  85 +
  86 + properties: {
  87 + animationConfig: {
  88 + type: Object,
  89 + value: function() {
  90 + return {
  91 + 'exit': [{
  92 + name: 'ripple-animation',
  93 + id: 'ripple',
  94 + fromPage: this
  95 + }, {
  96 + name: 'hero-animation',
  97 + id: 'hero',
  98 + fromPage: this
  99 + }]
  100 + }
  101 + }
  102 + }
  103 + },
  104 +
  105 + ready : function()
  106 + {
  107 + var randW = 0;
  108 + var randH = 0;
  109 + var randC = 0;
  110 + this.data = [];
  111 +
  112 + for(var i=0; i<100; i++)
  113 + {
  114 + randW = Math.floor(Math.random() * 2);
  115 + randH = Math.floor(Math.random() * 2);//randW;//0;//1;
  116 + randC = Math.floor(Math.random() * 5);
  117 + //html += '<div class="grid-item grid-item-w'+((randW*20)+20)+' grid-item-h'+((randH*200)+200)+' grid-item-c'+randC+'">Topic - '+i+'</div>';
  118 +
  119 + this.push('data', {b: 'grid-item',
  120 + w: 'grid-item-w'+((randW*20)+20),
  121 + h: 'grid-item-h'+((randH*200)+200),
  122 + c: 'grid-item-c'+randC});
  123 +
  124 + }
  125 + },
  126 +
  127 + attached : function()
  128 + {
  129 + $('.grid').masonry({
  130 + itemSelector: '.grid-item',
  131 + columnWidth: 200
  132 + });
  133 + },
  134 +
  135 + listeners: {
  136 + click: '_onClick'
  137 + },
  138 +
  139 + _onClick: function(event) {
  140 +
  141 + var target = event.target;
  142 +
  143 + // configure the page animation
  144 + this.sharedElements = {
  145 + 'hero': target,
  146 + 'ripple': target
  147 + };
  148 + this.animationConfig['exit'][0].gesture = {
  149 + x: event.x || event.pageX,
  150 + y: event.y || event.pageY
  151 + };
  152 +
  153 + this.fire('tile-click', {
  154 + tile: target,
  155 + data: {color: target._templateInstance.item.c}
  156 + });
  157 +
  158 + }
  159 +
  160 + });
  161 +
  162 +</script>
... ...
controllets/fullsize-page-with-card-controllet/fullsize-page-with-card-controllet.html 0 → 100644
  1 +<!--
  2 +Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
  3 +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
  4 +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
  5 +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
  6 +Code distributed by Google as part of the polymer project is also
  7 +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
  8 +-->
  9 +<link rel="import" href="../../bower_components/polymer/polymer.html">
  10 +<link rel="import" href="../../bower_components/neon-animation/neon-shared-element-animatable-behavior.html">
  11 +
  12 +<dom-module id="fullsize-page-with-card">
  13 +
  14 + <style>
  15 +
  16 + :host {
  17 + display: block;
  18 + }
  19 +
  20 + .fixed {
  21 + position: absolute;
  22 + top: 0;
  23 + left: 0;
  24 + height: 100vh;
  25 + width: 100vw;
  26 + }
  27 +
  28 + .card {
  29 + position: relative;
  30 + margin: 20px 20px 20px 20px;
  31 + height: 700px;
  32 + }
  33 +
  34 + .grid-item-c0 {background-color: #0D47A1;}
  35 + .grid-item-c1 {background-color: #1976D2;}
  36 + .grid-item-c2 {background-color: #2196F3;}
  37 + .grid-item-c3 {background-color: #64B5F6;}
  38 + .grid-item-c4 {background-color: #BBDEFB;}
  39 +
  40 + .grid-item-c0-l {background-color: #1565C0;}
  41 + .grid-item-c1-l {background-color: #1E88E5;}
  42 + .grid-item-c2-l {background-color: #42A5F5;}
  43 + .grid-item-c3-l {background-color: #90CAF9;}
  44 + .grid-item-c4-l {background-color: #E3F2FD;}
  45 +
  46 + </style>
  47 +
  48 + <template>
  49 +
  50 + <div id="fixed" class$="[[_computeFixedBackgroundClass(color)]]"></div>
  51 + <div id="card" class$="[[_computeCardClass(color)]]"></div>
  52 +
  53 + </template>
  54 +
  55 +</dom-module>
  56 +
  57 +<script>
  58 +
  59 + Polymer({
  60 +
  61 + is: 'fullsize-page-with-card',
  62 +
  63 + behaviors: [
  64 + Polymer.NeonSharedElementAnimatableBehavior
  65 + ],
  66 +
  67 + properties: {
  68 +
  69 + color: {
  70 + type: String
  71 + },
  72 +
  73 + sharedElements: {
  74 + type: Object,
  75 + value: function() {
  76 + return {
  77 + 'hero': this.$.card,
  78 + 'ripple': this.$.fixed
  79 + }
  80 + }
  81 + },
  82 +
  83 + animationConfig: {
  84 + type: Object,
  85 + value: function() {
  86 + return {
  87 + 'entry': [{
  88 + name: 'ripple-animation',
  89 + id: 'ripple',
  90 + toPage: this,
  91 + }, {
  92 + name: 'hero-animation',
  93 + id: 'hero',
  94 + toPage: this,
  95 + timing: {
  96 + delay: 150
  97 + }
  98 + }],
  99 + 'exit': [{
  100 + name: 'fade-out-animation',
  101 + node: this.$.fixed
  102 + }, {
  103 + name: 'transform-animation',
  104 + transformFrom: 'none',
  105 + transformTo: 'translate(0px,-200vh) scale(0.9,1)',
  106 + node: this.$.card
  107 + }]
  108 + }
  109 + }
  110 + }
  111 +
  112 + },
  113 +
  114 + _computeCardClass: function(color) {
  115 + var cls = 'card';
  116 + return cls + ' ' + color;
  117 + },
  118 +
  119 + _computeFixedBackgroundClass: function(color) {
  120 + var cls = 'fixed';
  121 + return cls + ' ' + color + '-l';
  122 + }
  123 +
  124 + });
  125 +
  126 +</script>
... ...