diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index 48cd99b8ec..1a0a5bef00 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -31,7 +31,7 @@ import "../../../../src/components/buttons/ha-call-api-button"; import "../../../../src/components/buttons/ha-progress-button"; import "../../../../src/components/ha-alert"; import "../../../../src/components/ha-card"; -import "../../../../src/components/ha-chip"; +import "../../../../src/components/ha-chip-set"; import "../../../../src/components/ha-markdown"; import "../../../../src/components/ha-settings-row"; import "../../../../src/components/ha-svg-icon"; @@ -125,6 +125,137 @@ class HassioAddonInfo extends LitElement { )}`, }, ]; + const capabilities = [ + { + id: "rating", + icon: RATING_ICON[this.addon.rating], + class: [6, 5].includes(Number(this.addon.rating)) + ? "green" + : [3, 4].includes(Number(this.addon.rating)) + ? "yellow" + : "red", + label: this.supervisor.localize( + "addon.dashboard.capability.label.rating" + ), + }, + ]; + + if (this.addon.stage !== "stable") { + capabilities.push({ + id: "rating", + icon: STAGE_ICON[this.addon.stage], + class: + this.addon.stage === "experimental" + ? "yellow" + : this.addon.stage === "deprecated" + ? "red" + : "", + label: this.supervisor.localize( + `addon.dashboard.capability.stages.${this.addon.stage}` + ), + }); + } + + if (this.addon.host_network) { + capabilities.push({ + id: "host_network", + icon: mdiNetwork, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.host" + ), + }); + } + + if (this.addon.full_access) { + capabilities.push({ + id: "full_access", + icon: mdiChip, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.hardware" + ), + }); + } + + if (this.addon.homeassistant_api) { + capabilities.push({ + id: "homeassistant_api", + icon: mdiHomeAssistant, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.core" + ), + }); + } + + if (this._computeHassioApi) { + capabilities.push({ + id: "hassio_api", + icon: mdiHomeAssistant, + class: "", + label: + this.supervisor.localize( + `addon.dashboard.capability.role.${this.addon.hassio_role}` + ) || this.addon.hassio_role, + }); + } + + if (this.addon.docker_api) { + capabilities.push({ + id: "docker_api", + icon: mdiDocker, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.docker" + ), + }); + } + + if (this.addon.host_pid) { + capabilities.push({ + id: "host_pid", + icon: mdiPound, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.host_pid" + ), + }); + } + + if (this.addon.apparmor !== "default") { + capabilities.push({ + id: "apparmor", + icon: mdiShield, + class: this._computeApparmorClassName, + label: this.supervisor.localize( + "addon.dashboard.capability.label.apparmor" + ), + }); + } + + if (this.addon.auth_api) { + capabilities.push({ + id: "auth_api", + icon: mdiKey, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.auth" + ), + }); + } + + if (this.addon.ingress) { + capabilities.push({ + id: "ingress", + icon: mdiCursorDefaultClickOutline, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.ingress" + ), + }); + } + return html` ${this.addon.update_available ? html` @@ -262,160 +393,18 @@ class HassioAddonInfo extends LitElement {
- ${this.addon.stage !== "stable" - ? html` + ${capabilities.map( + (capability) => html` - - - ${this.supervisor.localize( - `addon.dashboard.capability.stages.${this.addon.stage}` - )} - ` - : ""} - - - - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.rating" + .leadingIcon=${capability.icon} + .label=${capability.label} + .id=${capability.id} + class=${capability.class} + outlined + >` )} - - ${this.addon.host_network - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.host" - )} - - ` - : ""} - ${this.addon.full_access - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.hardware" - )} - - ` - : ""} - ${this.addon.homeassistant_api - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.core" - )} - - ` - : ""} - ${this._computeHassioApi - ? html` - - - ${this.supervisor.localize( - `addon.dashboard.capability.role.${this.addon.hassio_role}` - ) || this.addon.hassio_role} - - ` - : ""} - ${this.addon.docker_api - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.docker" - )} - - ` - : ""} - ${this.addon.host_pid - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.host_pid" - )} - - ` - : ""} - ${this.addon.apparmor !== "default" - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.apparmor" - )} - - ` - : ""} - ${this.addon.auth_api - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.auth" - )} - - ` - : ""} - ${this.addon.ingress - ? html` - - - ${this.supervisor.localize( - "addon.dashboard.capability.label.ingress" - )} - - ` - : ""} +
@@ -1183,8 +1172,6 @@ class HassioAddonInfo extends LitElement { } ha-chip { text-transform: capitalize; - --ha-chip-text-color: var(--text-primary-color); - --ha-chip-background-color: var(--primary-color); } .red { @@ -1200,7 +1187,7 @@ class HassioAddonInfo extends LitElement { --ha-chip-background-color: var(--label-badge-yellow, #f4b400); } .capabilities { - margin-bottom: 16px; + margin: -16px 0 8px; } .card-actions { justify-content: space-between; diff --git a/src/components/ha-chip-set.ts b/src/components/ha-chip-set.ts index 28743baf1a..dc3ed87f14 100644 --- a/src/components/ha-chip-set.ts +++ b/src/components/ha-chip-set.ts @@ -47,7 +47,7 @@ export class HaChipSet extends LitElement { static get styles(): CSSResultGroup { return css` ${unsafeCSS(chipStyles)} - .mdc-chip-set > * { + .mdc-chip-set > ha-chip, slot::slotted(ha-chip) { margin: 4px; } `;