mirror of
https://github.com/Polymer/polymer.git
synced 2025-02-25 18:55:30 -06:00
Merge pull request #3066 from Polymer/arthure-rendered-item-count
Fixes #3065: Add dom-repeat.renderedItemCount property
This commit is contained in:
commit
d468949bb8
@ -191,6 +191,18 @@ Then the `observe` property should be configured as follows:
|
||||
*/
|
||||
delay: Number,
|
||||
|
||||
/**
|
||||
* Count of currently rendered items after `filter` (if any) has been applied.
|
||||
* If "chunking mode" is enabled, `renderedItemCount` is updated each time a
|
||||
* set of template instances is rendered.
|
||||
*
|
||||
*/
|
||||
renderedItemCount: {
|
||||
type: Number,
|
||||
notify: true,
|
||||
readOnly: true
|
||||
},
|
||||
|
||||
/**
|
||||
* Defines an initial count of template instances to render after setting
|
||||
* the `items` array, before the next paint, and puts the `dom-repeat`
|
||||
@ -439,6 +451,8 @@ Then the `observe` property should be configured as follows:
|
||||
// `item` may not be sufficient if the pooled instance happens to be
|
||||
// the same item.
|
||||
this._pool.length = 0;
|
||||
// Set rendered item count
|
||||
this._setRenderedItemCount(this._instances.length);
|
||||
// Notify users
|
||||
this.fire('dom-change');
|
||||
// Check to see if we need to render more items
|
||||
|
@ -119,6 +119,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
||||
test('basic rendering, downward item binding', function() {
|
||||
var stamped = Polymer.dom(configured.root).querySelectorAll('*:not(template)');
|
||||
assert.equal(stamped.length, 3 + 3*3 + 3*3*3, 'total stamped count incorrect');
|
||||
assert.equal(configured.$.repeater.renderedItemCount, 3, 'rendered item count incorrect');
|
||||
assert.equal(stamped[0].itemaProp, 'prop-1');
|
||||
assert.equal(stamped[0].computeda, 'prop-1+itemForComputedA');
|
||||
assert.equal(stamped[0].indexa, 0);
|
||||
@ -286,6 +287,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
||||
CustomElements.takeRecords();
|
||||
var stamped = Polymer.dom(configured.root).querySelectorAll('*:not(template)');
|
||||
assert.equal(stamped.length, 2 + 2*3 + 2*3*3, 'total stamped count incorrect');
|
||||
assert.equal(configured.$.repeater.renderedItemCount, 2, 'rendered item count incorrect');
|
||||
assert.equal(stamped[0].itemaProp, 'prop-1');
|
||||
assert.equal(stamped[0].indexa, 0);
|
||||
assert.equal(stamped[13].itemaProp, 'prop-3');
|
||||
@ -3313,6 +3315,23 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
||||
assert.equal(repeater3.keyForElement(stamped1[4]), coll3.getKey(items3[2]));
|
||||
});
|
||||
|
||||
test('renderedItemCount', function() {
|
||||
var repeater1 = primitive.$.repeater1;
|
||||
primitive.items = [ 'a', 'b', 'c', 'd', 'e' ];
|
||||
repeater1.render();
|
||||
assert.equal(repeater1.renderedItemCount, 5, 'renderedItemCount is incorrect');
|
||||
repeater1.renderedItemCount = 0;
|
||||
assert.equal(repeater1.renderedItemCount, 5, 'renderedItemCount is writable');
|
||||
repeater1.filter = function(item) {
|
||||
return (item != 'a' && item != 'e');
|
||||
}
|
||||
repeater1.render();
|
||||
assert.equal(repeater1.renderedItemCount, 3, 'renderedItemCount incorrect after filter');
|
||||
// reset repeater
|
||||
repeater1.filter = undefined;
|
||||
repeater1.render();
|
||||
});
|
||||
|
||||
test('__hideTemplateChildren__', function() {
|
||||
// Initially all showing
|
||||
var stamped1 = Polymer.dom(primitive.$.container1).querySelectorAll('*:not(template)');
|
||||
|
Loading…
Reference in New Issue
Block a user