Commit 925d7edd5464ea6025aec05ae148dd06d21133b0
1 parent
9bb60e44
animated-grid-controllet fullsize-page-with-card-controllet
Showing
2 changed files
with
288 additions
and
0 deletions
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> | ... | ... |