diff --git a/setup.py b/setup.py index a1add8ada4..a6770e4a10 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="home-assistant-frontend", - version="20190218.0", + version="20190219.0", description="The Home Assistant frontend", url="https://github.com/home-assistant/home-assistant-polymer", author="The Home Assistant Authors", diff --git a/src/common/entity/domain_icon.ts b/src/common/entity/domain_icon.ts index 5c6ac2a181..9971b9e66c 100644 --- a/src/common/entity/domain_icon.ts +++ b/src/common/entity/domain_icon.ts @@ -28,6 +28,7 @@ const fixedIcons = { light: "hass:lightbulb", mailbox: "hass:mailbox", notify: "hass:comment-alert", + person: "hass:account", plant: "hass:flower", proximity: "hass:apple-safari", remote: "hass:remote", diff --git a/src/components/entity/ha-entities-picker.ts b/src/components/entity/ha-entities-picker.ts index 5fe0720c95..684ef67dc1 100644 --- a/src/components/entity/ha-entities-picker.ts +++ b/src/components/entity/ha-entities-picker.ts @@ -22,9 +22,10 @@ import { HassEntity } from "home-assistant-js-websocket"; class HaEntitiesPickerLight extends LitElement { @property() public hass?: HomeAssistant; @property() public value?: string[]; - @property() public domainFilter?: string; - @property() public pickedEntityLabel?: string; - @property() public pickEntityLabel?: string; + @property({ attribute: "domain-filter" }) public domainFilter?: string; + @property({ attribute: "picked-entity-label" }) + public pickedEntityLabel?: string; + @property({ attribute: "pick-entity-label" }) public pickEntityLabel?: string; protected render(): TemplateResult | void { if (!this.hass) { diff --git a/src/components/entity/ha-entity-picker.ts b/src/components/entity/ha-entity-picker.ts index 3b5bf7ed88..53f0b74db2 100644 --- a/src/components/entity/ha-entity-picker.ts +++ b/src/components/entity/ha-entity-picker.ts @@ -55,11 +55,12 @@ const rowRenderer = ( class HaEntityPicker extends LitElement { @property({ type: Boolean }) public autofocus?: boolean; @property({ type: Boolean }) public disabled?: boolean; - @property({ type: Boolean }) public allowCustomEntity; + @property({ type: Boolean, attribute: "allow-custom-entity" }) + public allowCustomEntity; @property() public hass?: HomeAssistant; @property() public label?: string; @property() public value?: string; - @property() public domainFilter?: string; + @property({ attribute: "domain-filter" }) public domainFilter?: string; @property() public entityFilter?: HaEntityPickerEntityFilterFunc; @property({ type: Boolean }) private _opened?: boolean; @property() private _hass?: HomeAssistant; diff --git a/src/dialogs/more-info/controls/more-info-climate.js b/src/dialogs/more-info/controls/more-info-climate.js index 27d29d228b..eac739b482 100644 --- a/src/dialogs/more-info/controls/more-info-climate.js +++ b/src/dialogs/more-info/controls/more-info-climate.js @@ -227,7 +227,7 @@ class MoreInfoClimate extends LocalizeMixin(EventsMixin(PolymerElement)) { items="[[stateObj.attributes.fan_list]]" on-dom-change="handleFanListUpdate" > - [[item]] + [[_localizeFanMode(localize, item)]] @@ -553,6 +553,10 @@ class MoreInfoClimate extends LocalizeMixin(EventsMixin(PolymerElement)) { _localizeOperationMode(localize, mode) { return localize(`state.climate.${mode}`) || mode; } + + _localizeFanMode(localize, mode) { + return localize(`state_attributes.climate.fan_mode.${mode}`) || mode; + } } customElements.define("more-info-climate", MoreInfoClimate); diff --git a/src/panels/config/area_registry/ha-config-area-registry.ts b/src/panels/config/area_registry/ha-config-area-registry.ts index dbca7d6ba9..76cb01757b 100644 --- a/src/panels/config/area_registry/ha-config-area-registry.ts +++ b/src/panels/config/area_registry/ha-config-area-registry.ts @@ -27,6 +27,8 @@ import { showAreaRegistryDetailDialog, loadAreaRegistryDetailDialog, } from "./show-dialog-area-registry-detail"; +import { classMap } from "lit-html/directives/class-map"; +import { computeRTL } from "../../../common/util/compute_rtl"; class HaConfigAreaRegistry extends LitElement { public hass?: HomeAssistant; @@ -48,20 +50,25 @@ class HaConfigAreaRegistry extends LitElement { `; } return html` - + ${this.hass.localize("ui.panel.config.area_registry.picker.header")} - Areas are used to organize where devices are. This information will - be used throughout Home Assistant to help you in organizing your - interface, permissions and integrations with other systems. + ${this.hass.localize( + "ui.panel.config.area_registry.picker.introduction" + )}

- To place devices in an area, navigate to - the integrations page and then - click on a configured integration to get to the device cards. + ${this.hass.localize( + "ui.panel.config.area_registry.picker.introduction2" + )}

+
${this._items.map((entry) => { @@ -94,8 +101,13 @@ class HaConfigAreaRegistry extends LitElement { `; } @@ -188,6 +200,17 @@ All devices in this area will become unassigned.`) bottom: 24px; right: 24px; } + + paper-fab.rtl { + right: auto; + left: 16px; + } + + paper-fab[is-wide].rtl { + bottom: 24px; + right: auto; + left: 24px; + } `; } } diff --git a/src/panels/config/automation/ha-automation-editor.ts b/src/panels/config/automation/ha-automation-editor.ts index 65abc4bcda..93d1ab71ce 100644 --- a/src/panels/config/automation/ha-automation-editor.ts +++ b/src/panels/config/automation/ha-automation-editor.ts @@ -110,6 +110,9 @@ class HaAutomationEditor extends LitElement { "ui.panel.config.automation.editor.save" )}" @click=${this._saveAutomation} + class="${classMap({ + rtl: computeRTL(this.hass), + })}" > `; @@ -280,6 +283,17 @@ class HaAutomationEditor extends LitElement { paper-fab[dirty] { margin-bottom: 0; } + + paper-fab.rtl { + right: auto; + left: 16px; + } + + paper-fab[is-wide].rtl { + bottom: 24px; + right: auto; + left: 24px; + } `, ]; } diff --git a/src/panels/config/automation/ha-automation-picker.js b/src/panels/config/automation/ha-automation-picker.js index d2dcbff6a3..f7cb80df7f 100644 --- a/src/panels/config/automation/ha-automation-picker.js +++ b/src/panels/config/automation/ha-automation-picker.js @@ -8,7 +8,6 @@ import "@polymer/paper-item/paper-item"; import { html } from "@polymer/polymer/lib/utils/html-tag"; import { PolymerElement } from "@polymer/polymer/polymer-element"; -import "../../../components/ha-markdown"; import "../../../layouts/ha-app-layout"; import "../ha-config-section"; @@ -16,6 +15,8 @@ import "../ha-config-section"; import NavigateMixin from "../../../mixins/navigate-mixin"; import LocalizeMixin from "../../../mixins/localize-mixin"; import computeStateName from "../../../common/entity/compute_state_name"; +import { computeRTL } from "../../../common/util/compute_rtl"; + /* * @appliesMixin LocalizeMixin * @appliesMixin NavigateMixin @@ -44,12 +45,19 @@ class HaAutomationPicker extends LocalizeMixin(NavigateMixin(PolymerElement)) { right: 24px; } - a { - color: var(--primary-color); + paper-fab[rtl] { + right: auto; + left: 16px; } - ha-markdown p { - margin: 0px; + paper-fab[rtl][is-wide] { + bottom: 24px; + right: auto; + left: 24px; + } + + a { + color: var(--primary-color); } @@ -71,9 +79,10 @@ class HaAutomationPicker extends LocalizeMixin(NavigateMixin(PolymerElement)) { [[localize('ui.panel.config.automation.picker.header')]]
- + [[localize('ui.panel.config.automation.picker.introduction')]] +
`; @@ -131,6 +141,12 @@ class HaAutomationPicker extends LocalizeMixin(NavigateMixin(PolymerElement)) { isWide: { type: Boolean, }, + + rtl: { + type: Boolean, + reflectToAttribute: true, + computed: "_computeRTL(hass)", + }, }; } @@ -158,6 +174,10 @@ class HaAutomationPicker extends LocalizeMixin(NavigateMixin(PolymerElement)) { _backTapped() { history.back(); } + + _computeRTL(hass) { + return computeRTL(hass); + } } customElements.define("ha-automation-picker", HaAutomationPicker); diff --git a/src/panels/config/entity_registry/ha-config-entity-registry.ts b/src/panels/config/entity_registry/ha-config-entity-registry.ts index fb32443e3f..016f03e995 100644 --- a/src/panels/config/entity_registry/ha-config-entity-registry.ts +++ b/src/panels/config/entity_registry/ha-config-entity-registry.ts @@ -51,7 +51,11 @@ class HaConfigEntityRegistry extends LitElement { `; } return html` - + ${this.hass.localize( @@ -59,14 +63,16 @@ class HaConfigEntityRegistry extends LitElement { )} - Home Assistant keeps a registry of every entity it has ever seen - that can be uniquely identified. Each of these entities will have an - entity ID assigned which will be reserved for just this entity. + ${this.hass.localize( + "ui.panel.config.entity_registry.picker.introduction" + )}

- Use the entity registry to override the name, change the entity ID - or remove the entry from Home Assistant. Note, removing the entity - registry entry won't remove the entity. To do that, remove it from - the integrations page. + ${this.hass.localize( + "ui.panel.config.entity_registry.picker.introduction2" + )} +

diff --git a/src/panels/config/js/automation.js b/src/panels/config/js/automation.js index 4c16a8cf52..5c7304c8f6 100644 --- a/src/panels/config/js/automation.js +++ b/src/panels/config/js/automation.js @@ -3,7 +3,6 @@ import { h, Component } from "preact"; import "@polymer/paper-card/paper-card"; import "@polymer/paper-input/paper-input"; import "../ha-config-section"; -import "../../../components/ha-markdown"; import Trigger from "./trigger/index"; import Condition from "./condition/index"; @@ -68,11 +67,14 @@ export default class Automation extends Component { {localize("ui.panel.config.automation.editor.triggers.header")} - + {localize( "ui.panel.config.automation.editor.triggers.introduction" )} - /> +

+ + +
- + {localize( "ui.panel.config.automation.editor.conditions.introduction" )} - /> +

+ + +
- + {localize( "ui.panel.config.automation.editor.actions.introduction" )} - /> +

+ + +