diff --git a/hassio/src/addon-view/config/hassio-addon-audio.ts b/hassio/src/addon-view/config/hassio-addon-audio.ts index 0851a1269b..c9629589ae 100644 --- a/hassio/src/addon-view/config/hassio-addon-audio.ts +++ b/hassio/src/addon-view/config/hassio-addon-audio.ts @@ -1,7 +1,6 @@ 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 "@material/mwc-select"; +import "@material/mwc-list/mwc-list-item"; import { css, CSSResultGroup, @@ -11,7 +10,7 @@ import { TemplateResult, } from "lit"; import { customElement, property, state } from "lit/decorators"; -import "web-animations-js/web-animations-next-lite.min"; +import { stopPropagation } from "../../../../src/common/dom/stop_propagation"; import "../../../../src/components/buttons/ha-progress-button"; import "../../../../src/components/ha-alert"; import "../../../../src/components/ha-card"; @@ -58,48 +57,44 @@ class HassioAddonAudio extends LitElement { ? html`${this._error}` : ""} - - - ${this._inputDevices && - this._inputDevices.map( - (item) => html` - - ${item.name} - - ` - )} - - - html` + + ${item.name} + + ` + )} + + - - ${this._outputDevices && - this._outputDevices.map( - (item) => html` - ${item.name} - ` - )} - - + ${this._outputDevices && + this._outputDevices.map( + (item) => html` + ${item.name} + ` + )} +
@@ -138,12 +133,12 @@ class HassioAddonAudio extends LitElement { } private _setInputDevice(ev): void { - const device = ev.detail.item.getAttribute("device"); + const device = ev.target.value; this._selectedInput = device; } private _setOutputDevice(ev): void { - const device = ev.detail.item.getAttribute("device"); + const device = ev.target.value; this._selectedOutput = device; } diff --git a/hassio/src/dashboard/hassio-update.ts b/hassio/src/dashboard/hassio-update.ts index 2f8321344d..fbdb6f9aa1 100644 --- a/hassio/src/dashboard/hassio-update.ts +++ b/hassio/src/dashboard/hassio-update.ts @@ -148,7 +148,6 @@ export class HassioUpdate extends LitElement { } ha-settings-row { padding: 0; - --paper-item-body-two-line-min-height: 32px; } `, ]; diff --git a/hassio/src/dialogs/datadisk/dialog-hassio-datadisk.ts b/hassio/src/dialogs/datadisk/dialog-hassio-datadisk.ts index f91c6362f7..d903651898 100644 --- a/hassio/src/dialogs/datadisk/dialog-hassio-datadisk.ts +++ b/hassio/src/dialogs/datadisk/dialog-hassio-datadisk.ts @@ -1,6 +1,5 @@ -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import memoizeOne from "memoize-one"; @@ -90,18 +89,19 @@ class HassioDatadiskDialog extends LitElement { )}

- - - ${this.devices.map( - (device) => html`${device}` - )} - - + ${this.devices.map( + (device) => + html`${device}` + )} + ` : this.devices === undefined ? this.dialogParams.supervisor.localize( @@ -130,8 +130,8 @@ class HassioDatadiskDialog extends LitElement { `; } - private _select_device(event) { - this.selectedDevice = event.detail.value; + private _select_device(ev) { + this.selectedDevice = ev.target.value; } private async _moveDatadisk() { diff --git a/hassio/src/system/hassio-supervisor-log.ts b/hassio/src/system/hassio-supervisor-log.ts index 09f518703c..6000b5b9aa 100644 --- a/hassio/src/system/hassio-supervisor-log.ts +++ b/hassio/src/system/hassio-supervisor-log.ts @@ -1,7 +1,4 @@ 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 { customElement, property, state } from "lit/decorators"; import "../../../src/components/buttons/ha-progress-button"; @@ -73,24 +70,19 @@ class HassioSupervisorLog extends LitElement { : ""} ${this.hass.userData?.showAdvanced ? html` - - - ${logProviders.map( - (provider) => html` - - ${provider.name} - - ` - )} - - + ${logProviders.map( + (provider) => html` + + ${provider.name} + + ` + )} + ` : ""} @@ -110,7 +102,7 @@ class HassioSupervisorLog extends LitElement { } private async _setLogProvider(ev): Promise { - const provider = ev.detail.item.getAttribute("provider"); + const provider = ev.target.value; this._selectedLogProvider = provider; this._loadData(); } @@ -153,7 +145,7 @@ class HassioSupervisorLog extends LitElement { pre { white-space: pre-wrap; } - paper-dropdown-menu { + mwc-select { padding: 0 2%; width: 96%; } diff --git a/src/components/entity/ha-statistic-picker.ts b/src/components/entity/ha-statistic-picker.ts index 6fc0f34a1f..a3965023a0 100644 --- a/src/components/entity/ha-statistic-picker.ts +++ b/src/components/entity/ha-statistic-picker.ts @@ -1,6 +1,4 @@ import "@polymer/paper-input/paper-input"; -import "@polymer/paper-item/paper-icon-item"; -import "@polymer/paper-item/paper-item-body"; import { HassEntity } from "home-assistant-js-websocket"; import { html, LitElement, PropertyValues, TemplateResult } from "lit"; import { ComboBoxLitRenderer } from "lit-vaadin-helpers"; diff --git a/src/components/ha-paper-dropdown-menu.ts b/src/components/ha-paper-dropdown-menu.ts deleted file mode 100644 index 72f2f6b15c..0000000000 --- a/src/components/ha-paper-dropdown-menu.ts +++ /dev/null @@ -1,28 +0,0 @@ -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; -import { PolymerElement } from "@polymer/polymer"; -import { Constructor } from "../types"; - -const paperDropdownClass = customElements.get( - "paper-dropdown-menu" -) as Constructor; - -// patches paper drop down to properly support RTL - https://github.com/PolymerElements/paper-dropdown-menu/issues/183 -export class HaPaperDropdownClass extends paperDropdownClass { - public ready() { - super.ready(); - // wait to check for direction since otherwise direction is wrong even though top level is RTL - setTimeout(() => { - if (window.getComputedStyle(this).direction === "rtl") { - this.style.textAlign = "right"; - } - }, 100); - } -} - -declare global { - interface HTMLElementTagNameMap { - "ha-paper-dropdown-menu": HaPaperDropdownClass; - } -} - -customElements.define("ha-paper-dropdown-menu", HaPaperDropdownClass); diff --git a/src/components/media-player/ha-media-player-browse.ts b/src/components/media-player/ha-media-player-browse.ts index 27e2274169..6117286c59 100644 --- a/src/components/media-player/ha-media-player-browse.ts +++ b/src/components/media-player/ha-media-player-browse.ts @@ -2,7 +2,6 @@ import "@material/mwc-button/mwc-button"; import "@material/mwc-list/mwc-list"; import "@material/mwc-list/mwc-list-item"; import { mdiPlay, mdiPlus } from "@mdi/js"; -import "@polymer/paper-item/paper-item"; import "@polymer/paper-tooltip/paper-tooltip"; import { css, diff --git a/src/dialogs/more-info/controls/more-info-light.ts b/src/dialogs/more-info/controls/more-info-light.ts index 12c28a045b..08b53c1825 100644 --- a/src/dialogs/more-info/controls/more-info-light.ts +++ b/src/dialogs/more-info/controls/more-info-light.ts @@ -615,10 +615,6 @@ class MoreInfoLight extends LitElement { color: var(--secondary-text-color); } - paper-item { - cursor: pointer; - } - hr { border-color: var(--divider-color); border-bottom: none; diff --git a/src/dialogs/more-info/controls/more-info-remote.ts b/src/dialogs/more-info/controls/more-info-remote.ts index d952dfbeab..dbdc2fd0c9 100644 --- a/src/dialogs/more-info/controls/more-info-remote.ts +++ b/src/dialogs/more-info/controls/more-info-remote.ts @@ -1,4 +1,4 @@ -import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; +import { html, LitElement, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators"; import { supportsFeature } from "../../../common/entity/supports-feature"; import "../../../components/ha-attributes"; @@ -66,14 +66,6 @@ class MoreInfoRemote extends LitElement { activity: newVal, }); } - - static get styles(): CSSResultGroup { - return css` - paper-item { - cursor: pointer; - } - `; - } } declare global { diff --git a/src/dialogs/more-info/controls/more-info-vacuum.ts b/src/dialogs/more-info/controls/more-info-vacuum.ts index 17eaa0a534..44ef096299 100644 --- a/src/dialogs/more-info/controls/more-info-vacuum.ts +++ b/src/dialogs/more-info/controls/more-info-vacuum.ts @@ -241,9 +241,6 @@ class MoreInfoVacuum extends LitElement { .status-subtitle { color: var(--secondary-text-color); } - paper-item { - cursor: pointer; - } .flex-horizontal { display: flex; flex-direction: row; diff --git a/src/panels/config/automation/condition/ha-automation-condition-row.ts b/src/panels/config/automation/condition/ha-automation-condition-row.ts index b36118b680..bee7358190 100644 --- a/src/panels/config/automation/condition/ha-automation-condition-row.ts +++ b/src/panels/config/automation/condition/ha-automation-condition-row.ts @@ -1,7 +1,6 @@ import { ActionDetail } from "@material/mwc-list/mwc-list-foundation"; import "@material/mwc-list/mwc-list-item"; import { mdiDotsVertical } from "@mdi/js"; -import "@polymer/paper-item/paper-item"; import { css, CSSResultGroup, html, LitElement } from "lit"; import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; diff --git a/src/panels/config/automation/condition/types/ha-automation-condition-trigger.ts b/src/panels/config/automation/condition/types/ha-automation-condition-trigger.ts index 14adc8d117..ea867147bd 100644 --- a/src/panels/config/automation/condition/types/ha-automation-condition-trigger.ts +++ b/src/panels/config/automation/condition/types/ha-automation-condition-trigger.ts @@ -1,4 +1,5 @@ -import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select"; import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { html, LitElement } from "lit"; import { customElement, property, state } from "lit/decorators"; @@ -48,41 +49,35 @@ export class HaTriggerCondition extends LitElement { "ui.panel.config.automation.editor.conditions.type.trigger.no_triggers" ); } - return html` - - ${ensureArray(this._triggers).map((trigger) => - trigger.id - ? html` - - ${trigger.id} - - ` - : "" - )} - - `; + ${ensureArray(this._triggers).map((trigger) => + trigger.id + ? html` + + ${trigger.id} + + ` + : "" + )} + `; } private _automationUpdated(config?: AutomationConfig) { this._triggers = config?.trigger; } - private _triggerPicked(ev: CustomEvent) { + private _triggerPicked(ev) { ev.stopPropagation(); - if (!ev.detail.value) { + if (!ev.target.value) { return; } - const newTrigger = ev.detail.value.dataset.triggerId; + const newTrigger = ev.target.value; if (this.condition.id === newTrigger) { return; } diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-tag.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-tag.ts index ce891e3a57..90772dccfe 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-tag.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-tag.ts @@ -1,13 +1,14 @@ +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select"; import "@polymer/paper-input/paper-input"; import { html, LitElement, PropertyValues } from "lit"; import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../../common/dom/fire_event"; +import { caseInsensitiveStringCompare } from "../../../../../common/string/compare"; import { TagTrigger } from "../../../../../data/automation"; import { fetchTags, Tag } from "../../../../../data/tag"; import { HomeAssistant } from "../../../../../types"; import { TriggerElement } from "../ha-automation-trigger-row"; -import "../../../../../components/ha-paper-dropdown-menu"; -import { caseInsensitiveStringCompare } from "../../../../../common/string/compare"; @customElement("ha-automation-trigger-tag") export class HaTagTrigger extends LitElement implements TriggerElement { @@ -29,27 +30,22 @@ export class HaTagTrigger extends LitElement implements TriggerElement { protected render() { const { tag_id } = this.trigger; return html` - - - ${this._tags.map( - (tag) => html` - - ${tag.name || tag.id} - - ` - )} - - + ${this._tags.map( + (tag) => html` + + ${tag.name || tag.id} + + ` + )} + `; } @@ -64,8 +60,14 @@ export class HaTagTrigger extends LitElement implements TriggerElement { fireEvent(this, "value-changed", { value: { ...this.trigger, - tag_id: ev.detail.item.tag.id, + tag_id: ev.target.value, }, }); } } + +declare global { + interface HTMLElementTagNameMap { + "ha-automation-trigger-tag": HaTagTrigger; + } +} diff --git a/src/panels/config/cloud/account/cloud-remote-pref.ts b/src/panels/config/cloud/account/cloud-remote-pref.ts index aeadcf80ed..2f1eb91417 100644 --- a/src/panels/config/cloud/account/cloud-remote-pref.ts +++ b/src/panels/config/cloud/account/cloud-remote-pref.ts @@ -1,5 +1,4 @@ import "@material/mwc-button"; -import "@polymer/paper-item/paper-item-body"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; diff --git a/src/panels/config/cloud/account/cloud-webhooks.ts b/src/panels/config/cloud/account/cloud-webhooks.ts index 6f31ea5b52..a18e9e038f 100644 --- a/src/panels/config/cloud/account/cloud-webhooks.ts +++ b/src/panels/config/cloud/account/cloud-webhooks.ts @@ -1,5 +1,3 @@ -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-item/paper-item-body"; import { css, CSSResultGroup, html, LitElement, PropertyValues } from "lit"; import { customElement, property, state } from "lit/decorators"; import { isComponentLoaded } from "../../../../common/config/is_component_loaded"; diff --git a/src/panels/config/cloud/register/cloud-register.ts b/src/panels/config/cloud/register/cloud-register.ts index 58dd7e60ed..11a0c8d243 100644 --- a/src/panels/config/cloud/register/cloud-register.ts +++ b/src/panels/config/cloud/register/cloud-register.ts @@ -266,9 +266,6 @@ export class CloudRegister extends LitElement { a { color: var(--primary-color); } - paper-item { - cursor: pointer; - } h1 { margin: 0; } diff --git a/src/panels/config/entities/entity-registry-settings.ts b/src/panels/config/entities/entity-registry-settings.ts index a62338b472..f4c40e335f 100644 --- a/src/panels/config/entities/entity-registry-settings.ts +++ b/src/panels/config/entities/entity-registry-settings.ts @@ -1,6 +1,7 @@ import "@material/mwc-button/mwc-button"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import "@polymer/paper-input/paper-input"; -import type { PaperItemElement } from "@polymer/paper-item/paper-item"; import { HassEntity, UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, @@ -17,7 +18,6 @@ import { domainIcon } from "../../../common/entity/domain_icon"; import "../../../components/ha-area-picker"; import "../../../components/ha-expansion-panel"; import "../../../components/ha-icon-picker"; -import "../../../components/ha-paper-dropdown-menu"; import "../../../components/ha-switch"; import type { HaSwitch } from "../../../components/ha-switch"; import { @@ -158,28 +158,23 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { > ${OVERRIDE_DEVICE_CLASSES[domain]?.includes(this._deviceClass) || (domain === "cover" && this.entry.original_device_class === null) - ? html` - - ${OVERRIDE_DEVICE_CLASSES[domain].map( - (deviceClass: string) => html` - - ${this.hass.localize( - `ui.dialogs.entity_registry.editor.device_classes.${domain}.${deviceClass}` - )} - - ` - )} - - ` + ${OVERRIDE_DEVICE_CLASSES[domain].map( + (deviceClass: string) => html` + + ${this.hass.localize( + `ui.dialogs.entity_registry.editor.device_classes.${domain}.${deviceClass}` + )} + + ` + )} + ` : ""} ): void { + private _deviceClassChanged(ev): void { this._error = undefined; - if (ev.detail.value === null) { - return; - } - this._deviceClass = (ev.detail.value as any).itemValue; + this._deviceClass = ev.target.value; } private _areaPicked(ev: CustomEvent) { @@ -425,7 +417,7 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { padding-bottom: max(env(safe-area-inset-bottom), 8px); background-color: var(--mdc-theme-surface, #fff); } - ha-paper-dropdown-menu { + mwc-select { width: 100%; } ha-switch { diff --git a/src/panels/config/ha-form-style.js b/src/panels/config/ha-form-style.js index df3756b47b..71cf999aab 100644 --- a/src/panels/config/ha-form-style.js +++ b/src/panels/config/ha-form-style.js @@ -22,10 +22,6 @@ documentContainer.innerHTML = ` @apply --layout-vertical; @apply --layout-start; } - - paper-dropdown-menu.form-control { - margin: -9px 0; - } `; diff --git a/src/panels/config/ha-panel-config.ts b/src/panels/config/ha-panel-config.ts index 6511ac47d2..c938ca0975 100644 --- a/src/panels/config/ha-panel-config.ts +++ b/src/panels/config/ha-panel-config.ts @@ -21,8 +21,6 @@ import { mdiTools, mdiViewDashboard, } from "@mdi/js"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-item/paper-item-body"; import { PolymerElement } from "@polymer/polymer"; import { PropertyValues } from "lit"; import { customElement, property, state } from "lit/decorators"; diff --git a/src/panels/config/helpers/dialog-helper-detail.ts b/src/panels/config/helpers/dialog-helper-detail.ts index b94e865f02..eace117eb7 100644 --- a/src/panels/config/helpers/dialog-helper-detail.ts +++ b/src/panels/config/helpers/dialog-helper-detail.ts @@ -2,7 +2,7 @@ import "@material/mwc-button/mwc-button"; import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-tooltip/paper-tooltip"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; -import { customElement, property, state, query } from "lit/decorators"; +import { customElement, property, query, state } from "lit/decorators"; import { classMap } from "lit/directives/class-map"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { dynamicElement } from "../../../common/dom/dynamic-element-directive"; diff --git a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts index 710328c269..93ec82bc7f 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts @@ -1,7 +1,5 @@ import "@material/mwc-button/mwc-button"; import { mdiFolderMultipleOutline, mdiLan, mdiNetwork, mdiPlus } from "@mdi/js"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-item/paper-item-body"; import { css, CSSResultGroup, diff --git a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-logs.ts b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-logs.ts index 6b0d850953..542a492e8f 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-logs.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-logs.ts @@ -1,6 +1,6 @@ +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import { mdiDownload } from "@mdi/js"; -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; -import "@polymer/paper-listbox/paper-listbox"; import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, CSSResultArray, html, LitElement } from "lit"; import { customElement, property, query, state } from "lit/decorators"; @@ -77,26 +77,20 @@ class ZWaveJSLogs extends SubscribeMixin(LitElement) {
${this._logConfig ? html` - - - Error - Warn - Info - Verbose - Debug - Silly - - + Error + Warn + Info + Verbose + Debug + Silly + ` : ""}
@@ -142,7 +136,7 @@ class ZWaveJSLogs extends SubscribeMixin(LitElement) { if (ev.target === undefined || this._logConfig === undefined) { return; } - const selected = ev.target.selected; + const selected = ev.target.value; if (this._logConfig.level === selected) { return; } diff --git a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts index 3dcd84f9aa..4cf083893d 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts @@ -1,13 +1,12 @@ import "@material/mwc-button/mwc-button"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import { mdiCheckCircle, mdiCircle, mdiCloseCircle, mdiProgressClock, } from "@mdi/js"; -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, @@ -287,26 +286,20 @@ class ZWaveJSNodeConfig extends SubscribeMixin(LitElement) { return html` ${labelAndDescription}
- - - ${Object.entries(item.metadata.states).map( - ([key, entityState]) => html` - ${entityState} - ` - )} - - + ${Object.entries(item.metadata.states).map( + ([key, entityState]) => html` + ${entityState} + ` + )} +
`; } @@ -351,12 +344,12 @@ class ZWaveJSNodeConfig extends SubscribeMixin(LitElement) { if (ev.target === undefined || this._config![ev.target.key] === undefined) { return; } - if (this._config![ev.target.key].value === ev.target.selected) { + if (this._config![ev.target.key].value === ev.target.value) { return; } this.setResult(ev.target.key, undefined); - this._updateConfigParameter(ev.target, Number(ev.target.selected)); + this._updateConfigParameter(ev.target, Number(ev.target.value)); } private debouncedUpdate = debounce((target, value) => { @@ -462,7 +455,7 @@ class ZWaveJSNodeConfig extends SubscribeMixin(LitElement) { } .flex .config-label, - .flex paper-dropdown-menu { + .flex mwc-select { flex: 1; } diff --git a/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts b/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts index 9c80495f75..ed04677669 100644 --- a/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts +++ b/src/panels/config/lovelace/resources/dialog-lovelace-resource-detail.ts @@ -1,11 +1,8 @@ import "@material/mwc-button/mwc-button"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import { createCloseHeading } from "../../../../components/ha-dialog"; -import "../../../../components/ha-paper-dropdown-menu"; import { LovelaceResource, LovelaceResourcesMutableParams, @@ -14,6 +11,9 @@ import { PolymerChangedEvent } from "../../../../polymer-types"; import { haStyleDialog } from "../../../../resources/styles"; import { HomeAssistant } from "../../../../types"; import { LovelaceResourceDetailsDialogParams } from "./show-dialog-lovelace-resource-detail"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; +import { stopPropagation } from "../../../../common/dom/stop_propagation"; const detectResourceType = (url: string) => { const ext = url.split(".").pop() || ""; @@ -102,48 +102,44 @@ export class DialogLovelaceResourceDetail extends LitElement { dialogInitialFocus >

- - - - ${this.hass!.localize( - "ui.panel.config.lovelace.resources.types.module" - )} - - ${this._type === "js" - ? html` - - ${this.hass!.localize( - "ui.panel.config.lovelace.resources.types.js" - )} - - ` - : ""} - - ${this.hass!.localize( - "ui.panel.config.lovelace.resources.types.css" - )} - - ${this._type === "html" - ? html` - - ${this.hass!.localize( - "ui.panel.config.lovelace.resources.types.html" - )} - - ` - : ""} - - + + ${this.hass!.localize( + "ui.panel.config.lovelace.resources.types.module" + )} + + ${this._type === "js" + ? html` + + ${this.hass!.localize( + "ui.panel.config.lovelace.resources.types.js" + )} + + ` + : ""} + + ${this.hass!.localize( + "ui.panel.config.lovelace.resources.types.css" + )} + + ${this._type === "html" + ? html` + + ${this.hass!.localize( + "ui.panel.config.lovelace.resources.types.html" + )} + + ` + : ""} +
${this._params.resource @@ -185,8 +181,8 @@ export class DialogLovelaceResourceDetail extends LitElement { } } - private _typeChanged(ev: CustomEvent) { - this._type = ev.detail.item.getAttribute("type"); + private _typeChanged(ev) { + this._type = ev.target.value; } private async _updateResource() { diff --git a/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts b/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts index 9c29684522..b8a9367e06 100644 --- a/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts +++ b/src/panels/config/lovelace/resources/ha-config-lovelace-resources.ts @@ -1,6 +1,4 @@ import { mdiPlus } from "@mdi/js"; -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; -import "@polymer/paper-item/paper-icon-item"; import { html, LitElement, PropertyValues, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import memoize from "memoize-one"; diff --git a/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts index c843f2b52b..c4c974715a 100644 --- a/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-alarm-panel-card-editor.ts @@ -1,11 +1,11 @@ +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import { mdiClose } from "@mdi/js"; -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 { customElement, property, state } from "lit/decorators"; import { array, assert, assign, object, optional, string } from "superstruct"; import { fireEvent } from "../../../../common/dom/fire_event"; +import { stopPropagation } from "../../../../common/dom/stop_propagation"; import "../../../../components/entity/ha-entity-picker"; import "../../../../components/ha-svg-icon"; import { HomeAssistant } from "../../../../types"; @@ -109,18 +109,20 @@ export class HuiAlarmPanelCardEditor ` )} - - - ${states.map( - (entityState) => html` ${entityState} ` - )} - - + ${states.map( + (entityState) => + html`${entityState} ` + )} + - - - ${views.map( - (view) => html` - ${this.hass!.localize( - `ui.panel.lovelace.editor.card.calendar.views.${view}` - )} - - ` - )} - - + ${views.map( + (view) => html` + ${this.hass!.localize( + `ui.panel.lovelace.editor.card.calendar.views.${view}` + )} + + ` + )} +
- - - ${this.hass!.localize( - "ui.panel.lovelace.editor.card.conditional.state_equal" - )} - ${this.hass!.localize( - "ui.panel.lovelace.editor.card.conditional.state_not_equal" - )} - - + + + ${this.hass!.localize( + "ui.panel.lovelace.editor.card.conditional.state_equal" + )} + + + ${this.hass!.localize( + "ui.panel.lovelace.editor.card.conditional.state_not_equal" + )} + + @@ -274,9 +277,9 @@ export class HuiConditionalCardEditor } const conditions = [...this._config.conditions]; if (target.configValue === "entity" && target.value === "") { - conditions.splice(target.index, 1); + conditions.splice(target.idx, 1); } else { - const condition = { ...conditions[target.index] }; + const condition = { ...conditions[target.idx] }; if (target.configValue === "entity") { condition.entity = target.value; } else if (target.configValue === "state") { @@ -286,7 +289,7 @@ export class HuiConditionalCardEditor condition.state = target.value; } } else if (target.configValue === "invert") { - if (target.selected === 1) { + if (target.value === "true") { if (condition.state) { condition.state_not = condition.state; delete condition.state; @@ -296,7 +299,7 @@ export class HuiConditionalCardEditor delete condition.state_not; } } - conditions[target.index] = condition; + conditions[target.idx] = condition; } this._config = { ...this._config, conditions }; fireEvent(this, "config-changed", { config: this._config }); @@ -321,7 +324,7 @@ export class HuiConditionalCardEditor display: flex; align-items: flex-end; } - .condition .state paper-dropdown-menu { + .condition .state mwc-select { margin-right: 16px; } .condition .state paper-input { diff --git a/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts index 0869bb9264..d0558373bd 100644 --- a/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-entities-card-editor.ts @@ -1,6 +1,4 @@ -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-item/paper-item"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import { diff --git a/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts b/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts index 083920c9b5..bc1b534701 100644 --- a/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-generic-entity-row-editor.ts @@ -1,3 +1,5 @@ +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import "@polymer/paper-input/paper-input"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; @@ -99,37 +101,34 @@ export class HuiGenericEntityRowEditor @value-changed=${this._valueChanged} >
- - + ${this.hass!.localize( + "ui.panel.lovelace.editor.card.entities.secondary_info_values.none" + )} - ${this.hass!.localize( - "ui.panel.lovelace.editor.card.entities.secondary_info_values.none" - )} - ${Object.keys(SecondaryInfoValues).map((info) => { - if ( - !("domains" in SecondaryInfoValues[info]) || - ("domains" in SecondaryInfoValues[info] && - SecondaryInfoValues[info].domains!.includes(domain)) - ) { - return html` - ${this.hass!.localize( - `ui.panel.lovelace.editor.card.entities.secondary_info_values.${info}` - )} - `; - } - return ""; - })} - - + ${Object.keys(SecondaryInfoValues).map((info) => { + if ( + !("domains" in SecondaryInfoValues[info]) || + ("domains" in SecondaryInfoValues[info] && + SecondaryInfoValues[info].domains!.includes(domain)) + ) { + return html` + + ${this.hass!.localize( + `ui.panel.lovelace.editor.card.entities.secondary_info_values.${info}` + )} + + `; + } + return ""; + })} + `; } diff --git a/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts index fbdffb08df..aa1ed1eb7b 100644 --- a/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-picture-entity-card-editor.ts @@ -1,11 +1,11 @@ -import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; -import { assert, boolean, object, optional, string, assign } from "superstruct"; +import { assert, assign, boolean, object, optional, string } from "superstruct"; import { fireEvent } from "../../../../common/dom/fire_event"; +import { stopPropagation } from "../../../../common/dom/stop_propagation"; import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import "../../../../components/ha-formfield"; import "../../../../components/ha-switch"; @@ -17,9 +17,9 @@ import "../../components/hui-entity-editor"; import "../../components/hui-theme-select-editor"; import { LovelaceCardEditor } from "../../types"; import { actionConfigStruct } from "../structs/action-struct"; +import { baseLovelaceCardConfig } from "../structs/base-card-struct"; import { EditorTarget } from "../types"; import { configElementStyle } from "./config-elements-style"; -import { baseLovelaceCardConfig } from "../structs/base-card-struct"; const cardConfigStruct = assign( baseLovelaceCardConfig, @@ -155,22 +155,24 @@ export class HuiPictureEntityCardEditor allow-custom-entity >
- - - ${views.map((view) => html` ${view} `)} - - + ${views.map( + (view) => + html`${view} ` + )} +
- - - ${views.map((view) => html` ${view} `)} - - + ${views.map( + (view) => + html`${view} ` + )} + - - - ${graphs.map((graph) => html`${graph}`)} - - + ${graphs.map( + (graph) => + html`${graph}` + )} +
- - - ${periods.map( - (period) => - html` - ${this.hass!.localize( - `ui.panel.lovelace.editor.card.statistics-graph.periods.${period}` - )} - ` - )} - - + ${periods.map( + (period) => + html` + ${this.hass!.localize( + `ui.panel.lovelace.editor.card.statistics-graph.periods.${period}` + )} + ` + )} + ${this._params.allowDashboardChange - ? html` - - - Default - - ${this._dashboards.map((dashboard) => { - if (!this.hass.user!.is_admin && dashboard.require_admin) { - return ""; - } - return html` - ${dashboard.title} - `; - })} - - ` + Default + + ${this._dashboards.map((dashboard) => { + if (!this.hass.user!.is_admin && dashboard.require_admin) { + return ""; + } + return html` + ${dashboard.title} + `; + })} + ` : ""} ${this._config ? this._config.views.length > 1 @@ -111,7 +108,7 @@ export class HuiDialogSelectView extends LitElement { ${this._config.views.map( (view, idx) => html` icon) + .graphic=${this._config?.views.some(({ icon }) => icon) ? "icon" : null} @click=${this._viewChanged} @@ -142,8 +139,8 @@ export class HuiDialogSelectView extends LitElement { this._params!.dashboards || (await fetchDashboards(this.hass)); } - private async _dashboardChanged(ev: CustomEvent) { - let urlPath: string | null = ev.detail.item.urlPath; + private async _dashboardChanged(ev) { + let urlPath: string | null = ev.target.value; if (urlPath === this._urlPath) { return; } @@ -181,7 +178,7 @@ export class HuiDialogSelectView extends LitElement { return [ haStyleDialog, css` - ha-paper-dropdown-menu { + mwc-select { width: 100%; } `, diff --git a/src/panels/lovelace/editor/view-editor/hui-view-editor.ts b/src/panels/lovelace/editor/view-editor/hui-view-editor.ts index 40da6d5d4e..411b7906ef 100644 --- a/src/panels/lovelace/editor/view-editor/hui-view-editor.ts +++ b/src/panels/lovelace/editor/view-editor/hui-view-editor.ts @@ -1,7 +1,10 @@ +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import "@polymer/paper-input/paper-input"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; +import { stopPropagation } from "../../../../common/dom/stop_propagation"; import { slugify } from "../../../../common/string/slugify"; import "../../../../components/ha-formfield"; import "../../../../components/ha-icon-picker"; @@ -121,26 +124,24 @@ export class HuiViewEditor extends LitElement { .configValue=${"theme"} @value-changed=${this._valueChanged} > - - - ${[DEFAULT_VIEW_LAYOUT, SIDEBAR_VIEW_LAYOUT, PANEL_VIEW_LAYOUT].map( - (type) => html` - ${this.hass.localize( - `ui.panel.lovelace.editor.edit_view.types.${type}` - )} - ` - )} - - + ${[DEFAULT_VIEW_LAYOUT, SIDEBAR_VIEW_LAYOUT, PANEL_VIEW_LAYOUT].map( + (type) => html` + ${this.hass.localize( + `ui.panel.lovelace.editor.edit_view.types.${type}` + )} + ` + )} +
`; } @@ -166,7 +167,7 @@ export class HuiViewEditor extends LitElement { } private _typeChanged(ev): void { - const selected = ev.target.selected; + const selected = ev.target.value; if (selected === "") { return; } diff --git a/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts b/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts index 143aa75ecf..d4bb565835 100644 --- a/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts +++ b/src/panels/lovelace/editor/view-editor/hui-view-visibility-editor.ts @@ -1,5 +1,5 @@ -import "@polymer/paper-item/paper-icon-item"; -import "@polymer/paper-item/paper-item-body"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import { css, CSSResultGroup, @@ -68,19 +68,20 @@ export class HuiViewVisibilityEditor extends LitElement {

${this._sortedUsers(this._users).map( (user) => html` - + - ${user.name} + ${user.name} - + ` )} `; diff --git a/src/panels/profile/ha-panel-profile.ts b/src/panels/profile/ha-panel-profile.ts index 4d9b82c42c..a1c7b66ad3 100644 --- a/src/panels/profile/ha-panel-profile.ts +++ b/src/panels/profile/ha-panel-profile.ts @@ -1,8 +1,6 @@ import "@material/mwc-button"; import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-toolbar/app-toolbar"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-item/paper-item-body"; import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { property, state } from "lit/decorators"; diff --git a/src/panels/profile/ha-pick-dashboard-row.ts b/src/panels/profile/ha-pick-dashboard-row.ts index 544c7296cc..9fa0dc057e 100644 --- a/src/panels/profile/ha-pick-dashboard-row.ts +++ b/src/panels/profile/ha-pick-dashboard-row.ts @@ -1,12 +1,11 @@ -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; import { html, LitElement, PropertyValues, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; -import "../../components/ha-paper-dropdown-menu"; import "../../components/ha-settings-row"; import { fetchDashboards, LovelaceDashboard } from "../../data/lovelace"; import { setDefaultPanel } from "../../data/panel"; import { HomeAssistant } from "../../types"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; @customElement("ha-pick-dashboard-row") class HaPickDashboardRow extends LitElement { @@ -30,36 +29,30 @@ class HaPickDashboardRow extends LitElement { ${this.hass.localize("ui.panel.profile.dashboard.description")} - - - ${this.hass.localize( - "ui.panel.profile.dashboard.default_dashboard_label" - )} - ${this._dashboards.map((dashboard) => { - if (!this.hass.user!.is_admin && dashboard.require_admin) { - return ""; - } - return html` - ${dashboard.title} - `; - })} - - + + ${this.hass.localize( + "ui.panel.profile.dashboard.default_dashboard_label" + )} + + ${this._dashboards.map((dashboard) => { + if (!this.hass.user!.is_admin && dashboard.require_admin) { + return ""; + } + return html` + + ${dashboard.title} + + `; + })} + `; } @@ -68,8 +61,8 @@ class HaPickDashboardRow extends LitElement { this._dashboards = await fetchDashboards(this.hass); } - private _dashboardChanged(ev: CustomEvent) { - const urlPath = ev.detail.item.getAttribute("url-path"); + private _dashboardChanged(ev) { + const urlPath = ev.target.value; if (!urlPath || urlPath === this.hass.defaultPanel) { return; } diff --git a/src/panels/profile/ha-pick-language-row.js b/src/panels/profile/ha-pick-language-row.js deleted file mode 100644 index 7cd49a7304..0000000000 --- a/src/panels/profile/ha-pick-language-row.js +++ /dev/null @@ -1,111 +0,0 @@ -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; -import { html } from "@polymer/polymer/lib/utils/html-tag"; -/* eslint-plugin-disable lit */ -import { PolymerElement } from "@polymer/polymer/polymer-element"; -import "../../components/ha-paper-dropdown-menu"; -import "../../components/ha-settings-row"; -import { EventsMixin } from "../../mixins/events-mixin"; -import LocalizeMixin from "../../mixins/localize-mixin"; - -/* - * @appliesMixin LocalizeMixin - * @appliesMixin EventsMixin - */ -class HaPickLanguageRow extends LocalizeMixin(EventsMixin(PolymerElement)) { - static get template() { - return html` - - - [[localize('ui.panel.profile.language.header')]] - - [[localize('ui.panel.profile.language.link_promo')]] - - - - - - - - `; - } - - static get properties() { - return { - hass: Object, - narrow: Boolean, - languageSelection: { - type: String, - observer: "languageSelectionChanged", - }, - languages: { - type: Array, - computed: "computeLanguages(hass)", - }, - }; - } - - static get observers() { - return ["setLanguageSelection(language)"]; - } - - computeLanguages(hass) { - if (!hass || !hass.translationMetadata) { - return []; - } - const translations = hass.translationMetadata.translations; - return Object.keys(translations).map((key) => ({ - key, - ...translations[key], - })); - } - - setLanguageSelection(language) { - this.languageSelection = language; - } - - languageSelectionChanged(newVal) { - // Only fire event if language was changed. This prevents select updates when - // responding to hass changes. - if (newVal !== this.hass.language) { - this.fire("hass-language-select", newVal); - } - } - - ready() { - super.ready(); - if (this.hass && this.hass.locale && this.hass.locale.language) { - this.setLanguageSelection(this.hass.locale.language); - } - } -} - -customElements.define("ha-pick-language-row", HaPickLanguageRow); diff --git a/src/panels/profile/ha-pick-language-row.ts b/src/panels/profile/ha-pick-language-row.ts new file mode 100644 index 0000000000..ced951b463 --- /dev/null +++ b/src/panels/profile/ha-pick-language-row.ts @@ -0,0 +1,87 @@ +import { css, html, LitElement, PropertyValues } from "lit"; +import { customElement, property, state } from "lit/decorators"; +import { fireEvent } from "../../common/dom/fire_event"; +import "../../components/ha-settings-row"; +import { HomeAssistant, Translation } from "../../types"; +import "@material/mwc-select/mwc-select"; +import "@material/mwc-list/mwc-list-item"; + +@customElement("ha-pick-language-row") +export class HaPickLanguageRow extends LitElement { + @property({ attribute: false }) public hass!: HomeAssistant; + + @property() public narrow!: boolean; + + @state() private _languages: (Translation & { key: string })[] = []; + + protected firstUpdated(changedProps: PropertyValues) { + super.firstUpdated(changedProps); + this._computeLanguages(); + } + + protected render() { + return html` + + ${this.hass.localize("ui.panel.profile.language.header")} + + ${this.hass.localize("ui.panel.profile.language.link_promo")} + + + ${this._languages.map( + (language) => html` + ${language.nativeName} + ` + )} + + + `; + } + + private _computeLanguages() { + if (!this.hass.translationMetadata?.translations) { + return; + } + this._languages = Object.keys( + this.hass.translationMetadata.translations + ).map((key) => ({ + key, + ...this.hass.translationMetadata.translations[key], + })); + } + + private _languageSelectionChanged(ev) { + // Only fire event if language was changed. This prevents select updates when + // responding to hass changes. + if (ev.target.value !== this.hass.language) { + fireEvent(this, "hass-language-select", ev.target.value); + } + } + + static styles = css` + a { + color: var(--primary-color); + } + `; +} + +declare global { + interface HTMLElementTagNameMap { + "ha-pick-language-row": HaPickLanguageRow; + } +} diff --git a/src/panels/profile/ha-pick-number-format-row.ts b/src/panels/profile/ha-pick-number-format-row.ts index 13bd937c46..f32ee02dce 100644 --- a/src/panels/profile/ha-pick-number-format-row.ts +++ b/src/panels/profile/ha-pick-number-format-row.ts @@ -1,11 +1,10 @@ -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; import { html, LitElement, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators"; import { fireEvent } from "../../common/dom/fire_event"; import { formatNumber } from "../../common/number/format_number"; import "../../components/ha-card"; -import "../../components/ha-paper-dropdown-menu"; import "../../components/ha-settings-row"; import { NumberFormat } from "../../data/translation"; import { HomeAssistant } from "../../types"; @@ -25,47 +24,39 @@ class NumberFormatRow extends LitElement { ${this.hass.localize("ui.panel.profile.number_format.description")} - - - ${Object.values(NumberFormat).map((format) => { - const formattedNumber = formatNumber(1234567.89, { - ...this.hass.locale, - number_format: format, - }); - const value = this.hass.localize( - `ui.panel.profile.number_format.formats.${format}` - ); - const twoLine = value.slice(value.length - 2) !== "89"; // Display explicit number formats on one line - return html` - - -
${value}
- ${twoLine - ? html`
${formattedNumber}
` - : ""} -
-
- `; - })} -
-
+ ${Object.values(NumberFormat).map((format) => { + const formattedNumber = formatNumber(1234567.89, { + ...this.hass.locale, + number_format: format, + }); + const value = this.hass.localize( + `ui.panel.profile.number_format.formats.${format}` + ); + const twoLine = value.slice(value.length - 2) !== "89"; // Display explicit number formats on one line + return html` + + ${value} + ${twoLine + ? html`${formattedNumber}` + : ""} + + `; + })} + `; } - private async _handleFormatSelection(ev: CustomEvent) { - fireEvent(this, "hass-number-format-select", ev.detail.item.format); + private async _handleFormatSelection(ev) { + fireEvent(this, "hass-number-format-select", ev.target.value); } } diff --git a/src/panels/profile/ha-pick-theme-row.ts b/src/panels/profile/ha-pick-theme-row.ts index 7f55bb8bb8..214cc20515 100644 --- a/src/panels/profile/ha-pick-theme-row.ts +++ b/src/panels/profile/ha-pick-theme-row.ts @@ -1,7 +1,5 @@ import "@material/mwc-button/mwc-button"; import "@polymer/paper-input/paper-input"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; import { css, CSSResultGroup, @@ -13,7 +11,6 @@ import { import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../common/dom/fire_event"; import "../../components/ha-formfield"; -import "../../components/ha-paper-dropdown-menu"; import "../../components/ha-radio"; import type { HaRadio } from "../../components/ha-radio"; import "../../components/ha-settings-row"; @@ -23,6 +20,8 @@ import { } from "../../resources/ha-style"; import { HomeAssistant } from "../../types"; import { documentationUrl } from "../../util/documentation-url"; +import "@material/mwc-select/mwc-select"; +import "@material/mwc-list/mwc-list-item"; @customElement("ha-pick-theme-row") export class HaPickThemeRow extends LitElement { @@ -63,22 +62,17 @@ export class HaPickThemeRow extends LitElement { ${this.hass.localize("ui.panel.profile.themes.link_promo")} - - - ${this._themeNames.map( - (theme) => html`${theme}` - )} - - + ${this._themeNames.map( + (theme) => + html`${theme}` + )} + ${curTheme === "default" || this._supportsModeSelection(curTheme) ? html`
@@ -91,7 +85,7 @@ export class HaPickThemeRow extends LitElement { @change=${this._handleDarkMode} name="dark_mode" value="auto" - ?checked=${themeSettings?.dark === undefined} + .checked=${themeSettings?.dark === undefined} > @@ -116,7 +110,7 @@ export class HaPickThemeRow extends LitElement { @change=${this._handleDarkMode} name="dark_mode" value="dark" - ?checked=${themeSettings?.dark === true} + .checked=${themeSettings?.dark === true} > @@ -195,8 +189,8 @@ export class HaPickThemeRow extends LitElement { fireEvent(this, "settheme", { dark }); } - private _handleThemeSelection(ev: CustomEvent) { - const theme = ev.detail.item.theme; + private _handleThemeSelection(ev) { + const theme = ev.target.value; if (theme === "Backend-selected") { if (this.hass.selectedTheme?.theme) { fireEvent(this, "settheme", { diff --git a/src/panels/profile/ha-pick-time-format-row.ts b/src/panels/profile/ha-pick-time-format-row.ts index 686c186d17..5f68076f2a 100644 --- a/src/panels/profile/ha-pick-time-format-row.ts +++ b/src/panels/profile/ha-pick-time-format-row.ts @@ -1,14 +1,13 @@ -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-listbox/paper-listbox"; import { html, LitElement, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators"; import { formatTime } from "../../common/datetime/format_time"; import { fireEvent } from "../../common/dom/fire_event"; import "../../components/ha-card"; -import "../../components/ha-paper-dropdown-menu"; import "../../components/ha-settings-row"; import { TimeFormat } from "../../data/translation"; import { HomeAssistant } from "../../types"; +import "@material/mwc-list/mwc-list-item"; +import "@material/mwc-select/mwc-select"; @customElement("ha-pick-time-format-row") class TimeFormatRow extends LitElement { @@ -26,42 +25,34 @@ class TimeFormatRow extends LitElement { ${this.hass.localize("ui.panel.profile.time_format.description")} - - - ${Object.values(TimeFormat).map((format) => { - const formattedTime = formatTime(date, { - ...this.hass.locale, - time_format: format, - }); - const value = this.hass.localize( - `ui.panel.profile.time_format.formats.${format}` - ); - return html` - -
${value}
-
${formattedTime}
-
-
`; - })} -
-
+ ${Object.values(TimeFormat).map((format) => { + const formattedTime = formatTime(date, { + ...this.hass.locale, + time_format: format, + }); + const value = this.hass.localize( + `ui.panel.profile.time_format.formats.${format}` + ); + return html` + ${value} + ${formattedTime} + `; + })} + `; } - private async _handleFormatSelection(ev: CustomEvent) { - fireEvent(this, "hass-time-format-select", ev.detail.item.format); + private async _handleFormatSelection(ev) { + fireEvent(this, "hass-time-format-select", ev.target.value); } }