{"version":3,"file":"pfe-toast.min.js","sources":["../_temp/pfe-toast.js"],"sourcesContent":["/*!\n * PatternFly Elements: PfeToast 1.12.3\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\nimport PFElement from \"../../pfelement/dist/pfelement.js\";\n\nclass PfeToast extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.12.3\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n \n
\n \n
\n \n \n
`;\n }\n\n // @TODO: Deprecating in 1.0 release\n // Injected at build-time\n static get schemaProperties() {\n return {\"auto_dismiss\":{\"title\":\"Auto dismiss\",\"type\":\"string\"},\"close_label\":{\"title\":\"Close label\",\"type\":\"string\"}};\n }\n\n // Injected at build-time\n static get slots() {\n return {\"content\":{\"title\":\"Content\",\"type\":\"array\",\"namedSlot\":false,\"items\":{\"oneOf\":[{\"$ref\":\"raw\"}]}}};\n }\n\n static get tag() {\n return \"pfe-toast\";\n }\n\n get templateUrl() {\n return \"pfe-toast.html\";\n }\n\n get schemaUrl() {\n return \"pfe-toast.json\";\n }\n\n get styleUrl() {\n return \"pfe-toast.scss\";\n }\n\n static get PfeType() {\n return PFElement.PfeTypes.Container;\n }\n\n static get properties() {\n return {\n closeLabel: {\n title: \"Close label\",\n type: String,\n default: \"Close\",\n observer: \"_closeLabelChanged\",\n },\n autoDismiss: {\n title: \"Auto dismiss\",\n type: String,\n observer: \"_autoDismissChanged\",\n },\n };\n }\n\n constructor() {\n super(PfeToast);\n\n // state\n this.isOpen = false;\n this.doesAutoDismiss = false;\n\n // elements\n this._container = this.shadowRoot.querySelector(`.${this.tag}__container`);\n this._content = this.shadowRoot.querySelector(`.${this.tag}__content`);\n this._toastCloseButton = this.shadowRoot.querySelector(`.${this.tag}__close`);\n\n // events\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.toggle = this.toggle.bind(this);\n }\n\n _closeLabelChanged() {\n this._toastCloseButton.setAttribute(\"aria-label\", this.closeLabel);\n }\n\n _autoDismissChanged(oldVal, newVal) {\n this.doesAutoDismiss = !!newVal;\n this._setAccessibility();\n }\n\n _setAccessibility() {\n if (!this.doesAutoDismiss) {\n this.removeAttribute(\"aria-live\");\n this.removeAttribute(\"aria-atomic\");\n\n this.setAttribute(\"role\", \"alertdialog\");\n // default if none provided\n if (!this.hasAttribute(\"aria-label\")) {\n this.setAttribute(\"aria-label\", \"Alert dialog\");\n }\n this.setAttribute(\"aria-describedby\", `${this.tag}__content`);\n } else {\n this.removeAttribute(\"aria-label\");\n this.removeAttribute(\"aria-describedby\");\n\n this.setAttribute(\"role\", \"alert\");\n this.setAttribute(\"aria-live\", \"polite\");\n this.setAttribute(\"aria-atomic\", \"true\");\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n // get/set state\n this.doesAutoDismiss = this.autoDismiss !== null;\n this._toastCloseButton.setAttribute(\"aria-label\", this.closeLabel);\n this._setAccessibility();\n this.setAttribute(\"hidden\", \"\");\n\n // attach listeners\n this._toastCloseButton.addEventListener(\"click\", this.close);\n this.addEventListener(\"keydown\", this._keydownHandler);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this._toastCloseButton.removeEventListener(\"click\", this.close);\n this.removeEventListener(\"keydown\", this._keydownHandler);\n }\n\n open(event) {\n if (event) {\n event.preventDefault();\n }\n\n this.isOpen = true;\n\n this.removeAttribute(\"hidden\");\n setTimeout(() => {\n this.classList.add(\"open\");\n }, 500);\n\n this.dispatchEvent(\n new CustomEvent(`${this.tag}:open`, {\n detail: {},\n bubbles: true,\n })\n );\n\n if (this.doesAutoDismiss) {\n setTimeout(() => {\n this.close();\n }, this._toMilliseconds(this.autoDismiss));\n }\n\n return this;\n }\n\n close(event) {\n if (event) {\n event.preventDefault();\n }\n\n this.isOpen = false;\n\n this.classList.remove(\"open\");\n setTimeout(() => {\n this.setAttribute(\"hidden\", \"\");\n }, 500);\n\n this.dispatchEvent(\n new CustomEvent(`${this.tag}:close`, {\n detail: {},\n bubbles: true,\n })\n );\n\n return this;\n }\n\n toggle(event) {\n this.isOpen ? this.close(event) : this.open(event);\n return this;\n }\n\n _toMilliseconds(value) {\n // set default delay if none provided\n const digits = value.match(/\\d+/) || [8000];\n const unit = value.match(/\\D+/) || \"\";\n return unit[0] === \"s\" ? digits[0] * 1000 : digits[0];\n }\n\n _keydownHandler(event) {\n let target = event.target || window.event.srcElement;\n let key = event.key || event.keyCode;\n switch (key) {\n case \"Escape\":\n case \"Esc\":\n case 27:\n this.close(event);\n break;\n case \"Enter\":\n case 13:\n if (target === this._toastCloseButton) {\n this.close(event);\n }\n break;\n default:\n break;\n }\n }\n}\n\nPFElement.create(PfeToast);\n\nexport default PfeToast;\n"],"names":["PfeToast","PFElement","version","html","schemaProperties","auto_dismiss","title","type","close_label","slots","content","namedSlot","items","oneOf","$ref","tag","templateUrl","schemaUrl","styleUrl","PfeType","PfeTypes","Container","properties","closeLabel","String","default","observer","autoDismiss","[object Object]","super","this","isOpen","doesAutoDismiss","_container","shadowRoot","querySelector","_content","_toastCloseButton","open","bind","close","toggle","setAttribute","oldVal","newVal","_setAccessibility","removeAttribute","hasAttribute","connectedCallback","addEventListener","_keydownHandler","disconnectedCallback","removeEventListener","event","preventDefault","setTimeout","classList","add","dispatchEvent","CustomEvent","detail","bubbles","_toMilliseconds","remove","value","digits","match","target","window","srcElement","key","keyCode","create"],"mappings":"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"}