import "@material/mwc-button"; import "../../components/ha-circular-progress"; import "@polymer/paper-tooltip/paper-tooltip"; import { css, CSSResultArray, customElement, html, LitElement, property, PropertyValues, TemplateResult, } from "lit-element"; import { fireEvent } from "../../common/dom/fire_event"; import "../../components/ha-form/ha-form"; import type { HaFormSchema } from "../../components/ha-form/ha-form"; import "../../components/ha-markdown"; import type { DataEntryFlowStepForm } from "../../data/data_entry_flow"; import type { HomeAssistant } from "../../types"; import type { FlowConfig } from "./show-dialog-data-entry-flow"; import { configFlowContentStyles } from "./styles"; @customElement("step-flow-form") class StepFlowForm extends LitElement { public flowConfig!: FlowConfig; @property() public step!: DataEntryFlowStepForm; @property() public hass!: HomeAssistant; @property() private _loading = false; @property() private _stepData?: { [key: string]: any }; @property() private _errorMsg?: string; protected render(): TemplateResult { const step = this.step; const stepData = this._stepDataProcessed; const allRequiredInfoFilledIn = stepData === undefined ? // If no data filled in, just check that any field is required step.data_schema.find((field) => !field.optional) === undefined : // If data is filled in, make sure all required fields are stepData && step.data_schema.every( (field) => field.optional || !["", undefined].includes(stepData![field.name]) ); return html`