Bunch of fixes and cleanup (#11636)

This commit is contained in:
Bram Kragten 2022-02-10 15:24:47 +01:00 committed by GitHub
parent fd80408de2
commit 0eeed85193
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 163 additions and 136 deletions

View File

@ -205,16 +205,6 @@ class HassioCoreInfo extends LitElement {
color: var(--secondary-text-color); color: var(--secondary-text-color);
--mdc-menu-min-width: 200px; --mdc-menu-min-width: 200px;
} }
@media (min-width: 563px) {
paper-listbox {
max-height: 150px;
overflow: auto;
}
}
paper-item {
cursor: pointer;
min-height: 35px;
}
mwc-list-item ha-svg-icon { mwc-list-item ha-svg-icon {
color: var(--secondary-text-color); color: var(--secondary-text-color);
} }

View File

@ -440,16 +440,6 @@ class HassioHostInfo extends LitElement {
color: var(--secondary-text-color); color: var(--secondary-text-color);
--mdc-menu-min-width: 200px; --mdc-menu-min-width: 200px;
} }
@media (min-width: 563px) {
paper-listbox {
max-height: 150px;
overflow: auto;
}
}
paper-item {
cursor: pointer;
min-height: 35px;
}
mwc-list-item ha-svg-icon { mwc-list-item ha-svg-icon {
color: var(--secondary-text-color); color: var(--secondary-text-color);
} }

View File

@ -1,5 +1,5 @@
import type { HassEntity } from "home-assistant-js-websocket"; import type { HassEntity } from "home-assistant-js-websocket";
import { html, LitElement, TemplateResult } from "lit"; import { css, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { fireEvent } from "../../common/dom/fire_event"; import { fireEvent } from "../../common/dom/fire_event";
import { isValidEntityId } from "../../common/entity/valid_entity_id"; import { isValidEntityId } from "../../common/entity/valid_entity_id";
@ -145,6 +145,12 @@ class HaEntitiesPickerLight extends LitElement {
this._updateEntities([...currentEntities, toAdd]); this._updateEntities([...currentEntities, toAdd]);
} }
static override styles = css`
ha-entity-picker {
margin-top: 8px;
}
`;
} }
declare global { declare global {

View File

@ -111,7 +111,9 @@ class HaStatisticsPicker extends LitElement {
display: block; display: block;
} }
ha-statistic-picker { ha-statistic-picker {
display: block;
width: 100%; width: 100%;
margin-top: 8px;
} }
`; `;
} }

View File

@ -1,12 +1,14 @@
import { css } from "lit"; import { css } from "lit";
import { CheckListItemBase } from "@material/mwc-list/mwc-check-list-item-base"; import { CheckListItemBase } from "@material/mwc-list/mwc-check-list-item-base";
import { styles } from "@material/mwc-list/mwc-control-list-item.css"; import { styles as controlStyles } from "@material/mwc-list/mwc-control-list-item.css";
import { styles } from "@material/mwc-list/mwc-list-item.css";
import { customElement } from "lit/decorators"; import { customElement } from "lit/decorators";
@customElement("ha-check-list-item") @customElement("ha-check-list-item")
export class HaCheckListItem extends CheckListItemBase { export class HaCheckListItem extends CheckListItemBase {
static override styles = [ static override styles = [
styles, styles,
controlStyles,
css` css`
:host { :host {
--mdc-theme-secondary: var(--primary-color); --mdc-theme-secondary: var(--primary-color);

View File

@ -31,7 +31,7 @@ export class HaSelector extends LitElement {
@property({ type: Boolean }) public disabled = false; @property({ type: Boolean }) public disabled = false;
public focus() { public focus() {
this.shadowRoot!.getElementById("selector")?.focus(); this.shadowRoot?.getElementById("selector")?.focus();
} }
private get _type() { private get _type() {

View File

@ -67,7 +67,7 @@ export class HaServiceControl extends LitElement {
@query("ha-yaml-editor") private _yamlEditor?: HaYamlEditor; @query("ha-yaml-editor") private _yamlEditor?: HaYamlEditor;
protected updated(changedProperties: PropertyValues<this>) { protected willUpdate(changedProperties: PropertyValues<this>) {
if (!changedProperties.has("value")) { if (!changedProperties.has("value")) {
return; return;
} }
@ -482,9 +482,6 @@ export class HaServiceControl extends LitElement {
display: block; display: block;
margin: var(--service-control-padding, 0 16px); margin: var(--service-control-padding, 0 16px);
} }
ha-service-picker {
padding-top: 16px;
}
ha-yaml-editor { ha-yaml-editor {
padding: 16px 0; padding: 16px 0;
} }

View File

@ -10,7 +10,7 @@ import "./ha-combo-box";
const rowRenderer: ComboBoxLitRenderer<{ service: string; name: string }> = ( const rowRenderer: ComboBoxLitRenderer<{ service: string; name: string }> = (
item item
) => html` <mwc-list-item twoline> ) => html`<mwc-list-item twoline>
<span>${item.name}</span> <span>${item.name}</span>
<span slot="secondary" <span slot="secondary"
>${item.name === item.service ? "" : item.service}</span >${item.name === item.service ? "" : item.service}</span

View File

@ -3,7 +3,6 @@ import "@material/mwc-list/mwc-list";
import "@material/mwc-list/mwc-list-item"; import "@material/mwc-list/mwc-list-item";
import { mdiPlay, mdiPlus } from "@mdi/js"; import { mdiPlay, mdiPlus } from "@mdi/js";
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import "@polymer/paper-tooltip/paper-tooltip"; import "@polymer/paper-tooltip/paper-tooltip";
import { import {
css, css,

View File

@ -342,12 +342,14 @@ export default class HaAutomationActionRow extends LitElement {
haStyle, haStyle,
css` css`
.card-menu { .card-menu {
float: right; position: absolute;
right: 16px;
z-index: 3; z-index: 3;
--mdc-theme-text-primary-on-background: var(--primary-text-color); --mdc-theme-text-primary-on-background: var(--primary-text-color);
} }
.rtl .card-menu { .rtl .card-menu {
float: left; right: initial;
left: 16px;
} }
mwc-list-item[disabled] { mwc-list-item[disabled] {
--mdc-theme-text-primary-on-background: var(--disabled-text-color); --mdc-theme-text-primary-on-background: var(--disabled-text-color);
@ -358,6 +360,9 @@ export default class HaAutomationActionRow extends LitElement {
.warning ul { .warning ul {
margin: 4px 0; margin: 4px 0;
} }
mwc-select {
margin-bottom: 16px;
}
`, `,
]; ];
} }

View File

@ -1,6 +1,5 @@
import { mdiDelete } from "@mdi/js"; import { mdiDelete } from "@mdi/js";
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import "@polymer/paper-listbox/paper-listbox";
import { css, CSSResultGroup, html, LitElement } from "lit"; import { css, CSSResultGroup, html, LitElement } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { fireEvent } from "../../../../../common/dom/fire_event"; import { fireEvent } from "../../../../../common/dom/fire_event";

View File

@ -1,4 +1,4 @@
import { html, LitElement } from "lit"; import { css, html, LitElement } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { fireEvent } from "../../../../../common/dom/fire_event"; import { fireEvent } from "../../../../../common/dom/fire_event";
@ -140,6 +140,13 @@ export class HaDeviceAction extends LitElement {
`ui.panel.config.automation.editor.actions.type.device_id.extra_fields.${schema.name}` `ui.panel.config.automation.editor.actions.type.device_id.extra_fields.${schema.name}`
) || schema.name; ) || schema.name;
} }
static styles = css`
ha-device-action-picker {
display: block;
margin-top: 8px;
}
`;
} }
declare global { declare global {

View File

@ -1,7 +1,7 @@
import { CSSResultGroup, html, LitElement } from "lit";
import { customElement, property } from "lit/decorators";
import "@material/mwc-select"; import "@material/mwc-select";
import type { Select } from "@material/mwc-select"; import type { Select } from "@material/mwc-select";
import { css, html, LitElement } from "lit";
import { customElement, property } from "lit/decorators";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { dynamicElement } from "../../../../common/dom/dynamic-element-directive"; import { dynamicElement } from "../../../../common/dom/dynamic-element-directive";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
@ -143,9 +143,14 @@ export default class HaAutomationConditionEditor extends LitElement {
fireEvent(this, "value-changed", { value: ev.detail.value, yaml: true }); fireEvent(this, "value-changed", { value: ev.detail.value, yaml: true });
} }
static get styles(): CSSResultGroup { static styles = [
return haStyle; haStyle,
} css`
mwc-select {
margin-bottom: 16px;
}
`,
];
} }
declare global { declare global {

View File

@ -332,6 +332,9 @@ export default class HaAutomationTriggerRow extends LitElement {
mwc-list-item[disabled] { mwc-list-item[disabled] {
--mdc-theme-text-primary-on-background: var(--disabled-text-color); --mdc-theme-text-primary-on-background: var(--disabled-text-color);
} }
mwc-select {
margin-bottom: 16px;
}
`, `,
]; ];
} }

View File

@ -1,5 +1,4 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import "@polymer/paper-listbox/paper-listbox";
import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { UnsubscribeFunc } from "home-assistant-js-websocket";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";

View File

@ -1,5 +1,4 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import "@polymer/paper-listbox/paper-listbox";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map"; import { classMap } from "lit/directives/class-map";

View File

@ -1,7 +1,6 @@
import { mdiPlus } from "@mdi/js"; import { mdiPlus } from "@mdi/js";
import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu";
import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-icon-item";
import "@polymer/paper-listbox/paper-listbox";
import { html, LitElement, PropertyValues, TemplateResult } from "lit"; import { html, LitElement, PropertyValues, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import memoize from "memoize-one"; import memoize from "memoize-one";

View File

@ -984,6 +984,12 @@ export class HaSceneEditor extends SubscribeMixin(
ha-fab.saving { ha-fab.saving {
opacity: var(--light-disabled-opacity); opacity: var(--light-disabled-opacity);
} }
ha-icon-picker,
ha-area-picker,
ha-entity-picker {
display: block;
margin-top: 8px;
}
`, `,
]; ];
} }

View File

@ -93,6 +93,7 @@ class DialogUserDetail extends LitElement {
`} `}
<div class="form"> <div class="form">
<paper-input <paper-input
dialogInitialFocus
.value=${this._name} .value=${this._name}
.disabled=${user.system_generated} .disabled=${user.system_generated}
@value-changed=${this._nameChanged} @value-changed=${this._nameChanged}

View File

@ -92,28 +92,31 @@ class HaPanelDevService extends LitElement {
"ui.panel.developer-tools.tabs.services.description" "ui.panel.developer-tools.tabs.services.description"
)} )}
</p> </p>
<ha-card>
${this._yamlMode ${this._yamlMode
? html`<ha-service-picker ? html`<div class="card-content">
.hass=${this.hass} <ha-service-picker
.value=${this._serviceData?.service} .hass=${this.hass}
@value-changed=${this._serviceChanged} .value=${this._serviceData?.service}
></ha-service-picker> @value-changed=${this._serviceChanged}
<ha-yaml-editor ></ha-service-picker>
.hass=${this.hass} <ha-yaml-editor
.defaultValue=${this._serviceData} .hass=${this.hass}
@value-changed=${this._yamlChanged} .defaultValue=${this._serviceData}
></ha-yaml-editor>` @value-changed=${this._yamlChanged}
: html`<ha-card ></ha-yaml-editor>
><div> </div>`
: html`
<ha-service-control <ha-service-control
.hass=${this.hass} .hass=${this.hass}
.value=${this._serviceData} .value=${this._serviceData}
.narrow=${this.narrow} .narrow=${this.narrow}
showAdvanced showAdvanced
@value-changed=${this._serviceDataChanged} @value-changed=${this._serviceDataChanged}
></ha-service-control></div class="card-content"
></ha-card>`} ></ha-service-control>
`}
</ha-card>
</div> </div>
<div class="button-row"> <div class="button-row">
<div class="buttons"> <div class="buttons">

View File

@ -1,13 +1,8 @@
import "@polymer/paper-dropdown-menu/paper-dropdown-menu";
import "@polymer/paper-input/paper-input";
import "@polymer/paper-input/paper-textarea";
import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import type { PaperListboxElement } from "@polymer/paper-listbox/paper-listbox";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { fireEvent } from "../../../common/dom/fire_event"; import { fireEvent } from "../../../common/dom/fire_event";
import { stopPropagation } from "../../../common/dom/stop_propagation";
import "../../../components/ha-help-tooltip"; import "../../../components/ha-help-tooltip";
import "../../../components/ha-service-control"; import "../../../components/ha-service-control";
import { import {
@ -62,32 +57,30 @@ export class HuiActionEditor extends LitElement {
return html` return html`
<div class="dropdown"> <div class="dropdown">
<paper-dropdown-menu <mwc-select
.label=${this.label} .label=${this.label}
.configValue=${"action"} .configValue=${"action"}
@iron-select=${this._actionPicked} @selected=${this._actionPicked}
.value=${this.config?.action ?? "default"}
@closed=${stopPropagation}
fixedMenuPosition
naturalMenuWidt
> >
<paper-listbox <mwc-list-item value="default">
slot="dropdown-content" ${this.hass!.localize(
attr-for-selected="value" "ui.panel.lovelace.editor.action-editor.actions.default_action"
.selected=${this.config?.action ?? "default"}
>
<paper-item .value=${"default"}
>${this.hass!.localize(
"ui.panel.lovelace.editor.action-editor.actions.default_action"
)}</paper-item
>
${this.actions.map(
(action) => html`
<paper-item .value=${action}
>${this.hass!.localize(
`ui.panel.lovelace.editor.action-editor.actions.${action}`
)}</paper-item
>
`
)} )}
</paper-listbox> </mwc-list-item>
</paper-dropdown-menu> ${this.actions.map(
(action) => html`
<mwc-list-item .value=${action}>
${this.hass!.localize(
`ui.panel.lovelace.editor.action-editor.actions.${action}`
)}
</mwc-list-item>
`
)}
</mwc-select>
${this.tooltipText ${this.tooltipText
? html` ? html`
<ha-help-tooltip .label=${this.tooltipText}></ha-help-tooltip> <ha-help-tooltip .label=${this.tooltipText}></ha-help-tooltip>
@ -96,26 +89,26 @@ export class HuiActionEditor extends LitElement {
</div> </div>
${this.config?.action === "navigate" ${this.config?.action === "navigate"
? html` ? html`
<paper-input <ha-textfield
label=${this.hass!.localize( label=${this.hass!.localize(
"ui.panel.lovelace.editor.action-editor.navigation_path" "ui.panel.lovelace.editor.action-editor.navigation_path"
)} )}
.value=${this._navigation_path} .value=${this._navigation_path}
.configValue=${"navigation_path"} .configValue=${"navigation_path"}
@value-changed=${this._valueChanged} @input=${this._valueChanged}
></paper-input> ></ha-textfield>
` `
: ""} : ""}
${this.config?.action === "url" ${this.config?.action === "url"
? html` ? html`
<paper-input <ha-textfield
label=${this.hass!.localize( .label=${this.hass!.localize(
"ui.panel.lovelace.editor.action-editor.url_path" "ui.panel.lovelace.editor.action-editor.url_path"
)} )}
.value=${this._url_path} .value=${this._url_path}
.configValue=${"url_path"} .configValue=${"url_path"}
@value-changed=${this._valueChanged} @input=${this._valueChanged}
></paper-input> ></ha-textfield>
` `
: ""} : ""}
${this.config?.action === "call-service" ${this.config?.action === "call-service"
@ -132,23 +125,17 @@ export class HuiActionEditor extends LitElement {
`; `;
} }
private _actionPicked(ev: CustomEvent): void { private _actionPicked(ev): void {
ev.stopPropagation(); ev.stopPropagation();
if (!this.hass) { if (!this.hass) {
return; return;
} }
const item = ev.detail.item; const value = ev.target.value;
const value = item.value;
if (this.config?.action === value) { if (this.config?.action === value) {
return; return;
} }
if (value === "default") { if (value === "default") {
fireEvent(this, "value-changed", { value: undefined }); fireEvent(this, "value-changed", { value: undefined });
if (this.config?.action) {
(
this.shadowRoot!.querySelector("paper-listbox") as PaperListboxElement
).select(this.config.action);
}
return; return;
} }
@ -173,13 +160,13 @@ export class HuiActionEditor extends LitElement {
}); });
} }
private _valueChanged(ev: CustomEvent): void { private _valueChanged(ev): void {
ev.stopPropagation(); ev.stopPropagation();
if (!this.hass) { if (!this.hass) {
return; return;
} }
const target = ev.target! as EditorTarget; const target = ev.target! as EditorTarget;
const value = ev.detail.value; const value = ev.target.value;
if (this[`_${target.configValue}`] === value) { if (this[`_${target.configValue}`] === value) {
return; return;
} }
@ -205,7 +192,19 @@ export class HuiActionEditor extends LitElement {
static get styles(): CSSResultGroup { static get styles(): CSSResultGroup {
return css` return css`
.dropdown { .dropdown {
display: flex; position: relative;
}
ha-help-tooltip {
position: absolute;
right: 40px;
top: 16px;
}
mwc-select,
ha-textfield {
width: 100%;
}
ha-textfield {
margin-top: 8px;
} }
ha-service-control { ha-service-control {
--service-control-padding: 0; --service-control-padding: 0;

View File

@ -78,6 +78,7 @@ export class HuiEntityEditor extends LitElement {
)} )}
</div> </div>
<ha-entity-picker <ha-entity-picker
class="add-entity"
.hass=${this.hass} .hass=${this.hass}
@value-changed=${this._addEntity} @value-changed=${this._addEntity}
></ha-entity-picker> ></ha-entity-picker>
@ -170,7 +171,7 @@ export class HuiEntityEditor extends LitElement {
const index = (ev.target as any).index; const index = (ev.target as any).index;
const newConfigEntities = this.entities!.concat(); const newConfigEntities = this.entities!.concat();
if (value === "") { if (value === "" || value === undefined) {
newConfigEntities.splice(index, 1); newConfigEntities.splice(index, 1);
} else { } else {
newConfigEntities[index] = { newConfigEntities[index] = {
@ -186,6 +187,13 @@ export class HuiEntityEditor extends LitElement {
return [ return [
sortableStyles, sortableStyles,
css` css`
ha-entity-picker {
margin-top: 8px;
}
.add-entity {
display: block;
margin-left: 31px;
}
.entity { .entity {
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -1,11 +1,11 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-dropdown-menu/paper-dropdown-menu";
import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { fireEvent } from "../../../common/dom/fire_event"; import { fireEvent } from "../../../common/dom/fire_event";
import { HomeAssistant } from "../../../types"; import { HomeAssistant } from "../../../types";
import "@material/mwc-select/mwc-select";
import "@material/mwc-list/mwc-list-item";
import { stopPropagation } from "../../../common/dom/stop_propagation";
@customElement("hui-theme-select-editor") @customElement("hui-theme-select-editor")
export class HuiThemeSelectEditor extends LitElement { export class HuiThemeSelectEditor extends LitElement {
@ -17,53 +17,47 @@ export class HuiThemeSelectEditor extends LitElement {
protected render(): TemplateResult { protected render(): TemplateResult {
return html` return html`
<paper-dropdown-menu <mwc-select
.label=${this.label || .label=${this.label ||
`${this.hass!.localize( `${this.hass!.localize(
"ui.panel.lovelace.editor.card.generic.theme" "ui.panel.lovelace.editor.card.generic.theme"
)} (${this.hass!.localize( )} (${this.hass!.localize(
"ui.panel.lovelace.editor.card.config.optional" "ui.panel.lovelace.editor.card.config.optional"
)})`} )})`}
dynamic-align .value=${this.value}
@selected=${this._changed}
@closed=${stopPropagation}
fixedMenuPosition
naturalMenuWidt
> >
<paper-listbox <mwc-list-item value="remove"
slot="dropdown-content" >${this.hass!.localize(
.selected=${this.value} "ui.panel.lovelace.editor.card.generic.no_theme"
attr-for-selected="theme" )}</mwc-list-item
@iron-select=${this._changed}
> >
<paper-item theme="remove" ${Object.keys(this.hass!.themes.themes)
>${this.hass!.localize( .sort()
"ui.panel.lovelace.editor.card.generic.no_theme" .map(
)}</paper-item (theme) =>
> html` <mwc-list-item .value=${theme}>${theme}</mwc-list-item> `
${Object.keys(this.hass!.themes.themes) )}
.sort() </mwc-select>
.map(
(theme) =>
html` <paper-item theme=${theme}>${theme}</paper-item> `
)}
</paper-listbox>
</paper-dropdown-menu>
`; `;
} }
static get styles(): CSSResultGroup { static get styles(): CSSResultGroup {
return css` return css`
paper-dropdown-menu { mwc-select {
width: 100%; width: 100%;
} }
paper-item {
cursor: pointer;
}
`; `;
} }
private _changed(ev): void { private _changed(ev): void {
if (!this.hass || ev.target.selected === "") { if (!this.hass || ev.target.value === "") {
return; return;
} }
this.value = ev.target.selected === "remove" ? "" : ev.target.selected; this.value = ev.target.value === "remove" ? "" : ev.target.selected;
fireEvent(this, "value-changed", { value: this.value }); fireEvent(this, "value-changed", { value: this.value });
} }
} }

View File

@ -19,4 +19,11 @@ export const configElementStyle = css`
.suffix { .suffix {
margin: 0 8px; margin: 0 8px;
} }
hui-theme-select-editor,
hui-action-editor,
mwc-select,
ha-textfield,
ha-icon-picker {
margin-top: 8px;
}
`; `;

View File

@ -1,7 +1,6 @@
import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu";
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { import {

View File

@ -1,6 +1,5 @@
import { mdiClose, mdiPencil, mdiPlus } from "@mdi/js"; import { mdiClose, mdiPencil, mdiPlus } from "@mdi/js";
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";

View File

@ -126,6 +126,7 @@ export class HuiEntitiesCardRowEditor extends LitElement {
)} )}
</div> </div>
<ha-entity-picker <ha-entity-picker
class="add-entity"
.hass=${this.hass} .hass=${this.hass}
@value-changed=${this._addEntity} @value-changed=${this._addEntity}
></ha-entity-picker> ></ha-entity-picker>
@ -226,7 +227,7 @@ export class HuiEntitiesCardRowEditor extends LitElement {
const index = (ev.target as any).index; const index = (ev.target as any).index;
const newConfigEntities = this.entities!.concat(); const newConfigEntities = this.entities!.concat();
if (value === "") { if (value === "" || value === undefined) {
newConfigEntities.splice(index, 1); newConfigEntities.splice(index, 1);
} else { } else {
newConfigEntities[index] = { newConfigEntities[index] = {
@ -253,6 +254,14 @@ export class HuiEntitiesCardRowEditor extends LitElement {
return [ return [
sortableStyles, sortableStyles,
css` css`
ha-entity-picker {
margin-top: 8px;
}
.add-entity {
display: block;
margin-left: 31px;
margin-right: 71px;
}
.entity { .entity {
display: flex; display: flex;
align-items: center; align-items: center;