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,1877 +0,0 @@
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
- }