diff --git a/src/dialogs/quick-bar/ha-quick-bar.ts b/src/dialogs/quick-bar/ha-quick-bar.ts
index e627d40b32..08c1984c8c 100644
--- a/src/dialogs/quick-bar/ha-quick-bar.ts
+++ b/src/dialogs/quick-bar/ha-quick-bar.ts
@@ -24,6 +24,7 @@ import { QuickBarParams } from "./show-dialog-quick-bar";
import { HassEntity } from "home-assistant-js-websocket";
import { compare } from "../../common/string/compare";
import memoizeOne from "memoize-one";
+import { SingleSelectedEvent } from "@material/mwc-list/mwc-list-foundation";
interface CommandItem extends ServiceCallRequest {
text: string;
@@ -72,11 +73,9 @@ export class QuickBar extends LitElement {
type="search"
value=${this._commandMode ? `>${this._itemFilter}` : this._itemFilter}
>
-
- ${this._commandMode
- ? this.renderCommandsList(this._itemFilter)
- : this.renderEntityList(this._itemFilter)}
-
+ ${this._commandMode
+ ? this.renderCommandsList(this._itemFilter)
+ : this.renderEntityList(this._itemFilter)}
`;
}
@@ -85,20 +84,19 @@ export class QuickBar extends LitElement {
const items = this._filterCommandItems(this._commandItems, filter);
return html`
- ${items.map(
- ({ text, domain, service, serviceData }) => html`
-
-
- ${text}
-
- `
- )}
+
+ ${items.map(
+ (item) => html`
+
+
+ ${item.text}
+
+ `
+ )}
+
`;
});
@@ -109,15 +107,17 @@ export class QuickBar extends LitElement {
);
return html`
- ${entities.map((entity_id) => {
- const domain = computeDomain(entity_id);
- return html`
-
-
- ${entity_id}
-
- `;
- })}
+
+ ${entities.map((entityId) => {
+ const domain = computeDomain(entityId);
+ return html`
+
+
+ ${entityId}
+
+ `;
+ })}
+
`;
});
@@ -161,33 +161,30 @@ export class QuickBar extends LitElement {
}
private _filterEntityItems(
- entity_ids: HassEntity["entity_id"][],
+ entityIds: HassEntity["entity_id"][],
filter: string
): HassEntity["entity_id"][] {
- return entity_ids
- .filter((entity_id) =>
- fuzzySequentialMatch(filter.toLowerCase(), entity_id)
+ return entityIds
+ .filter((entityId) =>
+ fuzzySequentialMatch(filter.toLowerCase(), entityId)
)
.sort();
}
- private async _executeCommand(ev: Event) {
- const target = ev.currentTarget as any;
+ private async _processItemAndCloseDialog(ev: SingleSelectedEvent) {
+ const index = ev.detail.index;
+ const item = (ev.target as any).items[index].item;
- await this.hass.callService(
- target.domain,
- target.service,
- target.serviceData
- );
+ await this.hass.callService(item.domain, item.service, item.serviceData);
this.closeDialog();
}
- private _entityMoreInfo(ev: Event) {
- ev.preventDefault();
- fireEvent(this, "hass-more-info", {
- entityId: (ev.target as any).text,
- });
+ private _entityMoreInfo(ev: SingleSelectedEvent) {
+ const index = ev.detail.index;
+ const entityId = (ev.target as any).items[index].entityId;
+
+ fireEvent(this, "hass-more-info", { entityId });
this.closeDialog();
}