UNPKG

tibas-form-json-generator

Version:

Fully configured form generator via JSON data with a custom template for each attribute + onChange events.

186 lines 17.9 kB
/** * @fileoverview added by tsickle * Generated from: lib/item-form/item-form.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { ItemModel } from '../models/item.model'; import { AttributeModel } from '../models/attribute.model'; import swal from 'sweetalert2'; import { TranslateService } from '@ngx-translate/core'; /** * Created by TIBAS-Mohammed on 2020-07-4. */ var ItemFormComponent = /** @class */ (function () { function ItemFormComponent(translateService) { this.translateService = translateService; this.changedtrigger = new EventEmitter(); this.listSourceTypes = []; } /** * @return {?} */ ItemFormComponent.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * @param {?} child * @return {?} */ ItemFormComponent.prototype.additem = /** * @param {?} child * @return {?} */ function (child) { var _this = this; this.item = new ItemModel(); /** @type {?} */ var rndm = Math.floor(Math.random() * (100 - 1 + 1)) + 1; this.item.code = child.code + '_' + (child.children.length + 1) + '_R' + rndm; child.attrValues.forEach((/** * @param {?} att * @return {?} */ function (att) { /** @type {?} */ var tpmAtt = new AttributeModel(); tpmAtt = Object.assign({}, att); tpmAtt.required = false; tpmAtt.value = ''; _this.item.attrValues.push(tpmAtt); })); child.children.push(this.item); }; /** * @param {?} item * @return {?} */ ItemFormComponent.prototype.remove = /** * @param {?} item * @return {?} */ function (item) { var _this = this; /** @type {?} */ var index = this.parentList.indexOf(item); if (index !== -1) { swal({ title: this.translateService.instant('toast.success.message.ARE_YOU_SURE'), text: this.translateService.instant('toast.success.message.DELETE_ITEM'), type: 'warning', showCancelButton: true, confirmButtonColor: 'rgba(249,58,58,0.84)', cancelButtonColor: 'rgba(48,133,214,0.88)', cancelButtonText: this.translateService.instant('toast.success.message.CANCEL'), confirmButtonText: this.translateService.instant('toast.success.message.YES_DELETE') }).then((/** * @param {?} result * @return {?} */ function (result) { if (result.value) { _this.parentList.splice(index, 1); _this.triggerchange(); } })); } }; /** * @return {?} */ ItemFormComponent.prototype.triggerchange = /** * @return {?} */ function () { this.changedtrigger.emit(true); }; /** * @param {?} item * @return {?} */ ItemFormComponent.prototype.moveup = /** * @param {?} item * @return {?} */ function (item) { /** @type {?} */ var newIndex = this.parentList.indexOf(item, 0) - 1; /** @type {?} */ var oldIndex = this.parentList.indexOf(item, 0); if (newIndex >= this.parentList.length) { /** @type {?} */ var k = newIndex - this.parentList.length + 1; while (k--) { this.parentList.push(undefined); } } this.parentList.splice(newIndex, 0, this.parentList.splice(oldIndex, 1)[0]); }; /** * @param {?} item * @return {?} */ ItemFormComponent.prototype.movedown = /** * @param {?} item * @return {?} */ function (item) { /** @type {?} */ var newIndex = this.parentList.indexOf(item, 0) + 1; /** @type {?} */ var oldIndex = this.parentList.indexOf(item, 0); if (newIndex >= this.parentList.length) { /** @type {?} */ var k = newIndex - this.parentList.length + 1; while (k--) { this.parentList.push(undefined); } } this.parentList.splice(newIndex, 0, this.parentList.splice(oldIndex, 1)[0]); }; ItemFormComponent.decorators = [ { type: Component, args: [{ selector: 'app-item-form,[app-item-form]', template: "<div class=\"row\">\n <div [ngStyle]=\"{'padding-left':'calc('+level+'% + 1%)'}\" class=\"col-5 item-label\">\n <div style=\"display: inline-block;\n width: 100%;\n white-space: nowrap!important;\n overflow: scroll;\">\n\n <i class=\"fa fa-plus faplusitem\" style=\"margin-right: 0.5rem;\n position: relative;\n top: -15px;color: #8897aa;\n cursor: pointer;\" *ngIf=\"mode=='EDIT'\" (click)=\"additem(child)\"></i>\n <i class=\"fa fa-minus faplusitem\" style=\"margin-right: 0.5rem;\n position: relative;\n top: -15px;color: #8897aa;\n cursor: pointer;\" *ngIf=\"mode=='EDIT'\" (click)=\"remove(child)\"></i>\n\n <div style=\"\n width: 7px;\n position: relative;\n top: -5px;\n display: inline-block;\n margin-right: 0.5rem;\"\n *ngIf=\"mode=='EDIT' && (parentList.indexOf(child,0)>0 || parentList.indexOf(child,0)<parentList.length-1)\"\n >\n <div>\n <i style=\"cursor: pointer;color: #8897aa;\" *ngIf=\"parentList.indexOf(child,0)>0\" (click)=\"moveup(child)\"\n class=\"fa fa-caret-up\"></i>\n </div>\n <div>\n <i style=\"cursor: pointer;color: #8897aa;\" *ngIf=\"parentList.indexOf(child,0)<parentList.length-1\"\n (click)=\"movedown(child)\" class=\"fa fa-caret-down\"></i>\n <i *ngIf=\"!(parentList.indexOf(child,0)<parentList.length-1)\" class=\"fa \"></i>\n </div>\n </div>\n\n <span style=\"display: inline-block;white-space: nowrap!important;width: 100%;margin-right: 1rem;padding: 1px;\"\n *ngIf=\"mode=='VIEW' || mode=='READ' || mode=='READWITHTAB'\">{{child.label}}</span>\n <app-label-edit *ngIf=\"mode=='EDIT'\" [label]=\"'Nom item'\" [(ngModel)]=\"child.label\"></app-label-edit>\n <select *ngIf=\"mode=='EDIT'\" class=\"additemselect attInput\" style=\"display: inline-block;width: 80px;position: relative;\n top: -17px;\" [(ngModel)]=\"child.categoryId\" [required]=\"true\"\n >\n <option value=\"\" selected disabled>Type</option>\n <option *ngFor=\"let type of listSourceTypes\"\n value=\"{{type.id}}\">{{type.name}}</option>\n </select>\n </div>\n </div>\n <!--<div class=\"col\" *ngFor=\"let attribute of child?.attrValues\">\n <input [disabled]=\"attribute.disable\" [hidden]=\"attribute.hidden\" [required]=\"attribute.required && !attribute.hidden\" *ngIf=\"attribute.typeSource=='FREE_ENTRY'\" [(ngModel)]=\"attribute.value\">\n <select [disabled]=\"attribute.disable\" [hidden]=\"attribute.hidden\" [required]=\"attribute.required\" [(ngModel)]=\"attribute.value\">\n <option *ngFor=\"let ref of attribute.refValues\" value=\"{{ref}}\" >{{ref}}</option>\n </select>\n </div>-->\n\n <div class=\"col\" [position]=\"'BODY'\" [mode]=\"mode\" dynamic-template [level]=\"level\"\n *ngFor=\"let attribute of child?.attrValues\" [template]=\"attribute.template\" (changedtrigger)=\"triggerchange()\"\n [attribute]=\"attribute\" [item]=\"child\"></div>\n</div>\n<div app-item-form *ngFor=\"let c of child?.children\" [parentList]=\"child.children\" (changedtrigger)=\"triggerchange()\"\n [listSourceTypes]=\"listSourceTypes\"\n [level]=\"level+1\" [mode]=\"mode\" [child]=\"c\"></div>\n\n", styles: [""] }] } ]; /** @nocollapse */ ItemFormComponent.ctorParameters = function () { return [ { type: TranslateService } ]; }; ItemFormComponent.propDecorators = { child: [{ type: Input }], level: [{ type: Input }], mode: [{ type: Input }], changedtrigger: [{ type: Output }], parentList: [{ type: Input }], listSourceTypes: [{ type: Input }] }; return ItemFormComponent; }()); export { ItemFormComponent }; if (false) { /** @type {?} */ ItemFormComponent.prototype.child; /** @type {?} */ ItemFormComponent.prototype.level; /** @type {?} */ ItemFormComponent.prototype.mode; /** @type {?} */ ItemFormComponent.prototype.item; /** @type {?} */ ItemFormComponent.prototype.changedtrigger; /** @type {?} */ ItemFormComponent.prototype.parentList; /** @type {?} */ ItemFormComponent.prototype.listSourceTypes; /** * @type {?} * @private */ ItemFormComponent.prototype.translateService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3RpYmFzLWZvcm0tanNvbi1nZW5lcmF0b3IvIiwic291cmNlcyI6WyJsaWIvaXRlbS1mb3JtL2l0ZW0tZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUtyRDtJQTRCRSwyQkFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFSdEQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQU01RCxvQkFBZSxHQUFvQixFQUFFLENBQUM7SUFHdEMsQ0FBQzs7OztJQUVELG9DQUFROzs7SUFBUjtJQUNBLENBQUM7Ozs7O0lBRUQsbUNBQU87Ozs7SUFBUCxVQUFRLEtBQWdCO1FBQXhCLGlCQVlDO1FBWEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDOztZQUN0QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FB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L0MsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7O2dCQUNsQyxDQUFDLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDN0MsT0FBTyxDQUFDLEVBQUUsRUFBRTtnQkFDVixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNqQztTQUNGO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDOztnQkFoR0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLHV0R0FBeUM7O2lCQUUxQzs7OztnQkFUTyxnQkFBZ0I7Ozt3QkFZckIsS0FBSzt3QkFHTCxLQUFLO3VCQUdMLEtBQUs7aUNBTUwsTUFBTTs2QkFHTixLQUFLO2tDQUdMLEtBQUs7O0lBd0VSLHdCQUFDO0NBQUEsQUFqR0QsSUFpR0M7U0E1RlksaUJBQWlCOzs7SUFFNUIsa0NBQ2lCOztJQUVqQixrQ0FDYzs7SUFFZCxpQ0FDYTs7SUFHYixpQ0FBZ0I7O0lBRWhCLDJDQUM0RDs7SUFFNUQsdUNBQ3dCOztJQUV4Qiw0Q0FDc0M7Ozs7O0lBRTFCLDZDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SXRlbU1vZGVsfSBmcm9tICcuLi9tb2RlbHMvaXRlbS5tb2RlbCc7XG5pbXBvcnQge0F0dHJpYnV0ZU1vZGVsfSBmcm9tICcuLi9tb2RlbHMvYXR0cmlidXRlLm1vZGVsJztcbmltcG9ydCB7Q2F0ZWdvcnlNb2RlbH0gZnJvbSAnLi4vbW9kZWxzL2NhdGVnb3J5Lm1vZGVsJztcbmltcG9ydCBzd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbi8qKlxuICogQ3JlYXRlZCBieSBUSUJBUy1Nb2hhbW1lZCBvbiAyMDIwLTA3LTQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pdGVtLWZvcm0sW2FwcC1pdGVtLWZvcm1dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2l0ZW0tZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEl0ZW1Gb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICBjaGlsZDogSXRlbU1vZGVsO1xuXG4gIEBJbnB1dCgpXG4gIGxldmVsOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgbW9kZTogc3RyaW5nO1xuXG5cbiAgaXRlbTogSXRlbU1vZGVsO1xuXG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkdHJpZ2dlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoKVxuICBwYXJlbnRMaXN0OiBJdGVtTW9kZWxbXTtcblxuICBASW5wdXQoKVxuICBsaXN0U291cmNlVHlwZXM6IENhdGVnb3J5TW9kZWxbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBhZGRpdGVtKGNoaWxkOiBJdGVtTW9kZWwpIHtcbiAgICB0aGlzLml0ZW0gPSBuZXcgSXRlbU1vZGVsKCk7XG4gICAgY29uc3Qgcm5kbSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgxMDAgLSAxICsgMSkpICsgMTtcbiAgICB0aGlzLml0ZW0uY29kZSA9IGNoaWxkLmNvZGUgKyAnXycgKyAoY2hpbGQuY2hpbGRyZW4ubGVuZ3RoICsgMSkgKyAnX1InICsgcm5kbTtcbiAgICBjaGlsZC5hdHRyVmFsdWVzLmZvckVhY2goYXR0ID0+IHtcbiAgICAgIGxldCB0cG1BdHQgPSBuZXcgQXR0cmlidXRlTW9kZWwoKTtcbiAgICAgIHRwbUF0dCA9IE9iamVjdC5hc3NpZ24oe30sIGF0dCk7XG4gICAgICB0cG1BdHQucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgIHRwbUF0dC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5pdGVtLmF0dHJWYWx1ZXMucHVzaCh0cG1BdHQpO1xuICAgIH0pO1xuICAgIGNoaWxkLmNoaWxkcmVuLnB1c2godGhpcy5pdGVtKTtcbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBJdGVtTW9kZWwpIHtcbiAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5wYXJlbnRMaXN0LmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgc3dhbCh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndG9hc3Quc3VjY2Vzcy5tZXNzYWdlLkFSRV9ZT1VfU1VSRScpLFxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndG9hc3Quc3VjY2Vzcy5tZXNzYWdlLkRFTEVURV9JVEVNJyksXG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAncmdiYSgyNDksNTgsNTgsMC44NCknLFxuICAgICAgICBjYW5jZWxCdXR0b25Db2xvcjogJ3JnYmEoNDgsMTMzLDIxNCwwLjg4KScsXG4gICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd0b2FzdC5zdWNjZXNzLm1lc3NhZ2UuQ0FOQ0VMJyksXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndG9hc3Quc3VjY2Vzcy5tZXNzYWdlLllFU19ERUxFVEUnKVxuICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudExpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJjaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdHJpZ2dlcmNoYW5nZSgpIHtcbiAgICB0aGlzLmNoYW5nZWR0cmlnZ2VyLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBtb3ZldXAoaXRlbTogSXRlbU1vZGVsKSB7XG4gICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLnBhcmVudExpc3QuaW5kZXhPZihpdGVtLCAwKSAtIDE7XG4gICAgY29uc3Qgb2xkSW5kZXggPSB0aGlzLnBhcmVudExpc3QuaW5kZXhPZihpdGVtLCAwKTtcbiAgICBpZiAobmV3SW5kZXggPj0gdGhpcy5wYXJlbnRMaXN0Lmxlbmd0aCkge1xuICAgICAgbGV0IGsgPSBuZXdJbmRleCAtIHRoaXMucGFyZW50TGlzdC5sZW5ndGggKyAxO1xuICAgICAgd2hpbGUgKGstLSkge1xuICAgICAgICB0aGlzLnBhcmVudExpc3QucHVzaCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBhcmVudExpc3Quc3BsaWNlKG5ld0luZGV4LCAwLCB0aGlzLnBhcmVudExpc3Quc3BsaWNlKG9sZEluZGV4LCAxKVswXSk7XG4gIH1cblxuXG4gIG1vdmVkb3duKGl0ZW06IEl0ZW1Nb2RlbCkge1xuICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5wYXJlbnRMaXN0LmluZGV4T2YoaXRlbSwgMCkgKyAxO1xuICAgIGNvbnN0IG9sZEluZGV4ID0gdGhpcy5wYXJlbnRMaXN0LmluZGV4T2YoaXRlbSwgMCk7XG4gICAgaWYgKG5ld0luZGV4ID49IHRoaXMucGFyZW50TGlzdC5sZW5ndGgpIHtcbiAgICAgIGxldCBrID0gbmV3SW5kZXggLSB0aGlzLnBhcmVudExpc3QubGVuZ3RoICsgMTtcbiAgICAgIHdoaWxlIChrLS0pIHtcbiAgICAgICAgdGhpcy5wYXJlbnRMaXN0LnB1c2godW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYXJlbnRMaXN0LnNwbGljZShuZXdJbmRleCwgMCwgdGhpcy5wYXJlbnRMaXN0LnNwbGljZShvbGRJbmRleCwgMSlbMF0pO1xuICB9XG59XG4iXX0=