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`