| /** |
| * @license |
| * Copyright 2023 Google LLC |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| import '../gr-tooltip-content/gr-tooltip-content'; |
| import {LitElement, css, html, nothing} from 'lit'; |
| import {customElement, property} from 'lit/decorators.js'; |
| import {WebLinkInfo} from '../../../api/rest-api'; |
| import {ifDefined} from 'lit/directives/if-defined.js'; |
| import {when} from 'lit/directives/when.js'; |
| |
| declare global { |
| interface HTMLElementTagNameMap { |
| 'gr-weblink': GrWeblink; |
| } |
| } |
| @customElement('gr-weblink') |
| export class GrWeblink extends LitElement { |
| @property({type: Object}) |
| info?: WebLinkInfo; |
| |
| @property({type: Boolean}) |
| imageAndText = false; |
| |
| static override get styles() { |
| return [ |
| css` |
| :host { |
| display: inline-block; |
| vertical-align: top; |
| line-height: var(--line-height-normal); |
| margin-right: var(--spacing-s); |
| } |
| a { |
| color: var(--link-color); |
| } |
| :host([imageAndText]) img { |
| margin-right: var(--spacing-s); |
| } |
| img { |
| vertical-align: top; |
| width: var(--line-height-normal); |
| height: var(--line-height-normal); |
| } |
| `, |
| ]; |
| } |
| |
| override render() { |
| if (!this.info?.url) return nothing; |
| if (!this.info?.name) return nothing; |
| |
| return html` |
| <a href=${this.info.url} rel="noopener" target="_blank"> |
| <gr-tooltip-content |
| title=${ifDefined(this.info.tooltip)} |
| ?has-tooltip=${this.info.tooltip !== undefined} |
| > |
| ${when( |
| this.info.image_url, |
| () => html`<img src=${this.info!.image_url!} />` |
| )}${when( |
| !this.info.image_url || this.imageAndText, |
| () => html`<span>${this.info!.name}</span>` |
| )} |
| </gr-tooltip-content> |
| </a> |
| `; |
| } |
| } |