cat-documents-ng 1.0.6 → 1.0.8

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 (211) hide show
  1. package/README.md +322 -322
  2. package/Shared/components/confirmation-dialog/confirmation-dialog.component.d.ts +44 -0
  3. package/Shared/components/table-primary/table-primary.component.d.ts +31 -0
  4. package/Shared/components/table-primary/table-primary.model.d.ts +19 -0
  5. package/Shared/constant/ERROR.d.ts +52 -0
  6. package/Shared/constant/SHARED.d.ts +546 -0
  7. package/{src/Shared/constant/URLS.ts → Shared/constant/URLS.d.ts} +25 -31
  8. package/Shared/services/app-config.service.d.ts +51 -0
  9. package/{src/Shared/services/global-error.handler.ts → Shared/services/global-error.handler.d.ts} +9 -11
  10. package/Shared/services/session.service.d.ts +46 -0
  11. package/Shared/shared.module.d.ts +14 -0
  12. package/fesm2022/cat-documents-ng.mjs +11405 -0
  13. package/fesm2022/cat-documents-ng.mjs.map +1 -0
  14. package/index.d.ts +5 -0
  15. package/lib/document/components/document-actions/document-actions.component.d.ts +78 -0
  16. package/lib/document/components/document-container/document-container.component.d.ts +162 -0
  17. package/lib/document/components/document-content-viewer/document-content-viewer.component.d.ts +291 -0
  18. package/lib/document/components/document-history/document-history.component.d.ts +160 -0
  19. package/lib/document/components/document-list/document-list.component.d.ts +299 -0
  20. package/lib/document/components/document-list-item/document-list-item.component.d.ts +28 -0
  21. package/lib/document/components/document-search/document-search.component.d.ts +77 -0
  22. package/lib/document/components/document-status/document-status.component.d.ts +24 -0
  23. package/lib/document/components/document-upload/document-upload.component.d.ts +321 -0
  24. package/lib/document/components/document-viewer/document-viewer.component.d.ts +137 -0
  25. package/lib/document/components/document-zoom-controls/document-zoom-controls.component.d.ts +33 -0
  26. package/lib/document/components/documents-menu/documents-menu.component.d.ts +110 -0
  27. package/{src/lib/document/components/folder-block/folder-block.component.ts → lib/document/components/folder-block/folder-block.component.d.ts} +12 -28
  28. package/lib/document/components/folder-container/folder-container.component.d.ts +162 -0
  29. package/lib/document/components/linked-document/linked-document.component.d.ts +39 -0
  30. package/lib/document/components/request-document/request-document.component.d.ts +69 -0
  31. package/lib/document/components/sidebar/sidebar.component.d.ts +109 -0
  32. package/lib/document/components/user-list/user-list.component.d.ts +34 -0
  33. package/lib/document/constant/DOCUMENT_HISTORY.d.ts +41 -0
  34. package/lib/document/directives/document.directive.d.ts +20 -0
  35. package/lib/document/directives/permission.directive.d.ts +38 -0
  36. package/lib/document/document.module.d.ts +60 -0
  37. package/{src/lib/document/models/document-alert.model.ts → lib/document/models/document-alert.model.d.ts} +4 -11
  38. package/lib/document/models/document-category.model.d.ts +24 -0
  39. package/lib/document/models/document-history.model.d.ts +94 -0
  40. package/lib/document/models/document-list-response.model.d.ts +33 -0
  41. package/lib/document/models/document-type.model.d.ts +37 -0
  42. package/lib/document/models/document.model.d.ts +44 -0
  43. package/{src/lib/document/models/folder.model.ts → lib/document/models/folder.model.d.ts} +4 -10
  44. package/lib/document/models/status-data.model.d.ts +27 -0
  45. package/lib/document/models/uploaded-file-response.model.d.ts +7 -0
  46. package/lib/document/models/user-list.model.d.ts +8 -0
  47. package/lib/document/services/csv-parser.service.d.ts +88 -0
  48. package/lib/document/services/document-actions.service.d.ts +48 -0
  49. package/lib/document/services/document-content-type.service.d.ts +85 -0
  50. package/lib/document/services/document-history-style.service.d.ts +34 -0
  51. package/lib/document/services/document-history.service.d.ts +42 -0
  52. package/lib/document/services/document-http.service.d.ts +179 -0
  53. package/lib/document/services/document-list.service.d.ts +74 -0
  54. package/lib/document/services/document-menu.service.d.ts +122 -0
  55. package/lib/document/services/document-scroll.service.d.ts +55 -0
  56. package/lib/document/services/document-table-builder.service.d.ts +38 -0
  57. package/lib/document/services/document-upload-business.service.d.ts +107 -0
  58. package/lib/document/services/document-upload-data.service.d.ts +40 -0
  59. package/lib/document/services/document-upload-form.service.d.ts +41 -0
  60. package/lib/document/services/document-upload.service.d.ts +99 -0
  61. package/lib/document/services/document-viewer.service.d.ts +97 -0
  62. package/lib/document/services/document-zoom.service.d.ts +81 -0
  63. package/lib/document/services/document.service.d.ts +161 -0
  64. package/lib/document/services/eml-parser.service.d.ts +116 -0
  65. package/lib/document/services/excel-parser.service.d.ts +169 -0
  66. package/lib/document/services/file-format.service.d.ts +34 -0
  67. package/lib/document/services/status-calculator.service.d.ts +20 -0
  68. package/lib/document/services/user-list.service.d.ts +29 -0
  69. package/lib/document/state/document.query.d.ts +243 -0
  70. package/{src/lib/document/state/document.service.ts → lib/document/state/document.service.d.ts} +15 -46
  71. package/lib/document/state/document.state.d.ts +61 -0
  72. package/lib/document/state/document.store.d.ts +56 -0
  73. package/package.json +11 -5
  74. package/{src/public-api.ts → public-api.d.ts} +0 -4
  75. package/ng-package.json +0 -10
  76. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.html +0 -3
  77. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.scss +0 -13
  78. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.spec.ts +0 -70
  79. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.ts +0 -133
  80. package/src/Shared/components/table-primary/table-primary.component.html +0 -66
  81. package/src/Shared/components/table-primary/table-primary.component.scss +0 -227
  82. package/src/Shared/components/table-primary/table-primary.component.spec.ts +0 -23
  83. package/src/Shared/components/table-primary/table-primary.component.ts +0 -143
  84. package/src/Shared/components/table-primary/table-primary.model.ts +0 -21
  85. package/src/Shared/constant/ERROR.ts +0 -55
  86. package/src/Shared/constant/PERMISSIONS.ts +0 -17
  87. package/src/Shared/constant/SHARED.ts +0 -936
  88. package/src/Shared/services/app-config.service.spec.ts +0 -19
  89. package/src/Shared/services/app-config.service.ts +0 -73
  90. package/src/Shared/services/session.service.spec.ts +0 -16
  91. package/src/Shared/services/session.service.ts +0 -76
  92. package/src/Shared/shared.module.ts +0 -25
  93. package/src/lib/document/components/csv-viewer/csv-viewer.component.ts +0 -1
  94. package/src/lib/document/components/document-actions/document-actions.component.html +0 -59
  95. package/src/lib/document/components/document-actions/document-actions.component.scss +0 -362
  96. package/src/lib/document/components/document-actions/document-actions.component.spec.ts +0 -297
  97. package/src/lib/document/components/document-actions/document-actions.component.ts +0 -163
  98. package/src/lib/document/components/document-container/document-container.component.html +0 -36
  99. package/src/lib/document/components/document-container/document-container.component.scss +0 -144
  100. package/src/lib/document/components/document-container/document-container.component.spec.ts +0 -110
  101. package/src/lib/document/components/document-container/document-container.component.ts +0 -363
  102. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.html +0 -332
  103. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.scss +0 -1877
  104. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.spec.ts +0 -258
  105. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.ts +0 -664
  106. package/src/lib/document/components/document-history/document-history.component.html +0 -96
  107. package/src/lib/document/components/document-history/document-history.component.scss +0 -392
  108. package/src/lib/document/components/document-history/document-history.component.spec.ts +0 -93
  109. package/src/lib/document/components/document-history/document-history.component.ts +0 -373
  110. package/src/lib/document/components/document-list/document-list.component.html +0 -46
  111. package/src/lib/document/components/document-list/document-list.component.scss +0 -513
  112. package/src/lib/document/components/document-list/document-list.component.spec.ts +0 -486
  113. package/src/lib/document/components/document-list/document-list.component.ts +0 -682
  114. package/src/lib/document/components/document-list-item/document-list-item.component.html +0 -36
  115. package/src/lib/document/components/document-list-item/document-list-item.component.scss +0 -34
  116. package/src/lib/document/components/document-list-item/document-list-item.component.spec.ts +0 -75
  117. package/src/lib/document/components/document-list-item/document-list-item.component.ts +0 -40
  118. package/src/lib/document/components/document-search/document-search.component.html +0 -64
  119. package/src/lib/document/components/document-search/document-search.component.scss +0 -206
  120. package/src/lib/document/components/document-search/document-search.component.spec.ts +0 -82
  121. package/src/lib/document/components/document-search/document-search.component.ts +0 -163
  122. package/src/lib/document/components/document-status/document-status.component.html +0 -31
  123. package/src/lib/document/components/document-status/document-status.component.scss +0 -192
  124. package/src/lib/document/components/document-status/document-status.component.spec.ts +0 -23
  125. package/src/lib/document/components/document-status/document-status.component.ts +0 -87
  126. package/src/lib/document/components/document-upload/document-upload.component.html +0 -160
  127. package/src/lib/document/components/document-upload/document-upload.component.scss +0 -235
  128. package/src/lib/document/components/document-upload/document-upload.component.spec.ts +0 -95
  129. package/src/lib/document/components/document-upload/document-upload.component.ts +0 -668
  130. package/src/lib/document/components/document-viewer/document-viewer.component.html +0 -50
  131. package/src/lib/document/components/document-viewer/document-viewer.component.scss +0 -187
  132. package/src/lib/document/components/document-viewer/document-viewer.component.spec.ts +0 -79
  133. package/src/lib/document/components/document-viewer/document-viewer.component.ts +0 -261
  134. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.html +0 -48
  135. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.scss +0 -320
  136. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.spec.ts +0 -59
  137. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.ts +0 -150
  138. package/src/lib/document/components/documents-menu/documents-menu.component.html +0 -44
  139. package/src/lib/document/components/documents-menu/documents-menu.component.scss +0 -363
  140. package/src/lib/document/components/documents-menu/documents-menu.component.spec.ts +0 -23
  141. package/src/lib/document/components/documents-menu/documents-menu.component.ts +0 -316
  142. package/src/lib/document/components/folder-block/folder-block.component.html +0 -46
  143. package/src/lib/document/components/folder-block/folder-block.component.scss +0 -9
  144. package/src/lib/document/components/folder-block/folder-block.component.spec.ts +0 -70
  145. package/src/lib/document/components/folder-container/folder-container.component.html +0 -56
  146. package/src/lib/document/components/folder-container/folder-container.component.scss +0 -20
  147. package/src/lib/document/components/folder-container/folder-container.component.spec.ts +0 -27
  148. package/src/lib/document/components/folder-container/folder-container.component.ts +0 -328
  149. package/src/lib/document/components/linked-document/linked-document.component.html +0 -23
  150. package/src/lib/document/components/linked-document/linked-document.component.scss +0 -10
  151. package/src/lib/document/components/linked-document/linked-document.component.spec.ts +0 -61
  152. package/src/lib/document/components/linked-document/linked-document.component.ts +0 -49
  153. package/src/lib/document/components/request-document/request-document.component.html +0 -86
  154. package/src/lib/document/components/request-document/request-document.component.scss +0 -16
  155. package/src/lib/document/components/request-document/request-document.component.ts +0 -278
  156. package/src/lib/document/components/sidebar/sidebar.component.html +0 -75
  157. package/src/lib/document/components/sidebar/sidebar.component.scss +0 -157
  158. package/src/lib/document/components/sidebar/sidebar.component.spec.ts +0 -114
  159. package/src/lib/document/components/sidebar/sidebar.component.ts +0 -223
  160. package/src/lib/document/components/user-list/user-list.component.html +0 -33
  161. package/src/lib/document/components/user-list/user-list.component.scss +0 -118
  162. package/src/lib/document/components/user-list/user-list.component.spec.ts +0 -23
  163. package/src/lib/document/components/user-list/user-list.component.ts +0 -181
  164. package/src/lib/document/constant/DOCUMENT_HISTORY.ts +0 -52
  165. package/src/lib/document/directives/document.directive.ts +0 -32
  166. package/src/lib/document/directives/permission.directive.spec.ts +0 -0
  167. package/src/lib/document/directives/permission.directive.ts +0 -72
  168. package/src/lib/document/document.module.ts +0 -351
  169. package/src/lib/document/models/document-category.model.ts +0 -30
  170. package/src/lib/document/models/document-history.model.ts +0 -109
  171. package/src/lib/document/models/document-list-response.model.ts +0 -37
  172. package/src/lib/document/models/document-type.model.ts +0 -44
  173. package/src/lib/document/models/document.model.ts +0 -53
  174. package/src/lib/document/models/status-data.model.ts +0 -31
  175. package/src/lib/document/models/uploaded-file-response.model.ts +0 -7
  176. package/src/lib/document/models/user-list.model.ts +0 -10
  177. package/src/lib/document/services/csv-parser.service.spec.ts +0 -97
  178. package/src/lib/document/services/csv-parser.service.ts +0 -303
  179. package/src/lib/document/services/document-actions.service.ts +0 -125
  180. package/src/lib/document/services/document-content-type.service.ts +0 -193
  181. package/src/lib/document/services/document-history-style.service.ts +0 -138
  182. package/src/lib/document/services/document-history.service.ts +0 -129
  183. package/src/lib/document/services/document-http.service.spec.ts +0 -119
  184. package/src/lib/document/services/document-http.service.ts +0 -497
  185. package/src/lib/document/services/document-list.service.ts +0 -195
  186. package/src/lib/document/services/document-menu.service.ts +0 -277
  187. package/src/lib/document/services/document-scroll.service.ts +0 -138
  188. package/src/lib/document/services/document-severity.service.ts +0 -98
  189. package/src/lib/document/services/document-table-builder.service.ts +0 -82
  190. package/src/lib/document/services/document-upload-business.service.ts +0 -326
  191. package/src/lib/document/services/document-upload-data.service.ts +0 -82
  192. package/src/lib/document/services/document-upload-form.service.ts +0 -149
  193. package/src/lib/document/services/document-upload.service.spec.ts +0 -99
  194. package/src/lib/document/services/document-upload.service.ts +0 -209
  195. package/src/lib/document/services/document-viewer.service.ts +0 -279
  196. package/src/lib/document/services/document-zoom.service.spec.ts +0 -56
  197. package/src/lib/document/services/document-zoom.service.ts +0 -164
  198. package/src/lib/document/services/document.service.ts +0 -356
  199. package/src/lib/document/services/eml-parser.service.ts +0 -444
  200. package/src/lib/document/services/excel-parser.service.spec.ts +0 -66
  201. package/src/lib/document/services/excel-parser.service.ts +0 -483
  202. package/src/lib/document/services/file-format.service.spec.ts +0 -16
  203. package/src/lib/document/services/file-format.service.ts +0 -63
  204. package/src/lib/document/services/status-calculator.service.ts +0 -44
  205. package/src/lib/document/services/user-list.service.ts +0 -77
  206. package/src/lib/document/state/document.query.ts +0 -378
  207. package/src/lib/document/state/document.state.ts +0 -100
  208. package/src/lib/document/state/document.store.ts +0 -200
  209. package/tsconfig.lib.json +0 -15
  210. package/tsconfig.lib.prod.json +0 -11
  211. package/tsconfig.spec.json +0 -15
@@ -1,297 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { DocumentActionsComponent } from './document-actions.component';
3
- import { DocumentActionsService, DocumentAction } from '../../services/document-actions.service';
4
- import { DialogModule } from 'primeng/dialog';
5
- import { ButtonModule } from 'primeng/button';
6
- import { InputTextareaModule } from 'primeng/inputtextarea';
7
- import { FormsModule } from '@angular/forms';
8
- import { SHARED } from '../../../../Shared/constant/SHARED';
9
- import { SessionService } from '../../../../Shared/services/session.service';
10
-
11
- describe('DocumentActionsComponent', () => {
12
- let component: DocumentActionsComponent;
13
- let fixture: ComponentFixture<DocumentActionsComponent>;
14
- let mockSessionService: jasmine.SpyObj<SessionService>;
15
-
16
- beforeEach(async () => {
17
- const sessionServiceSpy = jasmine.createSpyObj('SessionService', ['getUserRole']);
18
-
19
- await TestBed.configureTestingModule({
20
- declarations: [ DocumentActionsComponent ],
21
- imports: [
22
- DialogModule,
23
- ButtonModule,
24
- InputTextareaModule,
25
- FormsModule
26
- ],
27
- providers: [
28
- DocumentActionsService,
29
- { provide: SessionService, useValue: sessionServiceSpy }
30
- ]
31
- })
32
- .compileComponents();
33
-
34
- fixture = TestBed.createComponent(DocumentActionsComponent);
35
- component = fixture.componentInstance;
36
- mockSessionService = TestBed.inject(SessionService) as jasmine.SpyObj<SessionService>;
37
- fixture.detectChanges();
38
- });
39
-
40
- it('should create', () => {
41
- expect(component).toBeTruthy();
42
- });
43
-
44
- it('should identify Team Leader role correctly', () => {
45
- mockSessionService.getUserRole.and.returnValue('TeamLeader');
46
- expect(component['isUserTeamLeader']()).toBe(true);
47
-
48
- mockSessionService.getUserRole.and.returnValue('User');
49
- expect(component['isUserTeamLeader']()).toBe(false);
50
- });
51
-
52
- it('should identify Underwriter role correctly', () => {
53
- mockSessionService.getUserRole.and.returnValue('Underwriter User');
54
- expect(component['isUserUnderwriter']()).toBe(true);
55
-
56
- mockSessionService.getUserRole.and.returnValue('User');
57
- expect(component['isUserUnderwriter']()).toBe(false);
58
- });
59
-
60
- it('should show accept dialog when accept button is clicked', () => {
61
- component.showApproveRejectActions = true;
62
- fixture.detectChanges();
63
-
64
- const acceptButton = fixture.nativeElement.querySelector('.accept-btn');
65
- acceptButton.click();
66
- fixture.detectChanges();
67
-
68
- expect(component.showAcceptDialog).toBe(true);
69
- });
70
-
71
- it('should show reject dialog when reject button is clicked', () => {
72
- component.showApproveRejectActions = true;
73
- fixture.detectChanges();
74
-
75
- const rejectButton = fixture.nativeElement.querySelector('.reject-btn');
76
- rejectButton.click();
77
- fixture.detectChanges();
78
-
79
- expect(component.showRejectDialog).toBe(true);
80
- });
81
-
82
- it('should emit action when accept is confirmed', () => {
83
- spyOn(component.actionPerformed, 'emit');
84
- component.acceptNote = 'Test acceptance note';
85
-
86
- component.onAcceptConfirm();
87
-
88
- expect(component.actionPerformed.emit).toHaveBeenCalledWith({
89
- type: SHARED.ACCEPT_ACTION,
90
- note: 'Test acceptance note'
91
- });
92
- expect(component.showAcceptDialog).toBe(false);
93
- expect(component.acceptNote).toBe('');
94
- });
95
-
96
- it('should emit action when reject is confirmed', () => {
97
- spyOn(component.actionPerformed, 'emit');
98
- component.rejectNote = 'Test rejection note';
99
-
100
- component.onRejectConfirm();
101
-
102
- expect(component.actionPerformed.emit).toHaveBeenCalledWith({
103
- type: SHARED.REJECT_ACTION,
104
- note: 'Test rejection note'
105
- });
106
- expect(component.showRejectDialog).toBe(false);
107
- expect(component.rejectNote).toBe('');
108
- });
109
-
110
- describe('Button disabled state', () => {
111
- it('should disable both buttons when document is approved (lowercase)', () => {
112
- component.currentStatus = SHARED.STATUS_ACCEPTED;
113
- fixture.detectChanges();
114
-
115
- expect(component.areButtonsDisabled).toBe(true);
116
- expect(component.isDocumentApproved).toBe(true);
117
- expect(component.isDocumentRejected).toBe(false);
118
- });
119
-
120
- it('should disable both buttons when document is approved (uppercase)', () => {
121
- component.currentStatus = SHARED.STATUS_APPROVED;
122
- fixture.detectChanges();
123
-
124
- expect(component.areButtonsDisabled).toBe(true);
125
- expect(component.isDocumentApproved).toBe(true);
126
- expect(component.isDocumentRejected).toBe(false);
127
- });
128
-
129
- it('should disable both buttons when document is rejected (lowercase)', () => {
130
- component.currentStatus = SHARED.STATUS_REJECTED_LOWERCASE;
131
- fixture.detectChanges();
132
-
133
- expect(component.areButtonsDisabled).toBe(true);
134
- expect(component.isDocumentApproved).toBe(false);
135
- expect(component.isDocumentRejected).toBe(true);
136
- });
137
-
138
- it('should disable both buttons when document is rejected (uppercase)', () => {
139
- component.currentStatus = SHARED.STATUS_REJECTED;
140
- fixture.detectChanges();
141
-
142
- expect(component.areButtonsDisabled).toBe(true);
143
- expect(component.isDocumentApproved).toBe(false);
144
- expect(component.isDocumentRejected).toBe(true);
145
- });
146
-
147
- it('should enable both buttons when document is pending', () => {
148
- component.currentStatus = SHARED.STATUS_PENDING;
149
- fixture.detectChanges();
150
-
151
- expect(component.areButtonsDisabled).toBe(false);
152
- expect(component.isDocumentApproved).toBe(false);
153
- expect(component.isDocumentRejected).toBe(false);
154
- });
155
-
156
- it('should handle undefined status gracefully', () => {
157
- component.currentStatus = undefined;
158
- fixture.detectChanges();
159
-
160
- expect(component.areButtonsDisabled).toBe(false);
161
- expect(component.isDocumentApproved).toBe(false);
162
- expect(component.isDocumentRejected).toBe(false);
163
- });
164
- });
165
-
166
- it('should emit delete action when delete button is clicked', () => {
167
- spyOn(component.actionPerformed, 'emit');
168
-
169
- component.onDeleteClick();
170
-
171
- expect(component.actionPerformed.emit).toHaveBeenCalledWith({
172
- type: SHARED.DELETE_ACTION
173
- });
174
- });
175
-
176
- it('should close dialogs when cancel is clicked', () => {
177
- component.showAcceptDialog = true;
178
- component.showRejectDialog = true;
179
- component.acceptNote = 'test';
180
- component.rejectNote = 'test';
181
-
182
- component.onCancel();
183
-
184
- expect(component.showAcceptDialog).toBe(false);
185
- expect(component.showRejectDialog).toBe(false);
186
- expect(component.acceptNote).toBe('');
187
- expect(component.rejectNote).toBe('');
188
- });
189
-
190
- it('should return correct card class based on status', () => {
191
- component.currentStatus = SHARED.STATUS_PENDING;
192
- component.ngOnChanges({});
193
- expect(component.cardClass).toBe(SHARED.CARD_PENDING);
194
-
195
- component.currentStatus = SHARED.STATUS_ACCEPTED;
196
- component.ngOnChanges({});
197
- expect(component.cardClass).toBe(SHARED.CARD_ACCEPTED);
198
-
199
- component.currentStatus = SHARED.STATUS_REJECTED_LOWERCASE;
200
- component.ngOnChanges({});
201
- expect(component.cardClass).toBe(SHARED.CARD_REJECTED);
202
- });
203
-
204
- it('should return correct button classes based on status', () => {
205
- component.currentStatus = SHARED.STATUS_PENDING;
206
- component.ngOnChanges({});
207
- expect(component.rejectButtonClass).toBe(SHARED.BUTTON_DEFAULT_REJECT);
208
- expect(component.acceptButtonClass).toBe(SHARED.BUTTON_DEFAULT_ACCEPT);
209
-
210
- component.currentStatus = SHARED.STATUS_ACCEPTED;
211
- component.ngOnChanges({});
212
- expect(component.rejectButtonClass).toBe(SHARED.BUTTON_SECONDARY_REJECT);
213
- expect(component.acceptButtonClass).toBe(SHARED.BUTTON_PRIMARY_ACCEPT);
214
-
215
- component.currentStatus = SHARED.STATUS_REJECTED_LOWERCASE;
216
- component.ngOnChanges({});
217
- expect(component.rejectButtonClass).toBe(SHARED.BUTTON_PRIMARY_REJECT);
218
- expect(component.acceptButtonClass).toBe(SHARED.BUTTON_SECONDARY_ACCEPT);
219
- });
220
-
221
- describe('Action Visibility Logic', () => {
222
- it('should show approve/reject actions when isUploaded is false', () => {
223
- component.isUploaded = false;
224
- component.currentStatus = SHARED.STATUS_PENDING;
225
- mockSessionService.getUserRole.and.returnValue('User');
226
-
227
- component.ngOnChanges({});
228
-
229
- expect(component.showApproveRejectActions).toBe(true);
230
- expect(component.showDeleteAction).toBe(false);
231
- expect(component.showNoActions).toBe(false);
232
- });
233
-
234
- it('should show delete action when isUploaded is true and user is Team Leader', () => {
235
- component.isUploaded = true;
236
- component.currentStatus = SHARED.STATUS_ACCEPTED;
237
- mockSessionService.getUserRole.and.returnValue('TeamLeader');
238
-
239
- component.ngOnChanges({});
240
-
241
- expect(component.showApproveRejectActions).toBe(false);
242
- expect(component.showDeleteAction).toBe(true);
243
- expect(component.showNoActions).toBe(false);
244
- });
245
-
246
- it('should show no actions when document is in pending status', () => {
247
- component.isUploaded = false;
248
- component.currentStatus = SHARED.STATUS_PENDING;
249
- mockSessionService.getUserRole.and.returnValue('User');
250
-
251
- component.ngOnChanges({});
252
-
253
- expect(component.showApproveRejectActions).toBe(false);
254
- expect(component.showDeleteAction).toBe(false);
255
- expect(component.showNoActions).toBe(true);
256
- });
257
-
258
- it('should show no actions when document is uploaded by UW and user is not Team Leader', () => {
259
- component.isUploaded = true;
260
- component.currentStatus = SHARED.STATUS_ACCEPTED;
261
- component.document = { uploadedBy: 'UW' };
262
- mockSessionService.getUserRole.and.returnValue('User');
263
-
264
- component.ngOnChanges({});
265
-
266
- expect(component.showApproveRejectActions).toBe(false);
267
- expect(component.showDeleteAction).toBe(false);
268
- expect(component.showNoActions).toBe(true);
269
- });
270
-
271
- it('should show delete action when document is uploaded by UW and user is Team Leader', () => {
272
- component.isUploaded = true;
273
- component.currentStatus = SHARED.STATUS_ACCEPTED;
274
- component.document = { uploadedBy: 'UW' };
275
- mockSessionService.getUserRole.and.returnValue('TeamLeader');
276
-
277
- component.ngOnChanges({});
278
-
279
- expect(component.showApproveRejectActions).toBe(false);
280
- expect(component.showDeleteAction).toBe(true);
281
- expect(component.showNoActions).toBe(false);
282
- });
283
-
284
- it('should show no actions when document is uploaded by UW and user is Underwriter', () => {
285
- component.isUploaded = true;
286
- component.currentStatus = SHARED.STATUS_ACCEPTED;
287
- component.document = { uploadedBy: 'UW' };
288
- mockSessionService.getUserRole.and.returnValue('Underwriter User');
289
-
290
- component.ngOnChanges({});
291
-
292
- expect(component.showApproveRejectActions).toBe(false);
293
- expect(component.showDeleteAction).toBe(false);
294
- expect(component.showNoActions).toBe(true);
295
- });
296
- });
297
- });
@@ -1,163 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
- import { SHARED } from '../../../../Shared/constant/SHARED';
3
- import { DocumentActionsService, DocumentAction } from '../../services/document-actions.service';
4
- import { SessionService } from '../../../../Shared/services/session.service';
5
-
6
- @Component({
7
- selector: 'document-actions',
8
- templateUrl: './document-actions.component.html',
9
- styleUrls: ['./document-actions.component.scss'],
10
- standalone: false
11
- })
12
- export class DocumentActionsComponent implements OnChanges {
13
- readonly SHARED = SHARED;
14
-
15
- @Input() document?: any;
16
- @Input() documentId?: string;
17
- @Input() currentStatus?: string;
18
- @Input() isLoading?: boolean = false;
19
- @Input() isUploaded?: boolean = false;
20
- @Input() statusId?: string;
21
- @Output() actionPerformed = new EventEmitter<DocumentAction>();
22
-
23
- showAcceptDialog = false;
24
- showRejectDialog = false;
25
- acceptNote = SHARED.EMPTY;
26
- private _rejectNote = SHARED.EMPTY;
27
- userRole: any = SHARED.EMPTY;
28
- // Action processing flags
29
- isAccepting = false;
30
- isRejecting = false;
31
-
32
- // Computed properties for template
33
- cardClass: string = SHARED.CARD_PENDING;
34
- rejectButtonClass: string = SHARED.BUTTON_DEFAULT_REJECT;
35
- acceptButtonClass: string = SHARED.BUTTON_DEFAULT_ACCEPT;
36
- isRejectNoteEmpty: boolean = true;
37
-
38
- // Action visibility computed properties
39
- showApproveRejectActions: boolean = false;
40
- showNoActions: boolean = false;
41
-
42
- constructor(
43
- private documentActionsService: DocumentActionsService,
44
- private sessionService: SessionService
45
- ) {}
46
-
47
- get rejectNote(): string {
48
- return this._rejectNote;
49
- }
50
-
51
- set rejectNote(value: string) {
52
- this._rejectNote = value;
53
- this.updateRejectNoteEmpty();
54
- }
55
-
56
- /**
57
- * Checks if both action buttons should be disabled
58
- * @returns {boolean} True if both buttons should be disabled
59
- */
60
- get areButtonsDisabled(): boolean {
61
- return this.isDocumentApproved || this.isDocumentRejected;
62
- }
63
-
64
- /**
65
- * Checks if the document is approved (case-insensitive)
66
- * @returns {boolean} True if document is approved
67
- */
68
- get isDocumentApproved(): boolean {
69
- return this.currentStatus?.toLowerCase() === SHARED.STATUS_ACCEPTED.toLowerCase() ||
70
- this.currentStatus?.toLowerCase() === SHARED.STATUS_APPROVED.toLowerCase();
71
- }
72
-
73
- /**
74
- * Checks if the document is rejected (case-insensitive)
75
- * @returns {boolean} True if document is rejected
76
- */
77
- get isDocumentRejected(): boolean {
78
- return this.currentStatus?.toLowerCase() === SHARED.STATUS_REJECTED_LOWERCASE.toLowerCase() ||
79
- this.currentStatus?.toLowerCase() === SHARED.STATUS_REJECTED.toLowerCase();
80
- }
81
-
82
- ngOnChanges(changes: SimpleChanges): void {
83
- this.updateComputedProperties();
84
- if (changes['isLoading'] && !this.isLoading) {
85
- this.resetActionFlags();
86
- }
87
- }
88
-
89
- /**
90
- * Updates computed properties based on currentStatus and statusId
91
- */
92
- private updateComputedProperties(): void {
93
- this.cardClass = this.documentActionsService.calculateCardClass(this.currentStatus, this.statusId);
94
- this.rejectButtonClass = this.documentActionsService.calculateRejectButtonClass(this.currentStatus, this.statusId);
95
- this.acceptButtonClass = this.documentActionsService.calculateAcceptButtonClass(this.currentStatus, this.statusId);
96
- this.updateRejectNoteEmpty();
97
- }
98
-
99
- /**
100
- * Checks if the current user is a Team Leader
101
- * @returns {boolean} True if user is Team Leader
102
- */
103
- isUserTeamLeader(): boolean {
104
- this.userRole = this.sessionService.getUserRole();
105
- return this.userRole === SHARED.TEAM_LEADER;
106
- }
107
-
108
- /**
109
- * Checks if the current user is an Underwriter
110
- * @returns {boolean} True if user is Underwriter
111
- */
112
- isUserUnderwriter(): boolean {
113
- this.userRole = this.sessionService.getUserRole();
114
- return this.userRole === SHARED.UNDERWRITER_USER;
115
- }
116
-
117
- /**
118
- * Updates the isRejectNoteEmpty property based on current rejectNote value
119
- */
120
- updateRejectNoteEmpty(): void {
121
- this.isRejectNoteEmpty = !this.rejectNote || this.rejectNote.trim() === SHARED.EMPTY;
122
- }
123
-
124
- /**
125
- * Resets the action processing flags
126
- */
127
- private resetActionFlags(): void {
128
- this.isAccepting = false;
129
- this.isRejecting = false;
130
- }
131
-
132
- onAcceptClick(): void {
133
- this.showAcceptDialog = true;
134
- }
135
-
136
- onRejectClick(): void {
137
- this.showRejectDialog = true;
138
- }
139
-
140
-
141
-
142
- onAcceptConfirm(): void {
143
- this.isAccepting = true;
144
- this.actionPerformed.emit(this.documentActionsService.createAcceptAction(this.acceptNote));
145
- this.acceptNote = SHARED.EMPTY;
146
- this.showAcceptDialog = false;
147
- }
148
-
149
- onRejectConfirm(): void {
150
- this.isRejecting = true;
151
- this.actionPerformed.emit(this.documentActionsService.createRejectAction(this.rejectNote));
152
- this.rejectNote = SHARED.EMPTY;
153
- this.showRejectDialog = false;
154
- }
155
-
156
- onCancel(): void {
157
- this.showAcceptDialog = false;
158
- this.showRejectDialog = false;
159
- this.acceptNote = SHARED.EMPTY;
160
- this.rejectNote = SHARED.EMPTY;
161
- }
162
-
163
- }
@@ -1,36 +0,0 @@
1
- <div class="grid m-0 flex document-container-layout">
2
- <div class="menu-panel col-12 md:col-2">
3
- <lib-documents-menu
4
- [catagories]="catagories"
5
- [applicationNumber]="applicationNumber"
6
- [contextId]="contextId"
7
- (menuItemSelected)="onMenuItemSelected($event)">
8
- </lib-documents-menu>
9
- </div>
10
-
11
- <div class="content-panel col-12 md:col-10" #contentScrollContainer>
12
- <div class="content-card">
13
- <lib-folder-container [contextId]="contextId" [userList]="userList" [statusData]="statusData" [categories]="catagories"></lib-folder-container>
14
- </div>
15
- <div>
16
- <lib-document-list
17
- [contextId]="contextId"
18
- [documentListResponse]="documentListResponse"
19
- [selectedMenuItemId]="selectedMenuItemId"
20
- [navigationInfo]="navigationInfo"
21
- (handleSelectedDocumentInNewTab)="onDocumentSelectedInNewTab($event)"
22
- (handleSelectedDocument)="onDocumentSelected($event)"
23
- >
24
- <ng-content></ng-content>
25
- </lib-document-list>
26
- </div>
27
- </div>
28
- <p-confirmDialog
29
- [style]="{width: '25vw'}"
30
- acceptLabel="Yes"
31
- rejectLabel="No"
32
- appendTo="body"
33
- acceptIcon="pi pi-check"
34
- rejectIcon="pi pi-times">
35
- </p-confirmDialog>
36
- </div>
@@ -1,144 +0,0 @@
1
- // Grid Layout Styles
2
- .document-container-layout {
3
- display: grid;
4
- grid-template-columns: 1fr;
5
- height: 98vh;
6
- overflow: auto;
7
- position: relative;
8
-
9
- @media (min-width: 768px) {
10
- grid-template-columns: 16.6667% 1fr;
11
- }
12
- }
13
-
14
- .menu-panel {
15
- background-color: #ffffff;
16
- overflow-y: auto;
17
- overflow-x: hidden;
18
-
19
- @media (min-width: 768px) {
20
- position: fixed;
21
- left: 0;
22
- top: 0;
23
- bottom: 0;
24
- width: 16.6667%;
25
- }
26
-
27
- // Hide scrollbar but maintain scroll functionality
28
- scrollbar-width: none; /* Firefox */
29
- -ms-overflow-style: none; /* IE and Edge */
30
-
31
- &::-webkit-scrollbar {
32
- display: none; /* Chrome, Safari and Opera */
33
- }
34
- }
35
-
36
- .content-panel {
37
- display: flex;
38
- flex-direction: column;
39
- height: 98vh;
40
- overflow-y: auto;
41
- overflow-x: hidden;
42
- padding: 0;
43
-
44
- @media (min-width: 768px) {
45
- margin-left: 16.6667%;
46
- }
47
-
48
- // Ensure this is the only scrollable container
49
- position: relative;
50
- z-index: 10; // Higher z-index for content
51
-
52
- // Hide scrollbar but maintain scroll functionality
53
- scrollbar-width: none; /* Firefox */
54
- -ms-overflow-style: none; /* IE and Edge */
55
-
56
- &::-webkit-scrollbar {
57
- display: none; /* Chrome, Safari and Opera */
58
- }
59
- }
60
-
61
- // Responsive design
62
- @media (max-width: 1024px) {
63
- .menu-panel {
64
- width: 240px;
65
- }
66
-
67
- .content-panel {
68
- margin-left: 240px;
69
- }
70
- }
71
-
72
- @media (max-width: 768px) {
73
- .document-container-layout {
74
- grid-template-columns: 1fr;
75
- }
76
-
77
- .menu-panel {
78
- position: relative;
79
- width: 100%;
80
- height: 200px;
81
- border-right: none;
82
- border-bottom: 1px solid #e5e7eb;
83
- z-index: auto; // Reset z-index on mobile
84
- }
85
-
86
- .content-panel {
87
- margin-left: 0;
88
- flex: 1;
89
- }
90
- }
91
-
92
- // Legacy scroll styles (keeping for backward compatibility)
93
- .custom-scroll{
94
- overflow-y: hidden;
95
- scrollbar-gutter: stable;
96
- }
97
-
98
- .custom-scroll:hover {
99
- overflow-y: auto;
100
- }
101
-
102
- // Ensure no double scrollbars
103
- * {
104
- scrollbar-width: thin;
105
- }
106
-
107
- // Remove problematic body overflow restrictions that break dialogs
108
- // body, html {
109
- // overflow: hidden;
110
- // height: 100%;
111
- // }
112
-
113
- // Override any conflicting scroll styles
114
- body, html {
115
- height: 100%;
116
- // Don't force overflow hidden as it breaks dialog positioning
117
- }
118
-
119
- // Override PrimeNG card styles that might cause scroll issues
120
- ::ng-deep .p-card {
121
- overflow: visible !important;
122
- }
123
-
124
- ::ng-deep .p-card-body {
125
- overflow: visible !important;
126
- }
127
-
128
- // Ensure dialogs appear above everything
129
- ::ng-deep .p-dialog {
130
- z-index: 9999 !important;
131
- }
132
-
133
- ::ng-deep .p-dialog-mask {
134
- z-index: 9998 !important;
135
- }
136
-
137
- // Ensure no nested scroll containers
138
- // ::ng-deep .content-panel * {
139
- // overflow: visible !important;
140
- // }
141
-
142
- ::ng-deep .content-panel .p-card {
143
- overflow: visible !important;
144
- }