diff --git a/lib/mixins/property-effects.html b/lib/mixins/property-effects.html index 5cb13c72..fb83f483 100644 --- a/lib/mixins/property-effects.html +++ b/lib/mixins/property-effects.html @@ -356,7 +356,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN toPath = Polymer.Path.translate(fromProp, toPath, fromPath); value = detail && detail.value; } else { - value = event.target[fromProp]; + value = event.currentTarget[fromProp]; } value = negate ? !value : value; if (!inst[TYPES.READ_ONLY] || !inst[TYPES.READ_ONLY][toPath]) { diff --git a/test/unit/property-effects.html b/test/unit/property-effects.html index d4ed2e44..d9c4c7f6 100644 --- a/test/unit/property-effects.html +++ b/test/unit/property-effects.html @@ -329,6 +329,16 @@ suite('single-element binding effects', function() { assert.equal(el.observerCounts.customEventValueChanged, 1, 'custom bound property observer not called'); }); + test('custom notification bubbling event to property', function() { + const child = document.createElement('div'); + el.$.boundChild.appendChild(child); + + el.$.boundChild.customEventValue = 42; + child.dispatchEvent(new Event('custom', {bubbles: true})); + assert.equal(el.customEventValue, 42, 'custom bound property incorrect'); + assert.equal(el.observerCounts.customEventValueChanged, 1, 'custom bound property observer not called'); + }); + test('custom notification event to path', function() { el.clearObserverCounts(); el.$.boundChild.customEventObjectValue = 84;