diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts
index 2e3e4ee0cd50..4fa442e3a3f9 100644
--- a/hassio/src/addon-view/config/hassio-addon-config.ts
+++ b/hassio/src/addon-view/config/hassio-addon-config.ts
@@ -21,6 +21,8 @@ import {
HassioAddonSetOptionParams,
setHassioAddonOption,
} from "../../../../src/data/hassio/addon";
+import "../../../../src/components/buttons/ha-progress-button";
+
import { showConfirmationDialog } from "../../../../src/dialogs/generic/show-dialog-box";
import { haStyle } from "../../../../src/resources/styles";
import type { HomeAssistant } from "../../../../src/types";
@@ -55,50 +57,20 @@ class HassioAddonConfig extends LitElement {
${valid ? "" : html`
Invalid YAML
`}
-
+
Reset to defaults
-
-
+
Save
-
+
`;
}
- static get styles(): CSSResult[] {
- return [
- haStyle,
- hassioStyle,
- css`
- :host {
- display: block;
- }
- ha-card {
- display: block;
- }
- .card-actions {
- display: flex;
- justify-content: space-between;
- }
- .errors {
- color: var(--error-color);
- margin-top: 16px;
- }
- iron-autogrow-textarea {
- width: 100%;
- font-family: monospace;
- }
- .syntaxerror {
- color: var(--error-color);
- }
- `,
- ];
- }
-
protected updated(changedProperties: PropertyValues): void {
super.updated(changedProperties);
if (changedProperties.has("addon")) {
@@ -111,7 +83,10 @@ class HassioAddonConfig extends LitElement {
this.requestUpdate();
}
- private async _resetTapped(): Promise {
+ private async _resetTapped(ev: CustomEvent): Promise {
+ const button = ev.currentTarget as any;
+ button.progress = true;
+
const confirmed = await showConfirmationDialog(this, {
title: this.addon.name,
text: "Are you sure you want to reset all your options?",
@@ -120,6 +95,7 @@ class HassioAddonConfig extends LitElement {
});
if (!confirmed) {
+ button.progress = false;
return;
}
@@ -141,9 +117,13 @@ class HassioAddonConfig extends LitElement {
err.body?.message || err
}`;
}
+ button.progress = false;
}
- private async _saveTapped(): Promise {
+ private async _saveTapped(ev: CustomEvent): Promise {
+ const button = ev.currentTarget as any;
+ button.progress = true;
+
let data: HassioAddonSetOptionParams;
this._error = undefined;
try {
@@ -163,14 +143,45 @@ class HassioAddonConfig extends LitElement {
path: "options",
};
fireEvent(this, "hass-api-called", eventdata);
+ if (this.addon?.state === "started") {
+ await suggestAddonRestart(this, this.hass, this.addon);
+ }
} catch (err) {
this._error = `Failed to save addon configuration, ${
err.body?.message || err
}`;
}
- if (!this._error && this.addon?.state === "started") {
- await suggestAddonRestart(this, this.hass, this.addon);
- }
+ button.progress = false;
+ }
+
+ static get styles(): CSSResult[] {
+ return [
+ haStyle,
+ hassioStyle,
+ css`
+ :host {
+ display: block;
+ }
+ ha-card {
+ display: block;
+ }
+ .card-actions {
+ display: flex;
+ justify-content: space-between;
+ }
+ .errors {
+ color: var(--error-color);
+ margin-top: 16px;
+ }
+ iron-autogrow-textarea {
+ width: 100%;
+ font-family: monospace;
+ }
+ .syntaxerror {
+ color: var(--error-color);
+ }
+ `,
+ ];
}
}