aot-formio-export
Version:
111 lines (93 loc) • 3.32 kB
JavaScript
import TextFieldComponent from './textfield';
import TextAreaComponent from './textarea';
import EmailComponent from './email';
import PasswordComponent from './password';
import PhoneNumberComponent from './phonenumber';
import NumberComponent from './number';
import CurrencyComponent from './currency';
import DateTimeComponent from './datetime';
import DayComponent from './day';
import TimeComponent from './time';
import AddressComponent from './address';
import CheckBoxComponent from './checkbox';
import RadioComponent from './radio';
import SelectBoxesComponent from './selectboxes';
import SelectComponent from './select';
import ResourceComponent from './resource';
import SurveyComponent from './survey';
import FileComponent from './file';
import SignatureComponent from './signature';
import ContainerComponent from './container';
import DataGridComponent from './datagrid';
import EditGridComponent from './editgrid';
import FormComponent from './form';
import HtmlComponent from './html';
import ContentComponent from './content';
import ColumnsComponent from './columns';
import PanelComponent from './panel';
import FieldSetComponent from './fieldset';
import WellComponent from './well';
import UnknownComponent from './unknown';
const FormioComponent = {
textfield: TextFieldComponent,
textarea: TextAreaComponent,
email: EmailComponent,
password: PasswordComponent,
phoneNumber: PhoneNumberComponent,
number: NumberComponent,
currency: CurrencyComponent,
datetime: DateTimeComponent,
day: DayComponent,
time: TimeComponent,
address: AddressComponent,
checkbox: CheckBoxComponent,
radio: RadioComponent,
selectboxes: SelectBoxesComponent,
select: SelectComponent,
resource: ResourceComponent,
survey: SurveyComponent,
file: FileComponent,
signature: SignatureComponent,
container: ContainerComponent,
datagrid: DataGridComponent,
editgrid: EditGridComponent,
columns: ColumnsComponent,
panel: PanelComponent,
fieldset: FieldSetComponent,
unknown: UnknownComponent,
well: WellComponent,
form: FormComponent,
content: ContentComponent,
html: HtmlComponent,
create: (component, data, options) => {
let c = null;
if (!component) {
return null;
} else if (FormioComponent.hasOwnProperty(component.type)) {
c = new FormioComponent[component.type](component, data, options);
} else {
c = new UnknownComponent(component, data, options);
}
if (data != null && component.type !== 'form' &&
component.conditional !== undefined && component.conditional.when !== null) {
let componentToCheck = component.conditional.when;
let componentValue = data[componentToCheck];
let componentShouldBe = component.conditional.eq;
switch (c.type) {
case 'columns':
for (let i in c.columns) {
for (let j in c.columns[i].components) {
let hidden = !(component.conditional.show === 'true' && componentValue === componentShouldBe);
c.columns[i].components[j].hidden = hidden;
}
}
break;
default:
c.hidden = !(component.conditional.show === 'true' && componentValue === componentShouldBe);
break;
}
}
return c;
}
};
export default FormioComponent;