UNPKG

@ng-dynamic-forms/core

Version:

A rapid form development library for Angular

100 lines 13.9 kB
import { __decorate } from "tslib"; import { DynamicInputControlModel } from "../dynamic-input-control.model"; import { serializable } from "../../decorator/serializable.decorator"; import { isBoolean, isNumber } from "../../utils/core.utils"; import { isObservable, of } from "rxjs"; import { tap } from "rxjs/operators"; import { initialConfig } from "ngx-mask"; export const DYNAMIC_FORM_CONTROL_TYPE_INPUT = "INPUT"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_COLOR = "color"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_DATE = "date"; // export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_DATETIME = "datetime"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_DATETIME_LOCAL = "datetime-local"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_EMAIL = "email"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_FILE = "file"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_MONTH = "month"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_NUMBER = "number"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_PASSWORD = "password"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_RANGE = "range"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_SEARCH = "search"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_TEL = "tel"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_TEXT = "text"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_TIME = "time"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_URL = "url"; export const DYNAMIC_FORM_CONTROL_INPUT_TYPE_WEEK = "week"; export class DynamicInputModel extends DynamicInputControlModel { constructor(config, layout) { super(config, layout); this.files = null; this.list$ = null; this._list = null; this._listId = null; this.type = DYNAMIC_FORM_CONTROL_TYPE_INPUT; this.accept = config.accept ?? null; this.inputType = config.inputType ?? DYNAMIC_FORM_CONTROL_INPUT_TYPE_TEXT; this.mask = config.mask ?? ""; this.maskConfig = config.maskConfig ? { ...initialConfig, ...config.maskConfig } : initialConfig; this.max = config.max !== undefined ? config.max : null; this.min = config.min !== undefined ? config.min : null; this.multiple = isBoolean(config.multiple) ? config.multiple : null; this.pattern = config.pattern ?? null; this.step = isNumber(config.step) ? config.step : null; if (config.list !== undefined) { this.list = config.list; this._listId = `${this.id}List`; } } get listId() { return this._listId; } get hasList() { return isObservable(this.list$); } set list(list) { if (Array.isArray(list)) { this._list = list; this.list$ = of(this._list); } else if (isObservable(list)) { this.list$ = list.pipe(tap(_list => this._list = _list)); } else { this._list = null; this.list$ = null; } } } __decorate([ serializable() ], DynamicInputModel.prototype, "accept", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "inputType", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "mask", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "maskConfig", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "max", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "min", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "multiple", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "pattern", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "step", void 0); __decorate([ serializable("list") ], DynamicInputModel.prototype, "_list", void 0); __decorate([ serializable() ], DynamicInputModel.prototype, "type", void 0); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWR5bmFtaWMtZm9ybXMvY29yZS9zcmMvbGliL21vZGVsL2lucHV0L2R5bmFtaWMtaW5wdXQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBa0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQWMsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFXLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsT0FBTyxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQztBQUMzRCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sOENBQThDLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0UsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsT0FBTyxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxPQUFPLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsUUFBUSxDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLFVBQVUsQ0FBQztBQUNuRSxNQUFNLENBQUMsTUFBTSxxQ0FBcUMs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QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQ25DLENBQUM7U0FFTDthQUFNO1lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDckI7SUFDTCxDQUFDO0NBQ0o7QUEzRG1CO0lBQWYsWUFBWSxFQUFFO2lEQUF1QjtBQUN0QjtJQUFmLFlBQVksRUFBRTtvREFBbUI7QUFHbEI7SUFBZixZQUFZLEVBQUU7K0NBQWM7QUFDYjtJQUFmLFlBQVksRUFBRTtxREFBcUI7QUFDcEI7SUFBZixZQUFZLEVBQUU7OENBQW9DO0FBQ25DO0lBQWYsWUFBWSxFQUFFOzhDQUFvQztBQUNuQztJQUFmLFlBQVksRUFBRTttREFBMEI7QUFDekI7SUFBZixZQUFZLEVBQUU7a0RBQXdCO0FBQ3ZCO0lBQWYsWUFBWSxFQUFFOytDQUFxQjtBQUVOO0lBQTdCLFlBQVksQ0FBQyxNQUFNLENBQUM7Z0RBQW9DO0FBR2hDO0lBQXhCLFlBQVksRUFBRTsrQ0FBeUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljSW5wdXRDb250cm9sTW9kZWwsIER5bmFtaWNJbnB1dENvbnRyb2xNb2RlbENvbmZpZyB9IGZyb20gXCIuLi9keW5hbWljLWlucHV0LWNvbnRyb2wubW9kZWxcIjtcbmltcG9ydCB7IER5bmFtaWNGb3JtQ29udHJvbExheW91dCB9IGZyb20gXCIuLi9taXNjL2R5bmFtaWMtZm9ybS1jb250cm9sLWxheW91dC5tb2RlbFwiO1xuaW1wb3J0IHsgc2VyaWFsaXphYmxlIH0gZnJvbSBcIi4uLy4uL2RlY29yYXRvci9zZXJpYWxpemFibGUuZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBpc0Jvb2xlYW4sIGlzTnVtYmVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvcmUudXRpbHNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBJQ29uZmlnLCBpbml0aWFsQ29uZmlnIH0gZnJvbSBcIm5neC1tYXNrXCI7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0lOUFVUID0gXCJJTlBVVFwiO1xuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9DT0xPUiA9IFwiY29sb3JcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX0RBVEUgPSBcImRhdGVcIjtcbi8vIGV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX0RBVEVUSU1FID0gXCJkYXRldGltZVwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfREFURVRJTUVfTE9DQUwgPSBcImRhdGV0aW1lLWxvY2FsXCI7XG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9FTUFJTCA9IFwiZW1haWxcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX0ZJTEUgPSBcImZpbGVcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX01PTlRIID0gXCJtb250aFwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfTlVNQkVSID0gXCJudW1iZXJcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1BBU1NXT1JEID0gXCJwYXNzd29yZFwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfUkFOR0UgPSBcInJhbmdlXCI7XG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9TRUFSQ0ggPSBcInNlYXJjaFwiO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9DT05UUk9MX0lOUFVUX1RZUEVfVEVMID0gXCJ0ZWxcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1RFWFQgPSBcInRleHRcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1RJTUUgPSBcInRpbWVcIjtcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9JTlBVVF9UWVBFX1VSTCA9IFwidXJsXCI7XG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9XRUVLID0gXCJ3ZWVrXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0lucHV0TW9kZWxDb25maWcgZXh0ZW5kcyBEeW5hbWljSW5wdXRDb250cm9sTW9kZWxDb25maWc8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IHN0cmluZ1tdPiB7XG4gICAgYWNjZXB0Pzogc3RyaW5nO1xuICAgIGlucHV0VHlwZT86IHN0cmluZztcbiAgICBsaXN0PzogYW55W10gfCBPYnNlcnZhYmxlPGFueVtdPjtcbiAgICBtYXNrPzogc3RyaW5nO1xuICAgIG1hc2tDb25maWc/OiBQYXJ0aWFsPElDb25maWc+O1xuICAgIG1heD86IG51bWJlciB8IHN0cmluZyB8IERhdGU7XG4gICAgbWluPzogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZTtcbiAgICBtdWx0aXBsZT86IGJvb2xlYW47XG4gICAgcGF0dGVybj86IHN0cmluZztcbiAgICBzdGVwPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0lucHV0TW9kZWwgZXh0ZW5kcyBEeW5hbWljSW5wdXRDb250cm9sTW9kZWw8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IHN0cmluZ1tdPiB7XG4gICAgQHNlcmlhbGl6YWJsZSgpIGFjY2VwdDogc3RyaW5nIHwgbnVsbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgaW5wdXRUeXBlOiBzdHJpbmc7XG4gICAgZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCA9IG51bGw7XG4gICAgbGlzdCQ6IE9ic2VydmFibGU8YW55W10+IHwgbnVsbCA9IG51bGw7XG4gICAgQHNlcmlhbGl6YWJsZSgpIG1hc2s6IHN0cmluZztcbiAgICBAc2VyaWFsaXphYmxlKCkgbWFza0NvbmZpZzogSUNvbmZpZztcbiAgICBAc2VyaWFsaXphYmxlKCkgbWF4OiBudW1iZXIgfCBzdHJpbmcgfCBEYXRlIHwgbnVsbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgbWluOiBudW1iZXIgfCBzdHJpbmcgfCBEYXRlIHwgbnVsbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgbXVsdGlwbGU6IGJvb2xlYW4gfCBudWxsO1xuICAgIEBzZXJpYWxpemFibGUoKSBwYXR0ZXJuOiBzdHJpbmcgfCBudWxsO1xuICAgIEBzZXJpYWxpemFibGUoKSBzdGVwOiBudW1iZXIgfCBudWxsO1xuXG4gICAgQHNlcmlhbGl6YWJsZShcImxpc3RcIikgcHJpdmF0ZSBfbGlzdDogYW55W10gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9saXN0SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgQHNlcmlhbGl6YWJsZSgpIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9IERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfSU5QVVQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNJbnB1dE1vZGVsQ29uZmlnLCBsYXlvdXQ/OiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQpIHtcbiAgICAgICAgc3VwZXIoY29uZmlnLCBsYXlvdXQpO1xuXG4gICAgICAgIHRoaXMuYWNjZXB0ID0gY29uZmlnLmFjY2VwdCA/PyBudWxsO1xuICAgICAgICB0aGlzLmlucHV0VHlwZSA9IGNvbmZpZy5pbnB1dFR5cGUgPz8gRFlOQU1JQ19GT1JNX0NPTlRST0xfSU5QVVRfVFlQRV9URVhUO1xuICAgICAgICB0aGlzLm1hc2sgPSBjb25maWcubWFzayA/PyBcIlwiO1xuICAgICAgICB0aGlzLm1hc2tDb25maWcgPSBjb25maWcubWFza0NvbmZpZyA/IHsuLi5pbml0aWFsQ29uZmlnLCAuLi5jb25maWcubWFza0NvbmZpZ30gOiBpbml0aWFsQ29uZmlnO1xuICAgICAgICB0aGlzLm1heCA9IGNvbmZpZy5tYXggIT09IHVuZGVmaW5lZCA/IGNvbmZpZy5tYXggOiBudWxsO1xuICAgICAgICB0aGlzLm1pbiA9IGNvbmZpZy5taW4gIT09IHVuZGVmaW5lZCA/IGNvbmZpZy5taW4gOiBudWxsO1xuICAgICAgICB0aGlzLm11bHRpcGxlID0gaXNCb29sZWFuKGNvbmZpZy5tdWx0aXBsZSkgPyBjb25maWcubXVsdGlwbGUgOiBudWxsO1xuICAgICAgICB0aGlzLnBhdHRlcm4gPSBjb25maWcucGF0dGVybiA/PyBudWxsO1xuICAgICAgICB0aGlzLnN0ZXAgPSBpc051bWJlcihjb25maWcuc3RlcCkgPyBjb25maWcuc3RlcCA6IG51bGw7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5saXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdCA9IGNvbmZpZy5saXN0O1xuICAgICAgICAgICAgdGhpcy5fbGlzdElkID0gYCR7dGhpcy5pZH1MaXN0YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBsaXN0SWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9saXN0SWQ7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0xpc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUodGhpcy5saXN0JCk7XG4gICAgfVxuXG4gICAgc2V0IGxpc3QobGlzdDogYW55W10gfCBPYnNlcnZhYmxlPGFueVtdPiB8IG51bGwpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3QgPSBsaXN0O1xuICAgICAgICAgICAgdGhpcy5saXN0JCA9IG9mKHRoaXMuX2xpc3QpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKGxpc3QpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QkID0gbGlzdC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcChfbGlzdCA9PiB0aGlzLl9saXN0ID0gX2xpc3QpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMubGlzdCQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19