From 7a0b2060d40b36bfb83090be22f84a7b407f1cba Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 28 Nov 2018 12:34:53 +0100 Subject: [PATCH] Add delete card func (#2116) * Add delete card button * Add delete card button * fix the non-sense * lovelace data was moved --- src/data/lovelace.ts | 9 ++++++ .../lovelace/components/hui-card-options.ts | 30 +++++++++++++++++-- src/panels/lovelace/editor/delete-card.ts | 18 +++++++++++ .../lovelace/editor/hui-dialog-edit-card.ts | 2 +- .../lovelace/editor/hui-migrate-config.ts | 1 + 5 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 src/panels/lovelace/editor/delete-card.ts diff --git a/src/data/lovelace.ts b/src/data/lovelace.ts index 9aac8076ab..f7b3a461bb 100644 --- a/src/data/lovelace.ts +++ b/src/data/lovelace.ts @@ -62,3 +62,12 @@ export const updateCardConfig = ( card_config: config, format: configFormat, }); + +export const deleteCard = ( + hass: HomeAssistant, + cardId: string +): Promise => + hass.callWS({ + type: "lovelace/config/card/delete", + card_id: cardId, + }); diff --git a/src/panels/lovelace/components/hui-card-options.ts b/src/panels/lovelace/components/hui-card-options.ts index 5b8126e206..9f8ced06c4 100644 --- a/src/panels/lovelace/components/hui-card-options.ts +++ b/src/panels/lovelace/components/hui-card-options.ts @@ -5,6 +5,8 @@ import { showEditCardDialog, registerEditCardDialog, } from "../editor/hui-dialog-edit-card"; + +import { confDeleteCard } from "../editor/delete-card"; import { HomeAssistant } from "../../../types"; import { LovelaceCardConfig } from "../../../data/lovelace"; @@ -52,17 +54,39 @@ export class HuiCardOptions extends LitElement { color: var(--primary-color); font-weight: 500; } + paper-button.warning:not([disabled]) { + color: var(--google-red-500); + } -
EDIT
+
+ DELETEEDIT +
`; } - private _editCard() { + private _editCard(): void { + if (!this.cardConfig) { + return; + } showEditCardDialog(this, { - cardConfig: this.cardConfig!, + cardConfig: this.cardConfig, reloadLovelace: () => fireEvent(this, "config-refresh"), }); } + private _deleteCard(): void { + if (!this.cardConfig) { + return; + } + if (!this.cardConfig.id) { + this._editCard(); + return; + } + confDeleteCard(this.hass!, this.cardConfig.id, () => + fireEvent(this, "config-refresh") + ); + } } declare global { diff --git a/src/panels/lovelace/editor/delete-card.ts b/src/panels/lovelace/editor/delete-card.ts new file mode 100644 index 0000000000..9a2ed8fd6e --- /dev/null +++ b/src/panels/lovelace/editor/delete-card.ts @@ -0,0 +1,18 @@ +import { deleteCard } from "../../../data/lovelace"; +import { HomeAssistant } from "../../../types"; + +export async function confDeleteCard( + hass: HomeAssistant, + cardId: string, + reloadLovelace: () => void +): Promise { + if (!confirm("Are you sure you want to delete this card?")) { + return; + } + try { + await deleteCard(hass, cardId); + reloadLovelace(); + } catch (err) { + alert(`Deleting failed: ${err.message}`); + } +} diff --git a/src/panels/lovelace/editor/hui-dialog-edit-card.ts b/src/panels/lovelace/editor/hui-dialog-edit-card.ts index 7907098a47..a686e91b82 100644 --- a/src/panels/lovelace/editor/hui-dialog-edit-card.ts +++ b/src/panels/lovelace/editor/hui-dialog-edit-card.ts @@ -46,7 +46,7 @@ export class HuiDialogEditCard extends LitElement { static get properties(): PropertyDeclarations { return { hass: {}, - _cardConfig: {}, + _params: {}, }; } diff --git a/src/panels/lovelace/editor/hui-migrate-config.ts b/src/panels/lovelace/editor/hui-migrate-config.ts index 63d42786d6..e9f32f52e1 100644 --- a/src/panels/lovelace/editor/hui-migrate-config.ts +++ b/src/panels/lovelace/editor/hui-migrate-config.ts @@ -95,6 +95,7 @@ export class HuiMigrateConfig extends hassLocalizeLitMixin(LitElement) { try { await migrateConfig(this.hass!); this._closeDialog(); + this._migrating = false; fireEvent(this, "reload-lovelace"); } catch (err) { alert(`Migration failed: ${err.message}`);