ngx-techlify-core 18.7.2 → 18.8.0
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/company-information/client.service.mjs +19 -0
- package/esm2022/lib/company-information/company-info-display/company-info-display.component.mjs +16 -0
- package/esm2022/lib/company-information/company-information/company-information.component.mjs +94 -0
- package/esm2022/lib/file-upload-button/file-upload-button.component.mjs +47 -0
- package/esm2022/lib/image-preview/image-preview.component.mjs +26 -0
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/ngx-techlify-core.mjs +173 -6
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/company-information/client.service.d.ts +9 -0
- package/lib/company-information/company-info-display/company-info-display.component.d.ts +6 -0
- package/lib/company-information/company-information/company-information.component.d.ts +24 -0
- package/lib/file-upload-button/file-upload-button.component.d.ts +20 -0
- package/lib/image-preview/image-preview.component.d.ts +9 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/ngx-techlify-core-18.7.2.tgz +0 -0
|
@@ -4,7 +4,7 @@ import * as i1 from '@angular/material/dialog';
|
|
|
4
4
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
5
5
|
import * as i7 from '@angular/flex-layout/flex';
|
|
6
6
|
import * as i7$1 from '@angular/material/button';
|
|
7
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
+
import { MatButtonModule, MatButton } from '@angular/material/button';
|
|
8
8
|
import { __decorate } from 'tslib';
|
|
9
9
|
import { debounceTime, catchError, switchMap, map, distinctUntilChanged, startWith, finalize, filter } from 'rxjs/operators';
|
|
10
10
|
import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
|
|
@@ -12,7 +12,7 @@ import * as i9 from '@angular/material/sort';
|
|
|
12
12
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
13
13
|
import * as i2 from '@angular/flex-layout/extended';
|
|
14
14
|
import * as i2$1 from '@angular/common';
|
|
15
|
-
import { CommonModule, DatePipe } from '@angular/common';
|
|
15
|
+
import { CommonModule, DatePipe, NgIf } from '@angular/common';
|
|
16
16
|
import * as i14 from 'ngx-infinite-scroll';
|
|
17
17
|
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
18
18
|
import * as i8 from '@angular/material/checkbox';
|
|
@@ -26,7 +26,7 @@ import { MatTableModule } from '@angular/material/table';
|
|
|
26
26
|
import * as i3 from 'ngx-doc-viewer';
|
|
27
27
|
import { NgxDocViewerModule } from 'ngx-doc-viewer';
|
|
28
28
|
import * as i10 from '@angular/material/card';
|
|
29
|
-
import { MatCardModule } from '@angular/material/card';
|
|
29
|
+
import { MatCardModule, MatCardContent, MatCard, MatCardTitle } from '@angular/material/card';
|
|
30
30
|
import * as i1$4 from '@angular/forms';
|
|
31
31
|
import { UntypedFormControl, Validators, ReactiveFormsModule, FormsModule, NG_VALUE_ACCESSOR, FormControl } from '@angular/forms';
|
|
32
32
|
import * as i1$2 from '@angular/common/http';
|
|
@@ -35,9 +35,9 @@ import { throwError, Observable, Subject, of, BehaviorSubject, map as map$1, Sub
|
|
|
35
35
|
import * as i1$1 from '@angular/material/snack-bar';
|
|
36
36
|
import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
|
|
37
37
|
import * as i9$1 from '@angular/material/form-field';
|
|
38
|
-
import { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';
|
|
38
|
+
import { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule, MatFormField, MatLabel, MatError } from '@angular/material/form-field';
|
|
39
39
|
import * as i9$2 from '@angular/material/input';
|
|
40
|
-
import { MatInputModule } from '@angular/material/input';
|
|
40
|
+
import { MatInputModule, MatInput } from '@angular/material/input';
|
|
41
41
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
42
42
|
import { ENTER, COMMA } from '@angular/cdk/keycodes';
|
|
43
43
|
import * as i1$3 from '@angular/cdk/a11y';
|
|
@@ -12725,6 +12725,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
12725
12725
|
}]
|
|
12726
12726
|
}] });
|
|
12727
12727
|
|
|
12728
|
+
class FileUploadButtonComponent {
|
|
12729
|
+
constructor(entityFileService) {
|
|
12730
|
+
this.entityFileService = entityFileService;
|
|
12731
|
+
this.uploaded = new EventEmitter();
|
|
12732
|
+
this.DEFAULT_FILE_ID = 'file-upload-button';
|
|
12733
|
+
}
|
|
12734
|
+
async onFileChange(event) {
|
|
12735
|
+
if (event.target.files && event.target.files.length) {
|
|
12736
|
+
const fileArray = Array.from(event.target.files);
|
|
12737
|
+
const fileInput = document.getElementById(this.config?.fileId ?? this.DEFAULT_FILE_ID);
|
|
12738
|
+
fileInput.value = '';
|
|
12739
|
+
this.isUploading = true;
|
|
12740
|
+
const results = await this.uploadFiles(fileArray);
|
|
12741
|
+
this.uploaded.emit(results);
|
|
12742
|
+
this.isUploading = false;
|
|
12743
|
+
}
|
|
12744
|
+
}
|
|
12745
|
+
selectFiles(event) {
|
|
12746
|
+
event.preventDefault();
|
|
12747
|
+
document
|
|
12748
|
+
.getElementById(this.config?.fileId ?? this.DEFAULT_FILE_ID)
|
|
12749
|
+
?.click();
|
|
12750
|
+
}
|
|
12751
|
+
async uploadFiles(files) {
|
|
12752
|
+
const uploadPromises = files.map((file) => this.entityFileService.uploadEntityFile(file));
|
|
12753
|
+
return await Promise.all(uploadPromises);
|
|
12754
|
+
}
|
|
12755
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadButtonComponent, deps: [{ token: EntityFileService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12756
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadButtonComponent, isStandalone: true, selector: "app-file-upload-button", inputs: { config: "config" }, outputs: { uploaded: "uploaded" }, ngImport: i0, template: "<button\n [disabled]=\"isUploading\"\n mat-stroked-button\n type=\"button\"\n (click)=\"selectFiles($event)\"\n>\n <mat-icon>attachment</mat-icon> Attach\n</button>\n\n<input\n type=\"file\"\n id=\"{{ config.fileId ?? DEFAULT_FILE_ID }}\"\n [accept]=\"config.accept ?? '*'\"\n (change)=\"onFileChange($event)\"\n [multiple]=\"config.multiple ?? false\"\n class=\"d-none\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
12757
|
+
}
|
|
12758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadButtonComponent, decorators: [{
|
|
12759
|
+
type: Component,
|
|
12760
|
+
args: [{ selector: 'app-file-upload-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], template: "<button\n [disabled]=\"isUploading\"\n mat-stroked-button\n type=\"button\"\n (click)=\"selectFiles($event)\"\n>\n <mat-icon>attachment</mat-icon> Attach\n</button>\n\n<input\n type=\"file\"\n id=\"{{ config.fileId ?? DEFAULT_FILE_ID }}\"\n [accept]=\"config.accept ?? '*'\"\n (change)=\"onFileChange($event)\"\n [multiple]=\"config.multiple ?? false\"\n class=\"d-none\"\n/>\n" }]
|
|
12761
|
+
}], ctorParameters: () => [{ type: EntityFileService }], propDecorators: { config: [{
|
|
12762
|
+
type: Input
|
|
12763
|
+
}], uploaded: [{
|
|
12764
|
+
type: Output
|
|
12765
|
+
}] } });
|
|
12766
|
+
|
|
12767
|
+
class ImagePreviewComponent {
|
|
12768
|
+
constructor() {
|
|
12769
|
+
this.height = 100;
|
|
12770
|
+
this.removed = new EventEmitter();
|
|
12771
|
+
}
|
|
12772
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImagePreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12773
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImagePreviewComponent, isStandalone: true, selector: "app-image-preview", inputs: { path: "path", height: "height" }, outputs: { removed: "removed" }, ngImport: i0, template: "<img\n *ngIf=\"path\"\n [src]=\"path\" [alt]=\"path\"\n [style.height.px]=\"height\"\n class=\"img-thumbnail\"\n>\n<mat-icon (click)=\"removed.emit()\" class=\"cursor-pointer\">close</mat-icon>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
12774
|
+
}
|
|
12775
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImagePreviewComponent, decorators: [{
|
|
12776
|
+
type: Component,
|
|
12777
|
+
args: [{ selector: 'app-image-preview', standalone: true, imports: [
|
|
12778
|
+
NgIf,
|
|
12779
|
+
MatIcon
|
|
12780
|
+
], template: "<img\n *ngIf=\"path\"\n [src]=\"path\" [alt]=\"path\"\n [style.height.px]=\"height\"\n class=\"img-thumbnail\"\n>\n<mat-icon (click)=\"removed.emit()\" class=\"cursor-pointer\">close</mat-icon>\n" }]
|
|
12781
|
+
}], propDecorators: { path: [{
|
|
12782
|
+
type: Input
|
|
12783
|
+
}], height: [{
|
|
12784
|
+
type: Input
|
|
12785
|
+
}], removed: [{
|
|
12786
|
+
type: Output
|
|
12787
|
+
}] } });
|
|
12788
|
+
|
|
12789
|
+
class ClientService extends TechlifyServiceBaseClass {
|
|
12790
|
+
constructor(httpService) {
|
|
12791
|
+
super(httpService, 'clients');
|
|
12792
|
+
this.httpService = httpService;
|
|
12793
|
+
}
|
|
12794
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClientService, deps: [{ token: HttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12795
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClientService, providedIn: 'root' }); }
|
|
12796
|
+
}
|
|
12797
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClientService, decorators: [{
|
|
12798
|
+
type: Injectable,
|
|
12799
|
+
args: [{
|
|
12800
|
+
providedIn: 'root'
|
|
12801
|
+
}]
|
|
12802
|
+
}], ctorParameters: () => [{ type: HttpService }] });
|
|
12803
|
+
|
|
12804
|
+
class CompanyInformationComponent extends TechlifyFormComponentInterface {
|
|
12805
|
+
constructor(formValidatorService, formBuilder, currentUserService, clientService, alertService, location) {
|
|
12806
|
+
super(formValidatorService);
|
|
12807
|
+
this.formBuilder = formBuilder;
|
|
12808
|
+
this.currentUserService = currentUserService;
|
|
12809
|
+
this.clientService = clientService;
|
|
12810
|
+
this.alertService = alertService;
|
|
12811
|
+
this.location = location;
|
|
12812
|
+
this.errorMessages = {
|
|
12813
|
+
name: {
|
|
12814
|
+
required: 'The name field is required.'
|
|
12815
|
+
}
|
|
12816
|
+
};
|
|
12817
|
+
this.form = this.formBuilder.group({
|
|
12818
|
+
id: [''],
|
|
12819
|
+
name: ['', Validators.required],
|
|
12820
|
+
email: [''],
|
|
12821
|
+
phone: [''],
|
|
12822
|
+
address: [''],
|
|
12823
|
+
logo: [''],
|
|
12824
|
+
letterhead_image: [''],
|
|
12825
|
+
tin: ['']
|
|
12826
|
+
});
|
|
12827
|
+
}
|
|
12828
|
+
ngOnInit() {
|
|
12829
|
+
this.user = this.currentUserService.getUser();
|
|
12830
|
+
const client = this.user?.client;
|
|
12831
|
+
if (client) {
|
|
12832
|
+
this.form.patchValue({ ...client });
|
|
12833
|
+
}
|
|
12834
|
+
}
|
|
12835
|
+
save() {
|
|
12836
|
+
this.form.markAllAsTouched();
|
|
12837
|
+
if (this.form.invalid) {
|
|
12838
|
+
this.alertService.addAlert('Please check the form for errors.', 'error');
|
|
12839
|
+
return;
|
|
12840
|
+
}
|
|
12841
|
+
const data = { ...this.form.value };
|
|
12842
|
+
this.isWorking = true;
|
|
12843
|
+
this.clientService.update(data).subscribe({
|
|
12844
|
+
next: () => {
|
|
12845
|
+
this.isWorking = false;
|
|
12846
|
+
// update user
|
|
12847
|
+
this.currentUserService.getUserObservable(true).subscribe();
|
|
12848
|
+
this.alertService.addAlert('The company information saved successfully!', 'success');
|
|
12849
|
+
},
|
|
12850
|
+
error: () => (this.isWorking = false)
|
|
12851
|
+
});
|
|
12852
|
+
}
|
|
12853
|
+
onFileUploaded(uploadedFile, field) {
|
|
12854
|
+
if (uploadedFile && uploadedFile.length > 0) {
|
|
12855
|
+
this.form.get(field)?.patchValue(uploadedFile[0]?.item?.url);
|
|
12856
|
+
}
|
|
12857
|
+
}
|
|
12858
|
+
redirectBack() {
|
|
12859
|
+
this.location.back();
|
|
12860
|
+
}
|
|
12861
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompanyInformationComponent, deps: [{ token: FormValidatorService }, { token: i1$4.FormBuilder }, { token: CurrentUserService }, { token: ClientService }, { token: AlertService }, { token: i2$1.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12862
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CompanyInformationComponent, isStandalone: true, selector: "app-company-information", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center\">\n <mat-card style=\"width: 50%\">\n <mat-card-content>\n <mat-card-title>Company Information</mat-card-title>\n </mat-card-content>\n <mat-card-content class=\"mt-3\">\n <form\n [formGroup]=\"form\"\n class=\"d-flex flex-wrap justify-content-start align-items-center gap-2\"\n (submit)=\"save()\"\n >\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Name</mat-label>\n <input matInput formControlName=\"name\">\n <mat-error *ngIf=\"isFieldValid('name')\">\n {{ getErrorMessage('name') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n <mat-label>Email</mat-label>\n <input matInput formControlName=\"email\">\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(50%)\">\n <mat-label>Phone</mat-label>\n <input matInput formControlName=\"phone\">\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Address</mat-label>\n <textarea matInput formControlName=\"address\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>TIN</mat-label>\n <input matInput formControlName=\"tin\">\n </mat-form-field>\n\n <div style=\"width: calc(50% - 0.5rem)\">\n <p>Logo</p>\n <app-file-upload-button\n *ngIf=\"!form?.value?.logo\"\n [config]=\"{ fileId: 'client-logo-' + this.form.value?.id, accept: 'image/*'}\"\n (uploaded)=\"onFileUploaded($event, 'logo')\"\n ></app-file-upload-button>\n <app-image-preview\n *ngIf=\"form.value?.logo\"\n [path]=\"form.value?.logo\"\n (removed)=\"form.get('logo')?.setValue('')\"\n ></app-image-preview>\n </div>\n\n <div style=\"width: calc(50% - 0.5rem)\">\n <p>Letterhead Image</p>\n <app-file-upload-button\n *ngIf=\"!form.value?.letterhead_image\"\n [config]=\"{ fileId: 'client-letterhead-' + this.form.value?.id, accept: 'image/*'}\"\n (uploaded)=\"onFileUploaded($event, 'letterhead_image')\"\n ></app-file-upload-button>\n <app-image-preview\n *ngIf=\"form.value?.letterhead_image\"\n [path]=\"form.value?.letterhead_image\"\n (removed)=\"form.get('letterhead_image')?.setValue('')\"\n ></app-image-preview>\n </div>\n\n <div style=\"width: calc(100%)\" class=\"d-flex justify-content-end align-items-center gap-3\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">\n Save\n </button>\n <button [disabled]=\"isWorking\" mat-flat-button type=\"button\" (click)=\"redirectBack()\">\n Cancel\n </button>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: 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: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.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: FileUploadButtonComponent, selector: "app-file-upload-button", inputs: ["config"], outputs: ["uploaded"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: ImagePreviewComponent, selector: "app-image-preview", inputs: ["path", "height"], outputs: ["removed"] }] }); }
|
|
12863
|
+
}
|
|
12864
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompanyInformationComponent, decorators: [{
|
|
12865
|
+
type: Component,
|
|
12866
|
+
args: [{ selector: 'app-company-information', standalone: true, imports: [
|
|
12867
|
+
MatCardContent,
|
|
12868
|
+
MatCard,
|
|
12869
|
+
MatCardTitle,
|
|
12870
|
+
MatFormField,
|
|
12871
|
+
MatLabel,
|
|
12872
|
+
MatInput,
|
|
12873
|
+
MatButton,
|
|
12874
|
+
ReactiveFormsModule,
|
|
12875
|
+
FileUploadButtonComponent,
|
|
12876
|
+
NgIf,
|
|
12877
|
+
MatError,
|
|
12878
|
+
ImagePreviewComponent,
|
|
12879
|
+
], template: "<div class=\"d-flex justify-content-center align-items-center\">\n <mat-card style=\"width: 50%\">\n <mat-card-content>\n <mat-card-title>Company Information</mat-card-title>\n </mat-card-content>\n <mat-card-content class=\"mt-3\">\n <form\n [formGroup]=\"form\"\n class=\"d-flex flex-wrap justify-content-start align-items-center gap-2\"\n (submit)=\"save()\"\n >\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Name</mat-label>\n <input matInput formControlName=\"name\">\n <mat-error *ngIf=\"isFieldValid('name')\">\n {{ getErrorMessage('name') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n <mat-label>Email</mat-label>\n <input matInput formControlName=\"email\">\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(50%)\">\n <mat-label>Phone</mat-label>\n <input matInput formControlName=\"phone\">\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Address</mat-label>\n <textarea matInput formControlName=\"address\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>TIN</mat-label>\n <input matInput formControlName=\"tin\">\n </mat-form-field>\n\n <div style=\"width: calc(50% - 0.5rem)\">\n <p>Logo</p>\n <app-file-upload-button\n *ngIf=\"!form?.value?.logo\"\n [config]=\"{ fileId: 'client-logo-' + this.form.value?.id, accept: 'image/*'}\"\n (uploaded)=\"onFileUploaded($event, 'logo')\"\n ></app-file-upload-button>\n <app-image-preview\n *ngIf=\"form.value?.logo\"\n [path]=\"form.value?.logo\"\n (removed)=\"form.get('logo')?.setValue('')\"\n ></app-image-preview>\n </div>\n\n <div style=\"width: calc(50% - 0.5rem)\">\n <p>Letterhead Image</p>\n <app-file-upload-button\n *ngIf=\"!form.value?.letterhead_image\"\n [config]=\"{ fileId: 'client-letterhead-' + this.form.value?.id, accept: 'image/*'}\"\n (uploaded)=\"onFileUploaded($event, 'letterhead_image')\"\n ></app-file-upload-button>\n <app-image-preview\n *ngIf=\"form.value?.letterhead_image\"\n [path]=\"form.value?.letterhead_image\"\n (removed)=\"form.get('letterhead_image')?.setValue('')\"\n ></app-image-preview>\n </div>\n\n <div style=\"width: calc(100%)\" class=\"d-flex justify-content-end align-items-center gap-3\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">\n Save\n </button>\n <button [disabled]=\"isWorking\" mat-flat-button type=\"button\" (click)=\"redirectBack()\">\n Cancel\n </button>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n</div>\n" }]
|
|
12880
|
+
}], ctorParameters: () => [{ type: FormValidatorService }, { type: i1$4.FormBuilder }, { type: CurrentUserService }, { type: ClientService }, { type: AlertService }, { type: i2$1.Location }] });
|
|
12881
|
+
|
|
12882
|
+
class CompanyInfoDisplayComponent {
|
|
12883
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompanyInfoDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12884
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CompanyInfoDisplayComponent, isStandalone: true, selector: "app-company-info-display", inputs: { client: "client" }, ngImport: i0, template: "<div *ngIf=\"client\" class=\"d-flex justify-content-start align-items-start gap-2\">\n <img *ngIf=\"client?.logo\" [src]=\"client?.logo\" class=\"img img-thumbnail\" style=\"max-height: 75px\" alt=\"\">\n <div>\n <h3 class=\"text-dark mb-1\">{{ client?.name }}</h3>\n <p class=\"mb-1 text-secondary\" *ngIf=\"client?.address\">\n {{ client?.address }}\n </p>\n <p class=\"mb-1 text-secondary\" *ngIf=\"client?.phone\">\n {{ client?.phone }}\n </p>\n <p class=\"mb-1 text-secondary\" *ngIf=\"client?.email\">\n {{ client?.email }}\n </p>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
12885
|
+
}
|
|
12886
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompanyInfoDisplayComponent, decorators: [{
|
|
12887
|
+
type: Component,
|
|
12888
|
+
args: [{ selector: 'app-company-info-display', standalone: true, imports: [
|
|
12889
|
+
NgIf
|
|
12890
|
+
], template: "<div *ngIf=\"client\" class=\"d-flex justify-content-start align-items-start gap-2\">\n <img *ngIf=\"client?.logo\" [src]=\"client?.logo\" class=\"img img-thumbnail\" style=\"max-height: 75px\" alt=\"\">\n <div>\n <h3 class=\"text-dark mb-1\">{{ client?.name }}</h3>\n <p class=\"mb-1 text-secondary\" *ngIf=\"client?.address\">\n {{ client?.address }}\n </p>\n <p class=\"mb-1 text-secondary\" *ngIf=\"client?.phone\">\n {{ client?.phone }}\n </p>\n <p class=\"mb-1 text-secondary\" *ngIf=\"client?.email\">\n {{ client?.email }}\n </p>\n </div>\n</div>\n" }]
|
|
12891
|
+
}], propDecorators: { client: [{
|
|
12892
|
+
type: Input
|
|
12893
|
+
}] } });
|
|
12894
|
+
|
|
12728
12895
|
/*
|
|
12729
12896
|
* Public API Surface of ngx-techlify-core
|
|
12730
12897
|
*/
|
|
@@ -12733,5 +12900,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
12733
12900
|
* Generated bundle index. Do not edit.
|
|
12734
12901
|
*/
|
|
12735
12902
|
|
|
12736
|
-
export { AccessControlConfigModule, ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ChangePasswordModule, ColumnConfig, ColumnSelectorComponent, ColumnSelectorModule, CommentFormComponent, ConfigService, CoreModule, CredentialsService, CurrentUserService, DEFAULT_SELECTED_VALUE, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFileService, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDragdropUploaderComponent, FileDragdropUploaderModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FilterService, ForgotPasswordComponent, ForgotPasswordModule, ForgotPasswordRoutingModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginComponent, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, LoginModule, LoginRoutingModule, MaterialModule, MultiUserConfig, NgxTechlifyUsersModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberInputButtonComponent, NumberInputButtonModule, NumberSelector, PageEvent, Permission, PermissionModule, PermissionRoutingProvider, PermissionsManagementComponent, ProfileEditComponent, ProfileModule, ProfileRoutingModule, ReadMoreComponent, ReadMoreModule, RequestHelperService, ResetPasswordComponent, ResetPasswordModule, ResetPasswordRoutingModule, ResetPasswordService, RestrictorTypeSelectorComponent, RestrictorTypeSelectorModule, RestrictorsModule, Role, RoleFormButtonComponent, RoleFormComponent, RoleModule, RoleRoutingProvider, RoleService, RolesViewAllComponent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SignUpComponent, SignupModule, SignupRoutingModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyCompanySwitcherComponent, TechlifyCompanySwitcherModule, TechlifyConfig, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFormComponentInterface, TechlifyListingControllerInterface, TechlifyNotificationForUserComponent, TechlifyNotificationForUserModule, TechlifyNotificationForUserRoutingModule, TechlifyNotificationModule, TechlifyNotificationRoutingModule, TechlifyServiceBaseClass, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, TechlifyUpdateService, TechlifyUpdatesTeaserComponent, TechlifyUpdatesTeaserModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, User, UserClientEnableDisableButtonComponent, UserClientsListComponent, UserConfig, UserConfigService, UserDataService, UserEnableButtonComponent, UserExploreComponent, UserFormComponent, UserListPageConfig, UserModule, UserRoutingProvider, UserSelectorComponent, UserSelectorModule, UserService, UserSessionsComponent, UsersViewAllComponent, UtilityModule, ViewerConfig, calculateTimeline, esfur, estlr, esulr };
|
|
12903
|
+
export { AccessControlConfigModule, ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ChangePasswordModule, ClientService, ColumnConfig, ColumnSelectorComponent, ColumnSelectorModule, CommentFormComponent, CompanyInfoDisplayComponent, CompanyInformationComponent, ConfigService, CoreModule, CredentialsService, CurrentUserService, DEFAULT_SELECTED_VALUE, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFileService, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDragdropUploaderComponent, FileDragdropUploaderModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FilterService, ForgotPasswordComponent, ForgotPasswordModule, ForgotPasswordRoutingModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginComponent, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, LoginModule, LoginRoutingModule, MaterialModule, MultiUserConfig, NgxTechlifyUsersModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberInputButtonComponent, NumberInputButtonModule, NumberSelector, PageEvent, Permission, PermissionModule, PermissionRoutingProvider, PermissionsManagementComponent, ProfileEditComponent, ProfileModule, ProfileRoutingModule, ReadMoreComponent, ReadMoreModule, RequestHelperService, ResetPasswordComponent, ResetPasswordModule, ResetPasswordRoutingModule, ResetPasswordService, RestrictorTypeSelectorComponent, RestrictorTypeSelectorModule, RestrictorsModule, Role, RoleFormButtonComponent, RoleFormComponent, RoleModule, RoleRoutingProvider, RoleService, RolesViewAllComponent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SignUpComponent, SignupModule, SignupRoutingModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyCompanySwitcherComponent, TechlifyCompanySwitcherModule, TechlifyConfig, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFormComponentInterface, TechlifyListingControllerInterface, TechlifyNotificationForUserComponent, TechlifyNotificationForUserModule, TechlifyNotificationForUserRoutingModule, TechlifyNotificationModule, TechlifyNotificationRoutingModule, TechlifyServiceBaseClass, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, TechlifyUpdateService, TechlifyUpdatesTeaserComponent, TechlifyUpdatesTeaserModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, User, UserClientEnableDisableButtonComponent, UserClientsListComponent, UserConfig, UserConfigService, UserDataService, UserEnableButtonComponent, UserExploreComponent, UserFormComponent, UserListPageConfig, UserModule, UserRoutingProvider, UserSelectorComponent, UserSelectorModule, UserService, UserSessionsComponent, UsersViewAllComponent, UtilityModule, ViewerConfig, calculateTimeline, esfur, estlr, esulr };
|
|
12737
12904
|
//# sourceMappingURL=ngx-techlify-core.mjs.map
|