diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts
index 2e3e4ee0cd..4fa442e3a3 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,20 +57,103 @@ class HassioAddonConfig extends LitElement {
${valid ? "" : html`
Invalid YAML
`}
-
+
Reset to defaults
-
-
+
Save
-
+
`;
}
+ protected updated(changedProperties: PropertyValues): void {
+ super.updated(changedProperties);
+ if (changedProperties.has("addon")) {
+ this._editor.setValue(this.addon.options);
+ }
+ }
+
+ private _configChanged(): void {
+ this._configHasChanged = true;
+ this.requestUpdate();
+ }
+
+ 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?",
+ confirmText: "reset options",
+ dismissText: "no",
+ });
+
+ if (!confirmed) {
+ button.progress = false;
+ return;
+ }
+
+ this._error = undefined;
+ const data: HassioAddonSetOptionParams = {
+ options: null,
+ };
+ try {
+ await setHassioAddonOption(this.hass, this.addon.slug, data);
+ this._configHasChanged = false;
+ const eventdata = {
+ success: true,
+ response: undefined,
+ path: "options",
+ };
+ fireEvent(this, "hass-api-called", eventdata);
+ } catch (err) {
+ this._error = `Failed to reset addon configuration, ${
+ err.body?.message || err
+ }`;
+ }
+ button.progress = false;
+ }
+
+ private async _saveTapped(ev: CustomEvent): Promise {
+ const button = ev.currentTarget as any;
+ button.progress = true;
+
+ let data: HassioAddonSetOptionParams;
+ this._error = undefined;
+ try {
+ data = {
+ options: this._editor.value,
+ };
+ } catch (err) {
+ this._error = err;
+ return;
+ }
+ try {
+ await setHassioAddonOption(this.hass, this.addon.slug, data);
+ this._configHasChanged = false;
+ const eventdata = {
+ success: true,
+ response: undefined,
+ 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
+ }`;
+ }
+ button.progress = false;
+ }
+
static get styles(): CSSResult[] {
return [
haStyle,
@@ -98,80 +183,6 @@ class HassioAddonConfig extends LitElement {
`,
];
}
-
- protected updated(changedProperties: PropertyValues): void {
- super.updated(changedProperties);
- if (changedProperties.has("addon")) {
- this._editor.setValue(this.addon.options);
- }
- }
-
- private _configChanged(): void {
- this._configHasChanged = true;
- this.requestUpdate();
- }
-
- private async _resetTapped(): Promise {
- const confirmed = await showConfirmationDialog(this, {
- title: this.addon.name,
- text: "Are you sure you want to reset all your options?",
- confirmText: "reset options",
- dismissText: "no",
- });
-
- if (!confirmed) {
- return;
- }
-
- this._error = undefined;
- const data: HassioAddonSetOptionParams = {
- options: null,
- };
- try {
- await setHassioAddonOption(this.hass, this.addon.slug, data);
- this._configHasChanged = false;
- const eventdata = {
- success: true,
- response: undefined,
- path: "options",
- };
- fireEvent(this, "hass-api-called", eventdata);
- } catch (err) {
- this._error = `Failed to reset addon configuration, ${
- err.body?.message || err
- }`;
- }
- }
-
- private async _saveTapped(): Promise {
- let data: HassioAddonSetOptionParams;
- this._error = undefined;
- try {
- data = {
- options: this._editor.value,
- };
- } catch (err) {
- this._error = err;
- return;
- }
- try {
- await setHassioAddonOption(this.hass, this.addon.slug, data);
- this._configHasChanged = false;
- const eventdata = {
- success: true,
- response: undefined,
- path: "options",
- };
- fireEvent(this, "hass-api-called", eventdata);
- } 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);
- }
- }
}
declare global {