Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: sky/examples/city-list/city-list.sky

Issue 835353004: Prevent expandos on all SkyElements. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | sky/framework/sky-element/sky-element.sky » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!-- 1 <!--
2 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Copyright 2014 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 --> 5 -->
6 <import src="../../framework/sky-element/sky-element.sky" as="SkyElement" /> 6 <import src="../../framework/sky-element/sky-element.sky" as="SkyElement" />
7 <import src="city-data-service.sky" as="CityDataService" /> 7 <import src="city-data-service.sky" as="CityDataService" />
8 <import src="city-sequence.sky" as="CitySequence" /> 8 <import src="city-sequence.sky" as="CitySequence" />
9 9
10 <script> 10 <script>
11 // TODO(esprehn): exports should start as the empty object. 11 // TODO(esprehn): exports should start as the empty object.
12 module.exports = {}; 12 module.exports = {};
13 </script> 13 </script>
14 14
15 <sky-element name="state-header"> 15 <sky-element name="state-header">
16 <template> 16 <template>
17 <style> 17 <style>
18 div { 18 div {
19 font-size: 16px; 19 font-size: 16px;
20 color: #FFF; 20 color: #FFF;
21 background-color: #333; 21 background-color: #333;
22 padding: 4px 4px 4px 12px; 22 padding: 4px 4px 4px 12px;
23 display: paragraph; 23 display: paragraph;
24 } 24 }
25 </style> 25 </style>
26 <div>{{ state }}</div> 26 <div>{{ state }}</div>
27 </template> 27 </template>
28 <script> 28 <script>
29 module.exports.StateHeaderElement = class extends SkyElement { 29 module.exports.StateHeaderElement = class extends SkyElement {
30 created() {
31 this.state = "";
32 }
30 set datum(datum) { 33 set datum(datum) {
31 this.state = datum.state; 34 this.state = datum.state;
32 } 35 }
33 }.register(); 36 }.register();
34 </script> 37 </script>
35 </sky-element> 38 </sky-element>
36 39
37 <sky-element name="letter-header"> 40 <sky-element name="letter-header">
38 <template> 41 <template>
39 <style> 42 <style>
40 div { 43 div {
41 font-size: 12px; 44 font-size: 12px;
42 font-weight: bold; 45 font-weight: bold;
43 padding: 2px 4px 4px 12px; 46 padding: 2px 4px 4px 12px;
44 background-color: #DDD; 47 background-color: #DDD;
45 display: paragraph; 48 display: paragraph;
46 } 49 }
47 </style> 50 </style>
48 <div>{{ letter }}</div> 51 <div>{{ letter }}</div>
49 </template> 52 </template>
50 <script> 53 <script>
51 module.exports.LetterHeaderElement = class extends SkyElement { 54 module.exports.LetterHeaderElement = class extends SkyElement {
55 created() {
56 this.letter = "";
57 }
52 set datum(datum) { 58 set datum(datum) {
53 this.letter = datum.letter; 59 this.letter = datum.letter;
54 } 60 }
55 }.register(); 61 }.register();
56 </script> 62 </script>
57 </sky-element> 63 </sky-element>
58 64
59 <sky-element name="city-item"> 65 <sky-element name="city-item">
60 <template> 66 <template>
61 <style> 67 <style>
(...skipping 23 matching lines...) Expand all
85 } 91 }
86 92
87 </style> 93 </style>
88 <div> 94 <div>
89 <span id="name">{{ name }}</span>, 95 <span id="name">{{ name }}</span>,
90 <span id="population">population {{ population }}</span> 96 <span id="population">population {{ population }}</span>
91 </div> 97 </div>
92 </template> 98 </template>
93 <script> 99 <script>
94 module.exports.CityItemElement = class extends SkyElement { 100 module.exports.CityItemElement = class extends SkyElement {
101 created() {
102 this.name = "";
103 this.population = "";
104 }
95 set datum(datum) { 105 set datum(datum) {
96 this.name = datum.name; 106 this.name = datum.name;
97 this.population = datum.population; 107 this.population = datum.population;
98 } 108 }
99 }.register(); 109 }.register();
100 </script> 110 </script>
101 </sky-element> 111 </sky-element>
102 112
103 <sky-element name="city-list"> 113 <sky-element name="city-list">
104 <template> 114 <template>
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 556
547 module.exports.CityListElement = class extends SkyElement { 557 module.exports.CityListElement = class extends SkyElement {
548 558
549 created() { 559 created() {
550 this.loader = null; 560 this.loader = null;
551 this.scroller = null; 561 this.scroller = null;
552 this.tiler = null; 562 this.tiler = null;
553 this.date = null; 563 this.date = null;
554 this.month = null; 564 this.month = null;
555 this.views = null; 565 this.views = null;
566 this.scrollerElement = null;
556 } 567 }
557 568
558 attached() { 569 attached() {
559 this.views = {}; 570 this.views = {};
560 this.loader = new Loader(this); 571 this.loader = new Loader(this);
561 this.scroller = new Scroller(); 572 this.scroller = new Scroller();
562 this.tiler = new Tiler( 573 this.tiler = new Tiler(
563 this.shadowRoot.getElementById('contentarea'), this.views, { 574 this.shadowRoot.getElementById('contentarea'), this.views, {
564 stateHeader: 27, 575 stateHeader: 27,
565 letterHeader: 18, 576 letterHeader: 18,
566 cityItem: 30 577 cityItem: 30
567 }); 578 });
568 579
569 this.dataLoaded = this.dataLoaded.bind(this);
570 this.scrollerElement = this.shadowRoot.getElementById('scroller'); 580 this.scrollerElement = this.shadowRoot.getElementById('scroller');
571 this.scrollerElement.addEventListener('scroll', 581 this.scrollerElement.addEventListener('scroll',
572 this.handleScroll.bind(this)); 582 this.handleScroll.bind(this));
573 583
574 var self = this; 584 var self = this;
575 setTimeout(function() { 585 setTimeout(function() {
576 self.domReady(); 586 self.domReady();
577 self.loader.maybeLoadMoreData(self.dataLoaded); 587 self.loader.maybeLoadMoreData(self.dataLoaded.bind(self));
578 }); 588 });
579 } 589 }
580 590
581 domReady() { 591 domReady() {
582 this.scroller.setup(this.shadowRoot.getElementById('scroller'), 592 this.scroller.setup(this.shadowRoot.getElementById('scroller'),
583 this.shadowRoot.getElementById('scrollarea'), 593 this.shadowRoot.getElementById('scrollarea'),
584 this.shadowRoot.getElementById('contentarea')); 594 this.shadowRoot.getElementById('contentarea'));
585 var scrollFrame = this.scroller.getCurrentFrame(); 595 var scrollFrame = this.scroller.getCurrentFrame();
586 this.tiler.setupViews(scrollFrame); 596 this.tiler.setupViews(scrollFrame);
587 } 597 }
588 598
589 updateView(data, scrollChanged) { 599 updateView(data, scrollChanged) {
590 var scrollFrame = this.scroller.getCurrentFrame(); 600 var scrollFrame = this.scroller.getCurrentFrame();
591 this.tiler.drawTiles(scrollFrame, data); 601 this.tiler.drawTiles(scrollFrame, data);
592 var datum = scrollChanged ? 602 var datum = scrollChanged ?
593 this.tiler.getFirstVisibleDatum(scrollFrame) : null; 603 this.tiler.getFirstVisibleDatum(scrollFrame) : null;
594 this.loader.maybeLoadMoreData(this.dataLoaded, datum); 604 this.loader.maybeLoadMoreData(this.dataLoaded.bind(this), datum);
595 } 605 }
596 606
597 dataLoaded(data, indexOffset) { 607 dataLoaded(data, indexOffset) {
598 var scrollFrame = this.scroller.getCurrentFrame(); 608 var scrollFrame = this.scroller.getCurrentFrame();
599 this.tiler.updateFirstItem(indexOffset); 609 this.tiler.updateFirstItem(indexOffset);
600 this.updateView(data.items, false); 610 this.updateView(data.items, false);
601 } 611 }
602 612
603 handleScroll(event) { 613 handleScroll(event) {
604 if (!this.scroller.captureNewFrame(event)) 614 if (!this.scroller.captureNewFrame(event))
605 return; 615 return;
606 616
607 this.updateView(this.loader.getItems(), true); 617 this.updateView(this.loader.getItems(), true);
608 } 618 }
609 619
610 scrollBy(amount) { 620 scrollBy(amount) {
611 this.scrollerElement.scrollTop += amount; 621 this.scrollerElement.scrollTop += amount;
612 this.handleScroll({ target: this.scrollerElement }); 622 this.handleScroll({ target: this.scrollerElement });
613 } 623 }
614 }.register(); 624 }.register();
615 625
616 })(this); 626 })(this);
617 </script> 627 </script>
618 </sky-element> 628 </sky-element>
OLDNEW
« no previous file with comments | « no previous file | sky/framework/sky-element/sky-element.sky » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698