{"version":3,"names":["AdsAlertErrors","AlertAnimationDirections","AlertLevels","SVGDefaultsFaTimes","AlertCloseButton","label","clickHandler","svgPathDataFaTimes","faTimesSvgPathData","PATH_DATA","svgHeightFaTimes","faTimesHeight","HEIGHT","svgWidthFaTimes","faTimesWidth","WIDTH","h","class","onClick","generateSVGImage","data","height","width","adsAlertCss","AdsAlertStyle0","AdsAlert","constructor","hostRef","this","el","setAttribute","identifier","generateId","component","Dictionary","registerComponent","handleIdentifierChange","newValue","handleVisibleChange","handleVisibility","onAnimationChanged","Object","values","toString","includes","showErrorMessage","INVALID_ANIMATION_DIRECTION","onLevelChanged","INVALID_ALERT_LEVEL","onAnimationDelayChanged","setTimeout","animation","DELAY_SET_WITHOUT_ANIMATION","open","isVisibleInternal","close","value","Promise","resolve","isVisible","visible","undefined","visibleChange","emit","isNullOrUndefined","visibleChangeHandler","alert","shadowRoot","querySelector","delay","isNullOrUndefinedOrEmpty","animationDelay","Math","abs","then","classList","remove","catch","add","componentDidLoad","Pipeline.addComponent","level","disconnectedCallback","Pipeline.removeComponent","render","classes","isDialog","hasCloseButton","hasAnimation","existValueInEnum","push","get","closeButton","attributes","role","isImportant","hostAttributes","Host","assign","key","join","id","text"],"sources":["src/components/ads-alert/ads-alert.types.ts","src/components/ads-alert/components/ads-alert-close-button/ads-alert-close-button.tsx","src/components/ads-alert/ads-alert.scss?tag=ads-alert&encapsulation=shadow","src/components/ads-alert/ads-alert.tsx"],"sourcesContent":["/**\n * Collection of alert errors\n */\nexport enum AdsAlertErrors {\n INVALID_ANIMATION_DIRECTION = 'Invalid animation direction',\n INVALID_ALERT_LEVEL = 'Invalid alert level',\n DELAY_SET_WITHOUT_ANIMATION = \"Prop 'animationDelay' was set without 'animation'. Please set 'animation' for the delay to take effect\",\n}\n\n/**\n * Interface for visibleChange handler\n */\nexport type VisibleChangeHandler = (evt: VisibleChangeEvent) => void;\n\n/**\n * An interface for the 'visibleChange' event\n * @docs\n */\nexport interface VisibleChangeEvent {\n el: HTMLElement;\n visible: boolean;\n}\n\n/**\n * The alert animation directions\n * @example\n * ```\n * \n * \n * ```\n * @public\n */\nexport enum AlertAnimationDirections {\n UP = 'up',\n DOWN = 'down',\n}\n\nexport type AlertAnimationDirectionUp = 'up';\nexport type AlertAnimationDirectionDown = 'down';\n\n/**\n * Animation direction options\n */\nexport type AlertAnimationDirection = AlertAnimationDirectionUp | AlertAnimationDirectionDown;\n\n/**\n * The alert levels\n * @example\n * ```\n * \n * \n * \n * ```\n * @public\n */\nexport enum AlertLevels {\n SUCCESS = 'success',\n WARNING = 'warning',\n DANGER = 'danger',\n}\n\nexport type AlertLevelSuccess = 'success';\nexport type AlertLevelWarning = 'warning';\nexport type AlertLevelDanger = 'danger';\n\n/**\n * Alert level options\n */\nexport type AlertLevel = AlertLevelSuccess | AlertLevelWarning | AlertLevelDanger;\n","import { FunctionalComponent, VNode, h } from '@stencil/core';\nimport { height as faTimesHeight, svgPathData as faTimesSvgPathData, width as faTimesWidth } from '@fortawesome/pro-light-svg-icons/faTimes';\nimport { generateSVGImage } from 'utils/imageHelper';\n\n/**\n * @hidden\n */\ninterface IAlertCloseButtonProps {\n label: string;\n clickHandler: (evt: MouseEvent) => void;\n}\n\nenum SVGDefaultsFaTimes {\n WIDTH = 384,\n HEIGHT = 512,\n PATH_DATA = 'M324.5 411.1c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L214.6 256 347.1 123.5c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L192 233.4 59.6 100.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L169.4 256 36.9 388.5c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L192 278.6 324.5 411.1z',\n}\n\n/**\n * @return {FunctionalComponent} The close button\n */\nexport const AlertCloseButton: FunctionalComponent = ({ label, clickHandler }: IAlertCloseButtonProps) => {\n const svgPathDataFaTimes = faTimesSvgPathData ?? SVGDefaultsFaTimes.PATH_DATA;\n const svgHeightFaTimes = faTimesHeight ?? SVGDefaultsFaTimes.HEIGHT;\n const svgWidthFaTimes = faTimesWidth ?? SVGDefaultsFaTimes.WIDTH;\n\n return (\n \n ) as VNode;\n};\n","@import 'core';\n\n@import 'ads-alert.animations.scss';\n\n/**\n * @prop --ads-alert-background-color: Background color\n * @prop --ads-alert-background-color-danger: Danger background color\n * @prop --ads-alert-background-color-success: Success background color\n * @prop --ads-alert-background-color-warning: Warning background color\n *\n * @prop --ads-alert-color: Text color\n * @prop --ads-alert-color-danger: Danger text color\n * @prop --ads-alert-color-success: Success text color\n * @prop --ads-alert-color-warning: Warning text color\n *\n * @prop --ads-alert-z-index: Z-index layer height\n */\n\n::slotted(*) {\n display: inline-block !important;\n}\n\n:host {\n display: block;\n position: relative;\n width: 100%;\n z-index: var(--ads-alert-z-index, $ads-alert-z-index);\n}\n\n:host([theme='default']) {\n @include ads-vars-component-alert-default;\n}\n\n:host([theme='dark']) {\n @include ads-vars-component-alert-dark;\n}\n\n:host([dir='ltr']) {\n @include ads-vars-component-alert-ltr;\n}\n\n:host([dir='rtl']) {\n @include ads-vars-component-alert-rtl;\n}\n\n.c-alert {\n background-color: var(--ads-alert-background-color, $ads-alert-background-color);\n box-sizing: border-box;\n color: var(--ads-alert-color, $ads-alert-color);\n fill: var(--ads-alert-color, $ads-alert-color);\n display: block !important;\n max-height: $ads-alert-animation-max-height;\n opacity: 1;\n position: relative;\n text-align: center;\n width: 100%;\n z-index: inherit;\n\n &.is-closed {\n pointer-events: none;\n }\n\n &.is-hidden {\n display: none !important;\n }\n\n &:not(.is-animated).is-closed {\n display: none !important;\n }\n\n &__container {\n background: transparent;\n }\n\n &.is-animated {\n animation-duration: 1s;\n }\n\n &.is-animated:not(.is-closed) {\n animation-name: animate-height-increase;\n }\n\n &.is-closed.is-animated {\n animation-duration: $ads-alert-animation-duration;\n animation-name: animate-height-decrease;\n max-height: 0;\n }\n\n &.is-animated &__container {\n animation-duration: $ads-alert-animation-duration;\n }\n\n &.is-animated-up &__container {\n animation-name: animate-up;\n }\n\n &.is-animated-down &__container {\n animation-name: animate-down;\n }\n\n &.is-closed.is-animated &__container {\n opacity: 0;\n }\n\n &.is-closed.is-animated-down &__container {\n animation-name: animate-down-closed;\n transform: translateY(-$ads-alert-animation-offset);\n }\n\n &.is-closed.is-animated-up &__container {\n animation-name: animate-up-closed;\n transform: translateY($ads-alert-animation-offset);\n }\n\n &__text {\n color: inherit;\n font-family: var(--ads-font-family);\n font-size: 16px;\n margin: 0 auto;\n max-width: $ads-container-breakpoint-xl;\n padding: 16px 58px;\n }\n\n &__close {\n align-items: center;\n background: transparent;\n border: none;\n cursor: pointer;\n display: flex;\n fill: inherit;\n height: 44px;\n justify-content: center;\n left: var(--ads-alert-close-button-left, $ads-alert-close-button-left-ltr);\n position: absolute;\n right: var(--ads-alert-close-button-right, $ads-alert-close-button-right-ltr);\n text-overflow: clip;\n top: 4px;\n width: 44px;\n\n svg {\n height: 20px;\n width: 20px;\n }\n\n &:active {\n color: inherit;\n }\n }\n}\n\n:host(.is-success) .c-alert {\n background-color: var(--ads-alert-background-color-success, $ads-alert-background-color-success);\n color: var(--ads-alert-color-success, $ads-alert-color-success);\n fill: var(--ads-alert-color-success, $ads-alert-color-success);\n}\n\n:host(.is-warning) .c-alert {\n background-color: var(--ads-alert-background-color-warning, $ads-alert-background-color-warning);\n color: var(--ads-alert-color-warning, $ads-alert-color-warning);\n fill: var(--ads-alert-color-success, $ads-alert-color-success);\n}\n\n:host(.is-danger) .c-alert {\n background-color: var(--ads-alert-background-color-danger, $ads-alert-background-color-danger);\n color: var(--ads-alert-color-danger, $ads-alert-color-danger);\n fill: var(--ads-alert-color-success, $ads-alert-color-success);\n}\n","import * as Pipeline from '../core/utils/pipeline';\nimport {\n AdsAlertErrors,\n AlertAnimationDirection,\n AlertAnimationDirections,\n AlertLevel,\n AlertLevels,\n VisibleChangeEvent,\n VisibleChangeHandler,\n} from './ads-alert.types';\nimport { AlertCloseButton } from './components/ads-alert-close-button/ads-alert-close-button';\nimport { BaseComponent } from '../core/interfaces/BaseComponent';\nimport { Component, Element, Event, EventEmitter, Host, Method, Prop, State, VNode, Watch, h } from '@stencil/core';\nimport { Dictionary } from '../core/classes/Dictionary';\nimport { delay, existValueInEnum, isNullOrUndefined, isNullOrUndefinedOrEmpty } from 'utils/index';\nimport { generateId, showErrorMessage } from '../core/utils/components';\n\n/**\n * Alerts provide contextual application-level messaging. Alerts classes indicate the state of the application and provide contextual information about what the user should do.\n * Alert text should be as short as possible, can include links and can be dismissed. There are 4 alert classes:\n * \"Default\" is used for informational messages where the user does not need to take immediate action.\n * \"Success\" is used to indicate the successful completion of a user action.\n * \"Warning\" is used to indicate a problem occurred completing the user action where further action may be necessary.\n * \"Danger\" is used to indicate failures where the user action could not be completed.\n * @tag ``\n * @slot - Content rendered as rich text inside the component\n * @example\n * This alert indicates the default style\n * This alert indicates success\n * This alert indicates warnings\n * This alert indicates failures\n */\n@Component({\n tag: 'ads-alert',\n styleUrl: 'ads-alert.scss',\n shadow: true,\n})\nexport class AdsAlert implements BaseComponent {\n /**\n * @hidden\n */\n public component: string;\n\n constructor() {\n this.el.setAttribute('id', this.identifier || generateId('ads-alert'));\n this.component = 'ads-alert';\n Dictionary.registerComponent(this);\n }\n\n @Element() private el: HTMLAdsAlertElement;\n\n /**\n * @hidden\n */\n @State() isVisibleInternal = true;\n\n /**\n * The unique identifier (optional)\n */\n @Prop({ attribute: 'id' }) identifier?: string;\n\n /**\n * The animation direction (optional)\n */\n @Prop({ reflect: true }) animation?: AlertAnimationDirection;\n\n /**\n * The animation delay in milliseconds (optional)\n * @default 0\n */\n @Prop({ reflect: true }) animationDelay = 0;\n\n /**\n * Whether or not the alert is visible (optional)\n */\n @Prop({ reflect: true }) visible?: boolean;\n\n /**\n * Whether or not the alert has a close button (optional)\n * @default true\n */\n @Prop({ reflect: true }) hasCloseButton = true;\n\n /**\n * Whether the alert should notify the user (screen reader) immediately and interrupt on change, or wait until the screen reader is free (optional)\n * @default false\n */\n @Prop({ reflect: true }) isImportant = false;\n\n /**\n * The alert level (optional)\n */\n @Prop({ reflect: true }) level?: AlertLevel;\n\n /**\n * The alert content when not provided via a slot (optional)\n */\n @Prop({ reflect: true }) text?: string;\n\n /**\n * Callback function for visibleChange events (optional)\n */\n @Prop() visibleChangeHandler?: VisibleChangeHandler;\n\n /**\n * Emits the 'visibleChange' custom event, when an attempt to change the visibility is made\n * Usage: `document.querySelector('ads-alert').addEventListener('visibleChange', function(evt) {});`\n * @event\n */\n @Event({ bubbles: false }) visibleChange: EventEmitter;\n\n /**\n * Handle identifier property changes\n * @param {string} newValue The new value for \"identifier\"\n * @hidden\n */\n @Watch('identifier')\n handleIdentifierChange(newValue: string): void {\n this.el.setAttribute('id', newValue || generateId('ads-alert'));\n }\n\n /**\n * Handle visible property changes\n * @param {boolean} newValue The new value for \"visible\"\n * @hidden\n */\n @Watch('visible')\n handleVisibleChange(newValue: boolean): void {\n void this.handleVisibility(newValue);\n }\n\n /**\n * Called when animation prop changes\n * @param {AlertAnimationDirection} newValue new value\n * @hidden\n */\n @Watch('animation')\n onAnimationChanged(newValue: AlertAnimationDirection): void {\n if (newValue && !Object.values(AlertAnimationDirections).toString().includes(newValue)) {\n showErrorMessage(AdsAlertErrors.INVALID_ANIMATION_DIRECTION, this.el);\n }\n }\n\n /**\n * Called when level prop changes\n * @param {AlertLevel} newValue new value\n * @hidden\n */\n @Watch('level')\n onLevelChanged(newValue: AlertLevel): void {\n if (newValue && !Object.values(AlertLevels).toString().includes(newValue)) {\n showErrorMessage(AdsAlertErrors.INVALID_ALERT_LEVEL, this.el);\n }\n }\n\n /**\n * Called when animationDelay prop changes\n * @param {number} newValue new value\n * @hidden\n */\n @Watch('animationDelay')\n onAnimationDelayChanged(newValue: number): void {\n // wait for next frame in case this.animation is also going to update\n setTimeout(() => {\n if (newValue && !this.animation) {\n showErrorMessage(AdsAlertErrors.DELAY_SET_WITHOUT_ANIMATION, this.el);\n }\n }, 50);\n }\n\n /**\n * Opens the alert box\n * @return {Promise} Opens the alert\n */\n @Method()\n open(): Promise {\n return !this.isVisibleInternal ? this.handleVisibility(true) : null;\n }\n\n /**\n * Closes the alert box\n * @return {Promise} Closes the alert\n */\n @Method()\n close(): Promise {\n return this.isVisibleInternal ? this.handleVisibility(false) : null;\n }\n\n /**\n * Returns whether the alert is currently visible or not\n * @return {Promise} Whether the alert is visible\n */\n @Method()\n value(): Promise {\n return Promise.resolve(this.isVisibleInternal);\n }\n\n /**\n * Handles resolving the visibility change of the alert\n * @param {boolean} isVisible True if visible. False otherwise\n * @return {Promise} Visibility promise\n * @hidden\n */\n private async handleVisibility(isVisible: boolean): Promise {\n // Emit the event without updating anything.\n if (this.visible !== undefined && this.visible !== null && this.visible !== isVisible) {\n this.visibleChange.emit({ el: this.el, visible: isVisible });\n\n if (!isNullOrUndefined(this.visibleChangeHandler)) {\n this.visibleChangeHandler({ el: this.el, visible: isVisible });\n }\n\n return;\n }\n\n return new Promise((resolve) => {\n const alert = this.el.shadowRoot.querySelector('.c-alert');\n\n if (isVisible) {\n // Delay opening the box\n delay(!isNullOrUndefinedOrEmpty(this.animation) && this.animationDelay > 0, Math.abs(this.animationDelay))\n .then(() => {\n alert.classList.remove('is-hidden');\n alert.classList.remove('is-closed');\n\n // Delay sending the emit until the box disappears (500ms set in css)\n delay(!isNullOrUndefinedOrEmpty(this.animation), 500)\n .then(() => {\n this.isVisibleInternal = isVisible;\n\n if (this.visible !== this.isVisibleInternal) {\n this.visibleChange.emit({ el: this.el, visible: true });\n !isNullOrUndefined(this.visibleChangeHandler) ? this.visibleChangeHandler({ el: this.el, visible: true }) : null;\n }\n\n return resolve();\n })\n .catch(() => {\n return;\n });\n })\n .catch(() => {\n return;\n });\n } else if (isVisible === false) {\n alert.classList.add('is-closed');\n // Delay sending the emit until the box disappears (500ms set in css)\n delay(!isNullOrUndefinedOrEmpty(this.animation), 500)\n .then(() => {\n alert.classList.add('is-hidden');\n this.isVisibleInternal = isVisible;\n\n if (this.visible !== this.isVisibleInternal) {\n this.visibleChange.emit({ el: this.el, visible: false });\n !isNullOrUndefined(this.visibleChangeHandler) ? this.visibleChangeHandler({ el: this.el, visible: false }) : null;\n }\n\n return resolve();\n })\n .catch(() => {\n return;\n });\n }\n });\n }\n\n protected componentDidLoad(): void {\n Pipeline.addComponent(this.el);\n this.visible !== undefined && this.visible !== null && !this.visible ? void this.handleVisibility(false) : null;\n\n if (this.animation && !Object.values(AlertAnimationDirections).toString().includes(this.animation)) {\n showErrorMessage(AdsAlertErrors.INVALID_ANIMATION_DIRECTION, this.el);\n }\n\n if (this.level && !Object.values(AlertLevels).toString().includes(this.level)) {\n showErrorMessage(AdsAlertErrors.INVALID_ALERT_LEVEL, this.el);\n }\n\n if (this.animationDelay && isNullOrUndefinedOrEmpty(this.animation)) {\n showErrorMessage(AdsAlertErrors.DELAY_SET_WITHOUT_ANIMATION, this.el);\n }\n }\n\n protected disconnectedCallback(): void {\n Pipeline.removeComponent(this.el);\n }\n\n protected render(): VNode {\n // Generate the class list\n const classes = ['c-alert'];\n const isDialog = this.hasCloseButton;\n const hasAnimation = this.animation && existValueInEnum(AlertAnimationDirections, this.animation);\n if (hasAnimation) {\n classes.push(`is-animated is-animated-${this.animation}`);\n }\n\n // Generate the close button, if required\n const label = Dictionary.get('Dismiss message', 'DISMISS_MESSAGE');\n const closeButton = this.hasCloseButton ? (( this.close()} />) as HTMLElement) : null;\n\n const attributes = {\n role: isDialog ? 'alertdialog' : 'alert',\n 'aria-describedby': isDialog ? `ads:alert:${this.identifier}` : null,\n 'aria-live': this.isImportant ? 'assertive' : 'polite',\n };\n\n const hostAttributes = {\n 'data-id': this.identifier,\n class: !isNullOrUndefinedOrEmpty(this.level) ? `is-${this.level}` : null,\n };\n\n return (\n \n
\n
\n
\n {!isNullOrUndefinedOrEmpty(this.text) ? this.text : }\n
\n {closeButton}\n
\n
\n
\n ) as VNode;\n }\n}\n"],"mappings":"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","ignoreList":[]}