@fovestta2/web-angular 1.0.24 → 1.0.26
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/lib/add-update-form/add-update-form.component.mjs +53 -47
- package/esm2022/lib/fv-document-field/fv-document-field.component.mjs +38 -6
- package/esm2022/lib/fv-file-selector/fv-file-selector.component.mjs +34 -4
- package/esm2022/lib/fv-image-selector/fv-image-selector.component.mjs +22 -4
- package/fesm2022/fovestta2-web-angular.mjs +143 -57
- package/fesm2022/fovestta2-web-angular.mjs.map +1 -1
- package/lib/add-update-form/add-update-form.component.d.ts +2 -1
- package/lib/fv-document-field/fv-document-field.component.d.ts +2 -0
- package/lib/fv-file-selector/fv-file-selector.component.d.ts +1 -0
- package/lib/fv-image-selector/fv-image-selector.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1007,15 +1007,45 @@ class FvFileSelectorComponent {
|
|
|
1007
1007
|
}
|
|
1008
1008
|
// Subscribe to value changes
|
|
1009
1009
|
this.subscription = this.control.valueChanges.subscribe((value) => {
|
|
1010
|
+
this.handleValue(value);
|
|
1010
1011
|
this.validateValue(value);
|
|
1011
1012
|
this.valueChange.emit(value);
|
|
1012
1013
|
});
|
|
1013
1014
|
// Validate initial value
|
|
1014
|
-
|
|
1015
|
-
this.selectedFile = this.control.value;
|
|
1016
|
-
}
|
|
1015
|
+
this.handleValue(this.control.value);
|
|
1017
1016
|
this.validateValue(this.control.value);
|
|
1018
1017
|
}
|
|
1018
|
+
handleValue(value) {
|
|
1019
|
+
if (!value) {
|
|
1020
|
+
this.selectedFile = null;
|
|
1021
|
+
return;
|
|
1022
|
+
}
|
|
1023
|
+
if (typeof value === 'string') {
|
|
1024
|
+
// Handle API URL/String
|
|
1025
|
+
const name = value.split('/').pop() || 'Document';
|
|
1026
|
+
// Guess type from extension
|
|
1027
|
+
const ext = name.split('.').pop()?.toLowerCase() || '';
|
|
1028
|
+
let type = 'application/octet-stream';
|
|
1029
|
+
if (ext === 'pdf')
|
|
1030
|
+
type = 'application/pdf';
|
|
1031
|
+
if (['png', 'jpg', 'jpeg', 'gif'].includes(ext))
|
|
1032
|
+
type = `image/${ext}`;
|
|
1033
|
+
if (['xls', 'xlsx'].includes(ext))
|
|
1034
|
+
type = 'application/vnd.ms-excel';
|
|
1035
|
+
if (['doc', 'docx'].includes(ext))
|
|
1036
|
+
type = 'application/msword';
|
|
1037
|
+
this.selectedFile = {
|
|
1038
|
+
file: new File([''], name, { type }),
|
|
1039
|
+
name: name,
|
|
1040
|
+
size: 0,
|
|
1041
|
+
type: type
|
|
1042
|
+
};
|
|
1043
|
+
}
|
|
1044
|
+
else {
|
|
1045
|
+
// Assume it's a FileInfo object
|
|
1046
|
+
this.selectedFile = value;
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1019
1049
|
ngOnDestroy() {
|
|
1020
1050
|
this.subscription?.unsubscribe();
|
|
1021
1051
|
}
|
|
@@ -1180,12 +1210,30 @@ class FvImageSelectorComponent {
|
|
|
1180
1210
|
if (!this.control)
|
|
1181
1211
|
return;
|
|
1182
1212
|
this.subscription = this.control.valueChanges.subscribe((value) => {
|
|
1213
|
+
this.handleValue(value);
|
|
1183
1214
|
this.validateValue(value);
|
|
1184
1215
|
this.valueChange.emit(value);
|
|
1185
1216
|
});
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1217
|
+
this.handleValue(this.control.value);
|
|
1218
|
+
this.validateValue(this.control.value);
|
|
1219
|
+
}
|
|
1220
|
+
handleValue(value) {
|
|
1221
|
+
if (!value) {
|
|
1222
|
+
this.selectedImage = null;
|
|
1223
|
+
return;
|
|
1224
|
+
}
|
|
1225
|
+
if (typeof value === 'string') {
|
|
1226
|
+
const name = value.split('/').pop() || 'Image';
|
|
1227
|
+
this.selectedImage = {
|
|
1228
|
+
file: new File([''], name, { type: 'image/jpeg' }),
|
|
1229
|
+
url: this.sanitizer.bypassSecurityTrustUrl(value),
|
|
1230
|
+
width: 0,
|
|
1231
|
+
height: 0,
|
|
1232
|
+
size: 0
|
|
1233
|
+
};
|
|
1234
|
+
}
|
|
1235
|
+
else {
|
|
1236
|
+
this.selectedImage = value;
|
|
1189
1237
|
}
|
|
1190
1238
|
}
|
|
1191
1239
|
ngOnDestroy() {
|
|
@@ -2736,6 +2784,7 @@ class FvDocumentFieldComponent {
|
|
|
2736
2784
|
showPreview = false;
|
|
2737
2785
|
previewUrl = null;
|
|
2738
2786
|
subscription;
|
|
2787
|
+
fileInfo = null;
|
|
2739
2788
|
constructor(sanitizer) {
|
|
2740
2789
|
this.sanitizer = sanitizer;
|
|
2741
2790
|
}
|
|
@@ -2745,14 +2794,45 @@ class FvDocumentFieldComponent {
|
|
|
2745
2794
|
return;
|
|
2746
2795
|
}
|
|
2747
2796
|
this.subscription = this.control.valueChanges.subscribe((value) => {
|
|
2797
|
+
this.handleValue(value);
|
|
2748
2798
|
this.validateValue(value);
|
|
2749
2799
|
this.valueChange.emit(value);
|
|
2750
2800
|
});
|
|
2751
2801
|
// Initial validation
|
|
2802
|
+
this.handleValue(this.control.value);
|
|
2752
2803
|
if (this.control.value) {
|
|
2753
2804
|
this.validateValue(this.control.value);
|
|
2754
2805
|
}
|
|
2755
2806
|
}
|
|
2807
|
+
handleValue(value) {
|
|
2808
|
+
if (!value) {
|
|
2809
|
+
this.fileInfo = null;
|
|
2810
|
+
return;
|
|
2811
|
+
}
|
|
2812
|
+
if (typeof value === 'string') {
|
|
2813
|
+
const name = value.split('/').pop() || 'Document';
|
|
2814
|
+
// Guess type from extension
|
|
2815
|
+
const ext = name.split('.').pop()?.toLowerCase() || '';
|
|
2816
|
+
let type = 'application/octet-stream';
|
|
2817
|
+
if (ext === 'pdf')
|
|
2818
|
+
type = 'application/pdf';
|
|
2819
|
+
if (['png', 'jpg', 'jpeg', 'gif'].includes(ext))
|
|
2820
|
+
type = `image/${ext}`;
|
|
2821
|
+
if (['xls', 'xlsx'].includes(ext))
|
|
2822
|
+
type = 'application/vnd.ms-excel';
|
|
2823
|
+
if (['doc', 'docx'].includes(ext))
|
|
2824
|
+
type = 'application/msword';
|
|
2825
|
+
this.fileInfo = {
|
|
2826
|
+
file: value, // Store the URL string as file property if strict typing allows, or cast. Interface says file: File | Blob | string. Perfect.
|
|
2827
|
+
name: name,
|
|
2828
|
+
size: 0,
|
|
2829
|
+
type: type
|
|
2830
|
+
};
|
|
2831
|
+
}
|
|
2832
|
+
else {
|
|
2833
|
+
this.fileInfo = value;
|
|
2834
|
+
}
|
|
2835
|
+
}
|
|
2756
2836
|
ngOnDestroy() {
|
|
2757
2837
|
this.subscription?.unsubscribe();
|
|
2758
2838
|
}
|
|
@@ -2812,7 +2892,7 @@ class FvDocumentFieldComponent {
|
|
|
2812
2892
|
}
|
|
2813
2893
|
}
|
|
2814
2894
|
viewFile() {
|
|
2815
|
-
const fileInfo = this.
|
|
2895
|
+
const fileInfo = this.fileInfo;
|
|
2816
2896
|
if (!fileInfo)
|
|
2817
2897
|
return;
|
|
2818
2898
|
const type = fileInfo.type || '';
|
|
@@ -2844,7 +2924,7 @@ class FvDocumentFieldComponent {
|
|
|
2844
2924
|
this.previewUrl = null;
|
|
2845
2925
|
}
|
|
2846
2926
|
downloadFile() {
|
|
2847
|
-
const fileInfo = this.
|
|
2927
|
+
const fileInfo = this.fileInfo;
|
|
2848
2928
|
if (!fileInfo)
|
|
2849
2929
|
return;
|
|
2850
2930
|
let url;
|
|
@@ -2867,7 +2947,7 @@ class FvDocumentFieldComponent {
|
|
|
2867
2947
|
}
|
|
2868
2948
|
}
|
|
2869
2949
|
getFileIcon() {
|
|
2870
|
-
const fileInfo = this.
|
|
2950
|
+
const fileInfo = this.fileInfo;
|
|
2871
2951
|
if (!fileInfo)
|
|
2872
2952
|
return 'description';
|
|
2873
2953
|
const type = fileInfo.type || '';
|
|
@@ -2896,11 +2976,11 @@ class FvDocumentFieldComponent {
|
|
|
2896
2976
|
return errorMessages[this.errorMessage] || this.errorMessage;
|
|
2897
2977
|
}
|
|
2898
2978
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvDocumentFieldComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
2899
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FvDocumentFieldComponent, isStandalone: true, selector: "fv-document-field", inputs: { label: "label", placeholder: "placeholder", schema: "schema", control: "control", disabled: "disabled", accept: "accept", maxSize: "maxSize" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fv-document-field-container\">\r\n <label *ngIf=\"label\" class=\"fv-document-field-label\">\r\n {{ label }}\r\n <span *ngIf=\"isRequired()\" class=\"required-asterisk\">*</span>\r\n </label>\r\n\r\n <input #fileInput type=\"file\" [accept]=\"accept\" (change)=\"onFileSelected($event)\" style=\"display: none\" />\r\n\r\n <div *ngIf=\"!
|
|
2979
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FvDocumentFieldComponent, isStandalone: true, selector: "fv-document-field", inputs: { label: "label", placeholder: "placeholder", schema: "schema", control: "control", disabled: "disabled", accept: "accept", maxSize: "maxSize" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fv-document-field-container\">\r\n <label *ngIf=\"label\" class=\"fv-document-field-label\">\r\n {{ label }}\r\n <span *ngIf=\"isRequired()\" class=\"required-asterisk\">*</span>\r\n </label>\r\n\r\n <input #fileInput type=\"file\" [accept]=\"accept\" (change)=\"onFileSelected($event)\" style=\"display: none\" />\r\n\r\n <div *ngIf=\"!fileInfo; else fileUploaded\" class=\"fv-upload-btn-wrapper\">\r\n <button type=\"button\" class=\"fv-upload-button\" [disabled]=\"disabled\" (click)=\"openFileDialog()\">\r\n <span class=\"fv-upload-text\">{{ placeholder }}</span>\r\n <span class=\"fv-upload-icon-section\">\r\n <svg viewBox=\"0 0 24 24\" class=\"upload-icon\">\r\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <ng-template #fileUploaded>\r\n <div class=\"fv-preview-row\">\r\n <div class=\"fv-preview-wrapper\" (click)=\"viewFile()\" style=\"cursor: pointer;\">\r\n <div class=\"fv-file-icon-preview\" [ngClass]=\"getFileIcon()\">\r\n <span class=\"material-icons\">{{ getFileIcon() }}</span>\r\n </div>\r\n </div>\r\n <span class=\"fv-filename\" (click)=\"viewFile()\" style=\"cursor: pointer;\">{{ fileInfo?.name }}</span>\r\n <button type=\"button\" class=\"fv-trash-btn\" (click)=\"removeFile()\" [disabled]=\"disabled\">\r\n <svg viewBox=\"0 0 24 24\" class=\"trash-icon\">\r\n <path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"errorMessage && control?.touched\" class=\"fv-document-error-message\">\r\n \u26A0 {{ getErrorMessage() }}\r\n </div>\r\n</div>\r\n\r\n<!-- Preview Overlay/Modal for Image -->\r\n<div *ngIf=\"showPreview\" class=\"fv-preview-overlay\" (click)=\"closePreview()\">\r\n <div class=\"fv-preview-content\" (click)=\"$event.stopPropagation()\">\r\n <img [src]=\"previewUrl\" alt=\"Preview\" />\r\n <div class=\"fv-preview-actions\">\r\n <button type=\"button\" class=\"fv-download-btn\" (click)=\"downloadFile()\">Download</button>\r\n <button type=\"button\" class=\"fv-close-btn\" (click)=\"closePreview()\">Close</button>\r\n </div>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";.fv-document-field-container{display:flex;flex-direction:column;margin-bottom:16px;width:fit-content;max-width:100%;font-family:Poppins,sans-serif}.fv-document-field-label{font-size:14px;font-weight:600;color:#151d48;margin-bottom:6px;display:block}.required-asterisk{color:#e74c3c;font-weight:700}.fv-upload-button{display:flex;align-items:center;border:1px solid #dcdcdc;border-radius:8px;background:#fff;padding:0;cursor:pointer;overflow:hidden;width:100px;height:34px;transition:all .2s ease}.fv-upload-button:hover:not(:disabled){border-color:#bbb;box-shadow:0 2px 4px #0000000d}.fv-upload-button:disabled{cursor:not-allowed;background-color:#f9f9f9;opacity:.7}.fv-upload-text{flex:1;padding:0 16px;font-size:14px;color:#1f2b41;text-align:left;font-weight:500}.fv-upload-icon-section{background:#f4f5f7;padding:0 10px;border-left:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;color:#333;height:100%}.upload-icon{width:20px;height:20px}.fv-preview-row{display:flex;align-items:center;gap:8px;padding:8px 0;width:100px;box-sizing:border-box}.fv-preview-wrapper{position:relative;width:40px;height:40px}.fv-file-icon-preview{width:40px;height:40px;border-radius:8px;background:#f4f5f7;display:flex;align-items:center;justify-content:center;color:#3498db;border:1px solid #dcdcdc}.fv-file-icon-preview.picture_as_pdf{color:#e74c3c;background:#fdf2f2}.fv-file-icon-preview.image{color:#3498db;background:#f1f8fe}.fv-file-icon-preview.table_view{color:#27ae60;background:#f1f9f4}.material-icons{font-size:24px}.fv-filename{flex:1;font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.fv-trash-btn{background:none;border:none;cursor:pointer;padding:6px;border-radius:50%;transition:background .2s;display:flex}.fv-trash-btn:hover:not(:disabled){background:#fee}.trash-icon{width:22px;height:22px;fill:red}.fv-document-error-message{margin-top:4px;font-size:12px;color:#e74c3c}.fv-preview-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000c;display:flex;justify-content:center;align-items:center;z-index:10000}.fv-preview-content{position:relative;background:#fff;padding:24px;border-radius:12px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center}.fv-preview-content img{max-width:100%;max-height:70vh;object-fit:contain;border-radius:4px;margin-bottom:20px}.fv-preview-actions{display:flex;gap:16px}.fv-preview-actions button{padding:10px 24px;border-radius:6px;border:none;cursor:pointer;font-weight:500;transition:background .2s}.fv-download-btn{background:#3498db;color:#fff}.fv-download-btn:hover{background:#2980b9}.fv-close-btn{background:#f0f0f0;color:#333}.fv-close-btn:hover{background:#e0e0e0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }] });
|
|
2900
2980
|
}
|
|
2901
2981
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvDocumentFieldComponent, decorators: [{
|
|
2902
2982
|
type: Component,
|
|
2903
|
-
args: [{ standalone: true, imports: [CommonModule, ReactiveFormsModule], selector: 'fv-document-field', template: "<div class=\"fv-document-field-container\">\r\n <label *ngIf=\"label\" class=\"fv-document-field-label\">\r\n {{ label }}\r\n <span *ngIf=\"isRequired()\" class=\"required-asterisk\">*</span>\r\n </label>\r\n\r\n <input #fileInput type=\"file\" [accept]=\"accept\" (change)=\"onFileSelected($event)\" style=\"display: none\" />\r\n\r\n <div *ngIf=\"!
|
|
2983
|
+
args: [{ standalone: true, imports: [CommonModule, ReactiveFormsModule], selector: 'fv-document-field', template: "<div class=\"fv-document-field-container\">\r\n <label *ngIf=\"label\" class=\"fv-document-field-label\">\r\n {{ label }}\r\n <span *ngIf=\"isRequired()\" class=\"required-asterisk\">*</span>\r\n </label>\r\n\r\n <input #fileInput type=\"file\" [accept]=\"accept\" (change)=\"onFileSelected($event)\" style=\"display: none\" />\r\n\r\n <div *ngIf=\"!fileInfo; else fileUploaded\" class=\"fv-upload-btn-wrapper\">\r\n <button type=\"button\" class=\"fv-upload-button\" [disabled]=\"disabled\" (click)=\"openFileDialog()\">\r\n <span class=\"fv-upload-text\">{{ placeholder }}</span>\r\n <span class=\"fv-upload-icon-section\">\r\n <svg viewBox=\"0 0 24 24\" class=\"upload-icon\">\r\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <ng-template #fileUploaded>\r\n <div class=\"fv-preview-row\">\r\n <div class=\"fv-preview-wrapper\" (click)=\"viewFile()\" style=\"cursor: pointer;\">\r\n <div class=\"fv-file-icon-preview\" [ngClass]=\"getFileIcon()\">\r\n <span class=\"material-icons\">{{ getFileIcon() }}</span>\r\n </div>\r\n </div>\r\n <span class=\"fv-filename\" (click)=\"viewFile()\" style=\"cursor: pointer;\">{{ fileInfo?.name }}</span>\r\n <button type=\"button\" class=\"fv-trash-btn\" (click)=\"removeFile()\" [disabled]=\"disabled\">\r\n <svg viewBox=\"0 0 24 24\" class=\"trash-icon\">\r\n <path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"errorMessage && control?.touched\" class=\"fv-document-error-message\">\r\n \u26A0 {{ getErrorMessage() }}\r\n </div>\r\n</div>\r\n\r\n<!-- Preview Overlay/Modal for Image -->\r\n<div *ngIf=\"showPreview\" class=\"fv-preview-overlay\" (click)=\"closePreview()\">\r\n <div class=\"fv-preview-content\" (click)=\"$event.stopPropagation()\">\r\n <img [src]=\"previewUrl\" alt=\"Preview\" />\r\n <div class=\"fv-preview-actions\">\r\n <button type=\"button\" class=\"fv-download-btn\" (click)=\"downloadFile()\">Download</button>\r\n <button type=\"button\" class=\"fv-close-btn\" (click)=\"closePreview()\">Close</button>\r\n </div>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";.fv-document-field-container{display:flex;flex-direction:column;margin-bottom:16px;width:fit-content;max-width:100%;font-family:Poppins,sans-serif}.fv-document-field-label{font-size:14px;font-weight:600;color:#151d48;margin-bottom:6px;display:block}.required-asterisk{color:#e74c3c;font-weight:700}.fv-upload-button{display:flex;align-items:center;border:1px solid #dcdcdc;border-radius:8px;background:#fff;padding:0;cursor:pointer;overflow:hidden;width:100px;height:34px;transition:all .2s ease}.fv-upload-button:hover:not(:disabled){border-color:#bbb;box-shadow:0 2px 4px #0000000d}.fv-upload-button:disabled{cursor:not-allowed;background-color:#f9f9f9;opacity:.7}.fv-upload-text{flex:1;padding:0 16px;font-size:14px;color:#1f2b41;text-align:left;font-weight:500}.fv-upload-icon-section{background:#f4f5f7;padding:0 10px;border-left:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;color:#333;height:100%}.upload-icon{width:20px;height:20px}.fv-preview-row{display:flex;align-items:center;gap:8px;padding:8px 0;width:100px;box-sizing:border-box}.fv-preview-wrapper{position:relative;width:40px;height:40px}.fv-file-icon-preview{width:40px;height:40px;border-radius:8px;background:#f4f5f7;display:flex;align-items:center;justify-content:center;color:#3498db;border:1px solid #dcdcdc}.fv-file-icon-preview.picture_as_pdf{color:#e74c3c;background:#fdf2f2}.fv-file-icon-preview.image{color:#3498db;background:#f1f8fe}.fv-file-icon-preview.table_view{color:#27ae60;background:#f1f9f4}.material-icons{font-size:24px}.fv-filename{flex:1;font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.fv-trash-btn{background:none;border:none;cursor:pointer;padding:6px;border-radius:50%;transition:background .2s;display:flex}.fv-trash-btn:hover:not(:disabled){background:#fee}.trash-icon{width:22px;height:22px;fill:red}.fv-document-error-message{margin-top:4px;font-size:12px;color:#e74c3c}.fv-preview-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000c;display:flex;justify-content:center;align-items:center;z-index:10000}.fv-preview-content{position:relative;background:#fff;padding:24px;border-radius:12px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center}.fv-preview-content img{max-width:100%;max-height:70vh;object-fit:contain;border-radius:4px;margin-bottom:20px}.fv-preview-actions{display:flex;gap:16px}.fv-preview-actions button{padding:10px 24px;border-radius:6px;border:none;cursor:pointer;font-weight:500;transition:background .2s}.fv-download-btn{background:#3498db;color:#fff}.fv-download-btn:hover{background:#2980b9}.fv-close-btn{background:#f0f0f0;color:#333}.fv-close-btn:hover{background:#e0e0e0}\n"] }]
|
|
2904
2984
|
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }], propDecorators: { label: [{
|
|
2905
2985
|
type: Input
|
|
2906
2986
|
}], placeholder: [{
|
|
@@ -3227,7 +3307,7 @@ class AddUpdateFormComponent {
|
|
|
3227
3307
|
initialValue = this.formatMonthYearValue(initialValue);
|
|
3228
3308
|
}
|
|
3229
3309
|
groupConfig[column.name] = [
|
|
3230
|
-
{ value: initialValue, disabled: column.disabled
|
|
3310
|
+
{ value: initialValue, disabled: (typeof column.disabled === 'boolean' ? column.disabled : false) },
|
|
3231
3311
|
];
|
|
3232
3312
|
});
|
|
3233
3313
|
const group = this.fb.group(groupConfig);
|
|
@@ -3286,6 +3366,12 @@ class AddUpdateFormComponent {
|
|
|
3286
3366
|
return 'Invalid format';
|
|
3287
3367
|
return 'Invalid field';
|
|
3288
3368
|
}
|
|
3369
|
+
isFieldDisabled(column, group) {
|
|
3370
|
+
if (typeof column.disabled === 'function') {
|
|
3371
|
+
return column.disabled(group);
|
|
3372
|
+
}
|
|
3373
|
+
return column.disabled || false;
|
|
3374
|
+
}
|
|
3289
3375
|
initializeForm() {
|
|
3290
3376
|
this.submitted = false;
|
|
3291
3377
|
const formGroupConfig = {};
|
|
@@ -3303,7 +3389,7 @@ class AddUpdateFormComponent {
|
|
|
3303
3389
|
initialValue = this.formatMonthYearValue(initialValue);
|
|
3304
3390
|
}
|
|
3305
3391
|
formGroupConfig[column.name] = [
|
|
3306
|
-
{ value: initialValue, disabled: column.disabled
|
|
3392
|
+
{ value: initialValue, disabled: (typeof column.disabled === 'boolean' ? column.disabled : false) },
|
|
3307
3393
|
null, // We'll set validators after form creation
|
|
3308
3394
|
];
|
|
3309
3395
|
// If it's a file field with an existing value, set the preview
|
|
@@ -3750,7 +3836,7 @@ class AddUpdateFormComponent {
|
|
|
3750
3836
|
type="text"
|
|
3751
3837
|
[control]="control"
|
|
3752
3838
|
[schema]="getSchema(column)"
|
|
3753
|
-
[disabled]="column
|
|
3839
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3754
3840
|
[readonly]="false"
|
|
3755
3841
|
[allowAlphabetsOnly]="column.allowAlphabetsOnly || false"
|
|
3756
3842
|
[maxLength]="column.maxLength || null"
|
|
@@ -3767,7 +3853,7 @@ class AddUpdateFormComponent {
|
|
|
3767
3853
|
[placeholder]="column.placeholder || ''"
|
|
3768
3854
|
[control]="control"
|
|
3769
3855
|
[schema]="getSchema(column)"
|
|
3770
|
-
[disabled]="column
|
|
3856
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3771
3857
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3772
3858
|
>
|
|
3773
3859
|
</fv-email-field>
|
|
@@ -3781,7 +3867,7 @@ class AddUpdateFormComponent {
|
|
|
3781
3867
|
[placeholder]="column.placeholder || ''"
|
|
3782
3868
|
[control]="control"
|
|
3783
3869
|
[schema]="getSchema(column)"
|
|
3784
|
-
[disabled]="column
|
|
3870
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3785
3871
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3786
3872
|
>
|
|
3787
3873
|
</fv-password-field>
|
|
@@ -3795,7 +3881,7 @@ class AddUpdateFormComponent {
|
|
|
3795
3881
|
[placeholder]="column.placeholder || ''"
|
|
3796
3882
|
[control]="control"
|
|
3797
3883
|
[schema]="getSchema(column)"
|
|
3798
|
-
[disabled]="column
|
|
3884
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3799
3885
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3800
3886
|
>
|
|
3801
3887
|
</fv-number-field>
|
|
@@ -3810,7 +3896,7 @@ class AddUpdateFormComponent {
|
|
|
3810
3896
|
[options]="column.options || []"
|
|
3811
3897
|
[control]="control"
|
|
3812
3898
|
[schema]="getSchema(column)"
|
|
3813
|
-
[disabled]="column
|
|
3899
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3814
3900
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3815
3901
|
>
|
|
3816
3902
|
</fv-dropdown>
|
|
@@ -3822,7 +3908,7 @@ class AddUpdateFormComponent {
|
|
|
3822
3908
|
<fv-checkbox
|
|
3823
3909
|
[label]="column.label"
|
|
3824
3910
|
[control]="control"
|
|
3825
|
-
[disabled]="column
|
|
3911
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3826
3912
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3827
3913
|
>
|
|
3828
3914
|
</fv-checkbox>
|
|
@@ -3833,7 +3919,7 @@ class AddUpdateFormComponent {
|
|
|
3833
3919
|
[label]="column.label"
|
|
3834
3920
|
[options]="column.options || []"
|
|
3835
3921
|
[control]="control"
|
|
3836
|
-
[disabled]="column
|
|
3922
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3837
3923
|
[layout]="column.layout || 'vertical'"
|
|
3838
3924
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3839
3925
|
>
|
|
@@ -3845,7 +3931,7 @@ class AddUpdateFormComponent {
|
|
|
3845
3931
|
[label]="column.label"
|
|
3846
3932
|
[control]="control"
|
|
3847
3933
|
[schema]="getSchema(column)"
|
|
3848
|
-
[disabled]="column
|
|
3934
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3849
3935
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3850
3936
|
>
|
|
3851
3937
|
</fv-date-field>
|
|
@@ -3858,7 +3944,7 @@ class AddUpdateFormComponent {
|
|
|
3858
3944
|
[label]="column.label"
|
|
3859
3945
|
[control]="control"
|
|
3860
3946
|
[schema]="getSchema(column)"
|
|
3861
|
-
[disabled]="column
|
|
3947
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3862
3948
|
(valueChange)="handleMonthYearChange(column.name, $event, control)"
|
|
3863
3949
|
>
|
|
3864
3950
|
</fv-month-year-field>
|
|
@@ -3872,7 +3958,7 @@ class AddUpdateFormComponent {
|
|
|
3872
3958
|
[placeholder]="column.placeholder || ''"
|
|
3873
3959
|
[control]="control"
|
|
3874
3960
|
[schema]="getSchema(column)"
|
|
3875
|
-
[disabled]="column
|
|
3961
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3876
3962
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3877
3963
|
>
|
|
3878
3964
|
</fv-rich-text-editor>
|
|
@@ -3885,7 +3971,7 @@ class AddUpdateFormComponent {
|
|
|
3885
3971
|
[placeholder]="column.placeholder || 'Select image'"
|
|
3886
3972
|
[control]="control"
|
|
3887
3973
|
[schema]="getSchema(column)"
|
|
3888
|
-
[disabled]="column
|
|
3974
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3889
3975
|
(valueChange)="onFileChange($event, column.name)"
|
|
3890
3976
|
>
|
|
3891
3977
|
</fv-image-selector>
|
|
@@ -3898,7 +3984,7 @@ class AddUpdateFormComponent {
|
|
|
3898
3984
|
[accept]="column.accept || '*/*'"
|
|
3899
3985
|
[control]="control"
|
|
3900
3986
|
[schema]="getSchema(column)"
|
|
3901
|
-
[disabled]="column
|
|
3987
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3902
3988
|
(valueChange)="onFileChange($event, column.name)"
|
|
3903
3989
|
>
|
|
3904
3990
|
</fv-file-selector>
|
|
@@ -3914,38 +4000,38 @@ class AddUpdateFormComponent {
|
|
|
3914
4000
|
[options]="column.options ? mapSearchOptions(column.options) : []"
|
|
3915
4001
|
[control]="control"
|
|
3916
4002
|
[schema]="getSchema(column)"
|
|
3917
|
-
[disabled]="column
|
|
4003
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3918
4004
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3919
4005
|
>
|
|
3920
4006
|
</fv-name-code>
|
|
3921
4007
|
</ng-container>
|
|
3922
4008
|
|
|
3923
4009
|
<ng-container *ngIf="column.type === 'phone' && !column.hidden">
|
|
3924
|
-
<fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4010
|
+
<fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-phone-field>
|
|
3925
4011
|
</ng-container>
|
|
3926
4012
|
|
|
3927
4013
|
<ng-container *ngIf="column.type === 'uan' && !column.hidden">
|
|
3928
|
-
<fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4014
|
+
<fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-uan-field>
|
|
3929
4015
|
</ng-container>
|
|
3930
4016
|
|
|
3931
4017
|
<ng-container *ngIf="column.type === 'pf' && !column.hidden">
|
|
3932
|
-
<fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4018
|
+
<fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-pf-field>
|
|
3933
4019
|
</ng-container>
|
|
3934
4020
|
|
|
3935
4021
|
<ng-container *ngIf="column.type === 'esi' && !column.hidden">
|
|
3936
|
-
<fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4022
|
+
<fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-esi-field>
|
|
3937
4023
|
</ng-container>
|
|
3938
4024
|
|
|
3939
4025
|
<ng-container *ngIf="column.type === 'ifsc' && !column.hidden">
|
|
3940
|
-
<fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4026
|
+
<fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-ifsc-field>
|
|
3941
4027
|
</ng-container>
|
|
3942
4028
|
|
|
3943
4029
|
<ng-container *ngIf="column.type === 'micr' && !column.hidden">
|
|
3944
|
-
<fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4030
|
+
<fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-micr-field>
|
|
3945
4031
|
</ng-container>
|
|
3946
4032
|
|
|
3947
4033
|
<ng-container *ngIf="column.type === 'iban' && !column.hidden">
|
|
3948
|
-
<fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4034
|
+
<fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-iban-field>
|
|
3949
4035
|
</ng-container>
|
|
3950
4036
|
|
|
3951
4037
|
<ng-container *ngIf="column.type === 'service-period' && !column.hidden">
|
|
@@ -3965,7 +4051,7 @@ class AddUpdateFormComponent {
|
|
|
3965
4051
|
[accept]="column.accept || 'application/pdf,image/*'"
|
|
3966
4052
|
[control]="control"
|
|
3967
4053
|
[schema]="getSchema(column)"
|
|
3968
|
-
[disabled]="column
|
|
4054
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3969
4055
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3970
4056
|
>
|
|
3971
4057
|
</fv-document-field>
|
|
@@ -3977,7 +4063,7 @@ class AddUpdateFormComponent {
|
|
|
3977
4063
|
[placeholder]="column.placeholder || '--:--'"
|
|
3978
4064
|
[control]="control"
|
|
3979
4065
|
[schema]="getSchema(column)"
|
|
3980
|
-
[disabled]="column
|
|
4066
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
3981
4067
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3982
4068
|
>
|
|
3983
4069
|
</fv-time-field>
|
|
@@ -4099,7 +4185,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4099
4185
|
type="text"
|
|
4100
4186
|
[control]="control"
|
|
4101
4187
|
[schema]="getSchema(column)"
|
|
4102
|
-
[disabled]="column
|
|
4188
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4103
4189
|
[readonly]="false"
|
|
4104
4190
|
[allowAlphabetsOnly]="column.allowAlphabetsOnly || false"
|
|
4105
4191
|
[maxLength]="column.maxLength || null"
|
|
@@ -4116,7 +4202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4116
4202
|
[placeholder]="column.placeholder || ''"
|
|
4117
4203
|
[control]="control"
|
|
4118
4204
|
[schema]="getSchema(column)"
|
|
4119
|
-
[disabled]="column
|
|
4205
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4120
4206
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4121
4207
|
>
|
|
4122
4208
|
</fv-email-field>
|
|
@@ -4130,7 +4216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4130
4216
|
[placeholder]="column.placeholder || ''"
|
|
4131
4217
|
[control]="control"
|
|
4132
4218
|
[schema]="getSchema(column)"
|
|
4133
|
-
[disabled]="column
|
|
4219
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4134
4220
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4135
4221
|
>
|
|
4136
4222
|
</fv-password-field>
|
|
@@ -4144,7 +4230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4144
4230
|
[placeholder]="column.placeholder || ''"
|
|
4145
4231
|
[control]="control"
|
|
4146
4232
|
[schema]="getSchema(column)"
|
|
4147
|
-
[disabled]="column
|
|
4233
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4148
4234
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4149
4235
|
>
|
|
4150
4236
|
</fv-number-field>
|
|
@@ -4159,7 +4245,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4159
4245
|
[options]="column.options || []"
|
|
4160
4246
|
[control]="control"
|
|
4161
4247
|
[schema]="getSchema(column)"
|
|
4162
|
-
[disabled]="column
|
|
4248
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4163
4249
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4164
4250
|
>
|
|
4165
4251
|
</fv-dropdown>
|
|
@@ -4171,7 +4257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4171
4257
|
<fv-checkbox
|
|
4172
4258
|
[label]="column.label"
|
|
4173
4259
|
[control]="control"
|
|
4174
|
-
[disabled]="column
|
|
4260
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4175
4261
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4176
4262
|
>
|
|
4177
4263
|
</fv-checkbox>
|
|
@@ -4182,7 +4268,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4182
4268
|
[label]="column.label"
|
|
4183
4269
|
[options]="column.options || []"
|
|
4184
4270
|
[control]="control"
|
|
4185
|
-
[disabled]="column
|
|
4271
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4186
4272
|
[layout]="column.layout || 'vertical'"
|
|
4187
4273
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4188
4274
|
>
|
|
@@ -4194,7 +4280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4194
4280
|
[label]="column.label"
|
|
4195
4281
|
[control]="control"
|
|
4196
4282
|
[schema]="getSchema(column)"
|
|
4197
|
-
[disabled]="column
|
|
4283
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4198
4284
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4199
4285
|
>
|
|
4200
4286
|
</fv-date-field>
|
|
@@ -4207,7 +4293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4207
4293
|
[label]="column.label"
|
|
4208
4294
|
[control]="control"
|
|
4209
4295
|
[schema]="getSchema(column)"
|
|
4210
|
-
[disabled]="column
|
|
4296
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4211
4297
|
(valueChange)="handleMonthYearChange(column.name, $event, control)"
|
|
4212
4298
|
>
|
|
4213
4299
|
</fv-month-year-field>
|
|
@@ -4221,7 +4307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4221
4307
|
[placeholder]="column.placeholder || ''"
|
|
4222
4308
|
[control]="control"
|
|
4223
4309
|
[schema]="getSchema(column)"
|
|
4224
|
-
[disabled]="column
|
|
4310
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4225
4311
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4226
4312
|
>
|
|
4227
4313
|
</fv-rich-text-editor>
|
|
@@ -4234,7 +4320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4234
4320
|
[placeholder]="column.placeholder || 'Select image'"
|
|
4235
4321
|
[control]="control"
|
|
4236
4322
|
[schema]="getSchema(column)"
|
|
4237
|
-
[disabled]="column
|
|
4323
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4238
4324
|
(valueChange)="onFileChange($event, column.name)"
|
|
4239
4325
|
>
|
|
4240
4326
|
</fv-image-selector>
|
|
@@ -4247,7 +4333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4247
4333
|
[accept]="column.accept || '*/*'"
|
|
4248
4334
|
[control]="control"
|
|
4249
4335
|
[schema]="getSchema(column)"
|
|
4250
|
-
[disabled]="column
|
|
4336
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4251
4337
|
(valueChange)="onFileChange($event, column.name)"
|
|
4252
4338
|
>
|
|
4253
4339
|
</fv-file-selector>
|
|
@@ -4263,38 +4349,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4263
4349
|
[options]="column.options ? mapSearchOptions(column.options) : []"
|
|
4264
4350
|
[control]="control"
|
|
4265
4351
|
[schema]="getSchema(column)"
|
|
4266
|
-
[disabled]="column
|
|
4352
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4267
4353
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4268
4354
|
>
|
|
4269
4355
|
</fv-name-code>
|
|
4270
4356
|
</ng-container>
|
|
4271
4357
|
|
|
4272
4358
|
<ng-container *ngIf="column.type === 'phone' && !column.hidden">
|
|
4273
|
-
<fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4359
|
+
<fv-phone-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-phone-field>
|
|
4274
4360
|
</ng-container>
|
|
4275
4361
|
|
|
4276
4362
|
<ng-container *ngIf="column.type === 'uan' && !column.hidden">
|
|
4277
|
-
<fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4363
|
+
<fv-uan-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-uan-field>
|
|
4278
4364
|
</ng-container>
|
|
4279
4365
|
|
|
4280
4366
|
<ng-container *ngIf="column.type === 'pf' && !column.hidden">
|
|
4281
|
-
<fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4367
|
+
<fv-pf-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-pf-field>
|
|
4282
4368
|
</ng-container>
|
|
4283
4369
|
|
|
4284
4370
|
<ng-container *ngIf="column.type === 'esi' && !column.hidden">
|
|
4285
|
-
<fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4371
|
+
<fv-esi-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-esi-field>
|
|
4286
4372
|
</ng-container>
|
|
4287
4373
|
|
|
4288
4374
|
<ng-container *ngIf="column.type === 'ifsc' && !column.hidden">
|
|
4289
|
-
<fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4375
|
+
<fv-ifsc-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-ifsc-field>
|
|
4290
4376
|
</ng-container>
|
|
4291
4377
|
|
|
4292
4378
|
<ng-container *ngIf="column.type === 'micr' && !column.hidden">
|
|
4293
|
-
<fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4379
|
+
<fv-micr-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-micr-field>
|
|
4294
4380
|
</ng-container>
|
|
4295
4381
|
|
|
4296
4382
|
<ng-container *ngIf="column.type === 'iban' && !column.hidden">
|
|
4297
|
-
<fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="column
|
|
4383
|
+
<fv-iban-field [label]="column.label" [control]="control" [schema]="getSchema(column)" [disabled]="isFieldDisabled(column, group)"></fv-iban-field>
|
|
4298
4384
|
</ng-container>
|
|
4299
4385
|
|
|
4300
4386
|
<ng-container *ngIf="column.type === 'service-period' && !column.hidden">
|
|
@@ -4314,7 +4400,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4314
4400
|
[accept]="column.accept || 'application/pdf,image/*'"
|
|
4315
4401
|
[control]="control"
|
|
4316
4402
|
[schema]="getSchema(column)"
|
|
4317
|
-
[disabled]="column
|
|
4403
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4318
4404
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4319
4405
|
>
|
|
4320
4406
|
</fv-document-field>
|
|
@@ -4326,7 +4412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4326
4412
|
[placeholder]="column.placeholder || '--:--'"
|
|
4327
4413
|
[control]="control"
|
|
4328
4414
|
[schema]="getSchema(column)"
|
|
4329
|
-
[disabled]="column
|
|
4415
|
+
[disabled]="isFieldDisabled(column, group)"
|
|
4330
4416
|
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4331
4417
|
>
|
|
4332
4418
|
</fv-time-field>
|