{"version":3,"names":["linkCss","EonUiLinkStyle0","Link","constructor","hostRef","this","schemeConfig","LINK_SCHEME_CONFIG","schemeMap","LINK_SCHEME_MAP","localization","LINK_LOCALIZATION","rel","LINKSIZE_NORMAL","LINK_DEFAULT_ICON_POSITION","loader","SvgLoader","componentWillLoad","applyScheme","setCurrentLocalization","computeIcon","computeAriaLabel","setRelAttribute","initContextMenu","isInfoIconAvailable","hostElement","querySelector","getTooltipElement","componentDidLoad","setCssVariables","linkLoad","emit","applySchemeDelegate","setCssVariablesDelegate","target","setCurrentLocalizationDelegate","ariaLabel","currentLocalization","currentAriaLabel","openModalId","modal","computeLinkAriaLabel","href","download","hideIcon","displayInline","currentIcon","icon","fallbackIconCheckup","ICON_DEFAULT","ComputeLinkIcon","requestSvg","SvgType","ICON","catch","handleClick","_event","openModal","contextMenu","visible","linkClick","handleKeyDown","e","key","KeyIds","ENTER","SPACE","tooltipElement","iconRender","h","class","pfx","size","LINKSIZE_SMALL","name","alignIconCenter","isVisibilityOnClick","_a","visibility","handleFocusEvent","tooltipElements","Array","from","document","querySelectorAll","map","item","parentElement","TOOLTIP_VISIBILITY_ALWAYS","TOOLTIP_VISIBILITY_ON_HOVER","handleBlurEvent","onDocumentClick","event","TOOLTIP_VISIBILITY_ON_CLICK","getTooltipProps","props","onFocus","onBlur","render","Host","title","getAttribute","role","disabled","tabIndex","navigable","hover","forceHoverStyle","linkStyle","onClick","onKeyDown","iconPosition","LINK_ICON_POSITION_RIGHT","text","innerHTML"],"sources":["src/components/link/link.scss?tag=eon-ui-link&encapsulation=shadow","src/components/link/link.tsx"],"sourcesContent":["/**\n * THEME JSON CONFIG CSS VARS\n * The following default component scss variables can be overwritten via theme configuration per brand.\n * If you need to add new one, please make sure to set a default value.\n * JSON Definition for Component with name \"Example\": testCssVar: \"20px\"\n * Resulting CSS var: $example-test-css-var: 20px;\n */\n\n$link-font-size: 18px;\n$link-font-size-small: 14px;\n$link-line-height: 24px;\n$link-line-height-small: 18px;\n$link-min-height: 32px;\n$link-min-height-small: auto;\n$link-font-weight: $font-weight-bold;\n$link-margin-icon-text-autosize: 8px;\n$link-margin-icon-text: 4px;\n$link-border-bottom-width: 2px;\n\n/* END THEME JSON CONFIG CSS VARS ******************************************************* */\n\n:host {\n position: relative;\n margin: 0px;\n padding: 0;\n display: inline-flex;\n --fontWeight: #{$link-font-weight};\n --fontSize: #{$link-font-size};\n --lineHeight: #{$link-line-height};\n --borderBottomWidth: #{$link-border-bottom-width};\n --minHeight: #{$link-min-height};\n\n .#{$prefix}link-info-icon {\n margin: 4px 16px 0;\n }\n}\n\n:host([size=\"small\"]) {\n --fontWeight: #{$link-font-weight};\n --fontSize: #{$link-font-size-small};\n --lineHeight: #{$link-line-height-small};\n --minHeight: #{$link-min-height-small};\n\n .#{$prefix}link-info-icon {\n margin-top: 0;\n }\n}\n\n:host(.#{$prefix}inline) {\n display: inline;\n\n a {\n display: inherit;\n\n .#{$prefix}textWrapper {\n display: inherit;\n }\n }\n}\n\n:host([icon-position=\"right\"]) {\n a {\n &.#{$prefix}autosize {\n .#{$prefix}textWrapper + .#{$prefix}iconWrapper {\n margin-left: $link-margin-icon-text-autosize;\n }\n }\n\n .#{$prefix}textWrapper + .#{$prefix}iconWrapper {\n margin-left: $link-margin-icon-text;\n }\n }\n}\n\n:host([icon-position=\"left\"]) {\n a {\n &.#{$prefix}autosize {\n .#{$prefix}iconWrapper + .#{$prefix}textWrapper {\n margin-left: $link-margin-icon-text-autosize;\n }\n }\n\n .#{$prefix}iconWrapper + .#{$prefix}textWrapper {\n margin-left: $link-margin-icon-text;\n }\n }\n}\n\na {\n font-family: $font-family-base;\n font-weight: var(--fontWeight);\n font-size: var(--fontSize);\n line-height: var(--lineHeight);\n display: inline-flex;\n align-items: center;\n transition: color $transition-duration ease-in-out;\n text-decoration: none;\n color: v(contentColor);\n min-height: var(--minHeight);\n cursor: pointer;\n max-width: 100%;\n\n .#{$prefix}iconWrapper {\n align-self: flex-start;\n\n eon-ui-icon {\n display: table;\n transition: fill $transition-duration ease-in-out;\n fill: v(contentColor);\n /* Why line-height: 1px?\n * We must remove the line-height from the tag because the height expands the icon-div from 32px to 36px.\n * That will destroy the focus-state (outline-border) if the link is not centered.\n */\n line-height: 1px;\n }\n }\n\n .#{$prefix}textWrapper {\n align-self: flex-start;\n margin-top: calc(32px * 0.5 - 24px * 0.5);\n padding-bottom: var(--borderBottomWidth);\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n span.#{$prefix}text {\n border-bottom: solid v(borderBottomWidth) transparent;\n transition: border $transition-duration ease-in-out;\n }\n\n &.#{$prefix}size-small {\n span.#{$prefix}text {\n border-bottom: solid 1px transparent;\n }\n }\n\n &.#{$prefix}hover,\n &:hover {\n text-decoration: none;\n color: v(contentHoverColor);\n border-bottom-color: v(borderBottomWidth) solid v(contentHoverColor);\n\n .#{$prefix}iconWrapper {\n .#{$prefix}icon {\n fill: v(contentHoverColor);\n }\n }\n\n span.#{$prefix}text {\n border-bottom: solid v(contentHoverColor);\n border-bottom: v(borderBottomWidth) solid v(contentHoverColor);\n }\n\n &.#{$prefix}size-small {\n border-bottom-color: 1px solid v(contentHoverColor);\n span.#{$prefix}text {\n border-bottom: solid 1px v(contentHoverColor);\n }\n }\n }\n\n &:focus {\n outline: none;\n border-bottom-color: v(borderBottomWidth) solid v(contentFocusColor);\n .#{$prefix}iconWrapper {\n .#{$prefix}icon {\n fill: v(contentFocusColor);\n }\n }\n\n span.#{$prefix}text {\n color: v(contentFocusColor);\n border-bottom: solid v(contentFocusColor);\n border-bottom: v(borderBottomWidth) solid v(contentFocusColor);\n }\n\n &.#{$prefix}size-small {\n border-bottom-color: 1px solid v(contentFocusColor);\n span.#{$prefix}text {\n color: v(contentFocusColor);\n border-bottom: solid 1px v(contentFocusColor);\n }\n }\n }\n\n &:focus-within {\n outline: none;\n border-bottom-color: v(borderBottomWidth) solid v(contentFocusColor);\n .#{$prefix}iconWrapper {\n .#{$prefix}icon {\n fill: v(contentFocusColor);\n }\n }\n\n span.#{$prefix}text {\n color: v(contentFocusColor);\n border-bottom: solid v(contentFocusColor);\n border-bottom: v(borderBottomWidth) solid v(contentFocusColor);\n }\n\n &.#{$prefix}size-small {\n color: v(contentFocusColor);\n border-bottom-color: 1px solid v(contentFocusColor);\n span.#{$prefix}text {\n border-bottom: solid 1px v(contentFocusColor);\n }\n }\n }\n\n /* &:focus {\n @include focusBorder(v(contentFocusColor));\n &.#{$prefix}size-small {\n outline: 1px solid;\n outline-offset: 4px;\n outline-color: v(contentFocusColor);\n }\n } */\n\n /* Do not combine with pseudo-classes above!!!\n * https://medium.com/@jonathanabrams/be-wary-of-the-css-comma-selector-and-pseudo-classes-688c02320e7f\n */\n /* &:focus-within {\n @include focusBorder(v(contentFocusColor));\n &.#{$prefix}size-small {\n outline: 1px solid;\n outline-offset: 4px;\n outline-color: v(contentFocusColor);\n }\n } */\n\n &.#{$prefix}visibility-always,\n &.#{$prefix}visibility-onHover {\n cursor: default;\n }\n\n &.#{$prefix}visibility-onClick {\n cursor: pointer;\n }\n\n &.#{$prefix}disabled {\n pointer-events: none;\n color: v(contentDisableColor);\n transition: unset;\n\n .#{$prefix}iconWrapper {\n align-self: flex-start;\n\n eon-ui-icon {\n fill: v(contentDisableColor);\n }\n }\n\n span.#{$prefix}text {\n color: v(contentDisableColor);\n border-bottom: unset;\n transition: unset;\n }\n\n &:focus {\n outline: none;\n pointer-events: none;\n color: v(contentDisableColor);\n border-bottom: unset;\n .#{$prefix}iconWrapper {\n .#{$prefix}icon {\n fill: v(contentDisableColor);\n }\n }\n span.#{$prefix}text {\n color: v(contentDisableColor);\n border-bottom: unset;\n transition: unset;\n }\n\n &.#{$prefix}size-small {\n color: v(contentDisableColor);\n border-bottom: unset;\n span.#{$prefix}text {\n border-bottom: unset;\n transition: unset;\n }\n }\n }\n\n &:focus-within {\n outline: none;\n pointer-events: none;\n color: v(contentDisableColor);\n border-bottom: unset;\n .#{$prefix}iconWrapper {\n .#{$prefix}icon {\n fill: v(contentDisableColor);\n }\n }\n span.#{$prefix}text {\n color: v(contentDisableColor);\n border-bottom: unset;\n transition: unset;\n }\n\n &.#{$prefix}size-small {\n color: v(contentDisableColor);\n border-bottom: unset;\n span.#{$prefix}text {\n border-bottom: unset;\n transition: unset;\n }\n }\n }\n\n &.#{$prefix}hover,\n &:hover {\n pointer-events: none;\n color: v(contentDisableColor);\n .#{$prefix}iconWrapper {\n .#{$prefix}icon {\n fill: v(contentDisableColor);\n }\n }\n\n span.#{$prefix}text {\n border-bottom: unset;\n }\n\n &.#{$prefix}size-small {\n border-bottom: unset;\n span.#{$prefix}text {\n border-bottom: unset;\n }\n }\n }\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\";\nimport { applySchemeDelegate, ColorableComponent, setCssVariablesDelegate } from \"../../common/colorable-component\";\nimport { LocalizableComponent, Localization, setCurrentLocalizationDelegate } from \"../../common/localizable-component\";\nimport { LinkLocalization, LinkSchemeDefinition, LinkSchemeName, LinkSize, LinkTarget } from \"./constants/link-types\";\nimport { LINK_SCHEME_CONFIG, LINK_SCHEME_MAP, LINKSIZE_NORMAL, LINKSIZE_SMALL } from \"./constants/link-constants\";\nimport { computeLinkAriaLabel, ComputeLinkIcon, ICON_DEFAULT } from \"../../utils/link-helper\";\nimport pfx from \"../../utils/style-class-prefix-helper\";\nimport { openModal } from \"../../utils/openModal\";\nimport { LINK_LOCALIZATION } from \"./constants/link-i18n\";\nimport { KeyIds } from \"../../constants/keys\";\nimport { LinkSchemeConfiguration } from \"../../constants/colors\";\nimport {\n TOOLTIP_VISIBILITY_ALWAYS,\n TOOLTIP_VISIBILITY_ON_CLICK,\n TOOLTIP_VISIBILITY_ON_HOVER\n} from \"../tooltip/constants/tooltip-constants\";\nimport {\n LINK_DEFAULT_ICON_POSITION,\n LINK_ICON_POSITION_RIGHT,\n LinkIconPosition\n} from \"../../constants/global-constants\";\nimport { SvgType } from \"../../common/svg-type\";\nimport { SvgLoader } from \"../../common/svg-loader\";\n// import { InitLogging } from \"../../decorators/init-logging\";\n\n/**\n * @slot info-icon - Holds a single eon-ui-info-icon element\n * @slot context-menu - holds eon-ui-context-menu component\n * @slot tooltip - holds eon-ui-tooltip component\n */\n@Component({\n tag: \"eon-ui-link\",\n styleUrl: \"link.scss\",\n shadow: true\n})\nexport class Link\n implements ColorableComponent>, LocalizableComponent {\n // @InitLogging() sentryTransaction;\n schemeConfig: LinkSchemeConfiguration = LINK_SCHEME_CONFIG;\n schemeMap = LINK_SCHEME_MAP;\n contextMenu: HTMLEonUiContextMenuElement;\n tooltipElement: HTMLEonUiTooltipElement;\n\n @State() activeScheme: LinkSchemeDefinition;\n @State() linkStyle: string;\n @State() isInfoIconAvailable: boolean;\n @State() isVisibilityOnClick: string;\n @State() currentIcon: string;\n\n localization: Localization = LINK_LOCALIZATION;\n currentLocalization: LinkLocalization;\n\n private readonly loader: SvgLoader;\n private currentAriaLabel: string;\n private rel: string = \"\";\n\n /**\n * Raised when the link has been clicked.\n */\n @Event() linkClick: EventEmitter;\n\n /**\n * Raised when the link has been loaded.\n */\n @Event() linkLoad: EventEmitter;\n\n @Element() hostElement: HTMLEonUiLinkElement;\n\n /**\n * The name of the color scheme of the component.\n * If not set, the component will try to calculate it based on the nearest enclosing background information given by inner-background attribute or eon-ui-background component.\n */\n @Prop({ reflect: true }) scheme: LinkSchemeName;\n\n /**\n * Defines the target url of a Link.\n * Make sure to prefix this with a protocol if the link should display an icon automatically.\n * Valid protocols are \"http://\", \"https://\", \"mailto:\" and \"tel:\".\n * @example http://www.google.de, tel:0123456789\n */\n @Prop({ mutable: true }) href: string;\n\n /**\n * Defines the text shown as label for the link.\n */\n @Prop() text: string;\n\n /**\n * Specifies how the link is opened in the browser, e.g. in new window/tab.\n * @example \"_blank\", \"_self\", \"_parent\", \"_top\"\n */\n @Prop() target: LinkTarget;\n\n /**\n * If the automatically generated icon does not fit, you can override it with your own.\n * Possible icons are: \"arrow_right\", \"phone\", \"notification\", \"social_twitter\" \"social_youtube\", \"social_facebook\", \"social_instagram\" and \"social_linked_in\".\n * @example \"phone\".\n */\n @Prop() icon: string;\n\n /**\n * Whether this button can be focused by a keyboard. Defaults to true.\n */\n @Prop() navigable: boolean = true;\n\n /**\n * Specifies the label to use for accessibility.\n * Always provide this for pure icon buttons!\n */\n @Prop() ariaLabel: string;\n\n /**\n * **Internal use only!**\n *  
\n * if the link used inside the linklist the icon of the link should get a slightly wider container where it should be center-aligned.\n * **Important notes**: This property **must** not be used manually, i.e. only if the link is used within a linklist.
See documentation for the linklist.\n * @disableControlInStorybook true\n */\n @Prop() alignIconCenter: boolean;\n\n /**\n * If set to true, no icon will be shown. Default: false\n */\n @Prop() hideIcon: boolean;\n\n /**\n * If set to true, the \"Download\" icon will be used for the link and the browser will be forced to download the file instead of rendering it.\n * This is also the case if the href starts with \"file:\".\n */\n @Prop() download: boolean;\n\n /**\n * Determine if the link should be displayed as if it was hovered.\n */\n @Prop() forceHoverStyle: boolean;\n\n /**\n * The size of the link.\n */\n @Prop() size: LinkSize = LINKSIZE_NORMAL;\n\n /**\n * use this property to open a modal, the modal must have the same modal-id
\n * see component: Modal\n */\n @Prop() openModalId: string;\n\n /**\n * used to set icon position of the link. It can either be left or right.\n */\n @Prop({ reflect: true }) iconPosition: LinkIconPosition = LINK_DEFAULT_ICON_POSITION;\n\n /**\n * used to integrate links inside paragraphs.\n */\n @Prop() displayInline: boolean;\n\n /**\n * Used to Disable the action link.\n */\n @Prop() disabled: boolean;\n\n constructor() {\n this.loader = new SvgLoader();\n }\n\n componentWillLoad() {\n this.applyScheme();\n this.setCurrentLocalization();\n this.computeIcon();\n this.computeAriaLabel();\n this.setRelAttribute();\n this.initContextMenu();\n this.isInfoIconAvailable = !!this.hostElement.querySelector('[slot=\"info-icon\"]');\n this.getTooltipElement();\n }\n\n componentDidLoad() {\n this.setCssVariables();\n this.linkLoad.emit();\n }\n\n @Watch(\"scheme\")\n applyScheme(): void {\n applySchemeDelegate(this);\n }\n\n @Watch(\"activeScheme\")\n setCssVariables(): void {\n setCssVariablesDelegate(this);\n }\n\n @Watch(\"target\")\n setRelAttribute(): void {\n this.rel = this.target === \"_blank\" && \"noopener noreferrer\";\n }\n\n setCurrentLocalization() {\n setCurrentLocalizationDelegate(this);\n }\n\n @Watch(\"href\")\n @Watch(\"ariaLabel\")\n private computeAriaLabel() {\n if (this.ariaLabel || !this.currentLocalization) {\n this.currentAriaLabel = this.ariaLabel;\n return;\n }\n\n if (this.openModalId) {\n this.currentAriaLabel = this.currentLocalization.ariaLabel.modal;\n } else {\n this.currentAriaLabel = computeLinkAriaLabel(this.currentLocalization, this.href, this.download);\n }\n }\n\n @Watch(\"href\")\n @Watch(\"icon\")\n @Watch(\"hideIcon\")\n @Watch(\"download\")\n @Watch(\"displayInline\")\n private computeIcon() {\n if (this.hideIcon || this.displayInline) {\n this.currentIcon = null;\n return;\n } else if (this.icon) {\n this.currentIcon = this.icon;\n this.fallbackIconCheckup(ICON_DEFAULT);\n return;\n }\n\n // Get icon based on the links target url\n this.currentIcon = ComputeLinkIcon(this.href, this.download, \"link\") as string;\n this.fallbackIconCheckup(ICON_DEFAULT);\n }\n\n /**\n * Check if icon does exist. If not, set to default.\n */\n fallbackIconCheckup(icon: string) {\n this.loader.requestSvg(this.currentIcon, SvgType.ICON).catch(() => {\n this.currentIcon = icon;\n });\n }\n\n handleClick(_event: Event) {\n if (!!this.openModalId) {\n openModal(this.openModalId);\n }\n\n this.contextMenu && (this.contextMenu.visible = true);\n\n this.linkClick.emit();\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n if (e.key == KeyIds.ENTER || e.key == KeyIds.SPACE) {\n if (!!this.openModalId) {\n openModal(this.openModalId);\n }\n\n this.contextMenu && (this.contextMenu.visible = true);\n this.tooltipElement && (this.tooltipElement.visible = true);\n\n this.linkClick.emit();\n }\n }\n\n /**\n * Context Menu Setup including getter, click events, keyboard events and properties\n */\n private initContextMenu() {\n this.contextMenu = this.hostElement.querySelector('[slot=\"context-menu\"]');\n }\n\n iconRender() {\n return (\n
\n \n
\n );\n }\n\n /**\n * Tooltip Check for OnClick visibility property\n */\n private getTooltipElement() {\n this.tooltipElement = this.hostElement.querySelector('[slot=\"tooltip\"]');\n this.isVisibilityOnClick = ((this.tooltipElement as unknown) as HTMLEonUiTooltipElement)?.visibility;\n }\n\n handleFocusEvent() {\n const tooltipElements = Array.from(document.querySelectorAll(\"eon-ui-tooltip\"));\n tooltipElements.map((item) => {\n this.hostElement.parentElement !== item &&\n item.visibility !== TOOLTIP_VISIBILITY_ALWAYS &&\n (item.visible = false);\n item.visibility === TOOLTIP_VISIBILITY_ON_HOVER &&\n item.parentElement === this.hostElement &&\n (item.visible = true);\n });\n }\n\n handleBlurEvent() {\n const tooltipElements = Array.from(document.querySelectorAll(\"eon-ui-tooltip\"));\n tooltipElements.map((item) => {\n this.hostElement.parentElement === item &&\n item.visibility !== TOOLTIP_VISIBILITY_ALWAYS &&\n (item.visible = false);\n });\n }\n\n @Listen(\"click\", { target: \"window\" })\n onDocumentClick(event) {\n if (\n event.target !== this.hostElement &&\n event.target !== this.tooltipElement &&\n event.target !== this.hostElement.querySelector(\"eon-ui-info-icon\") &&\n event.target.parentElement !== this.tooltipElement\n ) {\n this.tooltipElement &&\n this.tooltipElement.visibility === TOOLTIP_VISIBILITY_ON_CLICK &&\n (this.tooltipElement.visible = false);\n }\n }\n\n private getTooltipProps() {\n let props = {};\n props = {\n onFocus: () => this.handleFocusEvent(),\n onBlur: () => this.handleBlurEvent()\n };\n\n return props;\n }\n\n render() {\n return (\n \n {/* eslint-disable-next-line jsx-a11y/interactive-supports-focus */}\n this.handleClick(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleKeyDown(event)}\n {...this.getTooltipProps()}\n >\n {this.currentIcon && this.iconPosition !== LINK_ICON_POSITION_RIGHT && this.iconRender()}\n {this.text && (\n
\n \n
\n )}\n {this.currentIcon && this.iconPosition === LINK_ICON_POSITION_RIGHT && this.iconRender()}\n
\n {this.isInfoIconAvailable && !this.displayInline && (\n \n )}\n \n \n \n );\n }\n}\n"],"mappings":"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"}