fix(core): update
This commit is contained in:
		@@ -7,7 +7,9 @@ import { DeesInputRadio } from './dees-input-radio';
 | 
			
		||||
import * as domtools from '@designestate/dees-domtools';
 | 
			
		||||
import { DeesFormSubmit } from './dees-form-submit';
 | 
			
		||||
 | 
			
		||||
export type TFormElement = Array<DeesInputCheckbox | DeesInputText | DeesInputQuantitySelector | DeesInputRadio>;
 | 
			
		||||
export type TFormElement = Array<
 | 
			
		||||
  DeesInputCheckbox | DeesInputText | DeesInputQuantitySelector | DeesInputRadio
 | 
			
		||||
>;
 | 
			
		||||
 | 
			
		||||
declare global {
 | 
			
		||||
  interface HTMLElementTagNameMap {
 | 
			
		||||
@@ -18,18 +20,25 @@ declare global {
 | 
			
		||||
@customElement('dees-form')
 | 
			
		||||
export class DeesForm extends DeesElement {
 | 
			
		||||
  public static demo = () => html`
 | 
			
		||||
    <dees-form style="display: block; margin:auto; max-width: 500px; padding: 20px" @formData=${async (eventArg) => {
 | 
			
		||||
      const form: DeesForm = eventArg.currentTarget;
 | 
			
		||||
      form.setStatus('pending', 'authenticating...');
 | 
			
		||||
      await domtools.plugins.smartdelay.delayFor(1000);
 | 
			
		||||
      form.setStatus('success', 'authenticated!');
 | 
			
		||||
    }}>
 | 
			
		||||
    <dees-form
 | 
			
		||||
      style="display: block; margin:auto; max-width: 500px; padding: 20px"
 | 
			
		||||
      @formData=${async (eventArg) => {
 | 
			
		||||
        const form: DeesForm = eventArg.currentTarget;
 | 
			
		||||
        form.setStatus('pending', 'authenticating...');
 | 
			
		||||
        await domtools.plugins.smartdelay.delayFor(1000);
 | 
			
		||||
        form.setStatus('success', 'authenticated!');
 | 
			
		||||
      }}
 | 
			
		||||
    >
 | 
			
		||||
      <dees-input-text .required="${true}" key="hello1" label="a text"></dees-input-text>
 | 
			
		||||
      <dees-input-text .required="${true}" key="hello2" label="also a text"></dees-input-text>
 | 
			
		||||
      <dees-input-checkbox .required="${true}" key="hello3" label="another text"></dees-input-checkbox>
 | 
			
		||||
      <dees-input-checkbox
 | 
			
		||||
        .required="${true}"
 | 
			
		||||
        key="hello3"
 | 
			
		||||
        label="another text"
 | 
			
		||||
      ></dees-input-checkbox>
 | 
			
		||||
      <dees-form-submit>Submit</dees-form-submit>
 | 
			
		||||
    </dees-form>
 | 
			
		||||
    `;
 | 
			
		||||
  `;
 | 
			
		||||
 | 
			
		||||
  public name: string = 'myform';
 | 
			
		||||
  public changeSubject = new domtools.rxjs.Subject();
 | 
			
		||||
@@ -61,9 +70,13 @@ export class DeesForm extends DeesElement {
 | 
			
		||||
  public getFormChildren() {
 | 
			
		||||
    const children: Array<DeesElement> = this.children as any;
 | 
			
		||||
    const formChildren: TFormElement = [];
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    for (const child of children) {
 | 
			
		||||
      if (child instanceof DeesInputCheckbox || child instanceof DeesInputText || child instanceof DeesInputQuantitySelector) {
 | 
			
		||||
      if (
 | 
			
		||||
        child instanceof DeesInputCheckbox ||
 | 
			
		||||
        child instanceof DeesInputText ||
 | 
			
		||||
        child instanceof DeesInputQuantitySelector
 | 
			
		||||
      ) {
 | 
			
		||||
        formChildren.push(child);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -74,7 +87,7 @@ export class DeesForm extends DeesElement {
 | 
			
		||||
    const children: Array<DeesElement> = this.children as any;
 | 
			
		||||
    let submitButton: DeesFormSubmit;
 | 
			
		||||
    for (const childArg of children) {
 | 
			
		||||
      if(childArg instanceof DeesFormSubmit) {
 | 
			
		||||
      if (childArg instanceof DeesFormSubmit) {
 | 
			
		||||
        submitButton = childArg;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -82,9 +95,8 @@ export class DeesForm extends DeesElement {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async checkRequiredStatus() {
 | 
			
		||||
    console.log('checking the required status.')
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    console.log('checking the required status.');
 | 
			
		||||
 | 
			
		||||
    let requiredOK = true;
 | 
			
		||||
    for (const childArg of this.getFormChildren()) {
 | 
			
		||||
      if (childArg.required && !childArg.value) {
 | 
			
		||||
@@ -96,7 +108,7 @@ export class DeesForm extends DeesElement {
 | 
			
		||||
 | 
			
		||||
  public async gatherData() {
 | 
			
		||||
    const children = this.getFormChildren();
 | 
			
		||||
    const valueObject: { [key: string]: string | number | boolean} = {};
 | 
			
		||||
    const valueObject: { [key: string]: string | number | boolean } = {};
 | 
			
		||||
    for (const child of children) {
 | 
			
		||||
      valueObject[child.key] = child.value;
 | 
			
		||||
    }
 | 
			
		||||
@@ -107,20 +119,23 @@ export class DeesForm extends DeesElement {
 | 
			
		||||
    const valueObject = await this.gatherData();
 | 
			
		||||
    const formDataEvent = new CustomEvent('formData', {
 | 
			
		||||
      detail: {
 | 
			
		||||
        data: valueObject
 | 
			
		||||
        data: valueObject,
 | 
			
		||||
      },
 | 
			
		||||
      bubbles: true
 | 
			
		||||
      bubbles: true,
 | 
			
		||||
    });
 | 
			
		||||
    this.dispatchEvent(formDataEvent);
 | 
			
		||||
    console.log('dispatched data:')
 | 
			
		||||
    console.log('dispatched data:');
 | 
			
		||||
    console.log(valueObject);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public setStatus (visualStateArg: 'normal' | 'pending' | 'error' | 'success', textStateArg: string) {
 | 
			
		||||
  public setStatus(
 | 
			
		||||
    visualStateArg: 'normal' | 'pending' | 'error' | 'success',
 | 
			
		||||
    textStateArg: string
 | 
			
		||||
  ) {
 | 
			
		||||
    const inputChildren = this.getFormChildren();
 | 
			
		||||
    const submitButton = this.getSubmitButton();
 | 
			
		||||
 | 
			
		||||
    switch(visualStateArg) {
 | 
			
		||||
    switch (visualStateArg) {
 | 
			
		||||
      case 'pending':
 | 
			
		||||
        submitButton.disabled = true;
 | 
			
		||||
        submitButton.status = 'pending';
 | 
			
		||||
@@ -135,9 +150,15 @@ export class DeesForm extends DeesElement {
 | 
			
		||||
          inputChild.disabled = true;
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
      case 'error':
 | 
			
		||||
        submitButton.disabled = true;
 | 
			
		||||
        submitButton.status = 'error';
 | 
			
		||||
        for (const inputChild of inputChildren) {
 | 
			
		||||
          inputChild.disabled = true;
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    submitButton.text = textStateArg;
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user