ngx-techlify-core 11.4.6 → 11.4.7

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 (333) hide show
  1. package/README.md +24 -24
  2. package/bundles/ngx-techlify-core.umd.js +7861 -7849
  3. package/bundles/ngx-techlify-core.umd.js.map +1 -1
  4. package/bundles/ngx-techlify-core.umd.min.js +2 -2
  5. package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
  6. package/esm2015/lib/action-popup/action-popup.component.js +32 -32
  7. package/esm2015/lib/action-popup/action-popup.model.js +3 -3
  8. package/esm2015/lib/action-popup/action-popup.module.js +26 -26
  9. package/esm2015/lib/action-popup/index.js +3 -3
  10. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +12 -12
  11. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +49 -49
  12. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +25 -25
  13. package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +12 -12
  14. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +132 -132
  15. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +29 -29
  16. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +12 -12
  17. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +67 -67
  18. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +25 -25
  19. package/esm2015/lib/audit-log/audit-log-routing.module.js +19 -19
  20. package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +12 -12
  21. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +60 -60
  22. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +21 -21
  23. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +12 -12
  24. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +57 -57
  25. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +21 -21
  26. package/esm2015/lib/audit-log/audit-log.module.js +20 -20
  27. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +12 -12
  28. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +35 -35
  29. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +21 -21
  30. package/esm2015/lib/core/alert.service.js +39 -39
  31. package/esm2015/lib/core/api-prefix.interceptor.js +28 -28
  32. package/esm2015/lib/core/authentication.guard.js +39 -39
  33. package/esm2015/lib/core/authentication.service.js +59 -59
  34. package/esm2015/lib/core/cache.interceptor.js +60 -60
  35. package/esm2015/lib/core/config.service.js +47 -47
  36. package/esm2015/lib/core/core.module.js +42 -42
  37. package/esm2015/lib/core/credentials.service.js +84 -84
  38. package/esm2015/lib/core/dataManager.service.js +120 -120
  39. package/esm2015/lib/core/error-handler.interceptor.js +53 -53
  40. package/esm2015/lib/core/error-handler.service.js +59 -59
  41. package/esm2015/lib/core/form-validator.service.js +23 -23
  42. package/esm2015/lib/core/header.interceptor.js +22 -22
  43. package/esm2015/lib/core/http-cache.service.js +110 -110
  44. package/esm2015/lib/core/http.service.js +82 -82
  45. package/esm2015/lib/core/index.js +21 -21
  46. package/esm2015/lib/core/logger.service.js +100 -100
  47. package/esm2015/lib/core/route-reusable-strategy.js +35 -35
  48. package/esm2015/lib/core/snack/snack.component.js +33 -33
  49. package/esm2015/lib/core/snack/snack.module.js +25 -25
  50. package/esm2015/lib/core/storage.service.js +36 -36
  51. package/esm2015/lib/core/techlify-config.model.js +28 -28
  52. package/esm2015/lib/core/token.interceptor.js +30 -30
  53. package/esm2015/lib/data-table/data-table.component.js +190 -190
  54. package/esm2015/lib/data-table/data-table.model.js +11 -11
  55. package/esm2015/lib/data-table/data-table.module.js +25 -25
  56. package/esm2015/lib/data-table/index.js +3 -3
  57. package/esm2015/lib/date-validator.js +10 -10
  58. package/esm2015/lib/document-viewer/document-viewer.component.js +58 -58
  59. package/esm2015/lib/document-viewer/document-viewer.module.js +25 -25
  60. package/esm2015/lib/document-viewer/index.js +3 -3
  61. package/esm2015/lib/document-viewer/viewer-config.model.js +3 -3
  62. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +26 -26
  63. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +72 -72
  64. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +23 -23
  65. package/esm2015/lib/email-subscription/email-subscription-for-user/index.js +2 -2
  66. package/esm2015/lib/email-subscription/email-subscription-routing.module.js +12 -12
  67. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +12 -12
  68. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +102 -102
  69. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +28 -28
  70. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js +2 -2
  71. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +28 -28
  72. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +153 -153
  73. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +27 -27
  74. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js +1 -1
  75. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +12 -12
  76. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +15 -15
  77. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +12 -12
  78. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +99 -99
  79. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +27 -27
  80. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js +2 -2
  81. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +28 -28
  82. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +155 -155
  83. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +29 -29
  84. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js +2 -2
  85. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +12 -12
  86. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +50 -50
  87. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +25 -25
  88. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js +2 -2
  89. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +12 -12
  90. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +15 -15
  91. package/esm2015/lib/email-subscription/email-subscription.module.js +15 -15
  92. package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +138 -138
  93. package/esm2015/lib/entity-files/entity-file.service.js +42 -42
  94. package/esm2015/lib/entity-files/entity-files-view-all.component.js +208 -204
  95. package/esm2015/lib/entity-files/entity-files-view-all.module.js +34 -34
  96. package/esm2015/lib/entity-files/index.js +3 -3
  97. package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +32 -32
  98. package/esm2015/lib/export-excel/export-excel.module.js +17 -17
  99. package/esm2015/lib/file-dropper/file-dropper.component.js +122 -122
  100. package/esm2015/lib/file-dropper/file-dropper.model.js +3 -3
  101. package/esm2015/lib/file-dropper/file-dropper.module.js +21 -21
  102. package/esm2015/lib/file-dropper/index.js +3 -3
  103. package/esm2015/lib/import-csv/data-import/data-import.component.js +18 -18
  104. package/esm2015/lib/import-csv/failed-items-list/failed-items-list.component.js +33 -33
  105. package/esm2015/lib/import-csv/field-mapping/field-mapping.component.js +148 -148
  106. package/esm2015/lib/import-csv/import-csv-config.js +2 -2
  107. package/esm2015/lib/import-csv/import-csv.component.js +196 -196
  108. package/esm2015/lib/import-csv/import-csv.module.js +46 -46
  109. package/esm2015/lib/import-csv/import-history-list/import-history-list.component.js +71 -71
  110. package/esm2015/lib/import-csv/import-success/import-success.component.js +19 -19
  111. package/esm2015/lib/loader/index.js +2 -2
  112. package/esm2015/lib/loader/loader.component.js +22 -22
  113. package/esm2015/lib/loader/loader.module.js +21 -21
  114. package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +20 -20
  115. package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +88 -88
  116. package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +27 -27
  117. package/esm2015/lib/material.module.js +60 -60
  118. package/esm2015/lib/note/comment-form/comment-form.component.js +73 -73
  119. package/esm2015/lib/note/index.js +4 -4
  120. package/esm2015/lib/note/note-form/note-form.component.js +81 -81
  121. package/esm2015/lib/note/note-list/note-list.component.js +151 -151
  122. package/esm2015/lib/note/note.module.js +36 -36
  123. package/esm2015/lib/note/note.service.js +31 -31
  124. package/esm2015/lib/read-more/read-more.component.js +43 -43
  125. package/esm2015/lib/read-more/read-more.module.js +21 -21
  126. package/esm2015/lib/searchable-selector/index.js +3 -3
  127. package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +81 -81
  128. package/esm2015/lib/searchable-selector/searchable-selector.component.js +307 -307
  129. package/esm2015/lib/searchable-selector/searchable-selector.module.js +28 -28
  130. package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +27 -27
  131. package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +78 -78
  132. package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +177 -177
  133. package/esm2015/lib/techlify-feature/techlify-feature.module.js +30 -30
  134. package/esm2015/lib/techlify-feature/techlify-feature.routing.js +12 -12
  135. package/esm2015/lib/techlify-feature/techlify-feature.service.js +28 -28
  136. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.js +15 -15
  137. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.js +269 -269
  138. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.js +25 -25
  139. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.js +168 -168
  140. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.js +29 -29
  141. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +114 -114
  142. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +28 -28
  143. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +22 -22
  144. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +143 -143
  145. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +28 -28
  146. package/esm2015/lib/techlify-update/techlify-update-routing.module.js +22 -22
  147. package/esm2015/lib/techlify-update/techlify-update.module.js +30 -30
  148. package/esm2015/lib/techlify-update/techlify-update.service.js +43 -43
  149. package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +161 -161
  150. package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +82 -82
  151. package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +62 -62
  152. package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +29 -29
  153. package/esm2015/lib/techlify-update/update-view/update-view.component.js +36 -36
  154. package/esm2015/lib/techlify-update/update-view/update-view.module.js +24 -24
  155. package/esm2015/lib/timeline-filter/calculate-timeline.js +102 -102
  156. package/esm2015/lib/timeline-filter/index.js +4 -4
  157. package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +12 -12
  158. package/esm2015/lib/timeline-filter/timeline-filter.component.js +213 -213
  159. package/esm2015/lib/timeline-filter/timeline-filter.module.js +23 -23
  160. package/esm2015/lib/timeline-filter/timeline.model.js +18 -18
  161. package/esm2015/lib/utility/date-utils.service.js +48 -48
  162. package/esm2015/lib/utility/index.js +4 -4
  163. package/esm2015/lib/utility/num-items-selector.component.js +29 -29
  164. package/esm2015/lib/utility/number-selector.component.js +38 -38
  165. package/esm2015/lib/utility/utility.module.js +20 -20
  166. package/esm2015/ngx-techlify-core.js +59 -59
  167. package/esm2015/public-api.js +95 -95
  168. package/fesm2015/ngx-techlify-core.js +6726 -6722
  169. package/fesm2015/ngx-techlify-core.js.map +1 -1
  170. package/lib/action-popup/action-popup.component.d.ts +14 -14
  171. package/lib/action-popup/action-popup.model.d.ts +5 -5
  172. package/lib/action-popup/action-popup.module.d.ts +2 -2
  173. package/lib/action-popup/index.d.ts +2 -2
  174. package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +2 -2
  175. package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +12 -12
  176. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -2
  177. package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +2 -2
  178. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +32 -32
  179. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +2 -2
  180. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +2 -2
  181. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +19 -19
  182. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +2 -2
  183. package/lib/audit-log/audit-log-routing.module.d.ts +2 -2
  184. package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +2 -2
  185. package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +17 -17
  186. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -2
  187. package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +2 -2
  188. package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +15 -15
  189. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -2
  190. package/lib/audit-log/audit-log.module.d.ts +2 -2
  191. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +2 -2
  192. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +11 -11
  193. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +2 -2
  194. package/lib/core/alert.service.d.ts +12 -12
  195. package/lib/core/api-prefix.interceptor.d.ts +11 -11
  196. package/lib/core/authentication.guard.d.ts +10 -10
  197. package/lib/core/authentication.service.d.ts +23 -23
  198. package/lib/core/cache.interceptor.d.ts +21 -21
  199. package/lib/core/config.service.d.ts +19 -19
  200. package/lib/core/core.module.d.ts +3 -3
  201. package/lib/core/credentials.service.d.ts +36 -36
  202. package/lib/core/dataManager.service.d.ts +70 -70
  203. package/lib/core/error-handler.interceptor.d.ts +14 -14
  204. package/lib/core/error-handler.service.d.ts +14 -14
  205. package/lib/core/form-validator.service.d.ts +8 -8
  206. package/lib/core/header.interceptor.d.ts +8 -8
  207. package/lib/core/http-cache.service.d.ts +54 -54
  208. package/lib/core/http.service.d.ts +56 -56
  209. package/lib/core/index.d.ts +20 -20
  210. package/lib/core/logger.service.d.ts +85 -85
  211. package/lib/core/route-reusable-strategy.d.ts +13 -13
  212. package/lib/core/snack/snack.component.d.ts +8 -8
  213. package/lib/core/snack/snack.module.d.ts +2 -2
  214. package/lib/core/storage.service.d.ts +15 -15
  215. package/lib/core/techlify-config.model.d.ts +18 -18
  216. package/lib/core/token.interceptor.d.ts +11 -11
  217. package/lib/data-table/data-table.component.d.ts +60 -60
  218. package/lib/data-table/data-table.model.d.ts +46 -46
  219. package/lib/data-table/data-table.module.d.ts +2 -2
  220. package/lib/data-table/index.d.ts +2 -2
  221. package/lib/date-validator.d.ts +1 -1
  222. package/lib/document-viewer/document-viewer.component.d.ts +16 -16
  223. package/lib/document-viewer/document-viewer.module.d.ts +2 -2
  224. package/lib/document-viewer/index.d.ts +2 -2
  225. package/lib/document-viewer/viewer-config.model.d.ts +5 -5
  226. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +7 -7
  227. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +17 -17
  228. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +2 -2
  229. package/lib/email-subscription/email-subscription-for-user/index.d.ts +1 -1
  230. package/lib/email-subscription/email-subscription-routing.module.d.ts +2 -2
  231. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +2 -2
  232. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +32 -32
  233. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +2 -2
  234. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts +1 -1
  235. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +9 -9
  236. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +30 -30
  237. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +2 -2
  238. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +1 -1
  239. package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +2 -2
  240. package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +2 -2
  241. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +2 -2
  242. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +32 -32
  243. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +2 -2
  244. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts +1 -1
  245. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +9 -9
  246. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +32 -32
  247. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +2 -2
  248. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts +1 -1
  249. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +2 -2
  250. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +13 -13
  251. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +2 -2
  252. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts +1 -1
  253. package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +2 -2
  254. package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +2 -2
  255. package/lib/email-subscription/email-subscription.module.d.ts +2 -2
  256. package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +34 -34
  257. package/lib/entity-files/entity-file.service.d.ts +10 -10
  258. package/lib/entity-files/entity-files-view-all.component.d.ts +45 -44
  259. package/lib/entity-files/entity-files-view-all.module.d.ts +2 -2
  260. package/lib/entity-files/index.d.ts +2 -2
  261. package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +8 -8
  262. package/lib/export-excel/export-excel.module.d.ts +2 -2
  263. package/lib/file-dropper/file-dropper.component.d.ts +33 -33
  264. package/lib/file-dropper/file-dropper.model.d.ts +10 -10
  265. package/lib/file-dropper/file-dropper.module.d.ts +2 -2
  266. package/lib/file-dropper/index.d.ts +2 -2
  267. package/lib/import-csv/data-import/data-import.component.d.ts +6 -6
  268. package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts +12 -12
  269. package/lib/import-csv/field-mapping/field-mapping.component.d.ts +34 -34
  270. package/lib/import-csv/import-csv-config.d.ts +17 -17
  271. package/lib/import-csv/import-csv.component.d.ts +33 -33
  272. package/lib/import-csv/import-csv.module.d.ts +2 -2
  273. package/lib/import-csv/import-history-list/import-history-list.component.d.ts +21 -21
  274. package/lib/import-csv/import-success/import-success.component.d.ts +8 -8
  275. package/lib/loader/index.d.ts +1 -1
  276. package/lib/loader/loader.component.d.ts +8 -8
  277. package/lib/loader/loader.module.d.ts +2 -2
  278. package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +2 -2
  279. package/lib/login-history-for-user/login-history-for-user.component.d.ts +23 -23
  280. package/lib/login-history-for-user/login-history-for-user.module.d.ts +2 -2
  281. package/lib/material.module.d.ts +2 -2
  282. package/lib/note/comment-form/comment-form.component.d.ts +22 -22
  283. package/lib/note/index.d.ts +3 -3
  284. package/lib/note/note-form/note-form.component.d.ts +27 -27
  285. package/lib/note/note-list/note-list.component.d.ts +28 -28
  286. package/lib/note/note.module.d.ts +2 -2
  287. package/lib/note/note.service.d.ts +9 -9
  288. package/lib/read-more/read-more.component.d.ts +12 -12
  289. package/lib/read-more/read-more.module.d.ts +2 -2
  290. package/lib/searchable-selector/index.d.ts +2 -2
  291. package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +23 -23
  292. package/lib/searchable-selector/searchable-selector.component.d.ts +81 -81
  293. package/lib/searchable-selector/searchable-selector.module.d.ts +2 -2
  294. package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +9 -9
  295. package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +17 -17
  296. package/lib/techlify-feature/techlify-feature-listing.component.d.ts +37 -37
  297. package/lib/techlify-feature/techlify-feature.module.d.ts +2 -2
  298. package/lib/techlify-feature/techlify-feature.routing.d.ts +2 -2
  299. package/lib/techlify-feature/techlify-feature.service.d.ts +8 -8
  300. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +12 -12
  301. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +76 -76
  302. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +2 -2
  303. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +58 -58
  304. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +2 -2
  305. package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +30 -30
  306. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +2 -2
  307. package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +2 -2
  308. package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +31 -31
  309. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +2 -2
  310. package/lib/techlify-update/techlify-update-routing.module.d.ts +2 -2
  311. package/lib/techlify-update/techlify-update.module.d.ts +2 -2
  312. package/lib/techlify-update/techlify-update.service.d.ts +13 -13
  313. package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +31 -31
  314. package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +25 -25
  315. package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +16 -16
  316. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +2 -2
  317. package/lib/techlify-update/update-view/update-view.component.d.ts +14 -14
  318. package/lib/techlify-update/update-view/update-view.module.d.ts +2 -2
  319. package/lib/timeline-filter/calculate-timeline.d.ts +6 -6
  320. package/lib/timeline-filter/index.d.ts +3 -3
  321. package/lib/timeline-filter/timeline-filter-routing.module.d.ts +2 -2
  322. package/lib/timeline-filter/timeline-filter.component.d.ts +61 -61
  323. package/lib/timeline-filter/timeline-filter.module.d.ts +2 -2
  324. package/lib/timeline-filter/timeline.model.d.ts +17 -17
  325. package/lib/utility/date-utils.service.d.ts +21 -21
  326. package/lib/utility/index.d.ts +3 -3
  327. package/lib/utility/num-items-selector.component.d.ts +16 -16
  328. package/lib/utility/number-selector.component.d.ts +20 -20
  329. package/lib/utility/utility.module.d.ts +2 -2
  330. package/ngx-techlify-core.d.ts +59 -59
  331. package/ngx-techlify-core.metadata.json +1 -1
  332. package/package.json +1 -1
  333. package/public-api.d.ts +91 -91
@@ -1,204 +1,208 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { Component, Input } from '@angular/core';
3
- import { Location } from '@angular/common';
4
- import { MatDialog } from '@angular/material/dialog';
5
- import { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';
6
- import { EntityFileService } from './entity-file.service';
7
- import { FormControl } from '@angular/forms';
8
- import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
9
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
10
- import { AlertService } from '../core/alert.service';
11
- import { ActionPopupComponent } from '../action-popup/action-popup.component';
12
- let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
13
- constructor(entityFileService, location, alertService, dialog) {
14
- this.entityFileService = entityFileService;
15
- this.location = location;
16
- this.alertService = alertService;
17
- this.dialog = dialog;
18
- this.viewOnly = false;
19
- this.title = "File";
20
- this.filters = {};
21
- this.entityFiles = [];
22
- this.displayedColumns = [
23
- 'index',
24
- 'title',
25
- 'details',
26
- 'file_size',
27
- 'uploaded_on',
28
- ];
29
- this.isWorking = false;
30
- this.search = new FormControl('');
31
- this.page = 1;
32
- this.perPage = 25;
33
- this.lastPage = 0;
34
- this.fileList = [];
35
- }
36
- ngOnInit() {
37
- //File dropper config
38
- this.fileConfig = {
39
- fileId: "entityDashboardDropper",
40
- containerId: "entityDashboardDropperContainer",
41
- styles: {
42
- height: "500px"
43
- },
44
- multiple: false,
45
- acceptFile: "*",
46
- maxSize: 10,
47
- acceptFileText: "All Files"
48
- };
49
- this.viewerConfig = {
50
- imageStyle: {
51
- height: '200px',
52
- width: '200px'
53
- },
54
- viewerStyle: {
55
- height: ' 160px',
56
- width: '200px'
57
- },
58
- hideRemove: true
59
- };
60
- if (this.hideTitleAndDetails) {
61
- this.displayedColumns = this.displayedColumns.filter(x => (x !== 'details') && (x !== 'title'));
62
- }
63
- this.filters = {
64
- entity_type: this.entityType,
65
- entity_id: this.entityId,
66
- title: ""
67
- };
68
- this.search.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => {
69
- this.filters.title = value;
70
- this.reload();
71
- });
72
- this.fetchEntityFilesDetails();
73
- if (!this.viewOnly) {
74
- this.displayedColumns.push('actions');
75
- }
76
- }
77
- fetchEntityFilesDetails() {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- this.filters.page = this.page;
80
- this.filters.perPage = this.perPage;
81
- this.isWorking = true;
82
- const result = yield this.entityFileService.getEntityFiles(this.filters);
83
- this.lastPage = result.last_page || this.page;
84
- this.entityFiles = this.entityFiles.concat(result.data);
85
- this.isWorking = false;
86
- });
87
- }
88
- addEntityFile() {
89
- const dialogRef = this.dialog.open(EntityFileFormComponent, {
90
- width: "700px",
91
- data: {
92
- entity: this.filters,
93
- hideTitleAndDetails: this.hideTitleAndDetails
94
- },
95
- autoFocus: false,
96
- restoreFocus: false
97
- });
98
- dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
99
- if (result) {
100
- const files = [...this.entityFiles];
101
- files.push(result);
102
- this.entityFiles = files;
103
- }
104
- }));
105
- }
106
- editEntityFile(file) {
107
- const dialogRef = this.dialog.open(EntityFileFormComponent, {
108
- width: "700px",
109
- autoFocus: false,
110
- data: {
111
- file: file,
112
- hideTitleAndDetails: this.hideTitleAndDetails
113
- } // Any data passed here will be injected into the model
114
- });
115
- dialogRef.afterClosed().subscribe(result => {
116
- if (result) {
117
- this.reload();
118
- }
119
- });
120
- }
121
- deleteEntityFile(file) {
122
- const dialogRef = this.dialog.open(ActionPopupComponent, {
123
- width: "400px",
124
- data: {
125
- title: "Delete File",
126
- message: `Are you sure to proceed delete the file ${file.title}?`
127
- },
128
- autoFocus: false
129
- });
130
- dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
131
- if (result) {
132
- //Action confirmed
133
- const result = yield this.entityFileService.deleteEntityFile(file);
134
- this.alertService.addAlert("File successfully deleted", "success");
135
- this.reload();
136
- }
137
- }));
138
- }
139
- onScroll() {
140
- if (this.page < this.lastPage && !this.isWorking) {
141
- this.page += 1;
142
- this.fetchEntityFilesDetails();
143
- }
144
- }
145
- reload() {
146
- this.entityFiles = [];
147
- this.page = 1;
148
- if (!this.isWorking) {
149
- this.fetchEntityFilesDetails();
150
- }
151
- }
152
- ngOnDestroy() { }
153
- resetFieldValue() {
154
- this.search.setValue("");
155
- }
156
- sizeOf(bytes) {
157
- if (!bytes) {
158
- return "0.00 B";
159
- }
160
- var e = Math.floor(Math.log(bytes) / Math.log(1024));
161
- return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';
162
- }
163
- fileChanged(event) {
164
- return __awaiter(this, void 0, void 0, function* () {
165
- this.fileList = event;
166
- if (this.fileList.length > 0) {
167
- const result = yield this.entityFileService.uploadEntityFile(this.fileList[0], {
168
- entity_type: this.entityType,
169
- entity_id: this.entityId,
170
- });
171
- this.fileList = [];
172
- this.alertService.addAlert('Successfull uploaded', 'success');
173
- this.reload();
174
- }
175
- });
176
- }
177
- };
178
- EntityFilesViewAllComponent.decorators = [
179
- { type: Component, args: [{
180
- selector: 'app-entity-files-view-all',
181
- template: "<div class=\"mat-typography\" *ngIf=\"!displayMode\">\n <div fxLayout=\"row\" fxLayoutGap=\"1rem\">\n <mat-card fxFlex=\"70%\">\n <mat-card-title fxLayout fxLayoutGap=\"1rem\">\n <h3 class=\"font-weight-bold primary-color\" fxLayout=\"center center\">\n <mat-icon>\n <span class=\"material-icons\">\n description\n </span>\n </mat-icon>\n {{title}}s\n </h3>\n <div>\n <button type=\"button\" class=\"mx-1\" mat-raised-button color=\"primary\" (click)=\"addEntityFile()\"\n *ngIf=\"!viewOnly\">\n <mat-icon>\n <span class=\"material-icons\">\n add_circle_outline\n </span>\n </mat-icon>\n {{title}}\n </button>\n </div>\n <mat-form-field *ngIf=\"!removeSearch\" appearance=\"outline\" style=\"font-size: 10px;\">\n <mat-label>Search</mat-label>\n <input type=\"text\" matInput [formControl]=\"search\" placeholder=\"Search\" name=\"title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filters.title\" matSuffix mat-icon-button (click)=\"resetFieldValue()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </mat-card-title>\n <mat-card-content class=\"entity-file-card\">\n <table mat-table [dataSource]=\"entityFiles\" class=\"w-100\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1.5\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">\n <div>\n <span>\n {{element.title}}\n </span>\n <span>\n <a href=\"{{element.url}}\" target=\"_blank\" class=\"text-decoration-none text-muted\">\n <button mat-icon-button type=\"button\">\n <mat-icon>download</mat-icon>\n </button>\n </a>\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Details Column -->\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.details}} </td>\n </ng-container>\n\n <!-- File size Column -->\n <ng-container matColumnDef=\"file_size\">\n <th mat-header-cell *matHeaderCellDef> File Size </th>\n <td mat-cell *matCellDef=\"let element\"> {{ sizeOf(element.file_size)}} </td>\n </ng-container>\n\n <!-- Uploaded On Column -->\n <ng-container matColumnDef=\"uploaded_on\">\n <th mat-header-cell *matHeaderCellDef> Uploaded On </th>\n <td mat-cell *matCellDef=\"let element\">\n <div>\n {{element.created_at | date: 'mediumDate'}}\n </div>\n <div class=\"text-muted\">\n By {{element.creator?.name}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" style=\"min-width:110px\" class=\"text-muted\">\n <button type=\"button\" mat-icon-button (click)=\"editEntityFile(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteEntityFile(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n <section fxFlex=\"30%\">\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\n </app-file-dropper>\n </section>\n </div>\n</div>\n\n<div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"displayMode\">\n <div *ngFor=\"let efile of entityFiles\">\n <app-document-viewer [file]=\"efile.file\" [fileUrl]=\"efile.url\" [config]=\"this.viewerConfig\" [disableEdit]=\"true\">\n </app-document-viewer>\n <a href=\"{{efile.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\n </div>\n</div>\n",
182
- styles: [""]
183
- },] }
184
- ];
185
- EntityFilesViewAllComponent.ctorParameters = () => [
186
- { type: EntityFileService },
187
- { type: Location },
188
- { type: AlertService },
189
- { type: MatDialog }
190
- ];
191
- EntityFilesViewAllComponent.propDecorators = {
192
- entityId: [{ type: Input }],
193
- entityType: [{ type: Input }],
194
- viewOnly: [{ type: Input }],
195
- removeSearch: [{ type: Input }],
196
- hideTitleAndDetails: [{ type: Input }],
197
- displayMode: [{ type: Input }],
198
- title: [{ type: Input }]
199
- };
200
- EntityFilesViewAllComponent = __decorate([
201
- UntilDestroy()
202
- ], EntityFilesViewAllComponent);
203
- export { EntityFilesViewAllComponent };
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGVzLXZpZXctYWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztJQVVqRSwyQkFBMkIsU0FBM0IsMkJBQTJCO0lBMEJ0QyxZQUNVLGlCQUFvQyxFQUNyQyxRQUFrQixFQUNqQixZQUEwQixFQUMxQixNQUFpQjtRQUhqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQTNCbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUsxQixV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QXhNQSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsZzlKQUFxRDs7YUFFdEQ7OztZQWZRLGlCQUFpQjtZQUhqQixRQUFRO1lBUVIsWUFBWTtZQVBaLFNBQVM7Ozt1QkFtQmYsS0FBSzt5QkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSztrQ0FDTCxLQUFLOzBCQUNMLEtBQUs7b0JBRUwsS0FBSzs7QUFSSywyQkFBMkI7SUFOdkMsWUFBWSxFQUFFO0dBTUYsMkJBQTJCLENBbU12QztTQW5NWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBFbnRpdHlGaWxlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZW50aXR5LWZpbGUtZm9ybS9lbnRpdHktZmlsZS1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbnRpdHlGaWxlU2VydmljZSB9IGZyb20gJy4vZW50aXR5LWZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25Qb3B1cCB9IGZyb20gJy4uL2FjdGlvbi1wb3B1cC9hY3Rpb24tcG9wdXAubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBuZ25lYXQvdW50aWwtZGVzdHJveVwiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2NvcmUvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1wb3B1cC9hY3Rpb24tcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlckNvbmZpZyB9IGZyb20gJy4uL2RvY3VtZW50LXZpZXdlci92aWV3ZXItY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEZpbGVEcm9wcGVyQ29uZmlnIH0gZnJvbSAnLi4vZmlsZS1kcm9wcGVyJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZW50aXR5LWZpbGVzLXZpZXctYWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5RmlsZXNWaWV3QWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZW50aXR5SWQ6IG51bWJlcjtcbiAgQElucHV0KCkgZW50aXR5VHlwZTogc3RyaW5nO1xuICBASW5wdXQoKSB2aWV3T25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZW1vdmVTZWFyY2g6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhpZGVUaXRsZUFuZERldGFpbHM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRpc3BsYXlNb2RlOiBib29sZWFuO1xuICB2aWV3ZXJDb25maWc6IFZpZXdlckNvbmZpZztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9IFwiRmlsZVwiO1xuICBmaWx0ZXJzOiBhbnkgPSB7fTtcbiAgZW50aXR5RmlsZXM6IGFueVtdID0gW107XG4gIGRpc3BsYXllZENvbHVtbnMgPSBbXG4gICAgJ2luZGV4JyxcbiAgICAndGl0bGUnLFxuICAgICdkZXRhaWxzJyxcbiAgICAnZmlsZV9zaXplJyxcbiAgICAndXBsb2FkZWRfb24nLFxuICBdO1xuICBpc1dvcmtpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VhcmNoOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHBhZ2U6IG51bWJlciA9IDE7XG4gIHBlclBhZ2U6IG51bWJlciA9IDI1O1xuICBsYXN0UGFnZTogbnVtYmVyID0gMDtcbiAgZmlsZUNvbmZpZzogRmlsZURyb3BwZXJDb25maWc7XG4gIGZpbGVMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZW50aXR5RmlsZVNlcnZpY2U6IEVudGl0eUZpbGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vRmlsZSBkcm9wcGVyIGNvbmZpZ1xuICAgIHRoaXMuZmlsZUNvbmZpZyA9IHtcbiAgICAgIGZpbGVJZDogXCJlbnRpdHlEYXNoYm9hcmREcm9wcGVyXCIsXG4gICAgICBjb250YWluZXJJZDogXCJlbnRpdHlEYXNoYm9hcmREcm9wcGVyQ29udGFpbmVyXCIsXG4gICAgICBzdHlsZXM6IHtcbiAgICAgICAgaGVpZ2h0OiBcIjUwMHB4XCJcbiAgICAgIH0sXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBhY2NlcHRGaWxlOiBcIipcIixcbiAgICAgIG1heFNpemU6IDEwLFxuICAgICAgYWNjZXB0RmlsZVRleHQ6IFwiQWxsIEZpbGVzXCJcbiAgICB9O1xuXG4gICAgdGhpcy52aWV3ZXJDb25maWcgPSB7XG4gICAgICBpbWFnZVN0eWxlOiB7XG4gICAgICAgIGhlaWdodDogJzIwMHB4JyxcbiAgICAgICAgd2lkdGg6ICcyMDBweCdcbiAgICAgIH0sXG4gICAgICB2aWV3ZXJTdHlsZToge1xuICAgICAgICBoZWlnaHQ6ICcgMTYwcHgnLFxuICAgICAgICB3aWR0aDogJzIwMHB4J1xuICAgICAgfSxcbiAgICAgIGhpZGVSZW1vdmU6IHRydWVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlscykge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmZpbHRlcih4ID0+ICh4ICE9PSAnZGV0YWlscycpICYmICh4ICE9PSAndGl0bGUnKSk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJzID0ge1xuICAgICAgZW50aXR5X3R5cGU6IHRoaXMuZW50aXR5VHlwZSxcbiAgICAgIGVudGl0eV9pZDogdGhpcy5lbnRpdHlJZCxcbiAgICAgIHRpdGxlOiBcIlwiXG4gICAgfTtcbiAgICB0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcnMudGl0bGUgPSB2YWx1ZTtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfSlcbiAgICB0aGlzLmZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCk7XG4gICAgaWYgKCF0aGlzLnZpZXdPbmx5KSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgnYWN0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCkge1xuICAgIHRoaXMuZmlsdGVycy5wYWdlID0gdGhpcy5wYWdlO1xuICAgIHRoaXMuZmlsdGVycy5wZXJQYWdlID0gdGhpcy5wZXJQYWdlO1xuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMuZW50aXR5RmlsZVNlcnZpY2UuZ2V0RW50aXR5RmlsZXModGhpcy5maWx0ZXJzKTtcbiAgICB0aGlzLmxhc3RQYWdlID0gcmVzdWx0Lmxhc3RfcGFnZSB8fCB0aGlzLnBhZ2U7XG4gICAgdGhpcy5lbnRpdHlGaWxlcyA9IHRoaXMuZW50aXR5RmlsZXMuY29uY2F0KHJlc3VsdC5kYXRhKTtcbiAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICB9XG5cbiAgYWRkRW50aXR5RmlsZSgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEVudGl0eUZpbGVGb3JtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogXCI3MDBweFwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBlbnRpdHk6IHRoaXMuZmlsdGVycyxcbiAgICAgICAgaGlkZVRpdGxlQW5kRGV0YWlsczogdGhpcy5oaWRlVGl0bGVBbmREZXRhaWxzXG4gICAgICB9LFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyByZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCBmaWxlcyA9IFsuLi50aGlzLmVudGl0eUZpbGVzXTtcbiAgICAgICAgZmlsZXMucHVzaChyZXN1bHQpO1xuICAgICAgICB0aGlzLmVudGl0eUZpbGVzID0gZmlsZXM7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBlZGl0RW50aXR5RmlsZShmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEVudGl0eUZpbGVGb3JtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogXCI3MDBweFwiLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgaGlkZVRpdGxlQW5kRGV0YWlsczogdGhpcy5oaWRlVGl0bGVBbmREZXRhaWxzXG4gICAgICB9IC8vIEFueSBkYXRhIHBhc3NlZCBoZXJlIHdpbGwgYmUgaW5qZWN0ZWQgaW50byB0aGUgbW9kZWxcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRW50aXR5RmlsZShmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvblBvcHVwQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogXCI0MDBweFwiLFxuICAgICAgZGF0YTogPEFjdGlvblBvcHVwPntcbiAgICAgICAgdGl0bGU6IFwiRGVsZXRlIEZpbGVcIixcbiAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB0byBwcm9jZWVkIGRlbGV0ZSB0aGUgZmlsZSAke2ZpbGUudGl0bGV9P2BcbiAgICAgIH0sXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXN5bmMgcmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgLy9BY3Rpb24gY29uZmlybWVkXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZW50aXR5RmlsZVNlcnZpY2UuZGVsZXRlRW50aXR5RmlsZShcbiAgICAgICAgICBmaWxlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KFxuICAgICAgICAgIFwiRmlsZSBzdWNjZXNzZnVsbHkgZGVsZXRlZFwiLFxuICAgICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVsb2FkKCk7XG5cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLnBhZ2UgPCB0aGlzLmxhc3RQYWdlICYmICF0aGlzLmlzV29ya2luZykge1xuICAgICAgdGhpcy5wYWdlICs9IDE7XG4gICAgICB0aGlzLmZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMuZW50aXR5RmlsZXMgPSBbXTtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIGlmICghdGhpcy5pc1dvcmtpbmcpIHtcbiAgICAgIHRoaXMuZmV0Y2hFbnRpdHlGaWxlc0RldGFpbHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHsgfVxuXG4gIHJlc2V0RmllbGRWYWx1ZSgpIHtcbiAgICB0aGlzLnNlYXJjaC5zZXRWYWx1ZShcIlwiKTtcbiAgfVxuXG4gIHNpemVPZihieXRlcykge1xuICAgIGlmICghYnl0ZXMpIHsgcmV0dXJuIFwiMC4wMCBCXCI7IH1cbiAgICB2YXIgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coMTAyNCkpO1xuICAgIHJldHVybiAoYnl0ZXMgLyBNYXRoLnBvdygxMDI0LCBlKSkudG9GaXhlZCgyKSArICcgJyArICcgS01HVFAnLmNoYXJBdChlKSArICdCJztcbiAgfVxuXG4gIGFzeW5jIGZpbGVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbGVMaXN0ID0gZXZlbnQ7XG5cbiAgICBpZiAodGhpcy5maWxlTGlzdC5sZW5ndGggPiAwKSB7XG5cbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgdGhpcy5lbnRpdHlGaWxlU2VydmljZS51cGxvYWRFbnRpdHlGaWxlKFxuICAgICAgICB0aGlzLmZpbGVMaXN0WzBdLFxuICAgICAgICB7XG4gICAgICAgICAgZW50aXR5X3R5cGU6IHRoaXMuZW50aXR5VHlwZSxcbiAgICAgICAgICBlbnRpdHlfaWQ6IHRoaXMuZW50aXR5SWQsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmZpbGVMaXN0ID0gW107XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnU3VjY2Vzc2Z1bGwgdXBsb2FkZWQnLCAnc3VjY2VzcycpO1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Component, Input } from '@angular/core';
3
+ import { Location } from '@angular/common';
4
+ import { MatDialog } from '@angular/material/dialog';
5
+ import { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';
6
+ import { EntityFileService } from './entity-file.service';
7
+ import { FormControl } from '@angular/forms';
8
+ import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
9
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
10
+ import { AlertService } from '../core/alert.service';
11
+ import { ActionPopupComponent } from '../action-popup/action-popup.component';
12
+ let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
13
+ constructor(entityFileService, location, alertService, dialog) {
14
+ this.entityFileService = entityFileService;
15
+ this.location = location;
16
+ this.alertService = alertService;
17
+ this.dialog = dialog;
18
+ this.viewOnly = false;
19
+ this.allowMultipleFiles = false;
20
+ this.title = "File";
21
+ this.filters = {};
22
+ this.entityFiles = [];
23
+ this.displayedColumns = [
24
+ 'index',
25
+ 'title',
26
+ 'details',
27
+ 'file_size',
28
+ 'uploaded_on',
29
+ ];
30
+ this.isWorking = false;
31
+ this.search = new FormControl('');
32
+ this.page = 1;
33
+ this.perPage = 25;
34
+ this.lastPage = 0;
35
+ this.fileList = [];
36
+ }
37
+ ngOnInit() {
38
+ //File dropper config
39
+ this.fileConfig = {
40
+ fileId: "entityDashboardDropper",
41
+ containerId: "entityDashboardDropperContainer",
42
+ styles: {
43
+ height: "500px"
44
+ },
45
+ multiple: this.allowMultipleFiles,
46
+ acceptFile: "*",
47
+ maxSize: 10,
48
+ acceptFileText: "All Files"
49
+ };
50
+ this.viewerConfig = {
51
+ imageStyle: {
52
+ height: '200px',
53
+ width: '200px'
54
+ },
55
+ viewerStyle: {
56
+ height: ' 160px',
57
+ width: '200px'
58
+ },
59
+ hideRemove: true
60
+ };
61
+ if (this.hideTitleAndDetails) {
62
+ this.displayedColumns = this.displayedColumns.filter(x => (x !== 'details') && (x !== 'title'));
63
+ }
64
+ this.filters = {
65
+ entity_type: this.entityType,
66
+ entity_id: this.entityId,
67
+ title: ""
68
+ };
69
+ this.search.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => {
70
+ this.filters.title = value;
71
+ this.reload();
72
+ });
73
+ this.fetchEntityFilesDetails();
74
+ if (!this.viewOnly) {
75
+ this.displayedColumns.push('actions');
76
+ }
77
+ }
78
+ fetchEntityFilesDetails() {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ this.filters.page = this.page;
81
+ this.filters.perPage = this.perPage;
82
+ this.isWorking = true;
83
+ const result = yield this.entityFileService.getEntityFiles(this.filters);
84
+ this.lastPage = result.last_page || this.page;
85
+ this.entityFiles = this.entityFiles.concat(result.data);
86
+ this.isWorking = false;
87
+ });
88
+ }
89
+ addEntityFile() {
90
+ const dialogRef = this.dialog.open(EntityFileFormComponent, {
91
+ width: "700px",
92
+ data: {
93
+ entity: this.filters,
94
+ hideTitleAndDetails: this.hideTitleAndDetails
95
+ },
96
+ autoFocus: false,
97
+ restoreFocus: false
98
+ });
99
+ dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
100
+ if (result) {
101
+ const files = [...this.entityFiles];
102
+ files.push(result);
103
+ this.entityFiles = files;
104
+ }
105
+ }));
106
+ }
107
+ editEntityFile(file) {
108
+ const dialogRef = this.dialog.open(EntityFileFormComponent, {
109
+ width: "700px",
110
+ autoFocus: false,
111
+ data: {
112
+ file: file,
113
+ hideTitleAndDetails: this.hideTitleAndDetails
114
+ } // Any data passed here will be injected into the model
115
+ });
116
+ dialogRef.afterClosed().subscribe(result => {
117
+ if (result) {
118
+ this.reload();
119
+ }
120
+ });
121
+ }
122
+ deleteEntityFile(file) {
123
+ const dialogRef = this.dialog.open(ActionPopupComponent, {
124
+ width: "400px",
125
+ data: {
126
+ title: "Delete File",
127
+ message: `Are you sure to proceed delete the file ${file.title}?`
128
+ },
129
+ autoFocus: false
130
+ });
131
+ dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
132
+ if (result) {
133
+ //Action confirmed
134
+ const result = yield this.entityFileService.deleteEntityFile(file);
135
+ this.alertService.addAlert("File successfully deleted", "success");
136
+ this.reload();
137
+ }
138
+ }));
139
+ }
140
+ onScroll() {
141
+ if (this.page < this.lastPage && !this.isWorking) {
142
+ this.page += 1;
143
+ this.fetchEntityFilesDetails();
144
+ }
145
+ }
146
+ reload() {
147
+ this.entityFiles = [];
148
+ this.page = 1;
149
+ if (!this.isWorking) {
150
+ this.fetchEntityFilesDetails();
151
+ }
152
+ }
153
+ ngOnDestroy() { }
154
+ resetFieldValue() {
155
+ this.search.setValue("");
156
+ }
157
+ sizeOf(bytes) {
158
+ if (!bytes) {
159
+ return "0.00 B";
160
+ }
161
+ var e = Math.floor(Math.log(bytes) / Math.log(1024));
162
+ return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';
163
+ }
164
+ fileChanged(event) {
165
+ return __awaiter(this, void 0, void 0, function* () {
166
+ this.fileList = event;
167
+ if (this.fileList.length > 0) {
168
+ yield this.fileList.forEach((file) => __awaiter(this, void 0, void 0, function* () {
169
+ const result = yield this.entityFileService.uploadEntityFile(file, {
170
+ entity_type: this.entityType,
171
+ entity_id: this.entityId,
172
+ });
173
+ }));
174
+ this.fileList = [];
175
+ this.alertService.addAlert('Successfull uploaded', 'success');
176
+ this.reload();
177
+ }
178
+ });
179
+ }
180
+ };
181
+ EntityFilesViewAllComponent.decorators = [
182
+ { type: Component, args: [{
183
+ selector: 'app-entity-files-view-all',
184
+ template: "<div class=\"mat-typography\" *ngIf=\"!displayMode\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"1rem\">\r\n <mat-card fxFlex=\"70%\">\r\n <mat-card-title fxLayout fxLayoutGap=\"1rem\">\r\n <h3 class=\"font-weight-bold primary-color\" fxLayout=\"center center\">\r\n <mat-icon>\r\n <span class=\"material-icons\">\r\n description\r\n </span>\r\n </mat-icon>\r\n {{title}}s\r\n </h3>\r\n <div>\r\n <button type=\"button\" class=\"mx-1\" mat-raised-button color=\"primary\" (click)=\"addEntityFile()\"\r\n *ngIf=\"!viewOnly\">\r\n <mat-icon>\r\n <span class=\"material-icons\">\r\n add_circle_outline\r\n </span>\r\n </mat-icon>\r\n {{title}}\r\n </button>\r\n </div>\r\n <mat-form-field *ngIf=\"!removeSearch\" appearance=\"outline\" style=\"font-size: 10px;\">\r\n <mat-label>Search</mat-label>\r\n <input type=\"text\" matInput [formControl]=\"search\" placeholder=\"Search\" name=\"title\" autocomplete=\"off\" />\r\n <button mat-button *ngIf=\"filters.title\" matSuffix mat-icon-button (click)=\"resetFieldValue()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </mat-card-title>\r\n <mat-card-content class=\"entity-file-card\">\r\n <table mat-table [dataSource]=\"entityFiles\" class=\"w-100\" matSort multiTemplateDataRows infiniteScroll\r\n [infiniteScrollDistance]=\"1.5\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\r\n\r\n <!-- Index Column -->\r\n <ng-container matColumnDef=\"index\">\r\n <th mat-header-cell *matHeaderCellDef> # </th>\r\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\r\n </ng-container>\r\n\r\n <!-- Title Column -->\r\n <ng-container matColumnDef=\"title\">\r\n <th mat-header-cell *matHeaderCellDef> Title </th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div>\r\n <span>\r\n {{element.title}}\r\n </span>\r\n <span>\r\n <a href=\"{{element.url}}\" target=\"_blank\" class=\"text-decoration-none text-muted\">\r\n <button mat-icon-button type=\"button\">\r\n <mat-icon>download</mat-icon>\r\n </button>\r\n </a>\r\n </span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Details Column -->\r\n <ng-container matColumnDef=\"details\">\r\n <th mat-header-cell *matHeaderCellDef> Details </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.details}} </td>\r\n </ng-container>\r\n\r\n <!-- File size Column -->\r\n <ng-container matColumnDef=\"file_size\">\r\n <th mat-header-cell *matHeaderCellDef> File Size </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{ sizeOf(element.file_size)}} </td>\r\n </ng-container>\r\n\r\n <!-- Uploaded On Column -->\r\n <ng-container matColumnDef=\"uploaded_on\">\r\n <th mat-header-cell *matHeaderCellDef> Uploaded On </th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div>\r\n {{element.created_at | date: 'mediumDate'}}\r\n </div>\r\n <div class=\"text-muted\">\r\n By {{element.creator?.name}}\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Actions Column -->\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef> Actions </th>\r\n <td mat-cell *matCellDef=\"let element\" style=\"min-width:110px\" class=\"text-muted\">\r\n <button type=\"button\" mat-icon-button (click)=\"editEntityFile(element)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button type=\"button\" mat-icon-button (click)=\"deleteEntityFile(element)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <section fxFlex=\"30%\">\r\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\r\n </app-file-dropper>\r\n </section>\r\n </div>\r\n</div>\r\n\r\n<div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"displayMode\">\r\n <div *ngFor=\"let efile of entityFiles\">\r\n <app-document-viewer [file]=\"efile.file\" [fileUrl]=\"efile.url\" [config]=\"this.viewerConfig\" [disableEdit]=\"true\">\r\n </app-document-viewer>\r\n <a href=\"{{efile.url}}\" target=\"_blank\">\r\n <button mat-button type=\"button\">View</button>\r\n </a>\r\n </div>\r\n</div>\r\n",
185
+ styles: [""]
186
+ },] }
187
+ ];
188
+ EntityFilesViewAllComponent.ctorParameters = () => [
189
+ { type: EntityFileService },
190
+ { type: Location },
191
+ { type: AlertService },
192
+ { type: MatDialog }
193
+ ];
194
+ EntityFilesViewAllComponent.propDecorators = {
195
+ entityId: [{ type: Input }],
196
+ entityType: [{ type: Input }],
197
+ viewOnly: [{ type: Input }],
198
+ removeSearch: [{ type: Input }],
199
+ hideTitleAndDetails: [{ type: Input }],
200
+ displayMode: [{ type: Input }],
201
+ allowMultipleFiles: [{ type: Input }],
202
+ title: [{ type: Input }]
203
+ };
204
+ EntityFilesViewAllComponent = __decorate([
205
+ UntilDestroy()
206
+ ], EntityFilesViewAllComponent);
207
+ export { EntityFilesViewAllComponent };
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGVzLXZpZXctYWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztJQVVqRSwyQkFBMkIsU0FBM0IsMkJBQTJCO0lBMkJ0QyxZQUNVLGlCQUFvQyxFQUNyQyxRQUFrQixFQUNqQixZQUEwQixFQUMxQixNQUFpQjtRQUhqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQTVCbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUkxQix1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QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNmO1FBQ0gsQ0FBQztLQUFBO0NBQ0YsQ0FBQTs7WUExTUEsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLDhyS0FBcUQ7O2FBRXREOzs7WUFmUSxpQkFBaUI7WUFIakIsUUFBUTtZQVFSLFlBQVk7WUFQWixTQUFTOzs7dUJBbUJmLEtBQUs7eUJBQ0wsS0FBSzt1QkFDTCxLQUFLOzJCQUNMLEtBQUs7a0NBQ0wsS0FBSzswQkFDTCxLQUFLO2lDQUNMLEtBQUs7b0JBRUwsS0FBSzs7QUFUSywyQkFBMkI7SUFOdkMsWUFBWSxFQUFFO0dBTUYsMkJBQTJCLENBcU12QztTQXJNWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFbnRpdHlGaWxlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZW50aXR5LWZpbGUtZm9ybS9lbnRpdHktZmlsZS1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aW9uUG9wdXAgfSBmcm9tICcuLi9hY3Rpb24tcG9wdXAvYWN0aW9uLXBvcHVwLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQG5nbmVhdC91bnRpbC1kZXN0cm95XCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2NvcmUvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWN0aW9uLXBvcHVwL2FjdGlvbi1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWaWV3ZXJDb25maWcgfSBmcm9tICcuLi9kb2N1bWVudC12aWV3ZXIvdmlld2VyLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVEcm9wcGVyQ29uZmlnIH0gZnJvbSAnLi4vZmlsZS1kcm9wcGVyJztcclxuXHJcbkBVbnRpbERlc3Ryb3koKVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1lbnRpdHktZmlsZXMtdmlldy1hbGwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRpdHktZmlsZXMtdmlldy1hbGwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEVudGl0eUZpbGVzVmlld0FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZW50aXR5SWQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBlbnRpdHlUeXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmlld09ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSByZW1vdmVTZWFyY2g6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGlkZVRpdGxlQW5kRGV0YWlsczogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNwbGF5TW9kZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhbGxvd011bHRpcGxlRmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aWV3ZXJDb25maWc6IFZpZXdlckNvbmZpZztcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gXCJGaWxlXCI7XHJcbiAgZmlsdGVyczogYW55ID0ge307XHJcbiAgZW50aXR5RmlsZXM6IGFueVtdID0gW107XHJcbiAgZGlzcGxheWVkQ29sdW1ucyA9IFtcclxuICAgICdpbmRleCcsXHJcbiAgICAndGl0bGUnLFxyXG4gICAgJ2RldGFpbHMnLFxyXG4gICAgJ2ZpbGVfc2l6ZScsXHJcbiAgICAndXBsb2FkZWRfb24nLFxyXG4gIF07XHJcbiAgaXNXb3JraW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgcGFnZTogbnVtYmVyID0gMTtcclxuICBwZXJQYWdlOiBudW1iZXIgPSAyNTtcclxuICBsYXN0UGFnZTogbnVtYmVyID0gMDtcclxuICBmaWxlQ29uZmlnOiBGaWxlRHJvcHBlckNvbmZpZztcclxuICBmaWxlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVudGl0eUZpbGVTZXJ2aWNlOiBFbnRpdHlGaWxlU2VydmljZSxcclxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vRmlsZSBkcm9wcGVyIGNvbmZpZ1xyXG4gICAgdGhpcy5maWxlQ29uZmlnID0ge1xyXG4gICAgICBmaWxlSWQ6IFwiZW50aXR5RGFzaGJvYXJkRHJvcHBlclwiLFxyXG4gICAgICBjb250YWluZXJJZDogXCJlbnRpdHlEYXNoYm9hcmREcm9wcGVyQ29udGFpbmVyXCIsXHJcbiAgICAgIHN0eWxlczoge1xyXG4gICAgICAgIGhlaWdodDogXCI1MDBweFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIG11bHRpcGxlOiB0aGlzLmFsbG93TXVsdGlwbGVGaWxlcyxcclxuICAgICAgYWNjZXB0RmlsZTogXCIqXCIsXHJcbiAgICAgIG1heFNpemU6IDEwLFxyXG4gICAgICBhY2NlcHRGaWxlVGV4dDogXCJBbGwgRmlsZXNcIlxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnZpZXdlckNvbmZpZyA9IHtcclxuICAgICAgaW1hZ2VTdHlsZToge1xyXG4gICAgICAgIGhlaWdodDogJzIwMHB4JyxcclxuICAgICAgICB3aWR0aDogJzIwMHB4J1xyXG4gICAgICB9LFxyXG4gICAgICB2aWV3ZXJTdHlsZToge1xyXG4gICAgICAgIGhlaWdodDogJyAxNjBweCcsXHJcbiAgICAgICAgd2lkdGg6ICcyMDBweCdcclxuICAgICAgfSxcclxuICAgICAgaGlkZVJlbW92ZTogdHJ1ZVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5oaWRlVGl0bGVBbmREZXRhaWxzKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5maWx0ZXIoeCA9PiAoeCAhPT0gJ2RldGFpbHMnKSAmJiAoeCAhPT0gJ3RpdGxlJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsdGVycyA9IHtcclxuICAgICAgZW50aXR5X3R5cGU6IHRoaXMuZW50aXR5VHlwZSxcclxuICAgICAgZW50aXR5X2lkOiB0aGlzLmVudGl0eUlkLFxyXG4gICAgICB0aXRsZTogXCJcIlxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VhcmNoLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnRpdGxlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5mZXRjaEVudGl0eUZpbGVzRGV0YWlscygpO1xyXG4gICAgaWYgKCF0aGlzLnZpZXdPbmx5KSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wdXNoKCdhY3Rpb25zJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBmZXRjaEVudGl0eUZpbGVzRGV0YWlscygpIHtcclxuICAgIHRoaXMuZmlsdGVycy5wYWdlID0gdGhpcy5wYWdlO1xyXG4gICAgdGhpcy5maWx0ZXJzLnBlclBhZ2UgPSB0aGlzLnBlclBhZ2U7XHJcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMuZW50aXR5RmlsZVNlcnZpY2UuZ2V0RW50aXR5RmlsZXModGhpcy5maWx0ZXJzKTtcclxuICAgIHRoaXMubGFzdFBhZ2UgPSByZXN1bHQubGFzdF9wYWdlIHx8IHRoaXMucGFnZTtcclxuICAgIHRoaXMuZW50aXR5RmlsZXMgPSB0aGlzLmVudGl0eUZpbGVzLmNvbmNhdChyZXN1bHQuZGF0YSk7XHJcbiAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYWRkRW50aXR5RmlsZSgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRW50aXR5RmlsZUZvcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiNzAwcHhcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVudGl0eTogdGhpcy5maWx0ZXJzLFxyXG4gICAgICAgIGhpZGVUaXRsZUFuZERldGFpbHM6IHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlsc1xyXG4gICAgICB9LFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXN5bmMgcmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gWy4uLnRoaXMuZW50aXR5RmlsZXNdO1xyXG4gICAgICAgIGZpbGVzLnB1c2gocmVzdWx0KTtcclxuICAgICAgICB0aGlzLmVudGl0eUZpbGVzID0gZmlsZXM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZWRpdEVudGl0eUZpbGUoZmlsZTogYW55KSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEVudGl0eUZpbGVGb3JtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjcwMHB4XCIsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIGhpZGVUaXRsZUFuZERldGFpbHM6IHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlsc1xyXG4gICAgICB9IC8vIEFueSBkYXRhIHBhc3NlZCBoZXJlIHdpbGwgYmUgaW5qZWN0ZWQgaW50byB0aGUgbW9kZWxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVFbnRpdHlGaWxlKGZpbGU6IGFueSkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBY3Rpb25Qb3B1cENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICBkYXRhOiA8QWN0aW9uUG9wdXA+e1xyXG4gICAgICAgIHRpdGxlOiBcIkRlbGV0ZSBGaWxlXCIsXHJcbiAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB0byBwcm9jZWVkIGRlbGV0ZSB0aGUgZmlsZSAke2ZpbGUudGl0bGV9P2BcclxuICAgICAgfSxcclxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGFzeW5jIHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAvL0FjdGlvbiBjb25maXJtZWRcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmVudGl0eUZpbGVTZXJ2aWNlLmRlbGV0ZUVudGl0eUZpbGUoXHJcbiAgICAgICAgICBmaWxlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcclxuICAgICAgICAgIFwiRmlsZSBzdWNjZXNzZnVsbHkgZGVsZXRlZFwiLFxyXG4gICAgICAgICAgXCJzdWNjZXNzXCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVsb2FkKCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgaWYgKHRoaXMucGFnZSA8IHRoaXMubGFzdFBhZ2UgJiYgIXRoaXMuaXNXb3JraW5nKSB7XHJcbiAgICAgIHRoaXMucGFnZSArPSAxO1xyXG4gICAgICB0aGlzLmZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWxvYWQoKSB7XHJcbiAgICB0aGlzLmVudGl0eUZpbGVzID0gW107XHJcbiAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgaWYgKCF0aGlzLmlzV29ya2luZykge1xyXG4gICAgICB0aGlzLmZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHsgfVxyXG5cclxuICByZXNldEZpZWxkVmFsdWUoKSB7XHJcbiAgICB0aGlzLnNlYXJjaC5zZXRWYWx1ZShcIlwiKTtcclxuICB9XHJcblxyXG4gIHNpemVPZihieXRlcykge1xyXG4gICAgaWYgKCFieXRlcykgeyByZXR1cm4gXCIwLjAwIEJcIjsgfVxyXG4gICAgdmFyIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKDEwMjQpKTtcclxuICAgIHJldHVybiAoYnl0ZXMgLyBNYXRoLnBvdygxMDI0LCBlKSkudG9GaXhlZCgyKSArICcgJyArICcgS01HVFAnLmNoYXJBdChlKSArICdCJztcclxuICB9XHJcblxyXG4gIGFzeW5jIGZpbGVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZmlsZUxpc3QgPSBldmVudDtcclxuICAgIGlmICh0aGlzLmZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcclxuXHJcbiAgIGF3YWl0IHRoaXMuZmlsZUxpc3QuZm9yRWFjaChhc3luYyBmaWxlID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMuZW50aXR5RmlsZVNlcnZpY2UudXBsb2FkRW50aXR5RmlsZShcclxuICAgICAgICAgIGZpbGUsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGVudGl0eV90eXBlOiB0aGlzLmVudGl0eVR5cGUsXHJcbiAgICAgICAgICAgIGVudGl0eV9pZDogdGhpcy5lbnRpdHlJZCxcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5maWxlTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnU3VjY2Vzc2Z1bGwgdXBsb2FkZWQnLCAnc3VjY2VzcycpO1xyXG4gICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,34 +1,34 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';
4
- import { EntityFilesViewAllComponent } from './entity-files-view-all.component';
5
- import { ReactiveFormsModule, FormsModule } from '@angular/forms';
6
- import { FlexLayoutModule } from '@angular/flex-layout';
7
- import { InfiniteScrollModule } from 'ngx-infinite-scroll';
8
- import { FileDropperModule } from '../file-dropper/file-dropper.module';
9
- import { DocumentViewerModule } from '../document-viewer/document-viewer.module';
10
- import { ActionPopupModule } from '../action-popup/action-popup.module';
11
- import { MaterialModule } from '../material.module';
12
- export class EntityFilesViewAllModule {
13
- }
14
- EntityFilesViewAllModule.decorators = [
15
- { type: NgModule, args: [{
16
- declarations: [EntityFileFormComponent, EntityFilesViewAllComponent],
17
- imports: [
18
- CommonModule,
19
- FormsModule,
20
- ReactiveFormsModule,
21
- FlexLayoutModule,
22
- FileDropperModule,
23
- DocumentViewerModule,
24
- InfiniteScrollModule,
25
- ActionPopupModule,
26
- MaterialModule
27
- ],
28
- exports: [
29
- EntityFilesViewAllComponent
30
- ],
31
- entryComponents: [EntityFileFormComponent]
32
- },] }
33
- ];
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGVzLXZpZXctYWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlcy12aWV3LWFsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQXFCcEQsTUFBTSxPQUFPLHdCQUF3Qjs7O1lBbEJwQyxRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsMkJBQTJCLENBQUM7Z0JBQ3BFLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixnQkFBZ0I7b0JBQ2hCLGlCQUFpQjtvQkFDakIsb0JBQW9CO29CQUNwQixvQkFBb0I7b0JBQ3BCLGlCQUFpQjtvQkFDakIsY0FBYztpQkFDZjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsMkJBQTJCO2lCQUM1QjtnQkFDRCxlQUFlLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzthQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRW50aXR5RmlsZUZvcm1Db21wb25lbnQgfSBmcm9tICcuL2VudGl0eS1maWxlLWZvcm0vZW50aXR5LWZpbGUtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW50aXR5RmlsZXNWaWV3QWxsQ29tcG9uZW50IH0gZnJvbSAnLi9lbnRpdHktZmlsZXMtdmlldy1hbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsTW9kdWxlIH0gZnJvbSAnbmd4LWluZmluaXRlLXNjcm9sbCc7XG5pbXBvcnQgeyBGaWxlRHJvcHBlck1vZHVsZSB9IGZyb20gJy4uL2ZpbGUtZHJvcHBlci9maWxlLWRyb3BwZXIubW9kdWxlJztcbmltcG9ydCB7IERvY3VtZW50Vmlld2VyTW9kdWxlIH0gZnJvbSAnLi4vZG9jdW1lbnQtdmlld2VyL2RvY3VtZW50LXZpZXdlci5tb2R1bGUnO1xuaW1wb3J0IHsgQWN0aW9uUG9wdXBNb2R1bGUgfSBmcm9tICcuLi9hY3Rpb24tcG9wdXAvYWN0aW9uLXBvcHVwLm1vZHVsZSc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRW50aXR5RmlsZUZvcm1Db21wb25lbnQsIEVudGl0eUZpbGVzVmlld0FsbENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxuICAgIEZpbGVEcm9wcGVyTW9kdWxlLFxuICAgIERvY3VtZW50Vmlld2VyTW9kdWxlLFxuICAgIEluZmluaXRlU2Nyb2xsTW9kdWxlLFxuICAgIEFjdGlvblBvcHVwTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBFbnRpdHlGaWxlc1ZpZXdBbGxDb21wb25lbnRcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbRW50aXR5RmlsZUZvcm1Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eUZpbGVzVmlld0FsbE1vZHVsZSB7IH1cbiJdfQ==
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';
4
+ import { EntityFilesViewAllComponent } from './entity-files-view-all.component';
5
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
6
+ import { FlexLayoutModule } from '@angular/flex-layout';
7
+ import { InfiniteScrollModule } from 'ngx-infinite-scroll';
8
+ import { FileDropperModule } from '../file-dropper/file-dropper.module';
9
+ import { DocumentViewerModule } from '../document-viewer/document-viewer.module';
10
+ import { ActionPopupModule } from '../action-popup/action-popup.module';
11
+ import { MaterialModule } from '../material.module';
12
+ export class EntityFilesViewAllModule {
13
+ }
14
+ EntityFilesViewAllModule.decorators = [
15
+ { type: NgModule, args: [{
16
+ declarations: [EntityFileFormComponent, EntityFilesViewAllComponent],
17
+ imports: [
18
+ CommonModule,
19
+ FormsModule,
20
+ ReactiveFormsModule,
21
+ FlexLayoutModule,
22
+ FileDropperModule,
23
+ DocumentViewerModule,
24
+ InfiniteScrollModule,
25
+ ActionPopupModule,
26
+ MaterialModule
27
+ ],
28
+ exports: [
29
+ EntityFilesViewAllComponent
30
+ ],
31
+ entryComponents: [EntityFileFormComponent]
32
+ },] }
33
+ ];
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGVzLXZpZXctYWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlcy12aWV3LWFsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQXFCcEQsTUFBTSxPQUFPLHdCQUF3Qjs7O1lBbEJwQyxRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsMkJBQTJCLENBQUM7Z0JBQ3BFLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixnQkFBZ0I7b0JBQ2hCLGlCQUFpQjtvQkFDakIsb0JBQW9CO29CQUNwQixvQkFBb0I7b0JBQ3BCLGlCQUFpQjtvQkFDakIsY0FBYztpQkFDZjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsMkJBQTJCO2lCQUM1QjtnQkFDRCxlQUFlLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzthQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEVudGl0eUZpbGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9lbnRpdHktZmlsZS1mb3JtL2VudGl0eS1maWxlLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW50aXR5RmlsZXNWaWV3QWxsQ29tcG9uZW50IH0gZnJvbSAnLi9lbnRpdHktZmlsZXMtdmlldy1hbGwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XHJcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsTW9kdWxlIH0gZnJvbSAnbmd4LWluZmluaXRlLXNjcm9sbCc7XHJcbmltcG9ydCB7IEZpbGVEcm9wcGVyTW9kdWxlIH0gZnJvbSAnLi4vZmlsZS1kcm9wcGVyL2ZpbGUtZHJvcHBlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFZpZXdlck1vZHVsZSB9IGZyb20gJy4uL2RvY3VtZW50LXZpZXdlci9kb2N1bWVudC12aWV3ZXIubW9kdWxlJztcclxuaW1wb3J0IHsgQWN0aW9uUG9wdXBNb2R1bGUgfSBmcm9tICcuLi9hY3Rpb24tcG9wdXAvYWN0aW9uLXBvcHVwLm1vZHVsZSc7XHJcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0VudGl0eUZpbGVGb3JtQ29tcG9uZW50LCBFbnRpdHlGaWxlc1ZpZXdBbGxDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBGaWxlRHJvcHBlck1vZHVsZSxcclxuICAgIERvY3VtZW50Vmlld2VyTW9kdWxlLFxyXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXHJcbiAgICBBY3Rpb25Qb3B1cE1vZHVsZSxcclxuICAgIE1hdGVyaWFsTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBFbnRpdHlGaWxlc1ZpZXdBbGxDb21wb25lbnRcclxuICBdLFxyXG4gIGVudHJ5Q29tcG9uZW50czogW0VudGl0eUZpbGVGb3JtQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW50aXR5RmlsZXNWaWV3QWxsTW9kdWxlIHsgfVxyXG4iXX0=
@@ -1,3 +1,3 @@
1
- export * from './entity-files-view-all.component';
2
- export * from './entity-file-form/entity-file-form.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2VudGl0eS1maWxlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRpdHktZmlsZS1mb3JtL2VudGl0eS1maWxlLWZvcm0uY29tcG9uZW50JzsiXX0=
1
+ export * from './entity-files-view-all.component';
2
+ export * from './entity-file-form/entity-file-form.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2VudGl0eS1maWxlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VudGl0eS1maWxlLWZvcm0vZW50aXR5LWZpbGUtZm9ybS5jb21wb25lbnQnOyJdfQ==