UNPKG

angular-dynamic-forms-lite

Version:
63 lines 8.61 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { DynamicFormType } from "../form-field/form-field-type"; import { SubType } from "./sub-type"; /** @type {?} */ export const ROOT_ID = "__ROOT__"; /** * @param {?} rootSetting * @param {?} settings * @param {?} defaultFormComponents * @return {?} */ export function createFormFieldSettings(rootSetting, settings, defaultFormComponents) { if (settings.has(ROOT_ID)) { /** @type {?} */ const illegalSetting = settings.get(ROOT_ID); throw new Error(`Illegal form field id ${illegalSetting.name} detected for ${illegalSetting.name}`); } /** @type {?} */ const combinedSettings = new Map(); combinedSettings.set(ROOT_ID, { name: ROOT_ID, component: rootSetting.component, type: DynamicFormType.GROUP, metadata: rootSetting.metadata }); settings.forEach((/** * @param {?} setting * @param {?} id * @return {?} */ (setting, id) => combinedSettings.set(id, Object.assign({}, setting, { type: setting.type ? setting.type : ((/** @type {?} */ (DynamicFormType.SINGLE))) })))); // add missing components from default form components for (let [, setting] of combinedSettings) { setting.type = SubType.toSubType(setting.type); if (setting.component || setting.type.type === DynamicFormType.HIDDEN) continue; setting.component = ensureDefaultFormComponents(defaultFormComponents, setting.name, setting.type); } return combinedSettings; } /** * @param {?} defaultFormComponents * @param {?} name * @param {?} _type * @return {?} */ export function ensureDefaultFormComponents(defaultFormComponents, name, _type) { if (!defaultFormComponents) { throw new Error(`No default form components available, but you used a DynamicFormType as an component identifier for ${name}. Did you add the module using DynamicFormsLiteModule.withDefaultComponents()?`); } /** @type {?} */ const subType = SubType.toSubType(_type); /** @type {?} */ const component = defaultFormComponents.get(subType.type)[subType.subType]; if (!component) { throw new Error(`No default form component for type ${subType.subType} (${subType.type}) available.`); } return component; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItZHluYW1pYy1mb3Jtcy1saXRlLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tc2V0dGluZ3MvZm9ybS1maWVsZC1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQztBQUt0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQVdyQyxNQUFNLE9BQU8sT0FBTyxHQUFHLFVBQVU7Ozs7Ozs7QUFFakMsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxXQUF3QixFQUN4QixRQUEyQixFQUMzQixxQkFBMkM7SUFFM0MsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFOztjQUNuQixjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsY0FBYyxDQUFDLElBQUksaUJBQWlCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3JHOztVQUVLLGdCQUFnQixHQUFzQixJQUFJLEdBQUcsRUFBRTtJQUNyRCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1FBQzVCLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO1FBQ2hDLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSztRQUMzQixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7S0FDL0IsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLE9BQU87Ozs7O0lBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDL0IsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQ2xCLE9BQU8sSUFDVixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBQSxlQUFlLENBQUMsTUFBTSxFQUFPLENBQUMsSUFDbkUsRUFDSCxDQUFDO0lBRUYsc0RBQXNEO0lBQ3RELEtBQUssSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksZ0JBQWdCLEVBQUU7UUFDeEMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLE1BQU07WUFBRSxTQUFTO1FBQ2hGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsMkJBQTJCLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDcEc7SUFFRCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLHFCQUEyQyxFQUMzQyxJQUFZLEVBQ1osS0FBMkI7SUFFM0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUdBQXVHLElBQUksZ0ZBQWdGLENBQzVMLENBQUM7S0FDSDs7VUFFSyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7O1VBQ2xDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFMUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLE9BQU8sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLElBQUksY0FBYyxDQUFDLENBQUM7S0FDdkc7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm9vdFNldHRpbmcsIEZvcm1GaWVsZFNldHRpbmdUeXBlIH0gZnJvbSBcIi4vZm9ybS1maWVsZC1zZXR0aW5nXCI7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVR5cGUsIEZvcm1Db21wb25lbnRzQnlUeXBlIH0gZnJvbSBcIi4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC10eXBlXCI7XG5pbXBvcnQgeyBTaW5nbGVGb3JtRmllbGRTZXR0aW5nIH0gZnJvbSBcIi4uL2Zvcm0tZmllbGQvc2luZ2xlL3NpbmdsZS1mb3JtLWZpZWxkLXNldHRpbmdcIjtcbmltcG9ydCB7IEdyb3VwRm9ybUZpZWxkU2V0dGluZyB9IGZyb20gXCIuLi9mb3JtLWZpZWxkL2dyb3VwL2dyb3VwLWZvcm0tZmllbGQtc2V0dGluZ1wiO1xuaW1wb3J0IHsgQXJyYXlGb3JtRmllbGRTZXR0aW5nIH0gZnJvbSBcIi4uL2Zvcm0tZmllbGQvYXJyYXkvYXJyYXktZm9ybS1maWVsZC1zZXR0aW5nXCI7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnRUeXBlIH0gZnJvbSBcIi4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC1jb21wb25lbnRcIjtcbmltcG9ydCB7IFN1YlR5cGUgfSBmcm9tIFwiLi9zdWItdHlwZVwiO1xuaW1wb3J0IHsgSGlkZGVuRm9ybUZpZWxkU2V0dGluZyB9IGZyb20gXCIuLi9mb3JtLWZpZWxkL2hpZGRlbi9oaWRkZW4tZm9ybS1maWVsZC1zZXR0aW5nXCI7XG5cbmV4cG9ydCB0eXBlIENvbWJpbmVkRm9ybUZpZWxkU2V0dGluZyA9XG4gIHwgU2luZ2xlRm9ybUZpZWxkU2V0dGluZ1xuICB8IEdyb3VwRm9ybUZpZWxkU2V0dGluZ1xuICB8IEFycmF5Rm9ybUZpZWxkU2V0dGluZ1xuICB8IEhpZGRlbkZvcm1GaWVsZFNldHRpbmc7XG5cbmV4cG9ydCB0eXBlIEZvcm1GaWVsZFNldHRpbmdzID0gTWFwPHN0cmluZywgQ29tYmluZWRGb3JtRmllbGRTZXR0aW5nPjtcblxuZXhwb3J0IGNvbnN0IFJPT1RfSUQgPSBcIl9fUk9PVF9fXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtRmllbGRTZXR0aW5ncyhcbiAgcm9vdFNldHRpbmc6IFJvb3RTZXR0aW5nLFxuICBzZXR0aW5nczogRm9ybUZpZWxkU2V0dGluZ3MsXG4gIGRlZmF1bHRGb3JtQ29tcG9uZW50czogRm9ybUNvbXBvbmVudHNCeVR5cGVcbik6IEZvcm1GaWVsZFNldHRpbmdzIHtcbiAgaWYgKHNldHRpbmdzLmhhcyhST09UX0lEKSkge1xuICAgIGNvbnN0IGlsbGVnYWxTZXR0aW5nID0gc2V0dGluZ3MuZ2V0KFJPT1RfSUQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgSWxsZWdhbCBmb3JtIGZpZWxkIGlkICR7aWxsZWdhbFNldHRpbmcubmFtZX0gZGV0ZWN0ZWQgZm9yICR7aWxsZWdhbFNldHRpbmcubmFtZX1gKTtcbiAgfVxuXG4gIGNvbnN0IGNvbWJpbmVkU2V0dGluZ3M6IEZvcm1GaWVsZFNldHRpbmdzID0gbmV3IE1hcCgpO1xuICBjb21iaW5lZFNldHRpbmdzLnNldChST09UX0lELCB7XG4gICAgbmFtZTogUk9PVF9JRCxcbiAgICBjb21wb25lbnQ6IHJvb3RTZXR0aW5nLmNvbXBvbmVudCxcbiAgICB0eXBlOiBEeW5hbWljRm9ybVR5cGUuR1JPVVAsXG4gICAgbWV0YWRhdGE6IHJvb3RTZXR0aW5nLm1ldGFkYXRhXG4gIH0pO1xuXG4gIHNldHRpbmdzLmZvckVhY2goKHNldHRpbmcsIGlkKSA9PlxuICAgIGNvbWJpbmVkU2V0dGluZ3Muc2V0KGlkLCB7XG4gICAgICAuLi5zZXR0aW5nLFxuICAgICAgdHlwZTogc2V0dGluZy50eXBlID8gc2V0dGluZy50eXBlIDogKER5bmFtaWNGb3JtVHlwZS5TSU5HTEUgYXMgYW55KVxuICAgIH0pXG4gICk7XG5cbiAgLy8gYWRkIG1pc3NpbmcgY29tcG9uZW50cyBmcm9tIGRlZmF1bHQgZm9ybSBjb21wb25lbnRzXG4gIGZvciAobGV0IFssIHNldHRpbmddIG9mIGNvbWJpbmVkU2V0dGluZ3MpIHtcbiAgICBzZXR0aW5nLnR5cGUgPSBTdWJUeXBlLnRvU3ViVHlwZShzZXR0aW5nLnR5cGUpO1xuICAgIGlmIChzZXR0aW5nLmNvbXBvbmVudCB8fCBzZXR0aW5nLnR5cGUudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlLkhJRERFTikgY29udGludWU7XG4gICAgc2V0dGluZy5jb21wb25lbnQgPSBlbnN1cmVEZWZhdWx0Rm9ybUNvbXBvbmVudHMoZGVmYXVsdEZvcm1Db21wb25lbnRzLCBzZXR0aW5nLm5hbWUsIHNldHRpbmcudHlwZSk7XG4gIH1cblxuICByZXR1cm4gY29tYmluZWRTZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZURlZmF1bHRGb3JtQ29tcG9uZW50cyhcbiAgZGVmYXVsdEZvcm1Db21wb25lbnRzOiBGb3JtQ29tcG9uZW50c0J5VHlwZSxcbiAgbmFtZTogc3RyaW5nLFxuICBfdHlwZTogRm9ybUZpZWxkU2V0dGluZ1R5cGVcbik6IEZvcm1GaWVsZENvbXBvbmVudFR5cGUge1xuICBpZiAoIWRlZmF1bHRGb3JtQ29tcG9uZW50cykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBObyBkZWZhdWx0IGZvcm0gY29tcG9uZW50cyBhdmFpbGFibGUsIGJ1dCB5b3UgdXNlZCBhIER5bmFtaWNGb3JtVHlwZSBhcyBhbiBjb21wb25lbnQgaWRlbnRpZmllciBmb3IgJHtuYW1lfS4gRGlkIHlvdSBhZGQgdGhlIG1vZHVsZSB1c2luZyBEeW5hbWljRm9ybXNMaXRlTW9kdWxlLndpdGhEZWZhdWx0Q29tcG9uZW50cygpP2BcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc3ViVHlwZSA9IFN1YlR5cGUudG9TdWJUeXBlKF90eXBlKTtcbiAgY29uc3QgY29tcG9uZW50ID0gZGVmYXVsdEZvcm1Db21wb25lbnRzLmdldChzdWJUeXBlLnR5cGUpW3N1YlR5cGUuc3ViVHlwZV07XG5cbiAgaWYgKCFjb21wb25lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRlZmF1bHQgZm9ybSBjb21wb25lbnQgZm9yIHR5cGUgJHtzdWJUeXBlLnN1YlR5cGV9ICgke3N1YlR5cGUudHlwZX0pIGF2YWlsYWJsZS5gKTtcbiAgfVxuXG4gIHJldHVybiBjb21wb25lbnQ7XG59XG4iXX0=