// Copyright (C) 2016 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. (function() { 'use strict'; Polymer({ is: 'gr-alert', /** * Fired when the action button is pressed. * * @event action */ properties: { text: String, actionText: String, shown: { type: Boolean, value: true, readOnly: true, reflectToAttribute: true, }, toast: { type: Boolean, value: true, reflectToAttribute: true, }, _hideActionButton: Boolean, _boundTransitionEndHandler: { type: Function, value() { return this._handleTransitionEnd.bind(this); }, }, _actionCallback: Function, }, attached() { this.addEventListener('transitionend', this._boundTransitionEndHandler); }, detached() { this.removeEventListener('transitionend', this._boundTransitionEndHandler); }, show(text, opt_actionText, opt_actionCallback) { this.text = text; this.actionText = opt_actionText; this._hideActionButton = !opt_actionText; this._actionCallback = opt_actionCallback; Gerrit.getRootElement().appendChild(this); this._setShown(true); }, hide() { this._setShown(false); if (this._hasZeroTransitionDuration()) { Gerrit.getRootElement().removeChild(this); } }, _hasZeroTransitionDuration() { const style = window.getComputedStyle(this); // transitionDuration is always given in seconds. const duration = Math.round(parseFloat(style.transitionDuration) * 100); return duration === 0; }, _handleTransitionEnd(e) { if (this.shown) { return; } Gerrit.getRootElement().removeChild(this); }, _handleActionTap(e) { e.preventDefault(); if (this._actionCallback) { this._actionCallback(); } }, }); })();