/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; // This is loaded into all XUL windows. Wrap in a block to prevent // leaking to window scope. { class MozPopupNotification extends MozXULElement { static get inheritedAttributes() { return { ".popup-notification-icon": "popupid,src=icon,class=iconclass,hasicon", ".popup-notification-origin": "value=origin,tooltiptext=origin", ".popup-notification-description": "popupid,id=descriptionid", ".popup-notification-description > span:first-of-type": "text=label,popupid", ".popup-notification-description > b:first-of-type": "text=name,popupid", ".popup-notification-description > span:nth-of-type(2)": "text=endlabel,popupid", ".popup-notification-description > b:last-of-type": "text=secondname,popupid", ".popup-notification-description > span:last-of-type": "text=secondendlabel,popupid", ".popup-notification-hint-text": "text=hinttext", ".popup-notification-closebutton": "oncommand=closebuttoncommand,hidden=closebuttonhidden", ".popup-notification-learnmore-link": "onclick=learnmoreclick,href=learnmoreurl", ".popup-notification-warning": "hidden=warninghidden,text=warninglabel", ".popup-notification-secondary-button": "oncommand=secondarybuttoncommand,label=secondarybuttonlabel,accesskey=secondarybuttonaccesskey,hidden=secondarybuttonhidden,dropmarkerhidden", ".popup-notification-dropmarker": "onpopupshown=dropmarkerpopupshown,hidden=dropmarkerhidden", ".popup-notification-dropmarker > menupopup": "oncommand=menucommand", ".popup-notification-primary-button": "oncommand=buttoncommand,label=buttonlabel,accesskey=buttonaccesskey,default=buttonhighlight,disabled=mainactiondisabled", }; } attributeChangedCallback(name, oldValue, newValue) { if (!this._hasSlotted) { return; } // If the label and/or accesskey for the primary button is set by // inherited attributes, its data-l10n-id needs to be unset or // DOM Localization will overwrite the values. if (name === "buttonlabel" || name === "buttonaccesskey") { document.l10n.setAttributes(this.button, ""); } super.attributeChangedCallback(name, oldValue, newValue); } show() { this.slotContents(); if (this.checkboxState) { this.checkbox.checked = this.checkboxState.checked; this.checkbox.setAttribute("label", this.checkboxState.label); this.checkbox.hidden = false; } else { this.checkbox.hidden = true; // Reset checked state to avoid wrong using of previous value. this.checkbox.checked = false; } this.hidden = false; } static get markup() { return `