From 5cddb482f1b57d713fa6a461b625e0f380d8edbd Mon Sep 17 00:00:00 2001 From: Donnie Date: Tue, 13 Oct 2020 02:16:46 -0700 Subject: [PATCH] Fix issue with enter key not executing selected item in quick bar list (#7283) --- src/dialogs/quick-bar/ha-quick-bar.ts | 85 +++++++++++++-------------- 1 file changed, 41 insertions(+), 44 deletions(-) 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(); }