@updevs/components 1.0.0-alpha.46 → 1.0.0-alpha.48
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.
- package/esm2022/form/form.component.mjs +3 -3
- package/esm2022/lib/models/row-column-size.mjs +1 -1
- package/esm2022/lib/tools/column-size.helper.mjs +2 -2
- package/fesm2022/updevs-components-form.mjs +2 -2
- package/fesm2022/updevs-components-form.mjs.map +1 -1
- package/fesm2022/updevs-components.mjs +1 -1
- package/fesm2022/updevs-components.mjs.map +1 -1
- package/lib/models/row-column-size.d.ts +18 -1
- package/package.json +13 -13
|
@@ -107,11 +107,11 @@ export class FormComponent extends BaseComponent {
|
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FormComponent, selector: "upd-form", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasActionsSection: { classPropertyName: "hasActionsSection", publicName: "hasActionsSection", isSignal: true, isRequired: false, transformFunction: null }, isCard: { classPropertyName: "isCard", publicName: "isCard", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isSaving: { classPropertyName: "isSaving", publicName: "isSaving", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initialized: "initialized", dataLoaded: "dataLoaded", submitted: "submitted", formData: "formDataChange", formGroup: "formGroupChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i4.DynamicFieldComponent, selector: "upd-dynamic-field", inputs: ["formGroup", "field", "layout"], outputs: ["submitForm"] }] }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FormComponent, selector: "upd-form", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasActionsSection: { classPropertyName: "hasActionsSection", publicName: "hasActionsSection", isSignal: true, isRequired: false, transformFunction: null }, isCard: { classPropertyName: "isCard", publicName: "isCard", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isSaving: { classPropertyName: "isSaving", publicName: "isSaving", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initialized: "initialized", dataLoaded: "dataLoaded", submitted: "submitted", formData: "formDataChange", formGroup: "formGroupChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i4.DynamicFieldComponent, selector: "upd-dynamic-field", inputs: ["formGroup", "field", "layout"], outputs: ["submitForm"] }] }); }
|
|
111
111
|
}
|
|
112
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, decorators: [{
|
|
113
113
|
type: Component,
|
|
114
|
-
args: [{ selector: 'upd-form', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n" }]
|
|
114
|
+
args: [{ selector: 'upd-form', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n" }]
|
|
115
115
|
}], ctorParameters: () => [], propDecorators: { initialized: [{
|
|
116
116
|
type: Output
|
|
117
117
|
}], dataLoaded: [{
|
|
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
119
119
|
}], submitted: [{
|
|
120
120
|
type: Output
|
|
121
121
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFTckUsTUFBTSxPQUFPLGFBQWlCLFNBQVEsYUFBYTtJQTRDL0MsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBSUQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWxETyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdkMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUMsQ0FBQyxvQkFBb0I7UUFDeEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFFckQ7O1dBRUc7UUFDSCxTQUFJLEdBQWdDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyRDs7V0FFRztRQUNILFdBQU0sR0FBd0MsS0FBSyxDQUF5QixVQUFVLENBQUMsQ0FBQztRQUN4Rjs7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QUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBMUhRLGFBQWE7a0dBQWIsYUFBYSx1L0NDaEIxQiw4dkNBK0JBOzsyRkRmYSxhQUFhO2tCQUx6QixTQUFTOytCQUNJLFVBQVU7d0RBS0QsV0FBVztzQkFBN0IsTUFBTTtnQkFDWSxVQUFVO3NCQUE1QixNQUFNO2dCQUNZLFNBQVM7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBJbnB1dFNpZ25hbCwgbW9kZWwsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEhvcml6b250YWxWZXJ0aWNhbFR5cGUgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgVGV4dE1vZGVsLCBUZXh0U2VydmljZSB9IGZyb20gJ0B1cGRldnMvc2RrJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuXG5pbXBvcnQgeyBEeW5hbWljRmllbGRUeXBlIH0gZnJvbSAnLi9tb2RlbHMvZW51bXMvZHluYW1pYy1maWVsZC50eXBlJztcbmltcG9ydCB7IEZpbGVVcGxvYWRGaWVsZE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS11cGxvYWQtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRm9ybVJvd01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZm9ybS1yb3cubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGRhdGFMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7IC8vIFRPRE86IGltcGxlbWVudGFyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKlxuICAgICAqIFJvd3MgdG8gZ2VuZXJhdGUgdGhlIGZvcm0uXG4gICAgICovXG4gICAgcm93czogSW5wdXRTaWduYWw8Rm9ybVJvd01vZGVsW10+ID0gaW5wdXQucmVxdWlyZWQoKTtcbiAgICAvKipcbiAgICAgKiBGb3JtJ3MgbGF5b3V0LlxuICAgICAqL1xuICAgIGxheW91dDogSW5wdXRTaWduYWw8SG9yaXpvbnRhbFZlcnRpY2FsVHlwZT4gPSBpbnB1dDxIb3Jpem9udGFsVmVydGljYWxUeXBlPigndmVydGljYWwnKTtcbiAgICAvKipcbiAgICAgKiBUaXRsZSBvZiB0aGUgZm9ybS5cbiAgICAgKiBPcHRpb25hbC5cbiAgICAgKi9cbiAgICB0aXRsZTogSW5wdXRTaWduYWw8T3B0aW9uYWxUeXBlPFRleHRNb2RlbD4+ID0gaW5wdXQ8T3B0aW9uYWxUeXBlPFRleHRNb2RlbD4+KHVuZGVmaW5lZCk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgYWN0aW9ucyBzZWN0aW9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIGhhc0FjdGlvbnNTZWN0aW9uID0gaW5wdXQodHJ1ZSk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZm9ybSBpcyBjb250YWluZWQgaW4gYSBjYXJkLlxuICAgICAqIElmIHRydWUsIGl0J2xsIGRpc3BsYXkgYSBjYXJkIGFzIGEgZm9ybSB3cmFwcGVyLlxuICAgICAqL1xuICAgIGlzQ2FyZCA9IGlucHV0KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIGluIHJlYWQgb25seSBtb2RlLCB3aGljaCBtZWFucyBubyBmaWVsZHMgY2FuIGJlIGVkaXRlZC5cbiAgICAgKi9cbiAgICBpc0Rpc2FibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsOiBib29sZWFuIHwgc3RyaW5nKSA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/IHZhbCA9PT0gJycgOiB2YWwgfSk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZm9ybSBpcyBsb2FkaW5nLlxuICAgICAqL1xuICAgIGlzTG9hZGluZyA9IGlucHV0KGZhbHNlKTsgLy8gVE9ETzogaW1wbGVtZW50YXJcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIHNhdmluZy5cbiAgICAgKi9cbiAgICBpc1NhdmluZyA9IGlucHV0KGZhbHNlKTsgLy8gVE9ETzogaW1wbGVtZW50YXJcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGZvcm0gZGF0YS5cbiAgICAgKi9cbiAgICBmb3JtRGF0YSA9IG1vZGVsKHt9IGFzIFQpO1xuICAgIGZvcm1Hcm91cCA9IG1vZGVsKG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgICBnZXQgdGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRTZXJ2aWNlLmdldFRleHQodGhpcy50aXRsZSgpKTtcbiAgICB9XG5cbiAgICByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3dzKCk7XG4gICAgICAgICAgICB0aGlzLnNldHVwRm9ybUdyb3VwKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldHVwRm9ybUdyb3VwKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCgpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlc1N1YiA9IHRoaXMuZm9ybUdyb3VwKCkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmZvcm1EYXRhLnNldCh0aGlzLmZvcm1Hcm91cCgpLmdldFJhd1ZhbHVlKCkgYXMgVCkpO1xuXG4gICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyh2YWx1ZUNoYW5nZXNTdWIpO1xuICAgIH1cblxuICAgIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwKCkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwKCkuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiAoY29udHJvbCBhcyBGb3JtQ29udHJvbCkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKTtcblxuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAoKS52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQuZW1pdCh0aGlzLmZvcm1Hcm91cCgpLnZhbHVlIGFzIFQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEZvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsRmllbGRzID0gdGhpcy5yb3dzKCkubWFwKHIgPT4gci5maWVsZHMpLnJlZHVjZSgoYWNjLCBmaWVsZHMpID0+IGFjYy5jb25jYXQoZmllbGRzKSwgW10pO1xuXG4gICAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBmaWVsZC52YWxpZGF0b3JzIHx8IFtdO1xuXG4gICAgICAgICAgICBpZiAoZmllbGQuaXNSZXF1aXJlZCAmJiAhdmFsaWRhdG9ycy5pbmNsdWRlcyhWYWxpZGF0b3JzLnJlcXVpcmVkKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVE9ETzogaGFuZGxlIGV4dHJhIGNhc2VzLCB3aGVuIHJlYWR5LiBEYXRlUmFuZ2UsIERhdGVUaW1lUmFuZ2UsIFRpbWVSYW5nZSwgZXRjLlxuICAgICAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEeW5hbWljRmllbGRUeXBlLkZpbGVVcGxvYWQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwKCkuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5pbml0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmlzRGlzYWJsZWQgfHwgdGhpcy5pc0Rpc2FibGVkKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgdmFsaWRhdG9yczogdmFsaWRhdG9ycyB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lRm9ybVByb3AgPSAoZmllbGQgYXMgRmlsZVVwbG9hZEZpZWxkTW9kZWwpLmZpbGVOYW1lRm9ybVByb3BlcnR5O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghIWZpbGVOYW1lRm9ybVByb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwKCkuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZUZvcm1Qcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5pbml0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmaWVsZC5pc0Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkLmluaXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmllbGQuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuRm9ybSdcIj5cbiAgICA8ZGl2IFtjbGFzcy5jYXJkXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgIEBpZiAoISF0aXRsZVRleHQpIHtcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtaGVhZGVyXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgICAgICAgICAgPGgzIFtjbGFzcy5jYXJkLXRpdGxlXT1cImlzQ2FyZCgpXCI+e3sgdGl0bGVUZXh0IH19PC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtYm9keV09XCJpc0NhcmQoKVwiPlxuICAgICAgICAgICAgQGZvciAocm93IG9mIHJvd3MoKTsgdHJhY2sgcm93OyBsZXQgaXNGaXJzdCA9ICRmaXJzdCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBbY2xhc3MubXQtNF09XCIhaXNGaXJzdFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCEhcm93LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7IHRleHRTZXJ2aWNlLmdldFRleHQocm93LnRpdGxlKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZmllbGQgb2Ygcm93LmZpZWxkczsgdHJhY2sgZmllbGQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHVwZC1keW5hbWljLWZpZWxkIFtsYXlvdXRdPVwibGF5b3V0KClcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cCgpXCIgKHN1Ym1pdEZvcm0pPVwic3VibWl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdXBkLWR5bmFtaWMtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChoYXNBY3Rpb25zU2VjdGlvbigpKSB7XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5jYXJkLWZvb3Rlcl09XCJpc0NhcmQoKVwiIFtjbGFzcy5tdC00XT1cIiFpc0NhcmQoKVwiPlxuICAgICAgICAgICAgICAgIDx1cGQtYnV0dG9uIGNvbG9yU3R5bGU9XCJwcmltYXJ5XCIgKGNsaWNrZWQpPVwic3VibWl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnU3VibWl0JykgfX1cbiAgICAgICAgICAgICAgICA8L3VwZC1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFTckUsTUFBTSxPQUFPLGFBQWlCLFNBQVEsYUFBYTtJQTRDL0MsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBSUQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWxETyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdkMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUMsQ0FBQyxvQkFBb0I7UUFDeEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFFckQ7O1dBRUc7UUFDSCxTQUFJLEdBQWdDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyRDs7V0FFRztRQUNILFdBQU0sR0FBd0MsS0FBSyxDQUF5QixVQUFVLENBQUMsQ0FBQztRQUN4Rjs7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QUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBMUhRLGFBQWE7a0dBQWIsYUFBYSx1L0NDaEIxQixxd0NBK0JBOzsyRkRmYSxhQUFhO2tCQUx6QixTQUFTOytCQUNJLFVBQVU7d0RBS0QsV0FBVztzQkFBN0IsTUFBTTtnQkFDWSxVQUFVO3NCQUE1QixNQUFNO2dCQUNZLFNBQVM7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBJbnB1dFNpZ25hbCwgbW9kZWwsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEhvcml6b250YWxWZXJ0aWNhbFR5cGUgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgVGV4dE1vZGVsLCBUZXh0U2VydmljZSB9IGZyb20gJ0B1cGRldnMvc2RrJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuXG5pbXBvcnQgeyBEeW5hbWljRmllbGRUeXBlIH0gZnJvbSAnLi9tb2RlbHMvZW51bXMvZHluYW1pYy1maWVsZC50eXBlJztcbmltcG9ydCB7IEZpbGVVcGxvYWRGaWVsZE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS11cGxvYWQtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRm9ybVJvd01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZm9ybS1yb3cubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGRhdGFMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7IC8vIFRPRE86IGltcGxlbWVudGFyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKlxuICAgICAqIFJvd3MgdG8gZ2VuZXJhdGUgdGhlIGZvcm0uXG4gICAgICovXG4gICAgcm93czogSW5wdXRTaWduYWw8Rm9ybVJvd01vZGVsW10+ID0gaW5wdXQucmVxdWlyZWQoKTtcbiAgICAvKipcbiAgICAgKiBGb3JtJ3MgbGF5b3V0LlxuICAgICAqL1xuICAgIGxheW91dDogSW5wdXRTaWduYWw8SG9yaXpvbnRhbFZlcnRpY2FsVHlwZT4gPSBpbnB1dDxIb3Jpem9udGFsVmVydGljYWxUeXBlPigndmVydGljYWwnKTtcbiAgICAvKipcbiAgICAgKiBUaXRsZSBvZiB0aGUgZm9ybS5cbiAgICAgKiBPcHRpb25hbC5cbiAgICAgKi9cbiAgICB0aXRsZTogSW5wdXRTaWduYWw8T3B0aW9uYWxUeXBlPFRleHRNb2RlbD4+ID0gaW5wdXQ8T3B0aW9uYWxUeXBlPFRleHRNb2RlbD4+KHVuZGVmaW5lZCk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgYWN0aW9ucyBzZWN0aW9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIGhhc0FjdGlvbnNTZWN0aW9uID0gaW5wdXQodHJ1ZSk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZm9ybSBpcyBjb250YWluZWQgaW4gYSBjYXJkLlxuICAgICAqIElmIHRydWUsIGl0J2xsIGRpc3BsYXkgYSBjYXJkIGFzIGEgZm9ybSB3cmFwcGVyLlxuICAgICAqL1xuICAgIGlzQ2FyZCA9IGlucHV0KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIGluIHJlYWQgb25seSBtb2RlLCB3aGljaCBtZWFucyBubyBmaWVsZHMgY2FuIGJlIGVkaXRlZC5cbiAgICAgKi9cbiAgICBpc0Rpc2FibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsOiBib29sZWFuIHwgc3RyaW5nKSA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/IHZhbCA9PT0gJycgOiB2YWwgfSk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZm9ybSBpcyBsb2FkaW5nLlxuICAgICAqL1xuICAgIGlzTG9hZGluZyA9IGlucHV0KGZhbHNlKTsgLy8gVE9ETzogaW1wbGVtZW50YXJcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIHNhdmluZy5cbiAgICAgKi9cbiAgICBpc1NhdmluZyA9IGlucHV0KGZhbHNlKTsgLy8gVE9ETzogaW1wbGVtZW50YXJcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGZvcm0gZGF0YS5cbiAgICAgKi9cbiAgICBmb3JtRGF0YSA9IG1vZGVsKHt9IGFzIFQpO1xuICAgIGZvcm1Hcm91cCA9IG1vZGVsKG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgICBnZXQgdGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRTZXJ2aWNlLmdldFRleHQodGhpcy50aXRsZSgpKTtcbiAgICB9XG5cbiAgICByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3dzKCk7XG4gICAgICAgICAgICB0aGlzLnNldHVwRm9ybUdyb3VwKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldHVwRm9ybUdyb3VwKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCgpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlc1N1YiA9IHRoaXMuZm9ybUdyb3VwKCkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmZvcm1EYXRhLnNldCh0aGlzLmZvcm1Hcm91cCgpLmdldFJhd1ZhbHVlKCkgYXMgVCkpO1xuXG4gICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyh2YWx1ZUNoYW5nZXNTdWIpO1xuICAgIH1cblxuICAgIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwKCkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwKCkuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiAoY29udHJvbCBhcyBGb3JtQ29udHJvbCkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKTtcblxuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAoKS52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQuZW1pdCh0aGlzLmZvcm1Hcm91cCgpLnZhbHVlIGFzIFQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEZvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsRmllbGRzID0gdGhpcy5yb3dzKCkubWFwKHIgPT4gci5maWVsZHMpLnJlZHVjZSgoYWNjLCBmaWVsZHMpID0+IGFjYy5jb25jYXQoZmllbGRzKSwgW10pO1xuXG4gICAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBmaWVsZC52YWxpZGF0b3JzIHx8IFtdO1xuXG4gICAgICAgICAgICBpZiAoZmllbGQuaXNSZXF1aXJlZCAmJiAhdmFsaWRhdG9ycy5pbmNsdWRlcyhWYWxpZGF0b3JzLnJlcXVpcmVkKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVE9ETzogaGFuZGxlIGV4dHJhIGNhc2VzLCB3aGVuIHJlYWR5LiBEYXRlUmFuZ2UsIERhdGVUaW1lUmFuZ2UsIFRpbWVSYW5nZSwgZXRjLlxuICAgICAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEeW5hbWljRmllbGRUeXBlLkZpbGVVcGxvYWQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwKCkuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5pbml0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmlzRGlzYWJsZWQgfHwgdGhpcy5pc0Rpc2FibGVkKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgdmFsaWRhdG9yczogdmFsaWRhdG9ycyB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lRm9ybVByb3AgPSAoZmllbGQgYXMgRmlsZVVwbG9hZEZpZWxkTW9kZWwpLmZpbGVOYW1lRm9ybVByb3BlcnR5O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghIWZpbGVOYW1lRm9ybVByb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwKCkuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZUZvcm1Qcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5pbml0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmaWVsZC5pc0Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkLmluaXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmllbGQuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuRm9ybSdcIj5cbiAgICA8ZGl2IFtjbGFzcy5jYXJkXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgIEBpZiAoISF0aXRsZVRleHQpIHtcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtaGVhZGVyXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgICAgICAgICAgPGgzIFtjbGFzcy5jYXJkLXRpdGxlXT1cImlzQ2FyZCgpXCI+e3sgdGl0bGVUZXh0IH19PC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtYm9keV09XCJpc0NhcmQoKVwiPlxuICAgICAgICAgICAgQGZvciAocm93IG9mIHJvd3MoKTsgdHJhY2sgcm93OyBsZXQgaXNGaXJzdCA9ICRmaXJzdCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBbY2xhc3MubXQtNF09XCIhaXNGaXJzdFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCEhcm93LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjb2wtMTJcIj57eyB0ZXh0U2VydmljZS5nZXRUZXh0KHJvdy50aXRsZSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIHJvdy5maWVsZHM7IHRyYWNrIGZpZWxkLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtZHluYW1pYy1maWVsZCBbbGF5b3V0XT1cImxheW91dCgpXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXAoKVwiIChzdWJtaXRGb3JtKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VwZC1keW5hbWljLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoaGFzQWN0aW9uc1NlY3Rpb24oKSkge1xuICAgICAgICAgICAgPGRpdiBbY2xhc3MuY2FyZC1mb290ZXJdPVwiaXNDYXJkKClcIiBbY2xhc3MubXQtNF09XCIhaXNDYXJkKClcIj5cbiAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBjb2xvclN0eWxlPVwicHJpbWFyeVwiIChjbGlja2VkKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ1N1Ym1pdCcpIH19XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvbHVtbi1zaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvbW9kZWxzL3Jvdy1jb2x1bW4tc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSb3dDb2x1bW5TaXplIHtcbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRvIGFsbCBicmVha3BvaW50cyBmcm9tIDU3NnB4IGFuZCB1cCAoY29sLVgpLlxuICAgICAqL1xuICAgIGRlZmF1bHQ/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogRm9yIGRldmljZXMgd2l0aCAxMjAwcHggYW5kIHVwIChjb2wteGwtWCkuXG4gICAgICovXG4gICAgZXh0cmFMYXJnZT86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBGb3IgZGV2aWNlcyB3aXRoIDk5MnB4IGFuZCB1cCAoY29sLWxnLVgpLlxuICAgICAqL1xuICAgIGxhcmdlPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEZvciBkZXZpY2VzIHdpdGggNzY4cHggYW5kIHVwIChjb2wtbWQtWCkuXG4gICAgICovXG4gICAgbWVkaXVtPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEZvciBkZXZpY2VzIHdpdGggNTc2cHggYW5kIHVwIChjb2wtc20tWCkuXG4gICAgICovXG4gICAgc21hbGw/OiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -3,10 +3,10 @@ export class ColumnSizeHelper {
|
|
|
3
3
|
if (!colSize) {
|
|
4
4
|
return `col-${defaultIfEmpty || 12}`;
|
|
5
5
|
}
|
|
6
|
-
return this.getClasses(`col-${colSize.default}
|
|
6
|
+
return this.getClasses(!!colSize.default ? `col-${colSize.default}` : '', !!colSize.extraLarge ? `col-xl-${colSize.extraLarge}` : '', !!colSize.large ? `col-lg-${colSize.large}` : '', !!colSize.medium ? `col-md-${colSize.medium}` : '', !!colSize.small ? `col-sm-${(colSize.small)}` : '');
|
|
7
7
|
}
|
|
8
8
|
static getClasses(...classes) {
|
|
9
9
|
return classes.join(' ').trim();
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNpemUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdG9vbHMvY29sdW1uLXNpemUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUF1QixFQUFFLGNBQXVCO1FBQ2xFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE9BQU8sT0FBTyxjQUFjLElBQUksRUFBRSxFQUFFLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ2pELENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUMxRCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDaEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ2xELENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckQsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBaUI7UUFDbEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvd0NvbHVtblNpemUgfSBmcm9tICcuLi9tb2RlbHMvcm93LWNvbHVtbi1zaXplJztcblxuZXhwb3J0IGNsYXNzIENvbHVtblNpemVIZWxwZXIge1xuICAgIHN0YXRpYyBnZXRTaXplQ2xhc3Nlcyhjb2xTaXplPzogUm93Q29sdW1uU2l6ZSwgZGVmYXVsdElmRW1wdHk/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWNvbFNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBgY29sLSR7ZGVmYXVsdElmRW1wdHkgfHwgMTJ9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzZXMoXG4gICAgICAgICAgICAhIWNvbFNpemUuZGVmYXVsdCA/IGBjb2wtJHtjb2xTaXplLmRlZmF1bHR9YCA6ICcnLFxuICAgICAgICAgICAgISFjb2xTaXplLmV4dHJhTGFyZ2UgPyBgY29sLXhsLSR7Y29sU2l6ZS5leHRyYUxhcmdlfWAgOiAnJyxcbiAgICAgICAgICAgICEhY29sU2l6ZS5sYXJnZSA/IGBjb2wtbGctJHtjb2xTaXplLmxhcmdlfWAgOiAnJyxcbiAgICAgICAgICAgICEhY29sU2l6ZS5tZWRpdW0gPyBgY29sLW1kLSR7Y29sU2l6ZS5tZWRpdW19YCA6ICcnLFxuICAgICAgICAgICAgISFjb2xTaXplLnNtYWxsID8gYGNvbC1zbS0keyhjb2xTaXplLnNtYWxsKX1gIDogJydcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0Q2xhc3NlcyguLi5jbGFzc2VzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -305,11 +305,11 @@ class FormComponent extends BaseComponent {
|
|
|
305
305
|
});
|
|
306
306
|
}
|
|
307
307
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
308
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FormComponent, selector: "upd-form", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasActionsSection: { classPropertyName: "hasActionsSection", publicName: "hasActionsSection", isSignal: true, isRequired: false, transformFunction: null }, isCard: { classPropertyName: "isCard", publicName: "isCard", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isSaving: { classPropertyName: "isSaving", publicName: "isSaving", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initialized: "initialized", dataLoaded: "dataLoaded", submitted: "submitted", formData: "formDataChange", formGroup: "formGroupChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i1$2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: DynamicFieldComponent, selector: "upd-dynamic-field", inputs: ["formGroup", "field", "layout"], outputs: ["submitForm"] }] }); }
|
|
308
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FormComponent, selector: "upd-form", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasActionsSection: { classPropertyName: "hasActionsSection", publicName: "hasActionsSection", isSignal: true, isRequired: false, transformFunction: null }, isCard: { classPropertyName: "isCard", publicName: "isCard", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isSaving: { classPropertyName: "isSaving", publicName: "isSaving", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initialized: "initialized", dataLoaded: "dataLoaded", submitted: "submitted", formData: "formDataChange", formGroup: "formGroupChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i1$2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: DynamicFieldComponent, selector: "upd-dynamic-field", inputs: ["formGroup", "field", "layout"], outputs: ["submitForm"] }] }); }
|
|
309
309
|
}
|
|
310
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, decorators: [{
|
|
311
311
|
type: Component,
|
|
312
|
-
args: [{ selector: 'upd-form', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n" }]
|
|
312
|
+
args: [{ selector: 'upd-form', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n" }]
|
|
313
313
|
}], ctorParameters: () => [], propDecorators: { initialized: [{
|
|
314
314
|
type: Output
|
|
315
315
|
}], dataLoaded: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updevs-components-form.mjs","sources":["../../../../libs/components/form/src/models/enums/dynamic-field.type.ts","../../../../libs/components/form/src/tools/errors-helper.ts","../../../../libs/components/form/src/components/dynamic-field/dynamic-field.component.ts","../../../../libs/components/form/src/components/dynamic-field/dynamic-field.component.html","../../../../libs/components/form/src/form.component.ts","../../../../libs/components/form/src/form.component.html","../../../../libs/components/form/src/upd-form.module.ts","../../../../libs/components/form/src/updevs-components-form.ts"],"sourcesContent":["export enum DynamicFieldType {\n Input = 1,\n Select = 2,\n SelectMultiple = 3,\n Label = 4,\n Checkbox = 5,\n CheckboxGroup = 6,\n Radio = 7,\n RadioGroup = 8,\n TextArea = 9,\n FileUpload = 10,\n MaskedInput = 11\n}\n","import { Injectable, inject } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { TextService } from '@updevs/sdk';\nimport { DictionaryType, OptionalType } from '@updevs/sdk/types';\nimport { HashMap } from '@jsverse/transloco';\n\nimport { ValidatorConfig } from '../models/validator-config';\n\n@Injectable()\nexport class ErrorsHelper {\n private errors: DictionaryType<ValidatorConfig> = {\n 'required': { text: 'UpDevs.Form.ErrorMessages.Required' },\n 'requiredTrue': { text: 'UpDevs.Form.ErrorMessages.RequiredTrue' },\n 'generic': { text: 'UpDevs.Form.ErrorMessages.Generic' },\n 'email': { text: 'UpDevs.Form.ErrorMessages.Email' },\n 'max': { text: 'UpDevs.Form.ErrorMessages.Max', defaultErrorParamToShow: 'max' },\n 'min': { text: 'UpDevs.Form.ErrorMessages.Min', defaultErrorParamToShow: 'min' },\n 'maxlength': { text: 'UpDevs.Form.ErrorMessages.MaxLength', defaultErrorParamToShow: 'requiredLength' },\n 'minlength': { text: 'UpDevs.Form.ErrorMessages.MinLength', defaultErrorParamToShow: 'requiredLength' }\n };\n private readonly textService = inject(TextService);\n\n getMessages(control: AbstractControl, customConfig?: DictionaryType<ValidatorConfig>): string[] {\n if (!control.errors) {\n return [];\n }\n\n const errorMessages: string[] = [];\n const genericText = this.textService.getText({ text: this.errors['generic']!.text, isTranslated: false });\n const combinedErrorMessagesList: DictionaryType<ValidatorConfig> = Object.assign({}, this.errors, customConfig || {});\n const controlErrorKeys = Object.keys(control.errors);\n\n controlErrorKeys.forEach(key => {\n const customError = !!control.errors ? control.errors[key] : undefined;\n\n if (!!customError?.errorText) {\n errorMessages.push(this.textService.getText(customError.errorText));\n } else if (key in combinedErrorMessagesList) {\n const config = combinedErrorMessagesList[key]!;\n let params: OptionalType<HashMap>;\n\n if (config.showLength) {\n params = { value: control.value?.length || 0 };\n }\n\n if (!!config.defaultErrorParamToShow) {\n params = { value: control.errors![key][config.defaultErrorParamToShow] };\n }\n\n errorMessages.push(this.textService.getText({ text: config.text, isTranslated: false }, params));\n }\n });\n\n if (controlErrorKeys.length > 0 && errorMessages.length < 1) {\n errorMessages.push(genericText);\n }\n\n return errorMessages;\n }\n}\n","import { Component, OnInit, HostBinding, inject, InputSignal, input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { TextModel, TextService } from '@updevs/sdk';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { ColumnSizeHelper, HorizontalVerticalType, ValidationStatusType } from '@updevs/components';\nimport { Defaults as SelectDefaults } from '@updevs/components/form-controls/select';\nimport { FileUploadChangedEvent } from '@updevs/components/form-controls/file-upload';\n\nimport { FileUploadFieldModel } from '../../models/file-upload-field.model';\nimport { InputFieldModel } from '../../models/input-field.model';\nimport { MaskedInputFieldModel } from '../../models/masked-input-field.model';\nimport { ErrorsHelper } from '../../tools/errors-helper';\nimport { DynamicFieldType } from '../../models/enums/dynamic-field.type';\nimport { DynamicFieldModel } from '../../models/dynamic-field.model';\nimport { CheckboxFieldModel } from '../../models/checkbox-field.model';\nimport { RadioFieldModel } from '../../models/radio-field.model';\nimport { SelectFieldModel } from '../../models/select-field.model';\nimport { SingleSelectFieldModel } from '../../models/single-select-field.model';\nimport { CheckboxGroupFieldModel } from '../../models/checkbox-group-field.model';\nimport { RadioGroupFieldModel } from '../../models/radio-group-field.model';\nimport { TextareaFieldModel } from '../../models/textarea-field.model';\n\n@Component({\n selector: 'upd-dynamic-field',\n templateUrl: './dynamic-field.component.html',\n styleUrl: './dynamic-field.component.scss'\n})\nexport class DynamicFieldComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = '';\n\n @Output() readonly submitForm = new EventEmitter<void>();\n\n DynamicFieldType = DynamicFieldType;\n SelectDefaults = SelectDefaults;\n\n formGroup: InputSignal<FormGroup> = input.required();\n field: InputSignal<DynamicFieldModel> = input.required();\n layout: InputSignal<HorizontalVerticalType> = input.required();\n validationStatus?: ValidationStatusType;\n validationStatusDescriptions: TextModel[] = [];\n get formControl(): FormControl {\n return this.formGroup().controls[this.field().name] as FormControl;\n }\n get inputField(): InputFieldModel {\n return this.field() as InputFieldModel;\n }\n get checkboxField(): CheckboxFieldModel {\n return this.field() as CheckboxFieldModel;\n }\n get checkboxGroupField(): CheckboxGroupFieldModel {\n return this.field() as CheckboxGroupFieldModel;\n }\n get radioField(): CheckboxFieldModel {\n return this.field() as RadioFieldModel;\n }\n get radioGroupField(): RadioGroupFieldModel {\n return this.field() as RadioGroupFieldModel;\n }\n get selectField(): SelectFieldModel {\n return this.field() as SelectFieldModel;\n }\n get singleSelectField(): SingleSelectFieldModel {\n return this.field() as SingleSelectFieldModel;\n }\n get textareaField(): TextareaFieldModel {\n return this.field() as TextareaFieldModel;\n }\n get fileUploadField(): FileUploadFieldModel {\n return this.field() as FileUploadFieldModel;\n }\n get maskedField(): MaskedInputFieldModel {\n return this.field() as MaskedInputFieldModel;\n }\n get checkboxGroupOptionsKeys(): string[] {\n return Object.keys(this.checkboxGroupField.options);\n }\n get radioGroupOptionsKeys(): string[] {\n return Object.keys(this.radioGroupField.options);\n }\n get fileNameControl(): OptionalType<FormControl> {\n return !!this.fileUploadField.fileNameFormProperty\n ? this.formGroup().controls[this.fileUploadField.fileNameFormProperty] as FormControl\n : undefined;\n }\n\n readonly textService = inject(TextService);\n\n private readonly errorsHelper = inject(ErrorsHelper);\n\n ngOnInit(): void {\n const statusSub = this.formControl.statusChanges.subscribe(status => {\n if (status === 'INVALID') {\n this.validationStatusDescriptions = this.errorsHelper.getMessages(this.formControl)\n .map(t => ({ text: t, isTranslated: true }));\n this.validationStatus = 'invalid';\n } else {\n this.validationStatusDescriptions = [];\n this.validationStatus = this.field().showValidStatus ? 'valid' : undefined;\n }\n });\n\n this.setupWrapperClasses();\n this.addSubscriptions(statusSub);\n }\n\n onBlur(): void {\n if (this.field().shouldValidateOnBlur) {\n this.formControl.updateValueAndValidity();\n }\n }\n\n setControlValue(value: any): void {\n this.formControl.setValue(value);\n this.formControl.markAsDirty();\n }\n\n getText(textModel?: TextModel): string {\n return this.textService.getText(textModel);\n }\n\n getOptionDescription(key: string, type: 'checkbox' | 'radio'): OptionalType<TextModel> {\n return type === 'checkbox' ? this.checkboxGroupField.options[key] : this.radioGroupField.options[key];\n }\n\n handleFileSelected(event?: FileUploadChangedEvent): void {\n this.formControl.setValue(!!this.fileUploadField.saveAsDataUrl ? event?.dataUrl : event?.file);\n this.formControl.markAsDirty();\n\n if (!!this.fileUploadField.fileNameFormProperty) {\n this.fileNameControl!.setValue(event?.file.name);\n }\n }\n\n onInputEnter(): void {\n if (!!this.inputField.shouldSubmitOnEnter) {\n this.submitForm.next();\n }\n }\n\n private setupWrapperClasses(): void {\n this.wrapperClasses = ColumnSizeHelper.getSizeClasses(this.field().colSize);\n }\n}\n","@switch (field().type) {\n @case (DynamicFieldType.Input) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\" [isDisabled]=\"field().isDisabled || false\"\n [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\" [value]=\"formControl.value\"\n (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Checkbox) {\n <upd-checkbox [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isDisabled]=\"field().isDisabled || false\" [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n [isSwitch]=\"checkboxField.isSwitch || false\" (changed)=\"setControlValue($event)\"></upd-checkbox>\n }\n @case (DynamicFieldType.CheckboxGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of checkboxGroupOptionsKeys; track option) {\n <upd-checkbox [name]=\"field().name\" [label]=\"getOptionDescription(option, 'checkbox')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\" [isSwitch]=\"checkboxField.isSwitch || false\"\n (changed)=\"setControlValue(option)\"></upd-checkbox>\n }\n }\n @case (DynamicFieldType.Radio) {\n <upd-radio [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isChecked]=\"formControl.value\" [isDisabled]=\"field().isDisabled || false\" [isInline]=\"radioField.isInline || false\"\n (selected)=\"setControlValue($event)\">\n </upd-radio>\n }\n @case (DynamicFieldType.RadioGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of radioGroupOptionsKeys; track option) {\n <upd-radio [name]=\"field().name\" [label]=\"getOptionDescription(option, 'radio')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n (selected)=\"setControlValue(option)\"></upd-radio>\n }\n }\n @case (DynamicFieldType.Select) {\n <upd-select [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\"\n [useSystemStyle]=\"singleSelectField.useSystemStyle || false\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n (selectedItem)=\"setControlValue($event?.value)\"></upd-select>\n }\n @case (DynamicFieldType.SelectMultiple) {\n <upd-select-multiple [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n (selectedIds)=\"setControlValue($event)\"></upd-select-multiple>\n }\n @case (DynamicFieldType.Label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n @case (DynamicFieldType.TextArea) {\n <upd-textarea [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [value]=\"formControl.value\" [customClasses]=\"textareaField.customClasses\" [wrapperClasses]=\"textareaField.wrapperClasses\"\n [maxLength]=\"textareaField.maxLength\" [rows]=\"textareaField.rows\"\n [displayCharactersCount]=\"textareaField.displayCharactersCount || false\" (valueChange)=\"setControlValue($event)\">\n </upd-textarea>\n }\n @case (DynamicFieldType.FileUpload) {\n <upd-file-upload [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [isDisabled]=\"field().isDisabled || false\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [fileName]=\"fileNameControl?.value\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [allowFilesDrop]=\"fileUploadField.allowFilesDrop || false\"\n [title]=\"fileUploadField.title\" [labelColSize]=\"field().labelColSize\" [minFileSize]=\"fileUploadField.minFileSize\"\n [isMultiple]=\"fileUploadField.isMultiple || false\" [allowedExtensions]=\"fileUploadField.allowedExtensions || '*'\"\n [maxFileSize]=\"fileUploadField.maxFileSize\" [layout]=\"layout()\" (fileChanged)=\"handleFileSelected($event)\"></upd-file-upload>\n }\n @case (DynamicFieldType.MaskedInput) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [mask]=\"maskedField.mask\"\n [maskConfig]=\"maskedField.maskConfig\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\"\n [isDisabled]=\"field().isDisabled || false\" [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\"\n [value]=\"formControl.value\" (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n}\n","import { Component, effect, EventEmitter, inject, input, InputSignal, model, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { HorizontalVerticalType } from '@updevs/components';\nimport { TextModel, TextService } from '@updevs/sdk';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { OptionalType } from '@updevs/sdk/types';\n\nimport { DynamicFieldType } from './models/enums/dynamic-field.type';\nimport { FileUploadFieldModel } from './models/file-upload-field.model';\nimport { FormRowModel } from './models/form-row.model';\n\n@Component({\n selector: 'upd-form',\n templateUrl: './form.component.html',\n styleUrl: './form.component.scss'\n})\nexport class FormComponent<T> extends BaseComponent implements OnInit {\n @Output() readonly initialized = new EventEmitter<void>();\n @Output() readonly dataLoaded = new EventEmitter<T>(); // TODO: implementar\n @Output() readonly submitted = new EventEmitter<T>();\n\n /**\n * Rows to generate the form.\n */\n rows: InputSignal<FormRowModel[]> = input.required();\n /**\n * Form's layout.\n */\n layout: InputSignal<HorizontalVerticalType> = input<HorizontalVerticalType>('vertical');\n /**\n * Title of the form.\n * Optional.\n */\n title: InputSignal<OptionalType<TextModel>> = input<OptionalType<TextModel>>(undefined);\n /**\n * Whether the actions section will be displayed.\n */\n hasActionsSection = input(true);\n /**\n * Whether the form is contained in a card.\n * If true, it'll display a card as a form wrapper.\n */\n isCard = input(false);\n /**\n * Whether the form is in read only mode, which means no fields can be edited.\n */\n isDisabled = input(false, { transform: (val: boolean | string) => typeof val === 'string' ? val === '' : val });\n /**\n * Whether the form is loading.\n */\n isLoading = input(false); // TODO: implementar\n /**\n * Whether the form is saving.\n */\n isSaving = input(false); // TODO: implementar\n /**\n * Current form data.\n */\n formData = model({} as T);\n formGroup = model(new FormGroup({}));\n get titleText(): string {\n return this.textService.getText(this.title());\n }\n\n readonly textService = inject(TextService);\n\n constructor() {\n super();\n\n effect(() => {\n this.rows();\n this.setupFormGroup();\n });\n }\n\n ngOnInit(): void {\n this.setupFormGroup();\n this.initialized.emit();\n\n const valueChangesSub = this.formGroup().valueChanges.subscribe(() => this.formData.set(this.formGroup().getRawValue() as T));\n\n this.addSubscriptions(valueChangesSub);\n }\n\n submit(): void {\n this.formGroup().markAllAsTouched();\n this.formGroup().updateValueAndValidity();\n Object.values(this.formGroup().controls).forEach(control => (control as FormControl).updateValueAndValidity());\n\n if (this.formGroup().valid) {\n this.submitted.emit(this.formGroup().value as T);\n }\n }\n\n private setupFormGroup(): void {\n const allFields = this.rows().map(r => r.fields).reduce((acc, fields) => acc.concat(fields), []);\n\n allFields.forEach(field => {\n const validators: ValidatorFn[] = field.validators || [];\n\n if (field.isRequired && !validators.includes(Validators.required)) {\n validators.push(Validators.required);\n }\n\n // TODO: handle extra cases, when ready. DateRange, DateTimeRange, TimeRange, etc.\n switch (field.type) {\n case DynamicFieldType.FileUpload:\n this.formGroup().addControl(\n field.name,\n new FormControl({\n value: field.initValue,\n disabled: field.isDisabled || this.isDisabled()\n }, { validators: validators })\n );\n\n const fileNameFormProp = (field as FileUploadFieldModel).fileNameFormProperty;\n\n if (!!fileNameFormProp) {\n this.formGroup().addControl(\n fileNameFormProp,\n new FormControl({\n value: field.initValue,\n disabled: field.isDisabled || this.isDisabled()\n }, { validators: validators })\n );\n }\n\n break;\n default:\n this.formGroup().addControl(\n field.name,\n new FormControl({\n value: field.initValue,\n disabled: field.isDisabled || this.isDisabled()\n }, { validators: validators })\n );\n }\n });\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { UpdSdkModule } from '@updevs/sdk';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdCheckboxModule } from '@updevs/components/form-controls/checkbox';\nimport { UpdRadioModule } from '@updevs/components/form-controls/radio';\nimport { UpdDatePickerModule } from '@updevs/components/form-controls/date-picker';\nimport { UpdSelectModule } from '@updevs/components/form-controls/select';\nimport { UpdTextareaModule } from '@updevs/components/form-controls/textarea';\nimport { UpdFileUploadModule } from '@updevs/components/form-controls/file-upload';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from './assets/i18n/en.json';\nimport * as pt from './assets/i18n/pt.json';\nimport { FormComponent } from './form.component';\nimport { DynamicFieldComponent } from './components/dynamic-field/dynamic-field.component';\nimport { ErrorsHelper } from './tools/errors-helper';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n UpdButtonModule,\n TranslocoDirective,\n UpdInputModule,\n UpdCheckboxModule,\n UpdRadioModule,\n UpdDatePickerModule,\n UpdSelectModule,\n UpdTextareaModule,\n UpdFileUploadModule,\n UpdSdkModule\n ],\n declarations: [\n FormComponent,\n DynamicFieldComponent\n ],\n exports: [\n FormComponent\n ],\n providers: [\n ErrorsHelper\n ]\n})\nexport class UpdFormModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectDefaults","i1","i2","i3","i4.DynamicFieldComponent","en","pt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updevs-components-form.mjs","sources":["../../../../libs/components/form/src/models/enums/dynamic-field.type.ts","../../../../libs/components/form/src/tools/errors-helper.ts","../../../../libs/components/form/src/components/dynamic-field/dynamic-field.component.ts","../../../../libs/components/form/src/components/dynamic-field/dynamic-field.component.html","../../../../libs/components/form/src/form.component.ts","../../../../libs/components/form/src/form.component.html","../../../../libs/components/form/src/upd-form.module.ts","../../../../libs/components/form/src/updevs-components-form.ts"],"sourcesContent":["export enum DynamicFieldType {\n Input = 1,\n Select = 2,\n SelectMultiple = 3,\n Label = 4,\n Checkbox = 5,\n CheckboxGroup = 6,\n Radio = 7,\n RadioGroup = 8,\n TextArea = 9,\n FileUpload = 10,\n MaskedInput = 11\n}\n","import { Injectable, inject } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { TextService } from '@updevs/sdk';\nimport { DictionaryType, OptionalType } from '@updevs/sdk/types';\nimport { HashMap } from '@jsverse/transloco';\n\nimport { ValidatorConfig } from '../models/validator-config';\n\n@Injectable()\nexport class ErrorsHelper {\n private errors: DictionaryType<ValidatorConfig> = {\n 'required': { text: 'UpDevs.Form.ErrorMessages.Required' },\n 'requiredTrue': { text: 'UpDevs.Form.ErrorMessages.RequiredTrue' },\n 'generic': { text: 'UpDevs.Form.ErrorMessages.Generic' },\n 'email': { text: 'UpDevs.Form.ErrorMessages.Email' },\n 'max': { text: 'UpDevs.Form.ErrorMessages.Max', defaultErrorParamToShow: 'max' },\n 'min': { text: 'UpDevs.Form.ErrorMessages.Min', defaultErrorParamToShow: 'min' },\n 'maxlength': { text: 'UpDevs.Form.ErrorMessages.MaxLength', defaultErrorParamToShow: 'requiredLength' },\n 'minlength': { text: 'UpDevs.Form.ErrorMessages.MinLength', defaultErrorParamToShow: 'requiredLength' }\n };\n private readonly textService = inject(TextService);\n\n getMessages(control: AbstractControl, customConfig?: DictionaryType<ValidatorConfig>): string[] {\n if (!control.errors) {\n return [];\n }\n\n const errorMessages: string[] = [];\n const genericText = this.textService.getText({ text: this.errors['generic']!.text, isTranslated: false });\n const combinedErrorMessagesList: DictionaryType<ValidatorConfig> = Object.assign({}, this.errors, customConfig || {});\n const controlErrorKeys = Object.keys(control.errors);\n\n controlErrorKeys.forEach(key => {\n const customError = !!control.errors ? control.errors[key] : undefined;\n\n if (!!customError?.errorText) {\n errorMessages.push(this.textService.getText(customError.errorText));\n } else if (key in combinedErrorMessagesList) {\n const config = combinedErrorMessagesList[key]!;\n let params: OptionalType<HashMap>;\n\n if (config.showLength) {\n params = { value: control.value?.length || 0 };\n }\n\n if (!!config.defaultErrorParamToShow) {\n params = { value: control.errors![key][config.defaultErrorParamToShow] };\n }\n\n errorMessages.push(this.textService.getText({ text: config.text, isTranslated: false }, params));\n }\n });\n\n if (controlErrorKeys.length > 0 && errorMessages.length < 1) {\n errorMessages.push(genericText);\n }\n\n return errorMessages;\n }\n}\n","import { Component, OnInit, HostBinding, inject, InputSignal, input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { TextModel, TextService } from '@updevs/sdk';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { ColumnSizeHelper, HorizontalVerticalType, ValidationStatusType } from '@updevs/components';\nimport { Defaults as SelectDefaults } from '@updevs/components/form-controls/select';\nimport { FileUploadChangedEvent } from '@updevs/components/form-controls/file-upload';\n\nimport { FileUploadFieldModel } from '../../models/file-upload-field.model';\nimport { InputFieldModel } from '../../models/input-field.model';\nimport { MaskedInputFieldModel } from '../../models/masked-input-field.model';\nimport { ErrorsHelper } from '../../tools/errors-helper';\nimport { DynamicFieldType } from '../../models/enums/dynamic-field.type';\nimport { DynamicFieldModel } from '../../models/dynamic-field.model';\nimport { CheckboxFieldModel } from '../../models/checkbox-field.model';\nimport { RadioFieldModel } from '../../models/radio-field.model';\nimport { SelectFieldModel } from '../../models/select-field.model';\nimport { SingleSelectFieldModel } from '../../models/single-select-field.model';\nimport { CheckboxGroupFieldModel } from '../../models/checkbox-group-field.model';\nimport { RadioGroupFieldModel } from '../../models/radio-group-field.model';\nimport { TextareaFieldModel } from '../../models/textarea-field.model';\n\n@Component({\n selector: 'upd-dynamic-field',\n templateUrl: './dynamic-field.component.html',\n styleUrl: './dynamic-field.component.scss'\n})\nexport class DynamicFieldComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = '';\n\n @Output() readonly submitForm = new EventEmitter<void>();\n\n DynamicFieldType = DynamicFieldType;\n SelectDefaults = SelectDefaults;\n\n formGroup: InputSignal<FormGroup> = input.required();\n field: InputSignal<DynamicFieldModel> = input.required();\n layout: InputSignal<HorizontalVerticalType> = input.required();\n validationStatus?: ValidationStatusType;\n validationStatusDescriptions: TextModel[] = [];\n get formControl(): FormControl {\n return this.formGroup().controls[this.field().name] as FormControl;\n }\n get inputField(): InputFieldModel {\n return this.field() as InputFieldModel;\n }\n get checkboxField(): CheckboxFieldModel {\n return this.field() as CheckboxFieldModel;\n }\n get checkboxGroupField(): CheckboxGroupFieldModel {\n return this.field() as CheckboxGroupFieldModel;\n }\n get radioField(): CheckboxFieldModel {\n return this.field() as RadioFieldModel;\n }\n get radioGroupField(): RadioGroupFieldModel {\n return this.field() as RadioGroupFieldModel;\n }\n get selectField(): SelectFieldModel {\n return this.field() as SelectFieldModel;\n }\n get singleSelectField(): SingleSelectFieldModel {\n return this.field() as SingleSelectFieldModel;\n }\n get textareaField(): TextareaFieldModel {\n return this.field() as TextareaFieldModel;\n }\n get fileUploadField(): FileUploadFieldModel {\n return this.field() as FileUploadFieldModel;\n }\n get maskedField(): MaskedInputFieldModel {\n return this.field() as MaskedInputFieldModel;\n }\n get checkboxGroupOptionsKeys(): string[] {\n return Object.keys(this.checkboxGroupField.options);\n }\n get radioGroupOptionsKeys(): string[] {\n return Object.keys(this.radioGroupField.options);\n }\n get fileNameControl(): OptionalType<FormControl> {\n return !!this.fileUploadField.fileNameFormProperty\n ? this.formGroup().controls[this.fileUploadField.fileNameFormProperty] as FormControl\n : undefined;\n }\n\n readonly textService = inject(TextService);\n\n private readonly errorsHelper = inject(ErrorsHelper);\n\n ngOnInit(): void {\n const statusSub = this.formControl.statusChanges.subscribe(status => {\n if (status === 'INVALID') {\n this.validationStatusDescriptions = this.errorsHelper.getMessages(this.formControl)\n .map(t => ({ text: t, isTranslated: true }));\n this.validationStatus = 'invalid';\n } else {\n this.validationStatusDescriptions = [];\n this.validationStatus = this.field().showValidStatus ? 'valid' : undefined;\n }\n });\n\n this.setupWrapperClasses();\n this.addSubscriptions(statusSub);\n }\n\n onBlur(): void {\n if (this.field().shouldValidateOnBlur) {\n this.formControl.updateValueAndValidity();\n }\n }\n\n setControlValue(value: any): void {\n this.formControl.setValue(value);\n this.formControl.markAsDirty();\n }\n\n getText(textModel?: TextModel): string {\n return this.textService.getText(textModel);\n }\n\n getOptionDescription(key: string, type: 'checkbox' | 'radio'): OptionalType<TextModel> {\n return type === 'checkbox' ? this.checkboxGroupField.options[key] : this.radioGroupField.options[key];\n }\n\n handleFileSelected(event?: FileUploadChangedEvent): void {\n this.formControl.setValue(!!this.fileUploadField.saveAsDataUrl ? event?.dataUrl : event?.file);\n this.formControl.markAsDirty();\n\n if (!!this.fileUploadField.fileNameFormProperty) {\n this.fileNameControl!.setValue(event?.file.name);\n }\n }\n\n onInputEnter(): void {\n if (!!this.inputField.shouldSubmitOnEnter) {\n this.submitForm.next();\n }\n }\n\n private setupWrapperClasses(): void {\n this.wrapperClasses = ColumnSizeHelper.getSizeClasses(this.field().colSize);\n }\n}\n","@switch (field().type) {\n @case (DynamicFieldType.Input) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\" [isDisabled]=\"field().isDisabled || false\"\n [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\" [value]=\"formControl.value\"\n (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Checkbox) {\n <upd-checkbox [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isDisabled]=\"field().isDisabled || false\" [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n [isSwitch]=\"checkboxField.isSwitch || false\" (changed)=\"setControlValue($event)\"></upd-checkbox>\n }\n @case (DynamicFieldType.CheckboxGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of checkboxGroupOptionsKeys; track option) {\n <upd-checkbox [name]=\"field().name\" [label]=\"getOptionDescription(option, 'checkbox')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\" [isSwitch]=\"checkboxField.isSwitch || false\"\n (changed)=\"setControlValue(option)\"></upd-checkbox>\n }\n }\n @case (DynamicFieldType.Radio) {\n <upd-radio [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isChecked]=\"formControl.value\" [isDisabled]=\"field().isDisabled || false\" [isInline]=\"radioField.isInline || false\"\n (selected)=\"setControlValue($event)\">\n </upd-radio>\n }\n @case (DynamicFieldType.RadioGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of radioGroupOptionsKeys; track option) {\n <upd-radio [name]=\"field().name\" [label]=\"getOptionDescription(option, 'radio')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n (selected)=\"setControlValue(option)\"></upd-radio>\n }\n }\n @case (DynamicFieldType.Select) {\n <upd-select [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\"\n [useSystemStyle]=\"singleSelectField.useSystemStyle || false\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n (selectedItem)=\"setControlValue($event?.value)\"></upd-select>\n }\n @case (DynamicFieldType.SelectMultiple) {\n <upd-select-multiple [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n (selectedIds)=\"setControlValue($event)\"></upd-select-multiple>\n }\n @case (DynamicFieldType.Label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n @case (DynamicFieldType.TextArea) {\n <upd-textarea [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [value]=\"formControl.value\" [customClasses]=\"textareaField.customClasses\" [wrapperClasses]=\"textareaField.wrapperClasses\"\n [maxLength]=\"textareaField.maxLength\" [rows]=\"textareaField.rows\"\n [displayCharactersCount]=\"textareaField.displayCharactersCount || false\" (valueChange)=\"setControlValue($event)\">\n </upd-textarea>\n }\n @case (DynamicFieldType.FileUpload) {\n <upd-file-upload [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [isDisabled]=\"field().isDisabled || false\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [fileName]=\"fileNameControl?.value\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [allowFilesDrop]=\"fileUploadField.allowFilesDrop || false\"\n [title]=\"fileUploadField.title\" [labelColSize]=\"field().labelColSize\" [minFileSize]=\"fileUploadField.minFileSize\"\n [isMultiple]=\"fileUploadField.isMultiple || false\" [allowedExtensions]=\"fileUploadField.allowedExtensions || '*'\"\n [maxFileSize]=\"fileUploadField.maxFileSize\" [layout]=\"layout()\" (fileChanged)=\"handleFileSelected($event)\"></upd-file-upload>\n }\n @case (DynamicFieldType.MaskedInput) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [mask]=\"maskedField.mask\"\n [maskConfig]=\"maskedField.maskConfig\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\"\n [isDisabled]=\"field().isDisabled || false\" [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\"\n [value]=\"formControl.value\" (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n}\n","import { Component, effect, EventEmitter, inject, input, InputSignal, model, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { HorizontalVerticalType } from '@updevs/components';\nimport { TextModel, TextService } from '@updevs/sdk';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { OptionalType } from '@updevs/sdk/types';\n\nimport { DynamicFieldType } from './models/enums/dynamic-field.type';\nimport { FileUploadFieldModel } from './models/file-upload-field.model';\nimport { FormRowModel } from './models/form-row.model';\n\n@Component({\n selector: 'upd-form',\n templateUrl: './form.component.html',\n styleUrl: './form.component.scss'\n})\nexport class FormComponent<T> extends BaseComponent implements OnInit {\n @Output() readonly initialized = new EventEmitter<void>();\n @Output() readonly dataLoaded = new EventEmitter<T>(); // TODO: implementar\n @Output() readonly submitted = new EventEmitter<T>();\n\n /**\n * Rows to generate the form.\n */\n rows: InputSignal<FormRowModel[]> = input.required();\n /**\n * Form's layout.\n */\n layout: InputSignal<HorizontalVerticalType> = input<HorizontalVerticalType>('vertical');\n /**\n * Title of the form.\n * Optional.\n */\n title: InputSignal<OptionalType<TextModel>> = input<OptionalType<TextModel>>(undefined);\n /**\n * Whether the actions section will be displayed.\n */\n hasActionsSection = input(true);\n /**\n * Whether the form is contained in a card.\n * If true, it'll display a card as a form wrapper.\n */\n isCard = input(false);\n /**\n * Whether the form is in read only mode, which means no fields can be edited.\n */\n isDisabled = input(false, { transform: (val: boolean | string) => typeof val === 'string' ? val === '' : val });\n /**\n * Whether the form is loading.\n */\n isLoading = input(false); // TODO: implementar\n /**\n * Whether the form is saving.\n */\n isSaving = input(false); // TODO: implementar\n /**\n * Current form data.\n */\n formData = model({} as T);\n formGroup = model(new FormGroup({}));\n get titleText(): string {\n return this.textService.getText(this.title());\n }\n\n readonly textService = inject(TextService);\n\n constructor() {\n super();\n\n effect(() => {\n this.rows();\n this.setupFormGroup();\n });\n }\n\n ngOnInit(): void {\n this.setupFormGroup();\n this.initialized.emit();\n\n const valueChangesSub = this.formGroup().valueChanges.subscribe(() => this.formData.set(this.formGroup().getRawValue() as T));\n\n this.addSubscriptions(valueChangesSub);\n }\n\n submit(): void {\n this.formGroup().markAllAsTouched();\n this.formGroup().updateValueAndValidity();\n Object.values(this.formGroup().controls).forEach(control => (control as FormControl).updateValueAndValidity());\n\n if (this.formGroup().valid) {\n this.submitted.emit(this.formGroup().value as T);\n }\n }\n\n private setupFormGroup(): void {\n const allFields = this.rows().map(r => r.fields).reduce((acc, fields) => acc.concat(fields), []);\n\n allFields.forEach(field => {\n const validators: ValidatorFn[] = field.validators || [];\n\n if (field.isRequired && !validators.includes(Validators.required)) {\n validators.push(Validators.required);\n }\n\n // TODO: handle extra cases, when ready. DateRange, DateTimeRange, TimeRange, etc.\n switch (field.type) {\n case DynamicFieldType.FileUpload:\n this.formGroup().addControl(\n field.name,\n new FormControl({\n value: field.initValue,\n disabled: field.isDisabled || this.isDisabled()\n }, { validators: validators })\n );\n\n const fileNameFormProp = (field as FileUploadFieldModel).fileNameFormProperty;\n\n if (!!fileNameFormProp) {\n this.formGroup().addControl(\n fileNameFormProp,\n new FormControl({\n value: field.initValue,\n disabled: field.isDisabled || this.isDisabled()\n }, { validators: validators })\n );\n }\n\n break;\n default:\n this.formGroup().addControl(\n field.name,\n new FormControl({\n value: field.initValue,\n disabled: field.isDisabled || this.isDisabled()\n }, { validators: validators })\n );\n }\n });\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { UpdSdkModule } from '@updevs/sdk';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdCheckboxModule } from '@updevs/components/form-controls/checkbox';\nimport { UpdRadioModule } from '@updevs/components/form-controls/radio';\nimport { UpdDatePickerModule } from '@updevs/components/form-controls/date-picker';\nimport { UpdSelectModule } from '@updevs/components/form-controls/select';\nimport { UpdTextareaModule } from '@updevs/components/form-controls/textarea';\nimport { UpdFileUploadModule } from '@updevs/components/form-controls/file-upload';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from './assets/i18n/en.json';\nimport * as pt from './assets/i18n/pt.json';\nimport { FormComponent } from './form.component';\nimport { DynamicFieldComponent } from './components/dynamic-field/dynamic-field.component';\nimport { ErrorsHelper } from './tools/errors-helper';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n UpdButtonModule,\n TranslocoDirective,\n UpdInputModule,\n UpdCheckboxModule,\n UpdRadioModule,\n UpdDatePickerModule,\n UpdSelectModule,\n UpdTextareaModule,\n UpdFileUploadModule,\n UpdSdkModule\n ],\n declarations: [\n FormComponent,\n DynamicFieldComponent\n ],\n exports: [\n FormComponent\n ],\n providers: [\n ErrorsHelper\n ]\n})\nexport class UpdFormModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectDefaults","i1","i2","i3","i4.DynamicFieldComponent","en","pt"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ class ColumnSizeHelper {
|
|
|
6
6
|
if (!colSize) {
|
|
7
7
|
return `col-${defaultIfEmpty || 12}`;
|
|
8
8
|
}
|
|
9
|
-
return this.getClasses(`col-${colSize.default}
|
|
9
|
+
return this.getClasses(!!colSize.default ? `col-${colSize.default}` : '', !!colSize.extraLarge ? `col-xl-${colSize.extraLarge}` : '', !!colSize.large ? `col-lg-${colSize.large}` : '', !!colSize.medium ? `col-md-${colSize.medium}` : '', !!colSize.small ? `col-sm-${(colSize.small)}` : '');
|
|
10
10
|
}
|
|
11
11
|
static getClasses(...classes) {
|
|
12
12
|
return classes.join(' ').trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updevs-components.mjs","sources":["../../../../libs/components/src/lib/tools/column-size.helper.ts","../../../../libs/components/src/lib/upd-components.module.ts","../../../../libs/components/src/updevs-components.ts"],"sourcesContent":["import { RowColumnSize } from '../models/row-column-size';\n\nexport class ColumnSizeHelper {\n static getSizeClasses(colSize?: RowColumnSize, defaultIfEmpty?: number): string {\n if (!colSize) {\n return `col-${defaultIfEmpty || 12}`;\n }\n\n return this.getClasses(\n `col-${colSize.default}
|
|
1
|
+
{"version":3,"file":"updevs-components.mjs","sources":["../../../../libs/components/src/lib/tools/column-size.helper.ts","../../../../libs/components/src/lib/upd-components.module.ts","../../../../libs/components/src/updevs-components.ts"],"sourcesContent":["import { RowColumnSize } from '../models/row-column-size';\n\nexport class ColumnSizeHelper {\n static getSizeClasses(colSize?: RowColumnSize, defaultIfEmpty?: number): string {\n if (!colSize) {\n return `col-${defaultIfEmpty || 12}`;\n }\n\n return this.getClasses(\n !!colSize.default ? `col-${colSize.default}` : '',\n !!colSize.extraLarge ? `col-xl-${colSize.extraLarge}` : '',\n !!colSize.large ? `col-lg-${colSize.large}` : '',\n !!colSize.medium ? `col-md-${colSize.medium}` : '',\n !!colSize.small ? `col-sm-${(colSize.small)}` : ''\n );\n }\n\n static getClasses(...classes: string[]): string {\n return classes.join(' ').trim();\n }\n}\n","import { NgModule } from '@angular/core';\n\n@NgModule({\n imports: []\n})\nexport class UpdComponentsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAEa,gBAAgB,CAAA;AACzB,IAAA,OAAO,cAAc,CAAC,OAAuB,EAAE,cAAuB,EAAA;QAClE,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,CAAO,IAAA,EAAA,cAAc,IAAI,EAAE,EAAE;;QAGxC,OAAO,IAAI,CAAC,UAAU,CAClB,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,CAAA,IAAA,EAAO,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,EACjD,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,CAAU,OAAA,EAAA,OAAO,CAAC,UAAU,CAAA,CAAE,GAAG,EAAE,EAC1D,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,CAAC,KAAK,CAAE,CAAA,GAAG,EAAE,EAChD,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,OAAO,CAAC,MAAM,CAAA,CAAE,GAAG,EAAE,EAClD,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA,OAAA,GAAW,OAAO,CAAC,KAAK,EAAC,CAAE,GAAG,EAAE,CACrD;;AAGL,IAAA,OAAO,UAAU,CAAC,GAAG,OAAiB,EAAA;QAClC,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;;AAEtC;;MCfY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;AACZ,iBAAA;;;ACJD;;AAEG;;;;"}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
/// <reference path="row-column-size.ngtypecheck.d.ts" />
|
|
2
2
|
export interface RowColumnSize {
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Applies to all breakpoints from 576px and up (col-X).
|
|
5
|
+
*/
|
|
6
|
+
default?: number;
|
|
7
|
+
/**
|
|
8
|
+
* For devices with 1200px and up (col-xl-X).
|
|
9
|
+
*/
|
|
10
|
+
extraLarge?: number;
|
|
11
|
+
/**
|
|
12
|
+
* For devices with 992px and up (col-lg-X).
|
|
13
|
+
*/
|
|
14
|
+
large?: number;
|
|
15
|
+
/**
|
|
16
|
+
* For devices with 768px and up (col-md-X).
|
|
17
|
+
*/
|
|
4
18
|
medium?: number;
|
|
19
|
+
/**
|
|
20
|
+
* For devices with 576px and up (col-sm-X).
|
|
21
|
+
*/
|
|
5
22
|
small?: number;
|
|
6
23
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@updevs/components",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.48",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^18.0.1 || ^19.0.0",
|
|
6
6
|
"@angular/core": "^18.0.1 || ^19.0.0",
|
|
@@ -28,36 +28,36 @@
|
|
|
28
28
|
"esm": "./esm2022/updevs-components.mjs",
|
|
29
29
|
"default": "./fesm2022/updevs-components.mjs"
|
|
30
30
|
},
|
|
31
|
-
"./badge": {
|
|
32
|
-
"types": "./badge/index.d.ts",
|
|
33
|
-
"esm2022": "./esm2022/badge/updevs-components-badge.mjs",
|
|
34
|
-
"esm": "./esm2022/badge/updevs-components-badge.mjs",
|
|
35
|
-
"default": "./fesm2022/updevs-components-badge.mjs"
|
|
36
|
-
},
|
|
37
31
|
"./button": {
|
|
38
32
|
"types": "./button/index.d.ts",
|
|
39
33
|
"esm2022": "./esm2022/button/updevs-components-button.mjs",
|
|
40
34
|
"esm": "./esm2022/button/updevs-components-button.mjs",
|
|
41
35
|
"default": "./fesm2022/updevs-components-button.mjs"
|
|
42
36
|
},
|
|
37
|
+
"./badge": {
|
|
38
|
+
"types": "./badge/index.d.ts",
|
|
39
|
+
"esm2022": "./esm2022/badge/updevs-components-badge.mjs",
|
|
40
|
+
"esm": "./esm2022/badge/updevs-components-badge.mjs",
|
|
41
|
+
"default": "./fesm2022/updevs-components-badge.mjs"
|
|
42
|
+
},
|
|
43
43
|
"./calendar": {
|
|
44
44
|
"types": "./calendar/index.d.ts",
|
|
45
45
|
"esm2022": "./esm2022/calendar/updevs-components-calendar.mjs",
|
|
46
46
|
"esm": "./esm2022/calendar/updevs-components-calendar.mjs",
|
|
47
47
|
"default": "./fesm2022/updevs-components-calendar.mjs"
|
|
48
48
|
},
|
|
49
|
-
"./card": {
|
|
50
|
-
"types": "./card/index.d.ts",
|
|
51
|
-
"esm2022": "./esm2022/card/updevs-components-card.mjs",
|
|
52
|
-
"esm": "./esm2022/card/updevs-components-card.mjs",
|
|
53
|
-
"default": "./fesm2022/updevs-components-card.mjs"
|
|
54
|
-
},
|
|
55
49
|
"./drag-and-drop": {
|
|
56
50
|
"types": "./drag-and-drop/index.d.ts",
|
|
57
51
|
"esm2022": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
|
|
58
52
|
"esm": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
|
|
59
53
|
"default": "./fesm2022/updevs-components-drag-and-drop.mjs"
|
|
60
54
|
},
|
|
55
|
+
"./card": {
|
|
56
|
+
"types": "./card/index.d.ts",
|
|
57
|
+
"esm2022": "./esm2022/card/updevs-components-card.mjs",
|
|
58
|
+
"esm": "./esm2022/card/updevs-components-card.mjs",
|
|
59
|
+
"default": "./fesm2022/updevs-components-card.mjs"
|
|
60
|
+
},
|
|
61
61
|
"./dropdown": {
|
|
62
62
|
"types": "./dropdown/index.d.ts",
|
|
63
63
|
"esm2022": "./esm2022/dropdown/updevs-components-dropdown.mjs",
|