cat-documents-ng 1.0.4 → 1.0.6

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 (210) hide show
  1. package/ng-package.json +10 -0
  2. package/package.json +5 -11
  3. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.html +3 -0
  4. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.scss +13 -0
  5. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.spec.ts +70 -0
  6. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.ts +133 -0
  7. package/src/Shared/components/table-primary/table-primary.component.html +66 -0
  8. package/src/Shared/components/table-primary/table-primary.component.scss +227 -0
  9. package/src/Shared/components/table-primary/table-primary.component.spec.ts +23 -0
  10. package/src/Shared/components/table-primary/table-primary.component.ts +143 -0
  11. package/src/Shared/components/table-primary/table-primary.model.ts +21 -0
  12. package/src/Shared/constant/ERROR.ts +55 -0
  13. package/src/Shared/constant/PERMISSIONS.ts +17 -0
  14. package/src/Shared/constant/SHARED.ts +936 -0
  15. package/{Shared/constant/URLS.d.ts → src/Shared/constant/URLS.ts} +31 -25
  16. package/src/Shared/services/app-config.service.spec.ts +19 -0
  17. package/src/Shared/services/app-config.service.ts +73 -0
  18. package/{Shared/services/global-error.handler.d.ts → src/Shared/services/global-error.handler.ts} +11 -9
  19. package/src/Shared/services/session.service.spec.ts +16 -0
  20. package/src/Shared/services/session.service.ts +76 -0
  21. package/src/Shared/shared.module.ts +25 -0
  22. package/src/lib/document/components/csv-viewer/csv-viewer.component.ts +1 -0
  23. package/src/lib/document/components/document-actions/document-actions.component.html +59 -0
  24. package/src/lib/document/components/document-actions/document-actions.component.scss +362 -0
  25. package/src/lib/document/components/document-actions/document-actions.component.spec.ts +297 -0
  26. package/src/lib/document/components/document-actions/document-actions.component.ts +163 -0
  27. package/src/lib/document/components/document-container/document-container.component.html +36 -0
  28. package/src/lib/document/components/document-container/document-container.component.scss +144 -0
  29. package/src/lib/document/components/document-container/document-container.component.spec.ts +110 -0
  30. package/src/lib/document/components/document-container/document-container.component.ts +363 -0
  31. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.html +332 -0
  32. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.scss +1877 -0
  33. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.spec.ts +258 -0
  34. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.ts +664 -0
  35. package/src/lib/document/components/document-history/document-history.component.html +96 -0
  36. package/src/lib/document/components/document-history/document-history.component.scss +392 -0
  37. package/src/lib/document/components/document-history/document-history.component.spec.ts +93 -0
  38. package/src/lib/document/components/document-history/document-history.component.ts +373 -0
  39. package/src/lib/document/components/document-list/document-list.component.html +46 -0
  40. package/src/lib/document/components/document-list/document-list.component.scss +513 -0
  41. package/src/lib/document/components/document-list/document-list.component.spec.ts +486 -0
  42. package/src/lib/document/components/document-list/document-list.component.ts +682 -0
  43. package/src/lib/document/components/document-list-item/document-list-item.component.html +36 -0
  44. package/src/lib/document/components/document-list-item/document-list-item.component.scss +34 -0
  45. package/src/lib/document/components/document-list-item/document-list-item.component.spec.ts +75 -0
  46. package/src/lib/document/components/document-list-item/document-list-item.component.ts +40 -0
  47. package/src/lib/document/components/document-search/document-search.component.html +64 -0
  48. package/src/lib/document/components/document-search/document-search.component.scss +206 -0
  49. package/src/lib/document/components/document-search/document-search.component.spec.ts +82 -0
  50. package/src/lib/document/components/document-search/document-search.component.ts +163 -0
  51. package/src/lib/document/components/document-status/document-status.component.html +31 -0
  52. package/src/lib/document/components/document-status/document-status.component.scss +192 -0
  53. package/src/lib/document/components/document-status/document-status.component.spec.ts +23 -0
  54. package/src/lib/document/components/document-status/document-status.component.ts +87 -0
  55. package/src/lib/document/components/document-upload/document-upload.component.html +160 -0
  56. package/src/lib/document/components/document-upload/document-upload.component.scss +235 -0
  57. package/src/lib/document/components/document-upload/document-upload.component.spec.ts +95 -0
  58. package/src/lib/document/components/document-upload/document-upload.component.ts +668 -0
  59. package/src/lib/document/components/document-viewer/document-viewer.component.html +50 -0
  60. package/src/lib/document/components/document-viewer/document-viewer.component.scss +187 -0
  61. package/src/lib/document/components/document-viewer/document-viewer.component.spec.ts +79 -0
  62. package/src/lib/document/components/document-viewer/document-viewer.component.ts +261 -0
  63. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.html +48 -0
  64. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.scss +320 -0
  65. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.spec.ts +59 -0
  66. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.ts +150 -0
  67. package/src/lib/document/components/documents-menu/documents-menu.component.html +44 -0
  68. package/src/lib/document/components/documents-menu/documents-menu.component.scss +363 -0
  69. package/src/lib/document/components/documents-menu/documents-menu.component.spec.ts +23 -0
  70. package/src/lib/document/components/documents-menu/documents-menu.component.ts +316 -0
  71. package/src/lib/document/components/folder-block/folder-block.component.html +46 -0
  72. package/src/lib/document/components/folder-block/folder-block.component.scss +9 -0
  73. package/src/lib/document/components/folder-block/folder-block.component.spec.ts +70 -0
  74. package/{lib/document/components/folder-block/folder-block.component.d.ts → src/lib/document/components/folder-block/folder-block.component.ts} +28 -12
  75. package/src/lib/document/components/folder-container/folder-container.component.html +56 -0
  76. package/src/lib/document/components/folder-container/folder-container.component.scss +20 -0
  77. package/src/lib/document/components/folder-container/folder-container.component.spec.ts +27 -0
  78. package/src/lib/document/components/folder-container/folder-container.component.ts +328 -0
  79. package/src/lib/document/components/linked-document/linked-document.component.html +23 -0
  80. package/src/lib/document/components/linked-document/linked-document.component.scss +10 -0
  81. package/src/lib/document/components/linked-document/linked-document.component.spec.ts +61 -0
  82. package/src/lib/document/components/linked-document/linked-document.component.ts +49 -0
  83. package/src/lib/document/components/request-document/request-document.component.html +86 -0
  84. package/src/lib/document/components/request-document/request-document.component.scss +16 -0
  85. package/src/lib/document/components/request-document/request-document.component.ts +278 -0
  86. package/src/lib/document/components/sidebar/sidebar.component.html +75 -0
  87. package/src/lib/document/components/sidebar/sidebar.component.scss +157 -0
  88. package/src/lib/document/components/sidebar/sidebar.component.spec.ts +114 -0
  89. package/src/lib/document/components/sidebar/sidebar.component.ts +223 -0
  90. package/src/lib/document/components/user-list/user-list.component.html +33 -0
  91. package/src/lib/document/components/user-list/user-list.component.scss +118 -0
  92. package/src/lib/document/components/user-list/user-list.component.spec.ts +23 -0
  93. package/src/lib/document/components/user-list/user-list.component.ts +181 -0
  94. package/src/lib/document/constant/DOCUMENT_HISTORY.ts +52 -0
  95. package/src/lib/document/directives/document.directive.ts +32 -0
  96. package/src/lib/document/directives/permission.directive.spec.ts +0 -0
  97. package/src/lib/document/directives/permission.directive.ts +72 -0
  98. package/src/lib/document/document.module.ts +351 -0
  99. package/{lib/document/models/document-alert.model.d.ts → src/lib/document/models/document-alert.model.ts} +11 -4
  100. package/src/lib/document/models/document-category.model.ts +30 -0
  101. package/src/lib/document/models/document-history.model.ts +109 -0
  102. package/src/lib/document/models/document-list-response.model.ts +37 -0
  103. package/src/lib/document/models/document-type.model.ts +44 -0
  104. package/src/lib/document/models/document.model.ts +53 -0
  105. package/{lib/document/models/folder.model.d.ts → src/lib/document/models/folder.model.ts} +10 -4
  106. package/src/lib/document/models/status-data.model.ts +31 -0
  107. package/src/lib/document/models/uploaded-file-response.model.ts +7 -0
  108. package/src/lib/document/models/user-list.model.ts +10 -0
  109. package/src/lib/document/services/csv-parser.service.spec.ts +97 -0
  110. package/src/lib/document/services/csv-parser.service.ts +303 -0
  111. package/src/lib/document/services/document-actions.service.ts +125 -0
  112. package/src/lib/document/services/document-content-type.service.ts +193 -0
  113. package/src/lib/document/services/document-history-style.service.ts +138 -0
  114. package/src/lib/document/services/document-history.service.ts +129 -0
  115. package/src/lib/document/services/document-http.service.spec.ts +119 -0
  116. package/src/lib/document/services/document-http.service.ts +497 -0
  117. package/src/lib/document/services/document-list.service.ts +195 -0
  118. package/src/lib/document/services/document-menu.service.ts +277 -0
  119. package/src/lib/document/services/document-scroll.service.ts +138 -0
  120. package/src/lib/document/services/document-severity.service.ts +98 -0
  121. package/src/lib/document/services/document-table-builder.service.ts +82 -0
  122. package/src/lib/document/services/document-upload-business.service.ts +326 -0
  123. package/src/lib/document/services/document-upload-data.service.ts +82 -0
  124. package/src/lib/document/services/document-upload-form.service.ts +149 -0
  125. package/src/lib/document/services/document-upload.service.spec.ts +99 -0
  126. package/src/lib/document/services/document-upload.service.ts +209 -0
  127. package/src/lib/document/services/document-viewer.service.ts +279 -0
  128. package/src/lib/document/services/document-zoom.service.spec.ts +56 -0
  129. package/src/lib/document/services/document-zoom.service.ts +164 -0
  130. package/src/lib/document/services/document.service.ts +356 -0
  131. package/src/lib/document/services/eml-parser.service.ts +444 -0
  132. package/src/lib/document/services/excel-parser.service.spec.ts +66 -0
  133. package/src/lib/document/services/excel-parser.service.ts +483 -0
  134. package/src/lib/document/services/file-format.service.spec.ts +16 -0
  135. package/src/lib/document/services/file-format.service.ts +63 -0
  136. package/src/lib/document/services/status-calculator.service.ts +44 -0
  137. package/src/lib/document/services/user-list.service.ts +77 -0
  138. package/src/lib/document/state/document.query.ts +378 -0
  139. package/{lib/document/state/document.service.d.ts → src/lib/document/state/document.service.ts} +46 -15
  140. package/src/lib/document/state/document.state.ts +100 -0
  141. package/src/lib/document/state/document.store.ts +200 -0
  142. package/{public-api.d.ts → src/public-api.ts} +4 -0
  143. package/tsconfig.lib.json +15 -0
  144. package/tsconfig.lib.prod.json +11 -0
  145. package/tsconfig.spec.json +15 -0
  146. package/Shared/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -44
  147. package/Shared/components/table-primary/table-primary.component.d.ts +0 -31
  148. package/Shared/components/table-primary/table-primary.model.d.ts +0 -19
  149. package/Shared/constant/ERROR.d.ts +0 -52
  150. package/Shared/constant/SHARED.d.ts +0 -546
  151. package/Shared/services/app-config.service.d.ts +0 -51
  152. package/Shared/services/session.service.d.ts +0 -46
  153. package/Shared/shared.module.d.ts +0 -14
  154. package/fesm2022/cat-documents-ng.mjs +0 -11392
  155. package/fesm2022/cat-documents-ng.mjs.map +0 -1
  156. package/index.d.ts +0 -5
  157. package/lib/document/components/document-actions/document-actions.component.d.ts +0 -78
  158. package/lib/document/components/document-container/document-container.component.d.ts +0 -162
  159. package/lib/document/components/document-content-viewer/document-content-viewer.component.d.ts +0 -291
  160. package/lib/document/components/document-history/document-history.component.d.ts +0 -160
  161. package/lib/document/components/document-list/document-list.component.d.ts +0 -299
  162. package/lib/document/components/document-list-item/document-list-item.component.d.ts +0 -28
  163. package/lib/document/components/document-search/document-search.component.d.ts +0 -77
  164. package/lib/document/components/document-status/document-status.component.d.ts +0 -24
  165. package/lib/document/components/document-upload/document-upload.component.d.ts +0 -321
  166. package/lib/document/components/document-viewer/document-viewer.component.d.ts +0 -137
  167. package/lib/document/components/document-zoom-controls/document-zoom-controls.component.d.ts +0 -33
  168. package/lib/document/components/documents-menu/documents-menu.component.d.ts +0 -110
  169. package/lib/document/components/folder-container/folder-container.component.d.ts +0 -162
  170. package/lib/document/components/linked-document/linked-document.component.d.ts +0 -39
  171. package/lib/document/components/request-document/request-document.component.d.ts +0 -69
  172. package/lib/document/components/sidebar/sidebar.component.d.ts +0 -109
  173. package/lib/document/components/user-list/user-list.component.d.ts +0 -34
  174. package/lib/document/constant/DOCUMENT_HISTORY.d.ts +0 -41
  175. package/lib/document/directives/document.directive.d.ts +0 -20
  176. package/lib/document/directives/permission.directive.d.ts +0 -38
  177. package/lib/document/document.module.d.ts +0 -60
  178. package/lib/document/models/document-category.model.d.ts +0 -24
  179. package/lib/document/models/document-history.model.d.ts +0 -94
  180. package/lib/document/models/document-list-response.model.d.ts +0 -33
  181. package/lib/document/models/document-type.model.d.ts +0 -37
  182. package/lib/document/models/document.model.d.ts +0 -44
  183. package/lib/document/models/status-data.model.d.ts +0 -27
  184. package/lib/document/models/uploaded-file-response.model.d.ts +0 -7
  185. package/lib/document/models/user-list.model.d.ts +0 -8
  186. package/lib/document/services/csv-parser.service.d.ts +0 -88
  187. package/lib/document/services/document-actions.service.d.ts +0 -48
  188. package/lib/document/services/document-content-type.service.d.ts +0 -85
  189. package/lib/document/services/document-history-style.service.d.ts +0 -34
  190. package/lib/document/services/document-history.service.d.ts +0 -42
  191. package/lib/document/services/document-http.service.d.ts +0 -179
  192. package/lib/document/services/document-list.service.d.ts +0 -74
  193. package/lib/document/services/document-menu.service.d.ts +0 -122
  194. package/lib/document/services/document-scroll.service.d.ts +0 -55
  195. package/lib/document/services/document-table-builder.service.d.ts +0 -38
  196. package/lib/document/services/document-upload-business.service.d.ts +0 -107
  197. package/lib/document/services/document-upload-data.service.d.ts +0 -40
  198. package/lib/document/services/document-upload-form.service.d.ts +0 -41
  199. package/lib/document/services/document-upload.service.d.ts +0 -99
  200. package/lib/document/services/document-viewer.service.d.ts +0 -97
  201. package/lib/document/services/document-zoom.service.d.ts +0 -81
  202. package/lib/document/services/document.service.d.ts +0 -161
  203. package/lib/document/services/eml-parser.service.d.ts +0 -116
  204. package/lib/document/services/excel-parser.service.d.ts +0 -169
  205. package/lib/document/services/file-format.service.d.ts +0 -34
  206. package/lib/document/services/status-calculator.service.d.ts +0 -20
  207. package/lib/document/services/user-list.service.d.ts +0 -29
  208. package/lib/document/state/document.query.d.ts +0 -243
  209. package/lib/document/state/document.state.d.ts +0 -61
  210. package/lib/document/state/document.store.d.ts +0 -56
@@ -0,0 +1,1877 @@
1
+ .document-content-viewer-container {
2
+ height: 100%;
3
+ width: 100%;
4
+ display: flex;
5
+ flex-direction: column;
6
+ background: #f8f9fa;
7
+ border-radius: 8px;
8
+ overflow: auto;
9
+
10
+ // Zoom Controls Wrapper
11
+ .zoom-controls-wrapper {
12
+ position: sticky;
13
+ top: 0;
14
+ z-index: 10;
15
+ background: rgba(248, 249, 250, 0.95);
16
+ backdrop-filter: blur(8px);
17
+ border-bottom: 1px solid #e5e7eb;
18
+ justify-content: space-between;
19
+ align-items: center;
20
+ border-radius: 10px;
21
+ }
22
+
23
+ // Common zoom container styles
24
+ .docx-container {
25
+ overflow: auto;
26
+ }
27
+
28
+ // PDF Container
29
+ .pdf-container {
30
+ width: 100%;
31
+ height: 100%;
32
+ border-radius: 8px;
33
+ overflow: auto;
34
+
35
+ ::ng-deep {
36
+ .ng2-pdf-viewer-container {
37
+ height: 100%;
38
+ overflow: auto;
39
+
40
+ // Ensure scrollbar is visible
41
+ &::-webkit-scrollbar {
42
+ width: 12px;
43
+ height: 12px;
44
+ }
45
+
46
+ &::-webkit-scrollbar-track {
47
+ background: #f1f1f1;
48
+ border-radius: 6px;
49
+ }
50
+
51
+ &::-webkit-scrollbar-thumb {
52
+ background: #888;
53
+ border-radius: 6px;
54
+
55
+ &:hover {
56
+ background: #555;
57
+ }
58
+ }
59
+ }
60
+
61
+ // For Firefox
62
+ .ng2-pdf-viewer-container {
63
+ scrollbar-width: thin;
64
+ scrollbar-color: #888 #f1f1f1;
65
+ }
66
+ }
67
+ }
68
+
69
+ // Image Container
70
+ .image-container {
71
+ width: 100%;
72
+ height: 100%;
73
+ display: flex;
74
+ align-items: center;
75
+ justify-content: center;
76
+ padding: 1rem;
77
+ overflow: auto;
78
+
79
+ .document-image {
80
+ max-width: 100%;
81
+ max-height: 100%;
82
+ object-fit: contain;
83
+ border-radius: 8px;
84
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
85
+ transition: transform 0.2s ease-in-out;
86
+ }
87
+ }
88
+
89
+ // Excel Container
90
+ .excel-container {
91
+ width: 100%;
92
+ height: 100%;
93
+ display: flex;
94
+ flex-direction: column;
95
+ background: white;
96
+ border-radius: 8px;
97
+ overflow: auto;
98
+
99
+
100
+
101
+ .loading-container {
102
+ width: 100%;
103
+ height: 100%;
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ padding: 2rem;
108
+
109
+ .loading-content {
110
+ text-align: center;
111
+ color: #6b7280;
112
+
113
+ i {
114
+ margin-bottom: 1rem;
115
+ display: block;
116
+ }
117
+
118
+ p {
119
+ margin: 0;
120
+ color: #9ca3af;
121
+ font-size: 0.875rem;
122
+ }
123
+ }
124
+ }
125
+
126
+ .error-container {
127
+ width: 100%;
128
+ height: 100%;
129
+ display: flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ padding: 2rem;
133
+
134
+ .error-content {
135
+ text-align: center;
136
+ color: #6b7280;
137
+ max-width: 400px;
138
+
139
+ i {
140
+ margin-bottom: 1rem;
141
+ display: block;
142
+ }
143
+
144
+ h4 {
145
+ margin: 0 0 0.5rem 0;
146
+ color: #dc2626;
147
+ font-size: 1.25rem;
148
+ font-weight: 600;
149
+ }
150
+
151
+ p {
152
+ margin: 0 0 1.5rem 0;
153
+ color: #6b7280;
154
+ font-size: 0.875rem;
155
+ }
156
+
157
+ .error-actions {
158
+ display: flex;
159
+ justify-content: center;
160
+ }
161
+ }
162
+ }
163
+
164
+ .excel-viewer {
165
+ width: 100%;
166
+ height: 100%;
167
+ display: flex;
168
+ flex-direction: column;
169
+
170
+ .excel-header {
171
+ display: flex;
172
+ align-items: center;
173
+ justify-content: space-between;
174
+ padding: 1rem 1.5rem;
175
+ background: #f8fafc;
176
+ border-bottom: 1px solid #e2e8f0;
177
+
178
+ .excel-info {
179
+ display: flex;
180
+ align-items: center;
181
+ gap: 1rem;
182
+
183
+ i {
184
+ font-size: 2rem;
185
+ color: #10b981;
186
+ }
187
+
188
+ .excel-details {
189
+ h4 {
190
+ margin: 0 0 0.25rem 0;
191
+ color: #1f2937;
192
+ font-size: 1.125rem;
193
+ font-weight: 600;
194
+ }
195
+
196
+ p {
197
+ margin: 0;
198
+ color: #6b7280;
199
+ font-size: 0.875rem;
200
+ }
201
+ }
202
+ }
203
+
204
+ .excel-actions {
205
+ display: flex;
206
+ gap: 0.5rem;
207
+
208
+ .p-button {
209
+ &.p-button-sm {
210
+ padding: 0.375rem 0.75rem;
211
+ font-size: 0.75rem;
212
+ }
213
+ }
214
+ }
215
+ }
216
+
217
+ .excel-content {
218
+ flex: 1;
219
+ display: flex;
220
+ flex-direction: column;
221
+ padding: 1rem;
222
+ background: #fafafa;
223
+ overflow: hidden;
224
+
225
+ .sheet-navigation {
226
+ display: flex;
227
+ align-items: center;
228
+ gap: 0.5rem;
229
+ margin-bottom: 1rem;
230
+ padding: 0.5rem;
231
+ background: white;
232
+ border-radius: 6px;
233
+ border: 1px solid #e5e7eb;
234
+
235
+ .sheet-label {
236
+ font-size: 0.875rem;
237
+ font-weight: 500;
238
+ color: #6b7280;
239
+ margin-right: 0.5rem;
240
+ }
241
+
242
+ .sheet-tab {
243
+ padding: 0.375rem 0.75rem;
244
+ border: 1px solid #d1d5db;
245
+ background: white;
246
+ border-radius: 4px;
247
+ font-size: 0.75rem;
248
+ color: #6b7280;
249
+ cursor: pointer;
250
+ transition: all 0.2s;
251
+
252
+ &:hover {
253
+ background: #f3f4f6;
254
+ border-color: #9ca3af;
255
+ }
256
+
257
+ &.active {
258
+ background: #10b981;
259
+ color: white;
260
+ border-color: #10b981;
261
+ }
262
+ }
263
+ }
264
+
265
+ .excel-table-container {
266
+ flex: 1;
267
+ overflow: auto;
268
+ background: white;
269
+ border-radius: 6px;
270
+ border: 1px solid #e5e7eb;
271
+ margin-bottom: 1rem;
272
+ min-width: 100%;
273
+ position: relative;
274
+ min-height: 300px;
275
+ overflow-x: auto;
276
+ overflow-y: auto;
277
+
278
+ // Hide scrollbars but keep scrolling functionality
279
+ scrollbar-width: none; /* Firefox */
280
+ -ms-overflow-style: none; /* Internet Explorer 10+ */
281
+
282
+ &::-webkit-scrollbar {
283
+ display: none; /* Chrome, Safari, Opera */
284
+ }
285
+
286
+ .excel-table {
287
+ width: 100%;
288
+ min-width: max-content;
289
+ border-collapse: collapse;
290
+ font-size: 0.875rem;
291
+ table-layout: auto;
292
+ border: 2px solid #e5e7eb;
293
+ word-wrap: break-word;
294
+ white-space: nowrap;
295
+
296
+ th, td {
297
+ padding: 0.5rem 0.75rem;
298
+ text-align: left;
299
+ border-bottom: 1px solid #f3f4f6;
300
+ border-right: 1px solid #f3f4f6;
301
+ min-width: 80px;
302
+ max-width: 300px;
303
+ overflow: hidden;
304
+ text-overflow: ellipsis;
305
+ white-space: normal;
306
+ position: relative;
307
+ box-sizing: border-box;
308
+ vertical-align: top;
309
+ }
310
+
311
+ // Ensure empty cells are visible with borders
312
+ td:empty::after {
313
+ content: '';
314
+ display: block;
315
+ min-height: 1.5rem;
316
+ }
317
+
318
+ // Ensure all columns are visible
319
+ th:last-child,
320
+ td:last-child {
321
+ border-right: 1px solid #e5e7eb;
322
+ }
323
+
324
+ // Add left border to first column
325
+ th:first-child,
326
+ td:first-child {
327
+ border-left: 1px solid #e5e7eb;
328
+ }
329
+
330
+ // Style empty cells to make them more visible
331
+ .empty-cell {
332
+ background-color: #fafafa;
333
+ color: #9ca3af;
334
+ font-style: italic;
335
+ border: 1px solid #e5e7eb;
336
+ }
337
+
338
+ // Ensure table has a grid-like appearance
339
+ tr {
340
+ border: 1px solid #e5e7eb;
341
+ }
342
+
343
+ th {
344
+ background: #f8fafc;
345
+ font-weight: 600;
346
+ color: #374151;
347
+ position: sticky;
348
+ top: 0;
349
+ z-index: 10;
350
+ border-bottom: 2px solid #e5e7eb;
351
+ }
352
+
353
+ td {
354
+ color: #6b7280;
355
+ background: white;
356
+
357
+ &:first-child {
358
+ font-weight: 500;
359
+ color: #374151;
360
+ }
361
+ }
362
+
363
+ tr:hover td {
364
+ background: #f9fafb;
365
+ }
366
+
367
+ tbody tr:last-child td {
368
+ border-bottom: none;
369
+ }
370
+ }
371
+ }
372
+
373
+ .excel-info-bar {
374
+ display: flex;
375
+ align-items: center;
376
+ gap: 1.5rem;
377
+ padding: 0.75rem;
378
+ background: white;
379
+ border-radius: 6px;
380
+ border: 1px solid #e5e7eb;
381
+ font-size: 0.75rem;
382
+
383
+ .info-item {
384
+ display: flex;
385
+ align-items: center;
386
+ gap: 0.5rem;
387
+ color: #6b7280;
388
+
389
+ i {
390
+ color: #10b981;
391
+ font-size: 0.875rem;
392
+ }
393
+ }
394
+ }
395
+ }
396
+ }
397
+ }
398
+
399
+ // Office Document Container (Excel, Word, CSV, Email, OpenDocument)
400
+ .office-document-container {
401
+ width: 100%;
402
+ height: 100%;
403
+ display: flex;
404
+ align-items: center;
405
+ justify-content: center;
406
+ padding: 2rem;
407
+
408
+ .document-preview {
409
+ background: white;
410
+ border-radius: 12px;
411
+ padding: 2rem;
412
+ text-align: center;
413
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
414
+ max-width: 400px;
415
+ width: 100%;
416
+
417
+ .document-icon {
418
+ margin-bottom: 1.5rem;
419
+
420
+ i {
421
+ font-size: 4rem;
422
+ color: #3b82f6;
423
+ }
424
+ }
425
+
426
+ .document-info {
427
+ margin-bottom: 2rem;
428
+
429
+ h4 {
430
+ margin: 0 0 0.5rem 0;
431
+ color: #1f2937;
432
+ font-size: 1.25rem;
433
+ font-weight: 600;
434
+ }
435
+
436
+ p {
437
+ margin: 0.25rem 0;
438
+ color: #6b7280;
439
+ font-size: 0.875rem;
440
+
441
+ &.document-note {
442
+ color: #9ca3af;
443
+ font-style: italic;
444
+ margin-top: 0.75rem;
445
+ }
446
+ }
447
+ }
448
+
449
+ .document-actions {
450
+ display: flex;
451
+ gap: 0.75rem;
452
+ justify-content: center;
453
+ flex-wrap: wrap;
454
+
455
+ .p-button {
456
+ min-width: 120px;
457
+
458
+ &.p-button-sm {
459
+ padding: 0.5rem 1rem;
460
+ font-size: 0.875rem;
461
+ }
462
+ }
463
+ }
464
+ }
465
+ }
466
+
467
+ // Unsupported Document Container
468
+ .unsupported-document-container {
469
+ width: 100%;
470
+ height: 100%;
471
+ display: flex;
472
+ align-items: center;
473
+ justify-content: center;
474
+ padding: 2rem;
475
+
476
+ .document-preview {
477
+ background: white;
478
+ border-radius: 12px;
479
+ padding: 2rem;
480
+ text-align: center;
481
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
482
+ max-width: 400px;
483
+ width: 100%;
484
+ border: 2px solid #fbbf24;
485
+
486
+ .document-icon {
487
+ margin-bottom: 1.5rem;
488
+
489
+ i {
490
+ font-size: 4rem;
491
+ color: #f59e0b;
492
+ }
493
+ }
494
+
495
+ .document-info {
496
+ margin-bottom: 2rem;
497
+
498
+ h4 {
499
+ margin: 0 0 0.5rem 0;
500
+ color: #92400e;
501
+ font-size: 1.25rem;
502
+ font-weight: 600;
503
+ }
504
+
505
+ p {
506
+ margin: 0.25rem 0;
507
+ color: #6b7280;
508
+ font-size: 0.875rem;
509
+
510
+ &.document-note {
511
+ color: #d97706;
512
+ font-style: italic;
513
+ margin-top: 0.75rem;
514
+ background: #fef3c7;
515
+ padding: 0.5rem;
516
+ border-radius: 6px;
517
+ border: 1px solid #fde68a;
518
+ }
519
+ }
520
+ }
521
+
522
+ .document-actions {
523
+ display: flex;
524
+ gap: 0.75rem;
525
+ justify-content: center;
526
+ flex-wrap: wrap;
527
+
528
+ .p-button {
529
+ min-width: 120px;
530
+
531
+ &.p-button-sm {
532
+ padding: 0.5rem 1rem;
533
+ font-size: 0.875rem;
534
+ }
535
+ }
536
+ }
537
+ }
538
+ }
539
+
540
+ // No Document State
541
+ .no-document-container {
542
+ width: 100%;
543
+ height: 100%;
544
+ display: flex;
545
+ align-items: center;
546
+ justify-content: center;
547
+ padding: 2rem;
548
+
549
+ .no-document-content {
550
+ text-align: center;
551
+ color: #6b7280;
552
+
553
+ i {
554
+ margin-bottom: 1rem;
555
+ display: block;
556
+ }
557
+
558
+ h4 {
559
+ margin: 0 0 0.5rem 0;
560
+ color: #374151;
561
+ font-size: 1.25rem;
562
+ font-weight: 600;
563
+ }
564
+
565
+ p {
566
+ margin: 0;
567
+ color: #9ca3af;
568
+ font-size: 0.875rem;
569
+ }
570
+ }
571
+ }
572
+ }
573
+
574
+ // Responsive Design
575
+ @media (max-width: 768px) {
576
+ .document-content-viewer-container {
577
+ .office-document-container,
578
+ .unsupported-document-container {
579
+ padding: 1rem;
580
+
581
+ .document-preview {
582
+ padding: 1.5rem;
583
+ max-width: 100%;
584
+
585
+ .document-icon i {
586
+ font-size: 3rem;
587
+ }
588
+
589
+ .document-actions {
590
+ flex-direction: column;
591
+ align-items: center;
592
+
593
+ .p-button {
594
+ width: 100%;
595
+ max-width: 200px;
596
+ }
597
+ }
598
+ }
599
+ }
600
+
601
+ .image-container {
602
+ padding: 0.5rem;
603
+ }
604
+
605
+ .excel-container {
606
+ .excel-viewer {
607
+ .excel-header {
608
+ flex-direction: column;
609
+ gap: 1rem;
610
+ padding: 1rem;
611
+
612
+ .excel-info {
613
+ justify-content: center;
614
+ }
615
+
616
+ .excel-actions {
617
+ justify-content: center;
618
+ width: 100%;
619
+
620
+ .p-button {
621
+ flex: 1;
622
+ max-width: 150px;
623
+ }
624
+ }
625
+ }
626
+
627
+ .excel-content {
628
+ padding: 0.5rem;
629
+
630
+ .sheet-navigation {
631
+ flex-wrap: wrap;
632
+ gap: 0.25rem;
633
+
634
+ .sheet-tab {
635
+ font-size: 0.7rem;
636
+ padding: 0.25rem 0.5rem;
637
+ }
638
+ }
639
+
640
+ .excel-table-container {
641
+ .excel-table {
642
+ font-size: 0.75rem;
643
+
644
+ th, td {
645
+ padding: 0.25rem 0.5rem;
646
+ min-width: 80px;
647
+ max-width: 150px;
648
+ }
649
+ }
650
+ }
651
+
652
+ .excel-info-bar {
653
+ flex-wrap: wrap;
654
+ gap: 1rem;
655
+ font-size: 0.7rem;
656
+ }
657
+ }
658
+ }
659
+ }
660
+ }
661
+ }
662
+
663
+ // Dark mode support (if needed)
664
+ @media (prefers-color-scheme: dark) {
665
+ .document-content-viewer-container {
666
+ background: #1f2937;
667
+
668
+ .office-document-container,
669
+ .unsupported-document-container {
670
+ .document-preview {
671
+ background: #374151;
672
+ color: #f9fafb;
673
+
674
+ .document-info h4 {
675
+ color: #f9fafb;
676
+ }
677
+
678
+ .document-info p {
679
+ color: #d1d5db;
680
+
681
+ &.document-note {
682
+ color: #9ca3af;
683
+ background: #4b5563;
684
+ border-color: #6b7280;
685
+ }
686
+ }
687
+ }
688
+ }
689
+
690
+ .excel-container {
691
+ background: #374151;
692
+
693
+ .excel-viewer {
694
+ .excel-header {
695
+ background: #4b5563;
696
+ border-color: #6b7280;
697
+
698
+ .excel-info {
699
+ .excel-details h4 {
700
+ color: #f9fafb;
701
+ }
702
+
703
+ .excel-details p {
704
+ color: #d1d5db;
705
+ }
706
+ }
707
+ }
708
+
709
+ .excel-content {
710
+ background: #374151;
711
+
712
+ .sheet-navigation {
713
+ background: #4b5563;
714
+ border-color: #6b7280;
715
+
716
+ .sheet-tab {
717
+ background: #4b5563;
718
+ border-color: #6b7280;
719
+ color: #d1d5db;
720
+
721
+ &:hover {
722
+ background: #6b7280;
723
+ border-color: #9ca3af;
724
+ }
725
+
726
+ &.active {
727
+ background: #10b981;
728
+ color: white;
729
+ border-color: #10b981;
730
+ }
731
+ }
732
+ }
733
+
734
+ .excel-table-container {
735
+ background: #4b5563;
736
+ border-color: #6b7280;
737
+
738
+ .excel-table {
739
+ th {
740
+ background: #6b7280;
741
+ color: #f9fafb;
742
+ border-color: #9ca3af;
743
+ }
744
+
745
+ td {
746
+ background: #4b5563;
747
+ color: #d1d5db;
748
+ border-color: #6b7280;
749
+
750
+ &:first-child {
751
+ color: #f9fafb;
752
+ }
753
+ }
754
+
755
+ tr:hover td {
756
+ background: #6b7280;
757
+ }
758
+ }
759
+ }
760
+
761
+ .excel-info-bar {
762
+ background: #4b5563;
763
+ border-color: #6b7280;
764
+ color: #d1d5db;
765
+ }
766
+ }
767
+ }
768
+ }
769
+
770
+ .no-document-container .no-document-content {
771
+ color: #9ca3af;
772
+
773
+ h4 {
774
+ color: #f9fafb;
775
+ }
776
+
777
+ p {
778
+ color: #d1d5db;
779
+ }
780
+ }
781
+ }
782
+ }
783
+
784
+ .excel-table {
785
+ border-collapse: collapse;
786
+ width: 100%;
787
+ font-size: 0.875rem;
788
+
789
+ th, td {
790
+ padding: 0.5rem;
791
+ border: 1px solid #e2e8f0;
792
+ text-align: left;
793
+ vertical-align: top;
794
+ min-width: 80px;
795
+
796
+ // Handle styled cells
797
+ &[style*="background-color"] {
798
+ // Ensure text is readable on colored backgrounds
799
+ &:not([style*="color"]) {
800
+ color: #1f2937; // Default dark text
801
+ }
802
+ }
803
+
804
+ // Handle bold text
805
+ &[style*="font-weight: bold"] {
806
+ font-weight: 600;
807
+ }
808
+
809
+ // Handle italic text
810
+ &[style*="font-style: italic"] {
811
+ font-style: italic;
812
+ }
813
+ }
814
+
815
+ th {
816
+ background-color: #f8fafc;
817
+ font-weight: 600;
818
+ color: #475569;
819
+ position: sticky;
820
+ top: 0;
821
+ z-index: 10;
822
+ }
823
+
824
+ td {
825
+ background-color: white;
826
+
827
+ &.empty-cell {
828
+ background-color: #f8fafc;
829
+ color: #9ca3af;
830
+ }
831
+ }
832
+
833
+ // Hover effect for rows
834
+ tbody tr:hover td {
835
+ background-color: #f1f5f9;
836
+
837
+ // Preserve custom background colors on hover
838
+ &[style*="background-color"] {
839
+ opacity: 0.8;
840
+ }
841
+ }
842
+ }
843
+
844
+ .debug-info {
845
+ margin-top: 1rem;
846
+ padding: 1rem;
847
+ background-color: #fef3c7;
848
+ border: 1px solid #f59e0b;
849
+ border-radius: 8px;
850
+
851
+ summary {
852
+ cursor: pointer;
853
+ font-weight: 600;
854
+ color: #d97706;
855
+ margin-bottom: 0.5rem;
856
+
857
+ &:hover {
858
+ color: #b45309;
859
+ }
860
+ }
861
+
862
+ .debug-content {
863
+ margin-top: 0.5rem;
864
+
865
+ p {
866
+ margin: 0.5rem 0;
867
+ color: #92400e;
868
+ }
869
+
870
+ ul {
871
+ margin: 0.5rem 0;
872
+ padding-left: 1.5rem;
873
+ color: #92400e;
874
+ }
875
+
876
+ li {
877
+ margin: 0.25rem 0;
878
+ }
879
+
880
+ button {
881
+ margin-top: 0.5rem;
882
+ }
883
+ }
884
+ }
885
+
886
+ // DOCX Container
887
+ .docx-container {
888
+ width: 100%;
889
+ height: 100%;
890
+ display: flex;
891
+ flex-direction: column;
892
+ background: white;
893
+ overflow: hidden;
894
+
895
+ .loading-container {
896
+ width: 100%;
897
+ height: 100%;
898
+ display: flex;
899
+ align-items: center;
900
+ justify-content: center;
901
+ padding: 2rem;
902
+
903
+ .loading-content {
904
+ text-align: center;
905
+ color: #6b7280;
906
+
907
+ i {
908
+ margin-bottom: 1rem;
909
+ display: block;
910
+ }
911
+
912
+ p {
913
+ margin: 0;
914
+ color: #9ca3af;
915
+ font-size: 0.875rem;
916
+ }
917
+ }
918
+ }
919
+
920
+ .error-container {
921
+ width: 100%;
922
+ height: 100%;
923
+ display: flex;
924
+ align-items: center;
925
+ justify-content: center;
926
+ padding: 2rem;
927
+
928
+ .error-content {
929
+ text-align: center;
930
+ color: #6b7280;
931
+ max-width: 400px;
932
+
933
+ i {
934
+ margin-bottom: 1rem;
935
+ display: block;
936
+ }
937
+
938
+ h4 {
939
+ margin: 0 0 0.5rem 0;
940
+ color: #dc2626;
941
+ font-size: 1.25rem;
942
+ font-weight: 600;
943
+ }
944
+
945
+ p {
946
+ margin: 0 0 1rem 0;
947
+ color: #9ca3af;
948
+ font-size: 0.875rem;
949
+ }
950
+
951
+ .error-actions {
952
+ margin-top: 1rem;
953
+ }
954
+ }
955
+ }
956
+
957
+ .docx-viewer {
958
+ width: 100%;
959
+ height: 100%;
960
+ display: flex;
961
+ flex-direction: column;
962
+ background: white;
963
+
964
+ .docx-header {
965
+ display: flex;
966
+ align-items: center;
967
+ justify-content: space-between;
968
+ padding: 1rem 1.5rem;
969
+ border-bottom: 1px solid #e5e7eb;
970
+ background-color: #f9fafb;
971
+
972
+ .docx-info {
973
+ display: flex;
974
+ align-items: center;
975
+ gap: 1rem;
976
+
977
+ i {
978
+ font-size: 2rem;
979
+ color: #2563eb;
980
+ }
981
+
982
+ .docx-details {
983
+ h4 {
984
+ margin: 0 0 0.25rem 0;
985
+ font-size: 1.125rem;
986
+ font-weight: 600;
987
+ color: #111827;
988
+ }
989
+
990
+ p {
991
+ margin: 0 0 0.125rem 0;
992
+ font-size: 0.875rem;
993
+ color: #6b7280;
994
+ }
995
+
996
+ .document-title {
997
+ font-weight: 500;
998
+ color: #374151;
999
+ font-size: 0.875rem;
1000
+ }
1001
+
1002
+ .document-author {
1003
+ font-style: italic;
1004
+ color: #6b7280;
1005
+ font-size: 0.75rem;
1006
+ }
1007
+ }
1008
+ }
1009
+
1010
+ .docx-actions {
1011
+ display: flex;
1012
+ gap: 0.5rem;
1013
+ }
1014
+ }
1015
+
1016
+ .docx-content {
1017
+ flex: 1;
1018
+ overflow: auto;
1019
+ padding: 1.5rem;
1020
+
1021
+ .docx-stats {
1022
+ display: flex;
1023
+ flex-wrap: wrap;
1024
+ gap: 1rem;
1025
+ margin-bottom: 1.5rem;
1026
+ padding: 1rem;
1027
+ background-color: #f8fafc;
1028
+ border-radius: 8px;
1029
+ border: 1px solid #e2e8f0;
1030
+
1031
+ .stat-item {
1032
+ display: flex;
1033
+ align-items: center;
1034
+ gap: 0.5rem;
1035
+ padding: 0.5rem 0.75rem;
1036
+ background-color: white;
1037
+ border-radius: 6px;
1038
+ border: 1px solid #e2e8f0;
1039
+ font-size: 0.75rem;
1040
+ color: #475569;
1041
+ font-weight: 500;
1042
+
1043
+ i {
1044
+ color: #64748b;
1045
+ }
1046
+ }
1047
+ }
1048
+
1049
+ .docx-content-body {
1050
+ line-height: 1.6;
1051
+ color: #1f2937;
1052
+
1053
+ // DOCX specific styling
1054
+ .docx-paragraph {
1055
+ margin: 0 0 1rem 0;
1056
+ text-align: justify;
1057
+ }
1058
+
1059
+ .docx-heading {
1060
+ margin: 1.5rem 0 1rem 0;
1061
+ font-weight: 600;
1062
+ color: #111827;
1063
+ line-height: 1.3;
1064
+
1065
+ &.docx-h1 {
1066
+ font-size: 1.875rem;
1067
+ border-bottom: 2px solid #e5e7eb;
1068
+ padding-bottom: 0.5rem;
1069
+ }
1070
+
1071
+ &.docx-h2 {
1072
+ font-size: 1.5rem;
1073
+ border-bottom: 1px solid #e5e7eb;
1074
+ padding-bottom: 0.25rem;
1075
+ }
1076
+
1077
+ &.docx-h3 {
1078
+ font-size: 1.25rem;
1079
+ }
1080
+
1081
+ &.docx-h4, &.docx-h5, &.docx-h6 {
1082
+ font-size: 1.125rem;
1083
+ }
1084
+ }
1085
+
1086
+ .docx-table {
1087
+ width: 100%;
1088
+ margin: 1rem 0;
1089
+ border-collapse: collapse;
1090
+ border: 1px solid #e5e7eb;
1091
+ background-color: white;
1092
+
1093
+ .docx-header {
1094
+ background-color: #f8fafc;
1095
+ font-weight: 600;
1096
+ color: #374151;
1097
+ }
1098
+
1099
+ .docx-cell, .docx-header {
1100
+ padding: 0.75rem;
1101
+ border: 1px solid #e5e7eb;
1102
+ text-align: left;
1103
+ vertical-align: top;
1104
+ }
1105
+
1106
+ .docx-row:hover {
1107
+ background-color: #f9fafb;
1108
+ }
1109
+ }
1110
+
1111
+ .docx-list {
1112
+ margin: 1rem 0;
1113
+ padding-left: 1.5rem;
1114
+
1115
+ &.docx-ul {
1116
+ list-style-type: disc;
1117
+ }
1118
+
1119
+ &.docx-ol {
1120
+ list-style-type: decimal;
1121
+ }
1122
+
1123
+ .docx-list-item {
1124
+ margin: 0.5rem 0;
1125
+ line-height: 1.5;
1126
+ }
1127
+ }
1128
+
1129
+ .docx-image {
1130
+ max-width: 100%;
1131
+ height: auto;
1132
+ border-radius: 6px;
1133
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
1134
+ margin: 1rem 0;
1135
+ }
1136
+
1137
+ // Handle blockquotes
1138
+ blockquote {
1139
+ margin: 1rem 0;
1140
+ padding: 1rem 1.5rem;
1141
+ border-left: 4px solid #3b82f6;
1142
+ background-color: #f8fafc;
1143
+ font-style: italic;
1144
+ color: #374151;
1145
+ }
1146
+
1147
+ // Handle code blocks
1148
+ pre, code {
1149
+ background-color: #f1f5f9;
1150
+ border: 1px solid #e2e8f0;
1151
+ border-radius: 4px;
1152
+ padding: 0.5rem;
1153
+ font-family: 'Courier New', monospace;
1154
+ font-size: 0.875rem;
1155
+ color: #1e293b;
1156
+ overflow-x: auto;
1157
+ }
1158
+
1159
+ pre {
1160
+ padding: 1rem;
1161
+ margin: 1rem 0;
1162
+ }
1163
+
1164
+ // Handle links
1165
+ a {
1166
+ color: #2563eb;
1167
+ text-decoration: none;
1168
+
1169
+ &:hover {
1170
+ text-decoration: underline;
1171
+ }
1172
+ }
1173
+
1174
+ // Handle emphasis
1175
+ em, i {
1176
+ font-style: italic;
1177
+ }
1178
+
1179
+ strong, b {
1180
+ font-weight: 600;
1181
+ }
1182
+
1183
+ // Handle horizontal rules
1184
+ hr {
1185
+ border: none;
1186
+ border-top: 1px solid #e5e7eb;
1187
+ margin: 2rem 0;
1188
+ }
1189
+ }
1190
+ }
1191
+ }
1192
+ }
1193
+
1194
+ .word-loading-container {
1195
+ display: flex;
1196
+ align-items: center;
1197
+ justify-content: center;
1198
+ min-height: 400px;
1199
+ width: 100%;
1200
+ background-color: #f9fafb;
1201
+ border-radius: 8px;
1202
+
1203
+ .loading-content {
1204
+ text-align: center;
1205
+
1206
+ i {
1207
+ margin-bottom: 1rem;
1208
+ display: block;
1209
+ font-size: 2rem;
1210
+ color: #3b82f6;
1211
+ }
1212
+
1213
+ p {
1214
+ margin: 0;
1215
+ color: #6b7280;
1216
+ font-size: 1rem;
1217
+ font-weight: 500;
1218
+ }
1219
+ }
1220
+ }
1221
+
1222
+ .docx-container {
1223
+ min-height: 400px; // Prevent layout shift during loading
1224
+ overflow: auto;
1225
+ }
1226
+
1227
+ // Document viewer wrapper for zoom functionality
1228
+ .doc-viewer-wrapper {
1229
+ transition: transform 0.2s ease-in-out;
1230
+ overflow: auto;
1231
+ position: relative;
1232
+ transform-origin: center center;
1233
+ height: 100%;
1234
+ // Enable smooth scrolling for both directions
1235
+ scroll-behavior: smooth;
1236
+
1237
+ // Invisible overlay to capture wheel events over document content
1238
+ .wheel-capture-overlay {
1239
+ position: absolute;
1240
+ top: 0;
1241
+ left: 0;
1242
+ width: 100%;
1243
+ height: 100%;
1244
+ background: transparent;
1245
+ z-index: 5;
1246
+ pointer-events: auto;
1247
+
1248
+ // Allow click events to pass through to iframe
1249
+ &:active {
1250
+ pointer-events: none;
1251
+ }
1252
+ }
1253
+
1254
+ // Apply zoom to the iframe content directly for Word document zoom
1255
+ ngx-doc-viewer {
1256
+ ::ng-deep iframe {
1257
+ transition: transform 0.2s ease-in-out;
1258
+ transform-origin: top left; // Start zoom from top-left like Word
1259
+ border: none;
1260
+ // Ensure iframe can be properly scaled
1261
+ min-width: 100%;
1262
+ min-height: 100%;
1263
+ }
1264
+ }
1265
+ }
1266
+
1267
+ // Excel-specific zoom wrapper to handle overflow properly
1268
+ .excel-zoom-wrapper {
1269
+ overflow: auto;
1270
+ position: relative;
1271
+ height: 100%;
1272
+ width: 100%;
1273
+ // Enable smooth scrolling for both directions
1274
+ scroll-behavior: smooth;
1275
+
1276
+ // Invisible overlay to capture wheel events over document content
1277
+ .wheel-capture-overlay {
1278
+ position: absolute;
1279
+ top: 0;
1280
+ left: 0;
1281
+ width: 100%;
1282
+ height: 100%;
1283
+ background: transparent;
1284
+ z-index: 5;
1285
+ pointer-events: auto;
1286
+
1287
+ // Allow click events to pass through to iframe
1288
+ &:active {
1289
+ pointer-events: none;
1290
+ }
1291
+ }
1292
+
1293
+ // Default state - center content when not zoomed
1294
+ &:not(.zoomed) {
1295
+ display: flex;
1296
+ align-items: center;
1297
+ justify-content: center;
1298
+ }
1299
+
1300
+ // When zoomed, remove flex centering and ensure proper scrolling
1301
+ &.zoomed {
1302
+ overflow: auto;
1303
+ display: block; // Remove flex centering when zoomed
1304
+ }
1305
+
1306
+ // Scale the document content inside ngx-doc-viewer, not the container
1307
+ ngx-doc-viewer {
1308
+ transition: transform 0.2s ease-in-out;
1309
+ transform-origin: center center;
1310
+ display: block;
1311
+ width: 100%;
1312
+ height: 100%;
1313
+
1314
+ // Apply zoom to the iframe content directly for Excel sheet zoom
1315
+ ::ng-deep iframe {
1316
+ transition: transform 0.2s ease-in-out;
1317
+ transform-origin: top left; // Start zoom from top-left like Excel
1318
+ border: none;
1319
+ // Ensure iframe can be properly scaled
1320
+ min-width: 100%;
1321
+ min-height: 100%;
1322
+ }
1323
+ }
1324
+ }
1325
+
1326
+ // Ensure ngx-doc-viewer doesn't cause layout shifts
1327
+ ngx-doc-viewer {
1328
+ display: block;
1329
+ width: 100%;
1330
+ height: 100%;
1331
+
1332
+ // Allow iframe scaling and interactions
1333
+ ::ng-deep iframe {
1334
+ transition: transform 0.2s ease-in-out;
1335
+ transform-origin: center center;
1336
+ }
1337
+ }
1338
+
1339
+ // CSV Container
1340
+ .csv-container {
1341
+ width: 100%;
1342
+ height: 100%;
1343
+ display: flex;
1344
+ flex-direction: column;
1345
+ background: white;
1346
+ border-radius: 8px;
1347
+ overflow: auto;
1348
+
1349
+ // Global scrollbar hiding for all CSV content
1350
+ * {
1351
+ &::-webkit-scrollbar {
1352
+ display: none;
1353
+ }
1354
+ scrollbar-width: none;
1355
+ -ms-overflow-style: none;
1356
+ }
1357
+
1358
+ .loading-container {
1359
+ width: 100%;
1360
+ height: 100%;
1361
+ display: flex;
1362
+ align-items: center;
1363
+ justify-content: center;
1364
+ padding: 2rem;
1365
+
1366
+ .loading-content {
1367
+ text-align: center;
1368
+ color: #6b7280;
1369
+
1370
+ i {
1371
+ margin-bottom: 1rem;
1372
+ display: block;
1373
+ }
1374
+
1375
+ p {
1376
+ margin: 0;
1377
+ color: #9ca3af;
1378
+ font-size: 0.875rem;
1379
+ }
1380
+ }
1381
+ }
1382
+
1383
+ .error-container {
1384
+ width: 100%;
1385
+ height: 100%;
1386
+ display: flex;
1387
+ align-items: center;
1388
+ justify-content: center;
1389
+ padding: 2rem;
1390
+
1391
+ .error-content {
1392
+ text-align: center;
1393
+ color: #6b7280;
1394
+ max-width: 400px;
1395
+
1396
+ i {
1397
+ margin-bottom: 1rem;
1398
+ display: block;
1399
+ }
1400
+
1401
+ h4 {
1402
+ margin: 0 0 0.5rem 0;
1403
+ color: #dc2626;
1404
+ font-size: 1.25rem;
1405
+ font-weight: 600;
1406
+ }
1407
+
1408
+ p {
1409
+ margin: 0 0 1rem 0;
1410
+ color: #6b7280;
1411
+ font-size: 0.875rem;
1412
+ }
1413
+
1414
+ .error-actions {
1415
+ margin-top: 1rem;
1416
+ }
1417
+ }
1418
+ }
1419
+
1420
+ .csv-content {
1421
+ width: 100%;
1422
+ height: 98%;
1423
+ display: flex;
1424
+ flex-direction: column;
1425
+ padding: 1rem;
1426
+
1427
+ .csv-header {
1428
+ display: flex;
1429
+ justify-content: space-between;
1430
+ align-items: flex-start;
1431
+ margin-bottom: 1rem;
1432
+ padding-bottom: 1rem;
1433
+ border-bottom: 1px solid #e5e7eb;
1434
+
1435
+ .csv-info {
1436
+ h4 {
1437
+ margin: 0 0 0.5rem 0;
1438
+ color: #111827;
1439
+ font-size: 1.25rem;
1440
+ font-weight: 600;
1441
+ }
1442
+
1443
+ p {
1444
+ margin: 0 0 0.25rem 0;
1445
+ color: #6b7280;
1446
+ font-size: 0.875rem;
1447
+ }
1448
+
1449
+ .csv-stats {
1450
+ display: inline-block;
1451
+ background-color: #f3f4f6;
1452
+ color: #6b7280;
1453
+ font-size: 0.75rem;
1454
+ padding: 0.25rem 0.5rem;
1455
+ border-radius: 4px;
1456
+ font-weight: 500;
1457
+ }
1458
+ }
1459
+
1460
+ .csv-actions {
1461
+ display: flex;
1462
+ gap: 0.5rem;
1463
+ }
1464
+ }
1465
+
1466
+ .csv-table-container {
1467
+ flex: 1;
1468
+ overflow: auto;
1469
+ border-radius: 6px;
1470
+ min-width: 0;
1471
+ min-height: 0;
1472
+ transition: transform 0.2s ease-in-out;
1473
+ scroll-behavior: smooth;
1474
+ transform-origin: center center;
1475
+
1476
+ // Hide scrollbars for webkit browsers
1477
+ &::-webkit-scrollbar {
1478
+ display: none;
1479
+ }
1480
+
1481
+ // Hide scrollbars for Firefox
1482
+ scrollbar-width: none;
1483
+
1484
+ // Hide scrollbars for IE/Edge
1485
+ -ms-overflow-style: none;
1486
+
1487
+ .csv-table {
1488
+ ::ng-deep {
1489
+ .p-datatable-wrapper {
1490
+ height: 100%;
1491
+
1492
+ // Hide scrollbars for webkit browsers
1493
+ &::-webkit-scrollbar {
1494
+ display: none;
1495
+ }
1496
+
1497
+ // Hide scrollbars for Firefox
1498
+ scrollbar-width: none;
1499
+
1500
+ // Hide scrollbars for IE/Edge
1501
+ -ms-overflow-style: none;
1502
+ }
1503
+
1504
+ // Hide scrollbars on the table body wrapper
1505
+ .p-datatable-scrollable-body {
1506
+ &::-webkit-scrollbar {
1507
+ display: none;
1508
+ }
1509
+ scrollbar-width: none;
1510
+ -ms-overflow-style: none;
1511
+ }
1512
+
1513
+ // Hide scrollbars on the table header wrapper
1514
+ .p-datatable-scrollable-header {
1515
+ &::-webkit-scrollbar {
1516
+ display: none;
1517
+ }
1518
+ scrollbar-width: none;
1519
+ -ms-overflow-style: none;
1520
+ }
1521
+
1522
+ // Hide scrollbars on the table footer wrapper
1523
+ .p-datatable-scrollable-footer {
1524
+ &::-webkit-scrollbar {
1525
+ display: none;
1526
+ }
1527
+ scrollbar-width: none;
1528
+ -ms-overflow-style: none;
1529
+ }
1530
+
1531
+ // Additional scrollbar hiding for any scrollable elements
1532
+ .p-scrollbar-wrapper {
1533
+ &::-webkit-scrollbar {
1534
+ display: none;
1535
+ }
1536
+ scrollbar-width: none;
1537
+ -ms-overflow-style: none;
1538
+ }
1539
+
1540
+ .p-datatable-table {
1541
+ border-collapse: collapse;
1542
+ }
1543
+
1544
+ .p-datatable-thead > tr > th {
1545
+ background-color: #f8f9fa;
1546
+ border: 1px solid #e5e7eb;
1547
+ padding: 0.75rem;
1548
+ font-weight: 600;
1549
+ color: #374151;
1550
+ text-align: left;
1551
+ position: sticky;
1552
+ top: 0;
1553
+ z-index: 1;
1554
+ word-wrap: break-word;
1555
+ white-space: normal;
1556
+
1557
+ &.csv-header-cell {
1558
+ background-color: #f1f5f9;
1559
+ font-weight: 700;
1560
+ color: #1e293b;
1561
+ }
1562
+ }
1563
+
1564
+ .p-datatable-tbody > tr > td {
1565
+ border: 1px solid #e5e7eb;
1566
+ padding: 0.75rem;
1567
+ color: #374151;
1568
+ vertical-align: top;
1569
+ word-wrap: break-word;
1570
+ white-space: normal;
1571
+
1572
+ &.csv-header-cell {
1573
+ background-color: #f1f5f9;
1574
+ font-weight: 600;
1575
+ color: #1e293b;
1576
+ }
1577
+ }
1578
+
1579
+ .p-datatable-tbody > tr:nth-child(even) {
1580
+ background-color: #f9fafb;
1581
+ }
1582
+
1583
+ .p-datatable-tbody > tr:hover {
1584
+ background-color: #f3f4f6;
1585
+ }
1586
+ }
1587
+ }
1588
+ }
1589
+ }
1590
+
1591
+ // Email Container
1592
+ .email-container {
1593
+ width: 100%;
1594
+ height: 100%;
1595
+ display: flex;
1596
+ flex-direction: column;
1597
+ background: white;
1598
+ border-radius: 8px;
1599
+ overflow: auto;
1600
+
1601
+ .loading-container {
1602
+ width: 100%;
1603
+ height: 100%;
1604
+ display: flex;
1605
+ flex-direction: column;
1606
+ align-items: center;
1607
+ justify-content: center;
1608
+ padding: 2rem;
1609
+ text-align: center;
1610
+ color: #6b7280;
1611
+
1612
+ i {
1613
+ margin-bottom: 1rem;
1614
+ }
1615
+
1616
+ p {
1617
+ margin: 0;
1618
+ color: #9ca3af;
1619
+ font-size: 0.875rem;
1620
+ }
1621
+ }
1622
+
1623
+ .error-container {
1624
+ width: 100%;
1625
+ height: 100%;
1626
+ display: flex;
1627
+ align-items: center;
1628
+ justify-content: center;
1629
+ padding: 2rem;
1630
+
1631
+ .error-content {
1632
+ text-align: center;
1633
+ max-width: 400px;
1634
+
1635
+ i {
1636
+ margin-bottom: 1rem;
1637
+ }
1638
+
1639
+ h4 {
1640
+ margin: 0 0 0.5rem 0;
1641
+ color: #111827;
1642
+ font-size: 1.25rem;
1643
+ }
1644
+
1645
+ p {
1646
+ margin: 0 0 1.5rem 0;
1647
+ color: #6b7280;
1648
+ font-size: 0.875rem;
1649
+ }
1650
+
1651
+ .error-actions {
1652
+ display: flex;
1653
+ justify-content: center;
1654
+ gap: 0.5rem;
1655
+ }
1656
+ }
1657
+ }
1658
+
1659
+ .no-email-data {
1660
+ width: 100%;
1661
+ height: 100%;
1662
+ display: flex;
1663
+ flex-direction: column;
1664
+ align-items: center;
1665
+ justify-content: center;
1666
+ padding: 2rem;
1667
+ text-align: center;
1668
+ color: #6b7280;
1669
+
1670
+ i {
1671
+ margin-bottom: 1rem;
1672
+ }
1673
+
1674
+ p {
1675
+ margin: 0;
1676
+ color: #9ca3af;
1677
+ font-size: 0.875rem;
1678
+ }
1679
+ }
1680
+
1681
+ .email-viewer {
1682
+ display: flex;
1683
+ flex-direction: column;
1684
+ height: 100%;
1685
+ overflow: hidden;
1686
+
1687
+ .email-header {
1688
+ position: relative;
1689
+ padding: 1.5rem;
1690
+ border-bottom: 2px solid #e5e7eb;
1691
+ background: linear-gradient(to bottom, #ffffff, #f9fafb);
1692
+
1693
+ .email-actions {
1694
+ position: absolute;
1695
+ top: 1rem;
1696
+ right: 1rem;
1697
+ display: flex;
1698
+ gap: 0.5rem;
1699
+ }
1700
+
1701
+ .email-subject {
1702
+ margin: 0 0 1rem 0;
1703
+ padding-right: 100px;
1704
+ color: #111827;
1705
+ font-size: 1.5rem;
1706
+ font-weight: 600;
1707
+ line-height: 1.4;
1708
+ word-break: break-word;
1709
+ }
1710
+
1711
+ .email-metadata {
1712
+ display: flex;
1713
+ flex-direction: column;
1714
+ gap: 0.5rem;
1715
+
1716
+ .email-field {
1717
+ display: flex;
1718
+ gap: 0.75rem;
1719
+ font-size: 0.875rem;
1720
+ line-height: 1.5;
1721
+
1722
+ .field-label {
1723
+ min-width: 80px;
1724
+ color: #6b7280;
1725
+ font-weight: 600;
1726
+ }
1727
+
1728
+ .field-value {
1729
+ color: #374151;
1730
+ word-break: break-word;
1731
+ flex: 1;
1732
+
1733
+ i {
1734
+ margin-right: 0.25rem;
1735
+ color: #6b7280;
1736
+ }
1737
+ }
1738
+ }
1739
+ }
1740
+ }
1741
+
1742
+ .email-body-container {
1743
+ flex: 1;
1744
+ overflow: auto;
1745
+ padding: 1.5rem;
1746
+ background: white;
1747
+
1748
+ .email-body {
1749
+ max-width: 100%;
1750
+ min-height: 200px;
1751
+
1752
+ &.email-body-html {
1753
+ ::ng-deep {
1754
+ // Style common HTML elements in emails
1755
+ p {
1756
+ margin: 0 0 1rem 0;
1757
+ line-height: 1.6;
1758
+ }
1759
+
1760
+ a {
1761
+ color: #3b82f6;
1762
+ text-decoration: none;
1763
+
1764
+ &:hover {
1765
+ text-decoration: underline;
1766
+ }
1767
+ }
1768
+
1769
+ img {
1770
+ max-width: 100%;
1771
+ height: auto;
1772
+ border-radius: 4px;
1773
+ }
1774
+
1775
+ table {
1776
+ border-collapse: collapse;
1777
+ width: 100%;
1778
+ margin: 1rem 0;
1779
+
1780
+ td, th {
1781
+ padding: 0.5rem;
1782
+ border: 1px solid #e5e7eb;
1783
+ }
1784
+
1785
+ th {
1786
+ background-color: #f9fafb;
1787
+ font-weight: 600;
1788
+ }
1789
+ }
1790
+
1791
+ blockquote {
1792
+ margin: 1rem 0;
1793
+ padding-left: 1rem;
1794
+ border-left: 3px solid #e5e7eb;
1795
+ color: #6b7280;
1796
+ }
1797
+
1798
+ ul, ol {
1799
+ margin: 0 0 1rem 0;
1800
+ padding-left: 1.5rem;
1801
+ }
1802
+
1803
+ li {
1804
+ margin: 0.25rem 0;
1805
+ }
1806
+ }
1807
+ }
1808
+
1809
+ &.email-body-text {
1810
+ pre {
1811
+ margin: 0;
1812
+ padding: 1rem;
1813
+ background: #f9fafb;
1814
+ border: 1px solid #e5e7eb;
1815
+ border-radius: 6px;
1816
+ font-family: 'Courier New', Courier, monospace;
1817
+ font-size: 0.875rem;
1818
+ line-height: 1.6;
1819
+ color: #374151;
1820
+ white-space: pre-wrap;
1821
+ word-break: break-word;
1822
+ overflow-x: auto;
1823
+ }
1824
+ }
1825
+ }
1826
+ }
1827
+
1828
+ .email-attachments {
1829
+ padding: 1rem 1.5rem;
1830
+ border-top: 1px solid #e5e7eb;
1831
+ background: #f9fafb;
1832
+
1833
+ h4 {
1834
+ margin: 0 0 0.75rem 0;
1835
+ color: #374151;
1836
+ font-size: 0.875rem;
1837
+ font-weight: 600;
1838
+ text-transform: uppercase;
1839
+ letter-spacing: 0.05em;
1840
+ }
1841
+
1842
+ .attachment-list {
1843
+ display: flex;
1844
+ flex-direction: column;
1845
+ gap: 0.5rem;
1846
+
1847
+ .attachment-item {
1848
+ display: flex;
1849
+ align-items: center;
1850
+ gap: 0.5rem;
1851
+ padding: 0.625rem 0.875rem;
1852
+ background: white;
1853
+ border: 1px solid #e5e7eb;
1854
+ border-radius: 6px;
1855
+ font-size: 0.875rem;
1856
+ color: #374151;
1857
+ transition: all 0.2s ease;
1858
+
1859
+ i {
1860
+ color: #6b7280;
1861
+ font-size: 1rem;
1862
+ }
1863
+
1864
+ span {
1865
+ word-break: break-word;
1866
+ }
1867
+
1868
+ &:hover {
1869
+ background: #f3f4f6;
1870
+ border-color: #d1d5db;
1871
+ }
1872
+ }
1873
+ }
1874
+ }
1875
+ }
1876
+ }
1877
+ }