diff --git a/src/panels/config/automation/ha-automation-picker.ts b/src/panels/config/automation/ha-automation-picker.ts index 9ef1e1c585..4d4773e05e 100644 --- a/src/panels/config/automation/ha-automation-picker.ts +++ b/src/panels/config/automation/ha-automation-picker.ts @@ -1,7 +1,7 @@ +import "@home-assistant/webawesome/dist/components/divider/divider"; import { ResizeController } from "@lit-labs/observers/resize-controller"; import { consume } from "@lit/context"; import { - mdiChevronRight, mdiCog, mdiContentDuplicate, mdiDelete, @@ -36,7 +36,6 @@ import { fireEvent } from "../../../common/dom/fire_event"; import { computeStateName } from "../../../common/entity/compute_state_name"; import { navigate } from "../../../common/navigate"; import { slugify } from "../../../common/string/slugify"; -import "../../../components/ha-tooltip"; import type { LocalizeFunc } from "../../../common/translations/localize"; import { hasRejectedItems, @@ -51,16 +50,15 @@ import type { } from "../../../components/data-table/ha-data-table"; import "../../../components/data-table/ha-data-table-labels"; import "../../../components/entity/ha-entity-toggle"; +import "../../../components/ha-dropdown"; +import "../../../components/ha-dropdown-item"; +import type { HaDropdownItem } from "../../../components/ha-dropdown-item"; import "../../../components/ha-fab"; import "../../../components/ha-filter-blueprints"; import "../../../components/ha-filter-categories"; import "../../../components/ha-filter-devices"; import "../../../components/ha-filter-entities"; import "../../../components/ha-filter-floor-areas"; -import "@home-assistant/webawesome/dist/components/divider/divider"; -import "../../../components/ha-dropdown"; -import "../../../components/ha-dropdown-item"; -import type { HaDropdownItem } from "../../../components/ha-dropdown-item"; import "../../../components/ha-filter-labels"; import "../../../components/ha-icon-button"; import "../../../components/ha-md-divider"; @@ -69,6 +67,7 @@ import type { HaMdMenu } from "../../../components/ha-md-menu"; import "../../../components/ha-md-menu-item"; import type { HaMdMenuItem } from "../../../components/ha-md-menu-item"; import "../../../components/ha-svg-icon"; +import "../../../components/ha-tooltip"; import { createAreaRegistryEntry } from "../../../data/area_registry"; import type { AutomationEntity } from "../../../data/automation"; import { @@ -412,27 +411,37 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { ]; } - protected render(): TemplateResult { - const categoryItems = html`${this._categories?.map( + private _renderCategoryItems = (submenu = false) => + html`${this._categories?.map( (category) => - html` + html` ${category.icon ? html`` : html``} ${category.name} ` )} - + ${this.hass.localize( "ui.panel.config.automation.picker.bulk_actions.no_category" )} - - + + ${this.hass.localize("ui.panel.config.category.editor.add")} `; - const labelItems = html`${this._labels?.map((label) => { + private _renderLabelItems = (submenu = false) => + html`${this._labels?.map((label) => { const color = label.color ? computeCssColor(label.color) : undefined; const selected = this._selected.every((entityId) => this.hass.entities[entityId]?.labels.includes(label.label_id) @@ -443,10 +452,10 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { this.hass.entities[entityId]?.labels.includes(label.label_id) ); return html` `; })} - + ${this.hass.localize("ui.panel.config.labels.add_label")} `; - const areaItems = html`${Object.values(this.hass.areas).map( + private _renderAreaItems = (submenu = false) => + html`${Object.values(this.hass.areas).map( (area) => - html` + html` ${area.icon ? html`` : html`` )} - + ${this.hass.localize( "ui.panel.config.devices.picker.bulk_actions.no_area" )} - - + + ${this.hass.localize( "ui.panel.config.devices.picker.bulk_actions.add_area" )} `; + protected render(): TemplateResult { const areasInOverflow = (this._sizeController.value && this._sizeController.value < 900) || (!this._sizeController.value && this.hass.dockedSidebar === "docked"); @@ -647,7 +665,7 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { .path=${mdiMenuDown} > - ${categoryItems} + ${this._renderCategoryItems()} ${labelsInOverflow ? nothing @@ -663,7 +681,7 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { .path=${mdiMenuDown} > - ${labelItems} + ${this._renderLabelItems()} `} ${areasInOverflow ? nothing @@ -682,7 +700,7 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { .path=${mdiMenuDown} > - ${areaItems} + ${this._renderAreaItems()} `}` : nothing} - ${this._categories?.map( - (category) => - html` - ${category.icon - ? html`` - : html``} - ${category.name} - ` - )} - - ${this.hass.localize( - "ui.panel.config.automation.picker.bulk_actions.no_category" - )} - - - - ${this.hass.localize("ui.panel.config.category.editor.add")} - + ${this._renderCategoryItems(true)} ` : nothing} ${this.narrow || labelsInOverflow @@ -746,52 +740,7 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { ${this.hass.localize( "ui.panel.config.automation.picker.bulk_actions.add_label" )} - - ${this._labels?.map((label) => { - const color = label.color ? computeCssColor(label.color) : undefined; - const selected = this._selected.every((entityId) => - this.hass.entities[entityId]?.labels.includes(label.label_id) - ); - const partial = - !selected && - this._selected.some((entityId) => - this.hass.entities[entityId]?.labels.includes(label.label_id) - ); - return html` - - - ${label.icon - ? html`` - : nothing} - ${label.name} - - `; - })} - - - ${this.hass.localize("ui.panel.config.labels.add_label")} - + ${this._renderLabelItems(true)} ` : nothing} ${this.narrow || areasInOverflow @@ -799,33 +748,7 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { ${this.hass.localize( "ui.panel.config.devices.picker.bulk_actions.move_area" )} - - ${Object.values(this.hass.areas).map( - (area) => - html` - ${area.icon - ? html`` - : html``} - ${area.name} - ` - )} - - ${this.hass.localize( - "ui.panel.config.devices.picker.bulk_actions.no_area" - )} - - - - ${this.hass.localize( - "ui.panel.config.devices.picker.bulk_actions.add_area" - )} - + ${this._renderAreaItems(true)} ` : nothing} @@ -1338,6 +1261,7 @@ ${rejected } private async _handleBulkLabel(ev) { + ev.stopPropagation(); const label = ev.currentTarget.value; const action = ev.currentTarget.dataset.action; this._bulkLabel(label, action);