diff --git a/polygerrit-ui/app/elements/shared/gr-button/gr-button.js b/polygerrit-ui/app/elements/shared/gr-button/gr-button.js index 1de704ac9c..8c9ba50996 100644 --- a/polygerrit-ui/app/elements/shared/gr-button/gr-button.js +++ b/polygerrit-ui/app/elements/shared/gr-button/gr-button.js @@ -91,7 +91,7 @@ _disabledChanged(disabled) { if (disabled) { - this._enabledTabindex = this.getAttribute('tabindex'); + this._enabledTabindex = this.getAttribute('tabindex') || '0'; } this.setAttribute('tabindex', disabled ? '-1' : this._enabledTabindex); this.updateStyles(); diff --git a/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.html b/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.html index d8a5443c94..bcb560a9f3 100644 --- a/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.html +++ b/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.html @@ -68,6 +68,21 @@ limitations under the License. assert.isTrue(element.$$('paper-button').disabled); }); + test('tabindex should be -1 if disabled', () => { + element.disabled = true; + assert.isTrue(element.getAttribute('tabindex') === '-1'); + }); + + // Regression tests for Issue: 11969 + test('tabindex should be reset to 0 if enabled', () => { + element.disabled = false; + assert.isTrue(element.getAttribute('tabindex') === '0'); + element.disabled = true; + assert.isTrue(element.getAttribute('tabindex') === '-1'); + element.disabled = false; + assert.isTrue(element.getAttribute('tabindex') === '0'); + }); + // 'tap' event is tested so we don't loose backward compatibility with older // plugins who didn't move to on-click which is faster and well supported. for (const eventName of ['tap', 'click']) {