{"version":3,"file":"alert.CV2aOEAf.js","sources":["../../../../../node_modules/lucide-static/dist/esm/icons/triangle-alert.js","../../../../../packages/icons-web/src/lib/icons/alert-triangle/alert-triangle.ts","../../../../../packages/web-components/src/utils/get-slotted-elements-screenreader-text.ts","../../../../../packages/web-components/src/lib/components/alert/alert.ts"],"sourcesContent":["/**\n * @license lucide-static v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst TriangleAlert = `\n\n \n \n \n\n`;\n\nexport { TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","import { html } from 'lit';\nimport { AlertTriangle } from 'lucide-static';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { state } from 'lit/decorators.js';\nimport { pdsCustomIconElement as customElement } from '../../../decorators/pds-icon';\nimport { PdsIcon } from '../PdsIcon';\n\n@customElement('pds-icon-alert-triangle')\nexport class PdsIconAlertTriangle extends PdsIcon {\n @state()\n icon = AlertTriangle;\n\n render() {\n return html`${unsafeHTML(this.setIconAttributes())}`;\n }\n}\n","// Helper function to recursively get the text content of the slotted elements and their children\nexport const getSlottedElementsScreenreaderText = (\n node: Node,\n srText: string,\n srParentNodes: Set,\n): string => {\n const { parentNode, nodeType } = node;\n let finalSrText = srText;\n if (nodeType === Node.TEXT_NODE) {\n /**\n * If the parent node is in the set of parent nodes, the element's text content has already been added to the screenreader text\n * Return the screenreader text\n * */\n if (parentNode && srParentNodes.has(parentNode)) {\n return finalSrText;\n }\n\n // Get the text content of the node with trimmed white space\n if (node.textContent) {\n const trimmedTextContent = node.textContent.replace(/\\s+/g, ' ').trim();\n finalSrText += ` ${trimmedTextContent}`;\n }\n } else if (nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n const { tagName } = element;\n\n // If the parent node is not in the set of parent nodes, add the text content to the screenreader text\n if (parentNode && !srParentNodes.has(parentNode) && element.textContent) {\n const trimmedTextContent = element.textContent\n .replace(/\\s+/g, ' ')\n .trim();\n finalSrText += ` ${trimmedTextContent}`;\n }\n\n // Appends button or link to the screenreader text if it is a button or link element\n if (tagName === 'BUTTON' || tagName === 'PDS-BUTTON') {\n finalSrText += ' button';\n } else if (tagName === 'A' || tagName === 'PDS-LINK') {\n finalSrText += ' link';\n }\n\n srParentNodes.add(node);\n\n // Recursively check child nodes\n node.childNodes.forEach((childNode) => {\n finalSrText = getSlottedElementsScreenreaderText(\n childNode,\n finalSrText,\n srParentNodes,\n );\n });\n }\n\n return finalSrText;\n};\n","// disable requiredSlot lint until testing issue can be resolved\n/* eslint-disable @nx/workspace-enforce-required-slot-decorator */\n\nimport { html, nothing } from 'lit';\nimport { property, queryAssignedElements, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { pdsCustomElement as customElement } from '../../decorators/pds-custom-element';\nimport { PdsElement } from '../PdsElement';\nimport styles from './alert.scss?inline';\nimport '../button/button';\nimport '../layout-container/layout-container';\nimport '@principal/design-system-icons-web/check';\nimport '@principal/design-system-icons-web/alert-circle';\nimport '@principal/design-system-icons-web/alert-triangle';\nimport '@principal/design-system-icons-web/x';\nimport '@principal/design-system-icons-web/info';\nimport { PdsLink } from '../link/link';\nimport { getSlottedElementsScreenreaderText } from '../../../utils/get-slotted-elements-screenreader-text';\n\n/**\n * @summary This component provides feedback to the user about the state of their interaction with in a page or application.\n *\n * @slot default Required: The contents of the alert\n *\n * @fires pds-button-click A custom event dispatched on a click on the alert dismiss button\n */\n@customElement('pds-alert', {\n category: 'component',\n type: 'component',\n state: 'stable',\n styles,\n})\nexport class PdsAlert extends PdsElement {\n connectedCallback() {\n super.connectedCallback();\n this.initLocalization();\n }\n\n /**\n * Style variant\n * - **information** default, renders the alert used for informational alerts\n * - **success** renders the alert used for success alerts\n * - **error** renders the alert used for error alerts, is not dismissible\n * - **warning** renders the alert used for warning alerts\n * - **banner** renders the alert used for banner alerts, by default includes a layout-container\n */\n @property()\n variant: 'information' | 'success' | 'error' | 'warning' | 'banner' =\n 'information';\n\n /**\n * Determines if we should place the header in a layout container\n * If this property isn't passed, no layout container is used.\n */\n @property({ type: String })\n layoutContainerVariant?: 'default' | 'narrow';\n\n /**\n * Remove layout container padding (only to be used if layoutContainerVariant has a value)\n * - **md** removes padding from the layout container below md breakpoint\n * - **all** removes padding from the layout container at all screens (used for nested layout containers)\n */\n @property({ type: String })\n layoutContainerRemovePadding?: 'md' | 'all';\n\n /**\n * Hide dismiss button\n */\n @property({ type: Boolean })\n hideDismissButton: boolean = false;\n\n /**\n * Show or hide alert\n @internal\n */\n @state()\n hidden: boolean = false;\n\n /**\n * Show or hide alert on page load\n */\n @property()\n hiddenOnPageLoad: boolean = false;\n\n /**\n * Checks to see if the alert has valid markup\n * @internal\n */\n @state()\n isValidAlert: boolean = true;\n\n @queryAssignedElements({ slot: undefined })\n defaultSlotElements: HTMLElement[];\n\n /**\n * @internal\n *\n * Checks markup for errors and adds browser console errors for misconfigurations\n */\n async checkLinkVariants() {\n if (this.variant === 'error' && this.hideDismissButton) {\n console.warn(\n 'Error alert cannot be dismissible and will always render without a close button. Please remove the hideDismissButton property to remove this warning.',\n this.outerHTML,\n );\n }\n\n const links = this.querySelectorAll('pds-link');\n links.forEach(async (link) => {\n const pdsLink = link as PdsLink;\n await pdsLink.updateComplete;\n\n const linkAttribute = pdsLink.variant\n ? pdsLink.variant\n : link.getAttribute('variant');\n\n if (this.variant === 'banner' && linkAttribute !== 'strong-inverted') {\n console.error(\n `Invalid link variant: '${linkAttribute}'. Links in a banner alert must use the 'strong-inverted' variant.\n Please update this link with the correct variant to remove this warning.`,\n link,\n );\n this.isValidAlert = false;\n } else if (this.variant !== 'banner' && linkAttribute !== 'strong') {\n console.error(\n `Invalid link variant: '${linkAttribute}'. Links in a non-banner alert must use the 'strong' variant.\n Please update this link with the correct variant to remove this warning.`,\n link,\n );\n this.isValidAlert = false;\n }\n });\n }\n\n /**\n * @internal\n *\n * @returns icon for the alert\n */\n getIcon() {\n switch (this.variant) {\n case 'success':\n return html``;\n case 'information':\n return html``;\n case 'warning':\n return html``;\n default:\n return html``;\n }\n }\n\n showAlert() {\n this.hidden = false;\n this.style.display = 'block';\n }\n\n hideAlert() {\n this.hidden = true;\n this.style.display = 'none';\n }\n\n /**\n * @internal\n *\n * @returns close button markup for dismissable alerts\n */\n getCloseButtonMarkup() {\n return html`\n
\n \n
\n `;\n }\n\n override async firstUpdated() {\n super.firstUpdated();\n // TODOv4: [ValidationTimeout] - Check to see if this setTimeout is still needed\n // This validation logic needs to happen late because it messes\n // with the render content and leads to hydration issues (and issues with child elements)\n // This may be something we can remove if we can find a better way to handle this\n // The validation is only for development - so end users should never see the render content change\n setTimeout(async () => {\n await this.checkLinkVariants();\n }, 1000);\n\n if (this.hiddenOnPageLoad) {\n this.hideAlert();\n }\n\n this.defaultSlotElements.forEach((element) => {\n this.applyLineHeightToSuperscriptElements(element);\n });\n }\n\n /**\n * Recursive function to apply line heights to all nested superscript elements\n * @internal\n */\n applyLineHeightToSuperscriptElements(element: Node) {\n element.childNodes.forEach((child) => {\n if (child.nodeName === 'SUP') {\n const supEl = child as HTMLElement;\n supEl.style.lineHeight = '0';\n }\n if (child.hasChildNodes()) {\n this.applyLineHeightToSuperscriptElements(child);\n }\n });\n }\n\n /**\n * @internal\n */\n get classNames() {\n return {\n [this.variant]: !!this.variant,\n 'is-hidden': this.hidden,\n };\n }\n\n /**\n * @internal\n */\n getScreenReaderText() {\n let srText = '';\n const srParentNodes = new Set();\n\n switch (this.variant) {\n case 'success':\n srText += this.translateText('success-alert');\n break;\n case 'warning':\n srText += this.translateText('warning-alert');\n break;\n case 'error':\n srText += this.translateText('error-alert');\n break;\n case 'banner':\n srText += this.translateText('banner-alert');\n break;\n case 'information':\n default:\n srText += this.translateText('information-alert');\n break;\n }\n\n if (this.hideDismissButton || this.variant === 'error') {\n srText += ` ${this.translateText('alert-not-dismissible')}`;\n }\n\n // This grabs the text content of the slotted elements and adds it to the screenreader text\n const slot = this.shadowRoot?.querySelector('slot');\n if (slot) {\n const slottedElements = slot.assignedNodes();\n slottedElements.forEach((node) => {\n srText = getSlottedElementsScreenreaderText(\n node,\n srText,\n srParentNodes,\n );\n });\n }\n return html`${srText}`;\n }\n\n render() {\n if (!this.isValidAlert) {\n return nothing;\n }\n\n if (this.layoutContainerVariant && this.variant !== 'banner') {\n return html`\n
\n
\n
${this.getIcon()}
\n
\n ${this.getScreenReaderText()}\n \n
\n ${this.variant === 'error' || this.hideDismissButton\n ? nothing\n : this.getCloseButtonMarkup()}\n
\n
\n
`;\n }\n if (this.layoutContainerVariant && this.variant === 'banner') {\n return html`\n \n
\n
\n
${this.getIcon()}
\n
\n ${this.getScreenReaderText()}\n \n
\n ${this.hideDismissButton ? nothing : this.getCloseButtonMarkup()}\n
\n
\n \n `;\n }\n return html`\n
\n
\n
${this.getIcon()}
\n
\n ${this.getScreenReaderText()}\n \n
\n ${this.variant === 'error' || this.hideDismissButton\n ? nothing\n : this.getCloseButtonMarkup()}\n
\n
\n `;\n }\n}\n"],"names":["TriangleAlert","PdsIconAlertTriangle","PdsIcon","AlertTriangle","html","unsafeHTML","__decorateClass","state","customElement","getSlottedElementsScreenreaderText","node","srText","srParentNodes","parentNode","nodeType","finalSrText","trimmedTextContent","element","tagName","childNode","PdsAlert","PdsElement","link","pdsLink","linkAttribute","child","supEl","slot","_a","ifDefined","nothing","property","queryAssignedElements","styles"],"mappings":"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","x_google_ignoreList":[0]}