@memberjunction/ng-conversations 6.1.4 → 6.2.0-edge.1

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 (424) hide show
  1. package/README.md +36 -3
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
  12. package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
  14. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
  15. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  16. package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
  17. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  18. package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
  19. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
  20. package/dist/lib/components/attachment/image-viewer.component.js +181 -47
  21. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
  22. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
  23. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  24. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
  25. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  26. package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
  27. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  28. package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
  29. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  30. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
  31. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  32. package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
  33. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  34. package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
  35. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  36. package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
  37. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  38. package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
  39. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  40. package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
  41. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  42. package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
  43. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
  44. package/dist/lib/components/collection/collection-tree.component.js +220 -70
  45. package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
  46. package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
  47. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  48. package/dist/lib/components/collection/collection-view.component.js +154 -40
  49. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  50. package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
  51. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  52. package/dist/lib/components/collection/collections-full-view.component.js +951 -367
  53. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  54. package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
  55. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
  56. package/dist/lib/components/composer/ai-composer.component.js +388 -44
  57. package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
  58. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
  59. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
  60. package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
  61. package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
  62. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1090 -123
  63. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  64. package/dist/lib/components/conversation/conversation-chat-area.component.js +2407 -731
  65. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  66. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
  67. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  68. package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
  69. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  70. package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
  71. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  72. package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
  73. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  74. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +40 -4
  75. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
  76. package/dist/lib/components/conversation/pinned-messages-panel.component.js +72 -14
  77. package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
  78. package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
  79. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
  80. package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
  81. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
  82. package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
  83. package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
  84. package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
  85. package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
  86. package/dist/lib/components/export/export-modal.component.d.ts +84 -10
  87. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  88. package/dist/lib/components/export/export-modal.component.js +173 -49
  89. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  90. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
  91. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
  92. package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
  93. package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
  94. package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
  95. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  96. package/dist/lib/components/library/library-full-view.component.js +119 -35
  97. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  98. package/dist/lib/components/members/members-modal.component.d.ts +76 -10
  99. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  100. package/dist/lib/components/members/members-modal.component.js +164 -50
  101. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  102. package/dist/lib/components/message/actionable-commands.component.d.ts +37 -5
  103. package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
  104. package/dist/lib/components/message/actionable-commands.component.js +82 -16
  105. package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
  106. package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
  107. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  108. package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
  109. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  110. package/dist/lib/components/message/message-input.component.d.ts +549 -74
  111. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  112. package/dist/lib/components/message/message-input.component.js +1250 -421
  113. package/dist/lib/components/message/message-input.component.js.map +1 -1
  114. package/dist/lib/components/message/message-item.component.d.ts +411 -29
  115. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  116. package/dist/lib/components/message/message-item.component.js +896 -222
  117. package/dist/lib/components/message/message-item.component.js.map +1 -1
  118. package/dist/lib/components/message/message-list.component.d.ts +288 -29
  119. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  120. package/dist/lib/components/message/message-list.component.js +561 -123
  121. package/dist/lib/components/message/message-list.component.js.map +1 -1
  122. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
  123. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  124. package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
  125. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  126. package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
  127. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
  128. package/dist/lib/components/notification/activity-indicator.component.js +13 -3
  129. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
  130. package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
  131. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
  132. package/dist/lib/components/notification/notification-badge.component.js +36 -8
  133. package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
  134. package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
  135. package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
  136. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  137. package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
  138. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
  139. package/dist/lib/components/project/project-form-modal.component.js +348 -87
  140. package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
  141. package/dist/lib/components/project/project-selector.component.d.ts +78 -8
  142. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
  143. package/dist/lib/components/project/project-selector.component.js +177 -46
  144. package/dist/lib/components/project/project-selector.component.js.map +1 -1
  145. package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.d.ts +1 -1
  146. package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.d.ts.map +1 -1
  147. package/dist/lib/components/realtime/channels/channel-onboarding-panel.component.js.map +1 -1
  148. package/dist/lib/components/realtime/channels/client-context-channel.d.ts +1 -1
  149. package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -1
  150. package/dist/lib/components/realtime/channels/client-context-channel.js +1 -1
  151. package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -1
  152. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts +1 -1
  153. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts.map +1 -1
  154. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js +3 -0
  155. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js.map +1 -1
  156. package/dist/lib/components/realtime/media/media-channel.d.ts +2 -1
  157. package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -1
  158. package/dist/lib/components/realtime/media/media-channel.js +1 -1
  159. package/dist/lib/components/realtime/media/media-channel.js.map +1 -1
  160. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +2 -2
  161. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -1
  162. package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
  163. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  164. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +1 -1
  165. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
  166. package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
  167. package/dist/lib/components/realtime/realtime-composer.component.d.ts +3 -1
  168. package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
  169. package/dist/lib/components/realtime/realtime-composer.component.js +26 -8
  170. package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
  171. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +2 -2
  172. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -1
  173. package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
  174. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  175. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +4 -4
  176. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
  177. package/dist/lib/components/realtime/realtime-session-overlay.component.js +19 -19
  178. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  179. package/dist/lib/components/realtime/realtime-session-state.d.ts +2 -3
  180. package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
  181. package/dist/lib/components/realtime/realtime-session-state.js +3 -2
  182. package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
  183. package/dist/lib/components/realtime/realtime-session-thread.component.d.ts +17 -1
  184. package/dist/lib/components/realtime/realtime-session-thread.component.d.ts.map +1 -1
  185. package/dist/lib/components/realtime/realtime-session-thread.component.js +122 -45
  186. package/dist/lib/components/realtime/realtime-session-thread.component.js.map +1 -1
  187. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -31
  188. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
  189. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +138 -124
  190. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
  191. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +4 -4
  192. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
  193. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
  194. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  195. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +2 -2
  196. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -1
  197. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
  198. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  199. package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
  200. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
  201. package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
  202. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
  203. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts +1 -1
  204. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
  205. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +1 -1
  206. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
  207. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +4 -2
  208. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
  209. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +7 -3
  210. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
  211. package/dist/lib/components/search/search-panel.component.d.ts +133 -22
  212. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  213. package/dist/lib/components/search/search-panel.component.js +312 -83
  214. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  215. package/dist/lib/components/share/share-modal.component.d.ts +69 -9
  216. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  217. package/dist/lib/components/share/share-modal.component.js +139 -31
  218. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  219. package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
  220. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  221. package/dist/lib/components/shared/user-picker.component.js +110 -30
  222. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  223. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
  224. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  225. package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
  226. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  227. package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
  228. package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
  229. package/dist/lib/components/sidebar/routines-section.component.js +25 -5
  230. package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
  231. package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
  232. package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
  233. package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
  234. package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
  235. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
  236. package/dist/lib/components/task/tasks-full-view.component.js +223 -75
  237. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  238. package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
  239. package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
  240. package/dist/lib/components/tasks/task-widget.component.js +100 -16
  241. package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
  242. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
  243. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  244. package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
  245. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  246. package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
  247. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
  248. package/dist/lib/components/thread/thread-panel.component.js +146 -36
  249. package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
  250. package/dist/lib/components/toast/toast.component.d.ts +11 -1
  251. package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
  252. package/dist/lib/components/toast/toast.component.js +25 -5
  253. package/dist/lib/components/toast/toast.component.js.map +1 -1
  254. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
  255. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  256. package/dist/lib/components/workspace/conversation-workspace.component.js +887 -291
  257. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  258. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
  259. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
  260. package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
  261. package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
  262. package/dist/lib/conversations.module.d.ts.map +1 -1
  263. package/dist/lib/conversations.module.js.map +1 -1
  264. package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
  265. package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
  266. package/dist/lib/directives/chat-slot.directive.js.map +1 -1
  267. package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
  268. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
  269. package/dist/lib/directives/search-shortcut.directive.js +14 -4
  270. package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
  271. package/dist/lib/events/chat-events.d.ts +34 -7
  272. package/dist/lib/events/chat-events.d.ts.map +1 -1
  273. package/dist/lib/events/chat-events.js +37 -7
  274. package/dist/lib/events/chat-events.js.map +1 -1
  275. package/dist/lib/models/agent-turn.model.d.ts +103 -0
  276. package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
  277. package/dist/lib/models/agent-turn.model.js +12 -0
  278. package/dist/lib/models/agent-turn.model.js.map +1 -0
  279. package/dist/lib/models/collection-view.model.js.map +1 -1
  280. package/dist/lib/models/conversation-state.model.d.ts +8 -0
  281. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  282. package/dist/lib/models/conversation-state.model.js.map +1 -1
  283. package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
  284. package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
  285. package/dist/lib/models/lazy-artifact-info.js +98 -34
  286. package/dist/lib/models/lazy-artifact-info.js.map +1 -1
  287. package/dist/lib/services/active-tasks.service.d.ts +30 -4
  288. package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
  289. package/dist/lib/services/active-tasks.service.js +71 -19
  290. package/dist/lib/services/active-tasks.service.js.map +1 -1
  291. package/dist/lib/services/agent-state.service.d.ts +17 -1
  292. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  293. package/dist/lib/services/agent-state.service.js +48 -16
  294. package/dist/lib/services/agent-state.service.js.map +1 -1
  295. package/dist/lib/services/artifact-permission.service.d.ts +39 -0
  296. package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
  297. package/dist/lib/services/artifact-permission.service.js +152 -17
  298. package/dist/lib/services/artifact-permission.service.js.map +1 -1
  299. package/dist/lib/services/artifact-state.service.d.ts +58 -5
  300. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  301. package/dist/lib/services/artifact-state.service.js +135 -35
  302. package/dist/lib/services/artifact-state.service.js.map +1 -1
  303. package/dist/lib/services/browser-realtime-media-host.d.ts +24 -0
  304. package/dist/lib/services/browser-realtime-media-host.d.ts.map +1 -0
  305. package/dist/lib/services/browser-realtime-media-host.js +95 -0
  306. package/dist/lib/services/browser-realtime-media-host.js.map +1 -0
  307. package/dist/lib/services/collection-permission.service.d.ts +28 -0
  308. package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
  309. package/dist/lib/services/collection-permission.service.js +88 -32
  310. package/dist/lib/services/collection-permission.service.js.map +1 -1
  311. package/dist/lib/services/collection-state.service.d.ts +11 -1
  312. package/dist/lib/services/collection-state.service.d.ts.map +1 -1
  313. package/dist/lib/services/collection-state.service.js +25 -5
  314. package/dist/lib/services/collection-state.service.js.map +1 -1
  315. package/dist/lib/services/conversation-agent.service.d.ts +26 -4
  316. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  317. package/dist/lib/services/conversation-agent.service.js +57 -18
  318. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  319. package/dist/lib/services/conversation-attachment.service.d.ts +41 -2
  320. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
  321. package/dist/lib/services/conversation-attachment.service.js +80 -13
  322. package/dist/lib/services/conversation-attachment.service.js.map +1 -1
  323. package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
  324. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  325. package/dist/lib/services/conversation-streaming.service.js +50 -10
  326. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  327. package/dist/lib/services/data-cache.service.d.ts +31 -0
  328. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  329. package/dist/lib/services/data-cache.service.js +71 -15
  330. package/dist/lib/services/data-cache.service.js.map +1 -1
  331. package/dist/lib/services/dialog.service.d.ts +13 -0
  332. package/dist/lib/services/dialog.service.d.ts.map +1 -1
  333. package/dist/lib/services/dialog.service.js +25 -5
  334. package/dist/lib/services/dialog.service.js.map +1 -1
  335. package/dist/lib/services/export.service.d.ts +2 -0
  336. package/dist/lib/services/export.service.d.ts.map +1 -1
  337. package/dist/lib/services/export.service.js +5 -1
  338. package/dist/lib/services/export.service.js.map +1 -1
  339. package/dist/lib/services/graphql-attachment-blob-store.d.ts +44 -0
  340. package/dist/lib/services/graphql-attachment-blob-store.d.ts.map +1 -0
  341. package/dist/lib/services/graphql-attachment-blob-store.js +113 -0
  342. package/dist/lib/services/graphql-attachment-blob-store.js.map +1 -0
  343. package/dist/lib/services/mention-autocomplete.service.d.ts +17 -141
  344. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  345. package/dist/lib/services/mention-autocomplete.service.js +15 -460
  346. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  347. package/dist/lib/services/mention-parser.service.d.ts +10 -0
  348. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  349. package/dist/lib/services/mention-parser.service.js +25 -5
  350. package/dist/lib/services/mention-parser.service.js.map +1 -1
  351. package/dist/lib/services/notification.service.d.ts +54 -6
  352. package/dist/lib/services/notification.service.d.ts.map +1 -1
  353. package/dist/lib/services/notification.service.js +123 -27
  354. package/dist/lib/services/notification.service.js.map +1 -1
  355. package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
  356. package/dist/lib/services/realtime-audio-recorder.js +12 -12
  357. package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
  358. package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
  359. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
  360. package/dist/lib/services/realtime-pcm-wav.js +10 -2
  361. package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
  362. package/dist/lib/services/realtime-session-review.service.d.ts +1 -1
  363. package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
  364. package/dist/lib/services/realtime-session-review.service.js +1 -1
  365. package/dist/lib/services/realtime-session-review.service.js.map +1 -1
  366. package/dist/lib/services/realtime-session.service.d.ts +16 -1150
  367. package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
  368. package/dist/lib/services/realtime-session.service.js +28 -2430
  369. package/dist/lib/services/realtime-session.service.js.map +1 -1
  370. package/dist/lib/services/search.service.d.ts +42 -9
  371. package/dist/lib/services/search.service.d.ts.map +1 -1
  372. package/dist/lib/services/search.service.js +103 -23
  373. package/dist/lib/services/search.service.js.map +1 -1
  374. package/dist/lib/services/toast.service.d.ts +19 -1
  375. package/dist/lib/services/toast.service.d.ts.map +1 -1
  376. package/dist/lib/services/toast.service.js +45 -9
  377. package/dist/lib/services/toast.service.js.map +1 -1
  378. package/dist/lib/services/ui-command-handler.service.d.ts +16 -2
  379. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  380. package/dist/lib/services/ui-command-handler.service.js +36 -8
  381. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  382. package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
  383. package/dist/lib/utils/agent-artifact-summary.js +3 -3
  384. package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
  385. package/dist/lib/utils/agent-turn-routing.d.ts +69 -0
  386. package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
  387. package/dist/lib/utils/agent-turn-routing.js +96 -0
  388. package/dist/lib/utils/agent-turn-routing.js.map +1 -0
  389. package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
  390. package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
  391. package/dist/lib/utils/artifact-panel-action.js +10 -2
  392. package/dist/lib/utils/artifact-panel-action.js.map +1 -1
  393. package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
  394. package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
  395. package/dist/lib/utils/distinct-artifacts.js +5 -1
  396. package/dist/lib/utils/distinct-artifacts.js.map +1 -1
  397. package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
  398. package/dist/lib/utils/plan-mode-preference.js +6 -6
  399. package/dist/lib/utils/plan-mode-preference.js.map +1 -1
  400. package/dist/lib/utils/realtime-session-timeline.d.ts +8 -79
  401. package/dist/lib/utils/realtime-session-timeline.d.ts.map +1 -1
  402. package/dist/lib/utils/realtime-session-timeline.js +8 -89
  403. package/dist/lib/utils/realtime-session-timeline.js.map +1 -1
  404. package/dist/public-api.d.ts +5 -2
  405. package/dist/public-api.d.ts.map +1 -1
  406. package/dist/public-api.js +9 -2
  407. package/dist/public-api.js.map +1 -1
  408. package/package.json +33 -32
  409. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +0 -384
  410. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +0 -1
  411. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +0 -231
  412. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +0 -1
  413. package/dist/lib/services/delegation-result-parser.d.ts +0 -50
  414. package/dist/lib/services/delegation-result-parser.d.ts.map +0 -1
  415. package/dist/lib/services/delegation-result-parser.js +0 -60
  416. package/dist/lib/services/delegation-result-parser.js.map +0 -1
  417. package/dist/lib/services/narration-template.d.ts +0 -42
  418. package/dist/lib/services/narration-template.d.ts.map +0 -1
  419. package/dist/lib/services/narration-template.js +0 -73
  420. package/dist/lib/services/narration-template.js.map +0 -1
  421. package/dist/lib/services/skill-picker-narrowing.d.ts +0 -13
  422. package/dist/lib/services/skill-picker-narrowing.d.ts.map +0 -1
  423. package/dist/lib/services/skill-picker-narrowing.js +0 -13
  424. package/dist/lib/services/skill-picker-narrowing.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-full-view.component.js","sourceRoot":"","sources":["../../../../src/lib/components/task/tasks-full-view.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nimport { UserInfo, RunView } from '@memberjunction/core';\nimport { MJTaskEntity, MJTaskDependencyEntity, MJAIAgentRunEntity } from '@memberjunction/core-entities';\nimport { TaskComponent } from '@memberjunction/ng-tasks';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Full-page tasks view with task list and Gantt chart\n * Generic component that displays tasks based on provided filter\n * Supports drilling into individual tasks to see sub-tasks\n */\n@Component({\n selector: 'mj-tasks-full-view',\n standalone: true,\n imports: [TaskComponent],\n template: `\n <div class=\"tasks-full-view\">\n @if (!selectedTask) {\n <!-- Task List View -->\n <mj-task\n [tasks]=\"filteredTasks\"\n [title]=\"'Tasks'\"\n [description]=\"getDescription()\"\n [showHeader]=\"true\"\n [showViewToggle]=\"false\"\n [viewMode]=\"'simple'\"\n (taskClicked)=\"onTaskClick($event)\">\n </mj-task>\n } @else {\n <!-- Task Detail View with Sub-tasks -->\n <div class=\"task-detail-view\" [class.swoosh-in]=\"showDetailAnimation\">\n <!-- Breadcrumb -->\n <div class=\"breadcrumb-nav\">\n <button class=\"breadcrumb-back\" (click)=\"backToTaskList()\">\n <i class=\"fas fa-arrow-left\"></i>\n <span>Back to Tasks</span>\n </button>\n <div class=\"breadcrumb-divider\">/</div>\n <span class=\"breadcrumb-current\">{{ selectedTask.Name }}</span>\n </div>\n\n <!-- Task Details & Sub-tasks with Gantt Toggle -->\n <mj-task\n [tasks]=\"subTasks\"\n [ganttTasks]=\"subTasksWithParent\"\n [taskDependencies]=\"taskDependencies\"\n [agentRunMap]=\"agentRunMap\"\n [title]=\"selectedTask.Name\"\n [description]=\"getTaskDetailDescription()\"\n [showHeader]=\"true\"\n [showViewToggle]=\"true\"\n [viewMode]=\"'gantt'\"\n (taskClicked)=\"onSubTaskClick($event)\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\">\n </mj-task>\n </div>\n }\n </div>\n `,\n styles: [`\n .tasks-full-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n }\n\n .task-detail-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n }\n\n .swoosh-in {\n animation: swooshIn 0.3s ease-out;\n }\n\n @keyframes swooshIn {\n from {\n opacity: 0;\n transform: translateX(50px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n .breadcrumb-nav {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .breadcrumb-back {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .breadcrumb-back:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-text-disabled);\n }\n\n .breadcrumb-back i {\n font-size: 12px;\n }\n\n .breadcrumb-divider {\n color: var(--mj-text-disabled);\n font-size: 14px;\n }\n\n .breadcrumb-current {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n `]\n})\nexport class TasksFullViewComponent extends BaseAngularComponent implements OnInit, OnChanges {\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n @Input() baseFilter: string = '1=1'; // SQL filter for tasks (default: show all)\n @Input() activeTaskId?: string; // Task ID to auto-select and drill into\n @Output() openEntityRecord = new EventEmitter<{ entityName: string; recordId: string }>();\n @Output() taskSelected = new EventEmitter<string | null>(); // Emits task ID when drill-down occurs, null when returning to list\n\n public allTasks: MJTaskEntity[] = [];\n public filteredTasks: MJTaskEntity[] = [];\n public subTasks: MJTaskEntity[] = [];\n public subTasksWithParent: MJTaskEntity[] = []; // Includes parent for Gantt hierarchy\n public taskDependencies: MJTaskDependencyEntity[] = []; // Dependencies for Gantt links\n public agentRunMap = new Map<string, string>(); // Maps TaskID -> AgentRunID\n public selectedTask: MJTaskEntity | null = null;\n public showDetailAnimation: boolean = false;\n public isLoading: boolean = false;\n private aiEngineConfigured: boolean = false;\n\n ngOnInit() {\n this.loadTasks();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Reload tasks if baseFilter changes\n if (changes['baseFilter'] && !changes['baseFilter'].firstChange) {\n this.loadTasks();\n }\n\n // Auto-drill into task if activeTaskId changes\n if (changes['activeTaskId'] && this.activeTaskId) {\n const task = this.allTasks.find(t => UUIDsEqual(t.ID, this.activeTaskId));\n if (task) {\n this.onTaskClick(task);\n }\n }\n }\n\n public async loadTasks(): Promise<void> {\n this.isLoading = true;\n\n try {\n // Configure AIEngineBase on first load (false = don't force refresh)\n if (!this.aiEngineConfigured) {\n await AIEngineBase.Instance.Config(false);\n this.aiEngineConfigured = true;\n }\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n console.log('📝 Tasks filter SQL:', this.baseFilter);\n\n // Load all tasks with the provided filter\n const tasksResult = await rv.RunView<MJTaskEntity>(\n {\n EntityName: 'MJ: Tasks',\n ExtraFilter: this.baseFilter,\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n },\n this.currentUser\n );\n\n console.log('📊 Tasks query result:', {\n success: tasksResult.Success,\n resultCount: tasksResult.Results?.length || 0,\n errorMessage: tasksResult.ErrorMessage\n });\n\n if (tasksResult.Success) {\n this.allTasks = tasksResult.Results || [];\n this.filteredTasks = this.allTasks;\n console.log(`📋 Loaded ${this.allTasks.length} tasks`);\n if (this.allTasks.length === 0) {\n console.log('💡 No tasks found with current filter');\n } else {\n console.log('✅ Sample task:', {\n id: this.allTasks[0].ID,\n name: this.allTasks[0].Name,\n status: this.allTasks[0].Status,\n conversationDetailID: this.allTasks[0].ConversationDetailID\n });\n }\n } else {\n console.error('❌ Failed to load tasks:', tasksResult.ErrorMessage);\n this.allTasks = [];\n this.filteredTasks = [];\n }\n } catch (error) {\n console.error('Failed to load tasks:', error);\n this.allTasks = [];\n this.filteredTasks = [];\n } finally {\n this.isLoading = false;\n }\n }\n\n public async onTaskClick(task: MJTaskEntity): Promise<void> {\n console.log('Task clicked:', task);\n this.selectedTask = task;\n this.showDetailAnimation = true;\n\n // Emit task selection event for URL tracking\n this.taskSelected.emit(task.ID);\n\n // Load all tasks in the hierarchy using RootParentID\n await this.loadTaskHierarchy(task);\n }\n\n private async loadTaskHierarchy(task: MJTaskEntity): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Use RootParentID to load all tasks in this hierarchy\n // If task has no RootParentID, it's the root itself, so use its ID\n const rootId = task.RootParentID || task.ID;\n\n // Load all tasks where RootParentID matches, or tasks that are the root itself\n const hierarchyResult = await rv.RunView<MJTaskEntity>(\n {\n EntityName: 'MJ: Tasks',\n ExtraFilter: `RootParentID='${rootId}' OR ID='${rootId}'`,\n OrderBy: '__mj_CreatedAt ASC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n },\n this.currentUser\n );\n\n if (hierarchyResult.Success) {\n const allHierarchy = hierarchyResult.Results || [];\n\n // For list view: Filter out the clicked task itself - only show its children/descendants\n this.subTasks = allHierarchy.filter(t => !UUIDsEqual(t.ID, task.ID));\n\n // For Gantt view: Include the parent task so hierarchy works correctly\n this.subTasksWithParent = allHierarchy;\n\n console.log(`📋 Loaded ${this.subTasks.length} tasks in hierarchy for root ${rootId}`);\n\n // Load task dependencies for this hierarchy\n await this.loadTaskDependencies(rootId);\n\n // Load agent runs for this hierarchy\n this.loadAgentRuns(allHierarchy);\n } else {\n console.error('❌ Failed to load task hierarchy:', hierarchyResult.ErrorMessage);\n this.subTasks = [];\n this.subTasksWithParent = [];\n this.taskDependencies = [];\n }\n } catch (error) {\n console.error('Failed to load task hierarchy:', error);\n this.subTasks = [];\n }\n }\n\n private async loadTaskDependencies(rootId: string): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Load task dependencies where either TaskID or DependsOnTaskID is in this hierarchy\n // Use subquery to find all tasks with this RootParentID\n // Note: Using __mj as the default schema - this is the standard MJ schema\n const schema = '__mj';\n const depsResult = await rv.RunView<MJTaskDependencyEntity>(\n {\n EntityName: 'MJ: Task Dependencies',\n ExtraFilter: `\n TaskID IN (SELECT ID FROM [${schema}].[vwTasks] WHERE RootParentID='${rootId}' OR ID='${rootId}')\n OR\n DependsOnTaskID IN (SELECT ID FROM [${schema}].[vwTasks] WHERE RootParentID='${rootId}' OR ID='${rootId}')\n `,\n ResultType: 'entity_object'\n },\n this.currentUser\n );\n\n if (depsResult.Success) {\n this.taskDependencies = depsResult.Results || [];\n console.log(`🔗 Loaded ${this.taskDependencies.length} task dependencies`);\n } else {\n console.error('❌ Failed to load task dependencies:', depsResult.ErrorMessage);\n this.taskDependencies = [];\n }\n } catch (error) {\n console.error('Failed to load task dependencies:', error);\n this.taskDependencies = [];\n }\n }\n\n /**\n * Builds the TaskID -> AgentRunID map from each task's own AgentRunID column.\n *\n * Previously this joined tasks to runs through the shared ConversationDetailID, which meant\n * every sibling task in a graph resolved to the SAME agent run — the run link in the Gantt\n * and detail panel was wrong for all but one task. Each task now records the specific run\n * that executed it (Task.AgentRunID), so the mapping is direct and needs no query at all.\n */\n private loadAgentRuns(tasks: MJTaskEntity[]): void {\n this.agentRunMap.clear();\n for (const task of tasks) {\n if (task.AgentRunID) {\n this.agentRunMap.set(task.ID, task.AgentRunID);\n }\n }\n }\n\n public backToTaskList(): void {\n this.selectedTask = null;\n this.subTasks = [];\n this.subTasksWithParent = [];\n this.taskDependencies = [];\n this.agentRunMap.clear();\n this.showDetailAnimation = false;\n\n // Emit null to indicate returning to task list (for URL tracking)\n this.taskSelected.emit(null);\n }\n\n public onSubTaskClick(subTask: MJTaskEntity): void {\n console.log('Sub-task clicked:', subTask);\n // Could drill down further if needed\n }\n\n public onOpenEntityRecord(event: { entityName: string; recordId: string }): void {\n // Bubble up the event to parent component\n this.openEntityRecord.emit(event);\n }\n\n public getDescription(): string {\n const activeCount = this.allTasks.filter(t => t.Status === 'Pending' || t.Status === 'In Progress').length;\n const completedCount = this.allTasks.filter(t => t.Status === 'Complete').length;\n return `${activeCount} active, ${completedCount} completed, ${this.allTasks.length} total`;\n }\n\n public getTaskDetailDescription(): string {\n if (this.subTasks.length === 0) {\n return 'No sub-tasks';\n }\n const activeCount = this.subTasks.filter(t => t.Status === 'Pending' || t.Status === 'In Progress').length;\n const completedCount = this.subTasks.filter(t => t.Status === 'Complete').length;\n return `${activeCount} active, ${completedCount} completed, ${this.subTasks.length} sub-tasks`;\n }\n}\n"]}
1
+ {"version":3,"file":"tasks-full-view.component.js","sourceRoot":"","sources":["../../../../src/lib/components/task/tasks-full-view.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nimport { UserInfo, RunView } from '@memberjunction/core';\nimport { MJTaskEntity, MJTaskDependencyEntity, MJAIAgentRunEntity } from '@memberjunction/core-entities';\nimport { TaskComponent } from '@memberjunction/ng-tasks';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Full-page tasks view with task list and Gantt chart\n * Generic component that displays tasks based on provided filter\n * Supports drilling into individual tasks to see sub-tasks\n */\n@Component({\n selector: 'mj-tasks-full-view',\n standalone: true,\n imports: [TaskComponent],\n template: `\n <div class=\"tasks-full-view\">\n @if (!selectedTask) {\n <!-- Task List View -->\n <mj-task\n [tasks]=\"filteredTasks\"\n [title]=\"'Tasks'\"\n [description]=\"getDescription()\"\n [showHeader]=\"true\"\n [showViewToggle]=\"false\"\n [viewMode]=\"'simple'\"\n (taskClicked)=\"onTaskClick($event)\">\n </mj-task>\n } @else {\n <!-- Task Detail View with Sub-tasks -->\n <div class=\"task-detail-view\" [class.swoosh-in]=\"showDetailAnimation\">\n <!-- Breadcrumb -->\n <div class=\"breadcrumb-nav\">\n <button class=\"breadcrumb-back\" (click)=\"backToTaskList()\">\n <i class=\"fas fa-arrow-left\"></i>\n <span>Back to Tasks</span>\n </button>\n <div class=\"breadcrumb-divider\">/</div>\n <span class=\"breadcrumb-current\">{{ selectedTask.Name }}</span>\n </div>\n\n <!-- Task Details & Sub-tasks with Gantt Toggle -->\n <mj-task\n [tasks]=\"subTasks\"\n [ganttTasks]=\"subTasksWithParent\"\n [taskDependencies]=\"taskDependencies\"\n [agentRunMap]=\"agentRunMap\"\n [title]=\"selectedTask.Name\"\n [description]=\"getTaskDetailDescription()\"\n [showHeader]=\"true\"\n [showViewToggle]=\"true\"\n [viewMode]=\"'gantt'\"\n (taskClicked)=\"onSubTaskClick($event)\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\">\n </mj-task>\n </div>\n }\n </div>\n `,\n styles: [`\n .tasks-full-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n }\n\n .task-detail-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n }\n\n .swoosh-in {\n animation: swooshIn 0.3s ease-out;\n }\n\n @keyframes swooshIn {\n from {\n opacity: 0;\n transform: translateX(50px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n .breadcrumb-nav {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .breadcrumb-back {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .breadcrumb-back:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-text-disabled);\n }\n\n .breadcrumb-back i {\n font-size: 12px;\n }\n\n .breadcrumb-divider {\n color: var(--mj-text-disabled);\n font-size: 14px;\n }\n\n .breadcrumb-current {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n `]\n})\nexport class TasksFullViewComponent extends BaseAngularComponent implements OnInit, OnChanges {\n @Input() EnvironmentId!: string;\n\n /** @deprecated Use {@link EnvironmentId}. */\n @Input() set environmentId(value: string) {\n this.EnvironmentId = value;\n }\n /** @deprecated Use {@link EnvironmentId}. */\n get environmentId(): string {\n return this.EnvironmentId;\n }\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n @Input() BaseFilter: string = '1=1';\n\n /** @deprecated Use {@link BaseFilter}. */\n @Input() set baseFilter(value: string) {\n this.BaseFilter = value;\n }\n /** @deprecated Use {@link BaseFilter}. */\n get baseFilter(): string {\n return this.BaseFilter;\n } // SQL filter for tasks (default: show all)\n @Input() ActiveTaskId?: string;\n\n /** @deprecated Use {@link ActiveTaskId}. */\n @Input() set activeTaskId(value: string | undefined) {\n this.ActiveTaskId = value;\n }\n /** @deprecated Use {@link ActiveTaskId}. */\n get activeTaskId(): string | undefined {\n return this.ActiveTaskId;\n } // Task ID to auto-select and drill into\n @Output() OpenEntityRecord = new EventEmitter<{ entityName: string; recordId: string }>();\n\n /**\n * @deprecated Use {@link OpenEntityRecord}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (openEntityRecord) keeps working. Must stay AFTER OpenEntityRecord: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() openEntityRecord = this.OpenEntityRecord;\n @Output() TaskSelected = new EventEmitter<string | null>();\n\n /**\n * @deprecated Use {@link TaskSelected}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (taskSelected) keeps working. Must stay AFTER TaskSelected: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() taskSelected = this.TaskSelected; // Emits task ID when drill-down occurs, null when returning to list\n\n public AllTasks: MJTaskEntity[] = [];\n\n /** @deprecated Use {@link AllTasks}. */\n public get allTasks(): MJTaskEntity[] {\n return this.AllTasks;\n }\n /** @deprecated Use {@link AllTasks}. */\n public set allTasks(value: MJTaskEntity[]) {\n this.AllTasks = value;\n }\n public FilteredTasks: MJTaskEntity[] = [];\n\n /** @deprecated Use {@link FilteredTasks}. */\n public get filteredTasks(): MJTaskEntity[] {\n return this.FilteredTasks;\n }\n /** @deprecated Use {@link FilteredTasks}. */\n public set filteredTasks(value: MJTaskEntity[]) {\n this.FilteredTasks = value;\n }\n public SubTasks: MJTaskEntity[] = [];\n\n /** @deprecated Use {@link SubTasks}. */\n public get subTasks(): MJTaskEntity[] {\n return this.SubTasks;\n }\n /** @deprecated Use {@link SubTasks}. */\n public set subTasks(value: MJTaskEntity[]) {\n this.SubTasks = value;\n }\n public SubTasksWithParent: MJTaskEntity[] = [];\n\n /** @deprecated Use {@link SubTasksWithParent}. */\n public get subTasksWithParent(): MJTaskEntity[] {\n return this.SubTasksWithParent;\n }\n /** @deprecated Use {@link SubTasksWithParent}. */\n public set subTasksWithParent(value: MJTaskEntity[]) {\n this.SubTasksWithParent = value;\n } // Includes parent for Gantt hierarchy\n public TaskDependencies: MJTaskDependencyEntity[] = [];\n\n /** @deprecated Use {@link TaskDependencies}. */\n public get taskDependencies(): MJTaskDependencyEntity[] {\n return this.TaskDependencies;\n }\n /** @deprecated Use {@link TaskDependencies}. */\n public set taskDependencies(value: MJTaskDependencyEntity[]) {\n this.TaskDependencies = value;\n } // Dependencies for Gantt links\n public AgentRunMap = new Map<string, string>();\n\n /** @deprecated Use {@link AgentRunMap}. */\n public get agentRunMap() {\n return this.AgentRunMap;\n }\n /** @deprecated Use {@link AgentRunMap}. */\n public set agentRunMap(value) {\n this.AgentRunMap = value;\n } // Maps TaskID -> AgentRunID\n public SelectedTask: MJTaskEntity | null = null;\n\n /** @deprecated Use {@link SelectedTask}. */\n public get selectedTask(): MJTaskEntity | null {\n return this.SelectedTask;\n }\n /** @deprecated Use {@link SelectedTask}. */\n public set selectedTask(value: MJTaskEntity | null) {\n this.SelectedTask = value;\n }\n public ShowDetailAnimation: boolean = false;\n\n /** @deprecated Use {@link ShowDetailAnimation}. */\n public get showDetailAnimation(): boolean {\n return this.ShowDetailAnimation;\n }\n /** @deprecated Use {@link ShowDetailAnimation}. */\n public set showDetailAnimation(value: boolean) {\n this.ShowDetailAnimation = value;\n }\n public isLoading: boolean = false;\n private aiEngineConfigured: boolean = false;\n\n ngOnInit() {\n this.LoadTasks();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Reload tasks if baseFilter changes\n if (changes['baseFilter'] && !changes['baseFilter'].firstChange) {\n this.LoadTasks();\n }\n\n // Auto-drill into task if activeTaskId changes\n if (changes['activeTaskId'] && this.ActiveTaskId) {\n const task = this.AllTasks.find(t => UUIDsEqual(t.ID, this.ActiveTaskId));\n if (task) {\n this.OnTaskClick(task);\n }\n }\n }\n\n public async LoadTasks(): Promise<void> {\n this.isLoading = true;\n\n try {\n // Configure AIEngineBase on first load (false = don't force refresh)\n if (!this.aiEngineConfigured) {\n await AIEngineBase.Instance.Config(false);\n this.aiEngineConfigured = true;\n }\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n console.log('📝 Tasks filter SQL:', this.BaseFilter);\n\n // Load all tasks with the provided filter\n const tasksResult = await rv.RunView<MJTaskEntity>(\n {\n EntityName: 'MJ: Tasks',\n ExtraFilter: this.BaseFilter,\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n },\n this.CurrentUser\n );\n\n console.log('📊 Tasks query result:', {\n success: tasksResult.Success,\n resultCount: tasksResult.Results?.length || 0,\n errorMessage: tasksResult.ErrorMessage\n });\n\n if (tasksResult.Success) {\n this.AllTasks = tasksResult.Results || [];\n this.FilteredTasks = this.AllTasks;\n console.log(`📋 Loaded ${this.AllTasks.length} tasks`);\n if (this.AllTasks.length === 0) {\n console.log('💡 No tasks found with current filter');\n } else {\n console.log('✅ Sample task:', {\n id: this.AllTasks[0].ID,\n name: this.AllTasks[0].Name,\n status: this.AllTasks[0].Status,\n conversationDetailID: this.AllTasks[0].ConversationDetailID\n });\n }\n } else {\n console.error('❌ Failed to load tasks:', tasksResult.ErrorMessage);\n this.AllTasks = [];\n this.FilteredTasks = [];\n }\n } catch (error) {\n console.error('Failed to load tasks:', error);\n this.AllTasks = [];\n this.FilteredTasks = [];\n } finally {\n this.isLoading = false;\n }\n }\n\n /** @deprecated Use {@link LoadTasks}. */\n public async loadTasks(): Promise<void> {\n return this.LoadTasks();\n }\n\n public async OnTaskClick(task: MJTaskEntity): Promise<void> {\n console.log('Task clicked:', task);\n this.SelectedTask = task;\n this.ShowDetailAnimation = true;\n\n // Emit task selection event for URL tracking\n this.TaskSelected.emit(task.ID);\n\n // Load all tasks in the hierarchy using RootParentID\n await this.loadTaskHierarchy(task);\n }\n\n /** @deprecated Use {@link OnTaskClick}. */\n public async onTaskClick(task: MJTaskEntity): Promise<void> {\n return this.OnTaskClick(task);\n }\n\n private async loadTaskHierarchy(task: MJTaskEntity): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Use RootParentID to load all tasks in this hierarchy\n // If task has no RootParentID, it's the root itself, so use its ID\n const rootId = task.RootParentID || task.ID;\n\n // Load all tasks where RootParentID matches, or tasks that are the root itself\n const hierarchyResult = await rv.RunView<MJTaskEntity>(\n {\n EntityName: 'MJ: Tasks',\n ExtraFilter: `RootParentID='${rootId}' OR ID='${rootId}'`,\n OrderBy: '__mj_CreatedAt ASC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n },\n this.CurrentUser\n );\n\n if (hierarchyResult.Success) {\n const allHierarchy = hierarchyResult.Results || [];\n\n // For list view: Filter out the clicked task itself - only show its children/descendants\n this.SubTasks = allHierarchy.filter(t => !UUIDsEqual(t.ID, task.ID));\n\n // For Gantt view: Include the parent task so hierarchy works correctly\n this.SubTasksWithParent = allHierarchy;\n\n console.log(`📋 Loaded ${this.SubTasks.length} tasks in hierarchy for root ${rootId}`);\n\n // Load task dependencies for this hierarchy\n await this.loadTaskDependencies(rootId);\n\n // Load agent runs for this hierarchy\n this.loadAgentRuns(allHierarchy);\n } else {\n console.error('❌ Failed to load task hierarchy:', hierarchyResult.ErrorMessage);\n this.SubTasks = [];\n this.SubTasksWithParent = [];\n this.TaskDependencies = [];\n }\n } catch (error) {\n console.error('Failed to load task hierarchy:', error);\n this.SubTasks = [];\n }\n }\n\n private async loadTaskDependencies(rootId: string): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Load task dependencies where either TaskID or DependsOnTaskID is in this hierarchy\n // Use subquery to find all tasks with this RootParentID\n // Note: Using __mj as the default schema - this is the standard MJ schema\n const schema = '__mj';\n const depsResult = await rv.RunView<MJTaskDependencyEntity>(\n {\n EntityName: 'MJ: Task Dependencies',\n ExtraFilter: `\n TaskID IN (SELECT ID FROM [${schema}].[vwTasks] WHERE RootParentID='${rootId}' OR ID='${rootId}')\n OR\n DependsOnTaskID IN (SELECT ID FROM [${schema}].[vwTasks] WHERE RootParentID='${rootId}' OR ID='${rootId}')\n `,\n ResultType: 'entity_object'\n },\n this.CurrentUser\n );\n\n if (depsResult.Success) {\n this.TaskDependencies = depsResult.Results || [];\n console.log(`🔗 Loaded ${this.TaskDependencies.length} task dependencies`);\n } else {\n console.error('❌ Failed to load task dependencies:', depsResult.ErrorMessage);\n this.TaskDependencies = [];\n }\n } catch (error) {\n console.error('Failed to load task dependencies:', error);\n this.TaskDependencies = [];\n }\n }\n\n /**\n * Builds the TaskID -> AgentRunID map from each task's own AgentRunID column.\n *\n * Previously this joined tasks to runs through the shared ConversationDetailID, which meant\n * every sibling task in a graph resolved to the SAME agent run — the run link in the Gantt\n * and detail panel was wrong for all but one task. Each task now records the specific run\n * that executed it (Task.AgentRunID), so the mapping is direct and needs no query at all.\n */\n private loadAgentRuns(tasks: MJTaskEntity[]): void {\n this.AgentRunMap.clear();\n for (const task of tasks) {\n if (task.AgentRunID) {\n this.AgentRunMap.set(task.ID, task.AgentRunID);\n }\n }\n }\n\n public BackToTaskList(): void {\n this.SelectedTask = null;\n this.SubTasks = [];\n this.SubTasksWithParent = [];\n this.TaskDependencies = [];\n this.AgentRunMap.clear();\n this.ShowDetailAnimation = false;\n\n // Emit null to indicate returning to task list (for URL tracking)\n this.TaskSelected.emit(null);\n }\n\n /** @deprecated Use {@link BackToTaskList}. */\n public backToTaskList(): void {\n return this.BackToTaskList();\n }\n\n public OnSubTaskClick(subTask: MJTaskEntity): void {\n console.log('Sub-task clicked:', subTask);\n // Could drill down further if needed\n }\n\n /** @deprecated Use {@link OnSubTaskClick}. */\n public onSubTaskClick(subTask: MJTaskEntity): void {\n return this.OnSubTaskClick(subTask);\n }\n\n public OnOpenEntityRecord(event: { entityName: string; recordId: string }): void {\n // Bubble up the event to parent component\n this.OpenEntityRecord.emit(event);\n }\n\n /** @deprecated Use {@link OnOpenEntityRecord}. */\n public onOpenEntityRecord(event: { entityName: string; recordId: string }): void {\n return this.OnOpenEntityRecord(event);\n }\n\n public getDescription(): string {\n const activeCount = this.AllTasks.filter(t => t.Status === 'Pending' || t.Status === 'In Progress').length;\n const completedCount = this.AllTasks.filter(t => t.Status === 'Complete').length;\n return `${activeCount} active, ${completedCount} completed, ${this.AllTasks.length} total`;\n }\n\n public GetTaskDetailDescription(): string {\n if (this.SubTasks.length === 0) {\n return 'No sub-tasks';\n }\n const activeCount = this.SubTasks.filter(t => t.Status === 'Pending' || t.Status === 'In Progress').length;\n const completedCount = this.SubTasks.filter(t => t.Status === 'Complete').length;\n return `${activeCount} active, ${completedCount} completed, ${this.SubTasks.length} sub-tasks`;\n }\n\n /** @deprecated Use {@link GetTaskDetailDescription}. */\n public getTaskDetailDescription(): string {\n return this.GetTaskDetailDescription();\n }\n}\n"]}
@@ -11,19 +11,59 @@ import * as i0 from "@angular/core";
11
11
  * - Tasks tab (full task list with filters)
12
12
  */
13
13
  export declare class TaskWidgetComponent {
14
- task: MJTaskEntity;
15
- clickable: boolean;
16
- compact: boolean;
17
- showProgress: boolean;
18
- showDuration: boolean;
14
+ Task: MJTaskEntity;
15
+ /** @deprecated Use {@link Task}. */
16
+ set task(value: MJTaskEntity);
17
+ /** @deprecated Use {@link Task}. */
18
+ get task(): MJTaskEntity;
19
+ Clickable: boolean;
20
+ /** @deprecated Use {@link Clickable}. */
21
+ set clickable(value: boolean);
22
+ /** @deprecated Use {@link Clickable}. */
23
+ get clickable(): boolean;
24
+ Compact: boolean;
25
+ /** @deprecated Use {@link Compact}. */
26
+ set compact(value: boolean);
27
+ /** @deprecated Use {@link Compact}. */
28
+ get compact(): boolean;
29
+ ShowProgress: boolean;
30
+ /** @deprecated Use {@link ShowProgress}. */
31
+ set showProgress(value: boolean);
32
+ /** @deprecated Use {@link ShowProgress}. */
33
+ get showProgress(): boolean;
34
+ ShowDuration: boolean;
35
+ /** @deprecated Use {@link ShowDuration}. */
36
+ set showDuration(value: boolean);
37
+ /** @deprecated Use {@link ShowDuration}. */
38
+ get showDuration(): boolean;
39
+ TaskClick: EventEmitter<MJTaskEntity>;
40
+ /**
41
+ * @deprecated Use {@link TaskClick}.
42
+ *
43
+ * The same emitter under the old binding name, so a template still binding
44
+ * (taskClick) keeps working. Must stay AFTER TaskClick: class fields
45
+ * initialise in order, and the other way round this captures undefined.
46
+ */
19
47
  taskClick: EventEmitter<MJTaskEntity>;
48
+ get IsActive(): boolean;
49
+ /** @deprecated Use {@link IsActive}. */
20
50
  get isActive(): boolean;
51
+ OnTaskClick(): void;
52
+ /** @deprecated Use {@link OnTaskClick}. */
21
53
  onTaskClick(): void;
54
+ FormatDate(date: Date | null): string;
55
+ /** @deprecated Use {@link FormatDate}. */
22
56
  formatDate(date: Date | null): string;
57
+ IsOverdue(dueDate: Date | null): boolean;
58
+ /** @deprecated Use {@link IsOverdue}. */
23
59
  isOverdue(dueDate: Date | null): boolean;
60
+ GetDuration(start: Date | null, end: Date | null): string;
61
+ /** @deprecated Use {@link GetDuration}. */
24
62
  getDuration(start: Date | null, end: Date | null): string;
63
+ GetElapsedTime(start: Date | null): string;
64
+ /** @deprecated Use {@link GetElapsedTime}. */
25
65
  getElapsedTime(start: Date | null): string;
26
66
  static ɵfac: i0.ɵɵFactoryDeclaration<TaskWidgetComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<TaskWidgetComponent, "mj-task-widget", never, { "task": { "alias": "task"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "showProgress": { "alias": "showProgress"; "required": false; }; "showDuration": { "alias": "showDuration"; "required": false; }; }, { "taskClick": "taskClick"; }, never, never, false, never>;
67
+ static ɵcmp: i0.ɵɵComponentDeclaration<TaskWidgetComponent, "mj-task-widget", never, { "Task": { "alias": "Task"; "required": false; }; "task": { "alias": "task"; "required": false; }; "Clickable": { "alias": "Clickable"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "Compact": { "alias": "Compact"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "ShowProgress": { "alias": "ShowProgress"; "required": false; }; "showProgress": { "alias": "showProgress"; "required": false; }; "ShowDuration": { "alias": "ShowDuration"; "required": false; }; "showDuration": { "alias": "showDuration"; "required": false; }; }, { "TaskClick": "TaskClick"; "taskClick": "taskClick"; }, never, never, false, never>;
28
68
  }
29
69
  //# sourceMappingURL=task-widget.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-widget.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/tasks/task-widget.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;;AAE7D;;;;;;;;GAQG;AACH,qBAkVa,mBAAmB;IACrB,IAAI,EAAG,YAAY,CAAC;IACpB,SAAS,EAAE,OAAO,CAAS;IAC3B,OAAO,EAAE,OAAO,CAAS;IACzB,YAAY,EAAE,OAAO,CAAQ;IAC7B,YAAY,EAAE,OAAO,CAAQ;IAC5B,SAAS,6BAAoC;IAEvD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,WAAW,IAAI,IAAI;IAMnB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IA6BrC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO;IAKxC,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IA2BzD,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;yCA/E/B,mBAAmB;2CAAnB,mBAAmB;CAoG/B"}
1
+ {"version":3,"file":"task-widget.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/tasks/task-widget.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;;AAE7D;;;;;;;;GAQG;AACH,qBAkVa,mBAAmB;IACrB,IAAI,EAAG,YAAY,CAAC;IAE7B,oCAAoC;IACpC,IAAa,IAAI,CAAC,KAAK,EAAE,YAAY,EAEpC;IACD,oCAAoC;IACpC,IAAI,IAAI,IAAI,YAAY,CAEvB;IACQ,SAAS,EAAE,OAAO,CAAS;IAEpC,yCAAyC;IACzC,IAAa,SAAS,CAAC,KAAK,EAAE,OAAO,EAEpC;IACD,yCAAyC;IACzC,IAAI,SAAS,IAAI,OAAO,CAEvB;IACQ,OAAO,EAAE,OAAO,CAAS;IAElC,uCAAuC;IACvC,IAAa,OAAO,CAAC,KAAK,EAAE,OAAO,EAElC;IACD,uCAAuC;IACvC,IAAI,OAAO,IAAI,OAAO,CAErB;IACQ,YAAY,EAAE,OAAO,CAAQ;IAEtC,4CAA4C;IAC5C,IAAa,YAAY,CAAC,KAAK,EAAE,OAAO,EAEvC;IACD,4CAA4C;IAC5C,IAAI,YAAY,IAAI,OAAO,CAE1B;IACQ,YAAY,EAAE,OAAO,CAAQ;IAEtC,4CAA4C;IAC5C,IAAa,YAAY,CAAC,KAAK,EAAE,OAAO,EAEvC;IACD,4CAA4C;IAC5C,IAAI,YAAY,IAAI,OAAO,CAE1B;IACS,SAAS,6BAAoC;IAEvD;;;;;;OAMG;IACO,SAAS,6BAAkB;IAErC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,wCAAwC;IACxC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,WAAW,IAAI,IAAI;IAMnB,2CAA2C;IAC3C,WAAW,IAAI,IAAI;IAInB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IA6BrC,0CAA0C;IAC1C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IAIrC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO;IAKxC,yCAAyC;IACzC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO;IAIxC,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IA2BzD,2CAA2C;IAC3C,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IAIzD,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IAsB1C,8CAA8C;IAC9C,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;yCArL/B,mBAAmB;2CAAnB,mBAAmB;CAwL/B"}
@@ -140,21 +140,77 @@ function TaskWidgetComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
140
140
  * - Tasks tab (full task list with filters)
141
141
  */
142
142
  export class TaskWidgetComponent {
143
- task;
144
- clickable = false;
145
- compact = false;
146
- showProgress = true;
147
- showDuration = true;
148
- taskClick = new EventEmitter();
143
+ Task;
144
+ /** @deprecated Use {@link Task}. */
145
+ set task(value) {
146
+ this.Task = value;
147
+ }
148
+ /** @deprecated Use {@link Task}. */
149
+ get task() {
150
+ return this.Task;
151
+ }
152
+ Clickable = false;
153
+ /** @deprecated Use {@link Clickable}. */
154
+ set clickable(value) {
155
+ this.Clickable = value;
156
+ }
157
+ /** @deprecated Use {@link Clickable}. */
158
+ get clickable() {
159
+ return this.Clickable;
160
+ }
161
+ Compact = false;
162
+ /** @deprecated Use {@link Compact}. */
163
+ set compact(value) {
164
+ this.Compact = value;
165
+ }
166
+ /** @deprecated Use {@link Compact}. */
167
+ get compact() {
168
+ return this.Compact;
169
+ }
170
+ ShowProgress = true;
171
+ /** @deprecated Use {@link ShowProgress}. */
172
+ set showProgress(value) {
173
+ this.ShowProgress = value;
174
+ }
175
+ /** @deprecated Use {@link ShowProgress}. */
176
+ get showProgress() {
177
+ return this.ShowProgress;
178
+ }
179
+ ShowDuration = true;
180
+ /** @deprecated Use {@link ShowDuration}. */
181
+ set showDuration(value) {
182
+ this.ShowDuration = value;
183
+ }
184
+ /** @deprecated Use {@link ShowDuration}. */
185
+ get showDuration() {
186
+ return this.ShowDuration;
187
+ }
188
+ TaskClick = new EventEmitter();
189
+ /**
190
+ * @deprecated Use {@link TaskClick}.
191
+ *
192
+ * The same emitter under the old binding name, so a template still binding
193
+ * (taskClick) keeps working. Must stay AFTER TaskClick: class fields
194
+ * initialise in order, and the other way round this captures undefined.
195
+ */
196
+ taskClick = this.TaskClick;
197
+ get IsActive() {
198
+ return this.Task.Status === 'In Progress';
199
+ }
200
+ /** @deprecated Use {@link IsActive}. */
149
201
  get isActive() {
150
- return this.task.Status === 'In Progress';
202
+ return this.IsActive;
151
203
  }
152
- onTaskClick() {
153
- if (this.clickable) {
154
- this.taskClick.emit(this.task);
204
+ OnTaskClick() {
205
+ if (this.Clickable) {
206
+ this.TaskClick.emit(this.Task);
155
207
  }
156
208
  }
157
- formatDate(date) {
209
+ /** @deprecated Use {@link OnTaskClick}. */
210
+ onTaskClick() {
211
+ return this.OnTaskClick();
212
+ }
213
+ FormatDate(date) {
158
214
  if (!date)
159
215
  return '';
160
216
  const now = new Date();
@@ -178,12 +234,20 @@ export class TaskWidgetComponent {
178
234
  // Format as date
179
235
  return taskDate.toLocaleDateString();
180
236
  }
181
- isOverdue(dueDate) {
237
+ /** @deprecated Use {@link FormatDate}. */
238
+ formatDate(date) {
239
+ return this.FormatDate(date);
240
+ }
241
+ IsOverdue(dueDate) {
182
242
  if (!dueDate)
183
243
  return false;
184
244
  return new Date(dueDate).getTime() < Date.now();
185
245
  }
186
- getDuration(start, end) {
246
+ /** @deprecated Use {@link IsOverdue}. */
247
+ isOverdue(dueDate) {
248
+ return this.IsOverdue(dueDate);
249
+ }
250
+ GetDuration(start, end) {
187
251
  if (!start || !end)
188
252
  return '';
189
253
  const diffMs = new Date(end).getTime() - new Date(start).getTime();
@@ -204,7 +268,11 @@ export class TaskWidgetComponent {
204
268
  const remainingHours = diffHours % 24;
205
269
  return remainingHours > 0 ? `${diffDays}d ${remainingHours}h` : `${diffDays}d`;
206
270
  }
207
- getElapsedTime(start) {
271
+ /** @deprecated Use {@link GetDuration}. */
272
+ getDuration(start, end) {
273
+ return this.GetDuration(start, end);
274
+ }
275
+ GetElapsedTime(start) {
208
276
  if (!start)
209
277
  return '';
210
278
  const diffMs = Date.now() - new Date(start).getTime();
@@ -221,8 +289,12 @@ export class TaskWidgetComponent {
221
289
  const remainingMins = diffMins % 60;
222
290
  return `${diffHours}:${remainingMins.toString().padStart(2, '0')}`;
223
291
  }
292
+ /** @deprecated Use {@link GetElapsedTime}. */
293
+ getElapsedTime(start) {
294
+ return this.GetElapsedTime(start);
295
+ }
224
296
  static ɵfac = function TaskWidgetComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskWidgetComponent)(); };
225
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskWidgetComponent, selectors: [["mj-task-widget"]], inputs: { task: "task", clickable: "clickable", compact: "compact", showProgress: "showProgress", showDuration: "showDuration" }, outputs: { taskClick: "taskClick" }, standalone: false, decls: 20, vars: 18, consts: [[1, "task-widget", 3, "click"], [1, "task-status-indicator"], [1, "task-main"], [1, "task-header"], [1, "task-title"], [1, "task-badges"], [1, "badge", "badge-type"], [1, "badge", "badge-status"], [1, "task-description"], [1, "task-progress-container"], [1, "task-meta"], [1, "meta-item"], [1, "meta-item", "meta-elapsed"], [1, "progress-bar"], [1, "progress-fill"], [1, "progress-text"], [1, "fas", "fa-user"], [1, "meta-label"], [1, "meta-value"], [1, "fas", "fa-robot"], [1, "fas", "fa-play-circle"], [1, "fas", "fa-check-circle"], [1, "fas", "fa-calendar-alt"], [1, "fas", "fa-clock"], [1, "fas", "fa-hourglass-half"]], template: function TaskWidgetComponent_Template(rf, ctx) { if (rf & 1) {
297
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskWidgetComponent, selectors: [["mj-task-widget"]], inputs: { Task: "Task", task: "task", Clickable: "Clickable", clickable: "clickable", Compact: "Compact", compact: "compact", ShowProgress: "ShowProgress", showProgress: "showProgress", ShowDuration: "ShowDuration", showDuration: "showDuration" }, outputs: { TaskClick: "TaskClick", taskClick: "taskClick" }, standalone: false, decls: 20, vars: 18, consts: [[1, "task-widget", 3, "click"], [1, "task-status-indicator"], [1, "task-main"], [1, "task-header"], [1, "task-title"], [1, "task-badges"], [1, "badge", "badge-type"], [1, "badge", "badge-status"], [1, "task-description"], [1, "task-progress-container"], [1, "task-meta"], [1, "meta-item"], [1, "meta-item", "meta-elapsed"], [1, "progress-bar"], [1, "progress-fill"], [1, "progress-text"], [1, "fas", "fa-user"], [1, "meta-label"], [1, "meta-value"], [1, "fas", "fa-robot"], [1, "fas", "fa-play-circle"], [1, "fas", "fa-check-circle"], [1, "fas", "fa-calendar-alt"], [1, "fas", "fa-clock"], [1, "fas", "fa-hourglass-half"]], template: function TaskWidgetComponent_Template(rf, ctx) { if (rf & 1) {
226
298
  i0.ɵɵelementStart(0, "div", 0);
227
299
  i0.ɵɵlistener("click", function TaskWidgetComponent_Template_div_click_0_listener() { return ctx.onTaskClick(); });
228
300
  i0.ɵɵelement(1, "div", 1);
@@ -394,16 +466,28 @@ export class TaskWidgetComponent {
394
466
  </div>
395
467
  </div>
396
468
  `, styles: ["\n .task-widget {\n display: flex;\n gap: 12px;\n padding: 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n transition: all 150ms ease;\n }\n\n .task-widget.clickable {\n cursor: pointer;\n }\n\n .task-widget.clickable:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .task-widget.compact {\n padding: 8px 12px;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator[data-status=\"Pending\"] {\n background: var(--mj-text-disabled);\n }\n\n .task-status-indicator[data-status=\"In Progress\"] {\n background: var(--mj-brand-primary);\n }\n\n .task-status-indicator[data-status=\"Complete\"] {\n background: var(--mj-status-success);\n }\n\n .task-status-indicator[data-status=\"Blocked\"] {\n background: var(--mj-status-error);\n }\n\n .task-status-indicator[data-status=\"Failed\"] {\n background: var(--mj-status-error);\n }\n\n .task-status-indicator[data-status=\"Cancelled\"],\n .task-status-indicator[data-status=\"Deferred\"] {\n background: var(--mj-text-muted);\n }\n\n .task-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .task-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 12px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1.4;\n flex: 1;\n }\n\n .task-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n }\n\n .badge {\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n white-space: nowrap;\n }\n\n .badge-type {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .badge-status[data-status=\"Pending\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .badge-status[data-status=\"In Progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .badge-status[data-status=\"Complete\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .badge-status[data-status=\"Blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .badge-status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .badge-status[data-status=\"Cancelled\"],\n .badge-status[data-status=\"Deferred\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n\n .task-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .task-progress-container {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .progress-bar {\n flex: 1;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n }\n\n .progress-fill {\n height: 100%;\n transition: width 300ms ease;\n border-radius: 3px;\n }\n\n .progress-fill[data-status=\"In Progress\"] {\n background: var(--mj-brand-primary);\n }\n\n .progress-fill[data-status=\"Complete\"] {\n background: var(--mj-status-success);\n }\n\n .progress-fill[data-status=\"Blocked\"],\n .progress-fill[data-status=\"Failed\"] {\n background: var(--mj-status-error);\n }\n\n .progress-text {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n min-width: 35px;\n text-align: right;\n }\n\n .task-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .meta-item i {\n font-size: 10px;\n opacity: 0.7;\n }\n\n .meta-label {\n font-weight: 500;\n }\n\n .meta-value {\n color: var(--mj-text-primary);\n }\n\n .meta-value.overdue {\n color: var(--mj-status-error);\n font-weight: 600;\n }\n\n .meta-elapsed {\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n "] }]
397
- }], null, { task: [{
469
+ }], null, { Task: [{
470
+ type: Input
471
+ }], task: [{
472
+ type: Input
473
+ }], Clickable: [{
398
474
  type: Input
399
475
  }], clickable: [{
400
476
  type: Input
477
+ }], Compact: [{
478
+ type: Input
401
479
  }], compact: [{
402
480
  type: Input
481
+ }], ShowProgress: [{
482
+ type: Input
403
483
  }], showProgress: [{
404
484
  type: Input
485
+ }], ShowDuration: [{
486
+ type: Input
405
487
  }], showDuration: [{
406
488
  type: Input
489
+ }], TaskClick: [{
490
+ type: Output
407
491
  }], taskClick: [{
408
492
  type: Output
409
493
  }] }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"task-widget.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/task-widget.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;;IAiCzD,+BAA+B;IAC7B,YACF;IAAA,iBAAO;;;IADL,cACF;IADE,iDACF;;;IAaJ,8BAA8B;IAC5B,YACF;IAAA,iBAAM;;;IADJ,cACF;IADE,wDACF;;;IAME,AADF,8BAAqC,cACT;IACxB,0BAIM;IACR,iBAAM;IACN,gCAA4B;IAAA,YAA2B;IACzD,AADyD,iBAAO,EAC1D;;;IALA,eAAsC;IAAtC,yDAAsC;;IAId,eAA2B;IAA3B,2DAA2B;;;IAQvD,gCAAwB;IACtB,wBAA2B;IAC3B,gCAAyB;IAAA,qBAAK;IAAA,iBAAO;IACrC,gCAAyB;IAAA,YAAe;IAC1C,AAD0C,iBAAO,EAC1C;;;IADoB,eAAe;IAAf,sCAAe;;;IAI1C,gCAAwB;IACtB,wBAA4B;IAC5B,gCAAyB;IAAA,sBAAM;IAAA,iBAAO;IACtC,gCAAyB;IAAA,YAAgB;IAC3C,AAD2C,iBAAO,EAC3C;;;IADoB,eAAgB;IAAhB,uCAAgB;;;IAM3C,gCAAwB;IACtB,wBAAkC;IAClC,gCAAyB;IAAA,wBAAQ;IAAA,iBAAO;IACxC,gCAAyB;IAAA,YAAgC;IAC3D,AAD2D,iBAAO,EAC3D;;;IADoB,eAAgC;IAAhC,8DAAgC;;;IAI3D,gCAAwB;IACtB,wBAAmC;IACnC,gCAAyB;IAAA,0BAAU;IAAA,iBAAO;IAC1C,gCAAyB;IAAA,YAAkC;IAC7D,AAD6D,iBAAO,EAC7D;;;IADoB,eAAkC;IAAlC,gEAAkC;;;IAI7D,gCAAwB;IACtB,wBAAmC;IACnC,gCAAyB;IAAA,oBAAI;IAAA,iBAAO;IACpC,gCAAiE;IAC/D,YACF;IACF,AADE,iBAAO,EACF;;;IAHoB,eAAuC;IAAvC,8DAAuC;IAC9D,cACF;IADE,qEACF;;;IAMF,gCAAwB;IACtB,wBAA4B;IAC5B,gCAAyB;IAAA,yBAAS;IAAA,iBAAO;IACzC,gCAAyB;IAAA,YAAmD;IAC9E,AAD8E,iBAAO,EAC9E;;;IADoB,eAAmD;IAAnD,wFAAmD;;;IAM9E,gCAAqC;IACnC,wBAAqC;IACrC,gCAAyB;IAAA,YAAoC;IAC/D,AAD+D,iBAAO,EAC/D;;;IADoB,eAAoC;IAApC,kEAAoC;;AAxH3E;;;;;;;;GAQG;AAmVH,MAAM,OAAO,mBAAmB;IACrB,IAAI,CAAgB;IACpB,SAAS,GAAY,KAAK,CAAC;IAC3B,OAAO,GAAY,KAAK,CAAC;IACzB,YAAY,GAAY,IAAI,CAAC;IAC7B,YAAY,GAAY,IAAI,CAAC;IAC5B,SAAS,GAAG,IAAI,YAAY,EAAgB,CAAC;IAEvD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC;IAC5C,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAiB;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAE5C,uBAAuB;QACvB,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAO,CAAC;QACzD,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YACnB,OAAO,GAAG,SAAS,OAAO,CAAC;QAC7B,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,QAAQ,OAAO,CAAC;QAC5B,CAAC;QAED,iBAAiB;QACjB,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,OAAoB;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,KAAkB,EAAE,GAAgB;QAC9C,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAE3C,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,GAAG,QAAQ,GAAG,CAAC;QACxB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC3C,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,GAAG,QAAQ,GAAG,CAAC;QACxB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,QAAQ,GAAG,EAAE,CAAC;QAEpC,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YACnB,OAAO,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,aAAa,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC;QACjF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,SAAS,GAAG,EAAE,CAAC;QACtC,OAAO,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,cAAc,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC;IACjF,CAAC;IAED,cAAc,CAAC,KAAkB;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAE3C,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,GAAG,QAAQ,GAAG,CAAC;QACxB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,QAAQ,GAAG,EAAE,CAAC;QAEpC,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,GAAG,QAAQ,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,QAAQ,GAAG,EAAE,CAAC;QACpC,OAAO,GAAG,SAAS,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;6GAnGU,mBAAmB;6DAAnB,mBAAmB;YA9U5B,8BAI0B;YAAxB,6FAAS,iBAAa,IAAC;YAGvB,yBAA0E;YAMtE,AADF,AAFF,8BAAuB,aAEI,aACC;YAAA,YAAe;YAAA,iBAAM;YAC7C,8BAAyB;YAEvB,sFAAiB;YAMjB,+BAEmC;YACjC,YACF;YAEJ,AADE,AADE,iBAAO,EACH,EACF;YAGN,uFAAoC;YAOpC,uFAAoD;YAcpD,gCAAuB;YAErB,yFAAiB;YAOjB,yFAAkB;YASlB,yFAAsB;YAOtB,yFAAwB;YAOxB,yFAAuC;YAWvC,yFAA0D;YAS1D,yFAAuD;YAQ7D,AADE,AADE,iBAAM,EACF,EACF;;YA7GJ,AADA,0CAA6B,wBACJ;YAIU,cAAgC;;YAMvC,eAAe;YAAf,mCAAe;YAGrC,eAIC;YAJD,wCAIC;YAIC,cAAgC;;YAChC,cACF;YADE,gDACF;YAKJ,cAIC;YAJD,gEAIC;YAGD,cAWC;YAXD,gFAWC;YAKC,eAMC;YAND,yCAMC;YACD,cAMC;YAND,0CAMC;YAGD,cAMC;YAND,8CAMC;YACD,cAMC;YAND,gDAMC;YACD,cAQC;YARD,mEAQC;YAGD,cAMC;YAND,0FAMC;YAGD,cAKC;YALD,uFAKC;;;iFAiOE,mBAAmB;cAlV/B,SAAS;6BACI,KAAK,YACP,gBAAgB,YAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkHP;;kBA8NF,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,MAAM;;kFANI,mBAAmB","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { MJTaskEntity } from '@memberjunction/core-entities';\n\n/**\n * Reusable task widget component that displays task information\n * in a consistent, polished format across the application.\n *\n * Can be used in:\n * - Tasks dropdown (active tasks)\n * - Gear icon dropdown (tasks for conversation detail)\n * - Tasks tab (full task list with filters)\n */\n@Component({\n standalone: false,\n selector: 'mj-task-widget',\n template: `\n <div\n class=\"task-widget\"\n [class.clickable]=\"clickable\"\n [class.compact]=\"compact\"\n (click)=\"onTaskClick()\">\n \n <!-- Status Indicator -->\n <div class=\"task-status-indicator\" [attr.data-status]=\"task.Status\"></div>\n \n <!-- Task Content -->\n <div class=\"task-main\">\n <!-- Header Row -->\n <div class=\"task-header\">\n <div class=\"task-title\">{{ task.Name }}</div>\n <div class=\"task-badges\">\n <!-- Type Badge -->\n @if (task.Type) {\n <span class=\"badge badge-type\">\n {{ task.Type }}\n </span>\n }\n <!-- Status Badge -->\n <span\n class=\"badge badge-status\"\n [attr.data-status]=\"task.Status\">\n {{ task.Status }}\n </span>\n </div>\n </div>\n \n <!-- Description -->\n @if (!compact && task.Description) {\n <div class=\"task-description\">\n {{ task.Description }}\n </div>\n }\n \n <!-- Progress Bar (if in progress or has completion %) -->\n @if (showProgress && task.PercentComplete != null) {\n <div class=\"task-progress-container\">\n <div class=\"progress-bar\">\n <div\n class=\"progress-fill\"\n [style.width.%]=\"task.PercentComplete\"\n [attr.data-status]=\"task.Status\">\n </div>\n </div>\n <span class=\"progress-text\">{{ task.PercentComplete }}%</span>\n </div>\n }\n \n <!-- Meta Information -->\n <div class=\"task-meta\">\n <!-- Assignment -->\n @if (task.User) {\n <span class=\"meta-item\">\n <i class=\"fas fa-user\"></i>\n <span class=\"meta-label\">User:</span>\n <span class=\"meta-value\">{{ task.User }}</span>\n </span>\n }\n @if (task.Agent) {\n <span class=\"meta-item\">\n <i class=\"fas fa-robot\"></i>\n <span class=\"meta-label\">Agent:</span>\n <span class=\"meta-value\">{{ task.Agent }}</span>\n </span>\n }\n \n <!-- Timestamps -->\n @if (task.StartedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-play-circle\"></i>\n <span class=\"meta-label\">Started:</span>\n <span class=\"meta-value\">{{ formatDate(task.StartedAt) }}</span>\n </span>\n }\n @if (task.CompletedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"meta-label\">Completed:</span>\n <span class=\"meta-value\">{{ formatDate(task.CompletedAt) }}</span>\n </span>\n }\n @if (task.DueAt && !task.CompletedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-calendar-alt\"></i>\n <span class=\"meta-label\">Due:</span>\n <span class=\"meta-value\" [class.overdue]=\"isOverdue(task.DueAt)\">\n {{ formatDate(task.DueAt) }}\n </span>\n </span>\n }\n \n <!-- Duration (for completed tasks) -->\n @if (showDuration && task.StartedAt && task.CompletedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-clock\"></i>\n <span class=\"meta-label\">Duration:</span>\n <span class=\"meta-value\">{{ getDuration(task.StartedAt, task.CompletedAt) }}</span>\n </span>\n }\n \n <!-- Elapsed time (for active tasks) -->\n @if (isActive && task.StartedAt && !task.CompletedAt) {\n <span class=\"meta-item meta-elapsed\">\n <i class=\"fas fa-hourglass-half\"></i>\n <span class=\"meta-value\">{{ getElapsedTime(task.StartedAt) }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n `,\n styles: [`\n .task-widget {\n display: flex;\n gap: 12px;\n padding: 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n transition: all 150ms ease;\n }\n\n .task-widget.clickable {\n cursor: pointer;\n }\n\n .task-widget.clickable:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .task-widget.compact {\n padding: 8px 12px;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator[data-status=\"Pending\"] {\n background: var(--mj-text-disabled);\n }\n\n .task-status-indicator[data-status=\"In Progress\"] {\n background: var(--mj-brand-primary);\n }\n\n .task-status-indicator[data-status=\"Complete\"] {\n background: var(--mj-status-success);\n }\n\n .task-status-indicator[data-status=\"Blocked\"] {\n background: var(--mj-status-error);\n }\n\n .task-status-indicator[data-status=\"Failed\"] {\n background: var(--mj-status-error);\n }\n\n .task-status-indicator[data-status=\"Cancelled\"],\n .task-status-indicator[data-status=\"Deferred\"] {\n background: var(--mj-text-muted);\n }\n\n .task-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .task-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 12px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1.4;\n flex: 1;\n }\n\n .task-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n }\n\n .badge {\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n white-space: nowrap;\n }\n\n .badge-type {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .badge-status[data-status=\"Pending\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .badge-status[data-status=\"In Progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .badge-status[data-status=\"Complete\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .badge-status[data-status=\"Blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .badge-status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .badge-status[data-status=\"Cancelled\"],\n .badge-status[data-status=\"Deferred\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n\n .task-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .task-progress-container {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .progress-bar {\n flex: 1;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n }\n\n .progress-fill {\n height: 100%;\n transition: width 300ms ease;\n border-radius: 3px;\n }\n\n .progress-fill[data-status=\"In Progress\"] {\n background: var(--mj-brand-primary);\n }\n\n .progress-fill[data-status=\"Complete\"] {\n background: var(--mj-status-success);\n }\n\n .progress-fill[data-status=\"Blocked\"],\n .progress-fill[data-status=\"Failed\"] {\n background: var(--mj-status-error);\n }\n\n .progress-text {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n min-width: 35px;\n text-align: right;\n }\n\n .task-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .meta-item i {\n font-size: 10px;\n opacity: 0.7;\n }\n\n .meta-label {\n font-weight: 500;\n }\n\n .meta-value {\n color: var(--mj-text-primary);\n }\n\n .meta-value.overdue {\n color: var(--mj-status-error);\n font-weight: 600;\n }\n\n .meta-elapsed {\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n `]\n})\nexport class TaskWidgetComponent {\n @Input() task!: MJTaskEntity;\n @Input() clickable: boolean = false;\n @Input() compact: boolean = false;\n @Input() showProgress: boolean = true;\n @Input() showDuration: boolean = true;\n @Output() taskClick = new EventEmitter<MJTaskEntity>();\n\n get isActive(): boolean {\n return this.task.Status === 'In Progress';\n }\n\n onTaskClick(): void {\n if (this.clickable) {\n this.taskClick.emit(this.task);\n }\n }\n\n formatDate(date: Date | null): string {\n if (!date) return '';\n\n const now = new Date();\n const taskDate = new Date(date);\n const diffMs = now.getTime() - taskDate.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n\n // Less than 1 hour ago\n if (diffMins < 60) {\n return diffMins <= 1 ? 'just now' : `${diffMins}m ago`;\n }\n\n // Less than 24 hours ago\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) {\n return `${diffHours}h ago`;\n }\n\n // Less than 7 days ago\n const diffDays = Math.floor(diffHours / 24);\n if (diffDays < 7) {\n return `${diffDays}d ago`;\n }\n\n // Format as date\n return taskDate.toLocaleDateString();\n }\n\n isOverdue(dueDate: Date | null): boolean {\n if (!dueDate) return false;\n return new Date(dueDate).getTime() < Date.now();\n }\n\n getDuration(start: Date | null, end: Date | null): string {\n if (!start || !end) return '';\n\n const diffMs = new Date(end).getTime() - new Date(start).getTime();\n const diffSecs = Math.floor(diffMs / 1000);\n\n if (diffSecs < 60) {\n return `${diffSecs}s`;\n }\n\n const diffMins = Math.floor(diffSecs / 60);\n if (diffMins < 60) {\n return `${diffMins}m`;\n }\n\n const diffHours = Math.floor(diffMins / 60);\n const remainingMins = diffMins % 60;\n\n if (diffHours < 24) {\n return remainingMins > 0 ? `${diffHours}h ${remainingMins}m` : `${diffHours}h`;\n }\n\n const diffDays = Math.floor(diffHours / 24);\n const remainingHours = diffHours % 24;\n return remainingHours > 0 ? `${diffDays}d ${remainingHours}h` : `${diffDays}d`;\n }\n\n getElapsedTime(start: Date | null): string {\n if (!start) return '';\n\n const diffMs = Date.now() - new Date(start).getTime();\n const diffSecs = Math.floor(diffMs / 1000);\n\n if (diffSecs < 60) {\n return `${diffSecs}s`;\n }\n\n const diffMins = Math.floor(diffSecs / 60);\n const remainingSecs = diffSecs % 60;\n\n if (diffMins < 60) {\n return `${diffMins}:${remainingSecs.toString().padStart(2, '0')}`;\n }\n\n const diffHours = Math.floor(diffMins / 60);\n const remainingMins = diffMins % 60;\n return `${diffHours}:${remainingMins.toString().padStart(2, '0')}`;\n }\n}\n"]}
1
+ {"version":3,"file":"task-widget.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/task-widget.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { MJTaskEntity } from '@memberjunction/core-entities';\n\n/**\n * Reusable task widget component that displays task information\n * in a consistent, polished format across the application.\n *\n * Can be used in:\n * - Tasks dropdown (active tasks)\n * - Gear icon dropdown (tasks for conversation detail)\n * - Tasks tab (full task list with filters)\n */\n@Component({\n standalone: false,\n selector: 'mj-task-widget',\n template: `\n <div\n class=\"task-widget\"\n [class.clickable]=\"clickable\"\n [class.compact]=\"compact\"\n (click)=\"onTaskClick()\">\n \n <!-- Status Indicator -->\n <div class=\"task-status-indicator\" [attr.data-status]=\"task.Status\"></div>\n \n <!-- Task Content -->\n <div class=\"task-main\">\n <!-- Header Row -->\n <div class=\"task-header\">\n <div class=\"task-title\">{{ task.Name }}</div>\n <div class=\"task-badges\">\n <!-- Type Badge -->\n @if (task.Type) {\n <span class=\"badge badge-type\">\n {{ task.Type }}\n </span>\n }\n <!-- Status Badge -->\n <span\n class=\"badge badge-status\"\n [attr.data-status]=\"task.Status\">\n {{ task.Status }}\n </span>\n </div>\n </div>\n \n <!-- Description -->\n @if (!compact && task.Description) {\n <div class=\"task-description\">\n {{ task.Description }}\n </div>\n }\n \n <!-- Progress Bar (if in progress or has completion %) -->\n @if (showProgress && task.PercentComplete != null) {\n <div class=\"task-progress-container\">\n <div class=\"progress-bar\">\n <div\n class=\"progress-fill\"\n [style.width.%]=\"task.PercentComplete\"\n [attr.data-status]=\"task.Status\">\n </div>\n </div>\n <span class=\"progress-text\">{{ task.PercentComplete }}%</span>\n </div>\n }\n \n <!-- Meta Information -->\n <div class=\"task-meta\">\n <!-- Assignment -->\n @if (task.User) {\n <span class=\"meta-item\">\n <i class=\"fas fa-user\"></i>\n <span class=\"meta-label\">User:</span>\n <span class=\"meta-value\">{{ task.User }}</span>\n </span>\n }\n @if (task.Agent) {\n <span class=\"meta-item\">\n <i class=\"fas fa-robot\"></i>\n <span class=\"meta-label\">Agent:</span>\n <span class=\"meta-value\">{{ task.Agent }}</span>\n </span>\n }\n \n <!-- Timestamps -->\n @if (task.StartedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-play-circle\"></i>\n <span class=\"meta-label\">Started:</span>\n <span class=\"meta-value\">{{ formatDate(task.StartedAt) }}</span>\n </span>\n }\n @if (task.CompletedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"meta-label\">Completed:</span>\n <span class=\"meta-value\">{{ formatDate(task.CompletedAt) }}</span>\n </span>\n }\n @if (task.DueAt && !task.CompletedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-calendar-alt\"></i>\n <span class=\"meta-label\">Due:</span>\n <span class=\"meta-value\" [class.overdue]=\"isOverdue(task.DueAt)\">\n {{ formatDate(task.DueAt) }}\n </span>\n </span>\n }\n \n <!-- Duration (for completed tasks) -->\n @if (showDuration && task.StartedAt && task.CompletedAt) {\n <span class=\"meta-item\">\n <i class=\"fas fa-clock\"></i>\n <span class=\"meta-label\">Duration:</span>\n <span class=\"meta-value\">{{ getDuration(task.StartedAt, task.CompletedAt) }}</span>\n </span>\n }\n \n <!-- Elapsed time (for active tasks) -->\n @if (isActive && task.StartedAt && !task.CompletedAt) {\n <span class=\"meta-item meta-elapsed\">\n <i class=\"fas fa-hourglass-half\"></i>\n <span class=\"meta-value\">{{ getElapsedTime(task.StartedAt) }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n `,\n styles: [`\n .task-widget {\n display: flex;\n gap: 12px;\n padding: 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n transition: all 150ms ease;\n }\n\n .task-widget.clickable {\n cursor: pointer;\n }\n\n .task-widget.clickable:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .task-widget.compact {\n padding: 8px 12px;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator[data-status=\"Pending\"] {\n background: var(--mj-text-disabled);\n }\n\n .task-status-indicator[data-status=\"In Progress\"] {\n background: var(--mj-brand-primary);\n }\n\n .task-status-indicator[data-status=\"Complete\"] {\n background: var(--mj-status-success);\n }\n\n .task-status-indicator[data-status=\"Blocked\"] {\n background: var(--mj-status-error);\n }\n\n .task-status-indicator[data-status=\"Failed\"] {\n background: var(--mj-status-error);\n }\n\n .task-status-indicator[data-status=\"Cancelled\"],\n .task-status-indicator[data-status=\"Deferred\"] {\n background: var(--mj-text-muted);\n }\n\n .task-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .task-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 12px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1.4;\n flex: 1;\n }\n\n .task-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n }\n\n .badge {\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n white-space: nowrap;\n }\n\n .badge-type {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .badge-status[data-status=\"Pending\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .badge-status[data-status=\"In Progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .badge-status[data-status=\"Complete\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .badge-status[data-status=\"Blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .badge-status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .badge-status[data-status=\"Cancelled\"],\n .badge-status[data-status=\"Deferred\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n\n .task-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .task-progress-container {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .progress-bar {\n flex: 1;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n }\n\n .progress-fill {\n height: 100%;\n transition: width 300ms ease;\n border-radius: 3px;\n }\n\n .progress-fill[data-status=\"In Progress\"] {\n background: var(--mj-brand-primary);\n }\n\n .progress-fill[data-status=\"Complete\"] {\n background: var(--mj-status-success);\n }\n\n .progress-fill[data-status=\"Blocked\"],\n .progress-fill[data-status=\"Failed\"] {\n background: var(--mj-status-error);\n }\n\n .progress-text {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n min-width: 35px;\n text-align: right;\n }\n\n .task-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .meta-item i {\n font-size: 10px;\n opacity: 0.7;\n }\n\n .meta-label {\n font-weight: 500;\n }\n\n .meta-value {\n color: var(--mj-text-primary);\n }\n\n .meta-value.overdue {\n color: var(--mj-status-error);\n font-weight: 600;\n }\n\n .meta-elapsed {\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n `]\n})\nexport class TaskWidgetComponent {\n @Input() Task!: MJTaskEntity;\n\n /** @deprecated Use {@link Task}. */\n @Input() set task(value: MJTaskEntity) {\n this.Task = value;\n }\n /** @deprecated Use {@link Task}. */\n get task(): MJTaskEntity {\n return this.Task;\n }\n @Input() Clickable: boolean = false;\n\n /** @deprecated Use {@link Clickable}. */\n @Input() set clickable(value: boolean) {\n this.Clickable = value;\n }\n /** @deprecated Use {@link Clickable}. */\n get clickable(): boolean {\n return this.Clickable;\n }\n @Input() Compact: boolean = false;\n\n /** @deprecated Use {@link Compact}. */\n @Input() set compact(value: boolean) {\n this.Compact = value;\n }\n /** @deprecated Use {@link Compact}. */\n get compact(): boolean {\n return this.Compact;\n }\n @Input() ShowProgress: boolean = true;\n\n /** @deprecated Use {@link ShowProgress}. */\n @Input() set showProgress(value: boolean) {\n this.ShowProgress = value;\n }\n /** @deprecated Use {@link ShowProgress}. */\n get showProgress(): boolean {\n return this.ShowProgress;\n }\n @Input() ShowDuration: boolean = true;\n\n /** @deprecated Use {@link ShowDuration}. */\n @Input() set showDuration(value: boolean) {\n this.ShowDuration = value;\n }\n /** @deprecated Use {@link ShowDuration}. */\n get showDuration(): boolean {\n return this.ShowDuration;\n }\n @Output() TaskClick = new EventEmitter<MJTaskEntity>();\n\n /**\n * @deprecated Use {@link TaskClick}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (taskClick) keeps working. Must stay AFTER TaskClick: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() taskClick = this.TaskClick;\n\n get IsActive(): boolean {\n return this.Task.Status === 'In Progress';\n }\n\n /** @deprecated Use {@link IsActive}. */\n get isActive(): boolean {\n return this.IsActive;\n }\n\n OnTaskClick(): void {\n if (this.Clickable) {\n this.TaskClick.emit(this.Task);\n }\n }\n\n /** @deprecated Use {@link OnTaskClick}. */\n onTaskClick(): void {\n return this.OnTaskClick();\n }\n\n FormatDate(date: Date | null): string {\n if (!date) return '';\n\n const now = new Date();\n const taskDate = new Date(date);\n const diffMs = now.getTime() - taskDate.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n\n // Less than 1 hour ago\n if (diffMins < 60) {\n return diffMins <= 1 ? 'just now' : `${diffMins}m ago`;\n }\n\n // Less than 24 hours ago\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) {\n return `${diffHours}h ago`;\n }\n\n // Less than 7 days ago\n const diffDays = Math.floor(diffHours / 24);\n if (diffDays < 7) {\n return `${diffDays}d ago`;\n }\n\n // Format as date\n return taskDate.toLocaleDateString();\n }\n\n /** @deprecated Use {@link FormatDate}. */\n formatDate(date: Date | null): string {\n return this.FormatDate(date);\n }\n\n IsOverdue(dueDate: Date | null): boolean {\n if (!dueDate) return false;\n return new Date(dueDate).getTime() < Date.now();\n }\n\n /** @deprecated Use {@link IsOverdue}. */\n isOverdue(dueDate: Date | null): boolean {\n return this.IsOverdue(dueDate);\n }\n\n GetDuration(start: Date | null, end: Date | null): string {\n if (!start || !end) return '';\n\n const diffMs = new Date(end).getTime() - new Date(start).getTime();\n const diffSecs = Math.floor(diffMs / 1000);\n\n if (diffSecs < 60) {\n return `${diffSecs}s`;\n }\n\n const diffMins = Math.floor(diffSecs / 60);\n if (diffMins < 60) {\n return `${diffMins}m`;\n }\n\n const diffHours = Math.floor(diffMins / 60);\n const remainingMins = diffMins % 60;\n\n if (diffHours < 24) {\n return remainingMins > 0 ? `${diffHours}h ${remainingMins}m` : `${diffHours}h`;\n }\n\n const diffDays = Math.floor(diffHours / 24);\n const remainingHours = diffHours % 24;\n return remainingHours > 0 ? `${diffDays}d ${remainingHours}h` : `${diffDays}d`;\n }\n\n /** @deprecated Use {@link GetDuration}. */\n getDuration(start: Date | null, end: Date | null): string {\n return this.GetDuration(start, end);\n }\n\n GetElapsedTime(start: Date | null): string {\n if (!start) return '';\n\n const diffMs = Date.now() - new Date(start).getTime();\n const diffSecs = Math.floor(diffMs / 1000);\n\n if (diffSecs < 60) {\n return `${diffSecs}s`;\n }\n\n const diffMins = Math.floor(diffSecs / 60);\n const remainingSecs = diffSecs % 60;\n\n if (diffMins < 60) {\n return `${diffMins}:${remainingSecs.toString().padStart(2, '0')}`;\n }\n\n const diffHours = Math.floor(diffMins / 60);\n const remainingMins = diffMins % 60;\n return `${diffHours}:${remainingMins.toString().padStart(2, '0')}`;\n }\n\n /** @deprecated Use {@link GetElapsedTime}. */\n getElapsedTime(start: Date | null): string {\n return this.GetElapsedTime(start);\n }\n}\n"]}
@@ -8,17 +8,60 @@ import * as i0 from "@angular/core";
8
8
  */
9
9
  export declare class TasksDropdownComponent implements OnInit, OnDestroy {
10
10
  private activeTasksService;
11
- currentUser: UserInfo;
12
- conversationId: string | null;
11
+ CurrentUser: UserInfo;
12
+ /** @deprecated Use {@link CurrentUser}. */
13
+ set currentUser(value: UserInfo);
14
+ /** @deprecated Use {@link CurrentUser}. */
15
+ get currentUser(): UserInfo;
16
+ ConversationId: string | null;
17
+ /** @deprecated Use {@link ConversationId}. */
18
+ set conversationId(value: string | null);
19
+ /** @deprecated Use {@link ConversationId}. */
20
+ get conversationId(): string | null;
21
+ TaskClicked: EventEmitter<ActiveTask>;
22
+ /**
23
+ * @deprecated Use {@link TaskClicked}.
24
+ *
25
+ * The same emitter under the old binding name, so a template still binding
26
+ * (taskClicked) keeps working. Must stay AFTER TaskClicked: class fields
27
+ * initialise in order, and the other way round this captures undefined.
28
+ */
13
29
  taskClicked: EventEmitter<ActiveTask>;
30
+ NavigateToConversation: EventEmitter<{
31
+ conversationId: string;
32
+ taskId: string;
33
+ }>;
34
+ /**
35
+ * @deprecated Use {@link NavigateToConversation}.
36
+ *
37
+ * The same emitter under the old binding name, so a template still binding
38
+ * (navigateToConversation) keeps working. Must stay AFTER NavigateToConversation: class fields
39
+ * initialise in order, and the other way round this captures undefined.
40
+ */
14
41
  navigateToConversation: EventEmitter<{
15
42
  conversationId: string;
16
43
  taskId: string;
17
44
  }>;
18
- isOpen: boolean;
19
- allTasks: ActiveTask[];
20
- currentConversationTasks: ActiveTask[];
21
- otherConversationTasks: ActiveTask[];
45
+ IsOpen: boolean;
46
+ /** @deprecated Use {@link IsOpen}. */
47
+ get isOpen(): boolean;
48
+ /** @deprecated Use {@link IsOpen}. */
49
+ set isOpen(value: boolean);
50
+ AllTasks: ActiveTask[];
51
+ /** @deprecated Use {@link AllTasks}. */
52
+ get allTasks(): ActiveTask[];
53
+ /** @deprecated Use {@link AllTasks}. */
54
+ set allTasks(value: ActiveTask[]);
55
+ CurrentConversationTasks: ActiveTask[];
56
+ /** @deprecated Use {@link CurrentConversationTasks}. */
57
+ get currentConversationTasks(): ActiveTask[];
58
+ /** @deprecated Use {@link CurrentConversationTasks}. */
59
+ set currentConversationTasks(value: ActiveTask[]);
60
+ OtherConversationTasks: ActiveTask[];
61
+ /** @deprecated Use {@link OtherConversationTasks}. */
62
+ get otherConversationTasks(): ActiveTask[];
63
+ /** @deprecated Use {@link OtherConversationTasks}. */
64
+ set otherConversationTasks(value: ActiveTask[]);
22
65
  private destroy$;
23
66
  /**
24
67
  * Wall-clock snapshot the elapsed-time template bindings read from. The template
@@ -34,24 +77,38 @@ export declare class TasksDropdownComponent implements OnInit, OnDestroy {
34
77
  ngOnInit(): void;
35
78
  ngOnDestroy(): void;
36
79
  private groupTasks;
80
+ ToggleDropdown(): void;
81
+ /** @deprecated Use {@link ToggleDropdown}. */
37
82
  toggleDropdown(): void;
83
+ CloseDropdown(): void;
84
+ /** @deprecated Use {@link CloseDropdown}. */
38
85
  closeDropdown(): void;
39
86
  private startElapsedTimer;
40
87
  private stopElapsedTimer;
88
+ OnTaskClick(task: ActiveTask): void;
89
+ /** @deprecated Use {@link OnTaskClick}. */
41
90
  onTaskClick(task: ActiveTask): void;
91
+ GetElapsedTime(task: ActiveTask): string;
92
+ /** @deprecated Use {@link GetElapsedTime}. */
42
93
  getElapsedTime(task: ActiveTask): string;
94
+ GetTrimmedStatus(status: string): string;
95
+ /** @deprecated Use {@link GetTrimmedStatus}. */
43
96
  getTrimmedStatus(status: string): string;
44
97
  /**
45
98
  * Get agent icon class by looking up agent in AIEngineBase cache
46
99
  * Similar to message-item component's aiAgentInfo getter
47
100
  */
101
+ GetAgentIconClass(agentName: string): string;
102
+ /** @deprecated Use {@link GetAgentIconClass}. */
48
103
  getAgentIconClass(agentName: string): string;
49
104
  /**
50
105
  * Get agent logo URL by looking up agent in AIEngineBase cache
51
106
  * Returns null if no logo URL is available
52
107
  */
108
+ GetAgentLogoUrl(agentName: string): string | null;
109
+ /** @deprecated Use {@link GetAgentLogoUrl}. */
53
110
  getAgentLogoUrl(agentName: string): string | null;
54
111
  static ɵfac: i0.ɵɵFactoryDeclaration<TasksDropdownComponent, never>;
55
- static ɵcmp: i0.ɵɵComponentDeclaration<TasksDropdownComponent, "mj-tasks-dropdown", never, { "currentUser": { "alias": "currentUser"; "required": false; }; "conversationId": { "alias": "conversationId"; "required": false; }; }, { "taskClicked": "taskClicked"; "navigateToConversation": "navigateToConversation"; }, never, never, false, never>;
112
+ static ɵcmp: i0.ɵɵComponentDeclaration<TasksDropdownComponent, "mj-tasks-dropdown", never, { "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "ConversationId": { "alias": "ConversationId"; "required": false; }; "conversationId": { "alias": "conversationId"; "required": false; }; }, { "TaskClicked": "TaskClicked"; "taskClicked": "taskClicked"; "NavigateToConversation": "NavigateToConversation"; "navigateToConversation": "navigateToConversation"; }, never, never, false, never>;
56
113
  }
57
114
  //# sourceMappingURL=tasks-dropdown.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-dropdown.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;;AAKrF;;;GAGG;AACH,qBAifa,sBAAuB,YAAW,MAAM,EAAE,SAAS;IAyB5D,OAAO,CAAC,kBAAkB;IAxBnB,WAAW,EAAG,QAAQ,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,WAAW,2BAAkC;IAC7C,sBAAsB;wBAAqC,MAAM;gBAAU,MAAM;OAAK;IAEzF,MAAM,EAAE,OAAO,CAAS;IACxB,QAAQ,EAAE,UAAU,EAAE,CAAM;IAC5B,wBAAwB,EAAE,UAAU,EAAE,CAAM;IAC5C,sBAAsB,EAAE,UAAU,EAAE,CAAM;IAEjD,OAAO,CAAC,QAAQ,CAAuB;IAEvC;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,YAAY,CAA+C;gBAGzD,kBAAkB,EAAE,kBAAkB;IAGhD,QAAQ;IAgBR,WAAW;IAMX,OAAO,CAAC,UAAU;IAUlB,cAAc,IAAI,IAAI;IAStB,aAAa,IAAI,IAAI;IAKrB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,gBAAgB;IAOxB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAanC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAcxC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQxC;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAa5C;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;yCArJtC,sBAAsB;2CAAtB,sBAAsB;CAgKlC"}
1
+ {"version":3,"file":"tasks-dropdown.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"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"}