From 013a7eb33250d509bad98e4beb70abdfa8aff19f Mon Sep 17 00:00:00 2001 From: ludeeus Date: Sat, 10 Jun 2023 12:41:12 +0000 Subject: [PATCH] Remove hacs-progress-dialog --- src/components/dialogs/hacs-dialog-base.ts | 1 - .../dialogs/hacs-download-dialog.ts | 10 ++- src/components/dialogs/hacs-event-dialog.ts | 1 - src/components/dialogs/hacs-form-dialog.ts | 45 ++++++++---- .../dialogs/hacs-progress-dialog.ts | 69 ------------------- .../dialogs/show-hacs-form-dialog.ts | 3 +- .../hacs-repository-owerflow-menu.ts | 30 ++++---- 7 files changed, 54 insertions(+), 105 deletions(-) delete mode 100644 src/components/dialogs/hacs-progress-dialog.ts diff --git a/src/components/dialogs/hacs-dialog-base.ts b/src/components/dialogs/hacs-dialog-base.ts index 2b3a1e6f..47786f8e 100644 --- a/src/components/dialogs/hacs-dialog-base.ts +++ b/src/components/dialogs/hacs-dialog-base.ts @@ -31,7 +31,6 @@ export class HacsDialogBase extends LitElement { changedProperties.has("active") || changedProperties.has("params") || changedProperties.has("_error") || - changedProperties.has("_progress") || changedProperties.has("_repository") || changedProperties.has("_releaseNotes") || changedProperties.has("_updating") diff --git a/src/components/dialogs/hacs-download-dialog.ts b/src/components/dialogs/hacs-download-dialog.ts index 304dce36..1dfb790c 100644 --- a/src/components/dialogs/hacs-download-dialog.ts +++ b/src/components/dialogs/hacs-download-dialog.ts @@ -162,10 +162,10 @@ export class HacsDonwloadDialog extends LitElement { ${this._error.message} ` : nothing} + ${this._installing + ? html`` + : nothing} - ${this._installing - ? html`` - : nothing} ${this._dialogParams.hacs.localize("common.cancel")} @@ -262,6 +262,10 @@ export class HacsDonwloadDialog extends LitElement { white-space: pre-line; user-select: all; } + mwc-linear-progress { + margin-bottom: -8px; + margin-top: 4px; + } `, ]; } diff --git a/src/components/dialogs/hacs-event-dialog.ts b/src/components/dialogs/hacs-event-dialog.ts index e68ab4ec..e8a74368 100644 --- a/src/components/dialogs/hacs-event-dialog.ts +++ b/src/components/dialogs/hacs-event-dialog.ts @@ -5,7 +5,6 @@ import { HacsDialogBase } from "./hacs-dialog-base"; const DIALOG = { "custom-repositories": () => import("./hacs-custom-repositories-dialog"), generic: () => import("./hacs-generic-dialog"), - progress: () => import("./hacs-progress-dialog"), }; @customElement("hacs-event-dialog") diff --git a/src/components/dialogs/hacs-form-dialog.ts b/src/components/dialogs/hacs-form-dialog.ts index 96050563..dc68bb82 100644 --- a/src/components/dialogs/hacs-form-dialog.ts +++ b/src/components/dialogs/hacs-form-dialog.ts @@ -1,3 +1,5 @@ +import "@material/mwc-button/mwc-button"; +import "@material/mwc-linear-progress/mwc-linear-progress"; import { CSSResultGroup, LitElement, css, html, nothing } from "lit"; import { customElement, property, state } from "lit/decorators"; import "../../../homeassistant-frontend/src/components/ha-dialog"; @@ -44,24 +46,34 @@ class HacsFromDialog extends LitElement { : this._dialogParams.title} @closed=${this.closeDialog} > - ${this._dialogParams.description || nothing} - +
+ ${this._dialogParams.description || nothing} + ${this._dialogParams.schema && this._dialogParams.saveAction + ? html`` + : nothing} + ${this._waiting + ? html`` + : nothing} +
${this._dialogParams.saveAction ? html` ${this._dialogParams.hacs.localize("common.cancel")} entry.required) && + !this._dialogParams.data)} slot="primaryAction" @click=${this._saveClicked} > @@ -113,6 +125,13 @@ class HacsFromDialog extends LitElement { .root > *:not([own-margin]):not(:last-child) { margin-bottom: 24px; } + .destructive { + --mdc-theme-primary: var(--hcv-color-error); + } + mwc-linear-progress { + margin-bottom: -8px; + margin-top: 4px; + } `; } } diff --git a/src/components/dialogs/hacs-progress-dialog.ts b/src/components/dialogs/hacs-progress-dialog.ts deleted file mode 100644 index 644d6738..00000000 --- a/src/components/dialogs/hacs-progress-dialog.ts +++ /dev/null @@ -1,69 +0,0 @@ -import "@material/mwc-button/mwc-button"; -import "../../../homeassistant-frontend/src/components/ha-circular-progress"; -import { html, TemplateResult, PropertyValues } from "lit"; -import { customElement, property } from "lit/decorators"; -import "./hacs-dialog"; -import { HacsDialogBase } from "./hacs-dialog-base"; - -@customElement("hacs-progress-dialog") -export class HacsProgressDialog extends HacsDialogBase { - @property() public title!: string; - - @property() public content?: string; - - @property() public confirmText?: string; - - @property() public confirm!: () => Promise; - - @property({ type: Boolean }) private _inProgress = false; - - shouldUpdate(changedProperties: PropertyValues) { - return ( - changedProperties.has("active") || - changedProperties.has("title") || - changedProperties.has("content") || - changedProperties.has("confirmText") || - changedProperties.has("confirm") || - changedProperties.has("_inProgress") - ); - } - - protected render(): TemplateResult | void { - if (!this.active) return html``; - return html` - -
- ${this.content || ""} -
- - ${this.hacs.localize("common.cancel")} - - - ${ - this._inProgress - ? html`` - : this.confirmText || this.hacs.localize("common.yes") - } -
- - `; - } - - private async _confirmed() { - this._inProgress = true; - await this.confirm(); - this._inProgress = false; - this._close(); - } - - private _close() { - this.active = false; - this.dispatchEvent( - new Event("hacs-dialog-closed", { - bubbles: true, - composed: true, - }) - ); - } -} diff --git a/src/components/dialogs/show-hacs-form-dialog.ts b/src/components/dialogs/show-hacs-form-dialog.ts index 7c77ca1c..275e883f 100644 --- a/src/components/dialogs/show-hacs-form-dialog.ts +++ b/src/components/dialogs/show-hacs-form-dialog.ts @@ -12,7 +12,8 @@ export interface HacsFormDialogParams { schema?: readonly HaFormSchema[]; data?: HaFormDataContainer; saveLabel?: string; - description?: HTMLTemplateResult; + destructive?: boolean; + description?: HTMLTemplateResult | string; computeLabelCallback?: (schema: any, data: HaFormDataContainer) => string; computeHelper?: (schema: any) => string | undefined; computeError?: (schema: any, error) => string; diff --git a/src/components/hacs-repository-owerflow-menu.ts b/src/components/hacs-repository-owerflow-menu.ts index dd46f770..d062cb2a 100644 --- a/src/components/hacs-repository-owerflow-menu.ts +++ b/src/components/hacs-repository-owerflow-menu.ts @@ -20,6 +20,7 @@ import { repositoryUninstall, repositoryUpdate } from "../data/websocket"; import type { HacsExperimentalPanel } from "../panels/hacs-experimental-panel"; import type { HacsRepositoryPanel } from "../panels/hacs-repository-panel"; import { showHacsDownloadDialog } from "./dialogs/show-hacs-download-dialog"; +import { showHacsFormDialog } from "./dialogs/show-hacs-form-dialog"; export const repositoryMenuItems = memoizeOne( (element: HacsRepositoryPanel | HacsExperimentalPanel, repository: RepositoryBase) => [ @@ -120,23 +121,18 @@ export const repositoryMenuItems = memoizeOne( } } } - element.dispatchEvent( - new CustomEvent("hacs-dialog", { - detail: { - type: "progress", - title: element.hacs.localize("dialog.remove.title"), - confirmText: element.hacs.localize("dialog.remove.title"), - content: element.hacs.localize("dialog.remove.message", { - name: repository.name, - }), - confirm: async () => { - await _repositoryRemove(element, repository); - }, - }, - bubbles: true, - composed: true, - }) - ); + showHacsFormDialog(element, { + hacs: element.hacs, + title: element.hacs.localize("dialog.remove.title"), + saveLabel: element.hacs.localize("dialog.remove.title"), + description: element.hacs.localize("dialog.remove.message", { + name: repository.name, + }), + saveAction: async () => { + await _repositoryRemove(element, repository); + }, + destructive: true, + }); }, warning: true, },