angular-dynamic-forms-lite
Version:
Efficient dynamic and customizable Angular 7+ forms.
77 lines • 9.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { DynamicFormType } from "../form-field/form-field-type";
import { SubType } from "./sub-type";
/** @type {?} */
export var ROOT_ID = "__ROOT__";
/**
* @param {?} rootSetting
* @param {?} settings
* @param {?} defaultFormComponents
* @return {?}
*/
export function createFormFieldSettings(rootSetting, settings, defaultFormComponents) {
var e_1, _a;
if (settings.has(ROOT_ID)) {
/** @type {?} */
var illegalSetting = settings.get(ROOT_ID);
throw new Error("Illegal form field id " + illegalSetting.name + " detected for " + illegalSetting.name);
}
/** @type {?} */
var 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 {?}
*/
function (setting, id) {
return combinedSettings.set(id, tslib_1.__assign({}, setting, { type: setting.type ? setting.type : ((/** @type {?} */ (DynamicFormType.SINGLE))) }));
}));
try {
// add missing components from default form components
for (var combinedSettings_1 = tslib_1.__values(combinedSettings), combinedSettings_1_1 = combinedSettings_1.next(); !combinedSettings_1_1.done; combinedSettings_1_1 = combinedSettings_1.next()) {
var _b = tslib_1.__read(combinedSettings_1_1.value, 2), setting = _b[1];
setting.type = SubType.toSubType(setting.type);
if (setting.component || setting.type.type === DynamicFormType.HIDDEN)
continue;
setting.component = ensureDefaultFormComponents(defaultFormComponents, setting.name, setting.type);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (combinedSettings_1_1 && !combinedSettings_1_1.done && (_a = combinedSettings_1.return)) _a.call(combinedSettings_1);
}
finally { if (e_1) throw e_1.error; }
}
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 {?} */
var subType = SubType.toSubType(_type);
/** @type {?} */
var 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItZHluYW1pYy1mb3Jtcy1saXRlLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tc2V0dGluZ3MvZm9ybS1maWVsZC1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQXdCLE1BQU0sK0JBQStCLENBQUM7QUFLdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFXckMsTUFBTSxLQUFPLE9BQU8sR0FBRyxVQUFVOzs7Ozs7O0FBRWpDLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsV0FBd0IsRUFDeEIsUUFBMkIsRUFDM0IscUJBQTJDOztJQUUzQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7O1lBQ25CLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUF5QixjQUFjLENBQUMsSUFBSSxzQkFBaUIsY0FBYyxDQUFDLElBQU0sQ0FBQyxDQUFDO0tBQ3JHOztRQUVLLGdCQUFnQixHQUFzQixJQUFJLEdBQUcsRUFBRTtJQUNyRCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1FBQzVCLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO1FBQ2hDLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSztRQUMzQixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7S0FDL0IsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLE9BQU87Ozs7O0lBQUMsVUFBQyxPQUFPLEVBQUUsRUFBRTtRQUMzQixPQUFBLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLHVCQUNsQixPQUFPLElBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQUEsZUFBZSxDQUFDLE1BQU0sRUFBTyxDQUFDLElBQ25FO0lBSEYsQ0FHRSxFQUNILENBQUM7O1FBRUYsc0RBQXNEO1FBQ3RELEtBQXdCLElBQUEscUJBQUEsaUJBQUEsZ0JBQWdCLENBQUEsa0RBQUEsZ0ZBQUU7WUFBakMsSUFBQSxrREFBVyxFQUFSLGVBQU87WUFDakIsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLE1BQU07Z0JBQUUsU0FBUztZQUNoRixPQUFPLENBQUMsU0FBUyxHQUFHLDJCQUEyQixDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BHOzs7Ozs7Ozs7SUFFRCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLHFCQUEyQyxFQUMzQyxJQUFZLEVBQ1osS0FBMkI7SUFFM0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2IseUdBQXVHLElBQUksbUZBQWdGLENBQzVMLENBQUM7S0FDSDs7UUFFSyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7O1FBQ2xDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFMUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXNDLE9BQU8sQ0FBQyxPQUFPLFVBQUssT0FBTyxDQUFDLElBQUksaUJBQWMsQ0FBQyxDQUFDO0tBQ3ZHO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvb3RTZXR0aW5nLCBGb3JtRmllbGRTZXR0aW5nVHlwZSB9IGZyb20gXCIuL2Zvcm0tZmllbGQtc2V0dGluZ1wiO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1UeXBlLCBGb3JtQ29tcG9uZW50c0J5VHlwZSB9IGZyb20gXCIuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtdHlwZVwiO1xuaW1wb3J0IHsgU2luZ2xlRm9ybUZpZWxkU2V0dGluZyB9IGZyb20gXCIuLi9mb3JtLWZpZWxkL3NpbmdsZS9zaW5nbGUtZm9ybS1maWVsZC1zZXR0aW5nXCI7XG5pbXBvcnQgeyBHcm91cEZvcm1GaWVsZFNldHRpbmcgfSBmcm9tIFwiLi4vZm9ybS1maWVsZC9ncm91cC9ncm91cC1mb3JtLWZpZWxkLXNldHRpbmdcIjtcbmltcG9ydCB7IEFycmF5Rm9ybUZpZWxkU2V0dGluZyB9IGZyb20gXCIuLi9mb3JtLWZpZWxkL2FycmF5L2FycmF5LWZvcm0tZmllbGQtc2V0dGluZ1wiO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50VHlwZSB9IGZyb20gXCIuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdWJUeXBlIH0gZnJvbSBcIi4vc3ViLXR5cGVcIjtcbmltcG9ydCB7IEhpZGRlbkZvcm1GaWVsZFNldHRpbmcgfSBmcm9tIFwiLi4vZm9ybS1maWVsZC9oaWRkZW4vaGlkZGVuLWZvcm0tZmllbGQtc2V0dGluZ1wiO1xuXG5leHBvcnQgdHlwZSBDb21iaW5lZEZvcm1GaWVsZFNldHRpbmcgPVxuICB8IFNpbmdsZUZvcm1GaWVsZFNldHRpbmdcbiAgfCBHcm91cEZvcm1GaWVsZFNldHRpbmdcbiAgfCBBcnJheUZvcm1GaWVsZFNldHRpbmdcbiAgfCBIaWRkZW5Gb3JtRmllbGRTZXR0aW5nO1xuXG5leHBvcnQgdHlwZSBGb3JtRmllbGRTZXR0aW5ncyA9IE1hcDxzdHJpbmcsIENvbWJpbmVkRm9ybUZpZWxkU2V0dGluZz47XG5cbmV4cG9ydCBjb25zdCBST09UX0lEID0gXCJfX1JPT1RfX1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybUZpZWxkU2V0dGluZ3MoXG4gIHJvb3RTZXR0aW5nOiBSb290U2V0dGluZyxcbiAgc2V0dGluZ3M6IEZvcm1GaWVsZFNldHRpbmdzLFxuICBkZWZhdWx0Rm9ybUNvbXBvbmVudHM6IEZvcm1Db21wb25lbnRzQnlUeXBlXG4pOiBGb3JtRmllbGRTZXR0aW5ncyB7XG4gIGlmIChzZXR0aW5ncy5oYXMoUk9PVF9JRCkpIHtcbiAgICBjb25zdCBpbGxlZ2FsU2V0dGluZyA9IHNldHRpbmdzLmdldChST09UX0lEKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYElsbGVnYWwgZm9ybSBmaWVsZCBpZCAke2lsbGVnYWxTZXR0aW5nLm5hbWV9IGRldGVjdGVkIGZvciAke2lsbGVnYWxTZXR0aW5nLm5hbWV9YCk7XG4gIH1cblxuICBjb25zdCBjb21iaW5lZFNldHRpbmdzOiBGb3JtRmllbGRTZXR0aW5ncyA9IG5ldyBNYXAoKTtcbiAgY29tYmluZWRTZXR0aW5ncy5zZXQoUk9PVF9JRCwge1xuICAgIG5hbWU6IFJPT1RfSUQsXG4gICAgY29tcG9uZW50OiByb290U2V0dGluZy5jb21wb25lbnQsXG4gICAgdHlwZTogRHluYW1pY0Zvcm1UeXBlLkdST1VQLFxuICAgIG1ldGFkYXRhOiByb290U2V0dGluZy5tZXRhZGF0YVxuICB9KTtcblxuICBzZXR0aW5ncy5mb3JFYWNoKChzZXR0aW5nLCBpZCkgPT5cbiAgICBjb21iaW5lZFNldHRpbmdzLnNldChpZCwge1xuICAgICAgLi4uc2V0dGluZyxcbiAgICAgIHR5cGU6IHNldHRpbmcudHlwZSA/IHNldHRpbmcudHlwZSA6IChEeW5hbWljRm9ybVR5cGUuU0lOR0xFIGFzIGFueSlcbiAgICB9KVxuICApO1xuXG4gIC8vIGFkZCBtaXNzaW5nIGNvbXBvbmVudHMgZnJvbSBkZWZhdWx0IGZvcm0gY29tcG9uZW50c1xuICBmb3IgKGxldCBbLCBzZXR0aW5nXSBvZiBjb21iaW5lZFNldHRpbmdzKSB7XG4gICAgc2V0dGluZy50eXBlID0gU3ViVHlwZS50b1N1YlR5cGUoc2V0dGluZy50eXBlKTtcbiAgICBpZiAoc2V0dGluZy5jb21wb25lbnQgfHwgc2V0dGluZy50eXBlLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZS5ISURERU4pIGNvbnRpbnVlO1xuICAgIHNldHRpbmcuY29tcG9uZW50ID0gZW5zdXJlRGVmYXVsdEZvcm1Db21wb25lbnRzKGRlZmF1bHRGb3JtQ29tcG9uZW50cywgc2V0dGluZy5uYW1lLCBzZXR0aW5nLnR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIGNvbWJpbmVkU2V0dGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVEZWZhdWx0Rm9ybUNvbXBvbmVudHMoXG4gIGRlZmF1bHRGb3JtQ29tcG9uZW50czogRm9ybUNvbXBvbmVudHNCeVR5cGUsXG4gIG5hbWU6IHN0cmluZyxcbiAgX3R5cGU6IEZvcm1GaWVsZFNldHRpbmdUeXBlXG4pOiBGb3JtRmllbGRDb21wb25lbnRUeXBlIHtcbiAgaWYgKCFkZWZhdWx0Rm9ybUNvbXBvbmVudHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gZGVmYXVsdCBmb3JtIGNvbXBvbmVudHMgYXZhaWxhYmxlLCBidXQgeW91IHVzZWQgYSBEeW5hbWljRm9ybVR5cGUgYXMgYW4gY29tcG9uZW50IGlkZW50aWZpZXIgZm9yICR7bmFtZX0uIERpZCB5b3UgYWRkIHRoZSBtb2R1bGUgdXNpbmcgRHluYW1pY0Zvcm1zTGl0ZU1vZHVsZS53aXRoRGVmYXVsdENvbXBvbmVudHMoKT9gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHN1YlR5cGUgPSBTdWJUeXBlLnRvU3ViVHlwZShfdHlwZSk7XG4gIGNvbnN0IGNvbXBvbmVudCA9IGRlZmF1bHRGb3JtQ29tcG9uZW50cy5nZXQoc3ViVHlwZS50eXBlKVtzdWJUeXBlLnN1YlR5cGVdO1xuXG4gIGlmICghY29tcG9uZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBkZWZhdWx0IGZvcm0gY29tcG9uZW50IGZvciB0eXBlICR7c3ViVHlwZS5zdWJUeXBlfSAoJHtzdWJUeXBlLnR5cGV9KSBhdmFpbGFibGUuYCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50O1xufVxuIl19