angular-bootstrap-italia
Version:
<p align="center"> <h1 align="center">Bootstrap Italia + Angular 9</h1>
97 lines • 13.5 kB
JavaScript
import { __decorate, __read, __spread } from "tslib";
import { Component, Input, Output, EventEmitter } from '@angular/core';
// Services
import { DynamicFormControlService } from '../dynamic-form-control.service';
var DynamicModalFormComponent = /** @class */ (function () {
function DynamicModalFormComponent(qcs) {
this.qcs = qcs;
this.rows = [];
this.submitEvent = new EventEmitter();
this.newInsertEvent = new EventEmitter();
}
DynamicModalFormComponent.prototype.ngOnInit = function () {
this.needConfirm = false;
var elements = [].concat.apply([], __spread(this.rows.map(function (e) { return e.items; })));
this.form = this.qcs.toFormGroup(elements, this.defaultState);
};
DynamicModalFormComponent.prototype.ngOnChanges = function (changes) {
var _this = this;
if (changes.defaultState && this.defaultState) {
Object.keys(this.defaultState).forEach(function (key) {
if (_this.form.get(key)) {
_this.form.get(key).setValue(_this.defaultState[key]);
}
});
}
};
DynamicModalFormComponent.prototype.toggleConfirm = function (state) {
this.needConfirm = state;
};
DynamicModalFormComponent.prototype.resetForm = function () {
this.needConfirm = false;
this.form.reset();
};
Object.defineProperty(DynamicModalFormComponent.prototype, "flatValues", {
get: function () {
var _this = this;
var formKeys = Object.keys(this.form.getRawValue());
var elements = [].concat.apply([], __spread(this.rows.map(function (e) { return e.items; })));
return formKeys.map(function (key) {
var _a, _b;
var value;
if (typeof _this.form.get(key).value !== 'object') {
value = _this.form.get(key).value;
}
else {
var elemKey = ((_b = (_a = elements.find(function (elem) { return elem.key === key; })) === null || _a === void 0 ? void 0 : _a.asyncParams) === null || _b === void 0 ? void 0 : _b.searchField) || elements.find(function (elem) { return elem.key === key; }).formattedValueKey;
value = _this.form.get(key).value[elemKey];
}
return {
label: elements.find(function (elem) { return elem.key === key; }).label,
value: value
};
});
},
enumerable: true,
configurable: true
});
DynamicModalFormComponent.prototype.onSubmit = function () {
var _this = this;
var rawValue = this.form.getRawValue();
if (this.defaultState) {
var extraKeys = Object.keys(this.defaultState).filter(function (x) { return !Object.keys(rawValue).includes(x); });
extraKeys.forEach(function (key) {
rawValue[key] = _this.defaultState[key];
});
}
this.submitEvent.emit(rawValue);
};
DynamicModalFormComponent.prototype.emitNewInsert = function (event) {
this.newInsertEvent.emit(event);
};
DynamicModalFormComponent.ctorParameters = function () { return [
{ type: DynamicFormControlService }
]; };
__decorate([
Input()
], DynamicModalFormComponent.prototype, "rows", void 0);
__decorate([
Input()
], DynamicModalFormComponent.prototype, "defaultState", void 0);
__decorate([
Output()
], DynamicModalFormComponent.prototype, "submitEvent", void 0);
__decorate([
Output()
], DynamicModalFormComponent.prototype, "newInsertEvent", void 0);
DynamicModalFormComponent = __decorate([
Component({
selector: 'lib-dynamic-modal-form',
template: "<div>\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\n\n <div class=\"modal-body\">\n\n <div class=\"mt-3\" *ngIf=\"!needConfirm\">\n <div *ngFor=\"let row of rows\">\n <div class=\"form-row\">\n <div *ngFor=\"let item of row.items\" [ngClass]=\"item.class\">\n <lib-dynamic-form-element [field]=\"item\" [form]=\"form\" (newInsertEvent)=\"emitNewInsert($event)\">\n </lib-dynamic-form-element>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"needConfirm\">\n\n <div class=\"link-list-wrapper\">\n <ul class=\"link-list\">\n <li *ngFor=\"let elem of flatValues\">\n <span class=\"font-weight-bold\">{{ elem.label }}: </span>\n {{ elem.value }}\n </li>\n </ul>\n </div>\n\n <p class=\"font-weight-bold\">Vuoi confermare il salvataggio?</p>\n\n </div>\n\n </div>\n\n <div class=\"modal-footer mt-3\">\n\n <button class=\"btn btn-outline-secondary btn-sm\" type=\"button\" data-dismiss=\"modal\" (click)=\"form.reset()\"\n *ngIf=\"!needConfirm\">Annulla</button>\n <button class=\"btn btn-primary btn-sm\" type=\"button\" [disabled]=\"!form.valid\" (click)=\"toggleConfirm(true)\"\n *ngIf=\"!needConfirm\">Salva</button>\n\n <button class=\"btn btn-outline-secondary btn-sm\" type=\"button\" (click)=\"toggleConfirm(false)\"\n *ngIf=\"needConfirm\">Annulla</button>\n <button class=\"btn btn-primary btn-sm\" type=\"submit\" [disabled]=\"!form.valid\"\n *ngIf=\"needConfirm\">Conferma</button>\n\n </div>\n\n </form>\n\n</div>\n",
styles: [""]
})
], DynamicModalFormComponent);
return DynamicModalFormComponent;
}());
export { DynamicModalFormComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2RhbC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItYm9vdHN0cmFwLWl0YWxpYS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLW1vZGFsLWZvcm0vZHluYW1pYy1tb2RhbC1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFNekcsV0FBVztBQUNYLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUTVFO0lBYUUsbUNBQW9CLEdBQThCO1FBQTlCLFFBQUcsR0FBSCxHQUFHLENBQTJCO1FBWHpDLFNBQUksR0FBc0IsRUFBRSxDQUFDO1FBRzVCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFNUSxDQUFDO0lBRXZELDRDQUFRLEdBQVI7UUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUV6QixJQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsTUFBTSxPQUFULEVBQUUsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxLQUFLLEVBQVAsQ0FBTyxDQUFDLEVBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELCtDQUFXLEdBQVgsVUFBWSxPQUFzQjtRQUFsQyxpQkFRQztRQVBDLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzdDLE1BQU0s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Q0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxpREFBYSxHQUFiLFVBQWMsS0FBSztRQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOztnQkFqRXdCLHlCQUF5Qjs7SUFYekM7UUFBUixLQUFLLEVBQUU7MkRBQThCO0lBQzdCO1FBQVIsS0FBSyxFQUFFO21FQUFtQjtJQUVqQjtRQUFULE1BQU0sRUFBRTtrRUFBa0M7SUFFakM7UUFBVCxNQUFNLEVBQUU7cUVBQXFDO0lBUG5DLHlCQUF5QjtRQUxyQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLG9xREFBa0Q7O1NBRW5ELENBQUM7T0FDVyx5QkFBeUIsQ0FnRnJDO0lBQUQsZ0NBQUM7Q0FBQSxBQWhGRCxJQWdGQztTQWhGWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gTW9kZWxzXG5pbXBvcnQgeyBGb3JtUm93IH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLXJvdyc7XG5cbi8vIFNlcnZpY2VzXG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtLWNvbnRyb2wuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWR5bmFtaWMtbW9kYWwtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLW1vZGFsLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLW1vZGFsLWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljTW9kYWxGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIHJvd3M6IEZvcm1Sb3c8c3RyaW5nPltdID0gW107XG4gIEBJbnB1dCgpIGRlZmF1bHRTdGF0ZTogYW55O1xuXG4gIEBPdXRwdXQoKSBzdWJtaXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KCkgbmV3SW5zZXJ0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIG5lZWRDb25maXJtOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcWNzOiBEeW5hbWljRm9ybUNvbnRyb2xTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm5lZWRDb25maXJtID0gZmFsc2U7XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IFtdLmNvbmNhdCguLi50aGlzLnJvd3MubWFwKGUgPT4gZS5pdGVtcykpO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMucWNzLnRvRm9ybUdyb3VwKGVsZW1lbnRzLCB0aGlzLmRlZmF1bHRTdGF0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGVmYXVsdFN0YXRlICYmIHRoaXMuZGVmYXVsdFN0YXRlKSB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRTdGF0ZSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtLmdldChrZXkpKSB7XG4gICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpLnNldFZhbHVlKHRoaXMuZGVmYXVsdFN0YXRlW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb25maXJtKHN0YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5uZWVkQ29uZmlybSA9IHN0YXRlO1xuICB9XG5cbiAgcmVzZXRGb3JtKCkge1xuICAgIHRoaXMubmVlZENvbmZpcm0gPSBmYWxzZTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIGdldCBmbGF0VmFsdWVzKCkge1xuICAgIGNvbnN0IGZvcm1LZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgIGNvbnN0IGVsZW1lbnRzID0gW10uY29uY2F0KC4uLnRoaXMucm93cy5tYXAoZSA9PiBlLml0ZW1zKSk7XG5cbiAgICByZXR1cm4gZm9ybUtleXMubWFwKGtleSA9PiB7XG4gICAgICBsZXQgdmFsdWU7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybS5nZXQoa2V5KS52YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmZvcm0uZ2V0KGtleSkudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbGVtS2V5ID0gZWxlbWVudHMuZmluZChlbGVtID0+IGVsZW0ua2V5ID09PSBrZXkpPy5hc3luY1BhcmFtcz8uc2VhcmNoRmllbGRcbiAgICAgICAgICB8fCBlbGVtZW50cy5maW5kKGVsZW0gPT4gZWxlbS5rZXkgPT09IGtleSkuZm9ybWF0dGVkVmFsdWVLZXk7XG5cbiAgICAgICAgdmFsdWUgPSB0aGlzLmZvcm0uZ2V0KGtleSkudmFsdWVbZWxlbUtleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiBlbGVtZW50cy5maW5kKGVsZW0gPT4gZWxlbS5rZXkgPT09IGtleSkubGFiZWwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgb25TdWJtaXQoKSB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcblxuICAgIGlmICh0aGlzLmRlZmF1bHRTdGF0ZSkge1xuICAgICAgY29uc3QgZXh0cmFLZXlzID0gT2JqZWN0LmtleXModGhpcy5kZWZhdWx0U3RhdGUpLmZpbHRlcih4ID0+ICFPYmplY3Qua2V5cyhyYXdWYWx1ZSkuaW5jbHVkZXMoeCkpO1xuICAgICAgZXh0cmFLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgcmF3VmFsdWVba2V5XSA9IHRoaXMuZGVmYXVsdFN0YXRlW2tleV07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnN1Ym1pdEV2ZW50LmVtaXQocmF3VmFsdWUpO1xuICB9XG5cbiAgZW1pdE5ld0luc2VydChldmVudCkge1xuICAgIHRoaXMubmV3SW5zZXJ0RXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxufVxuIl19