// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /* eslint-disable @devtools/no-lit-render-outside-of-view */ import '../../../ui/kit/kit.js'; import '../../../ui/legacy/legacy.js'; import * as i18n from '../../../core/i18n/i18n.js'; import {Directives, html, render} from '../../../ui/lit/lit.js'; import cssHintDetailsViewStyles from './cssHintDetailsView.css.js'; const UIStrings = { /** * @description Text for button that redirects to CSS property documentation. */ learnMore: 'Learn More', } as const; const str_ = i18n.i18n.registerUIStrings('panels/elements/components/CSSHintDetailsView.ts', UIStrings); const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_); interface Hint { getMessage(): string; getPossibleFixMessage(): string|null; getLearnMoreLink(): string|undefined; } export class CSSHintDetailsView extends HTMLElement { readonly #shadow = this.attachShadow({mode: 'open'}); readonly #authoringHint: Hint; constructor(authoringHint: Hint) { super(); this.#authoringHint = authoringHint; this.#render(); } #render(): void { const link = this.#authoringHint.getLearnMoreLink(); // clang-format off render(html`
${Directives.unsafeHTML(this.#authoringHint.getMessage())}
${this.#authoringHint.getPossibleFixMessage() ? html`
${Directives.unsafeHTML(this.#authoringHint.getPossibleFixMessage())}
` : ''} ${link ? html` `: ''}
`, this.#shadow, { host: this, }); // clang-format on } } customElements.define('devtools-css-hint-details-view', CSSHintDetailsView); declare global { interface HTMLElementTagNameMap { 'devtools-css-hint-details-view': CSSHintDetailsView; } }