@open-formulieren/formio-builder
Version:
An opinionated Formio webform builder for Open Forms
84 lines (83 loc) • 2.52 kB
JavaScript
import { hasOwnProperty } from '../types';
import AddressNL from './addressNL';
import BSN from './bsn';
import Checkbox from './checkbox';
import Columns from './columns';
import Content from './content';
import CosignV1 from './cosignV1';
import CosignV2 from './cosignV2';
import Currency from './currency';
import DateField from './date';
import DateTimeField from './datetime';
import EditGrid from './editgrid';
import Email from './email';
import FieldSet from './fieldset';
import FileUpload from './file';
import Iban from './iban';
import Licenseplate from './licenseplate';
import LeafletMap from './map';
import NpFamilyMembers from './npFamilyMembers';
import NumberField from './number';
import Partners from './partners';
import PhoneNumber from './phonenumber';
import Postcode from './postcode';
import ProductPrice from './productPrice';
import Radio from './radio';
import Select from './select';
import Selectboxes from './selectboxes';
import Signature from './signature';
import SoftRequiredErrors from './softRequiredErrors';
import Textarea from './textarea';
import TextField from './textfield';
import TimeField from './time';
/**
* Type guard to determine if the passed in 'component' is something we have type
* definitions for.
*
* Use this check as high as possible, so that all other child components and
* functionality do not need to worry about `FallbackSchema`.
*/
export const isKnownComponentType = (component) => {
return Boolean(component.type && hasOwnProperty(REGISTRY, component.type));
};
export const getRegistryEntry = (component) => {
const entry = REGISTRY[component.type];
return entry;
};
const REGISTRY = {
textfield: TextField,
email: Email,
date: DateField,
datetime: DateTimeField,
time: TimeField,
phoneNumber: PhoneNumber,
postcode: Postcode,
file: FileUpload,
textarea: Textarea,
number: NumberField,
checkbox: Checkbox,
selectboxes: Selectboxes,
select: Select,
currency: Currency,
radio: Radio,
// Special types:
iban: Iban,
licenseplate: Licenseplate,
bsn: BSN,
npFamilyMembers: NpFamilyMembers,
signature: Signature,
cosign: CosignV2,
addressNL: AddressNL,
map: LeafletMap,
editgrid: EditGrid,
partners: Partners,
// layout
content: Content,
columns: Columns,
fieldset: FieldSet,
softRequiredErrors: SoftRequiredErrors,
// deprecated
coSign: CosignV1,
productPrice: ProductPrice,
};
export default REGISTRY;