@bizdoc/core 1.13.0-next.3 → 1.13.0-next.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +22 -26
  2. package/esm2020/lib/app.component.mjs +1 -1
  3. package/esm2020/lib/browse/browse-items.component.mjs +4 -4
  4. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +63 -49
  5. package/esm2020/lib/compose/trace/flow.component.mjs +45 -75
  6. package/esm2020/lib/compose/trace/trace.component.mjs +24 -32
  7. package/esm2020/lib/core/hub.service.mjs +1 -1
  8. package/esm2020/lib/core/mailbox.service.mjs +31 -6
  9. package/esm2020/lib/core/models.mjs +1 -1
  10. package/esm2020/lib/core/translations.mjs +9 -2
  11. package/esm2020/lib/home/home-base.component.mjs +2 -2
  12. package/fesm2015/bizdoc-core.mjs +191 -185
  13. package/fesm2015/bizdoc-core.mjs.map +1 -1
  14. package/fesm2020/bizdoc-core.mjs +187 -183
  15. package/fesm2020/bizdoc-core.mjs.map +1 -1
  16. package/lib/admin/document-trace/trace-element.component.d.ts +1 -1
  17. package/lib/app.component.d.ts +2 -2
  18. package/lib/browse/expanded-item/expanded-item.component.d.ts +6 -6
  19. package/lib/core/hub.service.d.ts +1 -0
  20. package/lib/core/mailbox.service.d.ts +4 -1
  21. package/lib/core/models.d.ts +6 -2
  22. package/lib/core/translations.d.ts +8 -1
  23. package/package.json +10 -10
  24. package/bizdoc-core.d.ts.map +0 -1
  25. package/lib/admin/admin-dismiss.service.d.ts.map +0 -1
  26. package/lib/admin/admin-menu.component.d.ts.map +0 -1
  27. package/lib/admin/core/ace.input.d.ts.map +0 -1
  28. package/lib/admin/core/color-picker.input.d.ts.map +0 -1
  29. package/lib/admin/core/search.input.d.ts.map +0 -1
  30. package/lib/admin/diff/configuration-diff.component.d.ts.map +0 -1
  31. package/lib/admin/document-trace/Timeline.d.ts.map +0 -1
  32. package/lib/admin/document-trace/document-trace.component.d.ts.map +0 -1
  33. package/lib/admin/document-trace/reassign.dialog.d.ts.map +0 -1
  34. package/lib/admin/document-trace/trace-element.component.d.ts.map +0 -1
  35. package/lib/admin/form/form.resolve.service.d.ts.map +0 -1
  36. package/lib/admin/form/form.service.d.ts.map +0 -1
  37. package/lib/admin/form/workflow/node-ref.d.ts.map +0 -1
  38. package/lib/admin/form/workflow/node.component.d.ts.map +0 -1
  39. package/lib/admin/form/workflow/role-node.component.d.ts.map +0 -1
  40. package/lib/admin/form/workflow/workflow.component.d.ts.map +0 -1
  41. package/lib/admin/indices/manage-cube-index.component.d.ts.map +0 -1
  42. package/lib/admin/patterns/patterns.component.d.ts.map +0 -1
  43. package/lib/admin/permissions/permissions.component.d.ts.map +0 -1
  44. package/lib/admin/positions/positions-popup.component.d.ts.map +0 -1
  45. package/lib/admin/positions/positions.component.d.ts.map +0 -1
  46. package/lib/admin/profiler/profiler.component.d.ts.map +0 -1
  47. package/lib/admin/utility-ref.d.ts.map +0 -1
  48. package/lib/admin/utility-wrapper.component.d.ts.map +0 -1
  49. package/lib/admin/utility.pane.component.d.ts.map +0 -1
  50. package/lib/app.component.d.ts.map +0 -1
  51. package/lib/bizdoc.module.d.ts.map +0 -1
  52. package/lib/browse/browse-items.component.d.ts.map +0 -1
  53. package/lib/browse/browse.mobile.component.d.ts.map +0 -1
  54. package/lib/browse/browse.pane.component.d.ts.map +0 -1
  55. package/lib/browse/expanded-item/expanded-item.component.d.ts.map +0 -1
  56. package/lib/browse/filter/filter.component.d.ts.map +0 -1
  57. package/lib/browse/folders-menu.component.d.ts.map +0 -1
  58. package/lib/chat/chat-info.d.ts.map +0 -1
  59. package/lib/chat/chat.mobile.component.d.ts.map +0 -1
  60. package/lib/chat/chat.service.d.ts.map +0 -1
  61. package/lib/chat/contacts.component.d.ts.map +0 -1
  62. package/lib/chat/contacts.pane.component.d.ts.map +0 -1
  63. package/lib/chat/conversation.component.d.ts.map +0 -1
  64. package/lib/chat/conversation.pane.component.d.ts.map +0 -1
  65. package/lib/compose/action/action-picker.component.d.ts.map +0 -1
  66. package/lib/compose/action/action-ref.d.ts.map +0 -1
  67. package/lib/compose/action/action.base.d.ts.map +0 -1
  68. package/lib/compose/action/action.dialog.d.ts.map +0 -1
  69. package/lib/compose/action/action.pane.dialog.exp.d.ts.map +0 -1
  70. package/lib/compose/action/assign-action.component.d.ts.map +0 -1
  71. package/lib/compose/action/return-action.component.d.ts.map +0 -1
  72. package/lib/compose/attachments/attachments.component.d.ts.map +0 -1
  73. package/lib/compose/attachments/preview/attachment-preview.component.d.ts.map +0 -1
  74. package/lib/compose/attachments/progress-button.directive.d.ts.map +0 -1
  75. package/lib/compose/can-deactivate-changes.service.d.ts.map +0 -1
  76. package/lib/compose/comments/Comments.pane.component.d.ts.map +0 -1
  77. package/lib/compose/comments/comment.component.d.ts.map +0 -1
  78. package/lib/compose/comments/comments.component.d.ts.map +0 -1
  79. package/lib/compose/comments/edit-comment.component.d.ts.map +0 -1
  80. package/lib/compose/comments/edits.component.d.ts.map +0 -1
  81. package/lib/compose/comments/quick-comment.component.exp.d.ts.map +0 -1
  82. package/lib/compose/comments/votes.component.d.ts.map +0 -1
  83. package/lib/compose/compose-resolve.service.d.ts.map +0 -1
  84. package/lib/compose/compose.mobile.component.d.ts.map +0 -1
  85. package/lib/compose/compose.pane.component.d.ts.map +0 -1
  86. package/lib/compose/copy/copy.dialog.d.ts.map +0 -1
  87. package/lib/compose/dismiss.service.d.ts.map +0 -1
  88. package/lib/compose/document-resolver.service.d.ts.map +0 -1
  89. package/lib/compose/document.component.d.ts.map +0 -1
  90. package/lib/compose/document.mobile.component.d.ts.map +0 -1
  91. package/lib/compose/document.pane.component.d.ts.map +0 -1
  92. package/lib/compose/events/events.component.d.ts.map +0 -1
  93. package/lib/compose/form-ref.d.ts.map +0 -1
  94. package/lib/compose/form-selector/form-selector.sheet.d.ts.map +0 -1
  95. package/lib/compose/form.component.d.ts.map +0 -1
  96. package/lib/compose/new-menu.component.d.ts.map +0 -1
  97. package/lib/compose/privilage.directive.d.ts.map +0 -1
  98. package/lib/compose/recipient-resolver.service.d.ts.map +0 -1
  99. package/lib/compose/save-changes.dialog.d.ts.map +0 -1
  100. package/lib/compose/state.component.d.ts.map +0 -1
  101. package/lib/compose/tag/tags.component.d.ts.map +0 -1
  102. package/lib/compose/trace/flow.component.d.ts.map +0 -1
  103. package/lib/compose/trace/people.component.d.ts.map +0 -1
  104. package/lib/compose/trace/trace.base.d.ts.map +0 -1
  105. package/lib/compose/trace/trace.component.d.ts.map +0 -1
  106. package/lib/compose/trace/trace.pane.component.d.ts.map +0 -1
  107. package/lib/compose/version-compare/version-compare.component.d.ts.map +0 -1
  108. package/lib/compose/version-compare/version-compare.directive.d.ts.map +0 -1
  109. package/lib/compose/version-compare/version.pane.component.d.ts.map +0 -1
  110. package/lib/core/NgComponentOutlet.d.ts.map +0 -1
  111. package/lib/core/account.service.d.ts.map +0 -1
  112. package/lib/core/animated-icon/animated-icon.directive.d.ts.map +0 -1
  113. package/lib/core/animations.d.ts.map +0 -1
  114. package/lib/core/authentication.d.ts.map +0 -1
  115. package/lib/core/avatar/avatar.component.d.ts.map +0 -1
  116. package/lib/core/base.d.ts.map +0 -1
  117. package/lib/core/colors.d.ts.map +0 -1
  118. package/lib/core/component-factory-resolver.d.ts.map +0 -1
  119. package/lib/core/configuration.d.ts.map +0 -1
  120. package/lib/core/controls/address.input.d.ts.map +0 -1
  121. package/lib/core/controls/auto-complete.input.d.ts.map +0 -1
  122. package/lib/core/controls/combination-picker-body.d.ts.map +0 -1
  123. package/lib/core/controls/combination-picker.d.ts.map +0 -1
  124. package/lib/core/controls/combination-pool.d.ts.map +0 -1
  125. package/lib/core/controls/file.input.d.ts.map +0 -1
  126. package/lib/core/controls/select.input.d.ts.map +0 -1
  127. package/lib/core/controls/time-picker.d.ts.map +0 -1
  128. package/lib/core/controls/timespan.input.d.ts.map +0 -1
  129. package/lib/core/datasource.service.d.ts.map +0 -1
  130. package/lib/core/decorators.d.ts.map +0 -1
  131. package/lib/core/firebase.service.d.ts.map +0 -1
  132. package/lib/core/functions.d.ts.map +0 -1
  133. package/lib/core/guide/guide.component.d.ts.map +0 -1
  134. package/lib/core/guide/guide.service.d.ts.map +0 -1
  135. package/lib/core/http.interceptor.d.ts.map +0 -1
  136. package/lib/core/hub.service.d.ts.map +0 -1
  137. package/lib/core/identity/identity.component.d.ts.map +0 -1
  138. package/lib/core/info/attachment-info.service.d.ts.map +0 -1
  139. package/lib/core/info/document-info.service.d.ts.map +0 -1
  140. package/lib/core/info/location-info.component.d.ts.map +0 -1
  141. package/lib/core/info/map-info.d.ts.map +0 -1
  142. package/lib/core/layout/autocomplete.field.d.ts.map +0 -1
  143. package/lib/core/layout/checkbox.d.ts.map +0 -1
  144. package/lib/core/layout/checkbox.field.d.ts.map +0 -1
  145. package/lib/core/layout/date-range.field.d.ts.map +0 -1
  146. package/lib/core/layout/date.field.d.ts.map +0 -1
  147. package/lib/core/layout/expression.field.d.ts.map +0 -1
  148. package/lib/core/layout/html.field.d.ts.map +0 -1
  149. package/lib/core/layout/input.base.d.ts.map +0 -1
  150. package/lib/core/layout/input.field.d.ts.map +0 -1
  151. package/lib/core/layout/layout.component.d.ts.map +0 -1
  152. package/lib/core/layout/numeric.field.d.ts.map +0 -1
  153. package/lib/core/layout/select.field.d.ts.map +0 -1
  154. package/lib/core/layout/switch.field.d.ts.map +0 -1
  155. package/lib/core/layout/textarea.field.d.ts.map +0 -1
  156. package/lib/core/layout/timespan.field.d.ts.map +0 -1
  157. package/lib/core/lottie-animation.d.ts.map +0 -1
  158. package/lib/core/mailbox.service.d.ts.map +0 -1
  159. package/lib/core/models.d.ts.map +0 -1
  160. package/lib/core/none.component.d.ts.map +0 -1
  161. package/lib/core/pipes/action.pipe.d.ts.map +0 -1
  162. package/lib/core/pipes/calendar.pipe.d.ts.map +0 -1
  163. package/lib/core/pipes/date-format.pipe.d.ts.map +0 -1
  164. package/lib/core/pipes/daterange.pipe.d.ts.map +0 -1
  165. package/lib/core/pipes/difference.pipe.d.ts.map +0 -1
  166. package/lib/core/pipes/duration-format.pipe.d.ts.map +0 -1
  167. package/lib/core/pipes/duration.pipe.d.ts.map +0 -1
  168. package/lib/core/pipes/form.pipe.d.ts.map +0 -1
  169. package/lib/core/pipes/join.pipe.d.ts.map +0 -1
  170. package/lib/core/pipes/role.pipe.d.ts.map +0 -1
  171. package/lib/core/pipes/sanitize-html.pipe.d.ts.map +0 -1
  172. package/lib/core/pipes/sort.pipe.d.ts.map +0 -1
  173. package/lib/core/pipes/state.pipe.d.ts.map +0 -1
  174. package/lib/core/pipes/time-ago.pipe.d.ts.map +0 -1
  175. package/lib/core/pipes/translate.pipe.d.ts.map +0 -1
  176. package/lib/core/pipes/type-value.pipe.d.ts.map +0 -1
  177. package/lib/core/pipes/user-name.pipe.d.ts.map +0 -1
  178. package/lib/core/popup/popup-ref.d.ts.map +0 -1
  179. package/lib/core/popup/popup.component.d.ts.map +0 -1
  180. package/lib/core/popup/popup.service.d.ts.map +0 -1
  181. package/lib/core/popup/tooltip.directive.d.ts.map +0 -1
  182. package/lib/core/prompt/ask/ask.dialog.d.ts.map +0 -1
  183. package/lib/core/prompt/mask/mask.component.d.ts.map +0 -1
  184. package/lib/core/prompt.service.d.ts.map +0 -1
  185. package/lib/core/router.d.ts.map +0 -1
  186. package/lib/core/session.service.d.ts.map +0 -1
  187. package/lib/core/slots/pane-ref.d.ts.map +0 -1
  188. package/lib/core/slots/router.directive.d.ts.map +0 -1
  189. package/lib/core/slots/router.service.d.ts.map +0 -1
  190. package/lib/core/slots/slots.component.d.ts.map +0 -1
  191. package/lib/core/tagging/documents.component.d.ts.map +0 -1
  192. package/lib/core/tagging/edit-input.component.d.ts.map +0 -1
  193. package/lib/core/tagging/emoji.component.d.ts.map +0 -1
  194. package/lib/core/tagging/tagging-item.directive.d.ts.map +0 -1
  195. package/lib/core/tagging/tagging.component-base.d.ts.map +0 -1
  196. package/lib/core/tagging/tagging.directive.d.ts.map +0 -1
  197. package/lib/core/tagging/tagging.pipe.d.ts.map +0 -1
  198. package/lib/core/tagging/users.component.d.ts.map +0 -1
  199. package/lib/core/translate.service.d.ts.map +0 -1
  200. package/lib/core/translations.d.ts.map +0 -1
  201. package/lib/core/window-title.service.d.ts.map +0 -1
  202. package/lib/cube/accum/accum.component.d.ts.map +0 -1
  203. package/lib/cube/chart/chart.component.d.ts.map +0 -1
  204. package/lib/cube/cube-info.service.d.ts.map +0 -1
  205. package/lib/cube/cube-menu.component.d.ts.map +0 -1
  206. package/lib/cube/cube-view.component.d.ts.map +0 -1
  207. package/lib/cube/cube.service.d.ts.map +0 -1
  208. package/lib/cube/declarations.d.ts.map +0 -1
  209. package/lib/cube/explore/document-item.component.d.ts.map +0 -1
  210. package/lib/cube/explore/explore-item.component.d.ts.map +0 -1
  211. package/lib/cube/explore/explore-items.component.d.ts.map +0 -1
  212. package/lib/cube/explore/explore.pane.component.d.ts.map +0 -1
  213. package/lib/cube/explore/item-resolver.service.d.ts.map +0 -1
  214. package/lib/cube/explore/item.pane.component.d.ts.map +0 -1
  215. package/lib/cube/filter/filter-tags.component.exp.d.ts.map +0 -1
  216. package/lib/cube/filter/filter.component.d.ts.map +0 -1
  217. package/lib/cube/grid/grid.component.d.ts.map +0 -1
  218. package/lib/cube/grid/spreadsheet.component.d.ts.map +0 -1
  219. package/lib/cube/matrix/matrix.base.d.ts.map +0 -1
  220. package/lib/cube/matrix/matrix.mobile.component.d.ts.map +0 -1
  221. package/lib/cube/matrix/matrix.pane.component.d.ts.map +0 -1
  222. package/lib/cube/matrix/popup.component.d.ts.map +0 -1
  223. package/lib/cube/matrix/table.component.d.ts.map +0 -1
  224. package/lib/cube/parallel/item.d.ts.map +0 -1
  225. package/lib/cube/parallel/parallel.component.d.ts.map +0 -1
  226. package/lib/cube/pivot/pivot.component.d.ts.map +0 -1
  227. package/lib/cube/sum/sum.component.d.ts.map +0 -1
  228. package/lib/cube/view-base.d.ts.map +0 -1
  229. package/lib/cube/view.mobile.component.d.ts.map +0 -1
  230. package/lib/cube/view.pane.component.d.ts.map +0 -1
  231. package/lib/dashboard/actions/actions.widget.d.ts.map +0 -1
  232. package/lib/dashboard/cube/accum-cube.widget.d.ts.map +0 -1
  233. package/lib/dashboard/cube/cube-analysis.base.d.ts.map +0 -1
  234. package/lib/dashboard/cube/cube-analysis.widget.d.ts.map +0 -1
  235. package/lib/dashboard/cube/cube-chart.widget.d.ts.map +0 -1
  236. package/lib/dashboard/cube/documents.widget.d.ts.map +0 -1
  237. package/lib/dashboard/cube/filter/filter.component.d.ts.map +0 -1
  238. package/lib/dashboard/dashboard.component.d.ts.map +0 -1
  239. package/lib/dashboard/dashboard.pane.component.d.ts.map +0 -1
  240. package/lib/dashboard/recents/recents.widget.d.ts.map +0 -1
  241. package/lib/dashboard/score/activity.widget.d.ts.map +0 -1
  242. package/lib/dashboard/score/compare-departments.widget.d.ts.map +0 -1
  243. package/lib/dashboard/score/peers-performance.widget.d.ts.map +0 -1
  244. package/lib/dashboard/score/pending-results.widget.d.ts.map +0 -1
  245. package/lib/dashboard/score/personal-score.widget.d.ts.map +0 -1
  246. package/lib/dashboard/widget-item.component.d.ts.map +0 -1
  247. package/lib/dashboard/widget-ref.d.ts.map +0 -1
  248. package/lib/desktop.module.d.ts.map +0 -1
  249. package/lib/home/about/about.dialog.d.ts.map +0 -1
  250. package/lib/home/home-base.component.d.ts.map +0 -1
  251. package/lib/home/home.desktop.component.d.ts.map +0 -1
  252. package/lib/home/home.mobile.component.d.ts.map +0 -1
  253. package/lib/home/notifications/notifications.component.d.ts.map +0 -1
  254. package/lib/home/options/options.component.d.ts.map +0 -1
  255. package/lib/home/outofoffice/outofoffice.component.d.ts.map +0 -1
  256. package/lib/home/search.service.d.ts.map +0 -1
  257. package/lib/home/sign/sign.component.d.ts.map +0 -1
  258. package/lib/home/tools.component.d.ts.map +0 -1
  259. package/lib/impersonate/impersonate.component.d.ts.map +0 -1
  260. package/lib/mobile.module.d.ts.map +0 -1
  261. package/lib/modules/chart.module.d.ts.map +0 -1
  262. package/lib/modules/circular-gauge.module.d.ts.map +0 -1
  263. package/lib/modules/date.adapter.d.ts.map +0 -1
  264. package/lib/modules/datepicker.intl.d.ts.map +0 -1
  265. package/lib/modules/diagram.module.d.ts.map +0 -1
  266. package/lib/modules/gantt.module.d.ts.map +0 -1
  267. package/lib/modules/grid.module.d.ts.map +0 -1
  268. package/lib/modules/material.module.d.ts.map +0 -1
  269. package/lib/modules/paginator.intl.d.ts.map +0 -1
  270. package/lib/modules/pivot.module.d.ts.map +0 -1
  271. package/lib/modules/schedule.module.d.ts.map +0 -1
  272. package/lib/modules/spreadsheet.module.d.ts.map +0 -1
  273. package/lib/modules/stepper.intl.d.ts.map +0 -1
  274. package/lib/modules/texteditor.module.d.ts.map +0 -1
  275. package/lib/notifications/filter.component.d.ts.map +0 -1
  276. package/lib/notifications/notifications-table.component.d.ts.map +0 -1
  277. package/lib/notifications/notifications.component-base.d.ts.map +0 -1
  278. package/lib/notifications/notifications.mobile.component.d.ts.map +0 -1
  279. package/lib/notifications/notifications.pane.component.d.ts.map +0 -1
  280. package/lib/notifications/notifications.service.d.ts.map +0 -1
  281. package/lib/notifications/types/commented.notification.d.ts.map +0 -1
  282. package/lib/notifications/types/cube-anomaly.notification.d.ts.map +0 -1
  283. package/lib/notifications/types/escalated.notification.d.ts.map +0 -1
  284. package/lib/notifications/types/liked.notification.d.ts.map +0 -1
  285. package/lib/notifications/types/long-running-task.notification.d.ts.map +0 -1
  286. package/lib/notifications/types/notification-base.d.ts.map +0 -1
  287. package/lib/notifications/types/nudge.notification.d.ts.map +0 -1
  288. package/lib/notifications/types/state-changed.notification.d.ts.map +0 -1
  289. package/lib/notifications/types/tagged.notification.d.ts.map +0 -1
  290. package/lib/notifications/types/text.notification.d.ts.map +0 -1
  291. package/lib/notifications/types/upcoming-event.notification.d.ts.map +0 -1
  292. package/lib/options/options.component.d.ts.map +0 -1
  293. package/lib/options/options.service.d.ts.map +0 -1
  294. package/lib/reports/arguments-component.d.ts.map +0 -1
  295. package/lib/reports/cube/grid-documents.component.d.ts.map +0 -1
  296. package/lib/reports/cube/table-documents.component.d.ts.map +0 -1
  297. package/lib/reports/cube/usage-args.component.d.ts.map +0 -1
  298. package/lib/reports/cube/usage-base.d.ts.map +0 -1
  299. package/lib/reports/cube/usage-chart.component.d.ts.map +0 -1
  300. package/lib/reports/cube/usage-pivot.component.d.ts.map +0 -1
  301. package/lib/reports/report-ref.d.ts.map +0 -1
  302. package/lib/reports/report-viewer.component.d.ts.map +0 -1
  303. package/lib/reports/report.mobile.component.d.ts.map +0 -1
  304. package/lib/reports/report.pane.component.d.ts.map +0 -1
  305. package/lib/reports/reports-menu.component.d.ts.map +0 -1
  306. package/lib/reports/substitution/substitution.component.d.ts.map +0 -1
  307. package/lib/reports/table/table-view.component.d.ts.map +0 -1
  308. package/lib/reports/tasks/tasks.component.d.ts.map +0 -1
  309. package/lib/routes.desktop.d.ts.map +0 -1
  310. package/lib/routes.mobile.d.ts.map +0 -1
  311. package/lib/scheduler/schedule.component.d.ts.map +0 -1
  312. package/lib/scheduler/scheduler.mobile.component.d.ts.map +0 -1
  313. package/lib/scheduler/scheduler.pane.component.d.ts.map +0 -1
  314. package/lib/shared.module.d.ts.map +0 -1
  315. package/lib/system.module.d.ts.map +0 -1
  316. package/lib/views/cube/chart.component.d.ts.map +0 -1
  317. package/lib/views/cube/cube-base.d.ts.map +0 -1
  318. package/lib/views/cube/explore.component.d.ts.map +0 -1
  319. package/lib/views/cube/matrix.component.d.ts.map +0 -1
  320. package/lib/views/cube/parallel.component.d.ts.map +0 -1
  321. package/lib/views/cube/pivot.component.d.ts.map +0 -1
  322. package/lib/views/cube/sum.component.d.ts.map +0 -1
  323. package/lib/views/cube/view.component.d.ts.map +0 -1
  324. package/lib/views/document-view-ref.d.ts.map +0 -1
  325. package/lib/views/timeline/timeline.component.exp.d.ts.map +0 -1
  326. package/lib/views/view-item.component.d.ts.map +0 -1
  327. package/lib/views/views.component.d.ts.map +0 -1
  328. package/lib/views/views.mobile.component.d.ts.map +0 -1
  329. package/lib/views/views.pane.component.d.ts.map +0 -1
  330. package/public-api.d.ts.map +0 -1
@@ -127,7 +127,7 @@ import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as Selection
127
127
  import * as i4$1 from '@ctrl/ngx-emoji-mart';
128
128
  import { PickerModule } from '@ctrl/ngx-emoji-mart';
129
129
  import * as i11$1 from '@syncfusion/ej2-angular-diagrams';
130
- import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
130
+ import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
131
131
  import * as i9$2 from '@syncfusion/ej2-angular-schedule';
132
132
  import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
133
133
  import * as i10$2 from '@syncfusion/ej2-angular-kanban';
@@ -1239,6 +1239,8 @@ class MailboxService {
1239
1239
  };
1240
1240
  messaging.new$.
1241
1241
  subscribe(m => {
1242
+ if (m.userId !== _session.profile.userId)
1243
+ return;
1242
1244
  _session.profile.inboxCount++;
1243
1245
  const folder = _session.profile.folders.find(f => f.name === m.model.folderId);
1244
1246
  folder.count++;
@@ -1559,20 +1561,43 @@ function isHttpProgressEvent(event) {
1559
1561
  }
1560
1562
  function calculateState(upload, event) {
1561
1563
  if (isHttpProgressEvent(event)) {
1562
- return {
1564
+ return new UploadEvent({
1563
1565
  progress: event.total
1564
1566
  ? Math.round((100 * event.loaded) / event.total)
1565
1567
  : upload.progress,
1566
1568
  state: 'progress',
1567
- };
1569
+ });
1568
1570
  }
1569
1571
  if (isHttpResponse(event)) {
1570
- return {
1572
+ return new UploadEvent({
1571
1573
  progress: 100,
1572
1574
  state: 'done',
1573
- };
1575
+ });
1574
1576
  }
1575
1577
  return upload;
1578
+ }
1579
+ class UploadEvent {
1580
+ constructor(options) { }
1581
+ }
1582
+ function reportprogress(filename) {
1583
+ return (source) => source.pipe(map(r => {
1584
+ //if (event instanceof ProgressEvent) {
1585
+ // observe.next(new UploadEvent(
1586
+ // file.name,
1587
+ // (event as ProgressEvent).loaded,
1588
+ // (event as ProgressEvent).total
1589
+ // ));
1590
+ //} else if (event instanceof HttpResponse) {
1591
+ // const res = event as HttpResponse<any>;
1592
+ // if (res.status === 200) {
1593
+ // const model = res.body as Attachment;
1594
+ // observe.next(model);
1595
+ // }
1596
+ // else
1597
+ // observe.error({ status: res.status, error: res.body });
1598
+ // observe.complete();
1599
+ return r;
1600
+ }));
1576
1601
  }
1577
1602
 
1578
1603
  class ActionRef {
@@ -2072,6 +2097,9 @@ const STRINGS = {
2072
2097
  YouRepliedTo: 'You replied {0}',
2073
2098
  ReplyingToYou: '{0} in reply to you',
2074
2099
  ByYou: '{0} by you',
2100
+ ActionBy: '{0} by {1}',
2101
+ ActionByBy: '{0} by {1} on behalf of {2}',
2102
+ ActionByYou: '{0} by you',
2075
2103
  Received: 'Received',
2076
2104
  ChangeLanguage: 'Language',
2077
2105
  NewMail: 'New {0} #{1} {2}',
@@ -2343,6 +2371,7 @@ const STRINGS = {
2343
2371
  Votes: 'Votes',
2344
2372
  Tasks: 'Tasks',
2345
2373
  System: 'System',
2374
+ Everything: 'Everything',
2346
2375
  NothingHere: 'Nothing to see here',
2347
2376
  Matrix: 'Matrix',
2348
2377
  Working: 'Working on it...'
@@ -2379,7 +2408,7 @@ const STRINGS = {
2379
2408
  Skipped: '- דולג',
2380
2409
  Route: 'חותמים',
2381
2410
  Trace: 'הסטוריה',
2382
- Log: 'הסטוריה',
2411
+ Everything: 'הסטוריה',
2383
2412
  ProfilerSearchHelp: 'הקלד/י שם משתמש ובחר/י מהרשימה כדי לסקור פעולותיו.',
2384
2413
  TraceSearchHelp: 'הקלד/י מספר מסמך ובחר/י כדי לעקוב אחרי תנועותיו.',
2385
2414
  DiagramVersion: 'גרסה {0}',
@@ -2740,6 +2769,9 @@ const STRINGS = {
2740
2769
  YouRepliedTo: '{0}השבת ל',
2741
2770
  ReplyingToYou: '{0} השיב לך',
2742
2771
  ByYou: '{0} דרכך',
2772
+ ActionByYou: '{0} דרכך',
2773
+ ActionByBy: '{0} דרך {1} בשם {2}',
2774
+ ActionBy: '{0} דרך {1}',
2743
2775
  EscalatedTo: 'החרפה אל {0} אחרי <em>{1}</em>',
2744
2776
  EscalatedFrom: 'החרפה מ-{0} אחרי <em>{1}</em>',
2745
2777
  EscalatedBy: '{0} הועבר אל {1}',
@@ -6888,15 +6920,15 @@ function getSecondsUntilUpdate(time) {
6888
6920
 
6889
6921
  const REFRESH_TIME = 30000, TYPING_HINT_TIME = 1500;
6890
6922
  class ExpandedItemComponent {
6891
- constructor(_sb, _chat, _accounts, _dir, _translate, _mailbox, _dialog, _session, _messaging) {
6923
+ constructor(_sb, _chat, _accounts, _mailbox, _session, _dir, _dialog, _translate, _messaging) {
6892
6924
  this._sb = _sb;
6893
6925
  this._chat = _chat;
6894
6926
  this._accounts = _accounts;
6895
- this._dir = _dir;
6896
- this._translate = _translate;
6897
6927
  this._mailbox = _mailbox;
6898
- this._dialog = _dialog;
6899
6928
  this._session = _session;
6929
+ this._dir = _dir;
6930
+ this._dialog = _dialog;
6931
+ this._translate = _translate;
6900
6932
  this._messaging = _messaging;
6901
6933
  this.sent = new EventEmitter();
6902
6934
  this._destroy = new Subject();
@@ -6904,22 +6936,22 @@ class ExpandedItemComponent {
6904
6936
  ngOnInit() {
6905
6937
  this._messaging.comment$.pipe(takeUntil(this._destroy)).
6906
6938
  subscribe(e => {
6907
- if (e.id === this.item.id && (e.model.byId || e.model.userId) !== this._session.userId) {
6939
+ if (e.id === this.model.id && (e.model.byId || e.model.userId) !== this._session.userId) {
6908
6940
  this._comments();
6909
6941
  this._accounts.get(e.model.userId).subscribe(u => this._sb.toast('Commented', u.gender, u.name));
6910
6942
  }
6911
6943
  });
6912
6944
  this._messaging.update$.pipe(takeUntil(this._destroy)).subscribe(e => {
6913
- if (e.model.id === this.item.id) {
6945
+ if (e.model.id === this.model.id) {
6914
6946
  this._refresh();
6915
- (e.userId !== this._session.userId) && this._accounts.get(e.userId).subscribe(u => this._sb.toast('MailVersionUpdate', this.item.number, u.name));
6947
+ (e.userId !== this._session.userId) && this._accounts.get(e.userId).subscribe(u => this._sb.toast('MailVersionUpdate', this.model.number, u.name));
6916
6948
  }
6917
6949
  });
6918
6950
  this._mailbox.changed.pipe(takeUntil(this._destroy)).subscribe(e => {
6919
- if (e.id === this.item.id)
6951
+ if (e.id === this.model.id)
6920
6952
  this._refresh();
6921
6953
  });
6922
- this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter$1(e => e.id === this.item.documentId)).subscribe(c => {
6954
+ this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter$1(e => e.id === this.model.documentId)).subscribe(c => {
6923
6955
  this.typing = true;
6924
6956
  clearTimeout(this._typingTask);
6925
6957
  this._typingTask = setTimeout(() => this.typing = false, TYPING_HINT_TIME);
@@ -6928,31 +6960,28 @@ class ExpandedItemComponent {
6928
6960
  this._refreshTask = setInterval(() => this._refresh(), REFRESH_TIME);
6929
6961
  }
6930
6962
  async _note() {
6931
- const { ownerId, issued, substitutingId, received, replied, log, id, note, byId, action, toId } = this.item;
6963
+ const { ownerId, issued, substitutingId, received, replied, log, id, note, byId, action, toId, escalated, originId } = this.model;
6932
6964
  if (substitutingId) {
6933
- this._accounts.get(substitutingId).subscribe(u => {
6934
- if (replied) {
6935
- const time = this._fromNow(replied), action = this._session.profile.actions.find(a => a.name === action), adjective = (action.adjective || action.title).toLowerCase();
6936
- if (toId)
6937
- this._accounts.get(toId).subscribe(t => this.note = this._translate.personalize('YouSubstituteActionTakenTo', u.gender, adjective, this._formatUserElement(t), this._formatUserElement(u), time));
6938
- else
6939
- this.note = this._translate.personalize('YouSubstituteActionTaken', u.gender, adjective, this._formatUserElement(u), time);
6965
+ const substituting = await this._accounts.get(substitutingId).toPromise();
6966
+ if (replied) {
6967
+ const time = this._fromNow(replied), action = this._session.profile.actions.find(a => a.name === action), adjective = (action.adjective || action.title).toLowerCase();
6968
+ if (toId) {
6969
+ const to = await this._accounts.get(toId).toPromise();
6970
+ this.note = this._translate.personalize('YouSubstituteActionTakenTo', substituting.gender, adjective, this._formatUserElement(to), this._formatUserElement(substituting), time);
6940
6971
  }
6941
- else {
6942
- const escalations = issued &&
6943
- log.filter(l => l.time > issued &&
6944
- l.type === 'Escalation'
6945
- && l.recipientId === id);
6946
- if (escalations && escalations.length) {
6947
- const duration = dayjs(escalations[0].time).diff(received, 's');
6948
- this.note = this._translate.personalize('EscalatedFrom', u.gender, this._formatUserElement(u), this._duration(duration));
6949
- }
6950
- else {
6951
- const time = this._fromNow(received);
6952
- this.note = this._translate.personalize('SubstitutingNote', u.gender, this._formatUserElement(u), time, note || '');
6953
- }
6954
- }
6955
- });
6972
+ else
6973
+ this.note = this._translate.personalize('YouSubstituteActionTaken', substituting.gender, adjective, this._formatUserElement(substituting), time);
6974
+ }
6975
+ else if (escalated) {
6976
+ const escalations = log.filter(l => l.time > issued &&
6977
+ l.type === 'Escalation'
6978
+ && l.recipientId === id);
6979
+ this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalations[0].duration));
6980
+ }
6981
+ else {
6982
+ const time = this._fromNow(received);
6983
+ this.note = this._translate.personalize('SubstitutingNote', substituting.gender, this._formatUserElement(substituting), time, note || '');
6984
+ }
6956
6985
  }
6957
6986
  else if (replied) {
6958
6987
  const time = this._fromNow(replied);
@@ -6986,6 +7015,23 @@ class ExpandedItemComponent {
6986
7015
  }
6987
7016
  else if (note)
6988
7017
  this.note = note;
7018
+ else if (originId) {
7019
+ const origin = this.model.recipients.find(r => r.id === originId);
7020
+ if (origin.toId) {
7021
+ const action = this._session.profile.actions.find(a => a.name === origin.action), adjective = action.adjective || action.past || action.title;
7022
+ if ((origin.byId || origin.userId) === this._session.userId)
7023
+ this.note = this._translate.get('ActionByYou', adjective);
7024
+ else if (origin.byId) {
7025
+ const who = await this._accounts.get(origin.userId).toPromise();
7026
+ const by = await this._accounts.get(origin.byId).toPromise();
7027
+ this.note = this._translate.get('ActionByBy', adjective, by.name, who.name);
7028
+ }
7029
+ else {
7030
+ const who = await this._accounts.get(origin.userId).toPromise();
7031
+ this.note = this._translate.get('ActionBy', adjective, who.name);
7032
+ }
7033
+ }
7034
+ }
6989
7035
  else if (ownerId === this._session.profile.userId && issued) {
6990
7036
  const time = this._fromNow(issued);
6991
7037
  if (byId) {
@@ -7026,9 +7072,9 @@ class ExpandedItemComponent {
7026
7072
  }
7027
7073
  /** */
7028
7074
  async _refresh() {
7029
- const { actions } = this.item;
7075
+ const { actions } = this.model;
7030
7076
  this.actions = actions && actions.length ? this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1) : null;
7031
- const { senderId } = this.item;
7077
+ const { senderId } = this.model;
7032
7078
  // sender
7033
7079
  if (senderId && (senderId !== this._session.userId)) {
7034
7080
  const who = await this._accounts.get(senderId).toPromise();
@@ -7039,13 +7085,13 @@ class ExpandedItemComponent {
7039
7085
  this._awaiting();
7040
7086
  }
7041
7087
  _comments() {
7042
- const { viewed, comments } = this.item;
7088
+ const { viewed, comments } = this.model;
7043
7089
  this.newComments = viewed ?
7044
7090
  comments.filter(c => c.time > viewed && (c.byId || c.userId) !== this._session.userId).length || null : null;
7045
7091
  }
7046
7092
  async _awaiting() {
7047
7093
  //awaiting
7048
- let recipients = this.item.recipients.filter(r => r.pending && !r.estimate).
7094
+ let recipients = this.model.recipients.filter(r => r.pending && !r.estimate).
7049
7095
  sort((r0, r1) => r0.received > r1.received ? 1 : -1).
7050
7096
  map(r => r.userId);
7051
7097
  recipients = recipients.filter((r, i) => recipients.indexOf(r) === i); /* unique */
@@ -7076,10 +7122,10 @@ class ExpandedItemComponent {
7076
7122
  * @param action
7077
7123
  */
7078
7124
  send(action) {
7079
- const { id, number, version, formId } = this.item;
7125
+ const { id, number, version, formId } = this.model;
7080
7126
  const data = {
7081
7127
  action,
7082
- item: this.item
7128
+ item: this.model
7083
7129
  };
7084
7130
  this._dialog.open(ActionDialog, {
7085
7131
  data,
@@ -7093,10 +7139,10 @@ class ExpandedItemComponent {
7093
7139
  this._accounts.get(r.toId).subscribe(u => this._sb.toast('SentTo', number, adjective.toLowerCase(), u.name));
7094
7140
  else
7095
7141
  this._sb.toast('Sent', number, adjective.toLowerCase());
7096
- this.sent.emit(this.item);
7142
+ this.sent.emit(this.model);
7097
7143
  this.mode = 'done';
7098
7144
  }, e => {
7099
- this._handleResponse(e, this.item, 'SendErr');
7145
+ this._handleResponse(e, this.model, 'SendErr');
7100
7146
  this.mode = 'failed';
7101
7147
  });
7102
7148
  }
@@ -7140,12 +7186,12 @@ class ExpandedItemComponent {
7140
7186
  this._typingTask && clearTimeout(this._typingTask);
7141
7187
  }
7142
7188
  }
7143
- ExpandedItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: PromptService }, { token: ChatInfo }, { token: AccountService }, { token: i7$2.Directionality }, { token: TranslateService }, { token: MailboxService }, { token: i3$2.MatDialog }, { token: SessionService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
7144
- ExpandedItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { item: "item" }, outputs: { sent: "sent" }, ngImport: i0, template: "<div class=\"summary\" *ngIf=\"item.summary\" [innerHTML]=\"item.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"item\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"item\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{item.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"item.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{item.comments.length > 1 ? ('CommentsCount' | translate : item.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.tags\">\r\n <span *ngFor=\"let tag of item.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : item.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"], components: [{ type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { type: DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { type: i7$1.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"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$1.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"] }, { type: i6$1.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"] }], pipes: { "sanitizeHtml": SanitizeHtmlPipe, "state": StatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "translate": TranslatePipe } });
7189
+ ExpandedItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: PromptService }, { token: ChatInfo }, { token: AccountService }, { token: MailboxService }, { token: SessionService }, { token: i7$2.Directionality }, { token: i3$2.MatDialog }, { token: TranslateService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
7190
+ ExpandedItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"], components: [{ type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { type: DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { type: i7$1.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"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$1.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"] }, { type: i6$1.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"] }], pipes: { "sanitizeHtml": SanitizeHtmlPipe, "state": StatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "translate": TranslatePipe } });
7145
7191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, decorators: [{
7146
7192
  type: Component,
7147
- args: [{ selector: 'bizdoc-expanded-item', template: "<div class=\"summary\" *ngIf=\"item.summary\" [innerHTML]=\"item.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"item\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"item\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{item.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"item.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{item.comments.length > 1 ? ('CommentsCount' | translate : item.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.tags\">\r\n <span *ngFor=\"let tag of item.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : item.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"] }]
7148
- }], ctorParameters: function () { return [{ type: PromptService }, { type: ChatInfo }, { type: AccountService }, { type: i7$2.Directionality }, { type: TranslateService }, { type: MailboxService }, { type: i3$2.MatDialog }, { type: SessionService }, { type: HubService }]; }, propDecorators: { item: [{
7193
+ args: [{ selector: 'bizdoc-expanded-item', template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"] }]
7194
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: ChatInfo }, { type: AccountService }, { type: MailboxService }, { type: SessionService }, { type: i7$2.Directionality }, { type: i3$2.MatDialog }, { type: TranslateService }, { type: HubService }]; }, propDecorators: { model: [{
7149
7195
  type: Input
7150
7196
  }], sent: [{
7151
7197
  type: Output
@@ -7245,7 +7291,7 @@ class BrowseItemsComponent {
7245
7291
  this._remove(item);
7246
7292
  });
7247
7293
  this._messaging.new$.pipe(takeUntil(this._destroy)).subscribe(m => {
7248
- if (!this.dataSource)
7294
+ if (!this.dataSource || m.userId !== this._session.profile.userId)
7249
7295
  return;
7250
7296
  const item = this.dataSource.data.find(c => c.id === m.model.id);
7251
7297
  if (!item && this.folderId === m.model.folderId) {
@@ -7578,7 +7624,7 @@ class BrowseItemsComponent {
7578
7624
  }
7579
7625
  }
7580
7626
  BrowseItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseItemsComponent, deps: [{ token: MailboxService }, { token: AccountService }, { token: CubeService }, { token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: i0.ChangeDetectorRef }, { token: RouterImpl }, { token: HubService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
7581
- BrowseItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [item]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], components: [{ type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.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"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["item"], outputs: ["sent"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i22.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i22.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i22.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { type: i22.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i8$2.MatMenuContent, selector: "ng-template[matMenuContent]" }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "number": i10.DecimalPipe, "currency": i10.CurrencyPipe }, animations: [
7627
+ BrowseItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [model]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], components: [{ type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.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"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["model"], outputs: ["sent"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i22.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i22.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i22.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { type: i22.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i8$2.MatMenuContent, selector: "ng-template[matMenuContent]" }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "number": i10.DecimalPipe, "currency": i10.CurrencyPipe }, animations: [
7582
7628
  listAnimation,
7583
7629
  itemAnimation,
7584
7630
  expandListItemAnimation,
@@ -7591,7 +7637,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
7591
7637
  itemAnimation,
7592
7638
  expandListItemAnimation,
7593
7639
  listItemUpdatedAnimation
7594
- ], template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [item]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
7640
+ ], template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [model]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
7595
7641
  }], ctorParameters: function () { return [{ type: MailboxService }, { type: AccountService }, { type: CubeService }, { type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: i0.ChangeDetectorRef }, { type: RouterImpl }, { type: HubService }, { type: undefined, decorators: [{
7596
7642
  type: Inject,
7597
7643
  args: [BIZDOC_CONFIG]
@@ -13175,8 +13221,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
13175
13221
  args: [{ name: 'amDurationFormat' }]
13176
13222
  }], ctorParameters: function () { return [{ type: TranslateService }]; } });
13177
13223
 
13178
- Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
13179
- const PENDING_PATH = 'M18,22l-0.01-6L14,12l3.99-4.01L18,2H6v6l4,4l-4,3.99V22H18z M8,7.5V4h8v3.5l-4,4L8,7.5z', FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH$1 = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
13224
+ Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LineRouting, ConnectorBridging, LayoutAnimation, LineRouting, ConnectorBridging*/);
13225
+ const
13226
+ //ELLIPSIS = 'M 650, 150 a 75,150 0 1,0 1,0 z',
13227
+ FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH$1 = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
13180
13228
  /** flow-view component*/
13181
13229
  class FlowViewComponent extends TraceBase {
13182
13230
  /** workflow-view ctor */
@@ -13192,19 +13240,16 @@ class FlowViewComponent extends TraceBase {
13192
13240
  this.diagramConstraints = DiagramConstraints.Default |
13193
13241
  DiagramConstraints.Pan |
13194
13242
  DiagramConstraints.LineRouting |
13195
- DiagramConstraints.Bridging;
13243
+ DiagramConstraints.Zoom;
13196
13244
  this.layout = {
13197
13245
  type: 'ComplexHierarchicalTree',
13198
13246
  connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
13199
13247
  horizontalSpacing: 50,
13248
+ enableRouting: true,
13200
13249
  verticalSpacing: 50,
13201
- //connectorSegments: 'Layout',
13202
- //arrangement: ChildArrangement.Nonlinear,
13203
- //horizontalAlignment:'Center',
13204
- //verticalAlignment: 'Auto',
13250
+ horizontalAlignment: 'Center',
13205
13251
  connectionDirection: 'Orientation',
13206
13252
  orientation: this._session.inverse ? 'RightToLeft' : 'LeftToRight',
13207
- margin: { left: 10, right: 10, top: 10, bottom: 10 }
13208
13253
  };
13209
13254
  this.scrollSettings = {
13210
13255
  minZoom: .5,
@@ -13291,7 +13336,6 @@ class FlowViewComponent extends TraceBase {
13291
13336
  obj.style.strokeWidth = 0;
13292
13337
  }
13293
13338
  else {
13294
- // obj.shape = { type: 'Bpmn', shape: 'Event' } as BpmnShapeModel;
13295
13339
  obj.width = obj.height = 50;
13296
13340
  if (obj.annotations && obj.annotations.length)
13297
13341
  obj.annotations[0].style.color = this._session.theme.dark ? 'white' : 'black';
@@ -13302,7 +13346,8 @@ class FlowViewComponent extends TraceBase {
13302
13346
  }
13303
13347
  else {
13304
13348
  obj.style.strokeColor = this._accentColor;
13305
- obj.style.fill = recipient && recipient.pending ? this._session.getAccent(400) : 'transparent';
13349
+ obj.style.fill = recipient && recipient.pending ?
13350
+ this._session.getAccent(recipient.userId === this._session.userId ? 500 : 400) : 'transparent';
13306
13351
  }
13307
13352
  obj.style.strokeWidth = 2;
13308
13353
  }
@@ -13409,7 +13454,7 @@ class FlowViewComponent extends TraceBase {
13409
13454
  });
13410
13455
  if (c.sourceId === node.id) {
13411
13456
  //
13412
- if (c.virtualizing && !this.model.recipients.some(r => r.nodeId === c.targetId && r.originId === recipient.id))
13457
+ if (c.virtual && c.originId !== recipient.id)
13413
13458
  return;
13414
13459
  connectors.push({
13415
13460
  sourceID: nod.id,
@@ -13442,56 +13487,40 @@ class FlowViewComponent extends TraceBase {
13442
13487
  indicators.push(actionIndicator);
13443
13488
  }
13444
13489
  }
13445
- if (recipient.pending && !recipient.estimate)
13490
+ if (recipient.fyi)
13446
13491
  indicators.push({
13447
- id: nod.id + 'pending',
13492
+ id: nod.id + 'fyi',
13448
13493
  shape: {
13449
13494
  type: 'Path',
13450
- data: PENDING_PATH,
13451
- align: this._session.inverse ? 'XMaxYMax' : 'XMinYMax'
13495
+ data: FYI_PATH,
13496
+ align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
13452
13497
  },
13453
13498
  style: {
13454
- fill: this._session.getAccent(900)
13499
+ fill: '#1976d2'
13455
13500
  },
13456
13501
  addInfo: {
13457
13502
  indicator: true,
13458
13503
  parentId: nod.id
13459
13504
  }
13460
13505
  });
13461
- if (recipient.fyi)
13462
- indicators.push({
13463
- id: nod.id + 'fyi',
13506
+ if (recipient.escalated) {
13507
+ const escalateIndicator = {
13508
+ id: nod.id + 'escalate',
13464
13509
  shape: {
13465
13510
  type: 'Path',
13466
- data: FYI_PATH,
13511
+ data: ESCALATED_PATH,
13467
13512
  align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
13468
13513
  },
13469
13514
  style: {
13470
- fill: '#1976d2'
13515
+ fill: this._session.getAccent(900)
13471
13516
  },
13472
13517
  addInfo: {
13473
13518
  indicator: true,
13474
13519
  parentId: nod.id
13475
13520
  }
13476
- });
13477
- // if (this.model.log.filter(l => l.time > this._submitted && l.type === 'Escalation' && l.recipientId === recipient.id).length) {
13478
- // const escalateIndicator = {
13479
- // id: nod.id + 'escalate',
13480
- // shape: {
13481
- // type: 'Path',
13482
- // data: ESCALATED_PATH,
13483
- // align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
13484
- // },
13485
- // style: {
13486
- // fill: this._session.getAccent(900)
13487
- // },
13488
- // addInfo: {
13489
- // indicator: true,
13490
- // parentId: nod.id
13491
- // } as NodeInfoModel
13492
- // } as NodeModel;
13493
- // indicators.push(escalateIndicator);
13494
- // }
13521
+ };
13522
+ indicators.push(escalateIndicator);
13523
+ }
13495
13524
  }
13496
13525
  }
13497
13526
  else {
@@ -13558,36 +13587,6 @@ class FlowViewComponent extends TraceBase {
13558
13587
  }
13559
13588
  }
13560
13589
  }
13561
- /**
13562
- *
13563
- * @param connector
13564
- * @param index
13565
- * @param vconnectors
13566
- */
13567
- function reroute(connector, index) {
13568
- while (index < dconnectors.length) {
13569
- let dconnector = dconnectors[index];
13570
- if (dconnector.sourceId === connector.targetId) {
13571
- if (nodes.some(n => n.id === dconnector.targetId))
13572
- connectors.push({
13573
- sourceID: connector.sourceId,
13574
- targetID: dconnector.targetId,
13575
- addInfo: {
13576
- estimate: dconnector.estimate,
13577
- time: dconnector.time
13578
- }
13579
- });
13580
- else
13581
- reroute({
13582
- time: dconnector.time,
13583
- targetId: dconnector.targetId,
13584
- estimate: dconnector.estimate,
13585
- sourceId: connector.sourceId
13586
- }, index + 1);
13587
- }
13588
- index++;
13589
- }
13590
- }
13591
13590
  return { connectors, nodes, indicators };
13592
13591
  }
13593
13592
  /**
@@ -13779,11 +13778,28 @@ class FlowViewComponent extends TraceBase {
13779
13778
  tooltip.substituting = this._translate.personalize('SubstitutingFor', substituting.gender, substituting.name);
13780
13779
  }
13781
13780
  }
13782
- const escalations = this.model.log.filter(l => l.time > this._issued && l.type === 'Escalation' && l.recipientId === recipient.id);
13783
- if (escalations.length) {
13781
+ if (recipient.originId && !recipient.replied) {
13782
+ const origin = this.model.recipients.find(r => r.id === recipient.originId);
13783
+ if (origin.toId) {
13784
+ const action = this._session.profile.actions.find(a => a.name === origin.action), adjective = action.adjective || action.past || action.title;
13785
+ if ((origin.byId || origin.userId) === this._session.userId)
13786
+ tooltip.substituting = this._translate.get('ActionByYou', adjective);
13787
+ else if (origin.byId) {
13788
+ const who = await this._accounts.get(origin.userId).toPromise();
13789
+ const by = await this._accounts.get(origin.byId).toPromise();
13790
+ tooltip.substituting = this._translate.get('ActionByBy', adjective, by.name, who.name);
13791
+ }
13792
+ else {
13793
+ const who = await this._accounts.get(origin.userId).toPromise();
13794
+ tooltip.substituting = this._translate.get('ActionBy', adjective, who.name);
13795
+ }
13796
+ }
13797
+ }
13798
+ if (recipient.escalated) {
13799
+ const escalations = this.model.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
13784
13800
  const userIds = escalations.map(e => e.userId);
13785
13801
  const users = await this._accounts.getAll(userIds).toPromise();
13786
- const duration = this._duration.transform(dayjs(escalations[escalations.length - 1].time).diff(recipient.received, 's'));
13802
+ const duration = this._duration.transform(dayjs.duration(escalations[escalations.length - 1].duration, 's'));
13787
13803
  tooltip.escalation = this._translate.get('EscalatedTo', this._translate.join(users.map(u => u.name)), duration);
13788
13804
  }
13789
13805
  if (recipient.replied) {
@@ -13997,22 +14013,16 @@ class TraceViewComponent extends TraceBase {
13997
14013
  }
13998
14014
  }
13999
14015
  else if (recipient.byId) {
14000
- let who = await profileOf(recipient.userId);
14001
- if (recipient.byId === this._session.userId) {
14016
+ let who = await profileOf(recipient.userId), by = await profileOf(recipient.byId);
14017
+ if (recipient.byId === this._session.userId)
14002
14018
  step.name = this._translate.get('ByYou', nameOf(who));
14003
- if (action)
14004
- step.action = await actionBy(action, You, recipient.toId);
14005
- }
14006
14019
  else {
14007
- let by = await profileOf(recipient.byId);
14008
14020
  step.name = this._translate.get('By', nameOf(who), nameOf(by));
14009
14021
  if (by.role)
14010
14022
  step.role = by.role;
14011
- if (action)
14012
- step.action = await actionBy(action, by.gender, recipient.toId);
14013
14023
  }
14014
14024
  if (action)
14015
- step.action = await actionBy(action, who.gender, recipient.toId);
14025
+ step.action = await actionBy(action, by.gender, recipient.toId);
14016
14026
  }
14017
14027
  else {
14018
14028
  if (recipient.userId === this._session.userId)
@@ -14112,30 +14122,28 @@ class TraceViewComponent extends TraceBase {
14112
14122
  step.role = by.role;
14113
14123
  }
14114
14124
  }
14115
- else {
14125
+ else if (recipient.escalated) {
14116
14126
  let escalations = this.model.log.filter(l => l.time > issued &&
14117
14127
  l.type === 'Escalation' && l.recipientId === recipient.id);
14118
- if (escalations.length) {
14119
- let escalate = [];
14120
- for (let escalation of escalations) {
14121
- let who = await profileOf(escalation.userId);
14122
- escalate.push(who);
14123
- }
14124
- let who = await profileOf(recipient.userId);
14125
- if (escalations.length === 1 && escalate[0] === this._session.userId)
14126
- step.name = this._translate.get('EscalatedByYou', nameOf(who));
14127
- else
14128
- step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
14128
+ let escalate = [];
14129
+ for (let escalation of escalations) {
14130
+ let who = await profileOf(escalation.userId);
14131
+ escalate.push(who);
14129
14132
  }
14133
+ let who = await profileOf(recipient.userId);
14134
+ if (escalations.length === 1 && escalate[0] === this._session.userId)
14135
+ step.name = this._translate.get('EscalatedByYou', nameOf(who));
14136
+ else
14137
+ step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
14138
+ }
14139
+ else {
14140
+ if (recipient.userId === this._session.userId)
14141
+ step.name = this._translate.get('You');
14130
14142
  else {
14131
- if (recipient.userId === this._session.userId)
14132
- step.name = this._translate.get('You');
14133
- else {
14134
- let who = await profileOf(recipient.userId);
14135
- step.name = nameOf(who);
14136
- if (who.role)
14137
- step.role = who.role;
14138
- }
14143
+ let who = await profileOf(recipient.userId);
14144
+ step.name = nameOf(who);
14145
+ if (who.role)
14146
+ step.role = who.role;
14139
14147
  }
14140
14148
  }
14141
14149
  trace.push(step);
@@ -14173,10 +14181,10 @@ class TraceViewComponent extends TraceBase {
14173
14181
  }
14174
14182
  }
14175
14183
  TraceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, deps: [{ token: SessionService }, { token: TranslateService }, { token: AccountService }, { token: ChatInfo }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
14176
- TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Log' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"], components: [{ type: i7$1.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"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe, "amDurationFormat": DurationFormatPipe, "amDuration": DurationPipe, "amCalendar": CalendarPipe }, animations: [listAnimation, itemAnimation] });
14184
+ TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"], components: [{ type: i7$1.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"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe, "amDurationFormat": DurationFormatPipe, "amDuration": DurationPipe, "amCalendar": CalendarPipe }, animations: [listAnimation, itemAnimation] });
14177
14185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, decorators: [{
14178
14186
  type: Component,
14179
- args: [{ selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Log' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"] }]
14187
+ args: [{ selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"] }]
14180
14188
  }], ctorParameters: function () { return [{ type: SessionService }, { type: TranslateService }, { type: AccountService }, { type: ChatInfo }, { type: HubService }]; }, propDecorators: { model: [{
14181
14189
  type: Input
14182
14190
  }], versionSelected: [{
@@ -17231,7 +17239,7 @@ class HomeBase {
17231
17239
  this._messaging.new$.subscribe(m => {
17232
17240
  const { model: { formId: name, subject, number } } = m;
17233
17241
  const form = this._session.profile.forms.find(f => f.name === name), msg = this._translate.get('NewMail', form.title, number, subject || '');
17234
- this._snackBar.open(msg, this._translate.get('OpenNew'), {
17242
+ this._snackBar.open(msg, m.userId === this._session.profile.userId ? this._translate.get('OpenNew') : null, {
17235
17243
  duration: 5000,
17236
17244
  direction: this._session.direction,
17237
17245
  politeness: 'assertive'
@@ -26783,34 +26791,30 @@ class TraceElementComponent {
26783
26791
  this.none = log.length === 0,
26784
26792
  this.nodeType = this._session.profile.nodes.find(n => n.name === addInfo.nodeType);
26785
26793
  }
26786
- recipientInfo(recipient) {
26787
- const observables = [], observe = this._accounts.get(recipient.userId);
26788
- observables.push(observe);
26789
- const escalations = this.timeline.log.filter(l => l.time > this.timeline.startDate && l.type === 'Escalation' && l.recipientId === recipient.id);
26790
- if (escalations.length)
26791
- escalations.forEach(e => {
26792
- const observe = this._accounts.get(e.userId);
26793
- observables.push(observe);
26794
- });
26795
- else if (recipient.byId) {
26796
- const observe = this._accounts.get(recipient.byId);
26797
- observables.push(observe);
26794
+ async recipientInfo(recipient) {
26795
+ const info = [];
26796
+ const who = await this._accounts.get(recipient.userId).toPromise();
26797
+ if (recipient.escalated) {
26798
+ const escalations = this.timeline.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
26799
+ const escalate = await this._accounts.get(escalations[0].userId).toPromise();
26800
+ info.push(this._translate.get('EscalatedBy', this._chat.format(escalate), this._chat.format(who)));
26798
26801
  }
26799
26802
  if (recipient.substitutingId) {
26800
- const observe = this._accounts.get(recipient.substitutingId);
26801
- observables.push(observe);
26803
+ const substitute = await this._accounts.get(recipient.substitutingId).toPromise();
26804
+ if (recipient.byId) {
26805
+ const by = await this._accounts.get(recipient.byId).toPromise();
26806
+ info.push(this._translate.get('SubstitutingBy', this._chat.format(who), this._chat.format(substitute), this._chat.format(by)));
26807
+ }
26808
+ else
26809
+ info.push(this._translate.get('Substituting', this._chat.format(who), this._chat.format(substitute)));
26802
26810
  }
26803
- return forkJoin(observables).pipe(map(us => us.map(u => this._chat.format(u))), map(us => {
26804
- if (escalations.length)
26805
- return this._translate.get('EscalatedBy', us[0], this._translate.join(us.slice(1)));
26806
- else if (recipient.byId && recipient.substitutingId)
26807
- return this._translate.get('SubstitutingBy', us[0], us[2], us[1]);
26808
- else if (recipient.substitutingId)
26809
- return this._translate.get('Substituting', us[0], us[1]);
26810
- else if (recipient.byId)
26811
- return this._translate.get('By', us[0], us[1]);
26812
- return us[0];
26813
- }));
26811
+ else if (recipient.byId) {
26812
+ const by = await this._accounts.get(recipient.byId).toPromise();
26813
+ info.push(this._translate.get('By', this._chat.format(who), this._chat.format(by)));
26814
+ }
26815
+ else
26816
+ info.push(this._chat.format(who));
26817
+ return info.join(this._translate.comma);
26814
26818
  }
26815
26819
  logInfo(log) {
26816
26820
  const observables = [];