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

Unified Diff: third_party/polymer/v1_0/components-chromium/iron-list/iron-list.html

Issue 1468623004: Update Polymer from 1.2.1 -> 1.2.3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@travis-yml
Patch Set: local-state.html Created 5 years, 1 month 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
Index: third_party/polymer/v1_0/components-chromium/iron-list/iron-list.html
diff --git a/third_party/polymer/v1_0/components-chromium/iron-list/iron-list.html b/third_party/polymer/v1_0/components-chromium/iron-list/iron-list.html
index 3684aba847828af389bbdca27555dc3076018939..9b3148af1bdf1440377fab2f5c748da6d9313be9 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-list/iron-list.html
+++ b/third_party/polymer/v1_0/components-chromium/iron-list/iron-list.html
@@ -23,7 +23,7 @@ be reused with a new model at any time. Particularly, any state that may change
as the result of a user interaction with the list item must be bound to the model
to avoid view state inconsistency.
-__Important:__ `iron-list` must ether be explicitly sized, or delegate scrolling to an
+__Important:__ `iron-list` must either be explicitly sized, or delegate scrolling to an
explicitly sized parent. By "explicitly sized", we mean it either has an explicit
CSS `height` property set via a class or inline style, or else is sized by other
layout means (e.g. the `flex` or `fit` classes).
@@ -47,39 +47,45 @@ For example, given the following `data` array:
##### data.json
- [
- {"name": "Bob"},
- {"name": "Tim"},
- {"name": "Mike"}
- ]
+```js
+[
+ {"name": "Bob"},
+ {"name": "Tim"},
+ {"name": "Mike"}
+]
+```
The following code would render the list (note the name and checked properties are
bound from the model object provided to the template scope):
- <template is="dom-bind">
- <iron-ajax url="data.json" last-response="{{data}}" auto></iron-ajax>
- <iron-list items="[[data]]" as="item">
- <template>
- <div>
- Name: <span>[[item.name]]</span>
- </div>
- </template>
- </iron-list>
+```html
+<template is="dom-bind">
+ <iron-ajax url="data.json" last-response="{{data}}" auto></iron-ajax>
+ <iron-list items="[[data]]" as="item">
+ <template>
+ <div>
+ Name: <span>[[item.name]]</span>
+ </div>
</template>
+ </iron-list>
+</template>
+```
### Styling
Use the `--iron-list-items-container` mixin to style the container of items, e.g.
- iron-list {
- --iron-list-items-container: {
- margin: auto;
- };
- }
+```css
+iron-list {
+ --iron-list-items-container: {
+ margin: auto;
+ };
+}
+```
### Resizing
-`iron-list` lays out the items when it recives a notification via the `iron-resize` event.
+`iron-list` lays out the items when it receives a notification via the `iron-resize` event.
This event is fired by any element that implements `IronResizableBehavior`.
By default, elements such as `iron-pages`, `paper-tabs` or `paper-dialog` will trigger
@@ -87,8 +93,21 @@ this event automatically. If you hide the list manually (e.g. you use `display:
you might want to implement `IronResizableBehavior` or fire this event manually right
after the list became visible again. e.g.
- document.querySelector('iron-list').fire('iron-resize');
+```js
+document.querySelector('iron-list').fire('iron-resize');
+```
+
+### When should `<iron-list>` be used?
+
+`iron-list` should be used when a page has significantly more DOM nodes than the ones
+visible on the screen. e.g. the page has 500 nodes, but only 20 are visible at the time.
+This is why we refer to it as a `virtual` list. In this case, a `dom-repeat` will still
+create 500 nodes which could slow down the web app, but `iron-list` will only create 20.
+However, having an `iron-list` does not mean that you can load all the data at once.
+Say, you have a million records in the database, you want to split the data into pages
+so you can bring a page at the time. The page could contain 500 items, and iron-list
+will only render 20.
@group Iron Element
@element iron-list

Powered by Google App Engine
This is Rietveld 408576698