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> | |
... | ... |