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

Unified Diff: sky/examples/city-list/city-list.sky

Issue 875473004: Fix city-list example after changes to scrolling (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebase tests 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | sky/tests/framework/citylist-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/city-list/city-list.sky
diff --git a/sky/examples/city-list/city-list.sky b/sky/examples/city-list/city-list.sky
index a29a3e8117381e903c84bfd41b16c258c3d4c01c..4d8e55012f491f0ae6c8b6d31d1a1aeb30937c06 100644
--- a/sky/examples/city-list/city-list.sky
+++ b/sky/examples/city-list/city-list.sky
@@ -120,34 +120,8 @@ module.exports.CityItemElement = class extends SkyElement {
background-color: #fff;
}
- #scroller {
- overflow-x: hidden;
- overflow-y: auto;
- perspective: 5px;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- }
-
- #scroller::-webkit-scrollbar {
- display:none;
- }
-
- #scrollarea {
- will-change: transform;
- transform-style: preserve-3d;
- }
-
#contentarea {
- position: absolute;
- will-change: contents;
- width: 100%;
- }
-
- .void {
- display: none;
+ will-change: transform;
}
.position {
@@ -157,12 +131,8 @@ module.exports.CityItemElement = class extends SkyElement {
}
</style>
- <div id="scroller">
- <div id="scrollarea">
- <div id="contentarea">
- </div>
+ <div id="contentarea">
</div>
- </div>
</template>
<script>
@@ -277,62 +247,23 @@ module.exports.CityItemElement = class extends SkyElement {
function Scroller() {
this.contentarea = null;
- this.scroller = null;
- this.contentTop = 0; // #contentarea's current top
- this.scrollTop = 0; // #scrollarea's current top
- this.scrollHeight = -1; // height of #scroller (the viewport)
- this.lastScrollTop = 0; // last known scrollTop to compute deltas
+ this.scrollTop = 0;
+ this.scrollHeight = -1;
}
- Scroller.prototype.setup = function(scroller, scrollarea, contentarea) {
+ Scroller.prototype.setup = function(scrollHeight, contentarea) {
+ this.scrollHeight = scrollHeight;
this.contentarea = contentarea;
- this.scroller = scroller;
-
- this.scrollHeight = scroller.offsetHeight;
- scrollarea.style.height = (this.scrollHeight) * 4 + 'px';
-
- this.reset();
}
- Scroller.prototype.captureNewFrame = function(event) {
- var scrollTop = event.target.scrollTop;
-
- // Protect from re-entry.
- if (this.lastScrollTop == scrollTop)
- return false;
-
- var scrollDown = scrollTop > this.lastScrollTop;
- if (scrollDown) {
- while (scrollTop > this.scrollHeight * 1.5) {
- scrollTop -= this.scrollHeight;
- this.contentTop -= this.scrollHeight;
- }
- } else {
- while(scrollTop < this.scrollHeight * 1.5) {
- scrollTop += this.scrollHeight;
- this.contentTop += this.scrollHeight;
- }
- }
-
- this.lastScrollTop = scrollTop;
- event.target.scrollTop = scrollTop;
- this.contentarea.style.top = this.contentTop + 'px';
-
- this.scrollTop = scrollTop - this.contentTop;
-
- return true;
+ Scroller.prototype.scrollBy = function(amount) {
+ this.scrollTop += amount;
+ this.scrollTo();
}
- Scroller.prototype.reset = function() {
- if (!this.contentarea)
- return;
-
- this.scroller.scrollTop = this.scrollHeight;
- this.lastScrollTop = this.scrollHeight;
-
- this.contentarea.style.top = this.scrollHeight + 'px';
- this.contentTop = this.scrollHeight;
- this.scrollTop = 0;
+ Scroller.prototype.scrollTo = function() {
+ var transform = 'translateY(' + -this.scrollTop.toFixed(2) + 'px)';
+ this.contentarea.style.transform = transform;
}
// Current position and height of the scroller, that could
@@ -536,19 +467,6 @@ module.exports.CityItemElement = class extends SkyElement {
}
}
- Tiler.prototype.checkinAllTiles = function() {
- var tiles = this.tiles;
- while (tiles.length) {
- this.checkinTile(tiles.pop());
- }
- }
-
- Tiler.prototype.reset = function() {
- this.checkinAllTiles();
- this.drawTop = 0;
- this.drawBottom = 0;
- }
-
module.exports.CityListElement = class extends SkyElement {
created() {
@@ -558,7 +476,6 @@ module.exports.CityItemElement = class extends SkyElement {
this.date = null;
this.month = null;
this.views = null;
- this.scrollerElement = null;
}
attached() {
@@ -572,11 +489,11 @@ module.exports.CityItemElement = class extends SkyElement {
cityItem: 30
});
- this.scrollerElement = this.shadowRoot.getElementById('scroller');
- this.scrollerElement.addEventListener('scroll',
- this.handleScroll.bind(this));
-
var self = this;
+ this.addEventListener('wheel', function(event) {
+ self.scrollBy(-event.offsetY)
+ });
+
setTimeout(function() {
self.domReady();
self.loader.maybeLoadMoreData(self.dataLoaded.bind(self));
@@ -584,8 +501,7 @@ module.exports.CityItemElement = class extends SkyElement {
}
domReady() {
- this.scroller.setup(this.shadowRoot.getElementById('scroller'),
- this.shadowRoot.getElementById('scrollarea'),
+ this.scroller.setup(this.clientHeight,
this.shadowRoot.getElementById('contentarea'));
var scrollFrame = this.scroller.getCurrentFrame();
this.tiler.setupViews(scrollFrame);
@@ -605,16 +521,9 @@ module.exports.CityItemElement = class extends SkyElement {
this.updateView(data.items, false);
}
- handleScroll(event) {
- if (!this.scroller.captureNewFrame(event))
- return;
-
- this.updateView(this.loader.getItems(), true);
- }
-
scrollBy(amount) {
- this.scrollerElement.scrollTop += amount;
- this.handleScroll({ target: this.scrollerElement });
+ this.scroller.scrollBy(amount);
+ this.updateView(this.loader.getItems(), true);
}
}.register();
« no previous file with comments | « no previous file | sky/tests/framework/citylist-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698