ngx-techlify-core 14.8.0 → 14.8.1
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/esm2020/lib/forgot-password/forgot-password.component.mjs +3 -3
- package/esm2020/lib/import-csv/field-mapping/field-mapping.component.mjs +3 -3
- package/esm2020/lib/import-csv/import-csv.component.mjs +11 -10
- package/esm2020/lib/password-requirement-check/password-check.service.mjs +2 -2
- package/esm2020/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.mjs +3 -3
- package/fesm2015/ngx-techlify-core.mjs +17 -16
- package/fesm2015/ngx-techlify-core.mjs.map +1 -1
- package/fesm2020/ngx-techlify-core.mjs +17 -16
- package/fesm2020/ngx-techlify-core.mjs.map +1 -1
- package/lib/import-csv/import-csv.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -8177,10 +8177,10 @@ class FieldMappingComponent {
|
|
|
8177
8177
|
}
|
|
8178
8178
|
}
|
|
8179
8179
|
FieldMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FieldMappingComponent, deps: [{ token: i1$4.UntypedFormBuilder }, { token: FormValidatorService }, { token: i0.ChangeDetectorRef }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
8180
|
-
FieldMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FieldMappingComponent, selector: "app-field-mapping", inputs: { data: "data", config: "config" }, outputs: { onSave: "onSave", onReUpload: "onReUpload" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"mt-2\">\n <div fxLayout=\"row wrap\" class=\"pb-3\">\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\n <h5 class=\"secondary-color\">\n <span class=\"font-weight-bold\">{{data.length}}</span>\n </h5>\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\n <h5 class=\"primary-color pb-2\">Properties</h5>\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\n </button>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8$4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8$4.MatLabel, selector: "mat-label" }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8$2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
8180
|
+
FieldMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FieldMappingComponent, selector: "app-field-mapping", inputs: { data: "data", config: "config" }, outputs: { onSave: "onSave", onReUpload: "onReUpload" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"mt-2\">\n <div fxLayout=\"row wrap\" class=\"pb-3\">\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\n <h5 class=\"secondary-color\">\n <span class=\"font-weight-bold\">{{data.length}}</span>\n </h5>\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\n <h5 class=\"primary-color pb-2\">Properties</h5>\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i = index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\n </button>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8$4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8$4.MatLabel, selector: "mat-label" }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8$2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
8181
8181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FieldMappingComponent, decorators: [{
|
|
8182
8182
|
type: Component,
|
|
8183
|
-
args: [{ selector: 'app-field-mapping', template: "<div fxLayout=\"column\" class=\"mt-2\">\n <div fxLayout=\"row wrap\" class=\"pb-3\">\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\n <h5 class=\"secondary-color\">\n <span class=\"font-weight-bold\">{{data.length}}</span>\n </h5>\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\n <h5 class=\"primary-color pb-2\">Properties</h5>\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\n </button>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"] }]
|
|
8183
|
+
args: [{ selector: 'app-field-mapping', template: "<div fxLayout=\"column\" class=\"mt-2\">\n <div fxLayout=\"row wrap\" class=\"pb-3\">\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\n <h5 class=\"secondary-color\">\n <span class=\"font-weight-bold\">{{data.length}}</span>\n </h5>\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\n <h5 class=\"primary-color pb-2\">Properties</h5>\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i = index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\n </button>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"] }]
|
|
8184
8184
|
}], ctorParameters: function () { return [{ type: i1$4.UntypedFormBuilder }, { type: FormValidatorService }, { type: i0.ChangeDetectorRef }, { type: i3.Location }]; }, propDecorators: { data: [{
|
|
8185
8185
|
type: Input
|
|
8186
8186
|
}], config: [{
|
|
@@ -8234,10 +8234,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
8234
8234
|
}] } });
|
|
8235
8235
|
|
|
8236
8236
|
let ImportCsvComponent = class ImportCsvComponent {
|
|
8237
|
-
constructor(alertService, errorHandler, http) {
|
|
8237
|
+
constructor(alertService, errorHandler, http, datePipe) {
|
|
8238
8238
|
this.alertService = alertService;
|
|
8239
8239
|
this.errorHandler = errorHandler;
|
|
8240
8240
|
this.http = http;
|
|
8241
|
+
this.datePipe = datePipe;
|
|
8241
8242
|
this.filesList = [];
|
|
8242
8243
|
this.data = [];
|
|
8243
8244
|
this.isUploaded = false;
|
|
@@ -8342,7 +8343,10 @@ let ImportCsvComponent = class ImportCsvComponent {
|
|
|
8342
8343
|
for (var key in data) {
|
|
8343
8344
|
var field = event.fields.find((field) => field.label == key);
|
|
8344
8345
|
if (field) {
|
|
8345
|
-
if (
|
|
8346
|
+
if (field.propertyType == 'date' && this.isValidDate(new Date(data[field.label]))) {
|
|
8347
|
+
data[field.property] = this.datePipe.transform(new Date(data[field.label]), 'yyyy-MM-dd');
|
|
8348
|
+
}
|
|
8349
|
+
else if (field.propertyType == 'dateTime' && this.isValidDate(new Date(data[field.label]))) {
|
|
8346
8350
|
data[field.property] = new Date(data[field.label]).toISOString();
|
|
8347
8351
|
}
|
|
8348
8352
|
else {
|
|
@@ -8350,9 +8354,6 @@ let ImportCsvComponent = class ImportCsvComponent {
|
|
|
8350
8354
|
}
|
|
8351
8355
|
delete data[key];
|
|
8352
8356
|
}
|
|
8353
|
-
else {
|
|
8354
|
-
delete data[key];
|
|
8355
|
-
}
|
|
8356
8357
|
}
|
|
8357
8358
|
});
|
|
8358
8359
|
this.save(tempFileData);
|
|
@@ -8398,15 +8399,15 @@ let ImportCsvComponent = class ImportCsvComponent {
|
|
|
8398
8399
|
this.currentStep = 1;
|
|
8399
8400
|
}
|
|
8400
8401
|
};
|
|
8401
|
-
ImportCsvComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ImportCsvComponent, deps: [{ token: AlertService }, { token: ErrorHandlerService }, { token: HttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8402
|
-
ImportCsvComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ImportCsvComponent, selector: "app-import-csv", inputs: { config: "config" }, ngImport: i0, template: "<div fxLayout=\"column wrap\" class=\"p-4\">\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\n <h4 fxFlex=\"20%\" class=\"ml-2\">\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\n </h4>\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\n <span>{{config?.title}} Import</span>\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\n fxLayoutAlign=\"center center\">\n <button mat-stroked-button class=\"primary-color\">\n <mat-icon>\n download\n </mat-icon>\n Sample File\n </button>\n </a>\n </h3>\n </mat-card-content>\n </mat-card>\n <div fxFlex=\"100%\" class=\"mt-3\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\">\n <div fxFlex=\"100%\">\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\n <h5 class=\"primary-color pb-3\">File Upload</h5>\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\n </app-import-history-list>\n </section>\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\n </app-field-mapping>\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\n <div class=\"text-muted\">\n <p>\n Please use this yyyy
|
|
8402
|
+
ImportCsvComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ImportCsvComponent, deps: [{ token: AlertService }, { token: ErrorHandlerService }, { token: HttpService }, { token: i3.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
8403
|
+
ImportCsvComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ImportCsvComponent, selector: "app-import-csv", inputs: { config: "config" }, ngImport: i0, template: "<div fxLayout=\"column wrap\" class=\"p-4\">\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\n <h4 fxFlex=\"20%\" class=\"ml-2\">\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\n </h4>\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\n <span>{{config?.title}} Import</span>\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\n fxLayoutAlign=\"center center\">\n <button mat-stroked-button class=\"primary-color\">\n <mat-icon>\n download\n </mat-icon>\n Sample File\n </button>\n </a>\n </h3>\n </mat-card-content>\n </mat-card>\n <div fxFlex=\"100%\" class=\"mt-3\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\">\n <div fxFlex=\"100%\">\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\n <h5 class=\"primary-color pb-3\">File Upload</h5>\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\n </app-import-history-list>\n </section>\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\n </app-field-mapping>\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\n <div class=\"text-muted\">\n <p>\n Please use this yyyy/MM/dd date format for all the date fields. Otherwise your date fields will be\n incorrect or not will be accepted. Ex: 2021/09/27\n </p>\n <ng-container *ngIf=\"config?.customErrorMessages\">\n <p *ngFor=\"let message of config?.customErrorMessages\">\n {{message}}\n </p>\n </ng-container>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep==3 || currentStep == 5\">\n <app-data-import [step]=\"step\" fxLayoutAlign=\"center center\"></app-data-import>\n </div>\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep == 6\">\n <app-import-success [data]=\"result\" [config]=\"config\" fxLayoutAlign=\"center center\"></app-import-success>\n </div>\n </div>\n</div>\n", styles: [".drop-section{width:500px!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i7.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i10$1.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i5$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FileDropperComponent, selector: "app-file-dropper", inputs: ["fileArray", "config", "styles"], outputs: ["fileChanged"] }, { kind: "component", type: FieldMappingComponent, selector: "app-field-mapping", inputs: ["data", "config"], outputs: ["onSave", "onReUpload"] }, { kind: "component", type: FailedItemsListComponent, selector: "app-failed-items-list", inputs: ["failedItems", "selectedFields"], outputs: ["onReUpload"] }, { kind: "component", type: ImportHistoryListComponent, selector: "app-import-history-list", inputs: ["config"] }, { kind: "component", type: ImportSuccessComponent, selector: "app-import-success", inputs: ["data", "config"] }, { kind: "component", type: DataImportComponent, selector: "app-data-import", inputs: ["step"] }] });
|
|
8403
8404
|
ImportCsvComponent = __decorate([
|
|
8404
8405
|
UntilDestroy()
|
|
8405
8406
|
], ImportCsvComponent);
|
|
8406
8407
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ImportCsvComponent, decorators: [{
|
|
8407
8408
|
type: Component,
|
|
8408
|
-
args: [{ selector: 'app-import-csv', template: "<div fxLayout=\"column wrap\" class=\"p-4\">\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\n <h4 fxFlex=\"20%\" class=\"ml-2\">\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\n </h4>\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\n <span>{{config?.title}} Import</span>\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\n fxLayoutAlign=\"center center\">\n <button mat-stroked-button class=\"primary-color\">\n <mat-icon>\n download\n </mat-icon>\n Sample File\n </button>\n </a>\n </h3>\n </mat-card-content>\n </mat-card>\n <div fxFlex=\"100%\" class=\"mt-3\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\">\n <div fxFlex=\"100%\">\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\n <h5 class=\"primary-color pb-3\">File Upload</h5>\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\n </app-import-history-list>\n </section>\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\n </app-field-mapping>\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\n <div class=\"text-muted\">\n <p>\n Please use this yyyy
|
|
8409
|
-
}], ctorParameters: function () { return [{ type: AlertService }, { type: ErrorHandlerService }, { type: HttpService }]; }, propDecorators: { config: [{
|
|
8409
|
+
args: [{ selector: 'app-import-csv', template: "<div fxLayout=\"column wrap\" class=\"p-4\">\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\n <h4 fxFlex=\"20%\" class=\"ml-2\">\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\n </h4>\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\n <span>{{config?.title}} Import</span>\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\n fxLayoutAlign=\"center center\">\n <button mat-stroked-button class=\"primary-color\">\n <mat-icon>\n download\n </mat-icon>\n Sample File\n </button>\n </a>\n </h3>\n </mat-card-content>\n </mat-card>\n <div fxFlex=\"100%\" class=\"mt-3\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\">\n <div fxFlex=\"100%\">\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\n <h5 class=\"primary-color pb-3\">File Upload</h5>\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\n </app-import-history-list>\n </section>\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\n </app-field-mapping>\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\n <mat-card fxFlex=\"100%\">\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\n <div class=\"text-muted\">\n <p>\n Please use this yyyy/MM/dd date format for all the date fields. Otherwise your date fields will be\n incorrect or not will be accepted. Ex: 2021/09/27\n </p>\n <ng-container *ngIf=\"config?.customErrorMessages\">\n <p *ngFor=\"let message of config?.customErrorMessages\">\n {{message}}\n </p>\n </ng-container>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep==3 || currentStep == 5\">\n <app-data-import [step]=\"step\" fxLayoutAlign=\"center center\"></app-data-import>\n </div>\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep == 6\">\n <app-import-success [data]=\"result\" [config]=\"config\" fxLayoutAlign=\"center center\"></app-import-success>\n </div>\n </div>\n</div>\n", styles: [".drop-section{width:500px!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"] }]
|
|
8410
|
+
}], ctorParameters: function () { return [{ type: AlertService }, { type: ErrorHandlerService }, { type: HttpService }, { type: i3.DatePipe }]; }, propDecorators: { config: [{
|
|
8410
8411
|
type: Input
|
|
8411
8412
|
}] } });
|
|
8412
8413
|
|
|
@@ -10037,7 +10038,7 @@ class PasswordCheckService {
|
|
|
10037
10038
|
}
|
|
10038
10039
|
// Check for at least one capital letter
|
|
10039
10040
|
if (isPasswordRequireCapitalLetter) {
|
|
10040
|
-
result.hasCapitalLetter = /[A-Z]/.test(password);
|
|
10041
|
+
result.hasCapitalLetter = /[A-Z]/.test(password) && /[a-z]/.test(password);
|
|
10041
10042
|
}
|
|
10042
10043
|
// Check if all requirements are fulfilled
|
|
10043
10044
|
result.isValid = Object.values(result).every(value => value === true);
|
|
@@ -10113,10 +10114,10 @@ class PasswordRequirementCheckComponent {
|
|
|
10113
10114
|
}
|
|
10114
10115
|
}
|
|
10115
10116
|
PasswordRequirementCheckComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckComponent, deps: [{ token: AccessControlConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10116
|
-
PasswordRequirementCheckComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: PasswordRequirementCheckComponent, selector: "techlify-password-requirement-check", inputs: { password: "password" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"alert\"\n style=\"font-size: 12px; padding: 5px;\"\n [ngClass]=\"{ 'alert-success' : result.isValid, 'alert-danger': !result.isValid }\"\n *ngIf=\"showResult\">\n <ul style=\"margin-bottom: 2px; padding-inline-start: 20px;\">\n <li *ngIf=\"accessControlConfiguration?.minPasswordLength > 0\">\n <span [ngClass]=\"{ 'text-success': result.minLength, 'text-danger': !result.minLength }\">\n Minimum Length Requirement: {{ accessControlConfiguration?.minPasswordLength }} Characters\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireNumber\">\n <span [ngClass]=\"{ 'text-success': result.hasNumber, 'text-danger': !result.hasNumber }\">\n Your password is required to add at least 1 number\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireSymbol\">\n <span [ngClass]=\"{ 'text-success': result.hasSymbol, 'text-danger': !result.hasSymbol }\">\n Your password is required to add at least 1 symbol.\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireCapitalLetter\">\n <span [ngClass]=\"{ 'text-success': result.hasCapitalLetter, 'text-danger': !result.hasCapitalLetter }\">\n Your password is required to add at least 1 capital letter\n </span>\n </li>\n </ul>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
10117
|
+
PasswordRequirementCheckComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: PasswordRequirementCheckComponent, selector: "techlify-password-requirement-check", inputs: { password: "password" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"alert\"\n style=\"font-size: 12px; padding: 5px;\"\n [ngClass]=\"{ 'alert-success' : result.isValid, 'alert-danger': !result.isValid }\"\n *ngIf=\"showResult\">\n <ul style=\"margin-bottom: 2px; padding-inline-start: 20px;\">\n <li *ngIf=\"accessControlConfiguration?.minPasswordLength > 0\">\n <span [ngClass]=\"{ 'text-success': result.minLength, 'text-danger': !result.minLength }\">\n Minimum Length Requirement: {{ accessControlConfiguration?.minPasswordLength }} Characters\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireNumber\">\n <span [ngClass]=\"{ 'text-success': result.hasNumber, 'text-danger': !result.hasNumber }\">\n Your password is required to add at least 1 number\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireSymbol\">\n <span [ngClass]=\"{ 'text-success': result.hasSymbol, 'text-danger': !result.hasSymbol }\">\n Your password is required to add at least 1 symbol.\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireCapitalLetter\">\n <span [ngClass]=\"{ 'text-success': result.hasCapitalLetter, 'text-danger': !result.hasCapitalLetter }\">\n Your password is required to add at least 1 capital and small letter\n </span>\n </li>\n </ul>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
10117
10118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckComponent, decorators: [{
|
|
10118
10119
|
type: Component,
|
|
10119
|
-
args: [{ selector: 'techlify-password-requirement-check', template: "<div class=\"alert\"\n style=\"font-size: 12px; padding: 5px;\"\n [ngClass]=\"{ 'alert-success' : result.isValid, 'alert-danger': !result.isValid }\"\n *ngIf=\"showResult\">\n <ul style=\"margin-bottom: 2px; padding-inline-start: 20px;\">\n <li *ngIf=\"accessControlConfiguration?.minPasswordLength > 0\">\n <span [ngClass]=\"{ 'text-success': result.minLength, 'text-danger': !result.minLength }\">\n Minimum Length Requirement: {{ accessControlConfiguration?.minPasswordLength }} Characters\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireNumber\">\n <span [ngClass]=\"{ 'text-success': result.hasNumber, 'text-danger': !result.hasNumber }\">\n Your password is required to add at least 1 number\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireSymbol\">\n <span [ngClass]=\"{ 'text-success': result.hasSymbol, 'text-danger': !result.hasSymbol }\">\n Your password is required to add at least 1 symbol.\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireCapitalLetter\">\n <span [ngClass]=\"{ 'text-success': result.hasCapitalLetter, 'text-danger': !result.hasCapitalLetter }\">\n Your password is required to add at least 1 capital letter\n </span>\n </li>\n </ul>\n</div>\n" }]
|
|
10120
|
+
args: [{ selector: 'techlify-password-requirement-check', template: "<div class=\"alert\"\n style=\"font-size: 12px; padding: 5px;\"\n [ngClass]=\"{ 'alert-success' : result.isValid, 'alert-danger': !result.isValid }\"\n *ngIf=\"showResult\">\n <ul style=\"margin-bottom: 2px; padding-inline-start: 20px;\">\n <li *ngIf=\"accessControlConfiguration?.minPasswordLength > 0\">\n <span [ngClass]=\"{ 'text-success': result.minLength, 'text-danger': !result.minLength }\">\n Minimum Length Requirement: {{ accessControlConfiguration?.minPasswordLength }} Characters\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireNumber\">\n <span [ngClass]=\"{ 'text-success': result.hasNumber, 'text-danger': !result.hasNumber }\">\n Your password is required to add at least 1 number\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireSymbol\">\n <span [ngClass]=\"{ 'text-success': result.hasSymbol, 'text-danger': !result.hasSymbol }\">\n Your password is required to add at least 1 symbol.\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireCapitalLetter\">\n <span [ngClass]=\"{ 'text-success': result.hasCapitalLetter, 'text-danger': !result.hasCapitalLetter }\">\n Your password is required to add at least 1 capital and small letter\n </span>\n </li>\n </ul>\n</div>\n" }]
|
|
10120
10121
|
}], ctorParameters: function () { return [{ type: AccessControlConfigService }]; }, propDecorators: { password: [{
|
|
10121
10122
|
type: Input
|
|
10122
10123
|
}] } });
|
|
@@ -10317,10 +10318,10 @@ class ForgotPasswordComponent {
|
|
|
10317
10318
|
}
|
|
10318
10319
|
}
|
|
10319
10320
|
ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: HttpService }, { token: AlertService }, { token: i1$5.Router }, { token: CurrentUserService }, { token: ErrorHandlerService }, { token: CredentialsService }, { token: i1$4.UntypedFormBuilder }, { token: FormValidatorService }, { token: UserConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10320
|
-
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ForgotPasswordComponent, selector: "forgot-password", ngImport: i0, template: "<div class=\"h-100 row align-items-center mx-0\">\n <div class=\"col\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" />\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\"\n class=\"form-bordered mx-auto form-medium form-bordered form-centered form-horizontal mt-3 white-box\"\n style=\"width:550px\">\n\n <h4 class=\"section-title text-center mt-4\">RESET</h4>\n\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"sendOtp()\" class=\"mt-4\">\n\n <div class=\"form-group row\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"email\" placeholder=\"Email\" type=\"email\" autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"row mt-4\">\n <div class=\"col-12 text-center\">\n <button mat-button
|
|
10321
|
+
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ForgotPasswordComponent, selector: "forgot-password", ngImport: i0, template: "<div class=\"h-100 row align-items-center mx-0\">\n <div class=\"col\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" />\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\"\n class=\"form-bordered mx-auto form-medium form-bordered form-centered form-horizontal mt-3 white-box\"\n style=\"width:550px\">\n\n <h4 class=\"section-title text-center mt-4\">RESET</h4>\n\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"sendOtp()\" class=\"mt-4\">\n\n <div class=\"form-group row\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"email\" placeholder=\"Email\" type=\"email\" autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"row mt-4\">\n <div class=\"col-12 text-center\">\n <button mat-raised-button color=\"primary\" class=\"w-50\" type=\"submit\"\n [disabled]=\"isWorking\">\n Send OTP\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div class=\"row mt-3 mr-0 ml-0\" *ngIf=\"userConfig.showSignup\">\n <div class=\"col-12 text-center\">\n <p>New to {{ userConfig.appName }}?</p>\n <button mat-button class=\"btn btn-sm btn-secondary text-white\" style=\"width: 550px;\" type=\"button\"\n [routerLink]=\"['/signup']\">\n Create an account\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#login-form-wrapper{margin-top:100px}#login-form-wrapper .branding-block{margin-bottom:60px}#login-form-wrapper .techlify-logo{height:40px;padding-right:10px;bottom:10px;position:relative}#login-form-wrapper .company-name{margin-bottom:0}:host{width:100%}.white-box{background-color:#fff;padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8$4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8$4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1$5.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
10321
10322
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
10322
10323
|
type: Component,
|
|
10323
|
-
args: [{ selector: 'forgot-password', template: "<div class=\"h-100 row align-items-center mx-0\">\n <div class=\"col\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" />\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\"\n class=\"form-bordered mx-auto form-medium form-bordered form-centered form-horizontal mt-3 white-box\"\n style=\"width:550px\">\n\n <h4 class=\"section-title text-center mt-4\">RESET</h4>\n\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"sendOtp()\" class=\"mt-4\">\n\n <div class=\"form-group row\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"email\" placeholder=\"Email\" type=\"email\" autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"row mt-4\">\n <div class=\"col-12 text-center\">\n <button mat-button
|
|
10324
|
+
args: [{ selector: 'forgot-password', template: "<div class=\"h-100 row align-items-center mx-0\">\n <div class=\"col\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" />\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\"\n class=\"form-bordered mx-auto form-medium form-bordered form-centered form-horizontal mt-3 white-box\"\n style=\"width:550px\">\n\n <h4 class=\"section-title text-center mt-4\">RESET</h4>\n\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"sendOtp()\" class=\"mt-4\">\n\n <div class=\"form-group row\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"email\" placeholder=\"Email\" type=\"email\" autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"row mt-4\">\n <div class=\"col-12 text-center\">\n <button mat-raised-button color=\"primary\" class=\"w-50\" type=\"submit\"\n [disabled]=\"isWorking\">\n Send OTP\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div class=\"row mt-3 mr-0 ml-0\" *ngIf=\"userConfig.showSignup\">\n <div class=\"col-12 text-center\">\n <p>New to {{ userConfig.appName }}?</p>\n <button mat-button class=\"btn btn-sm btn-secondary text-white\" style=\"width: 550px;\" type=\"button\"\n [routerLink]=\"['/signup']\">\n Create an account\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#login-form-wrapper{margin-top:100px}#login-form-wrapper .branding-block{margin-bottom:60px}#login-form-wrapper .techlify-logo{height:40px;padding-right:10px;bottom:10px;position:relative}#login-form-wrapper .company-name{margin-bottom:0}:host{width:100%}.white-box{background-color:#fff;padding:10px}\n"] }]
|
|
10324
10325
|
}], ctorParameters: function () { return [{ type: HttpService }, { type: AlertService }, { type: i1$5.Router }, { type: CurrentUserService }, { type: ErrorHandlerService }, { type: CredentialsService }, { type: i1$4.UntypedFormBuilder }, { type: FormValidatorService }, { type: UserConfigService }]; } });
|
|
10325
10326
|
|
|
10326
10327
|
const routes$8 = [
|