ngx-techlify-core 11.5.0 → 14.2.0

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 (658) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/action-popup/action-popup.component.mjs +34 -0
  3. package/{esm2015/lib/action-popup/action-popup.model.js → esm2020/lib/action-popup/action-popup.model.mjs} +3 -3
  4. package/esm2020/lib/action-popup/action-popup.module.mjs +32 -0
  5. package/{esm2015/lib/action-popup/index.js → esm2020/lib/action-popup/index.mjs} +3 -3
  6. package/esm2020/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.mjs +18 -0
  7. package/esm2020/lib/audit-log/audit-log-for-model/audit-log-for-model.component.mjs +51 -0
  8. package/esm2020/lib/audit-log/audit-log-for-model/audit-log-for-model.module.mjs +40 -0
  9. package/esm2020/lib/audit-log/audit-log-list/audit-log-list-routing.module.mjs +18 -0
  10. package/esm2020/lib/audit-log/audit-log-list/audit-log-list.component.mjs +139 -0
  11. package/esm2020/lib/audit-log/audit-log-list/audit-log-list.module.mjs +48 -0
  12. package/esm2020/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.mjs +18 -0
  13. package/esm2020/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +74 -0
  14. package/esm2020/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.mjs +40 -0
  15. package/esm2020/lib/audit-log/audit-log-routing.module.mjs +25 -0
  16. package/esm2020/lib/audit-log/audit-log-view/audit-log-view-routing.module.mjs +18 -0
  17. package/esm2020/lib/audit-log/audit-log-view/audit-log-view.component.mjs +51 -0
  18. package/esm2020/lib/audit-log/audit-log-view/audit-log-view.module.mjs +32 -0
  19. package/esm2020/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.mjs +18 -0
  20. package/esm2020/lib/audit-log/audit-log-view-model/audit-log-view-model.component.mjs +56 -0
  21. package/esm2020/lib/audit-log/audit-log-view-model/audit-log-view-model.module.mjs +32 -0
  22. package/esm2020/lib/audit-log/audit-log.module.mjs +31 -0
  23. package/esm2020/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.mjs +18 -0
  24. package/esm2020/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.mjs +37 -0
  25. package/esm2020/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.mjs +32 -0
  26. package/{esm2015/lib/base-model/index.js → esm2020/lib/base-model/index.mjs} +4 -4
  27. package/esm2020/lib/base-model/techlify-form-component.class.mjs +49 -0
  28. package/esm2020/lib/base-model/techlify-listing-component.class.mjs +41 -0
  29. package/esm2020/lib/base-model/techlify-service.class.mjs +64 -0
  30. package/esm2020/lib/core/alert.service.mjs +38 -0
  31. package/esm2020/lib/core/api-prefix.interceptor.mjs +26 -0
  32. package/esm2020/lib/core/authentication.guard.mjs +35 -0
  33. package/esm2020/lib/core/authentication.service.mjs +54 -0
  34. package/esm2020/lib/core/cache.interceptor.mjs +58 -0
  35. package/esm2020/lib/core/config.service.mjs +45 -0
  36. package/esm2020/lib/core/core.module.mjs +63 -0
  37. package/esm2020/lib/core/credentials.service.mjs +79 -0
  38. package/esm2020/lib/core/dataManager.service.mjs +119 -0
  39. package/esm2020/lib/core/error-handler.interceptor.mjs +48 -0
  40. package/esm2020/lib/core/error-handler.service.mjs +55 -0
  41. package/esm2020/lib/core/filter.service.mjs +37 -0
  42. package/esm2020/lib/core/form-validator.service.mjs +24 -0
  43. package/esm2020/lib/core/header.interceptor.mjs +24 -0
  44. package/esm2020/lib/core/http-cache.service.mjs +107 -0
  45. package/esm2020/lib/core/http.service.mjs +84 -0
  46. package/{esm2015/lib/core/index.js → esm2020/lib/core/index.mjs} +22 -21
  47. package/{esm2015/lib/core/logger.service.js → esm2020/lib/core/logger.service.mjs} +100 -100
  48. package/esm2020/lib/core/route-reusable-strategy.mjs +36 -0
  49. package/esm2020/lib/core/snack/snack.component.mjs +33 -0
  50. package/esm2020/lib/core/snack/snack.module.mjs +36 -0
  51. package/esm2020/lib/core/storage.service.mjs +38 -0
  52. package/esm2020/lib/core/techlify-config.model.mjs +28 -0
  53. package/esm2020/lib/core/token.interceptor.mjs +28 -0
  54. package/esm2020/lib/data-table/data-table.component.mjs +208 -0
  55. package/esm2020/lib/data-table/data-table.model.mjs +11 -0
  56. package/esm2020/lib/data-table/data-table.module.mjs +36 -0
  57. package/{esm2015/lib/data-table/index.js → esm2020/lib/data-table/index.mjs} +3 -3
  58. package/{esm2015/lib/date-validator.js → esm2020/lib/date-validator.mjs} +10 -10
  59. package/esm2020/lib/document-viewer/document-viewer.component.mjs +65 -0
  60. package/esm2020/lib/document-viewer/document-viewer.module.mjs +36 -0
  61. package/{esm2015/lib/document-viewer/index.js → esm2020/lib/document-viewer/index.mjs} +3 -3
  62. package/{esm2015/lib/document-viewer/viewer-config.model.js → esm2020/lib/document-viewer/viewer-config.model.mjs} +3 -3
  63. package/esm2020/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.mjs +32 -0
  64. package/esm2020/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.mjs +76 -0
  65. package/esm2020/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.mjs +36 -0
  66. package/{esm2015/lib/email-subscription/email-subscription-for-user/index.js → esm2020/lib/email-subscription/email-subscription-for-user/index.mjs} +2 -2
  67. package/esm2020/lib/email-subscription/email-subscription-routing.module.mjs +18 -0
  68. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.mjs +18 -0
  69. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.mjs +105 -0
  70. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.mjs +44 -0
  71. package/{esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js → esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.mjs} +2 -2
  72. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.mjs +34 -0
  73. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.mjs +161 -0
  74. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.mjs +44 -0
  75. package/{esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js → esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.mjs} +1 -1
  76. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.mjs +18 -0
  77. package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type.module.mjs +22 -0
  78. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.mjs +18 -0
  79. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.mjs +101 -0
  80. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.mjs +43 -0
  81. package/{esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js → esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.mjs} +2 -2
  82. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.mjs +34 -0
  83. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.mjs +165 -0
  84. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.mjs +48 -0
  85. package/{esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js → esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.mjs} +2 -2
  86. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.mjs +18 -0
  87. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.mjs +52 -0
  88. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.mjs +40 -0
  89. package/{esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js → esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.mjs} +2 -2
  90. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.mjs +18 -0
  91. package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user.module.mjs +22 -0
  92. package/esm2020/lib/email-subscription/email-subscription.module.mjs +22 -0
  93. package/esm2020/lib/entity-files/entity-file-form/entity-file-form.component.mjs +144 -0
  94. package/esm2020/lib/entity-files/entity-file.service.mjs +43 -0
  95. package/esm2020/lib/entity-files/entity-files-view-all.component.mjs +320 -0
  96. package/esm2020/lib/entity-files/entity-files-view-all.module.mjs +66 -0
  97. package/{esm2015/lib/entity-files/index.js → esm2020/lib/entity-files/index.mjs} +3 -3
  98. package/esm2020/lib/export-excel/export-excel-button/export-excel-button.component.mjs +32 -0
  99. package/esm2020/lib/export-excel/export-excel.module.mjs +24 -0
  100. package/esm2020/lib/file-dropper/file-dropper.component.mjs +125 -0
  101. package/{esm2015/lib/file-dropper/file-dropper.model.js → esm2020/lib/file-dropper/file-dropper.model.mjs} +3 -3
  102. package/esm2020/lib/file-dropper/file-dropper.module.mjs +30 -0
  103. package/{esm2015/lib/file-dropper/index.js → esm2020/lib/file-dropper/index.mjs} +3 -3
  104. package/esm2020/lib/import-csv/data-import/data-import.component.mjs +18 -0
  105. package/esm2020/lib/import-csv/failed-items-list/failed-items-list.component.mjs +35 -0
  106. package/esm2020/lib/import-csv/field-mapping/field-mapping.component.mjs +153 -0
  107. package/esm2020/lib/import-csv/import-csv-config.mjs +2 -0
  108. package/esm2020/lib/import-csv/import-csv.component.mjs +198 -0
  109. package/esm2020/lib/import-csv/import-csv.module.mjs +74 -0
  110. package/esm2020/lib/import-csv/import-history-list/import-history-list.component.mjs +71 -0
  111. package/esm2020/lib/import-csv/import-success/import-success.component.mjs +24 -0
  112. package/{esm2015/lib/loader/index.js → esm2020/lib/loader/index.mjs} +2 -2
  113. package/esm2020/lib/loader/loader.component.mjs +23 -0
  114. package/esm2020/lib/loader/loader.module.mjs +28 -0
  115. package/esm2020/lib/login-history-for-user/login-history-for-user-routing.module.mjs +26 -0
  116. package/esm2020/lib/login-history-for-user/login-history-for-user.component.mjs +92 -0
  117. package/esm2020/lib/login-history-for-user/login-history-for-user.module.mjs +44 -0
  118. package/esm2020/lib/material.module.mjs +115 -0
  119. package/esm2020/lib/note/comment-form/comment-form.component.mjs +77 -0
  120. package/{esm2015/lib/note/index.js → esm2020/lib/note/index.mjs} +4 -4
  121. package/esm2020/lib/note/note-form/note-form.component.mjs +79 -0
  122. package/esm2020/lib/note/note-list/note-list.component.mjs +148 -0
  123. package/esm2020/lib/note/note.module.mjs +54 -0
  124. package/esm2020/lib/note/note.service.mjs +29 -0
  125. package/esm2020/lib/read-more/read-more.component.mjs +43 -0
  126. package/esm2020/lib/read-more/read-more.module.mjs +30 -0
  127. package/esm2020/lib/request-helper/request-helper.service.mjs +106 -0
  128. package/{esm2015/lib/searchable-selector/index.js → esm2020/lib/searchable-selector/index.mjs} +3 -3
  129. package/esm2020/lib/searchable-selector/mat-select-infinite-scroll.directive.mjs +84 -0
  130. package/esm2020/lib/searchable-selector/searchable-selector.component.mjs +350 -0
  131. package/esm2020/lib/searchable-selector/searchable-selector.module.mjs +41 -0
  132. package/esm2020/lib/techlify-feature/on-off-switch/on-off-switch.component.mjs +24 -0
  133. package/esm2020/lib/techlify-feature/techlify-feature-enabled.directive.mjs +73 -0
  134. package/esm2020/lib/techlify-feature/techlify-feature-listing.component.mjs +172 -0
  135. package/esm2020/lib/techlify-feature/techlify-feature.module.mjs +48 -0
  136. package/{esm2015/lib/techlify-feature/techlify-feature.routing.js → esm2020/lib/techlify-feature/techlify-feature.routing.mjs} +12 -12
  137. package/esm2020/lib/techlify-feature/techlify-feature.service.mjs +26 -0
  138. package/{esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.js → esm2020/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.mjs} +15 -15
  139. package/esm2020/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.mjs +285 -0
  140. package/esm2020/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.mjs +38 -0
  141. package/esm2020/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.mjs +180 -0
  142. package/esm2020/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.mjs +46 -0
  143. package/esm2020/lib/techlify-update/techlify-update-form/techlify-update-form.component.mjs +114 -0
  144. package/esm2020/lib/techlify-update/techlify-update-form/techlify-update-form.module.mjs +38 -0
  145. package/esm2020/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.mjs +28 -0
  146. package/esm2020/lib/techlify-update/techlify-update-history/techlify-update-history.component.mjs +144 -0
  147. package/esm2020/lib/techlify-update/techlify-update-history/techlify-update-history.module.mjs +47 -0
  148. package/esm2020/lib/techlify-update/techlify-update-routing.module.mjs +28 -0
  149. package/esm2020/lib/techlify-update/techlify-update.module.mjs +51 -0
  150. package/esm2020/lib/techlify-update/techlify-update.service.mjs +41 -0
  151. package/esm2020/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.mjs +162 -0
  152. package/esm2020/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.mjs +77 -0
  153. package/esm2020/lib/techlify-update/update-notifier/update-notifier.component.mjs +53 -0
  154. package/esm2020/lib/techlify-update/update-notifier/update-notifier.module.mjs +39 -0
  155. package/esm2020/lib/techlify-update/update-view/update-view.component.mjs +38 -0
  156. package/esm2020/lib/techlify-update/update-view/update-view.module.mjs +30 -0
  157. package/esm2020/lib/timeline-filter/calculate-timeline.mjs +101 -0
  158. package/{esm2015/lib/timeline-filter/index.js → esm2020/lib/timeline-filter/index.mjs} +4 -4
  159. package/esm2020/lib/timeline-filter/timeline-filter-routing.module.mjs +18 -0
  160. package/esm2020/lib/timeline-filter/timeline-filter.component.mjs +237 -0
  161. package/esm2020/lib/timeline-filter/timeline-filter.module.mjs +60 -0
  162. package/{esm2015/lib/timeline-filter/timeline.model.js → esm2020/lib/timeline-filter/timeline.model.mjs} +18 -18
  163. package/{esm2015/lib/utility/date-utils.service.js → esm2020/lib/utility/date-utils.service.mjs} +50 -48
  164. package/{esm2015/lib/utility/index.js → esm2020/lib/utility/index.mjs} +4 -4
  165. package/esm2020/lib/utility/num-items-selector.component.mjs +31 -0
  166. package/esm2020/lib/utility/number-selector.component.mjs +42 -0
  167. package/esm2020/lib/utility/utility.module.mjs +28 -0
  168. package/esm2020/ngx-techlify-core.mjs +5 -0
  169. package/esm2020/public-api.mjs +97 -0
  170. package/fesm2015/ngx-techlify-core.mjs +7890 -0
  171. package/fesm2015/ngx-techlify-core.mjs.map +1 -0
  172. package/fesm2020/ngx-techlify-core.mjs +7795 -0
  173. package/fesm2020/ngx-techlify-core.mjs.map +1 -0
  174. package/index.d.ts +6 -0
  175. package/lib/action-popup/action-popup.component.d.ts +18 -14
  176. package/lib/action-popup/action-popup.component.d.ts.map +1 -0
  177. package/lib/action-popup/action-popup.model.d.ts +6 -5
  178. package/lib/action-popup/action-popup.model.d.ts.map +1 -0
  179. package/lib/action-popup/action-popup.module.d.ts +11 -2
  180. package/lib/action-popup/action-popup.module.d.ts.map +1 -0
  181. package/lib/action-popup/index.d.ts +3 -2
  182. package/lib/action-popup/index.d.ts.map +1 -0
  183. package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +8 -2
  184. package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts.map +1 -0
  185. package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +16 -12
  186. package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts.map +1 -0
  187. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +14 -2
  188. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts.map +1 -0
  189. package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +8 -2
  190. package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts.map +1 -0
  191. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +36 -32
  192. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts.map +1 -0
  193. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +16 -2
  194. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts.map +1 -0
  195. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +8 -2
  196. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts.map +1 -0
  197. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +23 -19
  198. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts.map +1 -0
  199. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +14 -2
  200. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts.map +1 -0
  201. package/lib/audit-log/audit-log-routing.module.d.ts +8 -2
  202. package/lib/audit-log/audit-log-routing.module.d.ts.map +1 -0
  203. package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +8 -2
  204. package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts.map +1 -0
  205. package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +21 -17
  206. package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts.map +1 -0
  207. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +12 -2
  208. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts.map +1 -0
  209. package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +8 -2
  210. package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts.map +1 -0
  211. package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +19 -15
  212. package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts.map +1 -0
  213. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +12 -2
  214. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts.map +1 -0
  215. package/lib/audit-log/audit-log.module.d.ts +11 -2
  216. package/lib/audit-log/audit-log.module.d.ts.map +1 -0
  217. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +8 -2
  218. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts.map +1 -0
  219. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +15 -11
  220. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts.map +1 -0
  221. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +12 -2
  222. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts.map +1 -0
  223. package/lib/base-model/index.d.ts +4 -3
  224. package/lib/base-model/index.d.ts.map +1 -0
  225. package/lib/base-model/techlify-form-component.class.d.ts +44 -43
  226. package/lib/base-model/techlify-form-component.class.d.ts.map +1 -0
  227. package/lib/base-model/techlify-listing-component.class.d.ts +48 -47
  228. package/lib/base-model/techlify-listing-component.class.d.ts.map +1 -0
  229. package/lib/base-model/techlify-service.class.d.ts +53 -52
  230. package/lib/base-model/techlify-service.class.d.ts.map +1 -0
  231. package/lib/core/alert.service.d.ts +16 -12
  232. package/lib/core/alert.service.d.ts.map +1 -0
  233. package/lib/core/api-prefix.interceptor.d.ts +15 -11
  234. package/lib/core/api-prefix.interceptor.d.ts.map +1 -0
  235. package/lib/core/authentication.guard.d.ts +14 -10
  236. package/lib/core/authentication.guard.d.ts.map +1 -0
  237. package/lib/core/authentication.service.d.ts +27 -23
  238. package/lib/core/authentication.service.d.ts.map +1 -0
  239. package/lib/core/cache.interceptor.d.ts +25 -21
  240. package/lib/core/cache.interceptor.d.ts.map +1 -0
  241. package/lib/core/config.service.d.ts +23 -19
  242. package/lib/core/config.service.d.ts.map +1 -0
  243. package/lib/core/core.module.d.ts +12 -3
  244. package/lib/core/core.module.d.ts.map +1 -0
  245. package/lib/core/credentials.service.d.ts +40 -36
  246. package/lib/core/credentials.service.d.ts.map +1 -0
  247. package/lib/core/dataManager.service.d.ts +74 -70
  248. package/lib/core/dataManager.service.d.ts.map +1 -0
  249. package/lib/core/error-handler.interceptor.d.ts +18 -14
  250. package/lib/core/error-handler.interceptor.d.ts.map +1 -0
  251. package/lib/core/error-handler.service.d.ts +18 -14
  252. package/lib/core/error-handler.service.d.ts.map +1 -0
  253. package/lib/core/filter.service.d.ts +12 -0
  254. package/lib/core/filter.service.d.ts.map +1 -0
  255. package/lib/core/form-validator.service.d.ts +12 -8
  256. package/lib/core/form-validator.service.d.ts.map +1 -0
  257. package/lib/core/header.interceptor.d.ts +12 -8
  258. package/lib/core/header.interceptor.d.ts.map +1 -0
  259. package/lib/core/http-cache.service.d.ts +58 -54
  260. package/lib/core/http-cache.service.d.ts.map +1 -0
  261. package/lib/core/http.service.d.ts +60 -56
  262. package/lib/core/http.service.d.ts.map +1 -0
  263. package/lib/core/index.d.ts +22 -20
  264. package/lib/core/index.d.ts.map +1 -0
  265. package/lib/core/logger.service.d.ts +86 -85
  266. package/lib/core/logger.service.d.ts.map +1 -0
  267. package/lib/core/route-reusable-strategy.d.ts +17 -13
  268. package/lib/core/route-reusable-strategy.d.ts.map +1 -0
  269. package/lib/core/snack/snack.component.d.ts +14 -8
  270. package/lib/core/snack/snack.component.d.ts.map +1 -0
  271. package/lib/core/snack/snack.module.d.ts +11 -2
  272. package/lib/core/snack/snack.module.d.ts.map +1 -0
  273. package/lib/core/storage.service.d.ts +19 -15
  274. package/lib/core/storage.service.d.ts.map +1 -0
  275. package/lib/core/techlify-config.model.d.ts +19 -18
  276. package/lib/core/techlify-config.model.d.ts.map +1 -0
  277. package/lib/core/token.interceptor.d.ts +15 -11
  278. package/lib/core/token.interceptor.d.ts.map +1 -0
  279. package/lib/data-table/data-table.component.d.ts +64 -60
  280. package/lib/data-table/data-table.component.d.ts.map +1 -0
  281. package/lib/data-table/data-table.model.d.ts +47 -46
  282. package/lib/data-table/data-table.model.d.ts.map +1 -0
  283. package/lib/data-table/data-table.module.d.ts +12 -2
  284. package/lib/data-table/data-table.module.d.ts.map +1 -0
  285. package/lib/data-table/index.d.ts +3 -2
  286. package/lib/data-table/index.d.ts.map +1 -0
  287. package/lib/date-validator.d.ts +2 -1
  288. package/lib/date-validator.d.ts.map +1 -0
  289. package/lib/document-viewer/document-viewer.component.d.ts +20 -16
  290. package/lib/document-viewer/document-viewer.component.d.ts.map +1 -0
  291. package/lib/document-viewer/document-viewer.module.d.ts +12 -2
  292. package/lib/document-viewer/document-viewer.module.d.ts.map +1 -0
  293. package/lib/document-viewer/index.d.ts +3 -2
  294. package/lib/document-viewer/index.d.ts.map +1 -0
  295. package/lib/document-viewer/viewer-config.model.d.ts +6 -5
  296. package/lib/document-viewer/viewer-config.model.d.ts.map +1 -0
  297. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +13 -7
  298. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts.map +1 -0
  299. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +21 -17
  300. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts.map +1 -0
  301. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +13 -2
  302. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts.map +1 -0
  303. package/lib/email-subscription/email-subscription-for-user/index.d.ts +2 -1
  304. package/lib/email-subscription/email-subscription-for-user/index.d.ts.map +1 -0
  305. package/lib/email-subscription/email-subscription-routing.module.d.ts +8 -2
  306. package/lib/email-subscription/email-subscription-routing.module.d.ts.map +1 -0
  307. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +8 -2
  308. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts.map +1 -0
  309. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +36 -32
  310. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts.map +1 -0
  311. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +15 -2
  312. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts.map +1 -0
  313. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts +2 -1
  314. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts.map +1 -0
  315. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +15 -9
  316. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts.map +1 -0
  317. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +34 -30
  318. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts.map +1 -0
  319. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +15 -2
  320. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts.map +1 -0
  321. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +2 -1
  322. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts.map +1 -0
  323. package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +8 -2
  324. package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts.map +1 -0
  325. package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +9 -2
  326. package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts.map +1 -0
  327. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +8 -2
  328. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts.map +1 -0
  329. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +36 -32
  330. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts.map +1 -0
  331. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +15 -2
  332. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts.map +1 -0
  333. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts +2 -1
  334. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts.map +1 -0
  335. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +15 -9
  336. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts.map +1 -0
  337. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +36 -32
  338. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts.map +1 -0
  339. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +16 -2
  340. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts.map +1 -0
  341. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts +2 -1
  342. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts.map +1 -0
  343. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +8 -2
  344. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts.map +1 -0
  345. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +17 -13
  346. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts.map +1 -0
  347. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +14 -2
  348. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts.map +1 -0
  349. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts +2 -1
  350. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts.map +1 -0
  351. package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +8 -2
  352. package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts.map +1 -0
  353. package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +9 -2
  354. package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts.map +1 -0
  355. package/lib/email-subscription/email-subscription.module.d.ts +9 -2
  356. package/lib/email-subscription/email-subscription.module.d.ts.map +1 -0
  357. package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +42 -38
  358. package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts.map +1 -0
  359. package/lib/entity-files/entity-file.service.d.ts +15 -11
  360. package/lib/entity-files/entity-file.service.d.ts.map +1 -0
  361. package/lib/entity-files/entity-files-view-all.component.d.ts +69 -65
  362. package/lib/entity-files/entity-files-view-all.component.d.ts.map +1 -0
  363. package/lib/entity-files/entity-files-view-all.module.d.ts +20 -2
  364. package/lib/entity-files/entity-files-view-all.module.d.ts.map +1 -0
  365. package/lib/entity-files/index.d.ts +3 -2
  366. package/lib/entity-files/index.d.ts.map +1 -0
  367. package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +12 -8
  368. package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts.map +1 -0
  369. package/lib/export-excel/export-excel.module.d.ts +10 -2
  370. package/lib/export-excel/export-excel.module.d.ts.map +1 -0
  371. package/lib/file-dropper/file-dropper.component.d.ts +37 -33
  372. package/lib/file-dropper/file-dropper.component.d.ts.map +1 -0
  373. package/lib/file-dropper/file-dropper.model.d.ts +11 -10
  374. package/lib/file-dropper/file-dropper.model.d.ts.map +1 -0
  375. package/lib/file-dropper/file-dropper.module.d.ts +11 -2
  376. package/lib/file-dropper/file-dropper.module.d.ts.map +1 -0
  377. package/lib/file-dropper/index.d.ts +3 -2
  378. package/lib/file-dropper/index.d.ts.map +1 -0
  379. package/lib/import-csv/data-import/data-import.component.d.ts +10 -6
  380. package/lib/import-csv/data-import/data-import.component.d.ts.map +1 -0
  381. package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts +16 -12
  382. package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts.map +1 -0
  383. package/lib/import-csv/field-mapping/field-mapping.component.d.ts +38 -34
  384. package/lib/import-csv/field-mapping/field-mapping.component.d.ts.map +1 -0
  385. package/lib/import-csv/import-csv-config.d.ts +18 -17
  386. package/lib/import-csv/import-csv-config.d.ts.map +1 -0
  387. package/lib/import-csv/import-csv.component.d.ts +37 -33
  388. package/lib/import-csv/import-csv.component.d.ts.map +1 -0
  389. package/lib/import-csv/import-csv.module.d.ts +21 -2
  390. package/lib/import-csv/import-csv.module.d.ts.map +1 -0
  391. package/lib/import-csv/import-history-list/import-history-list.component.d.ts +25 -21
  392. package/lib/import-csv/import-history-list/import-history-list.component.d.ts.map +1 -0
  393. package/lib/import-csv/import-success/import-success.component.d.ts +12 -8
  394. package/lib/import-csv/import-success/import-success.component.d.ts.map +1 -0
  395. package/lib/loader/index.d.ts +2 -1
  396. package/lib/loader/index.d.ts.map +1 -0
  397. package/lib/loader/loader.component.d.ts +12 -8
  398. package/lib/loader/loader.component.d.ts.map +1 -0
  399. package/lib/loader/loader.module.d.ts +10 -2
  400. package/lib/loader/loader.module.d.ts.map +1 -0
  401. package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +8 -2
  402. package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts.map +1 -0
  403. package/lib/login-history-for-user/login-history-for-user.component.d.ts +27 -23
  404. package/lib/login-history-for-user/login-history-for-user.component.d.ts.map +1 -0
  405. package/lib/login-history-for-user/login-history-for-user.module.d.ts +15 -2
  406. package/lib/login-history-for-user/login-history-for-user.module.d.ts.map +1 -0
  407. package/lib/material.module.d.ts +27 -2
  408. package/lib/material.module.d.ts.map +1 -0
  409. package/lib/note/comment-form/comment-form.component.d.ts +26 -22
  410. package/lib/note/comment-form/comment-form.component.d.ts.map +1 -0
  411. package/lib/note/index.d.ts +4 -3
  412. package/lib/note/index.d.ts.map +1 -0
  413. package/lib/note/note-form/note-form.component.d.ts +31 -27
  414. package/lib/note/note-form/note-form.component.d.ts.map +1 -0
  415. package/lib/note/note-list/note-list.component.d.ts +32 -28
  416. package/lib/note/note-list/note-list.component.d.ts.map +1 -0
  417. package/lib/note/note.module.d.ts +17 -2
  418. package/lib/note/note.module.d.ts.map +1 -0
  419. package/lib/note/note.service.d.ts +13 -9
  420. package/lib/note/note.service.d.ts.map +1 -0
  421. package/lib/read-more/read-more.component.d.ts +16 -12
  422. package/lib/read-more/read-more.component.d.ts.map +1 -0
  423. package/lib/read-more/read-more.module.d.ts +11 -2
  424. package/lib/read-more/read-more.module.d.ts.map +1 -0
  425. package/lib/request-helper/request-helper.service.d.ts +41 -0
  426. package/lib/request-helper/request-helper.service.d.ts.map +1 -0
  427. package/lib/searchable-selector/index.d.ts +3 -2
  428. package/lib/searchable-selector/index.d.ts.map +1 -0
  429. package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +27 -23
  430. package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts.map +1 -0
  431. package/lib/searchable-selector/searchable-selector.component.d.ts +85 -81
  432. package/lib/searchable-selector/searchable-selector.component.d.ts.map +1 -0
  433. package/lib/searchable-selector/searchable-selector.module.d.ts +13 -2
  434. package/lib/searchable-selector/searchable-selector.module.d.ts.map +1 -0
  435. package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +13 -9
  436. package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts.map +1 -0
  437. package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +21 -17
  438. package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts.map +1 -0
  439. package/lib/techlify-feature/techlify-feature-listing.component.d.ts +41 -37
  440. package/lib/techlify-feature/techlify-feature-listing.component.d.ts.map +1 -0
  441. package/lib/techlify-feature/techlify-feature.module.d.ts +17 -2
  442. package/lib/techlify-feature/techlify-feature.module.d.ts.map +1 -0
  443. package/lib/techlify-feature/techlify-feature.routing.d.ts +3 -2
  444. package/lib/techlify-feature/techlify-feature.routing.d.ts.map +1 -0
  445. package/lib/techlify-feature/techlify-feature.service.d.ts +12 -8
  446. package/lib/techlify-feature/techlify-feature.service.d.ts.map +1 -0
  447. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +13 -12
  448. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts.map +1 -0
  449. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +80 -76
  450. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts.map +1 -0
  451. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +13 -2
  452. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts.map +1 -0
  453. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +62 -58
  454. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts.map +1 -0
  455. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +15 -2
  456. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts.map +1 -0
  457. package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +34 -30
  458. package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts.map +1 -0
  459. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +13 -2
  460. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts.map +1 -0
  461. package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +8 -2
  462. package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts.map +1 -0
  463. package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +35 -31
  464. package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts.map +1 -0
  465. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +16 -2
  466. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts.map +1 -0
  467. package/lib/techlify-update/techlify-update-routing.module.d.ts +8 -2
  468. package/lib/techlify-update/techlify-update-routing.module.d.ts.map +1 -0
  469. package/lib/techlify-update/techlify-update.module.d.ts +17 -2
  470. package/lib/techlify-update/techlify-update.module.d.ts.map +1 -0
  471. package/lib/techlify-update/techlify-update.service.d.ts +17 -13
  472. package/lib/techlify-update/techlify-update.service.d.ts.map +1 -0
  473. package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +35 -31
  474. package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts.map +1 -0
  475. package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +29 -25
  476. package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts.map +1 -0
  477. package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +20 -16
  478. package/lib/techlify-update/update-notifier/update-notifier.component.d.ts.map +1 -0
  479. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +14 -2
  480. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts.map +1 -0
  481. package/lib/techlify-update/update-view/update-view.component.d.ts +18 -14
  482. package/lib/techlify-update/update-view/update-view.component.d.ts.map +1 -0
  483. package/lib/techlify-update/update-view/update-view.module.d.ts +11 -2
  484. package/lib/techlify-update/update-view/update-view.module.d.ts.map +1 -0
  485. package/lib/timeline-filter/calculate-timeline.d.ts +7 -6
  486. package/lib/timeline-filter/calculate-timeline.d.ts.map +1 -0
  487. package/lib/timeline-filter/index.d.ts +4 -3
  488. package/lib/timeline-filter/index.d.ts.map +1 -0
  489. package/lib/timeline-filter/timeline-filter-routing.module.d.ts +8 -2
  490. package/lib/timeline-filter/timeline-filter-routing.module.d.ts.map +1 -0
  491. package/lib/timeline-filter/timeline-filter.component.d.ts +66 -61
  492. package/lib/timeline-filter/timeline-filter.component.d.ts.map +1 -0
  493. package/lib/timeline-filter/timeline-filter.module.d.ts +19 -2
  494. package/lib/timeline-filter/timeline-filter.module.d.ts.map +1 -0
  495. package/lib/timeline-filter/timeline.model.d.ts +18 -17
  496. package/lib/timeline-filter/timeline.model.d.ts.map +1 -0
  497. package/lib/utility/date-utils.service.d.ts +25 -21
  498. package/lib/utility/date-utils.service.d.ts.map +1 -0
  499. package/lib/utility/index.d.ts +4 -3
  500. package/lib/utility/index.d.ts.map +1 -0
  501. package/lib/utility/num-items-selector.component.d.ts +20 -16
  502. package/lib/utility/num-items-selector.component.d.ts.map +1 -0
  503. package/lib/utility/number-selector.component.d.ts +24 -20
  504. package/lib/utility/number-selector.component.d.ts.map +1 -0
  505. package/lib/utility/utility.module.d.ts +11 -2
  506. package/lib/utility/utility.module.d.ts.map +1 -0
  507. package/ngx-techlify-core.d.ts.map +1 -0
  508. package/package.json +21 -9
  509. package/public-api.d.ts +94 -92
  510. package/public-api.d.ts.map +1 -0
  511. package/src/lib/timeline-filter/README.md +60 -0
  512. package/bundles/ngx-techlify-core.umd.js +0 -8449
  513. package/bundles/ngx-techlify-core.umd.js.map +0 -1
  514. package/bundles/ngx-techlify-core.umd.min.js +0 -2
  515. package/bundles/ngx-techlify-core.umd.min.js.map +0 -1
  516. package/esm2015/lib/action-popup/action-popup.component.js +0 -32
  517. package/esm2015/lib/action-popup/action-popup.module.js +0 -26
  518. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +0 -12
  519. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +0 -49
  520. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +0 -25
  521. package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +0 -12
  522. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +0 -132
  523. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +0 -29
  524. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +0 -12
  525. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +0 -67
  526. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +0 -25
  527. package/esm2015/lib/audit-log/audit-log-routing.module.js +0 -19
  528. package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +0 -12
  529. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +0 -60
  530. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +0 -21
  531. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +0 -12
  532. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +0 -57
  533. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +0 -21
  534. package/esm2015/lib/audit-log/audit-log.module.js +0 -20
  535. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +0 -12
  536. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +0 -35
  537. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +0 -21
  538. package/esm2015/lib/base-model/techlify-form-component.class.js +0 -51
  539. package/esm2015/lib/base-model/techlify-listing-component.class.js +0 -41
  540. package/esm2015/lib/base-model/techlify-service.class.js +0 -64
  541. package/esm2015/lib/core/alert.service.js +0 -40
  542. package/esm2015/lib/core/api-prefix.interceptor.js +0 -28
  543. package/esm2015/lib/core/authentication.guard.js +0 -39
  544. package/esm2015/lib/core/authentication.service.js +0 -59
  545. package/esm2015/lib/core/cache.interceptor.js +0 -60
  546. package/esm2015/lib/core/config.service.js +0 -47
  547. package/esm2015/lib/core/core.module.js +0 -42
  548. package/esm2015/lib/core/credentials.service.js +0 -84
  549. package/esm2015/lib/core/dataManager.service.js +0 -121
  550. package/esm2015/lib/core/error-handler.interceptor.js +0 -53
  551. package/esm2015/lib/core/error-handler.service.js +0 -60
  552. package/esm2015/lib/core/form-validator.service.js +0 -23
  553. package/esm2015/lib/core/header.interceptor.js +0 -22
  554. package/esm2015/lib/core/http-cache.service.js +0 -110
  555. package/esm2015/lib/core/http.service.js +0 -82
  556. package/esm2015/lib/core/route-reusable-strategy.js +0 -35
  557. package/esm2015/lib/core/snack/snack.component.js +0 -33
  558. package/esm2015/lib/core/snack/snack.module.js +0 -25
  559. package/esm2015/lib/core/storage.service.js +0 -37
  560. package/esm2015/lib/core/techlify-config.model.js +0 -28
  561. package/esm2015/lib/core/token.interceptor.js +0 -30
  562. package/esm2015/lib/data-table/data-table.component.js +0 -190
  563. package/esm2015/lib/data-table/data-table.model.js +0 -11
  564. package/esm2015/lib/data-table/data-table.module.js +0 -25
  565. package/esm2015/lib/document-viewer/document-viewer.component.js +0 -58
  566. package/esm2015/lib/document-viewer/document-viewer.module.js +0 -25
  567. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +0 -26
  568. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +0 -72
  569. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +0 -23
  570. package/esm2015/lib/email-subscription/email-subscription-routing.module.js +0 -12
  571. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +0 -12
  572. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +0 -102
  573. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +0 -28
  574. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +0 -28
  575. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +0 -153
  576. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +0 -27
  577. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +0 -12
  578. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +0 -15
  579. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +0 -12
  580. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +0 -99
  581. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +0 -27
  582. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +0 -28
  583. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +0 -155
  584. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +0 -29
  585. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +0 -12
  586. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +0 -50
  587. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +0 -25
  588. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +0 -12
  589. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +0 -15
  590. package/esm2015/lib/email-subscription/email-subscription.module.js +0 -15
  591. package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +0 -147
  592. package/esm2015/lib/entity-files/entity-file.service.js +0 -45
  593. package/esm2015/lib/entity-files/entity-files-view-all.component.js +0 -304
  594. package/esm2015/lib/entity-files/entity-files-view-all.module.js +0 -40
  595. package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +0 -32
  596. package/esm2015/lib/export-excel/export-excel.module.js +0 -17
  597. package/esm2015/lib/file-dropper/file-dropper.component.js +0 -122
  598. package/esm2015/lib/file-dropper/file-dropper.module.js +0 -21
  599. package/esm2015/lib/import-csv/data-import/data-import.component.js +0 -18
  600. package/esm2015/lib/import-csv/failed-items-list/failed-items-list.component.js +0 -33
  601. package/esm2015/lib/import-csv/field-mapping/field-mapping.component.js +0 -148
  602. package/esm2015/lib/import-csv/import-csv-config.js +0 -2
  603. package/esm2015/lib/import-csv/import-csv.component.js +0 -196
  604. package/esm2015/lib/import-csv/import-csv.module.js +0 -46
  605. package/esm2015/lib/import-csv/import-history-list/import-history-list.component.js +0 -71
  606. package/esm2015/lib/import-csv/import-success/import-success.component.js +0 -19
  607. package/esm2015/lib/loader/loader.component.js +0 -22
  608. package/esm2015/lib/loader/loader.module.js +0 -21
  609. package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +0 -20
  610. package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +0 -88
  611. package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +0 -27
  612. package/esm2015/lib/material.module.js +0 -62
  613. package/esm2015/lib/note/comment-form/comment-form.component.js +0 -73
  614. package/esm2015/lib/note/note-form/note-form.component.js +0 -81
  615. package/esm2015/lib/note/note-list/note-list.component.js +0 -151
  616. package/esm2015/lib/note/note.module.js +0 -36
  617. package/esm2015/lib/note/note.service.js +0 -31
  618. package/esm2015/lib/read-more/read-more.component.js +0 -43
  619. package/esm2015/lib/read-more/read-more.module.js +0 -21
  620. package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +0 -81
  621. package/esm2015/lib/searchable-selector/searchable-selector.component.js +0 -307
  622. package/esm2015/lib/searchable-selector/searchable-selector.module.js +0 -28
  623. package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +0 -27
  624. package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +0 -78
  625. package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +0 -177
  626. package/esm2015/lib/techlify-feature/techlify-feature.module.js +0 -30
  627. package/esm2015/lib/techlify-feature/techlify-feature.service.js +0 -28
  628. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.js +0 -269
  629. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.js +0 -25
  630. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.js +0 -168
  631. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.js +0 -29
  632. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +0 -114
  633. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +0 -28
  634. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +0 -22
  635. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +0 -143
  636. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +0 -28
  637. package/esm2015/lib/techlify-update/techlify-update-routing.module.js +0 -22
  638. package/esm2015/lib/techlify-update/techlify-update.module.js +0 -30
  639. package/esm2015/lib/techlify-update/techlify-update.service.js +0 -43
  640. package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +0 -161
  641. package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +0 -82
  642. package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +0 -62
  643. package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +0 -29
  644. package/esm2015/lib/techlify-update/update-view/update-view.component.js +0 -36
  645. package/esm2015/lib/techlify-update/update-view/update-view.module.js +0 -24
  646. package/esm2015/lib/timeline-filter/calculate-timeline.js +0 -102
  647. package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +0 -12
  648. package/esm2015/lib/timeline-filter/timeline-filter.component.js +0 -213
  649. package/esm2015/lib/timeline-filter/timeline-filter.module.js +0 -23
  650. package/esm2015/lib/utility/num-items-selector.component.js +0 -30
  651. package/esm2015/lib/utility/number-selector.component.js +0 -38
  652. package/esm2015/lib/utility/utility.module.js +0 -21
  653. package/esm2015/ngx-techlify-core.js +0 -60
  654. package/esm2015/public-api.js +0 -96
  655. package/fesm2015/ngx-techlify-core.js +0 -7150
  656. package/fesm2015/ngx-techlify-core.js.map +0 -1
  657. package/ngx-techlify-core.d.ts +0 -59
  658. package/ngx-techlify-core.metadata.json +0 -1
@@ -0,0 +1,35 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/flex-layout/flex";
5
+ import * as i3 from "@angular/material/button";
6
+ import * as i4 from "@angular/material/icon";
7
+ import * as i5 from "@angular/material/divider";
8
+ export class FailedItemsListComponent {
9
+ constructor(location) {
10
+ this.location = location;
11
+ this.onReUpload = new EventEmitter();
12
+ }
13
+ ngOnInit() {
14
+ }
15
+ isValidDate(d) {
16
+ var date = new Date(d);
17
+ return date instanceof Date && !isNaN(date.getTime());
18
+ }
19
+ reUpload() {
20
+ this.onReUpload.emit(true);
21
+ }
22
+ }
23
+ FailedItemsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FailedItemsListComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
24
+ FailedItemsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FailedItemsListComponent, selector: "app-failed-items-list", inputs: { failedItems: "failedItems", selectedFields: "selectedFields" }, outputs: { onReUpload: "onReUpload" }, ngImport: i0, template: "<div *ngIf=\"failedItems.length\" class=\"mt-4\" fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{failedItems.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Error(s) Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n <div fxLayout=\"row wrap\" class=\"pt-3\">\r\n <h5 class=\"primary-color\">Errors</h5>\r\n <div style=\"overflow-x: auto;width: 1100px;\" class=\"pt-3\">\r\n <table class=\"table table-bordered table-striped table-hover table-sm ml-4 w-100\">\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th *ngFor=\"let field of selectedFields;\">{{field?.label}}</th>\r\n <th class=\"text-danger\">Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\r\n <tr>\r\n <td>{{i + 1}}</td>\r\n <td *ngFor=\"let field of selectedFields;\">\r\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\r\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\r\n {{ timesheet[field.property] | date: 'MMM d, y, H:mm:ss' }}\r\n </ng-container>\r\n <ng-template #elseProperty>\r\n {{ timesheet[field.property] }}\r\n </ng-template>\r\n </td>\r\n <td class=\"text-danger\">\r\n {{timesheet?.error}}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Close\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FailedItemsListComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'app-failed-items-list', template: "<div *ngIf=\"failedItems.length\" class=\"mt-4\" fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{failedItems.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Error(s) Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n <div fxLayout=\"row wrap\" class=\"pt-3\">\r\n <h5 class=\"primary-color\">Errors</h5>\r\n <div style=\"overflow-x: auto;width: 1100px;\" class=\"pt-3\">\r\n <table class=\"table table-bordered table-striped table-hover table-sm ml-4 w-100\">\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th *ngFor=\"let field of selectedFields;\">{{field?.label}}</th>\r\n <th class=\"text-danger\">Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\r\n <tr>\r\n <td>{{i + 1}}</td>\r\n <td *ngFor=\"let field of selectedFields;\">\r\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\r\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\r\n {{ timesheet[field.property] | date: 'MMM d, y, H:mm:ss' }}\r\n </ng-container>\r\n <ng-template #elseProperty>\r\n {{ timesheet[field.property] }}\r\n </ng-template>\r\n </td>\r\n <td class=\"text-danger\">\r\n {{timesheet?.error}}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Close\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n </div>\r\n</div>\r\n" }]
28
+ }], ctorParameters: function () { return [{ type: i1.Location }]; }, propDecorators: { failedItems: [{
29
+ type: Input
30
+ }], selectedFields: [{
31
+ type: Input
32
+ }], onReUpload: [{
33
+ type: Output
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLWl0ZW1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9pbXBvcnQtY3N2L2ZhaWxlZC1pdGVtcy1saXN0L2ZhaWxlZC1pdGVtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9mYWlsZWQtaXRlbXMtbGlzdC9mYWlsZWQtaXRlbXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBTy9FLE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFDUyxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSGpCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSXRDLENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFNO1FBQ2hCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7O3FIQW5CVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw4S0NSckMsKzNFQTZEQTsyRkRyRGEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QjsrRkFLeEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZhaWxlZC1pdGVtcy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLWl0ZW1zLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhaWxlZC1pdGVtcy1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZhaWxlZEl0ZW1zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZmFpbGVkSXRlbXM6IGFueVtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRmllbGRzOiBhbnlbXTtcclxuICBAT3V0cHV0KCkgb25SZVVwbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRGF0ZShkOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHZhciBkYXRlID0gbmV3IERhdGUoZCk7XHJcbiAgICByZXR1cm4gZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKTtcclxuICB9XHJcblxyXG4gIHJlVXBsb2FkKCkge1xyXG4gICAgdGhpcy5vblJlVXBsb2FkLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZmFpbGVkSXRlbXMubGVuZ3RoXCIgY2xhc3M9XCJtdC00XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBjbGFzcz1cInBiLTNcIj5cclxuICAgIDxoNSBmeEZsZXg9XCIzMCVcIiBjbGFzcz1cInByaW1hcnktY29sb3JcIj5TdW1tYXJ5PC9oNT5cclxuICAgIDxkaXYgZnhGbGV4PVwiNzAlXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cclxuICAgICAgPGg1IGNsYXNzPVwic2Vjb25kYXJ5LWNvbG9yXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tmYWlsZWRJdGVtcy5sZW5ndGh9fTwvc3Bhbj5cclxuICAgICAgPC9oNT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIG1sLTJcIj4gRXJyb3IocykgRm91bmQgSW4gVXBsb2FkZWQgRmlsZTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwXCIgY2xhc3M9XCJwdC0zXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+RXJyb3JzPC9oNT5cclxuICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdy14OiBhdXRvO3dpZHRoOiAxMTAwcHg7XCIgY2xhc3M9XCJwdC0zXCI+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLXN0cmlwZWQgdGFibGUtaG92ZXIgdGFibGUtc20gbWwtNCB3LTEwMFwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoPiM8L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlbGVjdGVkRmllbGRzO1wiPnt7ZmllbGQ/LmxhYmVsfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPkVycm9yPC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aW1lc2hlZXQgb2YgZmFpbGVkSXRlbXM7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+e3tpICsgMX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlbGVjdGVkRmllbGRzO1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZC5wcm9wZXJ0eVR5cGUgPT0gJ2RhdGUnIHx8IGZpZWxkLnByb3BlcnR5VHlwZSA9PSAnZGF0ZVRpbWUnKVxyXG4gICAgICAgICAgICAgICAgICYmaXNWYWxpZERhdGUodGltZXNoZWV0W2ZpZWxkLnByb3BlcnR5XSk7ZWxzZSBlbHNlUHJvcGVydHk7XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHRpbWVzaGVldFtmaWVsZC5wcm9wZXJ0eV0gfCBkYXRlOiAnTU1NIGQsIHksIEg6bW06c3MnIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVByb3BlcnR5PlxyXG4gICAgICAgICAgICAgICAgICB7eyB0aW1lc2hlZXRbZmllbGQucHJvcGVydHldIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7dGltZXNoZWV0Py5lcnJvcn19XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibXQtMVwiIGZ4RmxleD1cIjEwMCVcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJtdC0yIG1yLTJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvY2F0aW9uLmJhY2soKVwiPlxyXG4gICAgICBDbG9zZVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMiBwcmltYXJ5LWNvbG9yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZVVwbG9hZCgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICBmaWxlX3VwbG9hZFxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgUmUtdXBsb2FkXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,153 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { UntypedFormControl, Validators } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "../../core/form-validator.service";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/flex-layout/flex";
8
+ import * as i5 from "@angular/material/button";
9
+ import * as i6 from "@angular/material/form-field";
10
+ import * as i7 from "@angular/material/icon";
11
+ import * as i8 from "@angular/material/core";
12
+ import * as i9 from "@angular/material/select";
13
+ import * as i10 from "@angular/material/divider";
14
+ import * as i11 from "@angular/material/tooltip";
15
+ const errorMessages = {
16
+ property: {
17
+ required: "Property is required",
18
+ unavailable: "Duplicate entry"
19
+ },
20
+ };
21
+ export class FieldMappingComponent {
22
+ constructor(fb, formValidatorService, changeDetectorRef, location) {
23
+ this.fb = fb;
24
+ this.formValidatorService = formValidatorService;
25
+ this.changeDetectorRef = changeDetectorRef;
26
+ this.location = location;
27
+ this.firstDataArray = [];
28
+ this.properties = [];
29
+ this.onSave = new EventEmitter();
30
+ this.onReUpload = new EventEmitter();
31
+ this.createImportMappingForm();
32
+ }
33
+ ngOnInit() {
34
+ this.properties = this.config.properties;
35
+ ;
36
+ this.reFectorAttributes(this.data[0]);
37
+ }
38
+ createImportMappingForm() {
39
+ this.importMappingForm = this.fb.group({
40
+ fields: this.fb.array([]),
41
+ });
42
+ }
43
+ get fieldsArray() {
44
+ return this.importMappingForm.get('fields');
45
+ }
46
+ createField(field) {
47
+ var fieldForm = this.fb.group({
48
+ id: new UntypedFormControl(field.id),
49
+ label: new UntypedFormControl(field.label),
50
+ value: new UntypedFormControl(field.value),
51
+ property: new UntypedFormControl(field.property, Validators.compose([
52
+ Validators.required
53
+ ])),
54
+ propertyType: new UntypedFormControl(field.propertyType)
55
+ });
56
+ return fieldForm;
57
+ }
58
+ reFectorAttributes(data) {
59
+ for (var k in data) {
60
+ if (data.hasOwnProperty(k)) {
61
+ var dataValue = {
62
+ id: '',
63
+ label: k,
64
+ value: data[k],
65
+ property: '',
66
+ propertyType: ''
67
+ };
68
+ this.firstDataArray.push(dataValue);
69
+ }
70
+ }
71
+ this.firstDataArray.forEach((element, mainIndex) => {
72
+ element.id = mainIndex;
73
+ this.properties.find((property, index) => {
74
+ if (property.label.toLowerCase().includes(element.label.toLowerCase())) {
75
+ element.property = property.value;
76
+ element.propertyType = property.type;
77
+ return element;
78
+ }
79
+ });
80
+ });
81
+ }
82
+ next() {
83
+ this.importMappingForm.markAllAsTouched();
84
+ if (!this.importMappingForm.valid) {
85
+ return;
86
+ }
87
+ this.onSave.emit(this.importMappingForm.value);
88
+ }
89
+ /** Method to evaluate form fields*/
90
+ isFieldValid(field, form) {
91
+ return this.formValidatorService.isFieldValid(field, form);
92
+ }
93
+ /** Method to find error in form fields*/
94
+ getErrorMessage(field, form) {
95
+ return this.formValidatorService.getErrorMessage(field, form, errorMessages);
96
+ }
97
+ ngAfterViewInit() {
98
+ //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
99
+ //Add 'implements AfterViewInit' to the class.
100
+ setTimeout(x => {
101
+ this.firstDataArray.forEach((element) => {
102
+ this.fieldsArray.push(this.createField(element));
103
+ });
104
+ this.changeDetectorRef.detectChanges();
105
+ }, 500);
106
+ }
107
+ updatePropertyType(event, index) {
108
+ var field = this.properties.find((field) => field.value == event.value);
109
+ if (field) {
110
+ this.fieldsArray.controls[index].get('propertyType').setValue(field.type);
111
+ this.uniqueValidator();
112
+ }
113
+ }
114
+ uniqueValidator() {
115
+ this.fieldsArray.value.forEach((field, index) => {
116
+ var control = this.fieldsArray.controls[index].get('property');
117
+ const isNameUnique = this.fieldsArray.value.find(propertyData => propertyData.property === control.value
118
+ && propertyData.id != this.fieldsArray.controls[index].get('id').value)
119
+ ? false
120
+ : true;
121
+ if (!isNameUnique) {
122
+ control.setErrors({ unavailable: true });
123
+ }
124
+ else {
125
+ control.setErrors(null);
126
+ }
127
+ });
128
+ }
129
+ removeField(index) {
130
+ if (index == -1) {
131
+ return;
132
+ }
133
+ this.fieldsArray.removeAt(index);
134
+ }
135
+ reUpload() {
136
+ this.onReUpload.emit(true);
137
+ }
138
+ }
139
+ FieldMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FieldMappingComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.FormValidatorService }, { token: i0.ChangeDetectorRef }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
140
+ FieldMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FieldMappingComponent, selector: "app-field-mapping", inputs: { data: "data", config: "config" }, outputs: { onSave: "onSave", onReUpload: "onReUpload" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"mt-2\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{data.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n\r\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\r\n <h5 class=\"primary-color pb-2\">Properties</h5>\r\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\r\n <tr class=\"table-header-row\">\r\n <th>Column Headers From File</th>\r\n <th>Preview Information</th>\r\n <th>Property</th>\r\n </tr>\r\n <ng-container formArrayName=\"fields\">\r\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\r\n <td>{{ field.get('label').value }}</td>\r\n <td>{{ field.get('value').value }}</td>\r\n <td>\r\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\r\n <mat-label>Select Property</mat-label>\r\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\r\n (selectionChange)=\"updatePropertyType($event, i)\">\r\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\r\n {{property.label}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\r\n {{getErrorMessage('property', fieldsArray.controls[i])}}\r\n </mat-error>\r\n </mat-form-field>\r\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\r\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\r\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Cancel\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\r\n Next\r\n <mat-icon>\r\n chevron_right\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </form>\r\n</div>\r\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FieldMappingComponent, decorators: [{
142
+ type: Component,
143
+ args: [{ selector: 'app-field-mapping', template: "<div fxLayout=\"column\" class=\"mt-2\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{data.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n\r\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\r\n <h5 class=\"primary-color pb-2\">Properties</h5>\r\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\r\n <tr class=\"table-header-row\">\r\n <th>Column Headers From File</th>\r\n <th>Preview Information</th>\r\n <th>Property</th>\r\n </tr>\r\n <ng-container formArrayName=\"fields\">\r\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\r\n <td>{{ field.get('label').value }}</td>\r\n <td>{{ field.get('value').value }}</td>\r\n <td>\r\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\r\n <mat-label>Select Property</mat-label>\r\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\r\n (selectionChange)=\"updatePropertyType($event, i)\">\r\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\r\n {{property.label}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\r\n {{getErrorMessage('property', fieldsArray.controls[i])}}\r\n </mat-error>\r\n </mat-form-field>\r\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\r\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\r\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Cancel\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\r\n Next\r\n <mat-icon>\r\n chevron_right\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </form>\r\n</div>\r\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"] }]
144
+ }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.FormValidatorService }, { type: i0.ChangeDetectorRef }, { type: i3.Location }]; }, propDecorators: { data: [{
145
+ type: Input
146
+ }], config: [{
147
+ type: Input
148
+ }], onSave: [{
149
+ type: Output
150
+ }], onReUpload: [{
151
+ type: Output
152
+ }] } });
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFwcGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvZmllbGQtbWFwcGluZy9maWVsZC1tYXBwaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9maWVsZC1tYXBwaW5nL2ZpZWxkLW1hcHBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUF3QyxrQkFBa0IsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJeEgsTUFBTSxhQUFhLEdBQVE7SUFDekIsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxXQUFXLEVBQUUsaUJBQWlCO0tBQy9CO0NBQ0YsQ0FBQztBQU9GLE1BQU0sT0FBTyxxQkFBcUI7SUFVaEMsWUFDVSxFQUFzQixFQUN0QixvQkFBMEMsRUFDMUMsaUJBQW9DLEVBQ3JDLFFBQWtCO1FBSGpCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBVDNCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDYixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVF2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUs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QW1CO21NQU9wQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0tdmFsaWRhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbXBvcnRDc3ZDb25maWcgfSBmcm9tICcuLi9pbXBvcnQtY3N2LWNvbmZpZyc7XHJcblxyXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XHJcbiAgcHJvcGVydHk6IHtcclxuICAgIHJlcXVpcmVkOiBcIlByb3BlcnR5IGlzIHJlcXVpcmVkXCIsXHJcbiAgICB1bmF2YWlsYWJsZTogXCJEdXBsaWNhdGUgZW50cnlcIlxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1maWVsZC1tYXBwaW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtbWFwcGluZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQtbWFwcGluZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWVsZE1hcHBpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBpbXBvcnRNYXBwaW5nRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBkYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBjb25maWc6IEltcG9ydENzdkNvbmZpZztcclxuICBmaXJzdERhdGFBcnJheTogYW55W10gPSBbXTtcclxuICBwcm9wZXJ0aWVzOiBhbnlbXSA9IFtdO1xyXG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUmVVcGxvYWQ9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvblxyXG4gICkge1xyXG4gICAgdGhpcy5jcmVhdGVJbXBvcnRNYXBwaW5nRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnByb3BlcnRpZXMgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzOztcclxuICAgIHRoaXMucmVGZWN0b3JBdHRyaWJ1dGVzKHRoaXMuZGF0YVswXSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVJbXBvcnRNYXBwaW5nRm9ybSgpIHtcclxuICAgIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZmllbGRzOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpZWxkc0FycmF5KCk6IFVudHlwZWRGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0uZ2V0KCdmaWVsZHMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmllbGQoZmllbGQ6IGFueSk6IFVudHlwZWRGb3JtR3JvdXAge1xyXG4gICAgdmFyIGZpZWxkRm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBpZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5pZCksXHJcbiAgICAgIGxhYmVsOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZpZWxkLmxhYmVsKSxcclxuICAgICAgdmFsdWU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmllbGQudmFsdWUpLFxyXG4gICAgICBwcm9wZXJ0eTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5wcm9wZXJ0eSxcclxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgIF1cclxuICAgICAgICApXHJcbiAgICAgICksXHJcbiAgICAgIHByb3BlcnR5VHlwZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5wcm9wZXJ0eVR5cGUpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEZvcm07XHJcbiAgfVxyXG5cclxuICByZUZlY3RvckF0dHJpYnV0ZXMoZGF0YSkge1xyXG4gICAgZm9yICh2YXIgayBpbiBkYXRhKSB7XHJcbiAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGspKSB7XHJcbiAgICAgICAgdmFyIGRhdGFWYWx1ZSA9IHtcclxuICAgICAgICAgIGlkOiAnJyxcclxuICAgICAgICAgIGxhYmVsOiBrLFxyXG4gICAgICAgICAgdmFsdWU6IGRhdGFba10sXHJcbiAgICAgICAgICBwcm9wZXJ0eTogJycsXHJcbiAgICAgICAgICBwcm9wZXJ0eVR5cGU6ICcnXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmZpcnN0RGF0YUFycmF5LnB1c2goZGF0YVZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5maXJzdERhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnksIG1haW5JbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuaWQgPSBtYWluSW5kZXg7XHJcbiAgICAgIHRoaXMucHJvcGVydGllcy5maW5kKChwcm9wZXJ0eTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHByb3BlcnR5LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbWVudC5sYWJlbC50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgZWxlbWVudC5wcm9wZXJ0eSA9IHByb3BlcnR5LnZhbHVlO1xyXG4gICAgICAgICAgZWxlbWVudC5wcm9wZXJ0eVR5cGUgPSBwcm9wZXJ0eS50eXBlO1xyXG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmV4dCgpIHtcclxuICAgIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKCF0aGlzLmltcG9ydE1hcHBpbmdGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub25TYXZlLmVtaXQodGhpcy5pbXBvcnRNYXBwaW5nRm9ybS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cclxuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZywgZm9ybTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5pc0ZpZWxkVmFsaWQoZmllbGQsIGZvcm0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cclxuICBnZXRFcnJvck1lc3NhZ2UoZmllbGQ6IHN0cmluZywgZm9ybTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZmllbGQsIGZvcm0sIGVycm9yTWVzc2FnZXMpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy9DYWxsZWQgYWZ0ZXIgbmdBZnRlckNvbnRlbnRJbml0IHdoZW4gdGhlIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuIEFwcGxpZXMgdG8gY29tcG9uZW50cyBvbmx5LlxyXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxyXG4gICAgc2V0VGltZW91dCh4ID0+IHtcclxuICAgICAgdGhpcy5maXJzdERhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZpZWxkc0FycmF5LnB1c2godGhpcy5jcmVhdGVGaWVsZChlbGVtZW50KSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9wZXJ0eVR5cGUoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSk6IHZvaWQge1xyXG4gICAgdmFyIGZpZWxkID0gdGhpcy5wcm9wZXJ0aWVzLmZpbmQoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnZhbHVlID09IGV2ZW50LnZhbHVlKTtcclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICB0aGlzLmZpZWxkc0FycmF5LmNvbnRyb2xzW2luZGV4XS5nZXQoJ3Byb3BlcnR5VHlwZScpLnNldFZhbHVlKGZpZWxkLnR5cGUpO1xyXG4gICAgICB0aGlzLnVuaXF1ZVZhbGlkYXRvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5pcXVlVmFsaWRhdG9yKCkge1xyXG4gICAgdGhpcy5maWVsZHNBcnJheS52YWx1ZS5mb3JFYWNoKChmaWVsZDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIHZhciBjb250cm9sID0gdGhpcy5maWVsZHNBcnJheS5jb250cm9sc1tpbmRleF0uZ2V0KCdwcm9wZXJ0eScpO1xyXG4gICAgICBjb25zdCBpc05hbWVVbmlxdWUgPSB0aGlzLmZpZWxkc0FycmF5LnZhbHVlLmZpbmQocHJvcGVydHlEYXRhID0+XHJcbiAgICAgICAgcHJvcGVydHlEYXRhLnByb3BlcnR5ID09PSBjb250cm9sLnZhbHVlXHJcbiAgICAgICAgJiYgcHJvcGVydHlEYXRhLmlkICE9IHRoaXMuZmllbGRzQXJyYXkuY29udHJvbHNbaW5kZXhdLmdldCgnaWQnKS52YWx1ZVxyXG4gICAgICApXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgICAgaWYgKCFpc05hbWVVbmlxdWUpIHtcclxuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHVuYXZhaWxhYmxlOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpZWxkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkc0FycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIHJlVXBsb2FkKCkge1xyXG4gICAgdGhpcy5vblJlVXBsb2FkLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwXCIgY2xhc3M9XCJwYi0zXCI+XHJcbiAgICA8aDUgZnhGbGV4PVwiMzAlXCIgY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+U3VtbWFyeTwvaDU+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjcwJVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cInNlY29uZGFyeS1jb2xvclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPnt7ZGF0YS5sZW5ndGh9fTwvc3Bhbj5cclxuICAgICAgPC9oNT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIG1sLTJcIj4gUmVjb3JkcyBGb3VuZCBJbiBVcGxvYWRlZCBGaWxlPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXY+XHJcbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJpbXBvcnRNYXBwaW5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJuZXh0KClcIiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwicHQtM1wiPlxyXG4gICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0yXCI+UHJvcGVydGllczwvaDU+XHJcbiAgICA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIHRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgPHRyIGNsYXNzPVwidGFibGUtaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgIDx0aD5Db2x1bW4gSGVhZGVycyBGcm9tIEZpbGU8L3RoPlxyXG4gICAgICAgIDx0aD5QcmV2aWV3IEluZm9ybWF0aW9uPC90aD5cclxuICAgICAgICA8dGg+UHJvcGVydHk8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJmaWVsZHNcIj5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc0FycmF5LmNvbnRyb2xzOyBsZXQgaT1pbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgIDx0ZD57eyBmaWVsZC5nZXQoJ2xhYmVsJykudmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgPHRkPnt7IGZpZWxkLmdldCgndmFsdWUnKS52YWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg9XCIxMDAlXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPlNlbGVjdCBQcm9wZXJ0eTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IFByb3BlcnR5XCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvcGVydHlcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ1cGRhdGVQcm9wZXJ0eVR5cGUoJGV2ZW50LCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNcIiBbdmFsdWVdPVwicHJvcGVydHkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAge3twcm9wZXJ0eS5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3Byb3BlcnR5JywgZmllbGRzQXJyYXkuY29udHJvbHNbaV0pXCI+XHJcbiAgICAgICAgICAgICAgICB7e2dldEVycm9yTWVzc2FnZSgncHJvcGVydHknLCBmaWVsZHNBcnJheS5jb250cm9sc1tpXSl9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZUZpZWxkKGkpXCIgKm5nSWY9XCJmaWVsZHNBcnJheS5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUmVtb3ZlIGNvbHVtblwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMVwiIGZ4RmxleD1cIjEwMCVcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMlwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9jYXRpb24uYmFjaygpXCI+XHJcbiAgICAgICAgQ2FuY2VsXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMiBwcmltYXJ5LWNvbG9yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZVVwbG9hZCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICBmaWxlX3VwbG9hZFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgUmUtdXBsb2FkXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm10LTIgcHJpbWFyeS1iZyB0ZXh0LXdoaXRlXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgIE5leHRcclxuICAgICAgICA8bWF0LWljb24+XHJcbiAgICAgICAgICBjaGV2cm9uX3JpZ2h0XHJcbiAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzdi1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWNsYXJlIGNsYXNzIEltcG9ydENzdkNvbmZpZyB7XHJcbiAgYXBpVXJsOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBpbXBvcnRUeXBlOiBzdHJpbmc7XHJcbiAgcHJvcGVydGllczogYW55W107XHJcbiAgY3VzdG9tRXJyb3JNZXNzYWdlcz86IGFueVtdOyAvKiogT3B0aW9uYWwgKi9cclxuICBzYW1wbGVGaWxlPzoge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgcGF0aDogc3RyaW5nO1xyXG4gIH07IC8qKiBPcHRpb25hbCAqL1xyXG4gIHZpZXdSb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG4gIGltcG9ydEhpc3Rvcnk6IHtcclxuICAgIGlzRW5hYmxlZDogYm9vbGVhbjtcclxuICAgIHR5cGU/OiBzdHJpbmc7XHJcbiAgICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,198 @@
1
+ import { __decorate } from "tslib";
2
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
3
+ import { Component, Input } from '@angular/core';
4
+ import * as XLSX from 'xlsx';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../core/alert.service";
7
+ import * as i2 from "../core/error-handler.service";
8
+ import * as i3 from "../core/http.service";
9
+ import * as i4 from "@angular/common";
10
+ import * as i5 from "@angular/flex-layout/flex";
11
+ import * as i6 from "@angular/material/button";
12
+ import * as i7 from "@angular/material/icon";
13
+ import * as i8 from "@angular/material/card";
14
+ import * as i9 from "@angular/material/tooltip";
15
+ import * as i10 from "../file-dropper/file-dropper.component";
16
+ import * as i11 from "./field-mapping/field-mapping.component";
17
+ import * as i12 from "./failed-items-list/failed-items-list.component";
18
+ import * as i13 from "./import-history-list/import-history-list.component";
19
+ import * as i14 from "./import-success/import-success.component";
20
+ import * as i15 from "./data-import/data-import.component";
21
+ let ImportCsvComponent = class ImportCsvComponent {
22
+ constructor(alertService, errorHandler, http) {
23
+ this.alertService = alertService;
24
+ this.errorHandler = errorHandler;
25
+ this.http = http;
26
+ this.filesList = [];
27
+ this.data = [];
28
+ this.isUploaded = false;
29
+ this.isImportTypeSelected = false;
30
+ this.fileData = [];
31
+ this.failedItems = [];
32
+ this.selectedFields = [];
33
+ this.importSteps = [
34
+ {
35
+ id: 1,
36
+ step: 1,
37
+ title: 'Upload',
38
+ progressTitle: '',
39
+ progressDescription: ''
40
+ },
41
+ {
42
+ id: 2,
43
+ step: 2,
44
+ title: 'Field Mappings',
45
+ progressTitle: '',
46
+ progressDescription: ''
47
+ },
48
+ {
49
+ id: 3,
50
+ step: 3,
51
+ title: 'Data Validation',
52
+ progressTitle: 'Data Being Validated',
53
+ progressDescription: 'The data is currently being validated and checked for errors, please do not navigate away from this page. '
54
+ },
55
+ {
56
+ id: 4,
57
+ step: 3,
58
+ title: 'Data Validation & Errors',
59
+ progressTitle: '',
60
+ progressDescription: ''
61
+ },
62
+ {
63
+ id: 5,
64
+ step: 4,
65
+ title: 'Data Importing',
66
+ progressTitle: 'Data Being Imported',
67
+ progressDescription: 'The data is currently being imported and saved, please do not navigate away from this page. After the import is completed, you will be redirected to a page with the imported records.'
68
+ },
69
+ {
70
+ id: 6,
71
+ step: 5,
72
+ title: 'Success Page & Data Preview',
73
+ progressTitle: '',
74
+ progressDescription: ''
75
+ },
76
+ ];
77
+ this.currentStep = 1;
78
+ this.filesConfig = {
79
+ fileId: "file",
80
+ containerId: "fileContainer",
81
+ styles: {
82
+ height: "200px"
83
+ },
84
+ acceptFile: '.csv',
85
+ multiple: false,
86
+ maxSize: 10,
87
+ acceptFileText: ".csv"
88
+ };
89
+ }
90
+ ngOnInit() {
91
+ }
92
+ get step() {
93
+ return this.importSteps.find(step => step.id == this.currentStep);
94
+ }
95
+ async fileChanged(event) {
96
+ this.currentStep = 2;
97
+ this.filesList = event;
98
+ let selectedFile = null;
99
+ let jsonData = null;
100
+ const reader = new FileReader();
101
+ const file = this.filesList[0];
102
+ reader.onload = (event) => {
103
+ const data = reader.result;
104
+ selectedFile = XLSX.read(data, {
105
+ type: 'binary',
106
+ cellDates: true,
107
+ });
108
+ jsonData = selectedFile.SheetNames.reduce((initial, name) => {
109
+ const sheet = selectedFile.Sheets[name];
110
+ initial = XLSX.utils.sheet_to_json(sheet, {
111
+ header: 0,
112
+ defval: "",
113
+ });
114
+ return initial;
115
+ }, {});
116
+ this.fileData = jsonData;
117
+ };
118
+ reader.readAsBinaryString(file);
119
+ return;
120
+ }
121
+ mappingProcessed(event) {
122
+ this.currentStep = 3;
123
+ setTimeout(x => {
124
+ this.selectedFields = event.fields;
125
+ const tempFileData = JSON.parse(JSON.stringify(this.fileData));
126
+ tempFileData.forEach(data => {
127
+ for (var key in data) {
128
+ var field = event.fields.find((field) => field.label == key);
129
+ if (field) {
130
+ if ((field.propertyType == 'date' || field.propertyType == 'dateTime') && this.isValidDate(new Date(data[field.label]))) {
131
+ data[field.property] = new Date(data[field.label]).toISOString();
132
+ }
133
+ else {
134
+ data[field.property] = data[field.label];
135
+ }
136
+ delete data[key];
137
+ }
138
+ else {
139
+ delete data[key];
140
+ }
141
+ }
142
+ });
143
+ this.save(tempFileData);
144
+ }, 2000);
145
+ }
146
+ async save(tempFileData) {
147
+ try {
148
+ this.http.post(this.config.apiUrl, { data: tempFileData })
149
+ .pipe(untilDestroyed(this)).subscribe((result) => {
150
+ this.failedItems = result.failed_items;
151
+ if (this.failedItems.length) {
152
+ this.alertService.addAlert(result.msg, 'warn');
153
+ }
154
+ if (!(this.failedItems.length > 0)) {
155
+ this.currentStep = 5;
156
+ setTimeout(x => {
157
+ this.currentStep = 6;
158
+ this.result = result;
159
+ }, 2000);
160
+ }
161
+ else {
162
+ this.currentStep = 4;
163
+ }
164
+ });
165
+ }
166
+ catch (error) {
167
+ if ((error.status === 422 || error.status === 400) && error.msg) {
168
+ this.alertService.addAlert(error.msg, "warning");
169
+ }
170
+ this.errorHandler.handleError(error);
171
+ this.reUpload();
172
+ }
173
+ }
174
+ isValidDate(d) {
175
+ return d instanceof Date && !isNaN(d.getTime());
176
+ }
177
+ reUpload() {
178
+ this.data = [];
179
+ this.fileData = [];
180
+ this.filesList = [];
181
+ this.failedItems = [];
182
+ this.selectedFields = [];
183
+ this.currentStep = 1;
184
+ }
185
+ };
186
+ ImportCsvComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ImportCsvComponent, deps: [{ token: i1.AlertService }, { token: i2.ErrorHandlerService }, { token: i3.HttpService }], target: i0.ɵɵFactoryTarget.Component });
187
+ ImportCsvComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ImportCsvComponent, selector: "app-import-csv", inputs: { config: "config" }, ngImport: i0, template: "<div fxLayout=\"column wrap\" class=\"p-4\">\r\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\r\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\r\n <h4 fxFlex=\"20%\" class=\"ml-2\">\r\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\r\n </h4>\r\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\r\n <span>{{config?.title}} Import</span>\r\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\r\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\r\n fxLayoutAlign=\"center center\">\r\n <button mat-stroked-button class=\"primary-color\">\r\n <mat-icon>\r\n download\r\n </mat-icon>\r\n Sample File\r\n </button>\r\n </a>\r\n </h3>\r\n </mat-card-content>\r\n </mat-card>\r\n <div fxFlex=\"100%\" class=\"mt-3\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\">\r\n <div fxFlex=\"100%\">\r\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\r\n <h5 class=\"primary-color pb-3\">File Upload</h5>\r\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\r\n (fileChanged)=\"fileChanged($event)\">\r\n </app-file-dropper>\r\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\r\n </app-import-history-list>\r\n </section>\r\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\r\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\r\n </app-field-mapping>\r\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\r\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\r\n <div class=\"text-muted\">\r\n <p>\r\n Please use this yyyy-mm-dd date format for all the date fields. Otherwise your date fields will be\r\n incorrect or not will be accepted. Ex: 2021-09-27\r\n </p>\r\n <ng-container *ngIf=\"config?.customErrorMessages\">\r\n <p *ngFor=\"let message of config?.customErrorMessages\">\r\n {{message}}\r\n </p>\r\n </ng-container>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep==3 || currentStep == 5\">\r\n <app-data-import [step]=\"step\" fxLayoutAlign=\"center center\"></app-data-import>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep == 6\">\r\n <app-import-success [data]=\"result\" [config]=\"config\" fxLayoutAlign=\"center center\"></app-import-success>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".drop-section{width:500px!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.FileDropperComponent, selector: "app-file-dropper", inputs: ["fileArray", "config", "styles"], outputs: ["fileChanged"] }, { kind: "component", type: i11.FieldMappingComponent, selector: "app-field-mapping", inputs: ["data", "config"], outputs: ["onSave", "onReUpload"] }, { kind: "component", type: i12.FailedItemsListComponent, selector: "app-failed-items-list", inputs: ["failedItems", "selectedFields"], outputs: ["onReUpload"] }, { kind: "component", type: i13.ImportHistoryListComponent, selector: "app-import-history-list", inputs: ["config"] }, { kind: "component", type: i14.ImportSuccessComponent, selector: "app-import-success", inputs: ["data", "config"] }, { kind: "component", type: i15.DataImportComponent, selector: "app-data-import", inputs: ["step"] }] });
188
+ ImportCsvComponent = __decorate([
189
+ UntilDestroy()
190
+ ], ImportCsvComponent);
191
+ export { ImportCsvComponent };
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ImportCsvComponent, decorators: [{
193
+ type: Component,
194
+ args: [{ selector: 'app-import-csv', template: "<div fxLayout=\"column wrap\" class=\"p-4\">\r\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\r\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\r\n <h4 fxFlex=\"20%\" class=\"ml-2\">\r\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\r\n </h4>\r\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\r\n <span>{{config?.title}} Import</span>\r\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\r\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\r\n fxLayoutAlign=\"center center\">\r\n <button mat-stroked-button class=\"primary-color\">\r\n <mat-icon>\r\n download\r\n </mat-icon>\r\n Sample File\r\n </button>\r\n </a>\r\n </h3>\r\n </mat-card-content>\r\n </mat-card>\r\n <div fxFlex=\"100%\" class=\"mt-3\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\">\r\n <div fxFlex=\"100%\">\r\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\r\n <h5 class=\"primary-color pb-3\">File Upload</h5>\r\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\r\n (fileChanged)=\"fileChanged($event)\">\r\n </app-file-dropper>\r\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\r\n </app-import-history-list>\r\n </section>\r\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\r\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\r\n </app-field-mapping>\r\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\r\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\r\n <div class=\"text-muted\">\r\n <p>\r\n Please use this yyyy-mm-dd date format for all the date fields. Otherwise your date fields will be\r\n incorrect or not will be accepted. Ex: 2021-09-27\r\n </p>\r\n <ng-container *ngIf=\"config?.customErrorMessages\">\r\n <p *ngFor=\"let message of config?.customErrorMessages\">\r\n {{message}}\r\n </p>\r\n </ng-container>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep==3 || currentStep == 5\">\r\n <app-data-import [step]=\"step\" fxLayoutAlign=\"center center\"></app-data-import>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep == 6\">\r\n <app-import-success [data]=\"result\" [config]=\"config\" fxLayoutAlign=\"center center\"></app-import-success>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".drop-section{width:500px!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"] }]
195
+ }], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i2.ErrorHandlerService }, { type: i3.HttpService }]; }, propDecorators: { config: [{
196
+ type: Input
197
+ }] } });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFTaEIsa0JBQWtCLFNBQWxCLGtCQUFrQjtJQTBEN0IsWUFDVSxZQUEwQixFQUMxQixZQUFpQyxFQUNqQyxJQUFpQjtRQUZqQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQXpEM0IsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBRXRDLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFDM0IsZ0JBQVcsR0FBUTtZQUNqQjtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxLQUFLLEVBQUUsUUFBUTtnQkFDZixhQUFhLEVBQUUsRUFBRTtnQkFDakIsbUJBQW1CLEVBQUUsRUFBRTthQUN4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QUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDbEQ7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLENBQU07UUFDaEIsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBRUYsQ0FBQTsrR0FyTFksa0JBQWtCO21HQUFsQixrQkFBa0Isb0ZDaEIvQiwyNUhBdUVBO0FEdkRhLGtCQUFrQjtJQVA5QixZQUFZLEVBQUU7R0FPRixrQkFBa0IsQ0FxTDlCO1NBckxZLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjsrSkFNakIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld2VyQ29uZmlnIH0gZnJvbSAnLi4vZG9jdW1lbnQtdmlld2VyL3ZpZXdlci1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlRHJvcHBlckNvbmZpZyB9IGZyb20gJy4uL2ZpbGUtZHJvcHBlci9maWxlLWRyb3BwZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBJbXBvcnRDc3ZDb25maWcgfSBmcm9tICcuL2ltcG9ydC1jc3YtY29uZmlnJztcclxuQFVudGlsRGVzdHJveSgpXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbXBvcnQtY3N2JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW1wb3J0LWNzdi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0LWNzdi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXBvcnRDc3ZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlc3VsdDogYW55O1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogSW1wb3J0Q3N2Q29uZmlnO1xyXG4gIGZpbGVzQ29uZmlnOiBGaWxlRHJvcHBlckNvbmZpZztcclxuICBmaWxlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgZGF0YTogYW55W10gPSBbXTtcclxuICBpc1VwbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbXBvcnRUeXBlU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aWV3ZXJDb25maWc6IFZpZXdlckNvbmZpZztcclxuICBmaWxlRGF0YTogYW55W10gPSBbXTtcclxuICBmYWlsZWRJdGVtczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEZpZWxkczogYW55W10gPSBbXTtcclxuICBpbXBvcnRTdGVwczogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogMSxcclxuICAgICAgc3RlcDogMSxcclxuICAgICAgdGl0bGU6ICdVcGxvYWQnLFxyXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnJyxcclxuICAgICAgcHJvZ3Jlc3NEZXNjcmlwdGlvbjogJydcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiAyLFxyXG4gICAgICBzdGVwOiAyLFxyXG4gICAgICB0aXRsZTogJ0ZpZWxkIE1hcHBpbmdzJyxcclxuICAgICAgcHJvZ3Jlc3NUaXRsZTogJycsXHJcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICcnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogMyxcclxuICAgICAgc3RlcDogMyxcclxuICAgICAgdGl0bGU6ICdEYXRhIFZhbGlkYXRpb24nLFxyXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnRGF0YSBCZWluZyBWYWxpZGF0ZWQnLFxyXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnVGhlIGRhdGEgaXMgY3VycmVudGx5IGJlaW5nIHZhbGlkYXRlZCBhbmQgY2hlY2tlZCBmb3IgZXJyb3JzLCBwbGVhc2UgZG8gbm90IG5hdmlnYXRlIGF3YXkgZnJvbSB0aGlzIHBhZ2UuICdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiA0LFxyXG4gICAgICBzdGVwOiAzLFxyXG4gICAgICB0aXRsZTogJ0RhdGEgVmFsaWRhdGlvbiAmIEVycm9ycycsXHJcbiAgICAgIHByb2dyZXNzVGl0bGU6ICcnLFxyXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IDUsXHJcbiAgICAgIHN0ZXA6IDQsXHJcbiAgICAgIHRpdGxlOiAnRGF0YSBJbXBvcnRpbmcnLFxyXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnRGF0YSBCZWluZyBJbXBvcnRlZCcsXHJcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICdUaGUgZGF0YSBpcyBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQgYW5kIHNhdmVkLCBwbGVhc2UgZG8gbm90IG5hdmlnYXRlIGF3YXkgZnJvbSB0aGlzIHBhZ2UuIEFmdGVyIHRoZSBpbXBvcnQgaXMgY29tcGxldGVkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIGEgcGFnZSB3aXRoIHRoZSBpbXBvcnRlZCByZWNvcmRzLidcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiA2LFxyXG4gICAgICBzdGVwOiA1LFxyXG4gICAgICB0aXRsZTogJ1N1Y2Nlc3MgUGFnZSAmIERhdGEgUHJldmlldycsXHJcbiAgICAgIHByb2dyZXNzVGl0bGU6ICcnLFxyXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnJ1xyXG4gICAgfSxcclxuICBdO1xyXG4gIGN1cnJlbnRTdGVwOiBhbnkgPSAxO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZpbGVzQ29uZmlnID0ge1xyXG4gICAgICBmaWxlSWQ6IFwiZmlsZVwiLFxyXG4gICAgICBjb250YWluZXJJZDogXCJmaWxlQ29udGFpbmVyXCIsXHJcbiAgICAgIHN0eWxlczoge1xyXG4gICAgICAgIGhlaWdodDogXCIyMDBweFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIGFjY2VwdEZpbGU6ICcuY3N2JyxcclxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxyXG4gICAgICBtYXhTaXplOiAxMCxcclxuICAgICAgYWNjZXB0RmlsZVRleHQ6IFwiLmNzdlwiXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RlcCgpIHtcclxuICAgIHJldHVybiB0aGlzLmltcG9ydFN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmlkID09IHRoaXMuY3VycmVudFN0ZXApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmlsZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IDI7XHJcbiAgICB0aGlzLmZpbGVzTGlzdCA9IGV2ZW50O1xyXG5cclxuICAgIGxldCBzZWxlY3RlZEZpbGUgPSBudWxsO1xyXG4gICAgbGV0IGpzb25EYXRhID0gbnVsbDtcclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICBjb25zdCBmaWxlID0gdGhpcy5maWxlc0xpc3RbMF07XHJcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSByZWFkZXIucmVzdWx0O1xyXG4gICAgICBzZWxlY3RlZEZpbGUgPSBYTFNYLnJlYWQoZGF0YSwge1xyXG4gICAgICAgIHR5cGU6ICdiaW5hcnknLFxyXG4gICAgICAgIGNlbGxEYXRlczogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGpzb25EYXRhID0gc2VsZWN0ZWRGaWxlLlNoZWV0TmFtZXMucmVkdWNlKChpbml0aWFsLCBuYW1lKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2hlZXQgPSBzZWxlY3RlZEZpbGUuU2hlZXRzW25hbWVdO1xyXG4gICAgICAgIGluaXRpYWwgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24oc2hlZXQsIHtcclxuICAgICAgICAgIGhlYWRlcjogMCxcclxuICAgICAgICAgIGRlZnZhbDogXCJcIixcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaW5pdGlhbDtcclxuICAgICAgfSwge30pO1xyXG4gICAgICB0aGlzLmZpbGVEYXRhID0ganNvbkRhdGE7XHJcbiAgICB9XHJcbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgbWFwcGluZ1Byb2Nlc3NlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gMztcclxuICAgIHNldFRpbWVvdXQoeCA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBldmVudC5maWVsZHM7XHJcbiAgICAgIGNvbnN0IHRlbXBGaWxlRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWxlRGF0YSkpO1xyXG4gICAgICB0ZW1wRmlsZURhdGEuZm9yRWFjaChkYXRhID0+IHtcclxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgdmFyIGZpZWxkID0gZXZlbnQuZmllbGRzLmZpbmQoKGZpZWxkOiBhbnkpID0+IGZpZWxkLmxhYmVsID09IGtleSk7XHJcbiAgICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgICAgaWYgKChmaWVsZC5wcm9wZXJ0eVR5cGUgPT0gJ2RhdGUnIHx8IGZpZWxkLnByb3BlcnR5VHlwZSA9PSAnZGF0ZVRpbWUnKSAmJiB0aGlzLmlzVmFsaWREYXRlKG5ldyBEYXRlKGRhdGFbZmllbGQubGFiZWxdKSkpIHtcclxuICAgICAgICAgICAgICBkYXRhW2ZpZWxkLnByb3BlcnR5XSA9IChuZXcgRGF0ZShkYXRhW2ZpZWxkLmxhYmVsXSkgYXMgRGF0ZSkudG9JU09TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBkYXRhW2ZpZWxkLnByb3BlcnR5XSA9IGRhdGFbZmllbGQubGFiZWxdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNhdmUodGVtcEZpbGVEYXRhKTtcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZSh0ZW1wRmlsZURhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy5jb25maWcuYXBpVXJsLCB7IGRhdGE6IHRlbXBGaWxlRGF0YSB9KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcclxuICAgICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLmZhaWxlZEl0ZW1zID0gcmVzdWx0LmZhaWxlZF9pdGVtcztcclxuICAgICAgICAgIGlmICh0aGlzLmZhaWxlZEl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChyZXN1bHQubXNnLCAnd2FybicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCEodGhpcy5mYWlsZWRJdGVtcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gNTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gNjtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IDQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAoKGVycm9yLnN0YXR1cyA9PT0gNDIyIHx8IGVycm9yLnN0YXR1cyA9PT0gNDAwKSAmJiBlcnJvci5tc2cpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChlcnJvci5tc2csIFwid2FybmluZ1wiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIHRoaXMucmVVcGxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVmFsaWREYXRlKGQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkLmdldFRpbWUoKSk7XHJcbiAgfVxyXG5cclxuICByZVVwbG9hZCgpIHtcclxuICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgdGhpcy5maWxlRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5maWxlc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuZmFpbGVkSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBbXTtcclxuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAxO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtbiB3cmFwXCIgY2xhc3M9XCJwLTRcIj5cclxuICA8bWF0LWNhcmQgZnhGbGV4PVwiMTAwJVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJwLTBcIj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50IGZ4RmlsbCBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cInByaW1hcnktY29sb3JcIj5cclxuICAgICAgPGg0IGZ4RmxleD1cIjIwJVwiIGNsYXNzPVwibWwtMlwiPlxyXG4gICAgICAgIFN0ZXAge3tzdGVwLnN0ZXB9fTogPHNwYW4gY2xhc3M9XCJub3JtYWwtZm9udC13ZWlnaHRcIj57e3N0ZXA/LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxoMyBmeEZsZXg9XCI4MCVcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwidGV4dC1kYXJrXCIgZnhMYXlvdXRHYXA9XCIxcmVtIGdyaWRcIj5cclxuICAgICAgICA8c3Bhbj57e2NvbmZpZz8udGl0bGV9fSBJbXBvcnQ8L3NwYW4+XHJcbiAgICAgICAgPGEgKm5nSWY9XCJjb25maWc/LnNhbXBsZUZpbGUgJiYgY3VycmVudFN0ZXAgPT0gMVwiIHN0eWxlPVwiY29sb3I6IGluaGVyaXQ7XCIgW2Rvd25sb2FkXT1cImNvbmZpZz8uc2FtcGxlRmlsZT8ubmFtZVwiXHJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJjb25maWc/LnNhbXBsZUZpbGU/LnBhdGhcIiBtYXRUb29sdGlwPVwiRG93bmxvYWQgU2FtcGxlIGZpbGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICAgICAgICBkb3dubG9hZFxyXG4gICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICBTYW1wbGUgRmlsZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbiAgPGRpdiBmeEZsZXg9XCIxMDAlXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEdhcD1cIjFyZW0gZ3JpZFwiICpuZ0lmPVwiY3VycmVudFN0ZXA9PTEgfHwgY3VycmVudFN0ZXAgPT0gMiB8fCBjdXJyZW50U3RlcCA9PSA0XCI+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwJVwiIGZ4RmxleC5ndC1zbT1cIjAgMSBjYWxjKDcwJS0xcmVtKVwiPlxyXG4gICAgICAgIDxtYXQtY2FyZCBmeEZsZXg9XCIxMDAlXCI+XHJcbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8c2VjdGlvbiBmeExheW91dD1cImNvbHVtblwiICpuZ0lmPVwiY29uZmlnLmltcG9ydFR5cGUgJiYgIXRoaXMuZmlsZURhdGEubGVuZ3RoICYmICF0aGlzLmZhaWxlZEl0ZW1zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0zXCI+RmlsZSBVcGxvYWQ8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGFwcC1maWxlLWRyb3BwZXIgZnhGaWxsIGNsYXNzPVwibWItMiBkcm9wLXNlY3Rpb25cIiBbY29uZmlnXT1cImZpbGVzQ29uZmlnXCIgW2ZpbGVBcnJheV09XCJmaWxlc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAoZmlsZUNoYW5nZWQpPVwiZmlsZUNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtZmlsZS1kcm9wcGVyPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1pbXBvcnQtaGlzdG9yeS1saXN0ICpuZ0lmPVwiY29uZmlnLmltcG9ydEhpc3RvcnkuaXNFbmFibGVkXCIgW2NvbmZpZ109XCJjb25maWdcIj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLWltcG9ydC1oaXN0b3J5LWxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgIDxhcHAtZmllbGQtbWFwcGluZyBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCJ0aGlzLmZpbGVEYXRhLmxlbmd0aCA+IDAgJiYgIXRoaXMuZmFpbGVkSXRlbXMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImZpbGVEYXRhXCIgW2NvbmZpZ109XCJjb25maWdcIiAob25TYXZlKT1cIm1hcHBpbmdQcm9jZXNzZWQoJGV2ZW50KVwiIChvblJlVXBsb2FkKT1cInJlVXBsb2FkKClcIj5cclxuICAgICAgICAgICAgICA8L2FwcC1maWVsZC1tYXBwaW5nPlxyXG4gICAgICAgICAgICAgIDxhcHAtZmFpbGVkLWl0ZW1zLWxpc3QgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwidGhpcy5mYWlsZWRJdGVtcy5sZW5ndGggPiAwXCIgW2ZhaWxlZEl0ZW1zXT1cImZhaWxlZEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZEZpZWxkc109XCJzZWxlY3RlZEZpZWxkc1wiIChvblJlVXBsb2FkKT1cInJlVXBsb2FkKClcIj48L2FwcC1mYWlsZWQtaXRlbXMtbGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwJVwiIGZ4RmxleC5ndC1zbT1cIjMwJVwiPlxyXG4gICAgICAgIDxtYXQtY2FyZCBmeEZsZXg9XCIxMDAlXCI+XHJcbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJwcmltYXJ5LWNvbG9yIHBiLTNcIj5JbnN0cnVjdGlvbnMgJiBSZXF1aXJlbWVudHM8L2g1PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgUGxlYXNlIHVzZSB0aGlzIHl5eXktbW0tZGQgZGF0ZSBmb3JtYXQgZm9yIGFsbCB0aGUgZGF0ZSBmaWVsZHMuIE90aGVyd2lzZSB5b3VyIGRhdGUgZmllbGRzIHdpbGwgYmVcclxuICAgICAgICAgICAgICAgIGluY29ycmVjdCBvciBub3Qgd2lsbCBiZSBhY2NlcHRlZC4gRXg6IDIwMjEtMDktMjdcclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZz8uY3VzdG9tRXJyb3JNZXNzYWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPHAgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgY29uZmlnPy5jdXN0b21FcnJvck1lc3NhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7bWVzc2FnZX19XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uIHdyYXBcIiBjbGFzcz1cInAtNFwiICpuZ0lmPVwiY3VycmVudFN0ZXA9PTMgfHwgY3VycmVudFN0ZXAgPT0gNVwiPlxyXG4gICAgICA8YXBwLWRhdGEtaW1wb3J0IFtzdGVwXT1cInN0ZXBcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPjwvYXBwLWRhdGEtaW1wb3J0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uIHdyYXBcIiBjbGFzcz1cInAtNFwiICpuZ0lmPVwiY3VycmVudFN0ZXAgPT0gNlwiPlxyXG4gICAgICA8YXBwLWltcG9ydC1zdWNjZXNzIFtkYXRhXT1cInJlc3VsdFwiIFtjb25maWddPVwiY29uZmlnXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj48L2FwcC1pbXBvcnQtc3VjY2Vzcz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19