@stemy/ngx-dynamic-form 12.0.6 → 12.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stemy-ngx-dynamic-form.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/ngx-dynamic-form/common-types.ts","../../src/ngx-dynamic-form/services/dynamic-form.service.ts","../../src/ngx-dynamic-form/services/form-utilities.ts","../../src/ngx-dynamic-form/services/open-api.service.ts","../../src/ngx-dynamic-form/directives/async-submit.directive.ts","../../src/ngx-dynamic-form/directives/dynamic-form-control.directive.ts","../../src/ngx-dynamic-form/directives/dynamic-form-template.directive.ts","../../src/ngx-dynamic-form/directives/dynamic-form-group.directive.ts","../../src/ngx-dynamic-form/components/base/dynamic-form-base.component.ts","../../src/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.ts","../../src/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.html","../../src/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.ts","../../src/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.html","../../src/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.html","../../src/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.html","../../src/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.html","../../src/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.html","../../src/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.html","../../src/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.html","../../src/ngx-dynamic-form/ngx-dynamic-form.module.ts","../../src/stemy-ngx-dynamic-form.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n EventEmitter,\r\n HostBinding,\r\n Inject,\r\n InjectionToken,\r\n Injector,\r\n OnInit,\r\n TemplateRef,\r\n Type,\r\n ValueProvider\r\n} from \"@angular/core\";\r\nimport {AbstractControl, FormControl, FormGroup, ValidationErrors} from \"@angular/forms\";\r\nimport {\r\n API_SERVICE,\r\n IApiService,\r\n IAsyncMessage,\r\n ILanguageService,\r\n IRequestOptions,\r\n IResolveFactory,\r\n ITimer,\r\n IToasterService,\r\n LANGUAGE_SERVICE,\r\n ObjectUtils,\r\n ReflectUtils,\r\n TimerUtils,\r\n TOASTER_SERVICE,\r\n UniqueUtils\r\n} from \"@stemy/ngx-utils\";\r\n\r\nexport const FORM_GROUP_TYPE: InjectionToken<Type<IFormControlComponent>> = new InjectionToken<Type<IFormControlComponent>>(\"form-group-provider\");\r\nexport const FORM_CONTROL_PROVIDER: InjectionToken<IFormControlProvider> = new InjectionToken<IFormControlProvider>(\"form-control-provider\");\r\n\r\n// --- Basic form control interfaces ---\r\nexport interface IFormControlComponent {\r\n control: IDynamicFormControl;\r\n}\r\n\r\nexport interface IFormGroupComponent {\r\n form: IDynamicFormBase;\r\n control: IDynamicFormControl;\r\n}\r\n\r\nexport const DYNAMIC_FORM: InjectionToken<IDynamicFormBase> = new InjectionToken<IDynamicFormBase>(\"dynamic-form-base\");\r\n\r\n@Directive()\r\nexport abstract class FormControlComponent<T extends IFormControlData> implements IFormControlComponent, OnInit {\r\n\r\n control: IDynamicFormControl;\r\n\r\n constructor(@Inject(API_SERVICE) readonly api: IApiService,\r\n @Inject(DYNAMIC_FORM) readonly form: IDynamicFormBase,\r\n @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService,\r\n @Inject(TOASTER_SERVICE) readonly toaster: IToasterService) {\r\n this.ctrInit();\r\n }\r\n\r\n ctrInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.control) return;\r\n this.control.form = this.form;\r\n }\r\n\r\n get data(): T {\r\n return <T>(!this.control ? {} : this.control.data);\r\n }\r\n\r\n get value(): any {\r\n return !this.control ? null : this.control.value;\r\n }\r\n\r\n get meta(): any {\r\n return !this.control ? null : this.control.meta;\r\n }\r\n\r\n get testId(): string {\r\n const prefix = this.form?.testId || \"form\";\r\n return `${prefix}-${this.control?.id || \"ctrl\"}`;\r\n }\r\n\r\n @HostBinding(\"class.form-input\")\r\n get inputClass(): boolean {\r\n return true;\r\n }\r\n}\r\n\r\nexport type IFormControlProviderAcceptor = (control: IDynamicFormControl) => boolean;\r\nexport type IFormControlProviderLoader = (control: IDynamicFormControl) => Promise<any>;\r\nexport type IFormControlOptions = (control: IDynamicFormControl) => Promise<IFormControlOption[]>;\r\nexport type IFormControlSerializer = (id: string, parent: IDynamicFormControl) => Promise<any>;\r\n\r\nexport interface IFormControlProvider {\r\n component: Type<IFormControlComponent>;\r\n priority: number;\r\n acceptor: IFormControlProviderAcceptor;\r\n loader: IFormControlProviderLoader;\r\n}\r\n\r\nexport interface IFormSerializer {\r\n id: string;\r\n func: IFormControlSerializer;\r\n}\r\n\r\nexport interface IFormSerializers {\r\n [id: string]: IFormControlSerializer | IResolveFactory | null\r\n}\r\n\r\nexport type DynamicFormState = \"VALID\" | \"INVALID\" | \"PENDING\" | \"DISABLED\" | \"LOADING\";\r\nexport type DynamicFormUpdateOn = \"change\" | \"blur\" | \"submit\";\r\n\r\nexport interface IDynamicFormControl {\r\n id: string;\r\n type: string;\r\n data: IFormControlData;\r\n visible: boolean;\r\n meta: any;\r\n form: IDynamicFormBase;\r\n injector: Injector;\r\n label: string;\r\n provider: IFormControlProvider;\r\n model: any;\r\n formId: string;\r\n\r\n errors: ValidationErrors;\r\n value: any;\r\n touched: boolean;\r\n disabled: boolean;\r\n updateOn: DynamicFormUpdateOn;\r\n\r\n setValue(value: any): void;\r\n\r\n getData<T extends IFormControlData>(): T;\r\n getControl(id: string): IDynamicFormControl;\r\n load(): Promise<any>;\r\n check(): Promise<any>;\r\n shouldSerialize(): Promise<boolean>;\r\n shouldValidate(): Promise<boolean>;\r\n serialize(): Promise<any>;\r\n onFocus(): void;\r\n onBlur(): void;\r\n showErrors(): void;\r\n}\r\n\r\nfunction createValidator(control: IDynamicFormControl): (control: AbstractControl) => Promise<ValidationErrors> {\r\n const data = control.data || {};\r\n const validators = [data.validator].concat(data.validators || []).filter(ObjectUtils.isDefined).map(v => {\r\n return ReflectUtils.resolve<FormControlValidator>(v, control.injector);\r\n });\r\n return (ctrl: any) => new Promise<ValidationErrors>((resolve) => {\r\n const control = <IDynamicFormControl>ctrl;\r\n control.shouldValidate().then(should => {\r\n if (!should) {\r\n resolve(null);\r\n return;\r\n }\r\n const validate = validators.map(v => v(control));\r\n const metaValidator = control.meta.validator;\r\n if (ObjectUtils.isFunction(metaValidator)) {\r\n validate.push(metaValidator(control));\r\n }\r\n Promise.all(validate).then(results => {\r\n results = results.filter(error => ObjectUtils.isObject(error) || ObjectUtils.isString(error));\r\n let result: ValidationErrors = null;\r\n if (results.length > 0) {\r\n result = {};\r\n results.forEach(error => {\r\n if (ObjectUtils.isString(error)) {\r\n result[error] = {};\r\n return;\r\n }\r\n result = Object.assign(result, error);\r\n });\r\n }\r\n resolve(result);\r\n });\r\n });\r\n });\r\n}\r\n\r\nclass DynamicFormControlHelper {\r\n\r\n get id(): string {\r\n return !this.control ? null : this.control.id;\r\n }\r\n\r\n get type(): string {\r\n return !this.control ? \"\" : this.control.type;\r\n }\r\n\r\n get data(): IFormControlData {\r\n return !this.control ? this.dummyData : this.control.data || this.dummyData;\r\n }\r\n\r\n get visible(): boolean {\r\n return !this.hidden;\r\n }\r\n\r\n get provider(): IFormControlProvider {\r\n return this.ctrlProvider;\r\n }\r\n\r\n public readonly formId: string;\r\n public readonly meta: any;\r\n\r\n private hidden: boolean;\r\n private ctrlProvider: IFormControlProvider;\r\n private readonly dummyData: IFormControlData;\r\n private readonly readonlyTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n private readonly hideTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n private readonly serializeTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n private readonly validateTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n\r\n constructor(private form: IDynamicFormBase, private control: IFormControl = null) {\r\n this.formId = UniqueUtils.uuid();\r\n this.meta = {};\r\n this.hidden = false;\r\n this.dummyData = {};\r\n this.readonlyTester = this.createTester(\"readonly\");\r\n this.hideTester = this.createTester(\"hidden\");\r\n this.serializeTester = this.createTester(\"shouldSerialize\", (control: IDynamicFormControl) => {\r\n return Promise.resolve(control.visible);\r\n });\r\n this.validateTester = this.createTester(\"shouldValidate\", (control: IDynamicFormControl) => {\r\n return Promise.resolve(control.visible);\r\n });\r\n }\r\n\r\n load(control: IDynamicFormControl): Promise<any> {\r\n return !this.ctrlProvider ? Promise.resolve(null) : this.ctrlProvider.loader(control);\r\n }\r\n\r\n check(control: IDynamicFormControl): Promise<boolean> {\r\n return new Promise<any>(resolve => {\r\n this.hideTester(control).then(hide => {\r\n this.hidden = hide;\r\n this.readonlyTester(control).then(readonly => {\r\n resolve(control.form.readonly || readonly);\r\n });\r\n });\r\n });\r\n }\r\n\r\n shouldSerialize(control: IDynamicFormControl): Promise<boolean> {\r\n return this.serializeTester(control);\r\n }\r\n\r\n shouldValidate(control: IDynamicFormControl): Promise<boolean> {\r\n return this.validateTester(control);\r\n }\r\n\r\n findProvider(control: IDynamicFormControl): void {\r\n this.ctrlProvider = !this.control || !this.control.type ? null : this.form.findProvider(control);\r\n }\r\n\r\n private createTester(test: string, defaultFunc: FormControlTester = null): (control: IDynamicFormControl) => Promise<boolean> {\r\n const tester: FormControlTester = this.data[test]\r\n ? ReflectUtils.resolve<FormControlTester>(this.data[test], this.form.injector)\r\n : (defaultFunc || (() => Promise.resolve(false)));\r\n return (control: IDynamicFormControl): Promise<boolean> => tester(control);\r\n }\r\n}\r\n\r\nexport class DynamicFormGroup extends FormGroup implements IDynamicFormControl {\r\n\r\n get id(): string {\r\n return this.helper.id;\r\n }\r\n\r\n get type(): string {\r\n return this.helper.type;\r\n }\r\n\r\n get data(): IFormControlData {\r\n return this.helper.data;\r\n }\r\n\r\n get visible(): boolean {\r\n return this.helper.visible;\r\n }\r\n\r\n get meta(): any {\r\n return this.helper.meta;\r\n }\r\n\r\n get injector(): Injector {\r\n return this.form.injector;\r\n }\r\n\r\n get label(): string {\r\n return this.data.label !== \"\" ? `${this.prefix}${this.data.label}` : \"\";\r\n }\r\n\r\n get provider(): IFormControlProvider {\r\n return this.helper.provider;\r\n }\r\n\r\n get model(): any {\r\n return this.mModel;\r\n }\r\n\r\n get formId(): string {\r\n return this.helper.formId;\r\n }\r\n\r\n get formControls(): IDynamicFormControl[] {\r\n return this.mControls || [];\r\n }\r\n\r\n get formFields(): IDynamicFormFieldSets {\r\n return this.mFieldSets || {};\r\n }\r\n\r\n get prefix(): string {\r\n return !this.name ? \"\" : `${this.name}.`;\r\n }\r\n\r\n get name(): string {\r\n return this.mName;\r\n }\r\n\r\n get state(): DynamicFormState {\r\n return <DynamicFormState>(this.loading ? \"LOADING\" : this.status);\r\n }\r\n\r\n private helper: DynamicFormControlHelper;\r\n private mName: string;\r\n private mModel: any;\r\n private mControls: IDynamicFormControl[];\r\n private mSerializers: IFormSerializer[];\r\n private mFieldSets: IDynamicFormFieldSets;\r\n private initialized: boolean;\r\n private loading: boolean;\r\n private changeTimer: ITimer;\r\n\r\n private static createFormControls(group: DynamicFormGroup, controls: IFormControl[]): IDynamicFormControl[] {\r\n if (!controls && ObjectUtils.isObject(group.model)) {\r\n const props = Object.keys(group.model);\r\n controls = props.map(id => {\r\n return getFormControl(group.model, id);\r\n }).filter(ObjectUtils.isDefined);\r\n }\r\n if (!controls) return [];\r\n return controls.map(ctrl => {\r\n if (ctrl.type == \"model\") {\r\n const subGroup = new DynamicFormGroup(group.form, ctrl);\r\n const model = group.model[ctrl.id] || {};\r\n const data = subGroup.getData<IFormModelData>();\r\n data.name = data.name || group.name;\r\n subGroup.setup(model, data);\r\n group.model[ctrl.id] = model;\r\n group.addControl(subGroup.id, subGroup);\r\n return subGroup;\r\n }\r\n return new DynamicFormControl(ctrl, group);\r\n });\r\n }\r\n\r\n private static createFormSerializers(group: DynamicFormGroup, serializers: IFormSerializers): IFormSerializer[] {\r\n if (!serializers && ObjectUtils.isObject(group.model)) {\r\n const props = Object.keys(group.model);\r\n serializers = props.reduce((result, id) => {\r\n const serializer = getFormSerializer(group.model, id);\r\n if (!serializer) return result;\r\n result[id] = serializer;\r\n return result;\r\n }, {});\r\n }\r\n if (!serializers) return [];\r\n return Object.keys(serializers).map(id => {\r\n const serializer = serializers[id] || defaultSerializer;\r\n return !serializer ? null : {\r\n id: id,\r\n func: ReflectUtils.resolve<IFormControlSerializer>(serializer, group.injector)\r\n };\r\n });\r\n }\r\n\r\n constructor(public form: IDynamicFormBase, control: IFormControl = null) {\r\n super({}, {updateOn: ((!control || !control.data) ? null : control.data.updateOn) || form.updateOn || \"blur\"});\r\n this.mName = \"\";\r\n this.mModel = {};\r\n this.mControls = [];\r\n this.mSerializers = [];\r\n this.mFieldSets = {};\r\n this.helper = new DynamicFormControlHelper(form, control);\r\n this.helper.findProvider(this);\r\n this.initialized = false;\r\n this.loading = false;\r\n this.changeTimer = TimerUtils.createTimeout();\r\n this.statusChanges.subscribe(() => {\r\n const root = this.form.root;\r\n root.onStatusChange.emit(root);\r\n });\r\n this.setAsyncValidators(createValidator(this));\r\n }\r\n\r\n getData<T extends IFormControlData>(): T {\r\n return <T>this.data;\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return <any>this.get(id);\r\n }\r\n\r\n load(): Promise<any> {\r\n const promises = this.mControls.map(c => c.load());\r\n promises.push(this.helper.load(this));\r\n return Promise.all(promises);\r\n }\r\n\r\n check(): Promise<any> {\r\n return new Promise<any>(resolve => {\r\n this.helper.check(this).then(readonly => {\r\n if (readonly) this.disable({emitEvent: false}); else this.enable({emitEvent: false});\r\n const promises = this.mControls.map(c => c.check());\r\n Promise.all(promises).then(resolve);\r\n })\r\n });\r\n }\r\n\r\n shouldSerialize(): Promise<boolean> {\r\n return this.helper.shouldSerialize(this);\r\n }\r\n\r\n shouldValidate(): Promise<boolean> {\r\n return this.helper.shouldValidate(this);\r\n }\r\n\r\n serialize(): Promise<any> {\r\n return new Promise<any>((resolve) => {\r\n const result = {};\r\n const serializers = this.mSerializers.map(s => {\r\n return new Promise<any>(resolve => {\r\n s.func(s.id, this).then(res => {\r\n const ctrl = this.getControl(s.id);\r\n const promise = !ctrl ? Promise.resolve(true) : ctrl.shouldSerialize();\r\n promise.then(should => {\r\n if (should) result[s.id] = res;\r\n resolve(null);\r\n });\r\n });\r\n });\r\n });\r\n Promise.all(serializers).then(() => resolve(result));\r\n });\r\n }\r\n\r\n onFocus(): void {\r\n this.markAsUntouched({onlySelf: true});\r\n }\r\n\r\n onBlur(): void {\r\n this.markAsTouched({onlySelf: true});\r\n }\r\n\r\n showErrors(): void {\r\n this.markAsTouched({onlySelf: true});\r\n this.mControls.forEach(ctrl => ctrl.showErrors());\r\n }\r\n\r\n reloadControls(): Promise<any> {\r\n let callback = () => {};\r\n if (this.initialized === false) {\r\n this.initialized = true;\r\n this.loading = true;\r\n callback = () => {\r\n this.loading = false;\r\n // this.cdr.detectChanges();\r\n const root = this.form.root;\r\n root.onInit.emit(root);\r\n root.onStatusChange.emit(root);\r\n // https://github.com/angular/angular/issues/14542\r\n const statusTimer = TimerUtils.createInterval();\r\n statusTimer.set(() => {\r\n if (this.status == \"PENDING\") return;\r\n statusTimer.clear();\r\n root.onStatusChange.emit(root);\r\n }, 50);\r\n setTimeout(statusTimer.clear, 5000);\r\n };\r\n }\r\n const promise = new Promise<any>(resolve => {\r\n this.load().then(() => this.check().then(resolve));\r\n });\r\n promise.then(callback, callback);\r\n return promise;\r\n }\r\n\r\n setup(model: any, info: IDynamicFormInfo): void {\r\n this.mName = info.name || \"\";\r\n this.mModel = model;\r\n this.mControls.forEach(ctrl => this.removeControl(ctrl.id));\r\n this.mControls = DynamicFormGroup.createFormControls(this, info.controls);\r\n this.mControls.forEach((ctrl: any) => this.addControl(ctrl.id, ctrl));\r\n this.mSerializers = DynamicFormGroup.createFormSerializers(this, info.serializers);\r\n this.mFieldSets = info.fieldSets ? info.fieldSets.reduce((result, fs) => {\r\n result[fs.id] = fs;\r\n return result;\r\n }, {}) : getFormFieldSets(Object.getPrototypeOf(model).constructor);\r\n }\r\n\r\n updateModel(control: IDynamicFormControl): void {\r\n this.model[control.id] = control.value;\r\n this.changeTimer.clear();\r\n this.changeTimer.set(() => {\r\n this.check().then(() => this.reloadControlsFrom(control, new Set<IDynamicFormControl>()).then(() => {\r\n this.form.root.onChange.emit(control);\r\n }));\r\n }, 250);\r\n }\r\n\r\n private reloadControlsFrom(control: IDynamicFormControl, controls?: Set<IDynamicFormControl>): Promise<any> {\r\n const data = control.data;\r\n if (!data || !data.reload) return Promise.resolve(null);\r\n const reload = ObjectUtils.isArray(data.reload) ? data.reload : [data.reload];\r\n return Promise.all(reload.map(id => {\r\n const nextControl = this.getControl(id);\r\n if (!nextControl || controls.has(nextControl)) return Promise.resolve(null);\r\n controls.add(nextControl);\r\n return new Promise<any>(resolve => {\r\n nextControl.load().then(() => {\r\n this.reloadControlsFrom(nextControl, controls).then(resolve);\r\n });\r\n })\r\n }))\r\n }\r\n}\r\n\r\nexport class DynamicFormControl extends FormControl implements IDynamicFormControl {\r\n\r\n get id(): string {\r\n return this.helper.id;\r\n }\r\n\r\n get type(): string {\r\n return this.helper.type;\r\n }\r\n\r\n get data(): IFormControlData {\r\n return this.helper.data;\r\n }\r\n\r\n get visible(): boolean {\r\n return this.helper.visible;\r\n }\r\n\r\n get meta(): any {\r\n return this.helper.meta;\r\n }\r\n\r\n get injector(): Injector {\r\n return this.form.injector;\r\n }\r\n\r\n get label(): string {\r\n return this.data.label !== \"\" ? `${this.group.prefix}${this.data.label}` : \"\";\r\n }\r\n\r\n get provider(): IFormControlProvider {\r\n return this.helper.provider;\r\n }\r\n\r\n get model(): any {\r\n return this.group.model;\r\n }\r\n\r\n get formId(): string {\r\n return this.helper.formId;\r\n }\r\n\r\n form: IDynamicFormBase;\r\n\r\n private helper: DynamicFormControlHelper;\r\n\r\n constructor(private control: IFormControl, public readonly group: DynamicFormGroup) {\r\n super(group.model[control.id], {updateOn: control.data.updateOn || group.updateOn});\r\n this.group.addControl(control.id, this);\r\n this.form = this.group.form;\r\n this.helper = new DynamicFormControlHelper(this.form, control);\r\n this.helper.findProvider(this);\r\n this.valueChanges.subscribe(() => this.group.updateModel(this));\r\n this.setAsyncValidators(createValidator(this));\r\n }\r\n\r\n getData<T extends IFormControlData>(): T {\r\n return <T>this.data;\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return null;\r\n }\r\n\r\n load(): Promise<any> {\r\n return this.helper.load(this);\r\n }\r\n\r\n check(): Promise<any> {\r\n const check = this.helper.check(this);\r\n check.then(readonly => {\r\n if (readonly || this.group.disabled) this.disable({emitEvent: false}); else this.enable({emitEvent: false});\r\n });\r\n return check;\r\n }\r\n\r\n shouldSerialize(): Promise<boolean> {\r\n return this.helper.shouldSerialize(this);\r\n }\r\n\r\n shouldValidate(): Promise<boolean> {\r\n return this.helper.shouldValidate(this);\r\n }\r\n\r\n serialize(): Promise<any> {\r\n return Promise.resolve(this.value);\r\n }\r\n\r\n onFocus(): void {\r\n this.markAsUntouched({onlySelf: true});\r\n }\r\n\r\n onBlur(): void {\r\n this.markAsTouched({onlySelf: true});\r\n }\r\n\r\n showErrors(): void {\r\n this.markAsTouched({onlySelf: true});\r\n }\r\n}\r\n\r\nexport interface IFormControl {\r\n id: string;\r\n type: string;\r\n visible?: boolean;\r\n data?: IFormControlData;\r\n}\r\n\r\nexport interface IFormControlData {\r\n label?: string;\r\n labelAlign?: string;\r\n fieldSet?: string;\r\n classes?: string;\r\n readonly?: FormControlTesterFactory;\r\n hidden?: FormControlTesterFactory;\r\n shouldSerialize?: FormControlTesterFactory;\r\n shouldValidate?: FormControlTesterFactory;\r\n validator?: FormControlValidatorFactory;\r\n validators?: FormControlValidatorFactory[];\r\n updateOn?: DynamicFormUpdateOn;\r\n reload?: string | string[];\r\n}\r\n\r\nexport interface IFormInputData extends IFormControlData {\r\n type?: string;\r\n autocomplete?: string;\r\n placeholder?: string;\r\n useLanguage?: boolean;\r\n step?: number;\r\n min?: number;\r\n max?: number;\r\n}\r\n\r\nexport interface IFormSelectData extends IFormControlData {\r\n options?: IFormControlOptions | IResolveFactory;\r\n emptyOption?: boolean;\r\n type?: string;\r\n multi?: boolean;\r\n}\r\n\r\nexport interface IFormStaticData extends IFormControlData {\r\n properties?: string[];\r\n style?: string;\r\n}\r\n\r\nexport interface IFormFileData extends IFormControlData {\r\n accept?: string;\r\n multi?: boolean;\r\n baseUrl?: string;\r\n asFile?: boolean;\r\n asDataUrl?: boolean;\r\n uploadUrl?: string;\r\n uploadOptions?: IRequestOptions;\r\n createUploadData?: (file: File) => any;\r\n}\r\n\r\nexport interface IFormModelData extends IFormControlData, IDynamicFormInfo {\r\n\r\n}\r\n\r\nexport interface IFormFieldSet {\r\n id: string;\r\n classes?: string;\r\n title?: string;\r\n titleClasses?: string;\r\n setClasses?: string;\r\n controlClasses?: string;\r\n}\r\n\r\nexport interface IFormControlOption {\r\n id: any;\r\n label: string;\r\n selectable?: boolean;\r\n}\r\n\r\n// --- Basic form interfaces ---\r\n\r\nexport interface IDynamicFormTemplates {\r\n [id: string]: TemplateRef<any>;\r\n}\r\n\r\nexport interface IDynamicFormConfig {\r\n path?: string | number | Array<string | number>;\r\n name?: string;\r\n testId?: string;\r\n classes?: string;\r\n formClasses?: string;\r\n innerFormClasses?: string;\r\n id: string;\r\n}\r\n\r\nexport interface IDynamicSingleFormConfig extends IDynamicFormConfig, IDynamicFormInfo {\r\n data: any;\r\n controlData?: IFormControlData;\r\n multi?: false;\r\n}\r\n\r\nexport interface IDynamicMultiFormConfig extends IDynamicFormConfig {\r\n data: IDynamicFormsConfigs;\r\n multi: true;\r\n}\r\n\r\nexport type IDynamicFormsConfigs = Array<IDynamicSingleFormConfig | IDynamicMultiFormConfig>;\r\n\r\nexport interface IDynamicFormBase {\r\n\r\n name?: string;\r\n testId?: string;\r\n readonly?: boolean;\r\n updateOn?: \"change\" | \"blur\" | \"submit\";\r\n classes: string;\r\n parent: IDynamicFormBase;\r\n\r\n wrapperTemplate: TemplateRef<any>;\r\n fieldSetTemplate: TemplateRef<any>;\r\n controlTemplate: TemplateRef<any>;\r\n\r\n controlTemplates: IDynamicFormTemplates;\r\n labelTemplates: IDynamicFormTemplates;\r\n inputTemplates: IDynamicFormTemplates;\r\n prefixTemplates: IDynamicFormTemplates;\r\n suffixTemplates: IDynamicFormTemplates;\r\n setPrefixTemplates: IDynamicFormTemplates;\r\n setSuffixTemplates: IDynamicFormTemplates;\r\n\r\n onChange: EventEmitter<IDynamicFormControl>;\r\n onStatusChange: EventEmitter<IDynamicFormBase>;\r\n onInit: EventEmitter<IDynamicFormBase>;\r\n onSubmit: EventEmitter<IDynamicFormBase>;\r\n\r\n root?: IDynamicFormBase;\r\n status: DynamicFormState;\r\n injector?: Injector;\r\n cdr?: ChangeDetectorRef;\r\n\r\n validate(showErrors?: boolean): Promise<any>;\r\n\r\n serialize(validate?: boolean): Promise<any>;\r\n\r\n check(): Promise<any>;\r\n\r\n getControl(id: string): IDynamicFormControl;\r\n\r\n findProvider(control: IDynamicFormControl): IFormControlProvider;\r\n}\r\n\r\nexport declare type AsyncSubmitMethod = (form: IDynamicFormBase) => Promise<IAsyncMessage>;\r\n\r\nexport interface IDynamicFormInfo {\r\n group?: DynamicFormGroup;\r\n name?: string;\r\n controls?: IFormControl[];\r\n serializers?: IFormSerializers;\r\n fieldSets?: IFormFieldSet[];\r\n}\r\n\r\nexport interface IDynamicForm extends IDynamicFormBase, IDynamicFormInfo {\r\n data: any;\r\n}\r\n\r\nexport interface IDynamicFormFieldSets {\r\n [id: string]: IFormFieldSet\r\n}\r\n\r\n// --- Basic form types ---\r\nexport type FormControlTester = (control: IDynamicFormControl) => Promise<boolean>;\r\nexport type FormControlTesterFactory = FormControlTester | IResolveFactory;\r\nexport type FormControlValidator = (control: IDynamicFormControl) => Promise<string | ValidationErrors>;\r\nexport type FormControlValidatorFactory = FormControlValidator | IResolveFactory;\r\n\r\n// --- Decorator functions ---\r\nconst emptyArray: any = [];\r\nconst emptyTester: FormControlTester = () => {\r\n return Promise.resolve(false);\r\n};\r\n\r\nexport function defaultSerializer(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const control = parent.getControl(id);\r\n return !control ? Promise.resolve(parent.model[id]) : control.serialize();\r\n}\r\n\r\nexport function FormSerializable(serializer?: IFormControlSerializer | IResolveFactory): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n ReflectUtils.defineMetadata(\"dynamicFormSerializer\", serializer || defaultSerializer, target, propertyKey);\r\n };\r\n}\r\n\r\nexport function FormInput(data?: IFormInputData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n const meta = ReflectUtils.getOwnMetadata(\"design:type\", target, propertyKey);\r\n const type = meta ? meta.name : \"\";\r\n let inputType = propertyKey.indexOf(\"password\") < 0 ? \"text\" : \"password\";\r\n switch (type) {\r\n case \"Number\":\r\n inputType = \"number\";\r\n break;\r\n case \"Boolean\":\r\n inputType = \"checkbox\";\r\n break;\r\n }\r\n defineFormControl(target, propertyKey, createFormInput(propertyKey, data, inputType));\r\n };\r\n}\r\n\r\nexport function FormSelect(data?: IFormSelectData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormSelect(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormStatic(data?: IFormStaticData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormStatic(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormModel(data?: IFormModelData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormModel(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormFile(data?: IFormFileData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormFile(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormFieldSet(data: IFormFieldSet): ClassDecorator {\r\n return (target: any): void => {\r\n const sets = getFormFieldSets(target);\r\n data.classes = data.classes || \"\";\r\n sets[data.id] = data;\r\n ReflectUtils.defineMetadata(\"dynamicFormFieldSets\", sets, target);\r\n };\r\n}\r\n\r\nexport interface FormGroupProvider extends ValueProvider {\r\n provide: InjectionToken<Type<IFormGroupComponent>>;\r\n multi?: boolean;\r\n useValue: Type<IFormGroupComponent>;\r\n}\r\n\r\nexport function provideFormGroup(component: Type<IFormGroupComponent>): FormGroupProvider {\r\n return {\r\n provide: FORM_GROUP_TYPE,\r\n useValue: component\r\n };\r\n}\r\n\r\nexport interface FormControlProvider {\r\n provide: InjectionToken<IFormControlProvider>;\r\n multi?: boolean;\r\n useValue: IFormControlProvider;\r\n}\r\n\r\nexport function provideFormControl(component: Type<IFormControlComponent>, acceptor: IFormControlProviderAcceptor, loader: IFormControlProviderLoader, priority: number = 0): FormControlProvider {\r\n return {\r\n provide: FORM_CONTROL_PROVIDER,\r\n multi: true,\r\n useValue: {\r\n component: component,\r\n priority: priority,\r\n acceptor: acceptor,\r\n loader: loader\r\n }\r\n };\r\n}\r\n\r\nexport function defineFormControl(target: any, propertyKey: string, control: IFormControl): void {\r\n ReflectUtils.defineMetadata(\"dynamicFormControl\", control, target, propertyKey);\r\n}\r\n\r\nexport function getFormFieldSets(target: any): IDynamicFormFieldSets {\r\n return ReflectUtils.getMetadata(\"dynamicFormFieldSets\", target) || {};\r\n}\r\n\r\nexport function getFormControl(target: any, propertyKey: string): IFormControl {\r\n return ReflectUtils.getMetadata(\"dynamicFormControl\", target, propertyKey);\r\n}\r\n\r\nexport function getFormSerializer(target: any, propertyKey: string): IFormControlSerializer | IResolveFactory {\r\n return ReflectUtils.getMetadata(\"dynamicFormSerializer\", target, propertyKey);\r\n}\r\n\r\nexport function createFormControl(id: string, type: string, data?: IFormControlData): IFormControl {\r\n data = data || {};\r\n data.label = ObjectUtils.isNullOrUndefined(data.label) ? id : data.label;\r\n data.labelAlign = data.labelAlign || \"left\";\r\n data.fieldSet = data.fieldSet || UniqueUtils.uuid();\r\n data.classes = data.classes || \"\";\r\n data.readonly = data.readonly || emptyTester;\r\n data.hidden = data.hidden || emptyTester;\r\n data.validators = data.validators || emptyArray;\r\n return {\r\n id: id,\r\n type: type,\r\n data: data\r\n };\r\n}\r\n\r\nexport function createFormInput(id: string, data: IFormInputData, type: string = \"text\"): IFormControl {\r\n const control = createFormControl(id, \"input\", data);\r\n data = control.data;\r\n data.type = data.type || type;\r\n data.classes = !data.classes ? `form-group-${data.type}` : `${data.classes} form-group-${data.type}`;\r\n data.placeholder = data.placeholder || \"\";\r\n data.step = data.step || 1;\r\n return control;\r\n}\r\n\r\nexport function createFormSelect(id: string, data: IFormSelectData): IFormControl {\r\n const control = createFormControl(id, \"select\", data);\r\n data = control.data;\r\n data.options = data.options || (() => Promise.resolve([]));\r\n data.type = data.type || \"select\";\r\n const classType = data.type == \"select\" ? \"select\" : `select-${data.type}`;\r\n data.classes = !data.classes ? `form-group-${classType}` : `${data.classes} form-group-${classType}`;\r\n return control;\r\n}\r\n\r\nexport function createFormStatic(id: string, data: IFormStaticData): IFormControl {\r\n const control = createFormControl(id, \"static\", data);\r\n data = control.data;\r\n data.style = data.style || \"table\";\r\n return control;\r\n}\r\n\r\nexport function createFormModel(id: string, data: IFormModelData): IFormControl {\r\n const control = createFormControl(id, \"model\", data);\r\n data = control.data;\r\n data.name = data.name || \"\";\r\n return control;\r\n}\r\n\r\nexport function createFormFile(id: string, data: IFormFileData): IFormControl {\r\n const control = createFormControl(id, \"file\", data);\r\n data = control.data;\r\n data.accept = data.accept || \".jpg,.jpeg,.png\";\r\n data.multi = data.multi || false;\r\n data.baseUrl = ObjectUtils.isString(data.baseUrl) ? data.baseUrl : \"assets/\";\r\n data.uploadUrl = ObjectUtils.isString(data.uploadUrl) ? data.uploadUrl : \"assets\";\r\n data.createUploadData = data.createUploadData || ((file: File) => {\r\n const form = new FormData();\r\n form.append(\"file\", file);\r\n return form;\r\n });\r\n return control;\r\n}\r\n","import {ComponentFactoryResolver, Inject, Injectable, Injector, Type, ViewContainerRef} from \"@angular/core\";\r\nimport {\r\n FORM_CONTROL_PROVIDER, FORM_GROUP_TYPE,\r\n IDynamicFormControl,\r\n IFormControlComponent,\r\n IFormControlProvider,\r\n IFormGroupComponent\r\n} from \"../common-types\";\r\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\r\n\r\n@Injectable()\r\nexport class DynamicFormService {\r\n\r\n constructor(@Inject(FORM_CONTROL_PROVIDER) private components: IFormControlProvider[],\r\n @Inject(FORM_GROUP_TYPE) private groupType: Type<IFormGroupComponent>,\r\n private resolver: ComponentFactoryResolver,\r\n public readonly injector: Injector) {\r\n }\r\n\r\n findProvider(control: IDynamicFormControl): IFormControlProvider {\r\n if (!control) return null;\r\n const providers = this.components.filter(p => p.acceptor(control));\r\n if (providers.length == 0) {\r\n throw new Error(`No component provider for control: ${JSON.stringify({\r\n id: control.id,\r\n type: control.type,\r\n data: control.data\r\n })}`);\r\n }\r\n // Sort providers\r\n providers.sort((a, b) => ObjectUtils.compare(a.priority, b.priority))\r\n return providers[0];\r\n }\r\n\r\n createComponent(vcr: ViewContainerRef, provider: IFormControlProvider): IFormControlComponent {\r\n vcr.clear();\r\n if (!provider) return null;\r\n const factory = this.resolver.resolveComponentFactory(provider.component);\r\n return vcr.createComponent(factory).instance;\r\n }\r\n\r\n createGroup(vcr: ViewContainerRef): IFormGroupComponent {\r\n vcr.clear();\r\n const factory = this.resolver.resolveComponentFactory(this.groupType);\r\n return vcr.createComponent(factory).instance;\r\n }\r\n}\r\n","import {DatePipe} from \"@angular/common\";\r\nimport {FactoryDependencies, FileUtils, ObjectUtils} from \"@stemy/ngx-utils\";\r\nimport {FormControlTester, FormControlValidator, IDynamicFormControl, IFormControlSerializer} from \"../common-types\";\r\n\r\nexport class FormUtilities {\r\n\r\n static checkField(expression: string = `true`): FormControlTester {\r\n // @dynamic\r\n const lambda = (control: IDynamicFormControl): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {control: control}));\r\n };\r\n return lambda;\r\n }\r\n\r\n static checkReadonly(control: IDynamicFormControl): Promise<boolean> {\r\n return Promise.resolve(control.visible && !control.disabled);\r\n }\r\n\r\n static readonly(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n }\r\n\r\n static validateJSON(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n if (!value) return Promise.resolve(null);\r\n try {\r\n JSON.parse(value);\r\n return Promise.resolve(null);\r\n } catch (e) {\r\n return Promise.resolve(\"error.not-valid-json\")\r\n }\r\n }\r\n\r\n static validateRequired(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n return Promise.resolve(!ObjectUtils.isNumber(value) && !value ? \"error.required\" : null);\r\n }\r\n\r\n static validateMinLength(length: number): FormControlValidator {\r\n // @dynamic\r\n const lambda = (control: IDynamicFormControl) => {\r\n const value = control.value;\r\n if (!ObjectUtils.isString(value) || value.length < length) {\r\n return Promise.resolve({\"error.min-length\": {length: length}});\r\n }\r\n return Promise.resolve(null);\r\n };\r\n return lambda;\r\n }\r\n\r\n static validateMaxLength(length: number): FormControlValidator {\r\n // @dynamic\r\n const lambda = (control: IDynamicFormControl) => {\r\n const value = control.value;\r\n if (!ObjectUtils.isString(value) || value.length > length) {\r\n return Promise.resolve({\"error.max-length\": {length: length}});\r\n }\r\n return Promise.resolve(null);\r\n };\r\n return lambda;\r\n }\r\n\r\n static validateRequiredTranslation(control: IDynamicFormControl): Promise<string> {\r\n const value: any[] = control.value;\r\n if (!value || value.length == 0) return Promise.resolve(\"error.required\");\r\n return Promise.resolve(value.findIndex(t => (t.lang == \"de\" || t.lang == \"en\") && !t.translation) < 0 ? null : \"error.required\");\r\n }\r\n\r\n static validateEmail(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n if (!value) return Promise.resolve(null);\r\n const emailRegexp = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return Promise.resolve(emailRegexp.test(value) ? null : \"error.invalid-email\");\r\n }\r\n\r\n static validatePhone(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n if (!value) return Promise.resolve(null);\r\n const phoneRegexp = /^(?:\\d){10,12}$/;\r\n return Promise.resolve(phoneRegexp.test(value) ? null : \"error.invalid-phone\");\r\n }\r\n\r\n static serializeLogo(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: string = parent.model[id];\r\n return Promise.resolve(!value || value.length == 0 ? null : value);\r\n }\r\n\r\n static serializeFile(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: any = parent.model[id];\r\n if (ObjectUtils.isBlob(value)) return Promise.resolve(value);\r\n return Promise.resolve(!ObjectUtils.isString(value) || !value.startsWith(\"data:\") ? null : FileUtils.dataToBlob(value));\r\n }\r\n\r\n static serializeNumber(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: string = parent.model[id];\r\n return Promise.resolve(!value || value.length == 0 ? 0 : parseFloat(value));\r\n }\r\n\r\n static serializeJSON(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: string = parent.model[id];\r\n return Promise.resolve(!value ? {} : JSON.parse(value));\r\n }\r\n\r\n @FactoryDependencies(DatePipe)\r\n static serializeDate(date: DatePipe, format: string = \"yyyy-MM-dd\", defaultValue: string = \"\"): IFormControlSerializer {\r\n // @dynamic\r\n const lambda = (id: string, parent: IDynamicFormControl): Promise<any> => {\r\n const value: any = parent.model[id];\r\n if (!ObjectUtils.isDate(value)) return Promise.resolve(value || defaultValue);\r\n return Promise.resolve(!format ? value : date.transform(value, format));\r\n };\r\n return lambda;\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {API_SERVICE, IApiService, StringUtils} from \"@stemy/ngx-utils\";\r\n\r\nimport {FormUtilities} from \"./form-utilities\";\r\n\r\nimport {\r\n createFormFile,\r\n createFormInput,\r\n createFormSelect,\r\n FormControlValidatorFactory,\r\n IDynamicFormControl,\r\n IFormControl,\r\n IFormControlData,\r\n IFormFileData,\r\n IFormInputData,\r\n IFormSelectData,\r\n IFormSerializers\r\n} from \"../common-types\";\r\n\r\nexport interface IOpenApiSchemaProperty {\r\n id: string;\r\n type: string;\r\n format: string;\r\n column: boolean;\r\n additionalProperties: any;\r\n $ref: string;\r\n enum: string[];\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IOpenApiSchema {\r\n properties: { [name: string]: IOpenApiSchemaProperty };\r\n required: string[];\r\n}\r\n\r\nexport interface IDynamicFormInputs {\r\n controls?: IFormControl[];\r\n serializers?: IFormSerializers;\r\n schema?: IOpenApiSchema;\r\n}\r\n\r\n@Injectable()\r\nexport class OpenApiService {\r\n\r\n private schemasPromise: Promise<any>;\r\n private schemas: any;\r\n\r\n constructor(@Inject(API_SERVICE) private api: IApiService) {\r\n const baseUrl = this.api.url(\"\").replace(\"api/\", \"api-docs\");\r\n this.schemas = {};\r\n this.schemasPromise = new Promise<any>((resolve => {\r\n this.api.client.get(baseUrl).subscribe((res: any) => {\r\n this.schemas = res.definitions || {};\r\n resolve(this.schemas);\r\n }, () => {\r\n resolve({});\r\n });\r\n }));\r\n }\r\n\r\n getFormInputsForSchema(name: string): Promise<IDynamicFormInputs> {\r\n this.api.cache = {};\r\n return this.schemasPromise.then(schemas => {\r\n const schema: IOpenApiSchema = schemas[name];\r\n const inputs = this.getFormInputsForSchemaDef(schema);\r\n return inputs;\r\n });\r\n }\r\n\r\n private getFormInputsForSchemaDef(schema: IOpenApiSchema): IDynamicFormInputs {\r\n const inputs: IDynamicFormInputs = {};\r\n if (!schema) return inputs;\r\n inputs.schema = schema;\r\n inputs.serializers = {};\r\n inputs.controls = Object.keys(schema.properties || {}).map(p => {\r\n const property = schema.properties[p];\r\n property.id = p;\r\n inputs.serializers[p] = (id: string, parent: IDynamicFormControl) => {\r\n return Promise.resolve(parent.model[id]);\r\n };\r\n return this.getFormControlForProperty(property, schema);\r\n }).filter(t => null !== t);\r\n return inputs;\r\n }\r\n\r\n private getFormControlForProperty(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormControl {\r\n if (Array.isArray(property.enum)) {\r\n return createFormSelect(property.id, this.getFormSelectData(property, schema));\r\n }\r\n switch (property.type) {\r\n case \"string\":\r\n case \"number\":\r\n case \"boolean\":\r\n case \"textarea\":\r\n return createFormInput(property.id, this.getFormInputData(property, schema));\r\n case \"list\":\r\n return createFormSelect(property.id, this.getFormSelectData(property, schema));\r\n case \"file\":\r\n return createFormFile(property.id, this.getFormFileData(property, schema));\r\n }\r\n return null;\r\n }\r\n\r\n private getBaseFormData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormControlData {\r\n return {\r\n readonly: property.readonly ? FormUtilities.readonly : null,\r\n shouldSerialize: FormUtilities.checkReadonly,\r\n validators: this.getValidators(property, schema)\r\n }\r\n }\r\n\r\n private getFormInputData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormInputData {\r\n let type = StringUtils.has(property.id, \"password\", \"Password\") ? \"password\" : property.type;\r\n switch (property.type) {\r\n case \"boolean\":\r\n type = \"checkbox\";\r\n break;\r\n case \"textarea\":\r\n type = \"textarea\";\r\n break;\r\n }\r\n return {\r\n ...this.getBaseFormData(property, schema),\r\n type\r\n };\r\n }\r\n\r\n private getFormSelectData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormSelectData {\r\n const options = Array.isArray(property.enum)\r\n ? () => {\r\n return Promise.resolve(property.enum.map(id => ({ id, label: `${property.id}.${id}` })));\r\n }\r\n : () => {\r\n this.api.cache[property.endpoint] = this.api.cache[property.endpoint] || this.api.list(property.endpoint, this.api.makeListParams(1, -1)).then(result => {\r\n return result.items.map(i => {\r\n return { id: i._id, label: i.name };\r\n });\r\n });\r\n return this.api.cache[property.endpoint];\r\n };\r\n return {\r\n ...this.getBaseFormData(property, schema),\r\n options,\r\n };\r\n }\r\n\r\n private getFormFileData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormFileData {\r\n return {\r\n ...this.getBaseFormData(property, schema),\r\n multi: property.multi\r\n };\r\n }\r\n\r\n private getValidators(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): FormControlValidatorFactory[] {\r\n const validators: FormControlValidatorFactory[] = [];\r\n if (schema.required.indexOf(property.id) >= 0) {\r\n validators.push(FormUtilities.validateRequired);\r\n }\r\n if (property.minLength) {\r\n validators.push({\r\n type: FormUtilities,\r\n func: FormUtilities.validateMinLength,\r\n params: [property.minLength]\r\n });\r\n }\r\n if (property.maxLength) {\r\n validators.push({\r\n type: FormUtilities,\r\n func: FormUtilities.validateMaxLength,\r\n params: [property.maxLength]\r\n });\r\n }\r\n switch (property.format) {\r\n case \"email\":\r\n validators.push(FormUtilities.validateEmail);\r\n break;\r\n }\r\n return validators;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {IAsyncMessage, IToasterService, TOASTER_SERVICE} from \"@stemy/ngx-utils\";\r\nimport {AsyncSubmitMethod, IDynamicFormBase} from \"../common-types\";\r\n\r\n@Directive({\r\n selector: \"[async-submit]\",\r\n exportAs: \"async-submit\"\r\n})\r\nexport class AsyncSubmitDirective implements OnInit, OnDestroy {\r\n\r\n @Input(\"async-submit\") method: AsyncSubmitMethod;\r\n @Input() form: IDynamicFormBase;\r\n\r\n @Output() onSuccess: EventEmitter<IAsyncMessage>;\r\n @Output() onError: EventEmitter<IAsyncMessage>;\r\n\r\n private loading: boolean;\r\n private disabled: boolean;\r\n private callback: Function;\r\n private onStatusChange: Subscription;\r\n private onSubmit: Subscription;\r\n\r\n @HostBinding(\"class.disabled\")\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding(\"class.loading\")\r\n get isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n constructor(@Inject(TOASTER_SERVICE) private toaster: IToasterService, private cdr: ChangeDetectorRef, elem: ElementRef, renderer: Renderer2) {\r\n this.onSuccess = new EventEmitter<IAsyncMessage>();\r\n this.onError = new EventEmitter<IAsyncMessage>();\r\n if (elem.nativeElement.tagName !== \"BUTTON\") return;\r\n renderer.setAttribute(elem.nativeElement, \"type\", \"button\");\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.form) return;\r\n this.disabled = this.form.status !== \"VALID\";\r\n this.cdr.detectChanges();\r\n this.onStatusChange = this.form.onStatusChange.subscribe(form => {\r\n this.disabled = form.status !== \"VALID\";\r\n this.cdr.detectChanges();\r\n if (!this.callback || form.status == \"PENDING\") return;\r\n if (!this.disabled) {\r\n this.callback();\r\n }\r\n this.callback = null;\r\n });\r\n this.onSubmit = this.form.onSubmit.subscribe(() => this.callMethod());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.onStatusChange) this.onStatusChange.unsubscribe();\r\n if (this.onSubmit) this.onSubmit.unsubscribe();\r\n }\r\n\r\n @HostListener(\"click\")\r\n click(): void {\r\n this.callback = () => this.callMethod();\r\n if (this.form.status !== \"VALID\" && this.form.status !== \"INVALID\") return;\r\n this.callback();\r\n this.callback = null;\r\n }\r\n\r\n callMethod(): void {\r\n if (this.loading) return;\r\n this.loading = true;\r\n this.method(this.form).then(result => {\r\n this.loading = false;\r\n if (result) {\r\n this.onSuccess.emit(result);\r\n this.toaster.success(result.message, result.context);\r\n }\r\n }, reason => {\r\n if (!reason || !reason.message)\r\n throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n this.loading = false;\r\n this.onError.emit(reason);\r\n this.toaster.error(reason.message, reason.context);\r\n });\r\n }\r\n}\r\n","import {Directive, Input, OnChanges, SimpleChanges, ViewContainerRef} from \"@angular/core\";\r\nimport {IDynamicFormControl, IFormControlComponent} from \"../common-types\";\r\nimport {DynamicFormService} from \"../services/dynamic-form.service\";\r\n\r\n@Directive({\r\n selector: \"[form-control]\",\r\n})\r\nexport class DynamicFormControlDirective implements OnChanges {\r\n\r\n @Input(\"form-control\") control: IDynamicFormControl;\r\n\r\n get component(): IFormControlComponent {\r\n return this.comp;\r\n }\r\n\r\n private comp: IFormControlComponent;\r\n\r\n constructor(private vcr: ViewContainerRef, private forms: DynamicFormService) {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.control) {\r\n this.comp = this.forms.createComponent(this.vcr, this.control.provider);\r\n }\r\n if (!this.comp) return;\r\n this.comp.control = this.control;\r\n }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: `ng-template[control],\r\n ng-template[label],\r\n ng-template[input],\r\n ng-template[prefix],\r\n ng-template[suffix],\r\n ng-template[setPrefix],\r\n ng-template[setSuffix],\r\n ng-template[formPrefix],\r\n ng-template[formSuffix],\r\n ng-template[innerFormPrefix],\r\n ng-template[innerFormSuffix]`\r\n})\r\nexport class DynamicFormTemplateDirective {\r\n\r\n @Input() control: string;\r\n @Input() label: string;\r\n @Input() input: string;\r\n @Input() prefix: string;\r\n @Input() suffix: string;\r\n @Input() setPrefix: string;\r\n @Input() setSuffix: string;\r\n @Input() formPrefix: string;\r\n @Input() formSuffix: string;\r\n @Input() innerFormPrefix: string;\r\n @Input() innerFormSuffix: string;\r\n\r\n constructor(public template: TemplateRef<any>) {\r\n }\r\n}\r\n","import {Directive, Input, OnChanges, SimpleChanges, ViewContainerRef} from \"@angular/core\";\r\nimport {IDynamicFormControl, IFormControlComponent, IFormGroupComponent} from \"../common-types\";\r\nimport {DynamicFormService} from \"../services/dynamic-form.service\";\r\n\r\n@Directive({\r\n selector: \"[form-group]\",\r\n})\r\nexport class DynamicFormGroupDirective implements OnChanges {\r\n\r\n @Input(\"form-group\") control: IDynamicFormControl;\r\n @Input() visible: boolean;\r\n\r\n get component(): IFormControlComponent {\r\n return this.comp;\r\n }\r\n\r\n private comp: IFormGroupComponent;\r\n\r\n constructor(private vcr: ViewContainerRef, private forms: DynamicFormService) {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.control || changes.form || changes.visible) {\r\n if (!this.visible) {\r\n this.vcr.clear();\r\n this.comp = null;\r\n return;\r\n }\r\n this.comp = this.forms.createGroup(this.vcr);\r\n }\r\n if (!this.comp) return;\r\n this.comp.control = this.control;\r\n }\r\n}\r\n","import { AfterContentInit, ChangeDetectorRef, ContentChild, ContentChildren, EventEmitter, Injector, Input, Output, QueryList, TemplateRef, Directive } from \"@angular/core\";\r\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\r\nimport {\r\n DynamicFormControl, DynamicFormState, IDynamicFormBase, IDynamicFormControl, IDynamicFormTemplates,\r\n IFormControlProvider\r\n} from \"../../common-types\";\r\nimport {DynamicFormTemplateDirective} from \"../../directives/dynamic-form-template.directive\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\n\r\n@Directive()\r\nexport abstract class DynamicFormBaseComponent implements IDynamicFormBase, AfterContentInit {\r\n\r\n @Input() name: string;\r\n @Input() testId: string;\r\n @Input() readonly: boolean;\r\n @Input() updateOn: \"change\" | \"blur\" | \"submit\";\r\n @Input() classes: any;\r\n @Input() parent: IDynamicFormBase;\r\n\r\n @Input() wrapperTemplate: TemplateRef<any>;\r\n @Input() fieldSetTemplate: TemplateRef<any>;\r\n @Input() controlTemplate: TemplateRef<any>;\r\n\r\n @Input() controlTemplates: IDynamicFormTemplates;\r\n @Input() labelTemplates: IDynamicFormTemplates;\r\n @Input() inputTemplates: IDynamicFormTemplates;\r\n @Input() prefixTemplates: IDynamicFormTemplates;\r\n @Input() suffixTemplates: IDynamicFormTemplates;\r\n @Input() setPrefixTemplates: IDynamicFormTemplates;\r\n @Input() setSuffixTemplates: IDynamicFormTemplates;\r\n\r\n @Output() onChange: EventEmitter<IDynamicFormControl>;\r\n @Output() onStatusChange: EventEmitter<IDynamicFormBase>;\r\n @Output() onInit: EventEmitter<IDynamicFormBase>;\r\n @Output() onSubmit: EventEmitter<IDynamicFormBase>;\r\n\r\n @ContentChild(\"prefixTemplate\")\r\n prefixTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(\"suffixTemplate\")\r\n suffixTemplate: TemplateRef<any>;\r\n\r\n get root(): IDynamicFormBase {\r\n let form: IDynamicFormBase = this;\r\n while (ObjectUtils.isDefined(form.parent)) {\r\n form = form.parent;\r\n }\r\n return form;\r\n }\r\n\r\n abstract status: DynamicFormState;\r\n readonly injector: Injector;\r\n readonly cdr: ChangeDetectorRef;\r\n\r\n @ContentChildren(DynamicFormTemplateDirective)\r\n protected templates: QueryList<DynamicFormTemplateDirective>;\r\n\r\n @ContentChild(\"wrapperTemplate\")\r\n protected cWrapperTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(\"fieldSetTemplate\")\r\n protected cFieldSetTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(\"controlTemplate\")\r\n protected cControlTemplate: TemplateRef<any>;\r\n\r\n protected constructor(cdr: ChangeDetectorRef, private formService: DynamicFormService) {\r\n this.name = \"\";\r\n this.testId = \"form\";\r\n this.controlTemplates = {};\r\n this.labelTemplates = {};\r\n this.inputTemplates = {};\r\n this.prefixTemplates = {};\r\n this.suffixTemplates = {};\r\n\r\n this.onChange = new EventEmitter<DynamicFormControl>();\r\n this.onStatusChange = new EventEmitter<IDynamicFormBase>();\r\n this.onInit = new EventEmitter<IDynamicFormBase>();\r\n this.onSubmit = new EventEmitter<IDynamicFormBase>();\r\n this.injector = formService.injector;\r\n this.cdr = cdr;\r\n }\r\n\r\n // --- IDynamicFormBase\r\n\r\n abstract validate(showErrors?: boolean): Promise<any>;\r\n abstract serialize(validate?: boolean): Promise<any>;\r\n abstract check(): Promise<any>;\r\n abstract getControl(id: string): IDynamicFormControl;\r\n\r\n findProvider(control: IDynamicFormControl): IFormControlProvider {\r\n return this.formService.findProvider(control);\r\n }\r\n\r\n // --- Lifecycle hooks\r\n\r\n ngAfterContentInit(): void {\r\n this.wrapperTemplate = this.wrapperTemplate || this.cWrapperTemplate;\r\n this.fieldSetTemplate = this.fieldSetTemplate || this.cFieldSetTemplate;\r\n this.controlTemplate = this.controlTemplate || this.cControlTemplate;\r\n this.controlTemplates = this.filterTemplates(this.controlTemplates, \"control\");\r\n this.labelTemplates = this.filterTemplates(this.labelTemplates, \"label\");\r\n this.inputTemplates = this.filterTemplates(this.inputTemplates , \"input\");\r\n this.prefixTemplates = this.filterTemplates(this.prefixTemplates, \"prefix\");\r\n this.suffixTemplates = this.filterTemplates(this.suffixTemplates, \"suffix\");\r\n this.setPrefixTemplates = this.filterTemplates(this.setPrefixTemplates, \"setPrefix\");\r\n this.setSuffixTemplates = this.filterTemplates(this.setSuffixTemplates, \"setSuffix\");\r\n }\r\n\r\n protected filterTemplates(templates: IDynamicFormTemplates, type: string): IDynamicFormTemplates {\r\n if (ObjectUtils.isObject(templates) && Object.keys(templates).length > 0) return templates;\r\n return this.templates.filter(t => !!t[type]).reduce((result, directive) => {\r\n result[directive[type]] = directive.template;\r\n return result;\r\n }, {});\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {first} from \"rxjs/operators\";\r\nimport {\r\n DYNAMIC_FORM,\r\n DynamicFormGroup,\r\n DynamicFormState,\r\n IDynamicForm,\r\n IDynamicFormControl,\r\n IFormControl,\r\n IFormFieldSet,\r\n IFormSerializers\r\n} from \"../../common-types\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\nimport {DynamicFormBaseComponent} from \"../base/dynamic-form-base.component\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form, [dynamic-form]\",\r\n templateUrl: \"./dynamic-form.component.html\",\r\n providers: [\r\n {\r\n provide: DynamicFormBaseComponent,\r\n useExisting: DynamicFormComponent\r\n },\r\n {\r\n provide: DYNAMIC_FORM,\r\n useExisting: DynamicFormComponent\r\n }\r\n ]\r\n})\r\nexport class DynamicFormComponent extends DynamicFormBaseComponent implements IDynamicForm, AfterContentInit, OnChanges {\r\n\r\n @Input() group: DynamicFormGroup;\r\n @Input() controls: IFormControl[];\r\n @Input() serializers: IFormSerializers;\r\n @Input() fieldSets: IFormFieldSet[];\r\n @Input() data: any;\r\n\r\n defaultFieldSet: IFormFieldSet;\r\n\r\n get status(): DynamicFormState {\r\n return this.group.state;\r\n }\r\n\r\n get formControls(): IDynamicFormControl[] {\r\n return this.group.formControls;\r\n }\r\n\r\n constructor(cdr: ChangeDetectorRef, forms: DynamicFormService) {\r\n super(cdr, forms);\r\n this.group = new DynamicFormGroup(this);\r\n this.defaultFieldSet = {\r\n id: \"\",\r\n title: \"\",\r\n classes: \"\"\r\n };\r\n }\r\n\r\n // --- Lifecycle hooks\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.data) return;\r\n if (changes.data || changes.controls || changes.serializers || changes.formGroup) {\r\n if (this.group.id) return;\r\n this.group.setup(this.data, this);\r\n this.group.reloadControls();\r\n }\r\n }\r\n\r\n // --- Custom ---\r\n\r\n onFormSubmit(): void {\r\n const root = this.root;\r\n root.validate().then(() => root.onSubmit.emit(this), () => {});\r\n }\r\n\r\n // --- IDynamicForm ---\r\n\r\n validate(showErrors: boolean = true): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n this.group.statusChanges.pipe(first(status => status == \"VALID\" || status == \"INVALID\")).subscribe(status => {\r\n if (showErrors) this.group.showErrors();\r\n if (status == \"VALID\") {\r\n resolve(null);\r\n return;\r\n }\r\n reject(null);\r\n });\r\n this.group.updateValueAndValidity();\r\n });\r\n }\r\n\r\n serialize(validate?: boolean): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n const serialize = () => {\r\n this.group.serialize().then(resolve);\r\n };\r\n if (validate) {\r\n this.validate().then(serialize, reject);\r\n return;\r\n }\r\n serialize();\r\n });\r\n }\r\n\r\n check(): Promise<any> {\r\n return this.group.check();\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return this.group.getControl(id);\r\n }\r\n}\r\n","<ng-template #defaultFieldSetTemplate let-id=\"id\" let-controls=\"controls\" let-fieldSet=\"fieldSet\">\r\n <div [ngClass]=\"['form-fields', 'form-fields-' + id, fieldSet.classes]\">\r\n <ng-container [ngxTemplateOutlet]=\"setPrefixTemplates[fieldSet.id]\" [context]=\"fieldSet\"></ng-container>\r\n <div *ngIf=\"fieldSet.title\" [ngClass]=\"['form-title', fieldSet.titleClasses || '']\">\r\n {{ group.prefix + fieldSet.title | translate }}\r\n </div>\r\n <ng-template #subControls>\r\n <ng-container *ngFor=\"let control of controls\" [form-group]=\"control\" [visible]=\"control.visible\">\r\n\r\n </ng-container>\r\n </ng-template>\r\n <div *ngIf=\"fieldSet.setClasses; else subControls\" [ngClass]=\"fieldSet.setClasses\">\r\n <div *ngIf=\"fieldSet.controlClasses; else subControls\" [ngClass]=\"fieldSet.controlClasses\">\r\n <ng-container [ngTemplateOutlet]=\"subControls\"></ng-container>\r\n </div>\r\n </div>\r\n <ng-container [ngxTemplateOutlet]=\"setSuffixTemplates[fieldSet.id]\" [context]=\"fieldSet\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fieldSetsTemplate>\r\n <ng-container *ngFor=\"let fs of formControls | groupBy:'data.fieldSet'\"\r\n [ngxTemplateOutlet]=\"fieldSetTemplate || defaultFieldSetTemplate\"\r\n [context]=\"{form: this, id: fs.group, controls: fs.items, fieldSet: group.formFields[fs.group] || defaultFieldSet}\">\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #defaultWrapperTemplate let-form=\"form\" let-fieldSetsTemplate=\"fieldSetsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"prefixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: form, fieldSetsTemplate: fieldSetsTemplate}\"></ng-container>\r\n <form class=\"dynamic-form\" [ngClass]=\"form.classes || ''\" [formGroup]=\"group\" (submit)=\"onFormSubmit()\">\r\n <ng-container [ngTemplateOutlet]=\"fieldSetsTemplate\"></ng-container>\r\n <ng-content></ng-content>\r\n <div *ngIf=\"form.status == 'PENDING'\" class=\"dynamic-form-validator\">\r\n {{ group.prefix + 'message.pending' | translate }}\r\n </div>\r\n <button [ngStyle]=\"{display: 'none'}\">Submit</button>\r\n </form>\r\n <ng-container [ngTemplateOutlet]=\"suffixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: form, fieldSetsTemplate: fieldSetsTemplate}\"></ng-container>\r\n</ng-template>\r\n<ng-template #loadingTemplate>\r\n <div *ngIf=\"status == 'LOADING'\" class=\"dynamic-form-loader\">\r\n {{ group.prefix + 'message.loading' | translate }}\r\n </div>\r\n</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this, fieldSetsTemplate: fieldSetsTemplate}\"\r\n *ngIf=\"status !== 'LOADING'; else loadingTemplate\">\r\n</ng-container>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChildren,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ObjectUtils, UniqueUtils} from \"@stemy/ngx-utils\";\r\nimport {\r\n DYNAMIC_FORM,\r\n DynamicFormGroup,\r\n DynamicFormState,\r\n IDynamicFormBase,\r\n IDynamicFormControl,\r\n IDynamicFormsConfigs,\r\n IDynamicFormTemplates,\r\n IDynamicSingleFormConfig\r\n} from \"../../common-types\";\r\nimport {DynamicFormBaseComponent} from \"../base/dynamic-form-base.component\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\n\r\nconst statusPriority: DynamicFormState[] = [\"LOADING\", \"PENDING\", \"DISABLED\", \"INVALID\"];\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-forms, [dynamic-forms]\",\r\n templateUrl: \"./dynamic-forms.component.html\",\r\n providers: [\r\n {\r\n provide: DynamicFormBaseComponent,\r\n useExisting: DynamicFormsComponent\r\n },\r\n {\r\n provide: DYNAMIC_FORM,\r\n useExisting: DynamicFormsComponent\r\n }\r\n ]\r\n})\r\nexport class DynamicFormsComponent extends DynamicFormBaseComponent implements IDynamicFormBase, AfterContentInit, OnChanges {\r\n\r\n @Input() data: IDynamicFormsConfigs;\r\n\r\n @Input() containerTemplate: TemplateRef<any>;\r\n\r\n @Input() formPrefixTemplates: IDynamicFormTemplates;\r\n @Input() formSuffixTemplates: IDynamicFormTemplates;\r\n @Input() innerFormPrefixTemplates: IDynamicFormTemplates;\r\n @Input() innerFormSuffixTemplates: IDynamicFormTemplates;\r\n\r\n get status(): DynamicFormState {\r\n for (let i = 0; i < statusPriority.length; i++) {\r\n const status = statusPriority[i];\r\n if (this.checkForms(f => f.status == status)) return status;\r\n }\r\n return \"VALID\";\r\n }\r\n\r\n public configs: IDynamicFormsConfigs;\r\n\r\n @ContentChild(\"containerTemplate\")\r\n protected cContainerTemplate: TemplateRef<any>;\r\n\r\n @ViewChildren(DynamicFormBaseComponent)\r\n private forms: QueryList<IDynamicFormBase>;\r\n\r\n constructor(cdr: ChangeDetectorRef, formService: DynamicFormService) {\r\n super(cdr, formService);\r\n this.formPrefixTemplates = {};\r\n this.formSuffixTemplates = {};\r\n this.innerFormPrefixTemplates = {};\r\n this.innerFormSuffixTemplates = {};\r\n }\r\n\r\n // --- Lifecycle hooks\r\n\r\n ngAfterContentInit(): void {\r\n super.ngAfterContentInit();\r\n this.containerTemplate = this.containerTemplate || this.cContainerTemplate;\r\n this.formPrefixTemplates = this.filterTemplates(this.formPrefixTemplates, \"formPrefix\");\r\n this.formSuffixTemplates = this.filterTemplates(this.formSuffixTemplates, \"formSuffix\");\r\n this.innerFormPrefixTemplates = this.filterTemplates(this.innerFormPrefixTemplates, \"innerFormPrefix\");\r\n this.innerFormSuffixTemplates = this.filterTemplates(this.innerFormSuffixTemplates, \"innerFormSuffix\");\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.configs = this.createFormGroups(this.data);\r\n }\r\n\r\n // --- IDynamicFormBase ---\r\n\r\n validate(showErrors: boolean = true): Promise<any> {\r\n if (!this.forms) return Promise.reject(null);\r\n return Promise.all(this.forms.map(f => f.validate(showErrors)));\r\n }\r\n\r\n serialize(validate?: boolean): Promise<any> {\r\n if (!this.forms) return validate ? Promise.reject(null) : Promise.resolve({});\r\n return new Promise<any>((resolve, reject) => {\r\n const promises = this.forms.map(f => f.serialize(validate));\r\n Promise.all(promises).then(results => {\r\n let result = {};\r\n results.forEach((data, ix) => {\r\n const config = this.data[ix];\r\n let path: Array<string | number> = null;\r\n if (ObjectUtils.isArray(config.path) && config.path.length > 0) {\r\n path = config.path;\r\n } else if (ObjectUtils.isString(config.path) && config.path.length > 0) {\r\n path = config.path.split(\".\");\r\n } else if (ObjectUtils.isNumber(config.path)) {\r\n path = [config.path];\r\n }\r\n if (!path) {\r\n result = ObjectUtils.assign(result, data);\r\n return;\r\n }\r\n result = ObjectUtils.mapToPath(result, data, path.map(p => `${p}`));\r\n });\r\n resolve(result);\r\n }, reject);\r\n });\r\n }\r\n\r\n check(): Promise<any> {\r\n if (!this.forms) return Promise.resolve(null);\r\n return Promise.all(this.forms.map(t => t.check()));\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return this.getFromValue(f => f.getControl(id));\r\n }\r\n\r\n private checkForms(check: (form: IDynamicFormBase) => boolean): boolean {\r\n this.cdr.detectChanges();\r\n if (!this.forms) return false;\r\n return ObjectUtils.isDefined(this.forms.find(check));\r\n }\r\n\r\n private getFromValue<T>(check: (form: IDynamicFormBase) => T): T {\r\n if (!this.forms) return null;\r\n let value: T = null;\r\n this.forms.find(f => {\r\n value = check(f);\r\n return ObjectUtils.isDefined(value);\r\n });\r\n return value;\r\n }\r\n\r\n private createFormGroups(configs: IDynamicFormsConfigs): IDynamicFormsConfigs {\r\n return (configs || []).map((c: any) => {\r\n if (c.multi) return c;\r\n const config = <IDynamicSingleFormConfig>c;\r\n const group = new DynamicFormGroup(this, {\r\n id: config.id || UniqueUtils.uuid(),\r\n type: \"model\",\r\n data: config.controlData\r\n });\r\n config.group = group;\r\n config.name = config.name || this.name;\r\n group.setup(config.data, config);\r\n group.reloadControls();\r\n return config;\r\n });\r\n }\r\n}\r\n","<ng-template #configTemplate let-formTemplate=\"formTemplate\" let-form=\"form\" let-config=\"config\" let-configTemplate>\r\n <div [ngClass]=\"config.classes || ''\">\r\n <ng-container [ngTemplateOutlet]=\"formPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: form}\"></ng-container>\r\n <ng-template #singleFormTemplate>\r\n <div dynamic-form\r\n [hidden]=\"!config.group?.visible\"\r\n [ngClass]=\"config.formClasses || ''\"\r\n [name]=\"config.name || form.name\"\r\n [testId]=\"testId + '-' + (config.testId || config.name || name)\"\r\n [readonly]=\"form.readonly\"\r\n [updateOn]=\"form.updateOn\"\r\n [classes]=\"config.innerFormClasses\"\r\n [parent]=\"form\"\r\n\r\n [wrapperTemplate]=\"form.wrapperTemplate\"\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n [group]=\"config.group\"\r\n [fieldSets]=\"config.fieldSets\">\r\n <ng-template #prefixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n <ng-template #suffixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n <div dynamic-forms\r\n [ngClass]=\"config.formClasses || ''\"\r\n [name]=\"config.name || name\"\r\n [testId]=\"testId + '-' + (config.testId || config.name || name)\"\r\n [readonly]=\"form.readonly\"\r\n [updateOn]=\"form.updateOn\"\r\n [classes]=\"config.innerFormClasses\"\r\n [parent]=\"form\"\r\n\r\n [wrapperTemplate]=\"form.wrapperTemplate\"\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n [data]=\"config.data\"\r\n [containerTemplate]=\"form.containerTemplate\"\r\n [formPrefixTemplates]=\"form.formPrefixTemplates\"\r\n [formSuffixTemplates]=\"form.formSuffixTemplates\"\r\n [innerFormPrefixTemplates]=\"form.innerFormPrefixTemplates\"\r\n [innerFormSuffixTemplates]=\"form.innerFormSuffixTemplates\"\r\n\r\n *ngIf=\"config.multi; else singleFormTemplate\">\r\n <ng-template #prefixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n <ng-template #suffixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n </div>\r\n <ng-container [ngTemplateOutlet]=\"formSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: form}\"></ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template let-form=\"form\" let-configTemplate=\"configTemplate\" #defaultContainerTemplate>\r\n <div class=\"dynamic-forms\" [ngClass]=\"classes || ''\">\r\n <ng-container *ngFor=\"let config of form.configs\"\r\n [ngTemplateOutlet]=\"configTemplate\"\r\n [ngTemplateOutletContext]=\"{form: form, config: config}\"></ng-container>\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"prefixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this}\"></ng-container>\r\n<ng-container [ngTemplateOutlet]=\"containerTemplate || defaultContainerTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this, configTemplate: configTemplate, defaultContainerTemplate: defaultContainerTemplate}\">\r\n</ng-container>\r\n<ng-container [ngTemplateOutlet]=\"suffixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this}\"></ng-container>\r\n","import {Component, HostBinding, Inject, ViewEncapsulation} from \"@angular/core\";\r\nimport {DYNAMIC_FORM, IDynamicFormBase, IDynamicFormControl, IFormGroupComponent} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"div[dynamic-form-group]\",\r\n templateUrl: \"./dynamic-form-group.component.html\"\r\n})\r\nexport class DynamicFormGroupComponent implements IFormGroupComponent {\r\n\r\n control: IDynamicFormControl;\r\n\r\n constructor(@Inject(DYNAMIC_FORM) readonly form: IDynamicFormBase) {\r\n }\r\n\r\n @HostBinding(\"class\")\r\n get classes(): string {\r\n if (!this.control) return \"form-group\";\r\n return [\"form-group\", \"form-group-\" + this.control.id, this.control.data.classes, this.control.errors && this.control.touched ? \"form-group-invalid\" : \"\"].join(\" \");\r\n }\r\n}\r\n","<ng-template #labelTemplate>\r\n <label [ngClass]=\"'control-label control-label-' + control.data.labelAlign\" [attr.for]=\"control.formId\">\r\n {{ control.label | translate: control.model }}\r\n </label>\r\n</ng-template>\r\n<ng-template #errorTemplate>\r\n <div class=\"error-message\" *ngIf=\"control.errors && control.touched\">\r\n <span class=\"help-block\" *ngFor=\"let error of control.errors | entries\">\r\n {{ error.key | translate: error.value }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n<ng-template #inputTemplate let-control=\"control\">\r\n <ng-container [form-control]=\"control\"></ng-container>\r\n</ng-template>\r\n<ng-template #defaultControlTemplate\r\n let-context\r\n let-control=\"control\"\r\n let-data=\"control.data\"\r\n let-labelTemplate=\"labelTemplate\"\r\n let-inputTemplate=\"inputTemplate\"\r\n let-prefixTemplate=\"prefixTemplate\"\r\n let-suffixTemplate=\"suffixTemplate\"\r\n let-errorTemplate=\"errorTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"prefixTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n <ng-container *ngIf=\"control.label && data.labelAlign == 'left'\"\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"context\">\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"inputTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n <ng-container *ngIf=\"control.label && data.labelAlign == 'right'\"\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"context\">\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"suffixTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-container [ngxTemplateOutlet]=\"form.controlTemplates[control.id] || form.controlTemplate || defaultControlTemplate\"\r\n [context]=\"{\r\n control: control,\r\n labelTemplate: form.labelTemplates[control.id] || labelTemplate,\r\n inputTemplate: form.inputTemplates[control.id] || inputTemplate,\r\n prefixTemplate: form.prefixTemplates[control.id],\r\n suffixTemplate: form.suffixTemplates[control.id],\r\n errorTemplate: errorTemplate\r\n }\">\r\n</ng-container>\r\n","import {Component} from \"@angular/core\";\r\nimport {FormControlComponent, IDynamicFormControl, IFormFileData} from \"../../common-types\";\r\nimport {ArrayUtils, FileUtils, ObjectUtils} from \"@stemy/ngx-utils\";\r\n\r\n@Component({\r\n selector: \"dynamic-form-file\",\r\n styleUrls: [\"./dynamic-form-file.component.scss\"],\r\n templateUrl: \"./dynamic-form-file.component.html\"\r\n})\r\nexport class DynamicFormFileComponent extends FormControlComponent<IFormFileData> {\r\n\r\n private fileImageCache: any[];\r\n\r\n // Acceptor for provider\r\n static acceptor(control: IDynamicFormControl): boolean {\r\n return control.type == \"file\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n\r\n ctrInit() {\r\n this.fileImageCache = [];\r\n }\r\n\r\n onSelect(input: HTMLInputElement): void {\r\n this.processFiles(input.files);\r\n input.value = \"\";\r\n }\r\n\r\n protected processFiles(fileList: FileList): void {\r\n const files: File[] = [];\r\n const accept = this.data.accept;\r\n const types: string[] = ObjectUtils.isString(accept) && accept.length > 0 ? accept.toLowerCase().split(\",\") : null;\r\n if (fileList.length == 0) return;\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList.item(i);\r\n const type = file.type.toLowerCase();\r\n const ext = FileUtils.getExtension(file);\r\n if (types && !ArrayUtils.has(types, type, ext)) continue;\r\n files.push(file);\r\n }\r\n if (files.length == 0) {\r\n this.toaster.error(\"message.error.wrong-files\");\r\n return;\r\n }\r\n this.upload(files);\r\n }\r\n\r\n protected upload(files: File[]): void {\r\n const single = !this.data.multi;\r\n if (single) files.length = Math.min(files.length , 1);\r\n const promises = [];\r\n files.forEach((file, ix) => {\r\n if (this.data.asDataUrl) {\r\n promises.push(FileUtils.readFileAsDataURL(file));\r\n return;\r\n }\r\n if (this.data.asFile) {\r\n promises.push(Promise.resolve(file));\r\n return;\r\n }\r\n promises.push(\r\n this.api.upload(\r\n this.data.uploadUrl,\r\n this.data.createUploadData(file),\r\n console.log,\r\n this.data.uploadOptions\r\n ).then(asset => asset._id || asset, () => null)\r\n );\r\n });\r\n Promise.all(promises).then(assets => {\r\n if (single) {\r\n this.control.setValue(assets[0]);\r\n return;\r\n }\r\n const current = this.value || [];\r\n this.control.setValue(current.concat(assets.filter(t => !!t)));\r\n });\r\n }\r\n\r\n delete(index?: number): void {\r\n if (this.data.multi) {\r\n const current = Array.from(this.value || []);\r\n current.splice(index, 1);\r\n this.control.setValue(current);\r\n return;\r\n }\r\n this.control.setValue(null);\r\n }\r\n\r\n getUrl(image: any): string {\r\n return `url('${this.getImgUrl(image)}')`;\r\n }\r\n\r\n private getImgUrl(image: any): string {\r\n if (ObjectUtils.isBlob(image)) {\r\n let cache = this.fileImageCache.find(t => t.file == image);\r\n if (!cache) {\r\n cache = {file: image, url: URL.createObjectURL(image)};\r\n this.fileImageCache.push(cache);\r\n }\r\n return cache.url;\r\n }\r\n const url = !image ? null : image.imageUrl || image;\r\n if (!ObjectUtils.isString(url)) return null;\r\n if (url.startsWith(\"data:\")) return url;\r\n if (!this.data.baseUrl) {\r\n const subUrl = url.startsWith(\"/\") ? url.substr(1) : url;\r\n return this.api.url(subUrl);\r\n }\r\n return this.api.url(`${this.data.baseUrl}${url}`);\r\n }\r\n}\r\n","<div class=\"upload\">\r\n <input type=\"file\"\r\n multiple=\"multiple\"\r\n [attr.data-testid]=\"testId\"\r\n [attr.accept]=\"data.accept\"\r\n (change)=\"onSelect($event.target)\" />\r\n <ul class=\"images\" *ngIf=\"!data.multi\">\r\n <li class=\"image\" *ngIf=\"value\" [ngStyle]=\"{backgroundImage: getUrl(value)}\">\r\n <a class=\"btn btn-delete\" (click)=\"delete()\"></a>\r\n </li>\r\n </ul>\r\n <ul class=\"images\" *ngIf=\"data.multi\">\r\n <li class=\"image\" *ngFor=\"let image of value; let i = index\" [ngStyle]=\"{backgroundImage: getUrl(image)}\">\r\n <a class=\"btn btn-delete\" (click)=\"delete(i)\"></a>\r\n </li>\r\n </ul>\r\n</div>\r\n","import {Component, HostBinding, ViewEncapsulation} from \"@angular/core\";\r\nimport {ITranslation, ObjectUtils} from \"@stemy/ngx-utils\";\r\nimport {DynamicFormControl, FormControlComponent, IFormInputData} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-input\",\r\n templateUrl: \"./dynamic-form-input.component.html\"\r\n})\r\nexport class DynamicFormInputComponent extends FormControlComponent<IFormInputData> {\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"input\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n\r\n @HostBinding(\"class.checked\")\r\n get isChecked(): boolean {\r\n return this.data.type == \"checkbox\" && this.value;\r\n }\r\n\r\n onDateChange(value: string): void {\r\n const date = new Date(value);\r\n const dateValue = <number>date.valueOf();\r\n if (isNaN(dateValue) || dateValue < -30610224000000) return;\r\n this.control.setValue(date)\r\n }\r\n\r\n onTextChange(value: string): void {\r\n if (!this.data.useLanguage) {\r\n this.control.setValue(value);\r\n return;\r\n }\r\n const translations: ITranslation[] = ObjectUtils.isArray(this.value) ? Array.from(this.value) : [];\r\n const translation = translations.find(t => t.lang == this.language.editLanguage);\r\n if (translation) {\r\n translation.translation = value;\r\n } else {\r\n translations.push({\r\n lang: this.language.editLanguage,\r\n translation: value\r\n });\r\n }\r\n this.control.setValue(translations);\r\n }\r\n\r\n onNumberBlur(): void {\r\n const value = this.value;\r\n if (ObjectUtils.isNumber(this.data.max) && this.data.max < value) {\r\n this.control.setValue(this.data.max);\r\n } else if (ObjectUtils.isNumber(this.data.min) && this.data.min > value) {\r\n this.control.setValue(this.data.min);\r\n }\r\n this.control.onBlur();\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"data.type\">\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea class=\"form-control\"\r\n rows=\"5\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">{{ data.placeholder | translate }}</textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <input class=\"form-control\"\r\n type=\"date\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value | date: 'y-MM-dd'\"\r\n (ngModelChange)=\"onDateChange($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <input class=\"form-control\"\r\n type=\"number\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [min]=\"data.min\"\r\n [max]=\"data.max\"\r\n [step]=\"data.step\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"onNumberBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <input class=\"form-control\"\r\n type=\"checkbox\"\r\n [attr.data-testid]=\"testId\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <input class=\"form-control\"\r\n type=\"text\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [minlength]=\"data.min\"\r\n [maxlength]=\"data.max\"\r\n [placeholder]=\"data.placeholder | translate\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"data.useLanguage ? (value | translate) : value\"\r\n (ngModelChange)=\"onTextChange($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <input class=\"form-control\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [minlength]=\"data.min\"\r\n [maxlength]=\"data.max\"\r\n [placeholder]=\"data.placeholder | translate\"\r\n [type]=\"data.type\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n</ng-container>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {ObjectUtils, ReflectUtils} from \"@stemy/ngx-utils\";\r\nimport {\r\n DynamicFormControl,\r\n FormControlComponent,\r\n IDynamicFormControl,\r\n IFormControlOption,\r\n IFormControlOptions,\r\n IFormSelectData\r\n} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-select\",\r\n templateUrl: \"./dynamic-form-select.component.html\"\r\n})\r\nexport class DynamicFormSelectComponent extends FormControlComponent<IFormSelectData> {\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"select\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(control: IDynamicFormControl): Promise<any> {\r\n const data = control.getData<IFormSelectData>();\r\n if (data.type == \"radio\" && data.multi) {\r\n return Promise.reject(\"Radio group doesn't support multi select!\");\r\n }\r\n return new Promise<any>(resolve => {\r\n const getOptions = ReflectUtils.resolve<IFormControlOptions>(data.options, control.form.injector);\r\n getOptions(control).then(options => {\r\n if (data.emptyOption) options.unshift({id: null, label: \"\"});\r\n control.meta.options = options;\r\n DynamicFormSelectComponent.fillOptions(control, options);\r\n resolve(options);\r\n });\r\n });\r\n }\r\n\r\n static fillOptions(control: IDynamicFormControl, options: IFormControlOption[]): void {\r\n const data = control.getData<IFormSelectData>();\r\n const selected = control.value;\r\n if (data.multi || options.length == 0 || options.findIndex(t => t.id == selected) >= 0) return;\r\n control.setValue(options[0].id);\r\n }\r\n\r\n onSelectChange(value: any): void {\r\n const isArray = ObjectUtils.isArray(value);\r\n const current = this.value;\r\n if (this.data.multi) {\r\n if (isArray) {\r\n this.control.setValue(value);\r\n return;\r\n }\r\n if (ObjectUtils.isArray(current)) {\r\n this.control.setValue(\r\n current.indexOf(value) < 0\r\n ? current.concat([value])\r\n : current.filter(c => c !== value)\r\n );\r\n return;\r\n }\r\n this.control.setValue([value]);\r\n return;\r\n }\r\n if (isArray) value = value[0];\r\n if (current == value) {\r\n const option = this.meta.options.find(o => o.id !== value);\r\n value = option ? option.id : null;\r\n }\r\n this.control.setValue(value);\r\n }\r\n\r\n checkValue(option: IFormControlOption): boolean {\r\n const value = this.value;\r\n return ObjectUtils.isArray(value) ? value.indexOf(option.id) >= 0 : option.id == value;\r\n }\r\n\r\n findOption(option: IFormControlOption, index: number, id: string): boolean {\r\n return option.id == id;\r\n }\r\n}\r\n","<ng-template #selectTemplate let-selected=\"selected\">\r\n <select class=\"form-control\"\r\n [attr.data-testid]=\"testId\"\r\n [multiple]=\"data.multi\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"data.multi ? value : [value]\"\r\n (ngModelChange)=\"onSelectChange($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">\r\n <option *ngFor=\"let option of meta.options\" [value]=\"option.id\" [disabled]=\"option.selectable == false\">\r\n {{ option.label | translate }}\r\n </option>\r\n </select>\r\n <label class=\"form-control-description\" [attr.for]=\"control.formId\" *ngIf=\"!data.multi && selected?.description\">\r\n {{ selected?.description | translate }}\r\n </label>\r\n</ng-template>\r\n<ng-container [ngSwitch]=\"data.type\">\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <ul class=\"radio-group\">\r\n <li *ngFor=\"let option of meta.options\" class=\"radio\">\r\n <label [ngClass]=\"{checked: value == option.id}\">\r\n <input type=\"radio\"\r\n [attr.data-testid]=\"testId + '-' + option.id\"\r\n [id]=\"control.formId + '-' + option.id\"\r\n [name]=\"control.formId + '-' + option.id\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled || option.selectable == false\"\r\n [value]=\"option.id\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"onSelectChange(option.id)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">\r\n {{ option.label | translate }}\r\n </label>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ul class=\"checkbox-group\">\r\n <li *ngFor=\"let option of meta.options\" class=\"checkbox\">\r\n <label [ngClass]=\"{checked: checkValue(option)}\">\r\n <input type=\"checkbox\"\r\n [attr.data-testid]=\"testId + '-' + option.id\"\r\n [id]=\"control.formId + '-' + option.id\"\r\n [name]=\"control.formId + '-' + option.id\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled || option.selectable == false\"\r\n [ngModel]=\"checkValue(option)\"\r\n (ngModelChange)=\"onSelectChange(option.id)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">\r\n {{ option.label | translate }}\r\n </label>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"selectTemplate\" [ngTemplateOutletContext]=\"{selected: meta?.options | find:findOption:value}\">\r\n\r\n </ng-container>\r\n</ng-container>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {DynamicFormControl, FormControlComponent, IFormStaticData} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-static\",\r\n templateUrl: \"./dynamic-form-static.component.html\"\r\n})\r\nexport class DynamicFormStaticComponent extends FormControlComponent<IFormStaticData> {\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"static\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n}\r\n","<unordered-list [listStyle]=\"data.style\" [ngClass]=\"{disabled: control.disabled}\"\r\n [data]=\"!data.properties ? {value: value} : data.properties | remap: value\">\r\n <ng-template [type]=\"!data.properties ? 'key' : null\" selector=\"level == 0\" let-item=\"item\"></ng-template>\r\n <ng-template type=\"value\" selector=\"valueType == 'date'\" let-item=\"item\">\r\n {{ item.value | date }}\r\n </ng-template>\r\n</unordered-list>\r\n","import {Component, ViewChild, ViewEncapsulation} from \"@angular/core\";\r\nimport {DynamicFormControl, FormControlComponent, IDynamicForm, IFormModelData} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-model\",\r\n templateUrl: \"./dynamic-form-model.component.html\"\r\n})\r\nexport class DynamicFormModelComponent extends FormControlComponent<IFormModelData> {\r\n\r\n @ViewChild(\"subForm\")\r\n private subForm: IDynamicForm;\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"model\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n}\r\n","<dynamic-form [testId]=\"form.testId + '-' + control.id\"\r\n [name]=\"data.name || form.name\"\r\n [group]=\"control\"\r\n [data]=\"value\"\r\n [updateOn]=\"control.updateOn\"\r\n [parent]=\"form\"\r\n\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n #subForm>\r\n <ng-template #wrapperTemplate let-form=\"form\" let-fieldSetsTemplate=\"fieldSetsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"fieldSetsTemplate\"></ng-container>\r\n </ng-template>\r\n</dynamic-form>\r\n","import {ModuleWithProviders, NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {NgxUtilsModule} from \"@stemy/ngx-utils\";\r\nimport {FormControlProvider, FormGroupProvider, provideFormControl, provideFormGroup} from \"./common-types\";\r\n\r\nimport {DynamicFormService} from \"./services/dynamic-form.service\";\r\nimport {OpenApiService} from \"./services/open-api.service\";\r\n\r\nimport {AsyncSubmitDirective} from \"./directives/async-submit.directive\";\r\nimport {DynamicFormControlDirective} from \"./directives/dynamic-form-control.directive\";\r\nimport {DynamicFormGroupDirective} from \"./directives/dynamic-form-group.directive\";\r\nimport {DynamicFormTemplateDirective} from \"./directives/dynamic-form-template.directive\";\r\nimport {DynamicFormsComponent} from \"./components/dynamic-forms/dynamic-forms.component\";\r\nimport {DynamicFormComponent} from \"./components/dynamic-form/dynamic-form.component\";\r\n\r\nimport {DynamicFormGroupComponent} from \"./components/dynamic-form-group/dynamic-form-group.component\";\r\nimport {DynamicFormFileComponent} from \"./components/dynamic-form-file/dynamic-form-file.component\";\r\nimport {DynamicFormInputComponent} from \"./components/dynamic-form-input/dynamic-form-input.component\";\r\nimport {DynamicFormSelectComponent} from \"./components/dynamic-form-select/dynamic-form-select.component\";\r\nimport {DynamicFormStaticComponent} from \"./components/dynamic-form-static/dynamic-form-static.component\";\r\nimport {DynamicFormModelComponent} from \"./components/dynamic-form-model/dynamic-form-model.component\";\r\n\r\n// --- Components ---\r\nexport const components = [\r\n DynamicFormsComponent,\r\n DynamicFormComponent,\r\n DynamicFormGroupComponent,\r\n DynamicFormFileComponent,\r\n DynamicFormInputComponent,\r\n DynamicFormSelectComponent,\r\n DynamicFormStaticComponent,\r\n DynamicFormModelComponent\r\n];\r\n\r\n// --- Directives ---\r\nexport const directives = [\r\n AsyncSubmitDirective,\r\n DynamicFormControlDirective,\r\n DynamicFormGroupDirective,\r\n DynamicFormTemplateDirective\r\n];\r\n\r\n// --- Pipes ---\r\nexport const pipes = [];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ...directives,\r\n ...pipes\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxUtilsModule\r\n ],\r\n exports: [\r\n ...components,\r\n ...directives,\r\n ...pipes,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxUtilsModule\r\n ],\r\n entryComponents: components,\r\n providers: pipes\r\n})\r\nexport class NgxDynamicFormModule {\r\n\r\n static forRoot(controlProviders?: Array<FormControlProvider>, groupProvider?: FormGroupProvider): ModuleWithProviders<NgxDynamicFormModule> {\r\n return {\r\n ngModule: NgxDynamicFormModule,\r\n providers: [\r\n DynamicFormService,\r\n OpenApiService,\r\n provideFormControl(DynamicFormFileComponent, DynamicFormFileComponent.acceptor, DynamicFormFileComponent.loader),\r\n provideFormControl(DynamicFormInputComponent, DynamicFormInputComponent.acceptor, DynamicFormInputComponent.loader),\r\n provideFormControl(DynamicFormSelectComponent, DynamicFormSelectComponent.acceptor, DynamicFormSelectComponent.loader),\r\n provideFormControl(DynamicFormStaticComponent, DynamicFormStaticComponent.acceptor, DynamicFormStaticComponent.loader),\r\n provideFormControl(DynamicFormModelComponent, DynamicFormModelComponent.acceptor, DynamicFormModelComponent.loader),\r\n ...(controlProviders || []),\r\n groupProvider || provideFormGroup(DynamicFormGroupComponent)\r\n ]\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["__decorate","__metadata","InjectionToken","i0","API_SERVICE","LANGUAGE_SERVICE","TOASTER_SERVICE","Directive","Inject","HostBinding","ObjectUtils","ReflectUtils","UniqueUtils","TimerUtils","FormGroup","FormControl","Injectable","FileUtils","FactoryDependencies","DatePipe","StringUtils","EventEmitter","Input","Output","HostListener","i1.DynamicFormService","ContentChild","ContentChildren","first","i2","i3","i4.DynamicFormGroupDirective","i5","Component","ViewEncapsulation","i2.DynamicFormComponent","ViewChildren","i1","i2.DynamicFormControlDirective","ArrayUtils","i1.DynamicFormComponent","ViewChild","CommonModule","FormsModule","ReactiveFormsModule","NgxUtilsModule","NgModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stemy-ngx-dynamic-form.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/ngx-dynamic-form/common-types.ts","../../src/ngx-dynamic-form/services/dynamic-form.service.ts","../../src/ngx-dynamic-form/services/form-utilities.ts","../../src/ngx-dynamic-form/services/open-api.service.ts","../../src/ngx-dynamic-form/directives/async-submit.directive.ts","../../src/ngx-dynamic-form/directives/dynamic-form-control.directive.ts","../../src/ngx-dynamic-form/directives/dynamic-form-template.directive.ts","../../src/ngx-dynamic-form/directives/dynamic-form-group.directive.ts","../../src/ngx-dynamic-form/components/base/dynamic-form-base.component.ts","../../src/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.ts","../../src/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.html","../../src/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.ts","../../src/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.html","../../src/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.html","../../src/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.html","../../src/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.html","../../src/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.html","../../src/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.html","../../src/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.html","../../src/ngx-dynamic-form/ngx-dynamic-form.module.ts","../../src/stemy-ngx-dynamic-form.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n EventEmitter,\r\n HostBinding,\r\n Inject,\r\n InjectionToken,\r\n Injector,\r\n OnInit,\r\n TemplateRef,\r\n Type,\r\n ValueProvider\r\n} from \"@angular/core\";\r\nimport {AbstractControl, FormControl, FormGroup, ValidationErrors} from \"@angular/forms\";\r\nimport {\r\n API_SERVICE,\r\n IApiService,\r\n IAsyncMessage,\r\n ILanguageService,\r\n IRequestOptions,\r\n IResolveFactory,\r\n ITimer,\r\n IToasterService,\r\n LANGUAGE_SERVICE,\r\n ObjectUtils,\r\n ReflectUtils,\r\n TimerUtils,\r\n TOASTER_SERVICE,\r\n UniqueUtils\r\n} from \"@stemy/ngx-utils\";\r\n\r\nexport const FORM_GROUP_TYPE: InjectionToken<Type<IFormControlComponent>> = new InjectionToken<Type<IFormControlComponent>>(\"form-group-provider\");\r\nexport const FORM_CONTROL_PROVIDER: InjectionToken<IFormControlProvider> = new InjectionToken<IFormControlProvider>(\"form-control-provider\");\r\n\r\n// --- Basic form control interfaces ---\r\nexport interface IFormControlComponent {\r\n control: IDynamicFormControl;\r\n}\r\n\r\nexport interface IFormGroupComponent {\r\n form: IDynamicFormBase;\r\n control: IDynamicFormControl;\r\n}\r\n\r\nexport const DYNAMIC_FORM: InjectionToken<IDynamicFormBase> = new InjectionToken<IDynamicFormBase>(\"dynamic-form-base\");\r\n\r\n@Directive()\r\nexport abstract class FormControlComponent<T extends IFormControlData> implements IFormControlComponent, OnInit {\r\n\r\n control: IDynamicFormControl;\r\n\r\n constructor(@Inject(API_SERVICE) readonly api: IApiService,\r\n @Inject(DYNAMIC_FORM) readonly form: IDynamicFormBase,\r\n @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService,\r\n @Inject(TOASTER_SERVICE) readonly toaster: IToasterService) {\r\n this.ctrInit();\r\n }\r\n\r\n ctrInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.control) return;\r\n this.control.form = this.form;\r\n }\r\n\r\n get data(): T {\r\n return <T>(!this.control ? {} : this.control.data);\r\n }\r\n\r\n get value(): any {\r\n return !this.control ? null : this.control.value;\r\n }\r\n\r\n get meta(): any {\r\n return !this.control ? null : this.control.meta;\r\n }\r\n\r\n get testId(): string {\r\n const prefix = this.form?.testId || \"form\";\r\n return `${prefix}-${this.control?.id || \"ctrl\"}`;\r\n }\r\n\r\n @HostBinding(\"class.form-input\")\r\n get inputClass(): boolean {\r\n return true;\r\n }\r\n}\r\n\r\nexport type IFormControlProviderAcceptor = (control: IDynamicFormControl) => boolean;\r\nexport type IFormControlProviderLoader = (control: IDynamicFormControl) => Promise<any>;\r\nexport type IFormControlOptions = (control: IDynamicFormControl) => Promise<IFormControlOption[]>;\r\nexport type IFormControlSerializer = (id: string, parent: IDynamicFormControl) => Promise<any>;\r\n\r\nexport interface IFormControlProvider {\r\n component: Type<IFormControlComponent>;\r\n priority: number;\r\n acceptor: IFormControlProviderAcceptor;\r\n loader: IFormControlProviderLoader;\r\n}\r\n\r\nexport interface IFormSerializer {\r\n id: string;\r\n func: IFormControlSerializer;\r\n}\r\n\r\nexport interface IFormSerializers {\r\n [id: string]: IFormControlSerializer | IResolveFactory | null\r\n}\r\n\r\nexport type DynamicFormState = \"VALID\" | \"INVALID\" | \"PENDING\" | \"DISABLED\" | \"LOADING\";\r\nexport type DynamicFormUpdateOn = \"change\" | \"blur\" | \"submit\";\r\n\r\nexport interface IDynamicFormControl {\r\n id: string;\r\n type: string;\r\n data: IFormControlData;\r\n visible: boolean;\r\n meta: any;\r\n form: IDynamicFormBase;\r\n injector: Injector;\r\n label: string;\r\n provider: IFormControlProvider;\r\n model: any;\r\n formId: string;\r\n\r\n errors: ValidationErrors;\r\n value: any;\r\n touched: boolean;\r\n disabled: boolean;\r\n updateOn: DynamicFormUpdateOn;\r\n\r\n setValue(value: any, options?: {\r\n onlySelf?: boolean;\r\n emitEvent?: boolean;\r\n emitModelToViewChange?: boolean;\r\n emitViewToModelChange?: boolean;\r\n }): void;\r\n\r\n getData<T extends IFormControlData>(): T;\r\n getControl(id: string): IDynamicFormControl;\r\n load(): Promise<any>;\r\n check(): Promise<any>;\r\n shouldSerialize(): Promise<boolean>;\r\n shouldValidate(): Promise<boolean>;\r\n serialize(): Promise<any>;\r\n onFocus(): void;\r\n onBlur(): void;\r\n showErrors(): void;\r\n}\r\n\r\nfunction createValidator(control: IDynamicFormControl): (control: AbstractControl) => Promise<ValidationErrors> {\r\n const data = control.data || {};\r\n const validators = [data.validator].concat(data.validators || []).filter(ObjectUtils.isDefined).map(v => {\r\n return ReflectUtils.resolve<FormControlValidator>(v, control.injector);\r\n });\r\n return (ctrl: any) => new Promise<ValidationErrors>((resolve) => {\r\n const control = <IDynamicFormControl>ctrl;\r\n control.shouldValidate().then(should => {\r\n if (!should) {\r\n resolve(null);\r\n return;\r\n }\r\n const validate = validators.map(v => v(control));\r\n const metaValidator = control.meta.validator;\r\n if (ObjectUtils.isFunction(metaValidator)) {\r\n validate.push(metaValidator(control));\r\n }\r\n Promise.all(validate).then(results => {\r\n results = results.filter(error => ObjectUtils.isObject(error) || ObjectUtils.isString(error));\r\n let result: ValidationErrors = null;\r\n if (results.length > 0) {\r\n result = {};\r\n results.forEach(error => {\r\n if (ObjectUtils.isString(error)) {\r\n result[error] = {};\r\n return;\r\n }\r\n result = Object.assign(result, error);\r\n });\r\n }\r\n resolve(result);\r\n });\r\n });\r\n });\r\n}\r\n\r\nclass DynamicFormControlHelper {\r\n\r\n get id(): string {\r\n return !this.control ? null : this.control.id;\r\n }\r\n\r\n get type(): string {\r\n return !this.control ? \"\" : this.control.type;\r\n }\r\n\r\n get data(): IFormControlData {\r\n return !this.control ? this.dummyData : this.control.data || this.dummyData;\r\n }\r\n\r\n get visible(): boolean {\r\n return !this.hidden;\r\n }\r\n\r\n get provider(): IFormControlProvider {\r\n return this.ctrlProvider;\r\n }\r\n\r\n public readonly formId: string;\r\n public readonly meta: any;\r\n\r\n private hidden: boolean;\r\n private ctrlProvider: IFormControlProvider;\r\n private readonly dummyData: IFormControlData;\r\n private readonly readonlyTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n private readonly hideTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n private readonly serializeTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n private readonly validateTester: (control: IDynamicFormControl) => Promise<boolean>;\r\n\r\n constructor(private form: IDynamicFormBase, private control: IFormControl = null) {\r\n this.formId = UniqueUtils.uuid();\r\n this.meta = {};\r\n this.hidden = false;\r\n this.dummyData = {};\r\n this.readonlyTester = this.createTester(\"readonly\");\r\n this.hideTester = this.createTester(\"hidden\");\r\n this.serializeTester = this.createTester(\"shouldSerialize\", (control: IDynamicFormControl) => {\r\n return Promise.resolve(control.visible);\r\n });\r\n this.validateTester = this.createTester(\"shouldValidate\", (control: IDynamicFormControl) => {\r\n return Promise.resolve(control.visible);\r\n });\r\n }\r\n\r\n load(control: IDynamicFormControl): Promise<any> {\r\n return !this.ctrlProvider ? Promise.resolve(null) : this.ctrlProvider.loader(control);\r\n }\r\n\r\n check(control: IDynamicFormControl): Promise<boolean> {\r\n return new Promise<any>(resolve => {\r\n this.hideTester(control).then(hide => {\r\n this.hidden = hide;\r\n this.readonlyTester(control).then(readonly => {\r\n resolve(control.form.readonly || readonly);\r\n });\r\n });\r\n });\r\n }\r\n\r\n shouldSerialize(control: IDynamicFormControl): Promise<boolean> {\r\n return this.serializeTester(control);\r\n }\r\n\r\n shouldValidate(control: IDynamicFormControl): Promise<boolean> {\r\n return this.validateTester(control);\r\n }\r\n\r\n findProvider(control: IDynamicFormControl): void {\r\n this.ctrlProvider = !this.control || !this.control.type ? null : this.form.findProvider(control);\r\n }\r\n\r\n private createTester(test: string, defaultFunc: FormControlTester = null): (control: IDynamicFormControl) => Promise<boolean> {\r\n const tester: FormControlTester = this.data[test]\r\n ? ReflectUtils.resolve<FormControlTester>(this.data[test], this.form.injector)\r\n : (defaultFunc || (() => Promise.resolve(false)));\r\n return (control: IDynamicFormControl): Promise<boolean> => tester(control);\r\n }\r\n}\r\n\r\nexport class DynamicFormGroup extends FormGroup implements IDynamicFormControl {\r\n\r\n get id(): string {\r\n return this.helper.id;\r\n }\r\n\r\n get type(): string {\r\n return this.helper.type;\r\n }\r\n\r\n get data(): IFormControlData {\r\n return this.helper.data;\r\n }\r\n\r\n get visible(): boolean {\r\n return this.helper.visible;\r\n }\r\n\r\n get meta(): any {\r\n return this.helper.meta;\r\n }\r\n\r\n get injector(): Injector {\r\n return this.form.injector;\r\n }\r\n\r\n get label(): string {\r\n return this.data.label !== \"\" ? `${this.prefix}${this.data.label}` : \"\";\r\n }\r\n\r\n get provider(): IFormControlProvider {\r\n return this.helper.provider;\r\n }\r\n\r\n get model(): any {\r\n return this.mModel;\r\n }\r\n\r\n get formId(): string {\r\n return this.helper.formId;\r\n }\r\n\r\n get formControls(): IDynamicFormControl[] {\r\n return this.mControls || [];\r\n }\r\n\r\n get formFields(): IDynamicFormFieldSets {\r\n return this.mFieldSets || {};\r\n }\r\n\r\n get prefix(): string {\r\n return !this.name ? \"\" : `${this.name}.`;\r\n }\r\n\r\n get name(): string {\r\n return this.mName;\r\n }\r\n\r\n get state(): DynamicFormState {\r\n return <DynamicFormState>(this.loading ? \"LOADING\" : this.status);\r\n }\r\n\r\n private helper: DynamicFormControlHelper;\r\n private mName: string;\r\n private mModel: any;\r\n private mControls: IDynamicFormControl[];\r\n private mSerializers: IFormSerializer[];\r\n private mFieldSets: IDynamicFormFieldSets;\r\n private initialized: boolean;\r\n private loading: boolean;\r\n private changeTimer: ITimer;\r\n\r\n private static createFormControls(group: DynamicFormGroup, controls: IFormControl[]): IDynamicFormControl[] {\r\n if (!controls && ObjectUtils.isObject(group.model)) {\r\n const props = Object.keys(group.model);\r\n controls = props.map(id => {\r\n return getFormControl(group.model, id);\r\n }).filter(ObjectUtils.isDefined);\r\n }\r\n if (!controls) return [];\r\n return controls.map(ctrl => {\r\n if (ctrl.type == \"model\") {\r\n const subGroup = new DynamicFormGroup(group.form, ctrl);\r\n const model = group.model[ctrl.id] || {};\r\n const data = subGroup.getData<IFormModelData>();\r\n data.name = data.name || group.name;\r\n subGroup.setup(model, data);\r\n group.model[ctrl.id] = model;\r\n group.addControl(subGroup.id, subGroup);\r\n return subGroup;\r\n }\r\n return new DynamicFormControl(ctrl, group);\r\n });\r\n }\r\n\r\n private static createFormSerializers(group: DynamicFormGroup, serializers: IFormSerializers): IFormSerializer[] {\r\n if (!serializers && ObjectUtils.isObject(group.model)) {\r\n const props = Object.keys(group.model);\r\n serializers = props.reduce((result, id) => {\r\n const serializer = getFormSerializer(group.model, id);\r\n if (!serializer) return result;\r\n result[id] = serializer;\r\n return result;\r\n }, {});\r\n }\r\n if (!serializers) return [];\r\n return Object.keys(serializers).map(id => {\r\n const serializer = serializers[id] || defaultSerializer;\r\n return !serializer ? null : {\r\n id: id,\r\n func: ReflectUtils.resolve<IFormControlSerializer>(serializer, group.injector)\r\n };\r\n });\r\n }\r\n\r\n constructor(public form: IDynamicFormBase, control: IFormControl = null) {\r\n super({}, {updateOn: ((!control || !control.data) ? null : control.data.updateOn) || form.updateOn || \"blur\"});\r\n this.mName = \"\";\r\n this.mModel = {};\r\n this.mControls = [];\r\n this.mSerializers = [];\r\n this.mFieldSets = {};\r\n this.helper = new DynamicFormControlHelper(form, control);\r\n this.helper.findProvider(this);\r\n this.initialized = false;\r\n this.loading = false;\r\n this.changeTimer = TimerUtils.createTimeout();\r\n this.statusChanges.subscribe(() => {\r\n const root = this.form.root;\r\n root.onStatusChange.emit(root);\r\n });\r\n this.setAsyncValidators(createValidator(this));\r\n }\r\n\r\n getData<T extends IFormControlData>(): T {\r\n return <T>this.data;\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return <any>this.get(id);\r\n }\r\n\r\n load(): Promise<any> {\r\n const promises = this.mControls.map(c => c.load());\r\n promises.push(this.helper.load(this));\r\n return Promise.all(promises);\r\n }\r\n\r\n check(): Promise<any> {\r\n return new Promise<any>(resolve => {\r\n this.helper.check(this).then(readonly => {\r\n if (readonly) this.disable({emitEvent: false}); else this.enable({emitEvent: false});\r\n const promises = this.mControls.map(c => c.check());\r\n Promise.all(promises).then(resolve);\r\n })\r\n });\r\n }\r\n\r\n shouldSerialize(): Promise<boolean> {\r\n return this.helper.shouldSerialize(this);\r\n }\r\n\r\n shouldValidate(): Promise<boolean> {\r\n return this.helper.shouldValidate(this);\r\n }\r\n\r\n serialize(): Promise<any> {\r\n return new Promise<any>((resolve) => {\r\n const result = {};\r\n const serializers = this.mSerializers.map(s => {\r\n return new Promise<any>(resolve => {\r\n s.func(s.id, this).then(res => {\r\n const ctrl = this.getControl(s.id);\r\n const promise = !ctrl ? Promise.resolve(true) : ctrl.shouldSerialize();\r\n promise.then(should => {\r\n if (should) result[s.id] = res;\r\n resolve(null);\r\n });\r\n });\r\n });\r\n });\r\n Promise.all(serializers).then(() => resolve(result));\r\n });\r\n }\r\n\r\n onFocus(): void {\r\n this.markAsUntouched({onlySelf: true});\r\n }\r\n\r\n onBlur(): void {\r\n this.markAsTouched({onlySelf: true});\r\n }\r\n\r\n showErrors(): void {\r\n this.markAsTouched({onlySelf: true});\r\n this.mControls.forEach(ctrl => ctrl.showErrors());\r\n }\r\n\r\n reloadControls(): Promise<any> {\r\n let callback = () => {};\r\n if (this.initialized === false) {\r\n this.initialized = true;\r\n this.loading = true;\r\n callback = () => {\r\n this.loading = false;\r\n // this.cdr.detectChanges();\r\n const root = this.form.root;\r\n root.onInit.emit(root);\r\n root.onStatusChange.emit(root);\r\n // https://github.com/angular/angular/issues/14542\r\n const statusTimer = TimerUtils.createInterval();\r\n statusTimer.set(() => {\r\n if (this.status == \"PENDING\") return;\r\n statusTimer.clear();\r\n root.onStatusChange.emit(root);\r\n }, 50);\r\n setTimeout(statusTimer.clear, 5000);\r\n };\r\n }\r\n const promise = new Promise<any>(resolve => {\r\n this.load().then(() => this.check().then(resolve));\r\n });\r\n promise.then(callback, callback);\r\n return promise;\r\n }\r\n\r\n setup(model: any, info: IDynamicFormInfo): void {\r\n this.mName = info.name || \"\";\r\n this.mModel = model;\r\n this.mControls.forEach(ctrl => this.removeControl(ctrl.id));\r\n this.mControls = DynamicFormGroup.createFormControls(this, info.controls);\r\n this.mControls.forEach((ctrl: any) => this.addControl(ctrl.id, ctrl));\r\n this.mSerializers = DynamicFormGroup.createFormSerializers(this, info.serializers);\r\n this.mFieldSets = info.fieldSets ? info.fieldSets.reduce((result, fs) => {\r\n result[fs.id] = fs;\r\n return result;\r\n }, {}) : getFormFieldSets(Object.getPrototypeOf(model).constructor);\r\n }\r\n\r\n updateModel(control: IDynamicFormControl): void {\r\n this.model[control.id] = control.value;\r\n this.changeTimer.clear();\r\n this.changeTimer.set(() => {\r\n this.check().then(() => this.reloadControlsFrom(control, new Set<IDynamicFormControl>()).then(() => {\r\n this.form.root.onChange.emit(control);\r\n }));\r\n }, 250);\r\n }\r\n\r\n private reloadControlsFrom(control: IDynamicFormControl, controls?: Set<IDynamicFormControl>): Promise<any> {\r\n const data = control.data;\r\n if (!data || !data.reload) return Promise.resolve(null);\r\n const reload = ObjectUtils.isArray(data.reload) ? data.reload : [data.reload];\r\n return Promise.all(reload.map(id => {\r\n const nextControl = this.getControl(id);\r\n if (!nextControl || controls.has(nextControl)) return Promise.resolve(null);\r\n controls.add(nextControl);\r\n return new Promise<any>(resolve => {\r\n nextControl.load().then(() => {\r\n this.reloadControlsFrom(nextControl, controls).then(resolve);\r\n });\r\n })\r\n }))\r\n }\r\n}\r\n\r\nexport class DynamicFormControl extends FormControl implements IDynamicFormControl {\r\n\r\n get id(): string {\r\n return this.helper.id;\r\n }\r\n\r\n get type(): string {\r\n return this.helper.type;\r\n }\r\n\r\n get data(): IFormControlData {\r\n return this.helper.data;\r\n }\r\n\r\n get visible(): boolean {\r\n return this.helper.visible;\r\n }\r\n\r\n get meta(): any {\r\n return this.helper.meta;\r\n }\r\n\r\n get injector(): Injector {\r\n return this.form.injector;\r\n }\r\n\r\n get label(): string {\r\n return this.data.label !== \"\" ? `${this.group.prefix}${this.data.label}` : \"\";\r\n }\r\n\r\n get provider(): IFormControlProvider {\r\n return this.helper.provider;\r\n }\r\n\r\n get model(): any {\r\n return this.group.model;\r\n }\r\n\r\n get formId(): string {\r\n return this.helper.formId;\r\n }\r\n\r\n form: IDynamicFormBase;\r\n\r\n private helper: DynamicFormControlHelper;\r\n\r\n constructor(private control: IFormControl, public readonly group: DynamicFormGroup) {\r\n super(group.model[control.id], {updateOn: control.data.updateOn || group.updateOn});\r\n this.group.addControl(control.id, this);\r\n this.form = this.group.form;\r\n this.helper = new DynamicFormControlHelper(this.form, control);\r\n this.helper.findProvider(this);\r\n this.valueChanges.subscribe(() => this.group.updateModel(this));\r\n this.setAsyncValidators(createValidator(this));\r\n }\r\n\r\n getData<T extends IFormControlData>(): T {\r\n return <T>this.data;\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return null;\r\n }\r\n\r\n load(): Promise<any> {\r\n return this.helper.load(this);\r\n }\r\n\r\n check(): Promise<any> {\r\n const check = this.helper.check(this);\r\n check.then(readonly => {\r\n if (readonly || this.group.disabled) this.disable({emitEvent: false}); else this.enable({emitEvent: false});\r\n });\r\n return check;\r\n }\r\n\r\n shouldSerialize(): Promise<boolean> {\r\n return this.helper.shouldSerialize(this);\r\n }\r\n\r\n shouldValidate(): Promise<boolean> {\r\n return this.helper.shouldValidate(this);\r\n }\r\n\r\n serialize(): Promise<any> {\r\n return Promise.resolve(this.value);\r\n }\r\n\r\n onFocus(): void {\r\n this.markAsUntouched({onlySelf: true});\r\n }\r\n\r\n onBlur(): void {\r\n this.markAsTouched({onlySelf: true});\r\n }\r\n\r\n showErrors(): void {\r\n this.markAsTouched({onlySelf: true});\r\n }\r\n}\r\n\r\nexport interface IFormControl {\r\n id: string;\r\n type: string;\r\n visible?: boolean;\r\n data?: IFormControlData;\r\n}\r\n\r\nexport interface IFormControlData {\r\n label?: string;\r\n labelAlign?: string;\r\n fieldSet?: string;\r\n classes?: string;\r\n readonly?: FormControlTesterFactory;\r\n hidden?: FormControlTesterFactory;\r\n shouldSerialize?: FormControlTesterFactory;\r\n shouldValidate?: FormControlTesterFactory;\r\n validator?: FormControlValidatorFactory;\r\n validators?: FormControlValidatorFactory[];\r\n updateOn?: DynamicFormUpdateOn;\r\n reload?: string | string[];\r\n}\r\n\r\nexport interface IFormInputData extends IFormControlData {\r\n type?: string;\r\n autocomplete?: string;\r\n placeholder?: string;\r\n useLanguage?: boolean;\r\n step?: number;\r\n min?: number;\r\n max?: number;\r\n}\r\n\r\nexport interface IFormSelectData extends IFormControlData {\r\n options?: IFormControlOptions | IResolveFactory;\r\n emptyOption?: boolean;\r\n type?: string;\r\n multi?: boolean;\r\n}\r\n\r\nexport interface IFormStaticData extends IFormControlData {\r\n properties?: string[];\r\n style?: string;\r\n}\r\n\r\nexport interface IFormFileData extends IFormControlData {\r\n accept?: string;\r\n multi?: boolean;\r\n baseUrl?: string;\r\n asFile?: boolean;\r\n asDataUrl?: boolean;\r\n uploadUrl?: string;\r\n uploadOptions?: IRequestOptions;\r\n createUploadData?: (file: File) => any;\r\n}\r\n\r\nexport interface IFormModelData extends IFormControlData, IDynamicFormInfo {\r\n\r\n}\r\n\r\nexport interface IFormFieldSet {\r\n id: string;\r\n classes?: string;\r\n title?: string;\r\n titleClasses?: string;\r\n setClasses?: string;\r\n controlClasses?: string;\r\n}\r\n\r\nexport interface IFormControlOption {\r\n id: any;\r\n label: string;\r\n selectable?: boolean;\r\n}\r\n\r\n// --- Basic form interfaces ---\r\n\r\nexport interface IDynamicFormTemplates {\r\n [id: string]: TemplateRef<any>;\r\n}\r\n\r\nexport interface IDynamicFormConfig {\r\n path?: string | number | Array<string | number>;\r\n name?: string;\r\n testId?: string;\r\n classes?: string;\r\n formClasses?: string;\r\n innerFormClasses?: string;\r\n id: string;\r\n}\r\n\r\nexport interface IDynamicSingleFormConfig extends IDynamicFormConfig, IDynamicFormInfo {\r\n data: any;\r\n controlData?: IFormControlData;\r\n multi?: false;\r\n}\r\n\r\nexport interface IDynamicMultiFormConfig extends IDynamicFormConfig {\r\n data: IDynamicFormsConfigs;\r\n multi: true;\r\n}\r\n\r\nexport type IDynamicFormsConfigs = Array<IDynamicSingleFormConfig | IDynamicMultiFormConfig>;\r\n\r\nexport interface IDynamicFormBase {\r\n\r\n name?: string;\r\n testId?: string;\r\n readonly?: boolean;\r\n updateOn?: \"change\" | \"blur\" | \"submit\";\r\n classes: string;\r\n parent: IDynamicFormBase;\r\n\r\n wrapperTemplate: TemplateRef<any>;\r\n fieldSetTemplate: TemplateRef<any>;\r\n controlTemplate: TemplateRef<any>;\r\n\r\n controlTemplates: IDynamicFormTemplates;\r\n labelTemplates: IDynamicFormTemplates;\r\n inputTemplates: IDynamicFormTemplates;\r\n prefixTemplates: IDynamicFormTemplates;\r\n suffixTemplates: IDynamicFormTemplates;\r\n setPrefixTemplates: IDynamicFormTemplates;\r\n setSuffixTemplates: IDynamicFormTemplates;\r\n\r\n onChange: EventEmitter<IDynamicFormControl>;\r\n onStatusChange: EventEmitter<IDynamicFormBase>;\r\n onInit: EventEmitter<IDynamicFormBase>;\r\n onSubmit: EventEmitter<IDynamicFormBase>;\r\n\r\n root?: IDynamicFormBase;\r\n status: DynamicFormState;\r\n injector?: Injector;\r\n cdr?: ChangeDetectorRef;\r\n\r\n validate(showErrors?: boolean): Promise<any>;\r\n\r\n serialize(validate?: boolean): Promise<any>;\r\n\r\n check(): Promise<any>;\r\n\r\n getControl(id: string): IDynamicFormControl;\r\n\r\n findProvider(control: IDynamicFormControl): IFormControlProvider;\r\n}\r\n\r\nexport declare type AsyncSubmitMethod = (form: IDynamicFormBase) => Promise<IAsyncMessage>;\r\n\r\nexport interface IDynamicFormInfo {\r\n group?: DynamicFormGroup;\r\n name?: string;\r\n controls?: IFormControl[];\r\n serializers?: IFormSerializers;\r\n fieldSets?: IFormFieldSet[];\r\n}\r\n\r\nexport interface IDynamicForm extends IDynamicFormBase, IDynamicFormInfo {\r\n data: any;\r\n}\r\n\r\nexport interface IDynamicFormFieldSets {\r\n [id: string]: IFormFieldSet\r\n}\r\n\r\n// --- Basic form types ---\r\nexport type FormControlTester = (control: IDynamicFormControl) => Promise<boolean>;\r\nexport type FormControlTesterFactory = FormControlTester | IResolveFactory;\r\nexport type FormControlValidator = (control: IDynamicFormControl) => Promise<string | ValidationErrors>;\r\nexport type FormControlValidatorFactory = FormControlValidator | IResolveFactory;\r\n\r\n// --- Decorator functions ---\r\nconst emptyArray: any = [];\r\nconst emptyTester: FormControlTester = () => {\r\n return Promise.resolve(false);\r\n};\r\n\r\nexport function defaultSerializer(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const control = parent.getControl(id);\r\n return !control ? Promise.resolve(parent.model[id]) : control.serialize();\r\n}\r\n\r\nexport function FormSerializable(serializer?: IFormControlSerializer | IResolveFactory): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n ReflectUtils.defineMetadata(\"dynamicFormSerializer\", serializer || defaultSerializer, target, propertyKey);\r\n };\r\n}\r\n\r\nexport function FormInput(data?: IFormInputData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n const meta = ReflectUtils.getOwnMetadata(\"design:type\", target, propertyKey);\r\n const type = meta ? meta.name : \"\";\r\n let inputType = propertyKey.indexOf(\"password\") < 0 ? \"text\" : \"password\";\r\n switch (type) {\r\n case \"Number\":\r\n inputType = \"number\";\r\n break;\r\n case \"Boolean\":\r\n inputType = \"checkbox\";\r\n break;\r\n }\r\n defineFormControl(target, propertyKey, createFormInput(propertyKey, data, inputType));\r\n };\r\n}\r\n\r\nexport function FormSelect(data?: IFormSelectData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormSelect(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormStatic(data?: IFormStaticData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormStatic(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormModel(data?: IFormModelData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormModel(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormFile(data?: IFormFileData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormFile(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormFieldSet(data: IFormFieldSet): ClassDecorator {\r\n return (target: any): void => {\r\n const sets = getFormFieldSets(target);\r\n data.classes = data.classes || \"\";\r\n sets[data.id] = data;\r\n ReflectUtils.defineMetadata(\"dynamicFormFieldSets\", sets, target);\r\n };\r\n}\r\n\r\nexport interface FormGroupProvider extends ValueProvider {\r\n provide: InjectionToken<Type<IFormGroupComponent>>;\r\n multi?: boolean;\r\n useValue: Type<IFormGroupComponent>;\r\n}\r\n\r\nexport function provideFormGroup(component: Type<IFormGroupComponent>): FormGroupProvider {\r\n return {\r\n provide: FORM_GROUP_TYPE,\r\n useValue: component\r\n };\r\n}\r\n\r\nexport interface FormControlProvider {\r\n provide: InjectionToken<IFormControlProvider>;\r\n multi?: boolean;\r\n useValue: IFormControlProvider;\r\n}\r\n\r\nexport function provideFormControl(component: Type<IFormControlComponent>, acceptor: IFormControlProviderAcceptor, loader: IFormControlProviderLoader, priority: number = 0): FormControlProvider {\r\n return {\r\n provide: FORM_CONTROL_PROVIDER,\r\n multi: true,\r\n useValue: {\r\n component: component,\r\n priority: priority,\r\n acceptor: acceptor,\r\n loader: loader\r\n }\r\n };\r\n}\r\n\r\nexport function defineFormControl(target: any, propertyKey: string, control: IFormControl): void {\r\n ReflectUtils.defineMetadata(\"dynamicFormControl\", control, target, propertyKey);\r\n}\r\n\r\nexport function getFormFieldSets(target: any): IDynamicFormFieldSets {\r\n return ReflectUtils.getMetadata(\"dynamicFormFieldSets\", target) || {};\r\n}\r\n\r\nexport function getFormControl(target: any, propertyKey: string): IFormControl {\r\n return ReflectUtils.getMetadata(\"dynamicFormControl\", target, propertyKey);\r\n}\r\n\r\nexport function getFormSerializer(target: any, propertyKey: string): IFormControlSerializer | IResolveFactory {\r\n return ReflectUtils.getMetadata(\"dynamicFormSerializer\", target, propertyKey);\r\n}\r\n\r\nexport function createFormControl(id: string, type: string, data?: IFormControlData): IFormControl {\r\n data = data || {};\r\n data.label = ObjectUtils.isNullOrUndefined(data.label) ? id : data.label;\r\n data.labelAlign = data.labelAlign || \"left\";\r\n data.fieldSet = data.fieldSet || UniqueUtils.uuid();\r\n data.classes = data.classes || \"\";\r\n data.readonly = data.readonly || emptyTester;\r\n data.hidden = data.hidden || emptyTester;\r\n data.validators = data.validators || emptyArray;\r\n return {\r\n id: id,\r\n type: type,\r\n data: data\r\n };\r\n}\r\n\r\nexport function createFormInput(id: string, data: IFormInputData, type: string = \"text\"): IFormControl {\r\n const control = createFormControl(id, \"input\", data);\r\n data = control.data;\r\n data.type = data.type || type;\r\n data.classes = !data.classes ? `form-group-${data.type}` : `${data.classes} form-group-${data.type}`;\r\n data.placeholder = data.placeholder || \"\";\r\n data.step = data.step || 1;\r\n return control;\r\n}\r\n\r\nexport function createFormSelect(id: string, data: IFormSelectData): IFormControl {\r\n const control = createFormControl(id, \"select\", data);\r\n data = control.data;\r\n data.options = data.options || (() => Promise.resolve([]));\r\n data.type = data.type || \"select\";\r\n const classType = data.type == \"select\" ? \"select\" : `select-${data.type}`;\r\n data.classes = !data.classes ? `form-group-${classType}` : `${data.classes} form-group-${classType}`;\r\n return control;\r\n}\r\n\r\nexport function createFormStatic(id: string, data: IFormStaticData): IFormControl {\r\n const control = createFormControl(id, \"static\", data);\r\n data = control.data;\r\n data.style = data.style || \"table\";\r\n return control;\r\n}\r\n\r\nexport function createFormModel(id: string, data: IFormModelData): IFormControl {\r\n const control = createFormControl(id, \"model\", data);\r\n data = control.data;\r\n data.name = data.name || \"\";\r\n return control;\r\n}\r\n\r\nexport function createFormFile(id: string, data: IFormFileData): IFormControl {\r\n const control = createFormControl(id, \"file\", data);\r\n data = control.data;\r\n data.accept = data.accept || \".jpg,.jpeg,.png\";\r\n data.multi = data.multi || false;\r\n data.baseUrl = ObjectUtils.isString(data.baseUrl) ? data.baseUrl : \"assets/\";\r\n data.uploadUrl = ObjectUtils.isString(data.uploadUrl) ? data.uploadUrl : \"assets\";\r\n data.createUploadData = data.createUploadData || ((file: File) => {\r\n const form = new FormData();\r\n form.append(\"file\", file);\r\n return form;\r\n });\r\n return control;\r\n}\r\n","import {ComponentFactoryResolver, Inject, Injectable, Injector, Type, ViewContainerRef} from \"@angular/core\";\r\nimport {\r\n FORM_CONTROL_PROVIDER, FORM_GROUP_TYPE,\r\n IDynamicFormControl,\r\n IFormControlComponent,\r\n IFormControlProvider,\r\n IFormGroupComponent\r\n} from \"../common-types\";\r\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\r\n\r\n@Injectable()\r\nexport class DynamicFormService {\r\n\r\n constructor(@Inject(FORM_CONTROL_PROVIDER) private components: IFormControlProvider[],\r\n @Inject(FORM_GROUP_TYPE) private groupType: Type<IFormGroupComponent>,\r\n private resolver: ComponentFactoryResolver,\r\n public readonly injector: Injector) {\r\n }\r\n\r\n findProvider(control: IDynamicFormControl): IFormControlProvider {\r\n if (!control) return null;\r\n const providers = this.components.filter(p => p.acceptor(control));\r\n if (providers.length == 0) {\r\n throw new Error(`No component provider for control: ${JSON.stringify({\r\n id: control.id,\r\n type: control.type,\r\n data: control.data\r\n })}`);\r\n }\r\n // Sort providers\r\n providers.sort((a, b) => ObjectUtils.compare(a.priority, b.priority))\r\n return providers[0];\r\n }\r\n\r\n createComponent(vcr: ViewContainerRef, provider: IFormControlProvider): IFormControlComponent {\r\n vcr.clear();\r\n if (!provider) return null;\r\n const factory = this.resolver.resolveComponentFactory(provider.component);\r\n return vcr.createComponent(factory).instance;\r\n }\r\n\r\n createGroup(vcr: ViewContainerRef): IFormGroupComponent {\r\n vcr.clear();\r\n const factory = this.resolver.resolveComponentFactory(this.groupType);\r\n return vcr.createComponent(factory).instance;\r\n }\r\n}\r\n","import {DatePipe} from \"@angular/common\";\r\nimport {FactoryDependencies, FileUtils, ObjectUtils} from \"@stemy/ngx-utils\";\r\nimport {FormControlTester, FormControlValidator, IDynamicFormControl, IFormControlSerializer} from \"../common-types\";\r\n\r\nexport class FormUtilities {\r\n\r\n static checkField(expression: string = `true`): FormControlTester {\r\n // @dynamic\r\n const lambda = (control: IDynamicFormControl): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {control: control}));\r\n };\r\n return lambda;\r\n }\r\n\r\n static checkReadonly(control: IDynamicFormControl): Promise<boolean> {\r\n return Promise.resolve(control.visible && !control.disabled);\r\n }\r\n\r\n static readonly(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n }\r\n\r\n static validateJSON(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n if (!value) return Promise.resolve(null);\r\n try {\r\n JSON.parse(value);\r\n return Promise.resolve(null);\r\n } catch (e) {\r\n return Promise.resolve(\"error.not-valid-json\")\r\n }\r\n }\r\n\r\n static validateRequired(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n return Promise.resolve(!ObjectUtils.isNumber(value) && !value ? \"error.required\" : null);\r\n }\r\n\r\n static validateMinLength(length: number): FormControlValidator {\r\n // @dynamic\r\n const lambda = (control: IDynamicFormControl) => {\r\n const value = control.value;\r\n if (!ObjectUtils.isString(value) || value.length < length) {\r\n return Promise.resolve({\"error.min-length\": {length: length}});\r\n }\r\n return Promise.resolve(null);\r\n };\r\n return lambda;\r\n }\r\n\r\n static validateMaxLength(length: number): FormControlValidator {\r\n // @dynamic\r\n const lambda = (control: IDynamicFormControl) => {\r\n const value = control.value;\r\n if (!ObjectUtils.isString(value) || value.length > length) {\r\n return Promise.resolve({\"error.max-length\": {length: length}});\r\n }\r\n return Promise.resolve(null);\r\n };\r\n return lambda;\r\n }\r\n\r\n static validateRequiredTranslation(control: IDynamicFormControl): Promise<string> {\r\n const value: any[] = control.value;\r\n if (!value || value.length == 0) return Promise.resolve(\"error.required\");\r\n return Promise.resolve(value.findIndex(t => (t.lang == \"de\" || t.lang == \"en\") && !t.translation) < 0 ? null : \"error.required\");\r\n }\r\n\r\n static validateEmail(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n if (!value) return Promise.resolve(null);\r\n const emailRegexp = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return Promise.resolve(emailRegexp.test(value) ? null : \"error.invalid-email\");\r\n }\r\n\r\n static validatePhone(control: IDynamicFormControl): Promise<string> {\r\n const value = control.value;\r\n if (!value) return Promise.resolve(null);\r\n const phoneRegexp = /^(?:\\d){10,12}$/;\r\n return Promise.resolve(phoneRegexp.test(value) ? null : \"error.invalid-phone\");\r\n }\r\n\r\n static serializeLogo(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: string = parent.model[id];\r\n return Promise.resolve(!value || value.length == 0 ? null : value);\r\n }\r\n\r\n static serializeFile(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: any = parent.model[id];\r\n if (ObjectUtils.isBlob(value)) return Promise.resolve(value);\r\n return Promise.resolve(!ObjectUtils.isString(value) || !value.startsWith(\"data:\") ? null : FileUtils.dataToBlob(value));\r\n }\r\n\r\n static serializeNumber(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: string = parent.model[id];\r\n return Promise.resolve(!value || value.length == 0 ? 0 : parseFloat(value));\r\n }\r\n\r\n static serializeJSON(id: string, parent: IDynamicFormControl): Promise<any> {\r\n const value: string = parent.model[id];\r\n return Promise.resolve(!value ? {} : JSON.parse(value));\r\n }\r\n\r\n @FactoryDependencies(DatePipe)\r\n static serializeDate(date: DatePipe, format: string = \"yyyy-MM-dd\", defaultValue: string = \"\"): IFormControlSerializer {\r\n // @dynamic\r\n const lambda = (id: string, parent: IDynamicFormControl): Promise<any> => {\r\n const value: any = parent.model[id];\r\n if (!ObjectUtils.isDate(value)) return Promise.resolve(value || defaultValue);\r\n return Promise.resolve(!format ? value : date.transform(value, format));\r\n };\r\n return lambda;\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {API_SERVICE, IApiService, StringUtils} from \"@stemy/ngx-utils\";\r\n\r\nimport {FormUtilities} from \"./form-utilities\";\r\n\r\nimport {\r\n createFormFile,\r\n createFormInput,\r\n createFormSelect,\r\n FormControlValidatorFactory,\r\n IDynamicFormControl,\r\n IFormControl,\r\n IFormControlData,\r\n IFormFileData,\r\n IFormInputData,\r\n IFormSelectData,\r\n IFormSerializers\r\n} from \"../common-types\";\r\n\r\nexport interface IOpenApiSchemaProperty {\r\n id: string;\r\n type: string;\r\n format: string;\r\n column: boolean;\r\n additionalProperties: any;\r\n $ref: string;\r\n enum: string[];\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IOpenApiSchema {\r\n properties: { [name: string]: IOpenApiSchemaProperty };\r\n required: string[];\r\n}\r\n\r\nexport interface IDynamicFormInputs {\r\n controls?: IFormControl[];\r\n serializers?: IFormSerializers;\r\n schema?: IOpenApiSchema;\r\n}\r\n\r\n@Injectable()\r\nexport class OpenApiService {\r\n\r\n private schemasPromise: Promise<any>;\r\n private schemas: any;\r\n\r\n constructor(@Inject(API_SERVICE) private api: IApiService) {\r\n const baseUrl = this.api.url(\"\").replace(\"api/\", \"api-docs\");\r\n this.schemas = {};\r\n this.schemasPromise = new Promise<any>((resolve => {\r\n this.api.client.get(baseUrl).subscribe((res: any) => {\r\n this.schemas = res.definitions || {};\r\n resolve(this.schemas);\r\n }, () => {\r\n resolve({});\r\n });\r\n }));\r\n }\r\n\r\n getFormInputsForSchema(name: string): Promise<IDynamicFormInputs> {\r\n this.api.cache = {};\r\n return this.schemasPromise.then(schemas => {\r\n const schema: IOpenApiSchema = schemas[name];\r\n const inputs = this.getFormInputsForSchemaDef(schema);\r\n return inputs;\r\n });\r\n }\r\n\r\n private getFormInputsForSchemaDef(schema: IOpenApiSchema): IDynamicFormInputs {\r\n const inputs: IDynamicFormInputs = {};\r\n if (!schema) return inputs;\r\n inputs.schema = schema;\r\n inputs.serializers = {};\r\n inputs.controls = Object.keys(schema.properties || {}).map(p => {\r\n const property = schema.properties[p];\r\n property.id = p;\r\n inputs.serializers[p] = (id: string, parent: IDynamicFormControl) => {\r\n return Promise.resolve(parent.model[id]);\r\n };\r\n return this.getFormControlForProperty(property, schema);\r\n }).filter(t => null !== t);\r\n return inputs;\r\n }\r\n\r\n private getFormControlForProperty(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormControl {\r\n if (Array.isArray(property.enum)) {\r\n return createFormSelect(property.id, this.getFormSelectData(property, schema));\r\n }\r\n switch (property.type) {\r\n case \"string\":\r\n case \"number\":\r\n case \"boolean\":\r\n case \"textarea\":\r\n return createFormInput(property.id, this.getFormInputData(property, schema));\r\n case \"list\":\r\n return createFormSelect(property.id, this.getFormSelectData(property, schema));\r\n case \"file\":\r\n return createFormFile(property.id, this.getFormFileData(property, schema));\r\n }\r\n return null;\r\n }\r\n\r\n private getBaseFormData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormControlData {\r\n return {\r\n readonly: property.readonly ? FormUtilities.readonly : null,\r\n shouldSerialize: FormUtilities.checkReadonly,\r\n validators: this.getValidators(property, schema)\r\n }\r\n }\r\n\r\n private getFormInputData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormInputData {\r\n let type = StringUtils.has(property.id, \"password\", \"Password\") ? \"password\" : property.type;\r\n switch (property.type) {\r\n case \"boolean\":\r\n type = \"checkbox\";\r\n break;\r\n case \"textarea\":\r\n type = \"textarea\";\r\n break;\r\n }\r\n return {\r\n ...this.getBaseFormData(property, schema),\r\n type\r\n };\r\n }\r\n\r\n private getFormSelectData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormSelectData {\r\n const options = Array.isArray(property.enum)\r\n ? () => {\r\n return Promise.resolve(property.enum.map(id => ({ id, label: `${property.id}.${id}` })));\r\n }\r\n : () => {\r\n this.api.cache[property.endpoint] = this.api.cache[property.endpoint] || this.api.list(property.endpoint, this.api.makeListParams(1, -1)).then(result => {\r\n return result.items.map(i => {\r\n return { id: i._id, label: i.name };\r\n });\r\n });\r\n return this.api.cache[property.endpoint];\r\n };\r\n return {\r\n ...this.getBaseFormData(property, schema),\r\n options,\r\n };\r\n }\r\n\r\n private getFormFileData(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): IFormFileData {\r\n return {\r\n ...this.getBaseFormData(property, schema),\r\n multi: property.multi\r\n };\r\n }\r\n\r\n private getValidators(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): FormControlValidatorFactory[] {\r\n const validators: FormControlValidatorFactory[] = [];\r\n if (schema.required.indexOf(property.id) >= 0) {\r\n validators.push(FormUtilities.validateRequired);\r\n }\r\n if (property.minLength) {\r\n validators.push({\r\n type: FormUtilities,\r\n func: FormUtilities.validateMinLength,\r\n params: [property.minLength]\r\n });\r\n }\r\n if (property.maxLength) {\r\n validators.push({\r\n type: FormUtilities,\r\n func: FormUtilities.validateMaxLength,\r\n params: [property.maxLength]\r\n });\r\n }\r\n switch (property.format) {\r\n case \"email\":\r\n validators.push(FormUtilities.validateEmail);\r\n break;\r\n }\r\n return validators;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {IAsyncMessage, IToasterService, TOASTER_SERVICE} from \"@stemy/ngx-utils\";\r\nimport {AsyncSubmitMethod, IDynamicFormBase} from \"../common-types\";\r\n\r\n@Directive({\r\n selector: \"[async-submit]\",\r\n exportAs: \"async-submit\"\r\n})\r\nexport class AsyncSubmitDirective implements OnInit, OnDestroy {\r\n\r\n @Input(\"async-submit\") method: AsyncSubmitMethod;\r\n @Input() form: IDynamicFormBase;\r\n\r\n @Output() onSuccess: EventEmitter<IAsyncMessage>;\r\n @Output() onError: EventEmitter<IAsyncMessage>;\r\n\r\n private loading: boolean;\r\n private disabled: boolean;\r\n private callback: Function;\r\n private onStatusChange: Subscription;\r\n private onSubmit: Subscription;\r\n\r\n @HostBinding(\"class.disabled\")\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding(\"class.loading\")\r\n get isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n constructor(@Inject(TOASTER_SERVICE) private toaster: IToasterService, private cdr: ChangeDetectorRef, elem: ElementRef, renderer: Renderer2) {\r\n this.onSuccess = new EventEmitter<IAsyncMessage>();\r\n this.onError = new EventEmitter<IAsyncMessage>();\r\n if (elem.nativeElement.tagName !== \"BUTTON\") return;\r\n renderer.setAttribute(elem.nativeElement, \"type\", \"button\");\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.form) return;\r\n this.disabled = this.form.status !== \"VALID\";\r\n this.cdr.detectChanges();\r\n this.onStatusChange = this.form.onStatusChange.subscribe(form => {\r\n this.disabled = form.status !== \"VALID\";\r\n this.cdr.detectChanges();\r\n if (!this.callback || form.status == \"PENDING\") return;\r\n if (!this.disabled) {\r\n this.callback();\r\n }\r\n this.callback = null;\r\n });\r\n this.onSubmit = this.form.onSubmit.subscribe(() => this.callMethod());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.onStatusChange) this.onStatusChange.unsubscribe();\r\n if (this.onSubmit) this.onSubmit.unsubscribe();\r\n }\r\n\r\n @HostListener(\"click\")\r\n click(): void {\r\n this.callback = () => this.callMethod();\r\n if (this.form.status !== \"VALID\" && this.form.status !== \"INVALID\") return;\r\n this.callback();\r\n this.callback = null;\r\n }\r\n\r\n callMethod(): void {\r\n if (this.loading) return;\r\n this.loading = true;\r\n this.method(this.form).then(result => {\r\n this.loading = false;\r\n if (result) {\r\n this.onSuccess.emit(result);\r\n this.toaster.success(result.message, result.context);\r\n }\r\n }, reason => {\r\n if (!reason || !reason.message)\r\n throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n this.loading = false;\r\n this.onError.emit(reason);\r\n this.toaster.error(reason.message, reason.context);\r\n });\r\n }\r\n}\r\n","import {Directive, Input, OnChanges, SimpleChanges, ViewContainerRef} from \"@angular/core\";\r\nimport {IDynamicFormControl, IFormControlComponent} from \"../common-types\";\r\nimport {DynamicFormService} from \"../services/dynamic-form.service\";\r\n\r\n@Directive({\r\n selector: \"[form-control]\",\r\n})\r\nexport class DynamicFormControlDirective implements OnChanges {\r\n\r\n @Input(\"form-control\") control: IDynamicFormControl;\r\n\r\n get component(): IFormControlComponent {\r\n return this.comp;\r\n }\r\n\r\n private comp: IFormControlComponent;\r\n\r\n constructor(private vcr: ViewContainerRef, private forms: DynamicFormService) {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.control) {\r\n this.comp = this.forms.createComponent(this.vcr, this.control.provider);\r\n }\r\n if (!this.comp) return;\r\n this.comp.control = this.control;\r\n }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: `ng-template[control],\r\n ng-template[label],\r\n ng-template[input],\r\n ng-template[prefix],\r\n ng-template[suffix],\r\n ng-template[setPrefix],\r\n ng-template[setSuffix],\r\n ng-template[formPrefix],\r\n ng-template[formSuffix],\r\n ng-template[innerFormPrefix],\r\n ng-template[innerFormSuffix]`\r\n})\r\nexport class DynamicFormTemplateDirective {\r\n\r\n @Input() control: string;\r\n @Input() label: string;\r\n @Input() input: string;\r\n @Input() prefix: string;\r\n @Input() suffix: string;\r\n @Input() setPrefix: string;\r\n @Input() setSuffix: string;\r\n @Input() formPrefix: string;\r\n @Input() formSuffix: string;\r\n @Input() innerFormPrefix: string;\r\n @Input() innerFormSuffix: string;\r\n\r\n constructor(public template: TemplateRef<any>) {\r\n }\r\n}\r\n","import {Directive, Input, OnChanges, SimpleChanges, ViewContainerRef} from \"@angular/core\";\r\nimport {IDynamicFormControl, IFormControlComponent, IFormGroupComponent} from \"../common-types\";\r\nimport {DynamicFormService} from \"../services/dynamic-form.service\";\r\n\r\n@Directive({\r\n selector: \"[form-group]\",\r\n})\r\nexport class DynamicFormGroupDirective implements OnChanges {\r\n\r\n @Input(\"form-group\") control: IDynamicFormControl;\r\n @Input() visible: boolean;\r\n\r\n get component(): IFormControlComponent {\r\n return this.comp;\r\n }\r\n\r\n private comp: IFormGroupComponent;\r\n\r\n constructor(private vcr: ViewContainerRef, private forms: DynamicFormService) {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.control || changes.form || changes.visible) {\r\n if (!this.visible) {\r\n this.vcr.clear();\r\n this.comp = null;\r\n return;\r\n }\r\n this.comp = this.forms.createGroup(this.vcr);\r\n }\r\n if (!this.comp) return;\r\n this.comp.control = this.control;\r\n }\r\n}\r\n","import { AfterContentInit, ChangeDetectorRef, ContentChild, ContentChildren, EventEmitter, Injector, Input, Output, QueryList, TemplateRef, Directive } from \"@angular/core\";\r\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\r\nimport {\r\n DynamicFormControl, DynamicFormState, IDynamicFormBase, IDynamicFormControl, IDynamicFormTemplates,\r\n IFormControlProvider\r\n} from \"../../common-types\";\r\nimport {DynamicFormTemplateDirective} from \"../../directives/dynamic-form-template.directive\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\n\r\n@Directive()\r\nexport abstract class DynamicFormBaseComponent implements IDynamicFormBase, AfterContentInit {\r\n\r\n @Input() name: string;\r\n @Input() testId: string;\r\n @Input() readonly: boolean;\r\n @Input() updateOn: \"change\" | \"blur\" | \"submit\";\r\n @Input() classes: any;\r\n @Input() parent: IDynamicFormBase;\r\n\r\n @Input() wrapperTemplate: TemplateRef<any>;\r\n @Input() fieldSetTemplate: TemplateRef<any>;\r\n @Input() controlTemplate: TemplateRef<any>;\r\n\r\n @Input() controlTemplates: IDynamicFormTemplates;\r\n @Input() labelTemplates: IDynamicFormTemplates;\r\n @Input() inputTemplates: IDynamicFormTemplates;\r\n @Input() prefixTemplates: IDynamicFormTemplates;\r\n @Input() suffixTemplates: IDynamicFormTemplates;\r\n @Input() setPrefixTemplates: IDynamicFormTemplates;\r\n @Input() setSuffixTemplates: IDynamicFormTemplates;\r\n\r\n @Output() onChange: EventEmitter<IDynamicFormControl>;\r\n @Output() onStatusChange: EventEmitter<IDynamicFormBase>;\r\n @Output() onInit: EventEmitter<IDynamicFormBase>;\r\n @Output() onSubmit: EventEmitter<IDynamicFormBase>;\r\n\r\n @ContentChild(\"prefixTemplate\")\r\n prefixTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(\"suffixTemplate\")\r\n suffixTemplate: TemplateRef<any>;\r\n\r\n get root(): IDynamicFormBase {\r\n let form: IDynamicFormBase = this;\r\n while (ObjectUtils.isDefined(form.parent)) {\r\n form = form.parent;\r\n }\r\n return form;\r\n }\r\n\r\n abstract status: DynamicFormState;\r\n readonly injector: Injector;\r\n readonly cdr: ChangeDetectorRef;\r\n\r\n @ContentChildren(DynamicFormTemplateDirective)\r\n protected templates: QueryList<DynamicFormTemplateDirective>;\r\n\r\n @ContentChild(\"wrapperTemplate\")\r\n protected cWrapperTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(\"fieldSetTemplate\")\r\n protected cFieldSetTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(\"controlTemplate\")\r\n protected cControlTemplate: TemplateRef<any>;\r\n\r\n protected constructor(cdr: ChangeDetectorRef, private formService: DynamicFormService) {\r\n this.name = \"\";\r\n this.testId = \"form\";\r\n this.controlTemplates = {};\r\n this.labelTemplates = {};\r\n this.inputTemplates = {};\r\n this.prefixTemplates = {};\r\n this.suffixTemplates = {};\r\n\r\n this.onChange = new EventEmitter<DynamicFormControl>();\r\n this.onStatusChange = new EventEmitter<IDynamicFormBase>();\r\n this.onInit = new EventEmitter<IDynamicFormBase>();\r\n this.onSubmit = new EventEmitter<IDynamicFormBase>();\r\n this.injector = formService.injector;\r\n this.cdr = cdr;\r\n }\r\n\r\n // --- IDynamicFormBase\r\n\r\n abstract validate(showErrors?: boolean): Promise<any>;\r\n abstract serialize(validate?: boolean): Promise<any>;\r\n abstract check(): Promise<any>;\r\n abstract getControl(id: string): IDynamicFormControl;\r\n\r\n findProvider(control: IDynamicFormControl): IFormControlProvider {\r\n return this.formService.findProvider(control);\r\n }\r\n\r\n // --- Lifecycle hooks\r\n\r\n ngAfterContentInit(): void {\r\n this.wrapperTemplate = this.wrapperTemplate || this.cWrapperTemplate;\r\n this.fieldSetTemplate = this.fieldSetTemplate || this.cFieldSetTemplate;\r\n this.controlTemplate = this.controlTemplate || this.cControlTemplate;\r\n this.controlTemplates = this.filterTemplates(this.controlTemplates, \"control\");\r\n this.labelTemplates = this.filterTemplates(this.labelTemplates, \"label\");\r\n this.inputTemplates = this.filterTemplates(this.inputTemplates , \"input\");\r\n this.prefixTemplates = this.filterTemplates(this.prefixTemplates, \"prefix\");\r\n this.suffixTemplates = this.filterTemplates(this.suffixTemplates, \"suffix\");\r\n this.setPrefixTemplates = this.filterTemplates(this.setPrefixTemplates, \"setPrefix\");\r\n this.setSuffixTemplates = this.filterTemplates(this.setSuffixTemplates, \"setSuffix\");\r\n }\r\n\r\n protected filterTemplates(templates: IDynamicFormTemplates, type: string): IDynamicFormTemplates {\r\n if (ObjectUtils.isObject(templates) && Object.keys(templates).length > 0) return templates;\r\n return this.templates.filter(t => !!t[type]).reduce((result, directive) => {\r\n result[directive[type]] = directive.template;\r\n return result;\r\n }, {});\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {first} from \"rxjs/operators\";\r\nimport {\r\n DYNAMIC_FORM,\r\n DynamicFormGroup,\r\n DynamicFormState,\r\n IDynamicForm,\r\n IDynamicFormControl,\r\n IFormControl,\r\n IFormFieldSet,\r\n IFormSerializers\r\n} from \"../../common-types\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\nimport {DynamicFormBaseComponent} from \"../base/dynamic-form-base.component\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form, [dynamic-form]\",\r\n templateUrl: \"./dynamic-form.component.html\",\r\n providers: [\r\n {\r\n provide: DynamicFormBaseComponent,\r\n useExisting: DynamicFormComponent\r\n },\r\n {\r\n provide: DYNAMIC_FORM,\r\n useExisting: DynamicFormComponent\r\n }\r\n ]\r\n})\r\nexport class DynamicFormComponent extends DynamicFormBaseComponent implements IDynamicForm, AfterContentInit, OnChanges {\r\n\r\n @Input() group: DynamicFormGroup;\r\n @Input() controls: IFormControl[];\r\n @Input() serializers: IFormSerializers;\r\n @Input() fieldSets: IFormFieldSet[];\r\n @Input() data: any;\r\n\r\n defaultFieldSet: IFormFieldSet;\r\n\r\n get status(): DynamicFormState {\r\n return this.group.state;\r\n }\r\n\r\n get formControls(): IDynamicFormControl[] {\r\n return this.group.formControls;\r\n }\r\n\r\n constructor(cdr: ChangeDetectorRef, forms: DynamicFormService) {\r\n super(cdr, forms);\r\n this.group = new DynamicFormGroup(this);\r\n this.defaultFieldSet = {\r\n id: \"\",\r\n title: \"\",\r\n classes: \"\"\r\n };\r\n }\r\n\r\n // --- Lifecycle hooks\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.data) return;\r\n if (changes.data || changes.controls || changes.serializers || changes.formGroup) {\r\n if (this.group.id) return;\r\n this.group.setup(this.data, this);\r\n this.group.reloadControls();\r\n }\r\n }\r\n\r\n // --- Custom ---\r\n\r\n onFormSubmit(): void {\r\n const root = this.root;\r\n root.validate().then(() => root.onSubmit.emit(this), () => {});\r\n }\r\n\r\n // --- IDynamicForm ---\r\n\r\n validate(showErrors: boolean = true): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n this.group.statusChanges.pipe(first(status => status == \"VALID\" || status == \"INVALID\")).subscribe(status => {\r\n if (showErrors) this.group.showErrors();\r\n if (status == \"VALID\") {\r\n resolve(null);\r\n return;\r\n }\r\n reject(null);\r\n });\r\n this.group.updateValueAndValidity();\r\n });\r\n }\r\n\r\n serialize(validate?: boolean): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n const serialize = () => {\r\n this.group.serialize().then(resolve);\r\n };\r\n if (validate) {\r\n this.validate().then(serialize, reject);\r\n return;\r\n }\r\n serialize();\r\n });\r\n }\r\n\r\n check(): Promise<any> {\r\n return this.group.check();\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return this.group.getControl(id);\r\n }\r\n}\r\n","<ng-template #defaultFieldSetTemplate let-id=\"id\" let-controls=\"controls\" let-fieldSet=\"fieldSet\">\r\n <div [ngClass]=\"['form-fields', 'form-fields-' + id, fieldSet.classes]\">\r\n <ng-container [ngxTemplateOutlet]=\"setPrefixTemplates[fieldSet.id]\" [context]=\"fieldSet\"></ng-container>\r\n <div *ngIf=\"fieldSet.title\" [ngClass]=\"['form-title', fieldSet.titleClasses || '']\">\r\n {{ group.prefix + fieldSet.title | translate }}\r\n </div>\r\n <ng-template #subControls>\r\n <ng-container *ngFor=\"let control of controls\" [form-group]=\"control\" [visible]=\"control.visible\">\r\n\r\n </ng-container>\r\n </ng-template>\r\n <div *ngIf=\"fieldSet.setClasses; else subControls\" [ngClass]=\"fieldSet.setClasses\">\r\n <div *ngIf=\"fieldSet.controlClasses; else subControls\" [ngClass]=\"fieldSet.controlClasses\">\r\n <ng-container [ngTemplateOutlet]=\"subControls\"></ng-container>\r\n </div>\r\n </div>\r\n <ng-container [ngxTemplateOutlet]=\"setSuffixTemplates[fieldSet.id]\" [context]=\"fieldSet\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fieldSetsTemplate>\r\n <ng-container *ngFor=\"let fs of formControls | groupBy:'data.fieldSet'\"\r\n [ngxTemplateOutlet]=\"fieldSetTemplate || defaultFieldSetTemplate\"\r\n [context]=\"{form: this, id: fs.group, controls: fs.items, fieldSet: group.formFields[fs.group] || defaultFieldSet}\">\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #defaultWrapperTemplate let-form=\"form\" let-fieldSetsTemplate=\"fieldSetsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"prefixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: form, fieldSetsTemplate: fieldSetsTemplate}\"></ng-container>\r\n <form class=\"dynamic-form\" [ngClass]=\"form.classes || ''\" [formGroup]=\"group\" (submit)=\"onFormSubmit()\">\r\n <ng-container [ngTemplateOutlet]=\"fieldSetsTemplate\"></ng-container>\r\n <ng-content></ng-content>\r\n <div *ngIf=\"form.status == 'PENDING'\" class=\"dynamic-form-validator\">\r\n {{ group.prefix + 'message.pending' | translate }}\r\n </div>\r\n <button [ngStyle]=\"{display: 'none'}\">Submit</button>\r\n </form>\r\n <ng-container [ngTemplateOutlet]=\"suffixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: form, fieldSetsTemplate: fieldSetsTemplate}\"></ng-container>\r\n</ng-template>\r\n<ng-template #loadingTemplate>\r\n <div *ngIf=\"status == 'LOADING'\" class=\"dynamic-form-loader\">\r\n {{ group.prefix + 'message.loading' | translate }}\r\n </div>\r\n</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this, fieldSetsTemplate: fieldSetsTemplate}\"\r\n *ngIf=\"status !== 'LOADING'; else loadingTemplate\">\r\n</ng-container>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChildren,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ObjectUtils, UniqueUtils} from \"@stemy/ngx-utils\";\r\nimport {\r\n DYNAMIC_FORM,\r\n DynamicFormGroup,\r\n DynamicFormState,\r\n IDynamicFormBase,\r\n IDynamicFormControl,\r\n IDynamicFormsConfigs,\r\n IDynamicFormTemplates,\r\n IDynamicSingleFormConfig\r\n} from \"../../common-types\";\r\nimport {DynamicFormBaseComponent} from \"../base/dynamic-form-base.component\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\n\r\nconst statusPriority: DynamicFormState[] = [\"LOADING\", \"PENDING\", \"DISABLED\", \"INVALID\"];\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-forms, [dynamic-forms]\",\r\n templateUrl: \"./dynamic-forms.component.html\",\r\n providers: [\r\n {\r\n provide: DynamicFormBaseComponent,\r\n useExisting: DynamicFormsComponent\r\n },\r\n {\r\n provide: DYNAMIC_FORM,\r\n useExisting: DynamicFormsComponent\r\n }\r\n ]\r\n})\r\nexport class DynamicFormsComponent extends DynamicFormBaseComponent implements IDynamicFormBase, AfterContentInit, OnChanges {\r\n\r\n @Input() data: IDynamicFormsConfigs;\r\n\r\n @Input() containerTemplate: TemplateRef<any>;\r\n\r\n @Input() formPrefixTemplates: IDynamicFormTemplates;\r\n @Input() formSuffixTemplates: IDynamicFormTemplates;\r\n @Input() innerFormPrefixTemplates: IDynamicFormTemplates;\r\n @Input() innerFormSuffixTemplates: IDynamicFormTemplates;\r\n\r\n get status(): DynamicFormState {\r\n for (let i = 0; i < statusPriority.length; i++) {\r\n const status = statusPriority[i];\r\n if (this.checkForms(f => f.status == status)) return status;\r\n }\r\n return \"VALID\";\r\n }\r\n\r\n public configs: IDynamicFormsConfigs;\r\n\r\n @ContentChild(\"containerTemplate\")\r\n protected cContainerTemplate: TemplateRef<any>;\r\n\r\n @ViewChildren(DynamicFormBaseComponent)\r\n private forms: QueryList<IDynamicFormBase>;\r\n\r\n constructor(cdr: ChangeDetectorRef, formService: DynamicFormService) {\r\n super(cdr, formService);\r\n this.formPrefixTemplates = {};\r\n this.formSuffixTemplates = {};\r\n this.innerFormPrefixTemplates = {};\r\n this.innerFormSuffixTemplates = {};\r\n }\r\n\r\n // --- Lifecycle hooks\r\n\r\n ngAfterContentInit(): void {\r\n super.ngAfterContentInit();\r\n this.containerTemplate = this.containerTemplate || this.cContainerTemplate;\r\n this.formPrefixTemplates = this.filterTemplates(this.formPrefixTemplates, \"formPrefix\");\r\n this.formSuffixTemplates = this.filterTemplates(this.formSuffixTemplates, \"formSuffix\");\r\n this.innerFormPrefixTemplates = this.filterTemplates(this.innerFormPrefixTemplates, \"innerFormPrefix\");\r\n this.innerFormSuffixTemplates = this.filterTemplates(this.innerFormSuffixTemplates, \"innerFormSuffix\");\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.configs = this.createFormGroups(this.data);\r\n }\r\n\r\n // --- IDynamicFormBase ---\r\n\r\n validate(showErrors: boolean = true): Promise<any> {\r\n if (!this.forms) return Promise.reject(null);\r\n return Promise.all(this.forms.map(f => f.validate(showErrors)));\r\n }\r\n\r\n serialize(validate?: boolean): Promise<any> {\r\n if (!this.forms) return validate ? Promise.reject(null) : Promise.resolve({});\r\n return new Promise<any>((resolve, reject) => {\r\n const promises = this.forms.map(f => f.serialize(validate));\r\n Promise.all(promises).then(results => {\r\n let result = {};\r\n results.forEach((data, ix) => {\r\n const config = this.data[ix];\r\n let path: Array<string | number> = null;\r\n if (ObjectUtils.isArray(config.path) && config.path.length > 0) {\r\n path = config.path;\r\n } else if (ObjectUtils.isString(config.path) && config.path.length > 0) {\r\n path = config.path.split(\".\");\r\n } else if (ObjectUtils.isNumber(config.path)) {\r\n path = [config.path];\r\n }\r\n if (!path) {\r\n result = ObjectUtils.assign(result, data);\r\n return;\r\n }\r\n result = ObjectUtils.mapToPath(result, data, path.map(p => `${p}`));\r\n });\r\n resolve(result);\r\n }, reject);\r\n });\r\n }\r\n\r\n check(): Promise<any> {\r\n if (!this.forms) return Promise.resolve(null);\r\n return Promise.all(this.forms.map(t => t.check()));\r\n }\r\n\r\n getControl(id: string): IDynamicFormControl {\r\n return this.getFromValue(f => f.getControl(id));\r\n }\r\n\r\n private checkForms(check: (form: IDynamicFormBase) => boolean): boolean {\r\n this.cdr.detectChanges();\r\n if (!this.forms) return false;\r\n return ObjectUtils.isDefined(this.forms.find(check));\r\n }\r\n\r\n private getFromValue<T>(check: (form: IDynamicFormBase) => T): T {\r\n if (!this.forms) return null;\r\n let value: T = null;\r\n this.forms.find(f => {\r\n value = check(f);\r\n return ObjectUtils.isDefined(value);\r\n });\r\n return value;\r\n }\r\n\r\n private createFormGroups(configs: IDynamicFormsConfigs): IDynamicFormsConfigs {\r\n return (configs || []).map((c: any) => {\r\n if (c.multi) return c;\r\n const config = <IDynamicSingleFormConfig>c;\r\n const group = new DynamicFormGroup(this, {\r\n id: config.id || UniqueUtils.uuid(),\r\n type: \"model\",\r\n data: config.controlData\r\n });\r\n config.group = group;\r\n config.name = config.name || this.name;\r\n group.setup(config.data, config);\r\n group.reloadControls();\r\n return config;\r\n });\r\n }\r\n}\r\n","<ng-template #configTemplate let-formTemplate=\"formTemplate\" let-form=\"form\" let-config=\"config\" let-configTemplate>\r\n <div [ngClass]=\"config.classes || ''\">\r\n <ng-container [ngTemplateOutlet]=\"formPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: form}\"></ng-container>\r\n <ng-template #singleFormTemplate>\r\n <div dynamic-form\r\n [hidden]=\"!config.group?.visible\"\r\n [ngClass]=\"config.formClasses || ''\"\r\n [name]=\"config.name || form.name\"\r\n [testId]=\"testId + '-' + (config.testId || config.name || name)\"\r\n [readonly]=\"form.readonly\"\r\n [updateOn]=\"form.updateOn\"\r\n [classes]=\"config.innerFormClasses\"\r\n [parent]=\"form\"\r\n\r\n [wrapperTemplate]=\"form.wrapperTemplate\"\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n [group]=\"config.group\"\r\n [fieldSets]=\"config.fieldSets\">\r\n <ng-template #prefixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n <ng-template #suffixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n <div dynamic-forms\r\n [ngClass]=\"config.formClasses || ''\"\r\n [name]=\"config.name || name\"\r\n [testId]=\"testId + '-' + (config.testId || config.name || name)\"\r\n [readonly]=\"form.readonly\"\r\n [updateOn]=\"form.updateOn\"\r\n [classes]=\"config.innerFormClasses\"\r\n [parent]=\"form\"\r\n\r\n [wrapperTemplate]=\"form.wrapperTemplate\"\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n [data]=\"config.data\"\r\n [containerTemplate]=\"form.containerTemplate\"\r\n [formPrefixTemplates]=\"form.formPrefixTemplates\"\r\n [formSuffixTemplates]=\"form.formSuffixTemplates\"\r\n [innerFormPrefixTemplates]=\"form.innerFormPrefixTemplates\"\r\n [innerFormSuffixTemplates]=\"form.innerFormSuffixTemplates\"\r\n\r\n *ngIf=\"config.multi; else singleFormTemplate\">\r\n <ng-template #prefixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n <ng-template #suffixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n </div>\r\n <ng-container [ngTemplateOutlet]=\"formSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: form}\"></ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template let-form=\"form\" let-configTemplate=\"configTemplate\" #defaultContainerTemplate>\r\n <div class=\"dynamic-forms\" [ngClass]=\"classes || ''\">\r\n <ng-container *ngFor=\"let config of form.configs\"\r\n [ngTemplateOutlet]=\"configTemplate\"\r\n [ngTemplateOutletContext]=\"{form: form, config: config}\"></ng-container>\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"prefixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this}\"></ng-container>\r\n<ng-container [ngTemplateOutlet]=\"containerTemplate || defaultContainerTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this, configTemplate: configTemplate, defaultContainerTemplate: defaultContainerTemplate}\">\r\n</ng-container>\r\n<ng-container [ngTemplateOutlet]=\"suffixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this}\"></ng-container>\r\n","import {Component, HostBinding, Inject, ViewEncapsulation} from \"@angular/core\";\r\nimport {DYNAMIC_FORM, IDynamicFormBase, IDynamicFormControl, IFormGroupComponent} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"div[dynamic-form-group]\",\r\n templateUrl: \"./dynamic-form-group.component.html\"\r\n})\r\nexport class DynamicFormGroupComponent implements IFormGroupComponent {\r\n\r\n control: IDynamicFormControl;\r\n\r\n constructor(@Inject(DYNAMIC_FORM) readonly form: IDynamicFormBase) {\r\n }\r\n\r\n @HostBinding(\"class\")\r\n get classes(): string {\r\n if (!this.control) return \"form-group\";\r\n return [\"form-group\", \"form-group-\" + this.control.id, this.control.data.classes, this.control.errors && this.control.touched ? \"form-group-invalid\" : \"\"].join(\" \");\r\n }\r\n}\r\n","<ng-template #labelTemplate>\r\n <label [ngClass]=\"'control-label control-label-' + control.data.labelAlign\" [attr.for]=\"control.formId\">\r\n {{ control.label | translate: control.model }}\r\n </label>\r\n</ng-template>\r\n<ng-template #errorTemplate>\r\n <div class=\"error-message\" *ngIf=\"control.errors && control.touched\">\r\n <span class=\"help-block\" *ngFor=\"let error of control.errors | entries\">\r\n {{ error.key | translate: error.value }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n<ng-template #inputTemplate let-control=\"control\">\r\n <ng-container [form-control]=\"control\"></ng-container>\r\n</ng-template>\r\n<ng-template #defaultControlTemplate\r\n let-context\r\n let-control=\"control\"\r\n let-data=\"control.data\"\r\n let-labelTemplate=\"labelTemplate\"\r\n let-inputTemplate=\"inputTemplate\"\r\n let-prefixTemplate=\"prefixTemplate\"\r\n let-suffixTemplate=\"suffixTemplate\"\r\n let-errorTemplate=\"errorTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"prefixTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n <ng-container *ngIf=\"control.label && data.labelAlign == 'left'\"\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"context\">\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"inputTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n <ng-container *ngIf=\"control.label && data.labelAlign == 'right'\"\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"context\">\r\n </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"suffixTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"\r\n [ngTemplateOutletContext]=\"context\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-container [ngxTemplateOutlet]=\"form.controlTemplates[control.id] || form.controlTemplate || defaultControlTemplate\"\r\n [context]=\"{\r\n control: control,\r\n labelTemplate: form.labelTemplates[control.id] || labelTemplate,\r\n inputTemplate: form.inputTemplates[control.id] || inputTemplate,\r\n prefixTemplate: form.prefixTemplates[control.id],\r\n suffixTemplate: form.suffixTemplates[control.id],\r\n errorTemplate: errorTemplate\r\n }\">\r\n</ng-container>\r\n","import {Component} from \"@angular/core\";\r\nimport {FormControlComponent, IDynamicFormControl, IFormFileData} from \"../../common-types\";\r\nimport {ArrayUtils, FileUtils, ObjectUtils} from \"@stemy/ngx-utils\";\r\n\r\n@Component({\r\n selector: \"dynamic-form-file\",\r\n styleUrls: [\"./dynamic-form-file.component.scss\"],\r\n templateUrl: \"./dynamic-form-file.component.html\"\r\n})\r\nexport class DynamicFormFileComponent extends FormControlComponent<IFormFileData> {\r\n\r\n private fileImageCache: any[];\r\n\r\n // Acceptor for provider\r\n static acceptor(control: IDynamicFormControl): boolean {\r\n return control.type == \"file\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n\r\n ctrInit() {\r\n this.fileImageCache = [];\r\n }\r\n\r\n onSelect(input: HTMLInputElement): void {\r\n this.processFiles(input.files);\r\n input.value = \"\";\r\n }\r\n\r\n protected processFiles(fileList: FileList): void {\r\n const files: File[] = [];\r\n const accept = this.data.accept;\r\n const types: string[] = ObjectUtils.isString(accept) && accept.length > 0 ? accept.toLowerCase().split(\",\") : null;\r\n if (fileList.length == 0) return;\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList.item(i);\r\n const type = file.type.toLowerCase();\r\n const ext = FileUtils.getExtension(file);\r\n if (types && !ArrayUtils.has(types, type, ext)) continue;\r\n files.push(file);\r\n }\r\n if (files.length == 0) {\r\n this.toaster.error(\"message.error.wrong-files\");\r\n return;\r\n }\r\n this.upload(files);\r\n }\r\n\r\n protected upload(files: File[]): void {\r\n const single = !this.data.multi;\r\n if (single) files.length = Math.min(files.length , 1);\r\n const promises = [];\r\n files.forEach((file, ix) => {\r\n if (this.data.asDataUrl) {\r\n promises.push(FileUtils.readFileAsDataURL(file));\r\n return;\r\n }\r\n if (this.data.asFile) {\r\n promises.push(Promise.resolve(file));\r\n return;\r\n }\r\n promises.push(\r\n this.api.upload(\r\n this.data.uploadUrl,\r\n this.data.createUploadData(file),\r\n console.log,\r\n this.data.uploadOptions\r\n ).then(asset => asset._id || asset, () => null)\r\n );\r\n });\r\n Promise.all(promises).then(assets => {\r\n if (single) {\r\n this.control.setValue(assets[0]);\r\n return;\r\n }\r\n const current = this.value || [];\r\n this.control.setValue(current.concat(assets.filter(t => !!t)));\r\n });\r\n }\r\n\r\n delete(index?: number): void {\r\n if (this.data.multi) {\r\n const current = Array.from(this.value || []);\r\n current.splice(index, 1);\r\n this.control.setValue(current);\r\n return;\r\n }\r\n this.control.setValue(null);\r\n }\r\n\r\n getUrl(image: any): string {\r\n return `url('${this.getImgUrl(image)}')`;\r\n }\r\n\r\n private getImgUrl(image: any): string {\r\n if (ObjectUtils.isBlob(image)) {\r\n let cache = this.fileImageCache.find(t => t.file == image);\r\n if (!cache) {\r\n cache = {file: image, url: URL.createObjectURL(image)};\r\n this.fileImageCache.push(cache);\r\n }\r\n return cache.url;\r\n }\r\n const url = !image ? null : image.imageUrl || image;\r\n if (!ObjectUtils.isString(url)) return null;\r\n if (url.startsWith(\"data:\")) return url;\r\n if (!this.data.baseUrl) {\r\n const subUrl = url.startsWith(\"/\") ? url.substr(1) : url;\r\n return this.api.url(subUrl);\r\n }\r\n return this.api.url(`${this.data.baseUrl}${url}`);\r\n }\r\n}\r\n","<div class=\"upload\">\r\n <input type=\"file\"\r\n multiple=\"multiple\"\r\n [attr.data-testid]=\"testId\"\r\n [attr.accept]=\"data.accept\"\r\n (change)=\"onSelect($event.target)\" />\r\n <ul class=\"images\" *ngIf=\"!data.multi\">\r\n <li class=\"image\" *ngIf=\"value\" [ngStyle]=\"{backgroundImage: getUrl(value)}\">\r\n <a class=\"btn btn-delete\" (click)=\"delete()\"></a>\r\n </li>\r\n </ul>\r\n <ul class=\"images\" *ngIf=\"data.multi\">\r\n <li class=\"image\" *ngFor=\"let image of value; let i = index\" [ngStyle]=\"{backgroundImage: getUrl(image)}\">\r\n <a class=\"btn btn-delete\" (click)=\"delete(i)\"></a>\r\n </li>\r\n </ul>\r\n</div>\r\n","import {Component, HostBinding, ViewEncapsulation} from \"@angular/core\";\r\nimport {ITranslation, ObjectUtils} from \"@stemy/ngx-utils\";\r\nimport {DynamicFormControl, FormControlComponent, IFormInputData} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-input\",\r\n templateUrl: \"./dynamic-form-input.component.html\"\r\n})\r\nexport class DynamicFormInputComponent extends FormControlComponent<IFormInputData> {\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"input\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n\r\n @HostBinding(\"class.checked\")\r\n get isChecked(): boolean {\r\n return this.data.type == \"checkbox\" && this.value;\r\n }\r\n\r\n onDateChange(value: string): void {\r\n const date = new Date(value);\r\n const dateValue = <number>date.valueOf();\r\n if (isNaN(dateValue) || dateValue < -30610224000000) return;\r\n this.control.setValue(date)\r\n }\r\n\r\n onTextChange(value: string): void {\r\n if (!this.data.useLanguage) {\r\n this.control.setValue(value);\r\n return;\r\n }\r\n const translations: ITranslation[] = ObjectUtils.isArray(this.value) ? Array.from(this.value) : [];\r\n const translation = translations.find(t => t.lang == this.language.editLanguage);\r\n if (translation) {\r\n translation.translation = value;\r\n } else {\r\n translations.push({\r\n lang: this.language.editLanguage,\r\n translation: value\r\n });\r\n }\r\n this.control.setValue(translations);\r\n }\r\n\r\n onNumberBlur(): void {\r\n const value = this.value;\r\n if (ObjectUtils.isNumber(this.data.max) && this.data.max < value) {\r\n this.control.setValue(this.data.max);\r\n } else if (ObjectUtils.isNumber(this.data.min) && this.data.min > value) {\r\n this.control.setValue(this.data.min);\r\n }\r\n this.control.onBlur();\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"data.type\">\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea class=\"form-control\"\r\n rows=\"5\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">{{ data.placeholder | translate }}</textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <input class=\"form-control\"\r\n type=\"date\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value | date: 'y-MM-dd'\"\r\n (ngModelChange)=\"onDateChange($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <input class=\"form-control\"\r\n type=\"number\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [min]=\"data.min\"\r\n [max]=\"data.max\"\r\n [step]=\"data.step\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"onNumberBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <input class=\"form-control\"\r\n type=\"checkbox\"\r\n [attr.data-testid]=\"testId\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <input class=\"form-control\"\r\n type=\"text\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [minlength]=\"data.min\"\r\n [maxlength]=\"data.max\"\r\n [placeholder]=\"data.placeholder | translate\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"data.useLanguage ? (value | translate) : value\"\r\n (ngModelChange)=\"onTextChange($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <input class=\"form-control\"\r\n [attr.autocomplete]=\"data.autocomplete\"\r\n [attr.data-testid]=\"testId\"\r\n [minlength]=\"data.min\"\r\n [maxlength]=\"data.max\"\r\n [placeholder]=\"data.placeholder | translate\"\r\n [type]=\"data.type\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"control.setValue($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\"/>\r\n </ng-container>\r\n</ng-container>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {ObjectUtils, ReflectUtils} from \"@stemy/ngx-utils\";\r\nimport {\r\n DynamicFormControl,\r\n FormControlComponent,\r\n IDynamicFormControl,\r\n IFormControlOption,\r\n IFormControlOptions,\r\n IFormSelectData\r\n} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-select\",\r\n templateUrl: \"./dynamic-form-select.component.html\"\r\n})\r\nexport class DynamicFormSelectComponent extends FormControlComponent<IFormSelectData> {\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"select\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(control: IDynamicFormControl): Promise<any> {\r\n const data = control.getData<IFormSelectData>();\r\n if (data.type == \"radio\" && data.multi) {\r\n return Promise.reject(\"Radio group doesn't support multi select!\");\r\n }\r\n return new Promise<any>(resolve => {\r\n const getOptions = ReflectUtils.resolve<IFormControlOptions>(data.options, control.form.injector);\r\n getOptions(control).then(options => {\r\n if (data.emptyOption) options.unshift({id: null, label: \"\"});\r\n control.meta.options = options;\r\n DynamicFormSelectComponent.fillOptions(control, options);\r\n resolve(options);\r\n });\r\n });\r\n }\r\n\r\n static fillOptions(control: IDynamicFormControl, options: IFormControlOption[]): void {\r\n const data = control.getData<IFormSelectData>();\r\n const selected = control.value;\r\n if (data.multi || options.length == 0 || options.findIndex(t => t.id == selected) >= 0) return;\r\n control.setValue(options[0].id);\r\n }\r\n\r\n onSelectChange(value: any): void {\r\n const isArray = ObjectUtils.isArray(value);\r\n const current = this.value;\r\n if (this.data.multi) {\r\n if (isArray) {\r\n this.control.setValue(value);\r\n return;\r\n }\r\n if (ObjectUtils.isArray(current)) {\r\n this.control.setValue(\r\n current.indexOf(value) < 0\r\n ? current.concat([value])\r\n : current.filter(c => c !== value)\r\n );\r\n return;\r\n }\r\n this.control.setValue([value]);\r\n return;\r\n }\r\n if (isArray) value = value[0];\r\n if (current == value) {\r\n const option = this.meta.options.find(o => o.id !== value);\r\n value = option ? option.id : null;\r\n }\r\n this.control.setValue(value);\r\n }\r\n\r\n checkValue(option: IFormControlOption): boolean {\r\n const value = this.value;\r\n return ObjectUtils.isArray(value) ? value.indexOf(option.id) >= 0 : option.id == value;\r\n }\r\n\r\n findOption(option: IFormControlOption, index: number, id: string): boolean {\r\n return option.id == id;\r\n }\r\n}\r\n","<ng-template #selectTemplate let-selected=\"selected\">\r\n <select class=\"form-control\"\r\n [attr.data-testid]=\"testId\"\r\n [multiple]=\"data.multi\"\r\n [id]=\"control.formId\"\r\n [name]=\"control.formId\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled\"\r\n [ngModel]=\"data.multi ? value : [value]\"\r\n (ngModelChange)=\"onSelectChange($event)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">\r\n <option *ngFor=\"let option of meta.options\" [value]=\"option.id\" [disabled]=\"option.selectable == false\">\r\n {{ option.label | translate }}\r\n </option>\r\n </select>\r\n <label class=\"form-control-description\" [attr.for]=\"control.formId\" *ngIf=\"!data.multi && selected?.description\">\r\n {{ selected?.description | translate }}\r\n </label>\r\n</ng-template>\r\n<ng-container [ngSwitch]=\"data.type\">\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <ul class=\"radio-group\">\r\n <li *ngFor=\"let option of meta.options\" class=\"radio\">\r\n <label [ngClass]=\"{checked: value == option.id}\">\r\n <input type=\"radio\"\r\n [attr.data-testid]=\"testId + '-' + option.id\"\r\n [id]=\"control.formId + '-' + option.id\"\r\n [name]=\"control.formId + '-' + option.id\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled || option.selectable == false\"\r\n [value]=\"option.id\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"onSelectChange(option.id)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">\r\n {{ option.label | translate }}\r\n </label>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ul class=\"checkbox-group\">\r\n <li *ngFor=\"let option of meta.options\" class=\"checkbox\">\r\n <label [ngClass]=\"{checked: checkValue(option)}\">\r\n <input type=\"checkbox\"\r\n [attr.data-testid]=\"testId + '-' + option.id\"\r\n [id]=\"control.formId + '-' + option.id\"\r\n [name]=\"control.formId + '-' + option.id\"\r\n [ngClass]=\"{disabled: control.disabled}\"\r\n [disabled]=\"control.disabled || option.selectable == false\"\r\n [ngModel]=\"checkValue(option)\"\r\n (ngModelChange)=\"onSelectChange(option.id)\"\r\n (blur)=\"control.onBlur()\"\r\n (focus)=\"control.onFocus()\">\r\n {{ option.label | translate }}\r\n </label>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"selectTemplate\" [ngTemplateOutletContext]=\"{selected: meta?.options | find:findOption:value}\">\r\n\r\n </ng-container>\r\n</ng-container>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {DynamicFormControl, FormControlComponent, IFormStaticData} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-static\",\r\n templateUrl: \"./dynamic-form-static.component.html\"\r\n})\r\nexport class DynamicFormStaticComponent extends FormControlComponent<IFormStaticData> {\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"static\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n}\r\n","<unordered-list [listStyle]=\"data.style\" [ngClass]=\"{disabled: control.disabled}\"\r\n [data]=\"!data.properties ? {value: value} : data.properties | remap: value\">\r\n <ng-template [type]=\"!data.properties ? 'key' : null\" selector=\"level == 0\" let-item=\"item\"></ng-template>\r\n <ng-template type=\"value\" selector=\"valueType == 'date'\" let-item=\"item\">\r\n {{ item.value | date }}\r\n </ng-template>\r\n</unordered-list>\r\n","import {Component, ViewChild, ViewEncapsulation} from \"@angular/core\";\r\nimport {DynamicFormControl, FormControlComponent, IDynamicForm, IFormModelData} from \"../../common-types\";\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"dynamic-form-model\",\r\n templateUrl: \"./dynamic-form-model.component.html\"\r\n})\r\nexport class DynamicFormModelComponent extends FormControlComponent<IFormModelData> {\r\n\r\n @ViewChild(\"subForm\")\r\n private subForm: IDynamicForm;\r\n\r\n // Acceptor for provider\r\n static acceptor(control: DynamicFormControl): boolean {\r\n return control.type == \"model\";\r\n }\r\n\r\n // Loader for provider\r\n static loader(): Promise<any> {\r\n return Promise.resolve();\r\n }\r\n}\r\n","<dynamic-form [testId]=\"form.testId + '-' + control.id\"\r\n [name]=\"data.name || form.name\"\r\n [group]=\"control\"\r\n [data]=\"value\"\r\n [updateOn]=\"control.updateOn\"\r\n [parent]=\"form\"\r\n\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n #subForm>\r\n <ng-template #wrapperTemplate let-form=\"form\" let-fieldSetsTemplate=\"fieldSetsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"fieldSetsTemplate\"></ng-container>\r\n </ng-template>\r\n</dynamic-form>\r\n","import {ModuleWithProviders, NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {NgxUtilsModule} from \"@stemy/ngx-utils\";\r\nimport {FormControlProvider, FormGroupProvider, provideFormControl, provideFormGroup} from \"./common-types\";\r\n\r\nimport {DynamicFormService} from \"./services/dynamic-form.service\";\r\nimport {OpenApiService} from \"./services/open-api.service\";\r\n\r\nimport {AsyncSubmitDirective} from \"./directives/async-submit.directive\";\r\nimport {DynamicFormControlDirective} from \"./directives/dynamic-form-control.directive\";\r\nimport {DynamicFormGroupDirective} from \"./directives/dynamic-form-group.directive\";\r\nimport {DynamicFormTemplateDirective} from \"./directives/dynamic-form-template.directive\";\r\nimport {DynamicFormsComponent} from \"./components/dynamic-forms/dynamic-forms.component\";\r\nimport {DynamicFormComponent} from \"./components/dynamic-form/dynamic-form.component\";\r\n\r\nimport {DynamicFormGroupComponent} from \"./components/dynamic-form-group/dynamic-form-group.component\";\r\nimport {DynamicFormFileComponent} from \"./components/dynamic-form-file/dynamic-form-file.component\";\r\nimport {DynamicFormInputComponent} from \"./components/dynamic-form-input/dynamic-form-input.component\";\r\nimport {DynamicFormSelectComponent} from \"./components/dynamic-form-select/dynamic-form-select.component\";\r\nimport {DynamicFormStaticComponent} from \"./components/dynamic-form-static/dynamic-form-static.component\";\r\nimport {DynamicFormModelComponent} from \"./components/dynamic-form-model/dynamic-form-model.component\";\r\n\r\n// --- Components ---\r\nexport const components = [\r\n DynamicFormsComponent,\r\n DynamicFormComponent,\r\n DynamicFormGroupComponent,\r\n DynamicFormFileComponent,\r\n DynamicFormInputComponent,\r\n DynamicFormSelectComponent,\r\n DynamicFormStaticComponent,\r\n DynamicFormModelComponent\r\n];\r\n\r\n// --- Directives ---\r\nexport const directives = [\r\n AsyncSubmitDirective,\r\n DynamicFormControlDirective,\r\n DynamicFormGroupDirective,\r\n DynamicFormTemplateDirective\r\n];\r\n\r\n// --- Pipes ---\r\nexport const pipes = [];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ...directives,\r\n ...pipes\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxUtilsModule\r\n ],\r\n exports: [\r\n ...components,\r\n ...directives,\r\n ...pipes,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxUtilsModule\r\n ],\r\n entryComponents: components,\r\n providers: pipes\r\n})\r\nexport class NgxDynamicFormModule {\r\n\r\n static forRoot(controlProviders?: Array<FormControlProvider>, groupProvider?: FormGroupProvider): ModuleWithProviders<NgxDynamicFormModule> {\r\n return {\r\n ngModule: NgxDynamicFormModule,\r\n providers: [\r\n DynamicFormService,\r\n OpenApiService,\r\n provideFormControl(DynamicFormFileComponent, DynamicFormFileComponent.acceptor, DynamicFormFileComponent.loader),\r\n provideFormControl(DynamicFormInputComponent, DynamicFormInputComponent.acceptor, DynamicFormInputComponent.loader),\r\n provideFormControl(DynamicFormSelectComponent, DynamicFormSelectComponent.acceptor, DynamicFormSelectComponent.loader),\r\n provideFormControl(DynamicFormStaticComponent, DynamicFormStaticComponent.acceptor, DynamicFormStaticComponent.loader),\r\n provideFormControl(DynamicFormModelComponent, DynamicFormModelComponent.acceptor, DynamicFormModelComponent.loader),\r\n ...(controlProviders || []),\r\n groupProvider || provideFormGroup(DynamicFormGroupComponent)\r\n ]\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["__decorate","__metadata","InjectionToken","i0","API_SERVICE","LANGUAGE_SERVICE","TOASTER_SERVICE","Directive","Inject","HostBinding","ObjectUtils","ReflectUtils","UniqueUtils","TimerUtils","FormGroup","FormControl","Injectable","FileUtils","FactoryDependencies","DatePipe","StringUtils","EventEmitter","Input","Output","HostListener","i1.DynamicFormService","ContentChild","ContentChildren","first","i2","i3","i4.DynamicFormGroupDirective","i5","Component","ViewEncapsulation","i2.DynamicFormComponent","ViewChildren","i1","i2.DynamicFormControlDirective","ArrayUtils","i1.DynamicFormComponent","ViewChild","CommonModule","FormsModule","ReactiveFormsModule","NgxUtilsModule","NgModule"],"mappings":"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"}
|