Skip to content

Commit

Permalink
Merge pull request #5495 from ChadKillingsworth/polymer3-closure-comp…
Browse files Browse the repository at this point in the history
…iler-fixes

Add property reflection to notify path and friends calls
  • Loading branch information
kevinpschaaf authored Mar 6, 2019
2 parents 5492189 + 03aec68 commit 798dfc6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
28 changes: 17 additions & 11 deletions lib/elements/array-selector.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ let ArraySelectorMixin = dedupingMixin(superClass => {

__updateSelection(multi, itemsInfo) {
let path = itemsInfo.path;
if (path == 'items') {
if (path == JSCompiler_renameProperty('items', this)) {
// Case 1 - items array changed, so diff against previous array and
// deselect any removed items and adjust selected indices
let newItems = itemsInfo.base || [];
Expand All @@ -122,14 +122,14 @@ let ArraySelectorMixin = dedupingMixin(superClass => {
}
this.__lastItems = newItems;
this.__lastMulti = multi;
} else if (itemsInfo.path == 'items.splices') {
} else if (itemsInfo.path == `${JSCompiler_renameProperty('items', this)}.splices`) {
// Case 2 - got specific splice information describing the array mutation:
// deselect any removed items and adjust selected indices
this.__applySplices(itemsInfo.value.indexSplices);
} else {
// Case 3 - an array element was changed, so deselect the previous
// item for that index if it was previously selected
let part = path.slice('items.'.length);
let part = path.slice(`${JSCompiler_renameProperty('items', this)}.`.length);
let idx = parseInt(part, 10);
if ((part.indexOf('.') < 0) && part == idx) {
this.__deselectChangedIdx(idx);
Expand Down Expand Up @@ -167,7 +167,7 @@ let ArraySelectorMixin = dedupingMixin(superClass => {
selected.forEach((idx, item) => {
if (idx < 0) {
if (this.multi) {
this.splice('selected', sidx, 1);
this.splice(JSCompiler_renameProperty('selected', this), sidx, 1);
} else {
this.selected = this.selectedItem = null;
}
Expand All @@ -184,13 +184,19 @@ let ArraySelectorMixin = dedupingMixin(superClass => {
let sidx = 0;
this.__selectedMap.forEach(idx => {
if (idx >= 0) {
this.linkPaths('items.' + idx, 'selected.' + sidx++);
this.linkPaths(
`${JSCompiler_renameProperty('items', this)}.${idx}`,
`${JSCompiler_renameProperty('selected', this)}.${sidx++}`);
}
});
} else {
this.__selectedMap.forEach(idx => {
this.linkPaths('selected', 'items.' + idx);
this.linkPaths('selectedItem', 'items.' + idx);
this.linkPaths(
JSCompiler_renameProperty('selected', this),
`${JSCompiler_renameProperty('items', this)}.${idx}`);
this.linkPaths(
JSCompiler_renameProperty('selectedItem', this),
`${JSCompiler_renameProperty('items', this)}.${idx}`);
});
}
}
Expand Down Expand Up @@ -248,9 +254,9 @@ let ArraySelectorMixin = dedupingMixin(superClass => {
}

__selectedIndexForItemIndex(idx) {
let selected = this.__dataLinkedPaths['items.' + idx];
let selected = this.__dataLinkedPaths[`${JSCompiler_renameProperty('items', this)}.${idx}`];
if (selected) {
return parseInt(selected.slice('selected.'.length), 10);
return parseInt(selected.slice(`${JSCompiler_renameProperty('selected', this)}.`.length), 10);
}
}

Expand All @@ -271,7 +277,7 @@ let ArraySelectorMixin = dedupingMixin(superClass => {
}
this.__updateLinks();
if (this.multi) {
this.splice('selected', sidx, 1);
this.splice(JSCompiler_renameProperty('selected', this), sidx, 1);
} else {
this.selected = this.selectedItem = null;
}
Expand Down Expand Up @@ -318,7 +324,7 @@ let ArraySelectorMixin = dedupingMixin(superClass => {
this.__selectedMap.set(item, idx);
this.__updateLinks();
if (this.multi) {
this.push('selected', item);
this.push(JSCompiler_renameProperty('selected', this), item);
} else {
this.selected = this.selectedItem = item;
}
Expand Down
2 changes: 1 addition & 1 deletion lib/elements/dom-repeat.js
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ export class DomRepeat extends domRepeatBase {
if (prop == this.as) {
this.items[idx] = value;
}
let path = translate(this.as, 'items.' + idx, prop);
let path = translate(this.as, `${JSCompiler_renameProperty('items', this)}.${idx}`, prop);
this.notifyPath(path, value);
}
}
Expand Down

0 comments on commit 798dfc6

Please sign in to comment.