import { customElement, html, TemplateResult, LitElement } from 'lit-element'; import { DeesInputCheckbox } from './dees-input-checkbox'; import { DeesInputText } from './dees-input-text'; import { DeesInputQuantitySelector } from './dees-input-quantityselector'; import { DeesInputRadio } from './dees-input-radio'; @customElement('dees-form') export class DeesForm extends LitElement { public static demo = () => html` Submit `; public name: string = 'myform'; public render(): TemplateResult { return html` `; } public async gatherAndDispatch() { const children: Array = this.children as any; const valueObject: { [key: string]: string | number | boolean} = {}; for (const child of children) { if (child instanceof DeesInputCheckbox || child instanceof DeesInputText || child instanceof DeesInputQuantitySelector) { valueObject[child.key] = child.value; } } console.log(valueObject); const formDataEvent = new CustomEvent('formData', { detail: { data: valueObject }, bubbles: true }); this.dispatchEvent(formDataEvent); } }