import * as React from 'react'; import { VField } from './vField'; import { VArr } from './vArr'; import { VSubmit } from './vSubmit'; import { uid } from 'tonva-react-form'; export abstract class VBand { protected label: string; protected view = () =>
; constructor(label:string) { this.label = label; } render():JSX.Element { //text-sm-right return
{this.renderContent()}
; } setAddRow(addRow:()=>Promise) {} get key() {return this.label} public getVFields():VField[] {return;} public getVArr():VArr {return;} public getVSubmit():VSubmit {return;} protected renderContent():JSX.Element { return
content
; } } export interface FieldRes { label: string; placeHolder: string; suffix: string; } export class VFieldBand extends VBand { protected vField:VField; constructor(label:string, vField:VField) { super(label); this.vField = vField; } get key() {return this.vField.name} public getVFields():VField[] {return [this.vField];} protected renderContent():JSX.Element { return this.vField.render(); /*
{this.vField.render()}
;*/ } } export class VArrBand extends VBand { protected vArr:VArr; constructor(label:string, vArr:VArr) { super(label); this.vArr = vArr; } setAddRow(addRow:()=>Promise) {this.vArr.setAddRow(addRow)} get key() {return this.vArr.name} public getVArr():VArr {return this.vArr;} render():JSX.Element { return {this.vArr && this.vArr.render()} ; } } export class VFieldsBand extends VBand { protected vFields: VField[]; constructor(label:string, vFields:VField[]) { super(label); this.vFields = vFields; } get key() {return this.vFields[0].name} public getVFields():VField[] {return this.vFields;} protected renderContent():JSX.Element { return
fields
; } } export class VSubmitBand extends VBand { protected vSubmit: VSubmit; constructor(vSubmit:VSubmit) { super(undefined); this.vSubmit = vSubmit; } get key() {return '$submit'} public getVSubmit():VSubmit {return this.vSubmit;} render():JSX.Element { return
{this.vSubmit.render()}
; } }