mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-18 23:06:40 +00:00
Fixes for brightness automation action (#5003)
* Fixes for brightness * Add checbox before optional range integer * Console * Comments
This commit is contained in:
parent
d7aaed05b7
commit
b72a3361c0
@ -5,6 +5,8 @@ import {
|
||||
property,
|
||||
TemplateResult,
|
||||
query,
|
||||
CSSResult,
|
||||
css,
|
||||
} from "lit-element";
|
||||
import {
|
||||
HaFormElement,
|
||||
@ -19,13 +21,14 @@ import "@polymer/paper-input/paper-input";
|
||||
// tslint:disable-next-line
|
||||
import { PaperInputElement } from "@polymer/paper-input/paper-input";
|
||||
import { PaperSliderElement } from "@polymer/paper-slider/paper-slider";
|
||||
import { HaCheckbox } from "../ha-checkbox";
|
||||
|
||||
@customElement("ha-form-integer")
|
||||
export class HaFormInteger extends LitElement implements HaFormElement {
|
||||
@property() public schema!: HaFormIntegerSchema;
|
||||
@property() public data!: HaFormIntegerData;
|
||||
@property() public label!: string;
|
||||
@property() public suffix!: string;
|
||||
@property() public data?: HaFormIntegerData;
|
||||
@property() public label?: string;
|
||||
@property() public suffix?: string;
|
||||
@query("paper-input ha-paper-slider") private _input?: HTMLElement;
|
||||
|
||||
public focus() {
|
||||
@ -39,20 +42,31 @@ export class HaFormInteger extends LitElement implements HaFormElement {
|
||||
? html`
|
||||
<div>
|
||||
${this.label}
|
||||
<div class="flex">
|
||||
${this.schema.optional && this.schema.default === undefined
|
||||
? html`
|
||||
<ha-checkbox
|
||||
@change=${this._handleCheckboxChange}
|
||||
.checked=${this.data !== undefined}
|
||||
></ha-checkbox>
|
||||
`
|
||||
: ""}
|
||||
<ha-paper-slider
|
||||
pin=""
|
||||
.value=${this._value}
|
||||
.min=${this.schema.valueMin}
|
||||
.max=${this.schema.valueMax}
|
||||
.disabled=${this.data === undefined}
|
||||
@value-changed=${this._valueChanged}
|
||||
></ha-paper-slider>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
: html`
|
||||
<paper-input
|
||||
type="number"
|
||||
.label=${this.label}
|
||||
.value=${this.data}
|
||||
.value=${this._value}
|
||||
.required=${this.schema.required}
|
||||
.autoValidate=${this.schema.required}
|
||||
@value-changed=${this._valueChanged}
|
||||
@ -61,7 +75,14 @@ export class HaFormInteger extends LitElement implements HaFormElement {
|
||||
}
|
||||
|
||||
private get _value() {
|
||||
return this.data || 0;
|
||||
return this.data || this.schema.default || 0;
|
||||
}
|
||||
|
||||
private _handleCheckboxChange(ev: Event) {
|
||||
const checked = (ev.target as HaCheckbox).checked;
|
||||
fireEvent(this, "value-changed", {
|
||||
value: checked ? this._value : undefined,
|
||||
});
|
||||
}
|
||||
|
||||
private _valueChanged(ev: Event) {
|
||||
@ -75,6 +96,14 @@ export class HaFormInteger extends LitElement implements HaFormElement {
|
||||
value,
|
||||
});
|
||||
}
|
||||
|
||||
static get styles(): CSSResult {
|
||||
return css`
|
||||
.flex {
|
||||
display: flex;
|
||||
}
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
declare global {
|
||||
|
@ -95,7 +95,7 @@ export interface HaFormTimeData {
|
||||
|
||||
export interface HaFormElement extends LitElement {
|
||||
schema: HaFormSchema;
|
||||
data: HaFormDataContainer | HaFormData;
|
||||
data?: HaFormDataContainer | HaFormData;
|
||||
label?: string;
|
||||
suffix?: string;
|
||||
}
|
||||
|
@ -18,6 +18,11 @@ class HaPaperSlider extends PaperSliderClass {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.disabled.ring > .slider-knob > .slider-knob-inner {
|
||||
background-color: var(--paper-slider-disabled-knob-color, var(--paper-grey-400));
|
||||
border: 2px solid var(--paper-slider-disabled-knob-color, var(--paper-grey-400));
|
||||
}
|
||||
|
||||
.pin > .slider-knob > .slider-knob-inner::before {
|
||||
top: unset;
|
||||
margin-left: unset;
|
||||
|
@ -66,7 +66,7 @@ export const fetchDeviceTriggerCapabilities = (
|
||||
trigger,
|
||||
});
|
||||
|
||||
const whitelist = ["above", "below", "code", "for"];
|
||||
const whitelist = ["above", "below", "brightness", "code", "for"];
|
||||
|
||||
export const deviceAutomationsEqual = (
|
||||
a: DeviceAutomation,
|
||||
|
@ -10,6 +10,7 @@ import {
|
||||
import { LitElement, customElement, property, html } from "lit-element";
|
||||
import { fireEvent } from "../../../../../common/dom/fire_event";
|
||||
import { HomeAssistant } from "../../../../../types";
|
||||
import memoizeOne from "memoize-one";
|
||||
|
||||
@customElement("ha-automation-action-device_id")
|
||||
export class HaDeviceAction extends LitElement {
|
||||
@ -27,14 +28,20 @@ export class HaDeviceAction extends LitElement {
|
||||
};
|
||||
}
|
||||
|
||||
private _extraFieldsData = memoizeOne((capabilities, action: DeviceAction) =>
|
||||
capabilities && capabilities.extra_fields
|
||||
? capabilities.extra_fields.map((item) => {
|
||||
return { [item.name]: action[item.name] };
|
||||
})
|
||||
: undefined
|
||||
);
|
||||
|
||||
protected render() {
|
||||
const deviceId = this._deviceId || this.action.device_id;
|
||||
const extraFieldsData =
|
||||
this._capabilities && this._capabilities.extra_fields
|
||||
? this._capabilities.extra_fields.map((item) => {
|
||||
return { [item.name]: this.action[item.name] };
|
||||
})
|
||||
: undefined;
|
||||
const extraFieldsData = this._extraFieldsData(
|
||||
this._capabilities,
|
||||
this.action
|
||||
);
|
||||
|
||||
return html`
|
||||
<ha-device-picker
|
||||
@ -82,10 +89,8 @@ export class HaDeviceAction extends LitElement {
|
||||
}
|
||||
|
||||
private async _getCapabilities() {
|
||||
const action = this.action;
|
||||
|
||||
this._capabilities = action.domain
|
||||
? await fetchDeviceActionCapabilities(this.hass, action)
|
||||
this._capabilities = this.action.domain
|
||||
? await fetchDeviceActionCapabilities(this.hass, this.action)
|
||||
: null;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user