|
|
|
|
@@ -1,4 +1,3 @@
|
|
|
|
|
import type { RequestSelectedDetail } from "@material/mwc-list/mwc-list-item";
|
|
|
|
|
import { mdiDotsVertical, mdiRefresh } from "@mdi/js";
|
|
|
|
|
import type { HassEntities } from "home-assistant-js-websocket";
|
|
|
|
|
import type { TemplateResult } from "lit";
|
|
|
|
|
@@ -6,7 +5,6 @@ import { LitElement, css, html } from "lit";
|
|
|
|
|
import { customElement, property, state } from "lit/decorators";
|
|
|
|
|
import memoizeOne from "memoize-one";
|
|
|
|
|
import { isComponentLoaded } from "../../../common/config/is_component_loaded";
|
|
|
|
|
import { shouldHandleRequestSelectedEvent } from "../../../common/mwc/handle-request-selected-event";
|
|
|
|
|
import "../../../components/ha-alert";
|
|
|
|
|
import "../../../components/ha-bar";
|
|
|
|
|
import "../../../components/ha-button-menu";
|
|
|
|
|
@@ -33,6 +31,9 @@ import "../../../layouts/hass-subpage";
|
|
|
|
|
import type { HomeAssistant } from "../../../types";
|
|
|
|
|
import "../dashboard/ha-config-updates";
|
|
|
|
|
import { showJoinBetaDialog } from "./updates/show-dialog-join-beta";
|
|
|
|
|
import "../../../components/ha-dropdown";
|
|
|
|
|
import "../../../components/ha-dropdown-item";
|
|
|
|
|
import "@home-assistant/webawesome/dist/components/divider/divider";
|
|
|
|
|
|
|
|
|
|
@customElement("ha-config-section-updates")
|
|
|
|
|
class HaConfigSectionUpdates extends LitElement {
|
|
|
|
|
@@ -73,24 +74,25 @@ class HaConfigSectionUpdates extends LitElement {
|
|
|
|
|
.path=${mdiRefresh}
|
|
|
|
|
@click=${this._checkUpdates}
|
|
|
|
|
></ha-icon-button>
|
|
|
|
|
<ha-button-menu multi>
|
|
|
|
|
<ha-dropdown @wa-select=${this._handleOverflowAction}>
|
|
|
|
|
<ha-icon-button
|
|
|
|
|
slot="trigger"
|
|
|
|
|
.label=${this.hass.localize("ui.common.menu")}
|
|
|
|
|
.path=${mdiDotsVertical}
|
|
|
|
|
></ha-icon-button>
|
|
|
|
|
<ha-check-list-item
|
|
|
|
|
left
|
|
|
|
|
@request-selected=${this._toggleSkipped}
|
|
|
|
|
.selected=${this._showSkipped}
|
|
|
|
|
|
|
|
|
|
<ha-dropdown-item
|
|
|
|
|
type="checkbox"
|
|
|
|
|
value="show_skipped"
|
|
|
|
|
.checked=${this._showSkipped}
|
|
|
|
|
>
|
|
|
|
|
${this.hass.localize("ui.panel.config.updates.show_skipped")}
|
|
|
|
|
</ha-check-list-item>
|
|
|
|
|
</ha-dropdown-item>
|
|
|
|
|
${this._supervisorInfo
|
|
|
|
|
? html`
|
|
|
|
|
<li divider role="separator"></li>
|
|
|
|
|
<ha-list-item
|
|
|
|
|
@request-selected=${this._toggleBeta}
|
|
|
|
|
<wa-divider></wa-divider>
|
|
|
|
|
<ha-dropdown-item
|
|
|
|
|
value="toggle_beta"
|
|
|
|
|
.disabled=${this._supervisorInfo.channel === "dev"}
|
|
|
|
|
>
|
|
|
|
|
${this._supervisorInfo.channel === "stable"
|
|
|
|
|
@@ -98,10 +100,10 @@ class HaConfigSectionUpdates extends LitElement {
|
|
|
|
|
: this.hass.localize(
|
|
|
|
|
"ui.panel.config.updates.leave_beta"
|
|
|
|
|
)}
|
|
|
|
|
</ha-list-item>
|
|
|
|
|
</ha-dropdown-item>
|
|
|
|
|
`
|
|
|
|
|
: ""}
|
|
|
|
|
</ha-button-menu>
|
|
|
|
|
</ha-dropdown>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<ha-card outlined>
|
|
|
|
|
@@ -133,27 +135,19 @@ class HaConfigSectionUpdates extends LitElement {
|
|
|
|
|
this._supervisorInfo = await fetchHassioSupervisorInfo(this.hass);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private _toggleSkipped(ev: CustomEvent<RequestSelectedDetail>): void {
|
|
|
|
|
if (ev.detail.source !== "property") {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._showSkipped = !this._showSkipped;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async _toggleBeta(
|
|
|
|
|
ev: CustomEvent<RequestSelectedDetail>
|
|
|
|
|
private async _handleOverflowAction(
|
|
|
|
|
ev: CustomEvent<{ item: { value: string } }>
|
|
|
|
|
): Promise<void> {
|
|
|
|
|
if (!shouldHandleRequestSelectedEvent(ev)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this._supervisorInfo!.channel === "stable") {
|
|
|
|
|
showJoinBetaDialog(this, {
|
|
|
|
|
join: async () => this._setChannel("beta"),
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this._setChannel("stable");
|
|
|
|
|
if (ev.detail.item.value === "toggle_beta") {
|
|
|
|
|
if (this._supervisorInfo!.channel === "stable") {
|
|
|
|
|
showJoinBetaDialog(this, {
|
|
|
|
|
join: async () => this._setChannel("beta"),
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this._setChannel("stable");
|
|
|
|
|
}
|
|
|
|
|
} else if (ev.detail.item.value === "show_skipped") {
|
|
|
|
|
this._showSkipped = !this._showSkipped;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|