ngx-techlify-core 11.2.4

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 (313) hide show
  1. package/README.md +24 -0
  2. package/bundles/ngx-techlify-core.umd.js +6602 -0
  3. package/bundles/ngx-techlify-core.umd.js.map +1 -0
  4. package/bundles/ngx-techlify-core.umd.min.js +17 -0
  5. package/bundles/ngx-techlify-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/action-popup/action-popup.component.js +32 -0
  7. package/esm2015/lib/action-popup/action-popup.model.js +3 -0
  8. package/esm2015/lib/action-popup/action-popup.module.js +26 -0
  9. package/esm2015/lib/action-popup/index.js +3 -0
  10. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +12 -0
  11. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +49 -0
  12. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +25 -0
  13. package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +12 -0
  14. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +132 -0
  15. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +29 -0
  16. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +12 -0
  17. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +67 -0
  18. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +25 -0
  19. package/esm2015/lib/audit-log/audit-log-routing.module.js +19 -0
  20. package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +12 -0
  21. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +62 -0
  22. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +21 -0
  23. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +12 -0
  24. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +59 -0
  25. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +21 -0
  26. package/esm2015/lib/audit-log/audit-log.module.js +20 -0
  27. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +12 -0
  28. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +35 -0
  29. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +21 -0
  30. package/esm2015/lib/core/alert.service.js +40 -0
  31. package/esm2015/lib/core/api-prefix.interceptor.js +28 -0
  32. package/esm2015/lib/core/authentication.guard.js +39 -0
  33. package/esm2015/lib/core/authentication.service.js +59 -0
  34. package/esm2015/lib/core/cache.interceptor.js +60 -0
  35. package/esm2015/lib/core/config.service.js +47 -0
  36. package/esm2015/lib/core/core.module.js +42 -0
  37. package/esm2015/lib/core/credentials.service.js +84 -0
  38. package/esm2015/lib/core/dataManager.service.js +121 -0
  39. package/esm2015/lib/core/error-handler.interceptor.js +53 -0
  40. package/esm2015/lib/core/error-handler.service.js +49 -0
  41. package/esm2015/lib/core/form-validator.service.js +23 -0
  42. package/esm2015/lib/core/header.interceptor.js +22 -0
  43. package/esm2015/lib/core/http-cache.service.js +110 -0
  44. package/esm2015/lib/core/http.service.js +82 -0
  45. package/esm2015/lib/core/index.js +21 -0
  46. package/esm2015/lib/core/logger.service.js +100 -0
  47. package/esm2015/lib/core/route-reusable-strategy.js +35 -0
  48. package/esm2015/lib/core/snack/snack.component.js +33 -0
  49. package/esm2015/lib/core/snack/snack.module.js +25 -0
  50. package/esm2015/lib/core/storage.service.js +37 -0
  51. package/esm2015/lib/core/techlify-config.model.js +26 -0
  52. package/esm2015/lib/core/token.interceptor.js +30 -0
  53. package/esm2015/lib/data-table/data-table.component.js +190 -0
  54. package/esm2015/lib/data-table/data-table.model.js +11 -0
  55. package/esm2015/lib/data-table/data-table.module.js +25 -0
  56. package/esm2015/lib/data-table/index.js +3 -0
  57. package/esm2015/lib/date-validator.js +10 -0
  58. package/esm2015/lib/document-viewer/document-viewer.component.js +58 -0
  59. package/esm2015/lib/document-viewer/document-viewer.module.js +25 -0
  60. package/esm2015/lib/document-viewer/index.js +3 -0
  61. package/esm2015/lib/document-viewer/viewer-config.model.js +3 -0
  62. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +26 -0
  63. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +72 -0
  64. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +23 -0
  65. package/esm2015/lib/email-subscription/email-subscription-for-user/index.js +2 -0
  66. package/esm2015/lib/email-subscription/email-subscription-routing.module.js +12 -0
  67. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +12 -0
  68. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +102 -0
  69. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +28 -0
  70. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js +2 -0
  71. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +28 -0
  72. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +153 -0
  73. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +27 -0
  74. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js +2 -0
  75. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +12 -0
  76. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +15 -0
  77. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +12 -0
  78. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +99 -0
  79. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +27 -0
  80. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js +2 -0
  81. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +28 -0
  82. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +155 -0
  83. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +29 -0
  84. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js +2 -0
  85. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +12 -0
  86. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +50 -0
  87. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +25 -0
  88. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js +2 -0
  89. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +12 -0
  90. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +15 -0
  91. package/esm2015/lib/email-subscription/email-subscription.module.js +15 -0
  92. package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +141 -0
  93. package/esm2015/lib/entity-files/entity-file.service.js +38 -0
  94. package/esm2015/lib/entity-files/entity-files-view-all.component.js +161 -0
  95. package/esm2015/lib/entity-files/entity-files-view-all.module.js +34 -0
  96. package/esm2015/lib/entity-files/index.js +3 -0
  97. package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +32 -0
  98. package/esm2015/lib/export-excel/export-excel.module.js +17 -0
  99. package/esm2015/lib/file-dropper/file-dropper.component.js +122 -0
  100. package/esm2015/lib/file-dropper/file-dropper.model.js +3 -0
  101. package/esm2015/lib/file-dropper/file-dropper.module.js +21 -0
  102. package/esm2015/lib/file-dropper/index.js +3 -0
  103. package/esm2015/lib/import-csv/failed-items/failed-items-routing.module.js +12 -0
  104. package/esm2015/lib/import-csv/failed-items/failed-items.component.js +23 -0
  105. package/esm2015/lib/import-csv/failed-items/failed-items.module.js +21 -0
  106. package/esm2015/lib/import-csv/import-config.js +3 -0
  107. package/esm2015/lib/import-csv/import-csv-routing.module.js +12 -0
  108. package/esm2015/lib/import-csv/import-csv.component.js +111 -0
  109. package/esm2015/lib/import-csv/import-csv.module.js +27 -0
  110. package/esm2015/lib/import-csv/import-items/import-items-routing.module.js +12 -0
  111. package/esm2015/lib/import-csv/import-items/import-items.component.js +139 -0
  112. package/esm2015/lib/import-csv/import-items/import-items.module.js +23 -0
  113. package/esm2015/lib/loader/index.js +2 -0
  114. package/esm2015/lib/loader/loader.component.js +22 -0
  115. package/esm2015/lib/loader/loader.module.js +21 -0
  116. package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +20 -0
  117. package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +79 -0
  118. package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +27 -0
  119. package/esm2015/lib/material.module.js +58 -0
  120. package/esm2015/lib/note/index.js +3 -0
  121. package/esm2015/lib/note/note-form/note-form.component.js +80 -0
  122. package/esm2015/lib/note/note-list/note-list.component.js +120 -0
  123. package/esm2015/lib/note/note.module.js +32 -0
  124. package/esm2015/lib/note/note.service.js +31 -0
  125. package/esm2015/lib/searchable-selector/index.js +3 -0
  126. package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +81 -0
  127. package/esm2015/lib/searchable-selector/searchable-selector.component.js +267 -0
  128. package/esm2015/lib/searchable-selector/searchable-selector.module.js +28 -0
  129. package/esm2015/lib/techlify-update/read-more/read-more.component.js +43 -0
  130. package/esm2015/lib/techlify-update/read-more/read-more.module.js +21 -0
  131. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +114 -0
  132. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +28 -0
  133. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +22 -0
  134. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +143 -0
  135. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +28 -0
  136. package/esm2015/lib/techlify-update/techlify-update-routing.module.js +22 -0
  137. package/esm2015/lib/techlify-update/techlify-update.module.js +30 -0
  138. package/esm2015/lib/techlify-update/techlify-update.service.js +43 -0
  139. package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +161 -0
  140. package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +82 -0
  141. package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +62 -0
  142. package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +29 -0
  143. package/esm2015/lib/techlify-update/update-view/update-view.component.js +36 -0
  144. package/esm2015/lib/techlify-update/update-view/update-view.module.js +24 -0
  145. package/esm2015/lib/timeline-filter/calculate-timeline.js +90 -0
  146. package/esm2015/lib/timeline-filter/index.js +4 -0
  147. package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +12 -0
  148. package/esm2015/lib/timeline-filter/timeline-filter.component.js +57 -0
  149. package/esm2015/lib/timeline-filter/timeline-filter.module.js +23 -0
  150. package/esm2015/lib/timeline-filter/timeline.model.js +15 -0
  151. package/esm2015/lib/utility/date-utils.service.js +48 -0
  152. package/esm2015/lib/utility/index.js +4 -0
  153. package/esm2015/lib/utility/num-items-selector.component.js +30 -0
  154. package/esm2015/lib/utility/number-selector.component.js +38 -0
  155. package/esm2015/lib/utility/utility.module.js +21 -0
  156. package/esm2015/ngx-techlify-core.js +52 -0
  157. package/esm2015/public-api.js +91 -0
  158. package/fesm2015/ngx-techlify-core.js +5575 -0
  159. package/fesm2015/ngx-techlify-core.js.map +1 -0
  160. package/lib/action-popup/action-popup.component.d.ts +14 -0
  161. package/lib/action-popup/action-popup.model.d.ts +5 -0
  162. package/lib/action-popup/action-popup.module.d.ts +2 -0
  163. package/lib/action-popup/index.d.ts +2 -0
  164. package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +2 -0
  165. package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +12 -0
  166. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -0
  167. package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +2 -0
  168. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +32 -0
  169. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +2 -0
  170. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +2 -0
  171. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +19 -0
  172. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +2 -0
  173. package/lib/audit-log/audit-log-routing.module.d.ts +2 -0
  174. package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +2 -0
  175. package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +17 -0
  176. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -0
  177. package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +2 -0
  178. package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +15 -0
  179. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -0
  180. package/lib/audit-log/audit-log.module.d.ts +2 -0
  181. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +2 -0
  182. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +11 -0
  183. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +2 -0
  184. package/lib/core/alert.service.d.ts +12 -0
  185. package/lib/core/api-prefix.interceptor.d.ts +11 -0
  186. package/lib/core/authentication.guard.d.ts +10 -0
  187. package/lib/core/authentication.service.d.ts +23 -0
  188. package/lib/core/cache.interceptor.d.ts +21 -0
  189. package/lib/core/config.service.d.ts +19 -0
  190. package/lib/core/core.module.d.ts +3 -0
  191. package/lib/core/credentials.service.d.ts +36 -0
  192. package/lib/core/dataManager.service.d.ts +70 -0
  193. package/lib/core/error-handler.interceptor.d.ts +14 -0
  194. package/lib/core/error-handler.service.d.ts +12 -0
  195. package/lib/core/form-validator.service.d.ts +8 -0
  196. package/lib/core/header.interceptor.d.ts +8 -0
  197. package/lib/core/http-cache.service.d.ts +54 -0
  198. package/lib/core/http.service.d.ts +56 -0
  199. package/lib/core/index.d.ts +20 -0
  200. package/lib/core/logger.service.d.ts +85 -0
  201. package/lib/core/route-reusable-strategy.d.ts +13 -0
  202. package/lib/core/snack/snack.component.d.ts +8 -0
  203. package/lib/core/snack/snack.module.d.ts +2 -0
  204. package/lib/core/storage.service.d.ts +15 -0
  205. package/lib/core/techlify-config.model.d.ts +17 -0
  206. package/lib/core/token.interceptor.d.ts +11 -0
  207. package/lib/data-table/data-table.component.d.ts +60 -0
  208. package/lib/data-table/data-table.model.d.ts +46 -0
  209. package/lib/data-table/data-table.module.d.ts +2 -0
  210. package/lib/data-table/index.d.ts +2 -0
  211. package/lib/date-validator.d.ts +1 -0
  212. package/lib/document-viewer/document-viewer.component.d.ts +16 -0
  213. package/lib/document-viewer/document-viewer.module.d.ts +2 -0
  214. package/lib/document-viewer/index.d.ts +2 -0
  215. package/lib/document-viewer/viewer-config.model.d.ts +5 -0
  216. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +7 -0
  217. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +17 -0
  218. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +2 -0
  219. package/lib/email-subscription/email-subscription-for-user/index.d.ts +1 -0
  220. package/lib/email-subscription/email-subscription-routing.module.d.ts +2 -0
  221. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +2 -0
  222. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +32 -0
  223. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +2 -0
  224. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts +1 -0
  225. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +9 -0
  226. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +30 -0
  227. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +2 -0
  228. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +1 -0
  229. package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +2 -0
  230. package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +2 -0
  231. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +2 -0
  232. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +32 -0
  233. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +2 -0
  234. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts +1 -0
  235. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +9 -0
  236. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +32 -0
  237. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +2 -0
  238. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts +1 -0
  239. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +2 -0
  240. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +13 -0
  241. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +2 -0
  242. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts +1 -0
  243. package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +2 -0
  244. package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +2 -0
  245. package/lib/email-subscription/email-subscription.module.d.ts +2 -0
  246. package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +34 -0
  247. package/lib/entity-files/entity-file.service.d.ts +10 -0
  248. package/lib/entity-files/entity-files-view-all.component.d.ts +38 -0
  249. package/lib/entity-files/entity-files-view-all.module.d.ts +2 -0
  250. package/lib/entity-files/index.d.ts +2 -0
  251. package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +8 -0
  252. package/lib/export-excel/export-excel.module.d.ts +2 -0
  253. package/lib/file-dropper/file-dropper.component.d.ts +33 -0
  254. package/lib/file-dropper/file-dropper.model.d.ts +10 -0
  255. package/lib/file-dropper/file-dropper.module.d.ts +2 -0
  256. package/lib/file-dropper/index.d.ts +2 -0
  257. package/lib/import-csv/failed-items/failed-items-routing.module.d.ts +2 -0
  258. package/lib/import-csv/failed-items/failed-items.component.d.ts +8 -0
  259. package/lib/import-csv/failed-items/failed-items.module.d.ts +2 -0
  260. package/lib/import-csv/import-config.d.ts +5 -0
  261. package/lib/import-csv/import-csv-routing.module.d.ts +2 -0
  262. package/lib/import-csv/import-csv.component.d.ts +26 -0
  263. package/lib/import-csv/import-csv.module.d.ts +2 -0
  264. package/lib/import-csv/import-items/import-items-routing.module.d.ts +2 -0
  265. package/lib/import-csv/import-items/import-items.component.d.ts +30 -0
  266. package/lib/import-csv/import-items/import-items.module.d.ts +2 -0
  267. package/lib/loader/index.d.ts +1 -0
  268. package/lib/loader/loader.component.d.ts +8 -0
  269. package/lib/loader/loader.module.d.ts +2 -0
  270. package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +2 -0
  271. package/lib/login-history-for-user/login-history-for-user.component.d.ts +21 -0
  272. package/lib/login-history-for-user/login-history-for-user.module.d.ts +2 -0
  273. package/lib/material.module.d.ts +2 -0
  274. package/lib/note/index.d.ts +2 -0
  275. package/lib/note/note-form/note-form.component.d.ts +27 -0
  276. package/lib/note/note-list/note-list.component.d.ts +25 -0
  277. package/lib/note/note.module.d.ts +2 -0
  278. package/lib/note/note.service.d.ts +9 -0
  279. package/lib/searchable-selector/index.d.ts +2 -0
  280. package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +23 -0
  281. package/lib/searchable-selector/searchable-selector.component.d.ts +75 -0
  282. package/lib/searchable-selector/searchable-selector.module.d.ts +2 -0
  283. package/lib/techlify-update/read-more/read-more.component.d.ts +12 -0
  284. package/lib/techlify-update/read-more/read-more.module.d.ts +2 -0
  285. package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +30 -0
  286. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +2 -0
  287. package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +2 -0
  288. package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +31 -0
  289. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +2 -0
  290. package/lib/techlify-update/techlify-update-routing.module.d.ts +2 -0
  291. package/lib/techlify-update/techlify-update.module.d.ts +2 -0
  292. package/lib/techlify-update/techlify-update.service.d.ts +13 -0
  293. package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +31 -0
  294. package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +25 -0
  295. package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +16 -0
  296. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +2 -0
  297. package/lib/techlify-update/update-view/update-view.component.d.ts +14 -0
  298. package/lib/techlify-update/update-view/update-view.module.d.ts +2 -0
  299. package/lib/timeline-filter/calculate-timeline.d.ts +1 -0
  300. package/lib/timeline-filter/index.d.ts +3 -0
  301. package/lib/timeline-filter/timeline-filter-routing.module.d.ts +2 -0
  302. package/lib/timeline-filter/timeline-filter.component.d.ts +14 -0
  303. package/lib/timeline-filter/timeline-filter.module.d.ts +2 -0
  304. package/lib/timeline-filter/timeline.model.d.ts +14 -0
  305. package/lib/utility/date-utils.service.d.ts +21 -0
  306. package/lib/utility/index.d.ts +3 -0
  307. package/lib/utility/num-items-selector.component.d.ts +16 -0
  308. package/lib/utility/number-selector.component.d.ts +20 -0
  309. package/lib/utility/utility.module.d.ts +2 -0
  310. package/ngx-techlify-core.d.ts +51 -0
  311. package/ngx-techlify-core.metadata.json +1 -0
  312. package/package.json +36 -0
  313. package/public-api.d.ts +87 -0
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpService } from '../core/http.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../core/http.service";
5
+ export class EntityFileService {
6
+ constructor(http) {
7
+ this.http = http;
8
+ }
9
+ getEntityFiles(filters) {
10
+ return this.http.get(`api/entity-files`, { params: filters }).toPromise();
11
+ }
12
+ createEntityFile(model) {
13
+ return this.http.post("api/entity-files", model).toPromise();
14
+ }
15
+ updateEntityFile(model) {
16
+ return this.http.put(`api/entity-files/${model.id}`, model).toPromise();
17
+ }
18
+ deleteEntityFile(model) {
19
+ return this.http.delete(`api/entity-files/${model.id}`).toPromise();
20
+ }
21
+ uploadEntityFile(file) {
22
+ const formData = new FormData();
23
+ formData.append("fileData", file, file.name);
24
+ return this.http
25
+ .skipHeader()
26
+ .post("api/entity-files-upload", formData).toPromise();
27
+ }
28
+ }
29
+ EntityFileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EntityFileService_Factory() { return new EntityFileService(i0.ɵɵinject(i1.HttpService)); }, token: EntityFileService, providedIn: "root" });
30
+ EntityFileService.decorators = [
31
+ { type: Injectable, args: [{
32
+ providedIn: 'root'
33
+ },] }
34
+ ];
35
+ EntityFileService.ctorParameters = () => [
36
+ { type: HttpService }
37
+ ];
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUtuRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQW9CLElBQWlCO1FBQWpCLFNBQUksR0FBSixJQUFJLENBQWE7SUFBSSxDQUFDO0lBRTFDLGNBQWMsQ0FBQyxPQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBVTtRQUN6QixNQUFNLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLFVBQVUsRUFBRTthQUNaLElBQUksQ0FDSCx5QkFBeUIsRUFDekIsUUFBUSxDQUNULENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEIsQ0FBQzs7OztZQWhDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQUpRLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5RmlsZVNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UpIHsgfVxuXG4gIGdldEVudGl0eUZpbGVzKGZpbHRlcnM6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBhcGkvZW50aXR5LWZpbGVzYCwgeyBwYXJhbXM6IGZpbHRlcnMgfSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBjcmVhdGVFbnRpdHlGaWxlKG1vZGVsOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXCJhcGkvZW50aXR5LWZpbGVzXCIsIG1vZGVsKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHVwZGF0ZUVudGl0eUZpbGUobW9kZWw6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGBhcGkvZW50aXR5LWZpbGVzLyR7bW9kZWwuaWR9YCwgbW9kZWwpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZGVsZXRlRW50aXR5RmlsZShtb2RlbDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYGFwaS9lbnRpdHktZmlsZXMvJHttb2RlbC5pZH1gKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHVwbG9hZEVudGl0eUZpbGUoZmlsZTogRmlsZSkge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVEYXRhXCIsIGZpbGUsIGZpbGUubmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnNraXBIZWFkZXIoKVxuICAgICAgLnBvc3QoXG4gICAgICAgIFwiYXBpL2VudGl0eS1maWxlcy11cGxvYWRcIixcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICApLnRvUHJvbWlzZSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,161 @@
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.filters = {};
20
+ this.entityFiles = [];
21
+ this.displayedColumns = ['index', 'title', 'details', 'file',];
22
+ this.isWorking = false;
23
+ this.search = new FormControl('');
24
+ this.page = 1;
25
+ this.perPage = 25;
26
+ this.lastPage = 0;
27
+ }
28
+ ngOnInit() {
29
+ this.viewerConfig = {
30
+ imageStyle: {
31
+ height: '200px',
32
+ width: '200px'
33
+ },
34
+ viewerStyle: {
35
+ height: ' 160px',
36
+ width: '200px'
37
+ },
38
+ hideRemove: true
39
+ };
40
+ if (this.hideTitleAndDetails) {
41
+ this.displayedColumns = this.displayedColumns.filter(x => (x !== 'details') && (x !== 'title'));
42
+ }
43
+ this.filters = {
44
+ entity_type: this.entityType,
45
+ entity_id: this.entityId,
46
+ title: ""
47
+ };
48
+ this.search.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => {
49
+ this.filters.title = value;
50
+ this.reload();
51
+ });
52
+ this.fetchEntityFilesDetails();
53
+ if (!this.viewOnly) {
54
+ this.displayedColumns.push('actions');
55
+ }
56
+ }
57
+ fetchEntityFilesDetails() {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ this.filters.page = this.page;
60
+ this.isWorking = true;
61
+ const result = yield this.entityFileService.getEntityFiles(this.filters);
62
+ this.lastPage = result.last_page || this.page;
63
+ this.entityFiles = this.entityFiles.concat(result.data);
64
+ this.isWorking = false;
65
+ });
66
+ }
67
+ addEntityFile() {
68
+ const dialogRef = this.dialog.open(EntityFileFormComponent, {
69
+ width: "700px",
70
+ data: {
71
+ entity: this.filters,
72
+ hideTitleAndDetails: this.hideTitleAndDetails
73
+ },
74
+ autoFocus: false,
75
+ restoreFocus: false
76
+ });
77
+ dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
78
+ if (result) {
79
+ const files = [...this.entityFiles];
80
+ files.push(result);
81
+ this.entityFiles = files;
82
+ }
83
+ }));
84
+ }
85
+ editEntityFile(file) {
86
+ const dialogRef = this.dialog.open(EntityFileFormComponent, {
87
+ width: "700px",
88
+ autoFocus: false,
89
+ data: {
90
+ file: file,
91
+ hideTitleAndDetails: this.hideTitleAndDetails
92
+ } // Any data passed here will be injected into the model
93
+ });
94
+ dialogRef.afterClosed().subscribe(result => {
95
+ if (result) {
96
+ this.reload();
97
+ }
98
+ });
99
+ }
100
+ deleteEntityFile(file) {
101
+ const dialogRef = this.dialog.open(ActionPopupComponent, {
102
+ width: "400px",
103
+ data: {
104
+ title: "Delete File",
105
+ message: `Are you sure to proceed delete the file ${file.title}?`
106
+ },
107
+ autoFocus: false
108
+ });
109
+ dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
110
+ if (result) {
111
+ //Action confirmed
112
+ const result = yield this.entityFileService.deleteEntityFile(file);
113
+ this.alertService.addAlert("File successfully deleted", "success");
114
+ this.reload();
115
+ }
116
+ }));
117
+ }
118
+ onScroll() {
119
+ if (this.page < this.lastPage && !this.isWorking) {
120
+ this.page += 1;
121
+ this.fetchEntityFilesDetails();
122
+ }
123
+ }
124
+ reload() {
125
+ this.entityFiles = [];
126
+ this.page = 1;
127
+ if (!this.isWorking) {
128
+ this.fetchEntityFilesDetails();
129
+ }
130
+ }
131
+ ngOnDestroy() { }
132
+ resetFieldValue() {
133
+ this.search.setValue("");
134
+ }
135
+ };
136
+ EntityFilesViewAllComponent.decorators = [
137
+ { type: Component, args: [{
138
+ selector: 'app-entity-files-view-all',
139
+ template: "<div fxLayout=\"column\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"!displayMode\">\n <div fxLayout=\"column\" fxLayoutGap=\"0.25rem\">\n <h3 class=\"font-weight-bold\" fxLayoutAlign=\"center center\"> Files\n <button type=\"button\" class=\"mx-1\" mat-mini-fab color=\"primary\" (click)=\"addEntityFile()\" *ngIf=\"!viewOnly\">\n <mat-icon>add</mat-icon>\n </button>\n </h3>\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start\" *ngIf=\"!removeSearch\">\n <mat-form-field class=\"mt-1\">\n <input type=\"text\" matInput [formControl]=\"search\" placeholder=\"Title\" name=\"title\"\n 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 </div>\n <table mat-table [dataSource]=\"entityFiles\" class=\"w-100\" matSort multiTemplateDataRows\n infiniteScrollContainer=\"body\" infiniteScroll [infiniteScrollDistance]=\"1.5\" [infiniteScrollThrottle]=\"50\"\n [fromRoot]=\"true\" (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\"> {{element.title}} </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 Column -->\n <ng-container matColumnDef=\"file\">\n <th mat-header-cell *matHeaderCellDef> File </th>\n <td mat-cell *matCellDef=\"let element\">\n <a href=\"{{element.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\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\">\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 </div>\n</div>\n\n<div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"displayMode\">\n\n <div *ngFor=\"let efile of entityFiles\">\n <app-document-viewer [file]=\"efile.file\" [fileUrl]=\"efile.url\" [config]=\"this.viewerConfig\"\n [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\n</div>",
140
+ styles: [""]
141
+ },] }
142
+ ];
143
+ EntityFilesViewAllComponent.ctorParameters = () => [
144
+ { type: EntityFileService },
145
+ { type: Location },
146
+ { type: AlertService },
147
+ { type: MatDialog }
148
+ ];
149
+ EntityFilesViewAllComponent.propDecorators = {
150
+ entityId: [{ type: Input }],
151
+ entityType: [{ type: Input }],
152
+ viewOnly: [{ type: Input }],
153
+ removeSearch: [{ type: Input }],
154
+ hideTitleAndDetails: [{ type: Input }],
155
+ displayMode: [{ type: Input }]
156
+ };
157
+ EntityFilesViewAllComponent = __decorate([
158
+ UntilDestroy()
159
+ ], EntityFilesViewAllComponent);
160
+ export { EntityFilesViewAllComponent };
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGVzLXZpZXctYWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlcy12aWV3LWFsbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztJQVNqRSwyQkFBMkIsU0FBM0IsMkJBQTJCO0lBa0J0QyxZQUNVLGlCQUFvQyxFQUNyQyxRQUFrQixFQUNqQixZQUEwQixFQUMxQixNQUFpQjtRQUhqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQW5CbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQU1uQyxZ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LDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEVudGl0eUZpbGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9lbnRpdHktZmlsZS1mb3JtL2VudGl0eS1maWxlLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEVudGl0eUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGlvblBvcHVwIH0gZnJvbSAnLi4vYWN0aW9uLXBvcHVwL2FjdGlvbi1wb3B1cC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQG5nbmVhdC91bnRpbC1kZXN0cm95XCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWN0aW9uLXBvcHVwL2FjdGlvbi1wb3B1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyQ29uZmlnIH0gZnJvbSAnLi4vZG9jdW1lbnQtdmlld2VyL3ZpZXdlci1jb25maWcubW9kZWwnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1lbnRpdHktZmlsZXMtdmlldy1hbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW50aXR5LWZpbGVzLXZpZXctYWxsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW50aXR5LWZpbGVzLXZpZXctYWxsLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbnRpdHlGaWxlc1ZpZXdBbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBlbnRpdHlJZDogbnVtYmVyO1xuICBASW5wdXQoKSBlbnRpdHlUeXBlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZpZXdPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlbW92ZVNlYXJjaDogYm9vbGVhbjtcbiAgQElucHV0KCkgaGlkZVRpdGxlQW5kRGV0YWlsczogYm9vbGVhbjtcbiAgQElucHV0KCkgZGlzcGxheU1vZGU6IGJvb2xlYW47XG4gIHZpZXdlckNvbmZpZzogVmlld2VyQ29uZmlnO1xuXG4gIGZpbHRlcnM6IGFueSA9IHt9O1xuICBlbnRpdHlGaWxlczogYW55W10gPSBbXTtcbiAgZGlzcGxheWVkQ29sdW1ucyA9IFsnaW5kZXgnLCAndGl0bGUnLCAnZGV0YWlscycsICdmaWxlJyxdO1xuICBpc1dvcmtpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VhcmNoOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHBhZ2U6IG51bWJlciA9IDE7XG4gIHBlclBhZ2U6IG51bWJlciA9IDI1O1xuICBsYXN0UGFnZTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVudGl0eUZpbGVTZXJ2aWNlOiBFbnRpdHlGaWxlU2VydmljZSxcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuXG4gICAgdGhpcy52aWV3ZXJDb25maWcgPSB7XG4gICAgICBpbWFnZVN0eWxlOiB7XG4gICAgICAgIGhlaWdodDogJzIwMHB4JyxcbiAgICAgICAgd2lkdGg6ICcyMDBweCdcbiAgICAgIH0sXG4gICAgICB2aWV3ZXJTdHlsZToge1xuICAgICAgICBoZWlnaHQ6ICcgMTYwcHgnLFxuICAgICAgICB3aWR0aDogJzIwMHB4J1xuICAgICAgfSxcbiAgICAgIGhpZGVSZW1vdmU6IHRydWVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlscykge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmZpbHRlcih4ID0+ICh4ICE9PSAnZGV0YWlscycpICYmICh4ICE9PSAndGl0bGUnKSk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJzID0ge1xuICAgICAgZW50aXR5X3R5cGU6IHRoaXMuZW50aXR5VHlwZSxcbiAgICAgIGVudGl0eV9pZDogdGhpcy5lbnRpdHlJZCxcbiAgICAgIHRpdGxlOiBcIlwiXG4gICAgfTtcbiAgICB0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcnMudGl0bGUgPSB2YWx1ZTtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfSlcbiAgICB0aGlzLmZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCk7XG4gICAgaWYgKCF0aGlzLnZpZXdPbmx5KSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgnYWN0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCkge1xuICAgIHRoaXMuZmlsdGVycy5wYWdlID0gdGhpcy5wYWdlO1xuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMuZW50aXR5RmlsZVNlcnZpY2UuZ2V0RW50aXR5RmlsZXModGhpcy5maWx0ZXJzKTtcbiAgICB0aGlzLmxhc3RQYWdlID0gcmVzdWx0Lmxhc3RfcGFnZSB8fCB0aGlzLnBhZ2U7XG4gICAgdGhpcy5lbnRpdHlGaWxlcyA9IHRoaXMuZW50aXR5RmlsZXMuY29uY2F0KHJlc3VsdC5kYXRhKTtcbiAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICB9XG5cbiAgYWRkRW50aXR5RmlsZSgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEVudGl0eUZpbGVGb3JtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogXCI3MDBweFwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBlbnRpdHk6IHRoaXMuZmlsdGVycyxcbiAgICAgICAgaGlkZVRpdGxlQW5kRGV0YWlsczogdGhpcy5oaWRlVGl0bGVBbmREZXRhaWxzXG4gICAgICB9LFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyByZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCBmaWxlcyA9IFsuLi50aGlzLmVudGl0eUZpbGVzXTtcbiAgICAgICAgZmlsZXMucHVzaChyZXN1bHQpO1xuICAgICAgICB0aGlzLmVudGl0eUZpbGVzID0gZmlsZXM7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBlZGl0RW50aXR5RmlsZShmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEVudGl0eUZpbGVGb3JtQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogXCI3MDBweFwiLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgaGlkZVRpdGxlQW5kRGV0YWlsczogdGhpcy5oaWRlVGl0bGVBbmREZXRhaWxzXG4gICAgICB9IC8vIEFueSBkYXRhIHBhc3NlZCBoZXJlIHdpbGwgYmUgaW5qZWN0ZWQgaW50byB0aGUgbW9kZWxcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRW50aXR5RmlsZShmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvblBvcHVwQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogXCI0MDBweFwiLFxuICAgICAgZGF0YTogPEFjdGlvblBvcHVwPntcbiAgICAgICAgdGl0bGU6IFwiRGVsZXRlIEZpbGVcIixcbiAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB0byBwcm9jZWVkIGRlbGV0ZSB0aGUgZmlsZSAke2ZpbGUudGl0bGV9P2BcbiAgICAgIH0sXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXN5bmMgcmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgLy9BY3Rpb24gY29uZmlybWVkXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZW50aXR5RmlsZVNlcnZpY2UuZGVsZXRlRW50aXR5RmlsZShcbiAgICAgICAgICBmaWxlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KFxuICAgICAgICAgIFwiRmlsZSBzdWNjZXNzZnVsbHkgZGVsZXRlZFwiLFxuICAgICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVsb2FkKCk7XG5cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLnBhZ2UgPCB0aGlzLmxhc3RQYWdlICYmICF0aGlzLmlzV29ya2luZykge1xuICAgICAgdGhpcy5wYWdlICs9IDE7XG4gICAgICB0aGlzLmZldGNoRW50aXR5RmlsZXNEZXRhaWxzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMuZW50aXR5RmlsZXMgPSBbXTtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIGlmICghdGhpcy5pc1dvcmtpbmcpIHtcbiAgICAgIHRoaXMuZmV0Y2hFbnRpdHlGaWxlc0RldGFpbHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHsgfVxuXG4gIHJlc2V0RmllbGRWYWx1ZSgpIHtcbiAgICB0aGlzLnNlYXJjaC5zZXRWYWx1ZShcIlwiKTtcbiAgfVxufVxuIl19
@@ -0,0 +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==
@@ -0,0 +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=
@@ -0,0 +1,32 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as XLSX from 'xlsx';
3
+ export class ExportExcelButtonComponent {
4
+ constructor() {
5
+ this.name = 'Export_Data';
6
+ this.data = [];
7
+ }
8
+ ngOnInit() {
9
+ }
10
+ exportExcel() {
11
+ const fileName = `${this.name}_${new Date().getTime()}.xlsx`;
12
+ const ws = XLSX.utils.json_to_sheet(this.data);
13
+ /* generate workbook and add the worksheet */
14
+ const wb = XLSX.utils.book_new();
15
+ XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
16
+ /* save to file */
17
+ XLSX.writeFile(wb, fileName);
18
+ }
19
+ }
20
+ ExportExcelButtonComponent.decorators = [
21
+ { type: Component, args: [{
22
+ selector: 'app-export-excel-button',
23
+ template: "<button mat-raised-button color=\"accent\" (click)=\"exportExcel()\">Export Excel</button>",
24
+ styles: [""]
25
+ },] }
26
+ ];
27
+ ExportExcelButtonComponent.ctorParameters = () => [];
28
+ ExportExcelButtonComponent.propDecorators = {
29
+ name: [{ type: Input }],
30
+ data: [{ type: Input }]
31
+ };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWV4Y2VsLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2V4cG9ydC1leGNlbC9leHBvcnQtZXhjZWwtYnV0dG9uL2V4cG9ydC1leGNlbC1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBTzdCLE1BQU0sT0FBTywwQkFBMEI7SUFLckM7UUFIUyxTQUFJLEdBQVcsYUFBYSxDQUFDO1FBQzdCLFNBQUksR0FBVSxFQUFFLENBQUM7SUFFVixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDN0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLDZDQUE2QztRQUM3QyxNQUFNLEVBQUUsR0FBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFL0Msa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OztZQXhCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsc0dBQW1EOzthQUVwRDs7OzttQkFHRSxLQUFLO21CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1leHBvcnQtZXhjZWwtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V4cG9ydC1leGNlbC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9leHBvcnQtZXhjZWwtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXhwb3J0RXhjZWxCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9ICdFeHBvcnRfRGF0YSc7XG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIGV4cG9ydEV4Y2VsKCkge1xuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7dGhpcy5uYW1lfV8ke25ldyBEYXRlKCkuZ2V0VGltZSgpfS54bHN4YDtcbiAgICBjb25zdCB3cyA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldCh0aGlzLmRhdGEpO1xuICAgIC8qIGdlbmVyYXRlIHdvcmtib29rIGFuZCBhZGQgdGhlIHdvcmtzaGVldCAqL1xuICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC51dGlscy5ib29rX25ldygpO1xuICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod2IsIHdzLCAnU2hlZXQxJyk7XG5cbiAgICAvKiBzYXZlIHRvIGZpbGUgKi9cbiAgICBYTFNYLndyaXRlRmlsZSh3YiwgZmlsZU5hbWUpO1xuICB9XG5cblxufVxuIl19
@@ -0,0 +1,17 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ExportExcelButtonComponent } from './export-excel-button/export-excel-button.component';
4
+ import { MaterialModule } from '../material.module';
5
+ export class ExportExcelModule {
6
+ }
7
+ ExportExcelModule.decorators = [
8
+ { type: NgModule, args: [{
9
+ declarations: [ExportExcelButtonComponent],
10
+ imports: [
11
+ CommonModule,
12
+ MaterialModule
13
+ ],
14
+ exports: [ExportExcelButtonComponent]
15
+ },] }
16
+ ];
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWV4Y2VsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZXhwb3J0LWV4Y2VsL2V4cG9ydC1leGNlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBWXBELE1BQU0sT0FBTyxpQkFBaUI7OztZQVI3QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0JBQzFDLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGNBQWM7aUJBQ2Y7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7YUFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEV4cG9ydEV4Y2VsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9leHBvcnQtZXhjZWwtYnV0dG9uL2V4cG9ydC1leGNlbC1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0V4cG9ydEV4Y2VsQnV0dG9uQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbRXhwb3J0RXhjZWxCdXR0b25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEV4cG9ydEV4Y2VsTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,122 @@
1
+ import { Component, Input, Output, EventEmitter } from "@angular/core";
2
+ import { AlertService } from "../core/alert.service";
3
+ export class FileDropperComponent {
4
+ constructor(alertService) {
5
+ this.alertService = alertService;
6
+ this.fileArray = [];
7
+ this.fileChanged = new EventEmitter();
8
+ this.border = "1px dashed #989898";
9
+ }
10
+ /**Life cycle hook method */
11
+ ngOnInit() {
12
+ this.isSingleMode = !Boolean(this.config.multiple);
13
+ }
14
+ /**Method for dragging event */
15
+ dragEnter(event) {
16
+ event.target.style.background = this.config.dragColor || "#c0c0c0";
17
+ event.target.style.border = "1px dashed black";
18
+ event.preventDefault();
19
+ }
20
+ /**Method for drag over event */
21
+ dragOver(event) {
22
+ event.preventDefault();
23
+ }
24
+ /**Method for drag leave event */
25
+ dragLeave(event) {
26
+ event.target.style.background = "";
27
+ event.target.style.border = this.border;
28
+ event.preventDefault();
29
+ }
30
+ /**Method for drop event */
31
+ dropEvent(event) {
32
+ event.target.style.background = "";
33
+ event.target.style.border = this.border;
34
+ const droppedFiles = event.dataTransfer.files;
35
+ if (droppedFiles.length > 0) {
36
+ const fileArray = Array.from(droppedFiles);
37
+ this.addFiles(fileArray);
38
+ }
39
+ event.preventDefault();
40
+ }
41
+ /**Method to list files selected */
42
+ onFileChange(event) {
43
+ if (event.target.files && event.target.files.length) {
44
+ const fileArray = Array.from(event.target.files);
45
+ this.addFiles(fileArray);
46
+ const fileInput = document.getElementById(this.config.fileId);
47
+ fileInput.value = "";
48
+ }
49
+ }
50
+ /**Method to add files in the array */
51
+ addFiles(fileArray) {
52
+ if (!this.isSingleMode) {
53
+ fileArray.forEach((file) => {
54
+ this.fileArray = this.fileArray.filter((item) => item.name !== file.name);
55
+ if (this.fileSizeAllowed(file)) {
56
+ this.fileArray.push(file);
57
+ }
58
+ });
59
+ this.fileArray.sort(this.sortFiles);
60
+ this.fileChanged.emit(this.fileArray);
61
+ }
62
+ else {
63
+ // Single Mode
64
+ if (this.fileArray.length === 0) {
65
+ if (this.fileSizeAllowed(fileArray[0])) {
66
+ this.fileArray.push(fileArray[0]);
67
+ this.fileArray.sort(this.sortFiles);
68
+ this.fileChanged.emit(this.fileArray);
69
+ }
70
+ }
71
+ }
72
+ }
73
+ /**Method to sort the files in asc */
74
+ sortFiles(a, b) {
75
+ const nameA = a.name.toUpperCase();
76
+ const nameB = b.name.toUpperCase();
77
+ if (nameA < nameB) {
78
+ return -1;
79
+ }
80
+ if (nameA > nameB) {
81
+ return 1;
82
+ }
83
+ return 0;
84
+ }
85
+ /**Method tp validate the file size */
86
+ fileSizeAllowed(file) {
87
+ if (!Boolean(this.config.maxSize)) {
88
+ return true;
89
+ }
90
+ else if (file.size / (1024 * 1024) < this.config.maxSize) {
91
+ return true;
92
+ }
93
+ else {
94
+ this.alertService.addAlert(`The size of the file exceeds the limit ${this.config.maxSize} MB, kindly upload a file with size ${this.config.maxSize} MB or below`, "warn");
95
+ return false;
96
+ }
97
+ }
98
+ /**Method invokes when the drop box is clicked to upload the file */
99
+ clickEvent(event) {
100
+ if (!(this.isSingleMode && this.fileArray.length > 0)) {
101
+ document.getElementById(this.config.fileId).click();
102
+ }
103
+ event.preventDefault();
104
+ }
105
+ }
106
+ FileDropperComponent.decorators = [
107
+ { type: Component, args: [{
108
+ selector: "app-file-dropper",
109
+ template: "<div\n id=\"{{ config.containerId }}\"\n [ngStyle]=\"config.styles\"\n class=\"file-border\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n (dragover)=\"dragOver($event)\"\n (click)=\"clickEvent($event)\"\n (drop)=\"dropEvent($event)\"\n [ngClass]=\"{ 'disable-div': isSingleMode && fileArray.length > 0 }\"\n>\n <div fxFill fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <div>\n <span>Drag and drop file</span>\n </div>\n\n <div class=\"mt-2\">\n <span>or</span>\n </div>\n\n <div class=\"mt-2\">\n <button mat-raised-button color=\"primary\" type=\"button\">Browse</button>\n </div>\n\n <div class=\"mt-4\">\n <span>Supported files</span>\n </div>\n\n <div *ngIf=\"config.acceptFileText\">\n <span>{{ config.acceptFileText }}</span>\n </div>\n </div>\n</div>\n<input\n type=\"file\"\n id=\"{{ config.fileId }}\"\n [accept]=\"config.acceptFile\"\n (change)=\"onFileChange($event)\"\n [multiple]=\"config.multiple === true\"\n style=\"display:none\"\n/>\n",
110
+ styles: [".disable-div{cursor:not-allowed}.file-border{border:1px dashed #989898}"]
111
+ },] }
112
+ ];
113
+ FileDropperComponent.ctorParameters = () => [
114
+ { type: AlertService }
115
+ ];
116
+ FileDropperComponent.propDecorators = {
117
+ fileArray: [{ type: Input }],
118
+ config: [{ type: Input }],
119
+ fileChanged: [{ type: Output }],
120
+ styles: [{ type: Input }]
121
+ };
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZmlsZS1kcm9wcGVyL2ZpbGUtZHJvcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTckQsTUFBTSxPQUFPLG9CQUFvQjtJQWEvQixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVpyQyxjQUFTLEdBQVUsRUFBRSxDQUFDO1FBSXJCLGdCQUFXLEdBQVEsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRCxXQUFNLEdBQUcsb0JBQW9CLENBQUM7SUFNb0IsQ0FBQztJQUVuRCw0QkFBNEI7SUFDNUIsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFFbkUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDO1FBRS9DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLFNBQVMs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QztJQUN6QixDQUFDOzs7WUFwSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLGtqQ0FBNEM7O2FBRTdDOzs7WUFSUSxZQUFZOzs7d0JBVWxCLEtBQUs7cUJBRUwsS0FBSzswQkFFTCxNQUFNO3FCQUlOLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gXCIuLi9jb3JlL2FsZXJ0LnNlcnZpY2VcIjtcbmltcG9ydCB7IEZpbGVEcm9wcGVyQ29uZmlnIH0gZnJvbSAnLi9maWxlLWRyb3BwZXIubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtZmlsZS1kcm9wcGVyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS1kcm9wcGVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9maWxlLWRyb3BwZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZURyb3BwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmaWxlQXJyYXk6IGFueVtdID0gW107XG5cbiAgQElucHV0KCkgY29uZmlnOiBGaWxlRHJvcHBlckNvbmZpZztcblxuICBAT3V0cHV0KCkgZmlsZUNoYW5nZWQ6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBib3JkZXIgPSBcIjFweCBkYXNoZWQgIzk4OTg5OFwiO1xuXG4gIEBJbnB1dCgpIHN0eWxlczogYW55O1xuXG4gIGlzU2luZ2xlTW9kZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7IH1cblxuICAvKipMaWZlIGN5Y2xlIGhvb2sgbWV0aG9kICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNTaW5nbGVNb2RlID0gIUJvb2xlYW4odGhpcy5jb25maWcubXVsdGlwbGUpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGZvciBkcmFnZ2luZyBldmVudCAqL1xuICBkcmFnRW50ZXIoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kID0gdGhpcy5jb25maWcuZHJhZ0NvbG9yIHx8IFwiI2MwYzBjMFwiO1xuXG4gICAgZXZlbnQudGFyZ2V0LnN0eWxlLmJvcmRlciA9IFwiMXB4IGRhc2hlZCBibGFja1wiO1xuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCBmb3IgZHJhZyBvdmVyIGV2ZW50ICovXG4gIGRyYWdPdmVyKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGZvciBkcmFnIGxlYXZlIGV2ZW50ICovXG4gIGRyYWdMZWF2ZShldmVudDogYW55KSB7XG4gICAgZXZlbnQudGFyZ2V0LnN0eWxlLmJhY2tncm91bmQgPSBcIlwiO1xuICAgIGV2ZW50LnRhcmdldC5zdHlsZS5ib3JkZXIgPSB0aGlzLmJvcmRlcjtcblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipNZXRob2QgZm9yIGRyb3AgZXZlbnQgKi9cbiAgZHJvcEV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC50YXJnZXQuc3R5bGUuYmFja2dyb3VuZCA9IFwiXCI7XG4gICAgZXZlbnQudGFyZ2V0LnN0eWxlLmJvcmRlciA9IHRoaXMuYm9yZGVyO1xuICAgIGNvbnN0IGRyb3BwZWRGaWxlczogRmlsZUxpc3QgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgaWYgKGRyb3BwZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWxlQXJyYXkgPSBBcnJheS5mcm9tKGRyb3BwZWRGaWxlcyk7XG4gICAgICB0aGlzLmFkZEZpbGVzKGZpbGVBcnJheSk7XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipNZXRob2QgdG8gbGlzdCBmaWxlcyBzZWxlY3RlZCAqL1xuICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgZmlsZUFycmF5ID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpO1xuICAgICAgdGhpcy5hZGRGaWxlcyhmaWxlQXJyYXkpO1xuICAgICAgY29uc3QgZmlsZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgIHRoaXMuY29uZmlnLmZpbGVJZFxuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgZmlsZUlucHV0LnZhbHVlID0gXCJcIjtcbiAgICB9XG4gIH1cblxuICAvKipNZXRob2QgdG8gYWRkIGZpbGVzIGluIHRoZSBhcnJheSAqL1xuICBhZGRGaWxlcyhmaWxlQXJyYXk6IGFueSkge1xuICAgIGlmICghdGhpcy5pc1NpbmdsZU1vZGUpIHtcbiAgICAgIGZpbGVBcnJheS5mb3JFYWNoKChmaWxlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5maWxlQXJyYXkgPSB0aGlzLmZpbGVBcnJheS5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5uYW1lICE9PSBmaWxlLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsZVNpemVBbGxvd2VkKGZpbGUpKSB7XG4gICAgICAgICAgdGhpcy5maWxlQXJyYXkucHVzaChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZmlsZUFycmF5LnNvcnQodGhpcy5zb3J0RmlsZXMpO1xuICAgICAgdGhpcy5maWxlQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZUFycmF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2luZ2xlIE1vZGVcbiAgICAgIGlmICh0aGlzLmZpbGVBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZVNpemVBbGxvd2VkKGZpbGVBcnJheVswXSkpIHtcbiAgICAgICAgICB0aGlzLmZpbGVBcnJheS5wdXNoKGZpbGVBcnJheVswXSk7XG4gICAgICAgICAgdGhpcy5maWxlQXJyYXkuc29ydCh0aGlzLnNvcnRGaWxlcyk7XG4gICAgICAgICAgdGhpcy5maWxlQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZUFycmF5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKk1ldGhvZCB0byBzb3J0IHRoZSBmaWxlcyBpbiBhc2MgKi9cbiAgc29ydEZpbGVzKGE6IGFueSwgYjogYW55KSB7XG4gICAgY29uc3QgbmFtZUEgPSBhLm5hbWUudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBuYW1lQiA9IGIubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgIGlmIChuYW1lQSA8IG5hbWVCKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChuYW1lQSA+IG5hbWVCKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKk1ldGhvZCB0cCB2YWxpZGF0ZSB0aGUgZmlsZSBzaXplICovXG4gIGZpbGVTaXplQWxsb3dlZChmaWxlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5jb25maWcubWF4U2l6ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZmlsZS5zaXplIC8gKDEwMjQgKiAxMDI0KSA8IHRoaXMuY29uZmlnLm1heFNpemUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcbiAgICAgICAgYFRoZSBzaXplIG9mIHRoZSBmaWxlIGV4Y2VlZHMgdGhlIGxpbWl0ICR7dGhpcy5jb25maWcubWF4U2l6ZX0gTUIsIGtpbmRseSB1cGxvYWQgYSBmaWxlIHdpdGggc2l6ZSAke3RoaXMuY29uZmlnLm1heFNpemV9IE1CIG9yIGJlbG93YCxcbiAgICAgICAgXCJ3YXJuXCJcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiB0aGUgZHJvcCBib3ggaXMgY2xpY2tlZCB0byB1cGxvYWQgdGhlIGZpbGUgKi9cbiAgY2xpY2tFdmVudChldmVudDogYW55KSB7XG4gICAgaWYgKCEodGhpcy5pc1NpbmdsZU1vZGUgJiYgdGhpcy5maWxlQXJyYXkubGVuZ3RoID4gMCkpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY29uZmlnLmZpbGVJZCkuY2xpY2soKTtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export class FileDropperConfig {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wcGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9maWxlLWRyb3BwZXIvZmlsZS1kcm9wcGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxpQkFBaUI7Q0FTN0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmlsZURyb3BwZXJDb25maWcge1xuICBjb250YWluZXJJZDogc3RyaW5nO1xuICBmaWxlSWQ6IHN0cmluZztcbiAgc3R5bGVzPzogYW55O1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIGRyYWdDb2xvcj86IGJvb2xlYW47XG4gIGFjY2VwdEZpbGU6IHN0cmluZzsgLy8gdXNlICcqJyB0byBhY2NlcHQgYWxsIGZpbGUgdHlwZXMuXG4gIG1heFNpemU/OiBudW1iZXI7IC8vIHNpemUgaW4gTUJcbiAgYWNjZXB0RmlsZVRleHQ/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FileDropperComponent } from './file-dropper.component';
4
+ import { FlexLayoutModule } from '@angular/flex-layout';
5
+ import { MaterialModule } from '../material.module';
6
+ export class FileDropperModule {
7
+ }
8
+ FileDropperModule.decorators = [
9
+ { type: NgModule, args: [{
10
+ imports: [
11
+ CommonModule,
12
+ FlexLayoutModule,
13
+ MaterialModule
14
+ ],
15
+ declarations: [
16
+ FileDropperComponent
17
+ ],
18
+ exports: [FileDropperComponent]
19
+ },] }
20
+ ];
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZmlsZS1kcm9wcGVyL2ZpbGUtZHJvcHBlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBYXBELE1BQU0sT0FBTyxpQkFBaUI7OztZQVg3QixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osZ0JBQWdCO29CQUNoQixjQUFjO2lCQUNqQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1Ysb0JBQW9CO2lCQUN2QjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzthQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRmlsZURyb3BwZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtZHJvcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRmxleExheW91dE1vZHVsZSxcbiAgICAgICAgTWF0ZXJpYWxNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBGaWxlRHJvcHBlckNvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW0ZpbGVEcm9wcGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRHJvcHBlck1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './file-dropper.component';
2
+ export * from './file-dropper.model';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ZpbGUtZHJvcHBlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpbGUtZHJvcHBlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLWRyb3BwZXIubW9kZWwnOyJdfQ==
@@ -0,0 +1,12 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ const routes = [];
4
+ export class FailedItemsRoutingModule {
5
+ }
6
+ FailedItemsRoutingModule.decorators = [
7
+ { type: NgModule, args: [{
8
+ imports: [RouterModule.forChild(routes)],
9
+ exports: [RouterModule]
10
+ },] }
11
+ ];
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLWl0ZW1zLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9pbXBvcnQtY3N2L2ZhaWxlZC1pdGVtcy9mYWlsZWQtaXRlbXMtcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQVUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsTUFBTSxNQUFNLEdBQVcsRUFBRSxDQUFDO0FBTTFCLE1BQU0sT0FBTyx3QkFBd0I7OztZQUpwQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlcywgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRmFpbGVkSXRlbXNSb3V0aW5nTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,23 @@
1
+ import { Component, Input } from '@angular/core';
2
+ export class FailedItemsComponent {
3
+ constructor() { }
4
+ ngOnInit() {
5
+ }
6
+ isValidDate(d) {
7
+ var date = new Date(d);
8
+ return date instanceof Date && !isNaN(date.getTime());
9
+ }
10
+ }
11
+ FailedItemsComponent.decorators = [
12
+ { type: Component, args: [{
13
+ selector: 'app-failed-items',
14
+ template: "<div *ngIf=\"failedItems.length\" class=\"mt-4\">\n <div fxLayout fxLayoutAlign=\"center\">\n <h4>Failed Items</h4>\n </div>\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center\">\n <table class=\"table table-bordered table-striped table-hover table-sm\" fxFlex=\"80%\">\n <thead>\n <tr>\n <th>#</th>\n <th *ngFor=\"let field of selectedFields;\">{{field?.label}}</th>\n <th class=\"text-danger\">Error</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\n <tr>\n <td>{{i + 1}}</td>\n <td *ngFor=\"let field of selectedFields;\">\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\n {{ timesheet[field.property] | date:'mediumDate' }}\n </ng-container>\n <ng-template #elseProperty>\n {{ timesheet[field.property] }}\n </ng-template>\n </td>\n <td class=\"text-danger\">\n {{timesheet?.error}}\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n</div>",
15
+ styles: [""]
16
+ },] }
17
+ ];
18
+ FailedItemsComponent.ctorParameters = () => [];
19
+ FailedItemsComponent.propDecorators = {
20
+ failedItems: [{ type: Input }],
21
+ selectedFields: [{ type: Input }]
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9mYWlsZWQtaXRlbXMvZmFpbGVkLWl0ZW1zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU96RCxNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLGdCQUFnQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQU07UUFDaEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OztZQWpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsMmpEQUE0Qzs7YUFFN0M7Ozs7MEJBR0UsS0FBSzs2QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWlsZWQtaXRlbXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLWl0ZW1zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmFpbGVkLWl0ZW1zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFpbGVkSXRlbXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGZhaWxlZEl0ZW1zOiBhbnlbXTtcbiAgQElucHV0KCkgc2VsZWN0ZWRGaWVsZHM6IGFueVtdO1xuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgaXNWYWxpZERhdGUoZDogYW55KTogYm9vbGVhbiB7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICByZXR1cm4gZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FailedItemsRoutingModule } from './failed-items-routing.module';
4
+ import { FailedItemsComponent } from './failed-items.component';
5
+ import { MaterialModule } from '../../material.module';
6
+ import { FlexLayoutModule } from '@angular/flex-layout';
7
+ export class FailedItemsModule {
8
+ }
9
+ FailedItemsModule.decorators = [
10
+ { type: NgModule, args: [{
11
+ declarations: [FailedItemsComponent],
12
+ imports: [
13
+ CommonModule,
14
+ MaterialModule,
15
+ FlexLayoutModule,
16
+ FailedItemsRoutingModule
17
+ ],
18
+ exports: [FailedItemsComponent]
19
+ },] }
20
+ ];
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLWl0ZW1zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9mYWlsZWQtaXRlbXMvZmFpbGVkLWl0ZW1zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFheEQsTUFBTSxPQUFPLGlCQUFpQjs7O1lBVjdCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDcEMsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osY0FBYztvQkFDZCxnQkFBZ0I7b0JBQ2hCLHdCQUF3QjtpQkFDekI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7YUFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRmFpbGVkSXRlbXNSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9mYWlsZWQtaXRlbXMtcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgRmFpbGVkSXRlbXNDb21wb25lbnQgfSBmcm9tICcuL2ZhaWxlZC1pdGVtcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtGYWlsZWRJdGVtc0NvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgRmxleExheW91dE1vZHVsZSxcbiAgICBGYWlsZWRJdGVtc1JvdXRpbmdNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0ZhaWxlZEl0ZW1zQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBGYWlsZWRJdGVtc01vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export class ImportConfig {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9pbXBvcnQtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFZO0NBSXhCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEltcG9ydENvbmZpZyB7XG4gICAgcG9zdFVybDogc3RyaW5nO1xuICAgIHByb3BlcnRpZXM6IGFueVtdO1xuICAgIGltcG9ydFR5cGU6IHN0cmluZztcbn0iXX0=
@@ -0,0 +1,12 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ const routes = [];
4
+ export class ImportCsvRoutingModule {
5
+ }
6
+ ImportCsvRoutingModule.decorators = [
7
+ { type: NgModule, args: [{
8
+ imports: [RouterModule.forChild(routes)],
9
+ exports: [RouterModule]
10
+ },] }
11
+ ];
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzdi1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9pbXBvcnQtY3N2LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZELE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQztBQU0xQixNQUFNLE9BQU8sc0JBQXNCOzs7WUFKbEMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW107XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEltcG9ydENzdlJvdXRpbmdNb2R1bGUgeyB9XG4iXX0=