@unifylib/ui-lib 1.0.3

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.
Files changed (129) hide show
  1. package/README.md +0 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +12 -0
  4. package/src/lib/base-model/SearchStrConfig.ts +12 -0
  5. package/src/lib/base-model/api-response.ts +23 -0
  6. package/src/lib/base-model/audit-log-entry.ts +7 -0
  7. package/src/lib/base-model/button-action-settings.ts +25 -0
  8. package/src/lib/base-model/column-def.model.ts +34 -0
  9. package/src/lib/base-model/do-action-request.ts +11 -0
  10. package/src/lib/base-model/field-action.ts +7 -0
  11. package/src/lib/base-model/field-filter.model.ts +14 -0
  12. package/src/lib/base-model/field-info.ts +98 -0
  13. package/src/lib/base-model/field-predicate.model.ts +7 -0
  14. package/src/lib/base-model/filter-request.ts +27 -0
  15. package/src/lib/base-model/filter.model.ts +49 -0
  16. package/src/lib/base-model/get-items-list.ts +24 -0
  17. package/src/lib/base-model/index.ts +11 -0
  18. package/src/lib/base-model/lookupItem.ts +21 -0
  19. package/src/lib/base-model/null-snackmessage.ts +9 -0
  20. package/src/lib/base-model/page-info.ts +51 -0
  21. package/src/lib/base-model/report-request.model.ts +33 -0
  22. package/src/lib/base-model/response-envelop.model.ts +15 -0
  23. package/src/lib/base-model/snack-message.model.ts +14 -0
  24. package/src/lib/base-model/snackmessage-interface.ts +7 -0
  25. package/src/lib/base-model/table-column.interface.ts +29 -0
  26. package/src/lib/base-model/table-page-user-action.interface.ts +33 -0
  27. package/src/lib/base-model/workflow/workflow-steps.model.ts +9 -0
  28. package/src/lib/base-model/workflow/workflow.model.ts +52 -0
  29. package/src/lib/components/action-confirmation/action-confirmation.component.css +34 -0
  30. package/src/lib/components/action-confirmation/action-confirmation.component.html +18 -0
  31. package/src/lib/components/action-confirmation/action-confirmation.component.spec.ts +23 -0
  32. package/src/lib/components/action-confirmation/action-confirmation.component.ts +58 -0
  33. package/src/lib/components/activity-report-form/activity-report-form.component.html +109 -0
  34. package/src/lib/components/activity-report-form/activity-report-form.component.scss +0 -0
  35. package/src/lib/components/activity-report-form/activity-report-form.component.spec.ts +25 -0
  36. package/src/lib/components/activity-report-form/activity-report-form.component.ts +605 -0
  37. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.css +51 -0
  38. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.html +23 -0
  39. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.spec.ts +23 -0
  40. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.ts +69 -0
  41. package/src/lib/components/audit-log-list/audit-log.component.html +23 -0
  42. package/src/lib/components/audit-log-list/audit-log.component.scss +0 -0
  43. package/src/lib/components/audit-log-list/audit-log.component.spec.ts +25 -0
  44. package/src/lib/components/audit-log-list/audit-log.component.ts +116 -0
  45. package/src/lib/components/auto-complete/auto-complete.component.css +14 -0
  46. package/src/lib/components/auto-complete/auto-complete.component.html +29 -0
  47. package/src/lib/components/auto-complete/auto-complete.component.spec.ts +23 -0
  48. package/src/lib/components/auto-complete/auto-complete.component.ts +330 -0
  49. package/src/lib/components/base-form/base-form.component.html +58 -0
  50. package/src/lib/components/base-form/base-form.component.scss +0 -0
  51. package/src/lib/components/base-form/base-form.component.spec.ts +25 -0
  52. package/src/lib/components/base-form/base-form.component.ts +305 -0
  53. package/src/lib/components/base-form-canvas/base-form-canvas.component.css +22 -0
  54. package/src/lib/components/base-form-canvas/base-form-canvas.component.html +1006 -0
  55. package/src/lib/components/base-form-canvas/base-form-canvas.component.spec.ts +23 -0
  56. package/src/lib/components/base-form-canvas/base-form-canvas.component.ts +573 -0
  57. package/src/lib/components/base-input-dialog/base-input-dialog.component.css +0 -0
  58. package/src/lib/components/base-input-dialog/base-input-dialog.component.html +42 -0
  59. package/src/lib/components/base-input-dialog/base-input-dialog.component.spec.ts +23 -0
  60. package/src/lib/components/base-input-dialog/base-input-dialog.component.ts +78 -0
  61. package/src/lib/components/base-table/base-table.component.html +242 -0
  62. package/src/lib/components/base-table/base-table.component.scss +31 -0
  63. package/src/lib/components/base-table/base-table.component.spec.ts +25 -0
  64. package/src/lib/components/base-table/base-table.component.ts +568 -0
  65. package/src/lib/components/button-actions/button-actions.component.html +28 -0
  66. package/src/lib/components/button-actions/button-actions.component.scss +6 -0
  67. package/src/lib/components/button-actions/button-actions.component.spec.ts +23 -0
  68. package/src/lib/components/button-actions/button-actions.component.ts +72 -0
  69. package/src/lib/components/editable-base-table/editable-base-table.component.html +372 -0
  70. package/src/lib/components/editable-base-table/editable-base-table.component.scss +44 -0
  71. package/src/lib/components/editable-base-table/editable-base-table.component.spec.ts +25 -0
  72. package/src/lib/components/editable-base-table/editable-base-table.component.ts +570 -0
  73. package/src/lib/components/equation-builder/equation-builder.component.css +0 -0
  74. package/src/lib/components/equation-builder/equation-builder.component.html +31 -0
  75. package/src/lib/components/equation-builder/equation-builder.component.spec.ts +23 -0
  76. package/src/lib/components/equation-builder/equation-builder.component.ts +121 -0
  77. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.css +11 -0
  78. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.html +38 -0
  79. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.spec.ts +23 -0
  80. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.ts +317 -0
  81. package/src/lib/components/paginator/paginator.component.css +25 -0
  82. package/src/lib/components/paginator/paginator.component.html +34 -0
  83. package/src/lib/components/paginator/paginator.component.ts +94 -0
  84. package/src/lib/components/rejection-comment/action-comment.component.css +33 -0
  85. package/src/lib/components/rejection-comment/action-comment.component.html +46 -0
  86. package/src/lib/components/rejection-comment/action-comment.component.spec.ts +23 -0
  87. package/src/lib/components/rejection-comment/action-comment.component.ts +86 -0
  88. package/src/lib/components/report-details-dialog/report-details-dialog.component.css +17 -0
  89. package/src/lib/components/report-details-dialog/report-details-dialog.component.html +16 -0
  90. package/src/lib/components/report-details-dialog/report-details-dialog.component.spec.ts +23 -0
  91. package/src/lib/components/report-details-dialog/report-details-dialog.component.ts +113 -0
  92. package/src/lib/components/report-form/report-form.component.html +94 -0
  93. package/src/lib/components/report-form/report-form.component.scss +0 -0
  94. package/src/lib/components/report-form/report-form.component.spec.ts +25 -0
  95. package/src/lib/components/report-form/report-form.component.ts +588 -0
  96. package/src/lib/components/search-bar/search-bar.component.html +62 -0
  97. package/src/lib/components/search-bar/search-bar.component.scss +8 -0
  98. package/src/lib/components/search-bar/search-bar.component.spec.ts +25 -0
  99. package/src/lib/components/search-bar/search-bar.component.ts +70 -0
  100. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.css +54 -0
  101. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.html +22 -0
  102. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.spec.ts +23 -0
  103. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.ts +45 -0
  104. package/src/lib/components/shared-list/shared-list.component.css +0 -0
  105. package/src/lib/components/shared-list/shared-list.component.html +17 -0
  106. package/src/lib/components/shared-list/shared-list.component.spec.ts +23 -0
  107. package/src/lib/components/shared-list/shared-list.component.ts +53 -0
  108. package/src/lib/components/title-bar/title-bar.component.css +0 -0
  109. package/src/lib/components/title-bar/title-bar.component.css.map +1 -0
  110. package/src/lib/components/title-bar/title-bar.component.html +31 -0
  111. package/src/lib/components/title-bar/title-bar.component.scss +23 -0
  112. package/src/lib/components/title-bar/title-bar.component.spec.ts +23 -0
  113. package/src/lib/components/title-bar/title-bar.component.ts +119 -0
  114. package/src/lib/services/backend-service.ts +286 -0
  115. package/src/lib/services/index.ts +3 -0
  116. package/src/lib/services/top-panel.ts +17 -0
  117. package/src/lib/services/trigger-form.service.ts +11 -0
  118. package/src/lib/share-module/shared-module.ts +10 -0
  119. package/src/lib/styles/invoiceq-theme.scss +252 -0
  120. package/src/lib/styles/styles.scss +1723 -0
  121. package/src/lib/utils/base-utils.ts +102 -0
  122. package/src/lib/validators/date-range-validator.ts +31 -0
  123. package/src/lib/validators/index.ts +3 -0
  124. package/src/lib/validators/match-list.validator.ts +10 -0
  125. package/src/lib/validators/multi-email-validator.ts +15 -0
  126. package/src/public-api.ts +21 -0
  127. package/tsconfig.lib.json +15 -0
  128. package/tsconfig.lib.prod.json +11 -0
  129. package/tsconfig.spec.json +15 -0
@@ -0,0 +1,52 @@
1
+ import {WorkflowStep} from "./workflow-steps.model";
2
+
3
+ export class Workflow {
4
+ id: number;
5
+ corporateWorkflowId: number;
6
+ corporateId : number;
7
+ workflowProcessId: number;
8
+ workflowSteps : WorkflowStep[];
9
+ rejectionStrategy: 'TERMINATE' | 'STEP_BACK' | 'CREATE_STEP';
10
+ processName: string;
11
+
12
+ constructor(workflow: Workflow) {
13
+ this.id= workflow.id;
14
+ this.corporateWorkflowId= workflow.corporateWorkflowId;
15
+ this.corporateId = workflow.corporateId;
16
+ this.workflowProcessId = workflow.workflowProcessId;
17
+ this.workflowSteps = workflow.workflowSteps === undefined ? [] : workflow.workflowSteps;
18
+ this.processName = PROCESS_NAMES_MAP[this.workflowProcessId];
19
+ this.rejectionStrategy = workflow.rejectionStrategy;
20
+ }
21
+ }
22
+ export const PROCESS_NAMES_MAP: Record<number, string> = {
23
+ 1: 'Outward Invoices',
24
+ 2: 'Inward Invoices',
25
+ 5: 'Customers Management',
26
+ 6: 'Vendors Management',
27
+ 8: 'Payment',
28
+ 13: 'Users Management',
29
+ 14: 'Groups Management',
30
+ 19: 'Departments Management',
31
+ 22: 'Credit Notes',
32
+ 23: 'Debit Notes',
33
+ 30: 'Store Management',
34
+ 31: 'Branch Management ',
35
+ 32: 'Division Management',
36
+ 33: 'Product Management',
37
+ 34: 'Import Stock',
38
+ 35: 'Export Stock',
39
+ 36: 'Stock Damage',
40
+ 51: 'Internal Invoices',
41
+ 60: 'Purchase Request',
42
+ 61: 'Purchase Order',
43
+ 62: 'Request for Quotation',
44
+ 63: 'Proposal Evaluation',
45
+ 64: 'Proposal By Vendor'
46
+ };
47
+
48
+ export const SEQ_PROCESS_NAMES_MAP: Record<number, string> = {
49
+ 1: 'Outward Invoices / Invoice Number',
50
+ 100: 'Outward Invoices / ePayment Number',
51
+ 2: 'Inward Invoices'
52
+ };
@@ -0,0 +1,34 @@
1
+ .m-0{
2
+ margin: 0 !important;
3
+ }
4
+ .w-100{
5
+ width: 100%;
6
+ }
7
+ .form-style{
8
+ min-height: 12vh !important;
9
+ height: auto !important;
10
+ }
11
+ .text-red{
12
+ color: red !important;
13
+ }
14
+ .modal-footer{
15
+ margin-top: 5vh;
16
+ }
17
+ .overflow-hidden{
18
+ overflow: hidden;
19
+ }
20
+ .pad-top{
21
+ margin-top: -7px;
22
+ display: block;
23
+ }
24
+ .action-comment {
25
+ direction: rtl;
26
+ display: flex;
27
+ justify-content: space-between;
28
+ }
29
+ .material-icons {
30
+ color: #E22222;
31
+ }
32
+ textarea#warn::placeholder {
33
+ color: red;
34
+ }
@@ -0,0 +1,18 @@
1
+ <mat-dialog-content class="mat-typography" >
2
+ <p mat-dialog-title class="invoice-note-text invoice-section m-0" [dir]="direction">
3
+ {{ warningMsg | translate }}
4
+ </p>
5
+ </mat-dialog-content>
6
+
7
+ <mat-dialog-actions align="center" class="modal-footer">
8
+ <button mat-stroked-button color = 'warn'
9
+ (click)="cancel()" id="rejectActionLabel">
10
+ {{ rejectActionLabel | translate }}
11
+ </button>
12
+ <button mat-stroked-button color='primary'
13
+ (click)="commentAndClose()" id="acceptActionLabel">
14
+ {{ acceptActionLabel | translate }}
15
+ </button>
16
+
17
+ </mat-dialog-actions>
18
+
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { ActionConfirmationComponent } from './action-confirmation.component';
4
+
5
+ describe('ActionCommentComponent', () => {
6
+ let component: ActionConfirmationComponent;
7
+ let fixture: ComponentFixture<ActionConfirmationComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [ActionConfirmationComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(ActionConfirmationComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,58 @@
1
+ import {Component, HostBinding, HostListener, Inject, OnInit} from '@angular/core';
2
+ import {
3
+ MAT_DIALOG_DATA,
4
+ MatDialogActions,
5
+ MatDialogContent,
6
+ MatDialogRef,
7
+ MatDialogTitle
8
+ } from "@angular/material/dialog";
9
+ import {MatFormField} from "@angular/material/form-field";
10
+ import {TranslateModule} from "@ngx-translate/core";
11
+ import {MatButton} from "@angular/material/button";
12
+
13
+ @Component({
14
+ selector: 'app-action-confirmation',
15
+ standalone: true,
16
+ imports: [
17
+ MatDialogTitle,
18
+ MatFormField,
19
+ MatDialogContent,
20
+ TranslateModule,
21
+ MatDialogActions,
22
+ MatButton
23
+ ],
24
+ templateUrl: './action-confirmation.component.html',
25
+ styleUrl: './action-confirmation.component.css'
26
+ })
27
+ export class ActionConfirmationComponent implements OnInit {
28
+ acceptActionLabel : string =''
29
+ rejectActionLabel : string =''
30
+ warningMsg : string = '';
31
+ direction: 'ltr' | 'rtl' = 'ltr';
32
+ constructor(public dialogRef: MatDialogRef<ActionConfirmationComponent>,
33
+ @Inject(MAT_DIALOG_DATA) public data: any,
34
+ @Inject('securityManager') private securityManager: any) {
35
+ dialogRef.disableClose = true;
36
+ }
37
+ @HostListener('window:keyup.esc') onKeyUp() {
38
+ this.dialogRef.close();
39
+ }
40
+ ngOnInit(): void {
41
+ this.acceptActionLabel = this.data.acceptActionLabel || 'accept' ;
42
+ this.rejectActionLabel = this.data.rejectActionLabel || 'reject';
43
+ this.warningMsg = this.data.warningMsg || '';
44
+ this.direction = this.securityManager.getDir() ;
45
+ }
46
+
47
+
48
+ commentAndClose() {
49
+ this.dialogRef.close('accept');
50
+
51
+ return "";
52
+ }
53
+
54
+ cancel() {
55
+ this.dialogRef.close();
56
+ }
57
+
58
+ }
@@ -0,0 +1,109 @@
1
+ <div fxLayout="column" fxFlex="2" fxHide.lt-sm [ngStyle]="{'height':isMatchHeight() ? '30vh' : '88vh' }">
2
+
3
+ </div>
4
+
5
+ <div fxLayout="column" fxFlex="98">
6
+
7
+ <div fxLayout="row" fxLayoutAlign="start center" style="margin-bottom: 10px;">
8
+ <app-title-bar [pageTitle]="getTitle()" [newAction]="false"></app-title-bar>
9
+
10
+ <mat-icon
11
+ *ngIf="pageInfo?.hasHint"
12
+ [matTooltip]="pageInfo.labelsSection + '.hint' | translate"
13
+ matTooltipPosition="right"
14
+ color="primary"
15
+ style="cursor: pointer; margin-left: 10px;"
16
+ matTooltipClass="custom-tooltip">
17
+ help_outline
18
+ </mat-icon>
19
+ </div>
20
+ <app-base-form-canvas
21
+ [pageInfo]="pageInfo"
22
+ [fields]="fields"
23
+ [editable]="isEditable"
24
+ [errors]="errors"
25
+ [item]="this.reportForm?.value || {}"
26
+ (formUpdated)="updateForm($event)"
27
+ ></app-base-form-canvas>
28
+
29
+ <div fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="start start" fxLayoutAlign.lt-sm="center start"
30
+ class="main-form-canvas"
31
+ style="margin-top: 3vh; width: 100%">
32
+
33
+ <div fxLayout="column" fxFlex="49">
34
+ <div fxLayout="row" fxLayoutAlign="start center" fxFlex="100">
35
+ <button *ngIf="activeLevel === 1" color="primary" mat-flat-button (click)="doAction(x)"
36
+ [disabled]="!isValidForm()"
37
+ style="font-weight: bold;min-width: 140px; max-width: 200px; margin: 0 10px;">
38
+ {{ 'REPORTS.generate' | translate }}
39
+ </button>
40
+ <button style="font-weight: bold;min-width: 180px ;max-width: 200px;" mat-raised-button [matMenuTriggerFor]="menu"
41
+ [disabled]="getIsEmptyList()"
42
+ color="primary" class="btn-none-background-primary">
43
+ {{ 'extract' | translate }}
44
+ <mat-icon class="expand_more actionButton__expand">expand_more</mat-icon>
45
+ </button>
46
+ <button
47
+ mat-flat-button
48
+ (click)="clear()"
49
+ [disabled]="isFormEmpty() || activeLevel > 1"
50
+ style="font-weight: bold; min-width: 140px; max-width: 200px; margin: 0 10px; ">
51
+ {{ 'REPORTS.clear' | translate }}
52
+ </button>
53
+
54
+ <button *ngIf="activeLevel === 1 && drillDownEnabled()" color="warn" mat-flat-button (click)="drillDown()"
55
+ style="font-weight: bold;min-width: 140px; max-width: 200px; margin: 0 10px;">
56
+ {{ drillDownLabel() | translate }}
57
+ </button>
58
+ <button *ngIf="activeLevel > 1 && !(isComparisonReport && activeLevel == 2)" color="warn" mat-flat-button (click)="goUp()"
59
+ style="font-weight: bold;min-width: 140px; max-width: 200px; margin: 0 10px;">
60
+ {{ 'REPORTS.up' | translate }}
61
+ </button>
62
+
63
+ </div>
64
+ </div>
65
+ <div fxLayout="column" fxFlex="49"></div>
66
+ </div>
67
+ <div *ngIf="activeLevel === 1" fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="start start" fxLayoutAlign.lt-sm="center start"
68
+ class="main-form-canvas"
69
+ style="margin-top: 3vh; width: 100%">
70
+ <div fxLayout="column" fxFlex="100">
71
+ <app-base-table [pageInfo]="pageInfo" [columns]="columnsDefinition" [enforceRefresh]="reloadData" id="parent"
72
+ [reportRequest]="reportRequest" (userAction)="emitUserAction($event)" (hyperLinkAction)="emitHyperLinkAction($event)"></app-base-table>
73
+ </div>
74
+ </div>
75
+ <div *ngIf="activeLevel === 2" fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="start start" fxLayoutAlign.lt-sm="center start"
76
+ class="main-form-canvas"
77
+ style="margin-top: 3vh; width: 100%">
78
+ <div fxLayout="column" fxFlex="100">
79
+ <app-base-table [pageInfo]="drillDownPageInfo" [columns]="drillDownColumns " id="child"
80
+ [reportRequest]="reportRequest"
81
+ (userAction)="emitUserAction($event)" (hyperLinkAction)="emitHyperLinkAction($event)"></app-base-table>
82
+ </div>
83
+ </div>
84
+ <div *ngIf="activeLevel === 3" fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="start start" fxLayoutAlign.lt-sm="center start"
85
+ class="main-form-canvas"
86
+ style="margin-top: 3vh; width: 100%">
87
+ <div fxLayout="column" fxFlex="100">
88
+ <app-base-table [pageInfo]="drillDownPageInfo" [columns]="drillDownColumns" id="junior"
89
+ [reportRequest]="reportRequest" (userAction)="emitUserAction($event)" (hyperLinkAction)="emitHyperLinkAction($event)" ></app-base-table>
90
+ </div>
91
+ </div>
92
+ <div *ngIf="activeLevel === 4" fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="start start" fxLayoutAlign.lt-sm="center start"
93
+ class="main-form-canvas"
94
+ style="margin-top: 3vh; width: 100%">
95
+ <div fxLayout="column" fxFlex="100">
96
+ <app-base-table [pageInfo]="drillDownPageInfo" [columns]="drillDownColumns"
97
+ [reportRequest]="reportRequest" (userAction)="emitUserAction($event)" (hyperLinkAction)="emitHyperLinkAction($event)" ></app-base-table>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <mat-menu #menu="matMenu">
102
+ <button type="button"
103
+ mat-menu-item
104
+ *ngFor="let type of types"
105
+ (click)="extractReport(type)">
106
+ {{ type }}
107
+ </button>
108
+ </mat-menu>
109
+
@@ -0,0 +1,25 @@
1
+ import {ComponentFixture, TestBed} from '@angular/core/testing';
2
+
3
+ import {ActivityReportFormComponent} from './activity-report-form.component';
4
+
5
+ describe('BaseFormComponent', () => {
6
+ let component: ActivityReportFormComponent;
7
+ let fixture: ComponentFixture<ActivityReportFormComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ declarations: [ ActivityReportFormComponent ]
12
+ })
13
+ .compileComponents();
14
+ });
15
+
16
+ beforeEach(() => {
17
+ fixture = TestBed.createComponent(ActivityReportFormComponent);
18
+ component = fixture.componentInstance;
19
+ fixture.detectChanges();
20
+ });
21
+
22
+ it('should create', () => {
23
+ expect(component).toBeTruthy();
24
+ });
25
+ });