diff --git a/src/panels/config/devices/ha-config-devices-dashboard.ts b/src/panels/config/devices/ha-config-devices-dashboard.ts index b29d070131..7b22784eb1 100644 --- a/src/panels/config/devices/ha-config-devices-dashboard.ts +++ b/src/panels/config/devices/ha-config-devices-dashboard.ts @@ -17,6 +17,7 @@ import { } from "../../../components/data-table/ha-data-table"; import "../../../components/entity/ha-battery-icon"; import "../../../components/ha-button-menu"; +import "../../../components/ha-fab"; import "../../../components/ha-icon-button"; import { AreaRegistryEntry } from "../../../data/area_registry"; import { ConfigEntry } from "../../../data/config_entries"; @@ -35,6 +36,7 @@ import "../../../layouts/hass-tabs-subpage-data-table"; import { haStyle } from "../../../resources/styles"; import { HomeAssistant, Route } from "../../../types"; import { configSections } from "../ha-panel-config"; +import { showZWaveJSAddNodeDialog } from "../integrations/integration-panels/zwave_js/show-dialog-zwave_js-add-node"; interface DeviceRowData extends DeviceRegistryEntry { device?: DeviceRowData; @@ -170,7 +172,7 @@ export class HaConfigDeviceDashboard extends LitElement { areaLookup[area.area_id] = area; } - const filterDomains: string[] = []; + let filterConfigEntry: ConfigEntry | undefined; filters.forEach((value, key) => { if (key === "config_entry") { @@ -178,10 +180,7 @@ export class HaConfigDeviceDashboard extends LitElement { device.config_entries.includes(value) ); startLength = outputDevices.length; - const configEntry = entries.find((entry) => entry.entry_id === value); - if (configEntry) { - filterDomains.push(configEntry.domain); - } + filterConfigEntry = entries.find((entry) => entry.entry_id === value); } }); @@ -220,7 +219,10 @@ export class HaConfigDeviceDashboard extends LitElement { })); this._numHiddenDevices = startLength - outputDevices.length; - return { devicesOutput: outputDevices, filteredDomains: filterDomains }; + return { + devicesOutput: outputDevices, + filteredConfigEntry: filterConfigEntry, + }; } ); @@ -352,16 +354,16 @@ export class HaConfigDeviceDashboard extends LitElement { } protected render(): TemplateResult { - const { devicesOutput, filteredDomains } = this._devicesAndFilterDomains( - this.devices, - this.entries, - this.entities, - this.areas, - this._searchParms, - this._showDisabled, - this.hass.localize - ); - const includeZHAFab = filteredDomains.includes("zha"); + const { devicesOutput, filteredConfigEntry } = + this._devicesAndFilterDomains( + this.devices, + this.entries, + this.entities, + this.areas, + this._searchParms, + this._showDisabled, + this.hass.localize + ); const activeFilters = this._activeFilters( this.entries, this._searchParms, @@ -394,9 +396,25 @@ export class HaConfigDeviceDashboard extends LitElement { @search-changed=${this._handleSearchChange} @row-click=${this._handleRowClicked} clickable - .hasFab=${includeZHAFab} + .hasFab=${filteredConfigEntry && + (filteredConfigEntry.domain === "zha" || + filteredConfigEntry.domain === "zwave_js")} > - ${includeZHAFab + ${!filteredConfigEntry + ? "" + : filteredConfigEntry.domain === "zwave_js" + ? html` + + + + ` + : filteredConfigEntry.domain === "zha" ? html`