| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import * as i18n from '../../core/i18n/i18n.js'; |
| import * as Buttons from '../../ui/components/buttons/buttons.js'; |
| import * as UI from '../../ui/legacy/legacy.js'; |
| import {html, render} from '../../ui/lit/lit.js'; |
| |
| import cssOverviewProcessingViewStyles from './cssOverviewProcessingView.css.js'; |
| |
| const UIStrings = { |
| /** |
| * @description Text to cancel something |
| */ |
| cancel: 'Cancel', |
| } as const; |
| const str_ = i18n.i18n.registerUIStrings('panels/css_overview/CSSOverviewProcessingView.ts', UIStrings); |
| const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_); |
| |
| interface ViewInput { |
| onCancel: () => void; |
| } |
| |
| type View = (input: ViewInput, output: object, target: HTMLElement) => void; |
| |
| export const DEFAULT_VIEW: View = (input, _output, target) => { |
| // clang-format off |
| render(html` |
| <style>${cssOverviewProcessingViewStyles}</style> |
| <div style="overflow:auto"> |
| <div class="vbox overview-processing-view"> |
| <h1>Processing page</h1> |
| <div> |
| <devtools-button |
| @click=${input.onCancel} |
| .jslogContext=${'css-overview.cancel-processing'} |
| .variant=${Buttons.Button.Variant.OUTLINED}>${i18nString(UIStrings.cancel)}</devtools-button> |
| </div> |
| </div> |
| </div>`, |
| target); |
| // clang-format on |
| }; |
| |
| export class CSSOverviewProcessingView extends UI.Widget.Widget { |
| #onCancel = (): void => {}; |
| #view: View; |
| |
| constructor(element?: HTMLElement, view: View = DEFAULT_VIEW) { |
| super(element); |
| this.#view = view; |
| this.requestUpdate(); |
| } |
| |
| set onCancel(onCancel: () => void) { |
| this.#onCancel = onCancel; |
| this.requestUpdate(); |
| } |
| |
| override performUpdate(): void { |
| this.#view({onCancel: this.#onCancel}, {}, this.element); |
| } |
| } |