@memberjunction/ng-conversations 2.104.0 → 2.105.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/collection/collection-view.component.d.ts +5 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +53 -11
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +53 -13
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +455 -289
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +9 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +258 -71
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +6 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +35 -13
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +49 -12
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +579 -221
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +16 -5
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +136 -64
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +11 -5
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +48 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +24 -9
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +47 -0
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/task/tasks-full-view.component.js +368 -0
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts +29 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.js +385 -0
- package/dist/lib/components/tasks/task-widget.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +22 -8
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +195 -99
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts +3 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +14 -14
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +43 -4
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +288 -46
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +40 -46
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +28 -42
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +29 -1
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +6 -5
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +18 -19
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +96 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -0
- package/dist/lib/services/data-cache.service.js +203 -0
- package/dist/lib/services/data-cache.service.js.map +1 -0
- package/dist/public-api.d.ts +3 -6
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -6
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -10
- package/dist/lib/components/artifact/artifact-panel.component.d.ts +0 -22
- package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-panel.component.js +0 -237
- package/dist/lib/components/artifact/artifact-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +0 -39
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.js +0 -384
- package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts +0 -28
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.js +0 -280
- package/dist/lib/components/artifact/artifact-version-history.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -22
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js +0 -182
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts +0 -27
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.js +0 -266
- package/dist/lib/components/artifact/artifact-viewer.component.js.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.d.ts +0 -46
- package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.js +0 -447
- package/dist/lib/components/artifact/inline-artifact.component.js.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.d.ts +0 -42
- package/dist/lib/components/task/task-form-modal.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.js +0 -329
- package/dist/lib/components/task/task-form-modal.component.js.map +0 -1
- package/dist/lib/components/task/task-item.component.d.ts +0 -22
- package/dist/lib/components/task/task-item.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-item.component.js +0 -234
- package/dist/lib/components/task/task-item.component.js.map +0 -1
- package/dist/lib/components/task/task-list.component.d.ts +0 -32
- package/dist/lib/components/task/task-list.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-list.component.js +0 -290
- package/dist/lib/components/task/task-list.component.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, Input, HostListener } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "../../services/conversation-state.service";
|
|
4
4
|
import * as i2 from "../../services/dialog.service";
|
|
@@ -7,59 +7,148 @@ import * as i4 from "../../services/toast.service";
|
|
|
7
7
|
import * as i5 from "@angular/forms";
|
|
8
8
|
import * as i6 from "../notification/notification-badge.component";
|
|
9
9
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
10
|
-
function
|
|
11
|
-
i0.ɵɵ
|
|
10
|
+
function ConversationListComponent_Conditional_8_For_9_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
12
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
13
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_8_For_9_Conditional_14_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r5); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
14
|
+
i0.ɵɵelementStart(1, "button", 28);
|
|
15
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_8_For_9_Conditional_14_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r5); const conversation_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r4, $event)); });
|
|
16
|
+
i0.ɵɵelement(2, "i", 29);
|
|
17
|
+
i0.ɵɵelementStart(3, "span");
|
|
18
|
+
i0.ɵɵtext(4, "Unpin");
|
|
19
|
+
i0.ɵɵelementEnd()();
|
|
20
|
+
i0.ɵɵelementStart(5, "button", 28);
|
|
21
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_8_For_9_Conditional_14_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r5); const conversation_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.renameConversation(conversation_r4); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
22
|
+
i0.ɵɵelement(6, "i", 30);
|
|
23
|
+
i0.ɵɵelementStart(7, "span");
|
|
24
|
+
i0.ɵɵtext(8, "Rename");
|
|
25
|
+
i0.ɵɵelementEnd()();
|
|
26
|
+
i0.ɵɵelement(9, "div", 31);
|
|
27
|
+
i0.ɵɵelementStart(10, "button", 32);
|
|
28
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_8_For_9_Conditional_14_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r5); const conversation_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.deleteConversation(conversation_r4); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
29
|
+
i0.ɵɵelement(11, "i", 33);
|
|
30
|
+
i0.ɵɵelementStart(12, "span");
|
|
31
|
+
i0.ɵɵtext(13, "Delete");
|
|
32
|
+
i0.ɵɵelementEnd()()();
|
|
12
33
|
} }
|
|
13
|
-
function
|
|
14
|
-
const
|
|
15
|
-
i0.ɵɵelementStart(0, "div",
|
|
16
|
-
i0.ɵɵlistener("click", function
|
|
17
|
-
i0.ɵɵelementStart(1, "div",
|
|
18
|
-
i0.ɵɵelement(3, "i",
|
|
34
|
+
function ConversationListComponent_Conditional_8_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
36
|
+
i0.ɵɵelementStart(0, "div", 14);
|
|
37
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_8_For_9_Template_div_click_0_listener() { const conversation_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectConversation(conversation_r4)); });
|
|
38
|
+
i0.ɵɵelementStart(1, "div", 15)(2, "div", 16);
|
|
39
|
+
i0.ɵɵelement(3, "i", 17);
|
|
19
40
|
i0.ɵɵelementEnd();
|
|
20
|
-
i0.ɵɵelementStart(4, "div",
|
|
21
|
-
i0.ɵɵelement(5, "mj-notification-badge",
|
|
41
|
+
i0.ɵɵelementStart(4, "div", 18);
|
|
42
|
+
i0.ɵɵelement(5, "mj-notification-badge", 19);
|
|
22
43
|
i0.ɵɵelementEnd()();
|
|
23
|
-
i0.ɵɵelementStart(6, "div",
|
|
44
|
+
i0.ɵɵelementStart(6, "div", 20)(7, "div", 21);
|
|
24
45
|
i0.ɵɵtext(8);
|
|
25
46
|
i0.ɵɵelementEnd();
|
|
26
|
-
i0.ɵɵelementStart(9, "div",
|
|
47
|
+
i0.ɵɵelementStart(9, "div", 22);
|
|
27
48
|
i0.ɵɵtext(10);
|
|
28
49
|
i0.ɵɵelementEnd()();
|
|
29
|
-
i0.ɵɵelementStart(11, "div",
|
|
30
|
-
i0.ɵɵ
|
|
50
|
+
i0.ɵɵelementStart(11, "div", 23)(12, "button", 24);
|
|
51
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_8_For_9_Template_button_click_12_listener($event) { const conversation_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r4.ID, $event)); });
|
|
52
|
+
i0.ɵɵelement(13, "i", 25);
|
|
31
53
|
i0.ɵɵelementEnd();
|
|
32
|
-
i0.ɵɵ
|
|
33
|
-
i0.ɵɵ
|
|
34
|
-
i0.ɵɵelementStart(14, "button", 24);
|
|
35
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_16_Template_button_click_14_listener() { const conversation_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.togglePin(conversation_r2)); });
|
|
36
|
-
i0.ɵɵelement(15, "i", 25);
|
|
37
|
-
i0.ɵɵelementEnd();
|
|
38
|
-
i0.ɵɵelementStart(16, "button", 26);
|
|
39
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_16_Template_button_click_16_listener() { const conversation_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.renameConversation(conversation_r2)); });
|
|
40
|
-
i0.ɵɵelement(17, "i", 27);
|
|
41
|
-
i0.ɵɵelementEnd();
|
|
42
|
-
i0.ɵɵelementStart(18, "button", 28);
|
|
43
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_16_Template_button_click_18_listener() { const conversation_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteConversation(conversation_r2)); });
|
|
44
|
-
i0.ɵɵelement(19, "i", 29);
|
|
45
|
-
i0.ɵɵelementEnd()()();
|
|
54
|
+
i0.ɵɵtemplate(14, ConversationListComponent_Conditional_8_For_9_Conditional_14_Template, 14, 0, "div", 26);
|
|
55
|
+
i0.ɵɵelementEnd()();
|
|
46
56
|
} if (rf & 2) {
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
i0.ɵɵclassProp("active",
|
|
57
|
+
const conversation_r4 = ctx.$implicit;
|
|
58
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
59
|
+
i0.ɵɵclassProp("active", conversation_r4.ID === ctx_r1.conversationState.activeConversationId)("renamed", conversation_r4.ID === ctx_r1.renamedConversationId);
|
|
50
60
|
i0.ɵɵadvance(5);
|
|
51
|
-
i0.ɵɵproperty("conversationId",
|
|
61
|
+
i0.ɵɵproperty("conversationId", conversation_r4.ID);
|
|
52
62
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵproperty("title",
|
|
63
|
+
i0.ɵɵproperty("title", conversation_r4.Name + (conversation_r4.Description ? "\n" + conversation_r4.Description : ""));
|
|
54
64
|
i0.ɵɵadvance(2);
|
|
55
|
-
i0.ɵɵtextInterpolate(
|
|
65
|
+
i0.ɵɵtextInterpolate(conversation_r4.Name);
|
|
56
66
|
i0.ɵɵadvance(2);
|
|
57
|
-
i0.ɵɵtextInterpolate(
|
|
67
|
+
i0.ɵɵtextInterpolate(conversation_r4.Description || "No description");
|
|
68
|
+
i0.ɵɵadvance(4);
|
|
69
|
+
i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r4.ID ? 14 : -1);
|
|
70
|
+
} }
|
|
71
|
+
function ConversationListComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
73
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "div", 8);
|
|
74
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_8_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePinned()); });
|
|
75
|
+
i0.ɵɵelementStart(2, "div", 9);
|
|
76
|
+
i0.ɵɵelement(3, "i", 10)(4, "i", 13);
|
|
77
|
+
i0.ɵɵelementStart(5, "span");
|
|
78
|
+
i0.ɵɵtext(6, "Pinned");
|
|
79
|
+
i0.ɵɵelementEnd()()();
|
|
80
|
+
i0.ɵɵelementStart(7, "div", 11);
|
|
81
|
+
i0.ɵɵrepeaterCreate(8, ConversationListComponent_Conditional_8_For_9_Template, 15, 9, "div", 12, _forTrack0);
|
|
82
|
+
i0.ɵɵelementEnd()();
|
|
83
|
+
} if (rf & 2) {
|
|
84
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
85
|
+
i0.ɵɵadvance();
|
|
86
|
+
i0.ɵɵclassProp("expanded", ctx_r1.pinnedExpanded);
|
|
87
|
+
i0.ɵɵadvance(6);
|
|
88
|
+
i0.ɵɵclassProp("expanded", ctx_r1.pinnedExpanded);
|
|
89
|
+
i0.ɵɵadvance();
|
|
90
|
+
i0.ɵɵrepeater(ctx_r1.pinnedConversations);
|
|
91
|
+
} }
|
|
92
|
+
function ConversationListComponent_For_17_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
95
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_17_Conditional_14_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
96
|
+
i0.ɵɵelementStart(1, "button", 28);
|
|
97
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_17_Conditional_14_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r8); const conversation_r7 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r7, $event)); });
|
|
98
|
+
i0.ɵɵelement(2, "i", 29);
|
|
99
|
+
i0.ɵɵelementStart(3, "span");
|
|
100
|
+
i0.ɵɵtext(4, "Pin");
|
|
101
|
+
i0.ɵɵelementEnd()();
|
|
102
|
+
i0.ɵɵelementStart(5, "button", 28);
|
|
103
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_17_Conditional_14_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r8); const conversation_r7 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.renameConversation(conversation_r7); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
104
|
+
i0.ɵɵelement(6, "i", 30);
|
|
105
|
+
i0.ɵɵelementStart(7, "span");
|
|
106
|
+
i0.ɵɵtext(8, "Rename");
|
|
107
|
+
i0.ɵɵelementEnd()();
|
|
108
|
+
i0.ɵɵelement(9, "div", 31);
|
|
109
|
+
i0.ɵɵelementStart(10, "button", 32);
|
|
110
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_17_Conditional_14_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r8); const conversation_r7 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.deleteConversation(conversation_r7); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
111
|
+
i0.ɵɵelement(11, "i", 33);
|
|
112
|
+
i0.ɵɵelementStart(12, "span");
|
|
113
|
+
i0.ɵɵtext(13, "Delete");
|
|
114
|
+
i0.ɵɵelementEnd()()();
|
|
115
|
+
} }
|
|
116
|
+
function ConversationListComponent_For_17_Template(rf, ctx) { if (rf & 1) {
|
|
117
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
118
|
+
i0.ɵɵelementStart(0, "div", 14);
|
|
119
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_17_Template_div_click_0_listener() { const conversation_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectConversation(conversation_r7)); });
|
|
120
|
+
i0.ɵɵelementStart(1, "div", 15)(2, "div", 16);
|
|
121
|
+
i0.ɵɵelement(3, "i", 17);
|
|
122
|
+
i0.ɵɵelementEnd();
|
|
123
|
+
i0.ɵɵelementStart(4, "div", 18);
|
|
124
|
+
i0.ɵɵelement(5, "mj-notification-badge", 19);
|
|
125
|
+
i0.ɵɵelementEnd()();
|
|
126
|
+
i0.ɵɵelementStart(6, "div", 20)(7, "div", 21);
|
|
127
|
+
i0.ɵɵtext(8);
|
|
128
|
+
i0.ɵɵelementEnd();
|
|
129
|
+
i0.ɵɵelementStart(9, "div", 22);
|
|
130
|
+
i0.ɵɵtext(10);
|
|
131
|
+
i0.ɵɵelementEnd()();
|
|
132
|
+
i0.ɵɵelementStart(11, "div", 23)(12, "button", 24);
|
|
133
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_17_Template_button_click_12_listener($event) { const conversation_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r7.ID, $event)); });
|
|
134
|
+
i0.ɵɵelement(13, "i", 25);
|
|
135
|
+
i0.ɵɵelementEnd();
|
|
136
|
+
i0.ɵɵtemplate(14, ConversationListComponent_For_17_Conditional_14_Template, 14, 0, "div", 26);
|
|
137
|
+
i0.ɵɵelementEnd()();
|
|
138
|
+
} if (rf & 2) {
|
|
139
|
+
const conversation_r7 = ctx.$implicit;
|
|
140
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
141
|
+
i0.ɵɵclassProp("active", conversation_r7.ID === ctx_r1.conversationState.activeConversationId)("renamed", conversation_r7.ID === ctx_r1.renamedConversationId);
|
|
142
|
+
i0.ɵɵadvance(5);
|
|
143
|
+
i0.ɵɵproperty("conversationId", conversation_r7.ID);
|
|
144
|
+
i0.ɵɵadvance();
|
|
145
|
+
i0.ɵɵproperty("title", conversation_r7.Name + (conversation_r7.Description ? "\n" + conversation_r7.Description : ""));
|
|
58
146
|
i0.ɵɵadvance(2);
|
|
59
|
-
i0.ɵɵ
|
|
147
|
+
i0.ɵɵtextInterpolate(conversation_r7.Name);
|
|
60
148
|
i0.ɵɵadvance(2);
|
|
61
|
-
i0.ɵɵ
|
|
62
|
-
i0.ɵɵ
|
|
149
|
+
i0.ɵɵtextInterpolate(conversation_r7.Description || "No description");
|
|
150
|
+
i0.ɵɵadvance(4);
|
|
151
|
+
i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r7.ID ? 14 : -1);
|
|
63
152
|
} }
|
|
64
153
|
export class ConversationListComponent {
|
|
65
154
|
conversationState;
|
|
@@ -70,19 +159,36 @@ export class ConversationListComponent {
|
|
|
70
159
|
currentUser;
|
|
71
160
|
renamedConversationId = null;
|
|
72
161
|
directMessagesExpanded = true;
|
|
162
|
+
pinnedExpanded = true;
|
|
163
|
+
openMenuConversationId = null;
|
|
73
164
|
constructor(conversationState, dialogService, notificationService, toastService) {
|
|
74
165
|
this.conversationState = conversationState;
|
|
75
166
|
this.dialogService = dialogService;
|
|
76
167
|
this.notificationService = notificationService;
|
|
77
168
|
this.toastService = toastService;
|
|
78
169
|
}
|
|
170
|
+
get pinnedConversations() {
|
|
171
|
+
return this.conversationState.filteredConversations.filter(c => c.IsPinned);
|
|
172
|
+
}
|
|
173
|
+
get unpinnedConversations() {
|
|
174
|
+
return this.conversationState.filteredConversations.filter(c => !c.IsPinned);
|
|
175
|
+
}
|
|
79
176
|
ngOnInit() {
|
|
80
177
|
// Load conversations on init
|
|
81
178
|
this.conversationState.loadConversations(this.environmentId, this.currentUser);
|
|
82
179
|
}
|
|
180
|
+
onDocumentClick() {
|
|
181
|
+
// Close menu when clicking outside
|
|
182
|
+
if (this.openMenuConversationId) {
|
|
183
|
+
this.closeMenu();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
83
186
|
toggleDirectMessages() {
|
|
84
187
|
this.directMessagesExpanded = !this.directMessagesExpanded;
|
|
85
188
|
}
|
|
189
|
+
togglePinned() {
|
|
190
|
+
this.pinnedExpanded = !this.pinnedExpanded;
|
|
191
|
+
}
|
|
86
192
|
selectConversation(conversation) {
|
|
87
193
|
this.conversationState.setActiveConversation(conversation.ID);
|
|
88
194
|
// Clear unread notifications when conversation is opened
|
|
@@ -138,9 +244,19 @@ export class ConversationListComponent {
|
|
|
138
244
|
await this.dialogService.alert('Error', 'Failed to delete conversation. Please try again.');
|
|
139
245
|
}
|
|
140
246
|
}
|
|
141
|
-
|
|
247
|
+
toggleMenu(conversationId, event) {
|
|
248
|
+
event.stopPropagation();
|
|
249
|
+
this.openMenuConversationId = this.openMenuConversationId === conversationId ? null : conversationId;
|
|
250
|
+
}
|
|
251
|
+
closeMenu() {
|
|
252
|
+
this.openMenuConversationId = null;
|
|
253
|
+
}
|
|
254
|
+
async togglePin(conversation, event) {
|
|
255
|
+
if (event)
|
|
256
|
+
event.stopPropagation();
|
|
142
257
|
try {
|
|
143
258
|
await this.conversationState.togglePin(conversation.ID, this.currentUser);
|
|
259
|
+
this.closeMenu();
|
|
144
260
|
}
|
|
145
261
|
catch (error) {
|
|
146
262
|
console.error('Error toggling pin:', error);
|
|
@@ -148,7 +264,9 @@ export class ConversationListComponent {
|
|
|
148
264
|
}
|
|
149
265
|
}
|
|
150
266
|
static ɵfac = function ConversationListComponent_Factory(t) { return new (t || ConversationListComponent)(i0.ɵɵdirectiveInject(i1.ConversationStateService), i0.ɵɵdirectiveInject(i2.DialogService), i0.ɵɵdirectiveInject(i3.NotificationService), i0.ɵɵdirectiveInject(i4.ToastService)); };
|
|
151
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConversationListComponent, selectors: [["mj-conversation-list"]],
|
|
267
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConversationListComponent, selectors: [["mj-conversation-list"]], hostBindings: function ConversationListComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
268
|
+
i0.ɵɵlistener("click", function ConversationListComponent_click_HostBindingHandler() { return ctx.onDocumentClick(); }, false, i0.ɵɵresolveDocument);
|
|
269
|
+
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser", renamedConversationId: "renamedConversationId" }, decls: 18, vars: 6, consts: [[1, "conversation-list"], [1, "list-header"], ["type", "text", "placeholder", "Search conversations...", 1, "search-input", 3, "ngModelChange", "ngModel"], ["title", "New Conversation", 1, "btn-new-conversation", 3, "click"], [1, "fas", "fa-plus"], [1, "list-content"], [1, "sidebar-section", "pinned-section"], [1, "sidebar-section"], [1, "section-header", 3, "click"], [1, "section-title"], [1, "fas", "fa-chevron-right"], [1, "chat-list"], [1, "conversation-item", 3, "active", "renamed"], [1, "fas", "fa-thumbtack", "section-icon"], [1, "conversation-item", 3, "click"], [1, "conversation-icon-wrapper"], [1, "conversation-icon"], [1, "fas", "fa-comments"], [1, "badge-overlay"], [3, "conversationId"], [1, "conversation-info", 3, "title"], [1, "conversation-name"], [1, "conversation-preview"], [1, "conversation-actions"], ["title", "More options", 1, "menu-btn", 3, "click"], [1, "fas", "fa-ellipsis"], [1, "context-menu"], [1, "context-menu", 3, "click"], [1, "menu-item", 3, "click"], [1, "fas", "fa-thumbtack"], [1, "fas", "fa-edit"], [1, "menu-divider"], [1, "menu-item", "danger", 3, "click"], [1, "fas", "fa-trash"]], template: function ConversationListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
152
270
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "input", 2);
|
|
153
271
|
i0.ɵɵtwoWayListener("ngModelChange", function ConversationListComponent_Template_input_ngModelChange_2_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.conversationState.searchQuery, $event) || (ctx.conversationState.searchQuery = $event); return $event; });
|
|
154
272
|
i0.ɵɵelementEnd()();
|
|
@@ -158,26 +276,30 @@ export class ConversationListComponent {
|
|
|
158
276
|
i0.ɵɵelementStart(5, "span");
|
|
159
277
|
i0.ɵɵtext(6, "New Conversation");
|
|
160
278
|
i0.ɵɵelementEnd()();
|
|
161
|
-
i0.ɵɵelementStart(7, "div", 5)
|
|
162
|
-
i0.ɵɵ
|
|
163
|
-
i0.ɵɵelementStart(10, "div", 8);
|
|
164
|
-
i0.ɵɵ
|
|
165
|
-
i0.ɵɵelementStart(
|
|
166
|
-
i0.ɵɵ
|
|
279
|
+
i0.ɵɵelementStart(7, "div", 5);
|
|
280
|
+
i0.ɵɵtemplate(8, ConversationListComponent_Conditional_8_Template, 10, 4, "div", 6);
|
|
281
|
+
i0.ɵɵelementStart(9, "div", 7)(10, "div", 8);
|
|
282
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Template_div_click_10_listener() { return ctx.toggleDirectMessages(); });
|
|
283
|
+
i0.ɵɵelementStart(11, "div", 9);
|
|
284
|
+
i0.ɵɵelement(12, "i", 10);
|
|
285
|
+
i0.ɵɵelementStart(13, "span");
|
|
286
|
+
i0.ɵɵtext(14, "Messages");
|
|
167
287
|
i0.ɵɵelementEnd()()();
|
|
168
|
-
i0.ɵɵelementStart(
|
|
169
|
-
i0.ɵɵrepeaterCreate(
|
|
288
|
+
i0.ɵɵelementStart(15, "div", 11);
|
|
289
|
+
i0.ɵɵrepeaterCreate(16, ConversationListComponent_For_17_Template, 15, 9, "div", 12, _forTrack0);
|
|
170
290
|
i0.ɵɵelementEnd()()()();
|
|
171
291
|
} if (rf & 2) {
|
|
172
292
|
i0.ɵɵadvance(2);
|
|
173
293
|
i0.ɵɵtwoWayProperty("ngModel", ctx.conversationState.searchQuery);
|
|
174
|
-
i0.ɵɵadvance(
|
|
294
|
+
i0.ɵɵadvance(6);
|
|
295
|
+
i0.ɵɵconditional(ctx.pinnedConversations.length > 0 ? 8 : -1);
|
|
296
|
+
i0.ɵɵadvance(2);
|
|
175
297
|
i0.ɵɵclassProp("expanded", ctx.directMessagesExpanded);
|
|
176
298
|
i0.ɵɵadvance(5);
|
|
177
299
|
i0.ɵɵclassProp("expanded", ctx.directMessagesExpanded);
|
|
178
300
|
i0.ɵɵadvance();
|
|
179
|
-
i0.ɵɵrepeater(ctx.
|
|
180
|
-
} }, dependencies: [i5.DefaultValueAccessor, i5.NgControlStatus, i5.NgModel, i6.NotificationBadgeComponent], styles: [".conversation-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header[_ngcontent-%COMP%] { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input[_ngcontent-%COMP%]::placeholder { color: rgba(255,255,255,0.5); }\n .search-input[_ngcontent-%COMP%]:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation[_ngcontent-%COMP%] {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation[_ngcontent-%COMP%]:hover { background: #005A8C; }\n .btn-new-conversation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n .list-content[_ngcontent-%COMP%] { flex: 1; overflow-y: auto; padding: 4px 0; }\n\n \n\n .sidebar-section[_ngcontent-%COMP%] { margin-bottom: 20px; }\n .section-header[_ngcontent-%COMP%] {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header[_ngcontent-%COMP%]:hover { color: white; }\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { transform: rotate(90deg); }\n .chat-list[_ngcontent-%COMP%] {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded[_ngcontent-%COMP%] { display: block; }\n\n .conversation-item[_ngcontent-%COMP%] {\n padding: 6px
|
|
301
|
+
i0.ɵɵrepeater(ctx.unpinnedConversations);
|
|
302
|
+
} }, dependencies: [i5.DefaultValueAccessor, i5.NgControlStatus, i5.NgModel, i6.NotificationBadgeComponent], styles: [".conversation-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header[_ngcontent-%COMP%] { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input[_ngcontent-%COMP%]::placeholder { color: rgba(255,255,255,0.5); }\n .search-input[_ngcontent-%COMP%]:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation[_ngcontent-%COMP%] {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation[_ngcontent-%COMP%]:hover { background: #005A8C; }\n .btn-new-conversation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n .list-content[_ngcontent-%COMP%] { flex: 1; overflow-y: auto; padding: 4px 0; }\n\n \n\n .sidebar-section[_ngcontent-%COMP%] { margin-bottom: 20px; }\n .pinned-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n background: rgba(255, 193, 7, 0.08);\n border-radius: 4px;\n margin: 0 4px;\n }\n .pinned-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] .section-icon[_ngcontent-%COMP%] {\n color: #FFC107;\n font-size: 11px;\n margin-left: 2px;\n }\n .section-header[_ngcontent-%COMP%] {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header[_ngcontent-%COMP%]:hover { color: white; }\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { transform: rotate(90deg); }\n .chat-list[_ngcontent-%COMP%] {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded[_ngcontent-%COMP%] { display: block; }\n\n .conversation-item[_ngcontent-%COMP%] {\n padding: 6px 5px 6px 16px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n align-items: center;\n transition: all 0.2s;\n position: relative;\n color: rgba(255,255,255,0.7);\n font-size: 14px;\n }\n .conversation-item[_ngcontent-%COMP%]:hover { background: rgba(255,255,255,0.08); color: white; }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; }\n .conversation-item.active[_ngcontent-%COMP%] { background: #0076B6; color: white; }\n .conversation-icon-wrapper[_ngcontent-%COMP%] { position: relative; flex-shrink: 0; }\n .conversation-icon[_ngcontent-%COMP%] { font-size: 12px; width: 16px; text-align: center; }\n .badge-overlay[_ngcontent-%COMP%] { position: absolute; top: -4px; right: -4px; }\n .conversation-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n .conversation-name[_ngcontent-%COMP%] { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-preview[_ngcontent-%COMP%] { font-size: 12px; color: rgba(255,255,255,0.5); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-preview[_ngcontent-%COMP%] { color: rgba(255,255,255,0.8); }\n .conversation-meta[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }\n\n \n\n .project-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n margin-left: auto;\n background-color: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.6);\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .conversation-item[_ngcontent-%COMP%]:hover .project-badge[_ngcontent-%COMP%] {\n background-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n }\n .conversation-item.active[_ngcontent-%COMP%] .project-badge[_ngcontent-%COMP%] {\n background-color: rgba(255, 255, 255, 0.2);\n color: white;\n }\n\n .conversation-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 5px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 10;\n }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .conversation-actions[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] { pointer-events: auto; }\n .pinned-icon[_ngcontent-%COMP%] { color: #AAE7FD; font-size: 12px; }\n\n .menu-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n background: #092340 !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.15) !important;\n color: white;\n }\n .conversation-item.active[_ngcontent-%COMP%] .menu-btn[_ngcontent-%COMP%] {\n background: #005A8C !important;\n color: white;\n }\n .menu-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n\n .context-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 160px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n pointer-events: auto;\n }\n\n .menu-item[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .menu-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: white;\n }\n\n .menu-item.danger[_ngcontent-%COMP%] {\n color: rgba(239, 68, 68, 0.9);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover {\n background: rgba(239, 68, 68, 0.15);\n color: #ff6b6b;\n }\n\n .menu-item.danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: rgba(239, 68, 68, 0.8);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #ff6b6b;\n }\n\n .menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: rgba(255,255,255,0.1);\n margin: 4px 0;\n }\n\n \n\n .conversation-item.renamed[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_renameHighlight 1500ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes _ngcontent-%COMP%_renameHighlight {\n 0% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.4), rgba(147, 51, 234, 0.4));\n transform: scale(1.03);\n box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);\n }\n 25% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.35), rgba(147, 51, 234, 0.35));\n box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);\n }\n 50% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.3), rgba(59, 130, 246, 0.3));\n transform: scale(1.02);\n box-shadow: 0 0 10px rgba(16, 185, 129, 0.3);\n }\n 75% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.2), rgba(59, 130, 246, 0.2));\n box-shadow: 0 0 5px rgba(16, 185, 129, 0.2);\n }\n 100% {\n background: transparent;\n transform: scale(1);\n box-shadow: none;\n }\n }"] });
|
|
181
303
|
}
|
|
182
304
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationListComponent, [{
|
|
183
305
|
type: Component,
|
|
@@ -195,16 +317,72 @@ export class ConversationListComponent {
|
|
|
195
317
|
<span>New Conversation</span>
|
|
196
318
|
</button>
|
|
197
319
|
<div class="list-content">
|
|
198
|
-
<!--
|
|
320
|
+
<!-- Pinned Section (only show if there are pinned conversations) -->
|
|
321
|
+
@if (pinnedConversations.length > 0) {
|
|
322
|
+
<div class="sidebar-section pinned-section">
|
|
323
|
+
<div class="section-header" [class.expanded]="pinnedExpanded" (click)="togglePinned()">
|
|
324
|
+
<div class="section-title">
|
|
325
|
+
<i class="fas fa-chevron-right"></i>
|
|
326
|
+
<i class="fas fa-thumbtack section-icon"></i>
|
|
327
|
+
<span>Pinned</span>
|
|
328
|
+
</div>
|
|
329
|
+
</div>
|
|
330
|
+
<div class="chat-list" [class.expanded]="pinnedExpanded">
|
|
331
|
+
@for (conversation of pinnedConversations; track conversation.ID) {
|
|
332
|
+
<div class="conversation-item"
|
|
333
|
+
[class.active]="conversation.ID === conversationState.activeConversationId"
|
|
334
|
+
[class.renamed]="conversation.ID === renamedConversationId"
|
|
335
|
+
(click)="selectConversation(conversation)">
|
|
336
|
+
<div class="conversation-icon-wrapper">
|
|
337
|
+
<div class="conversation-icon">
|
|
338
|
+
<i class="fas fa-comments"></i>
|
|
339
|
+
</div>
|
|
340
|
+
<div class="badge-overlay">
|
|
341
|
+
<mj-notification-badge [conversationId]="conversation.ID"></mj-notification-badge>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
<div class="conversation-info" [title]="conversation.Name + (conversation.Description ? '\n' + conversation.Description : '')">
|
|
345
|
+
<div class="conversation-name">{{ conversation.Name }}</div>
|
|
346
|
+
<div class="conversation-preview">{{ conversation.Description || 'No description' }}</div>
|
|
347
|
+
</div>
|
|
348
|
+
<div class="conversation-actions">
|
|
349
|
+
<button class="menu-btn" (click)="toggleMenu(conversation.ID, $event)" title="More options">
|
|
350
|
+
<i class="fas fa-ellipsis"></i>
|
|
351
|
+
</button>
|
|
352
|
+
@if (openMenuConversationId === conversation.ID) {
|
|
353
|
+
<div class="context-menu" (click)="$event.stopPropagation()">
|
|
354
|
+
<button class="menu-item" (click)="togglePin(conversation, $event)">
|
|
355
|
+
<i class="fas fa-thumbtack"></i>
|
|
356
|
+
<span>Unpin</span>
|
|
357
|
+
</button>
|
|
358
|
+
<button class="menu-item" (click)="renameConversation(conversation); closeMenu()">
|
|
359
|
+
<i class="fas fa-edit"></i>
|
|
360
|
+
<span>Rename</span>
|
|
361
|
+
</button>
|
|
362
|
+
<div class="menu-divider"></div>
|
|
363
|
+
<button class="menu-item danger" (click)="deleteConversation(conversation); closeMenu()">
|
|
364
|
+
<i class="fas fa-trash"></i>
|
|
365
|
+
<span>Delete</span>
|
|
366
|
+
</button>
|
|
367
|
+
</div>
|
|
368
|
+
}
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
}
|
|
372
|
+
</div>
|
|
373
|
+
</div>
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
<!-- Messages Section -->
|
|
199
377
|
<div class="sidebar-section">
|
|
200
378
|
<div class="section-header" [class.expanded]="directMessagesExpanded" (click)="toggleDirectMessages()">
|
|
201
379
|
<div class="section-title">
|
|
202
380
|
<i class="fas fa-chevron-right"></i>
|
|
203
|
-
<span>
|
|
381
|
+
<span>Messages</span>
|
|
204
382
|
</div>
|
|
205
383
|
</div>
|
|
206
384
|
<div class="chat-list" [class.expanded]="directMessagesExpanded">
|
|
207
|
-
@for (conversation of
|
|
385
|
+
@for (conversation of unpinnedConversations; track conversation.ID) {
|
|
208
386
|
<div class="conversation-item"
|
|
209
387
|
[class.active]="conversation.ID === conversationState.activeConversationId"
|
|
210
388
|
[class.renamed]="conversation.ID === renamedConversationId"
|
|
@@ -221,21 +399,27 @@ export class ConversationListComponent {
|
|
|
221
399
|
<div class="conversation-name">{{ conversation.Name }}</div>
|
|
222
400
|
<div class="conversation-preview">{{ conversation.Description || 'No description' }}</div>
|
|
223
401
|
</div>
|
|
224
|
-
<div class="conversation-
|
|
225
|
-
|
|
226
|
-
<i class="fas fa-
|
|
227
|
-
}
|
|
228
|
-
</div>
|
|
229
|
-
<div class="conversation-actions" (click)="$event.stopPropagation()">
|
|
230
|
-
<button class="action-btn" (click)="togglePin(conversation)" [title]="conversation.IsPinned ? 'Unpin' : 'Pin'" [class.pinned]="conversation.IsPinned">
|
|
231
|
-
<i class="fas fa-thumbtack"></i>
|
|
232
|
-
</button>
|
|
233
|
-
<button class="action-btn" (click)="renameConversation(conversation)" title="Rename">
|
|
234
|
-
<i class="fas fa-edit"></i>
|
|
235
|
-
</button>
|
|
236
|
-
<button class="action-btn danger" (click)="deleteConversation(conversation)" title="Delete">
|
|
237
|
-
<i class="fas fa-trash"></i>
|
|
402
|
+
<div class="conversation-actions">
|
|
403
|
+
<button class="menu-btn" (click)="toggleMenu(conversation.ID, $event)" title="More options">
|
|
404
|
+
<i class="fas fa-ellipsis"></i>
|
|
238
405
|
</button>
|
|
406
|
+
@if (openMenuConversationId === conversation.ID) {
|
|
407
|
+
<div class="context-menu" (click)="$event.stopPropagation()">
|
|
408
|
+
<button class="menu-item" (click)="togglePin(conversation, $event)">
|
|
409
|
+
<i class="fas fa-thumbtack"></i>
|
|
410
|
+
<span>Pin</span>
|
|
411
|
+
</button>
|
|
412
|
+
<button class="menu-item" (click)="renameConversation(conversation); closeMenu()">
|
|
413
|
+
<i class="fas fa-edit"></i>
|
|
414
|
+
<span>Rename</span>
|
|
415
|
+
</button>
|
|
416
|
+
<div class="menu-divider"></div>
|
|
417
|
+
<button class="menu-item danger" (click)="deleteConversation(conversation); closeMenu()">
|
|
418
|
+
<i class="fas fa-trash"></i>
|
|
419
|
+
<span>Delete</span>
|
|
420
|
+
</button>
|
|
421
|
+
</div>
|
|
422
|
+
}
|
|
239
423
|
</div>
|
|
240
424
|
</div>
|
|
241
425
|
}
|
|
@@ -243,13 +427,16 @@ export class ConversationListComponent {
|
|
|
243
427
|
</div>
|
|
244
428
|
</div>
|
|
245
429
|
</div>
|
|
246
|
-
`, styles: ["\n .conversation-list { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input::placeholder { color: rgba(255,255,255,0.5); }\n .search-input:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation:hover { background: #005A8C; }\n .btn-new-conversation i { font-size: 14px; }\n .list-content { flex: 1; overflow-y: auto; padding: 4px 0; }\n\n /* Collapsible Sections */\n .sidebar-section { margin-bottom: 20px; }\n .section-header {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header:hover { color: white; }\n .section-title {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title i {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded .section-title i { transform: rotate(90deg); }\n .chat-list {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded { display: block; }\n\n .conversation-item {\n padding: 6px
|
|
430
|
+
`, styles: ["\n .conversation-list { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input::placeholder { color: rgba(255,255,255,0.5); }\n .search-input:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation:hover { background: #005A8C; }\n .btn-new-conversation i { font-size: 14px; }\n .list-content { flex: 1; overflow-y: auto; padding: 4px 0; }\n\n /* Collapsible Sections */\n .sidebar-section { margin-bottom: 20px; }\n .pinned-section .section-header {\n background: rgba(255, 193, 7, 0.08);\n border-radius: 4px;\n margin: 0 4px;\n }\n .pinned-section .section-title .section-icon {\n color: #FFC107;\n font-size: 11px;\n margin-left: 2px;\n }\n .section-header {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header:hover { color: white; }\n .section-title {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title i {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded .section-title i { transform: rotate(90deg); }\n .chat-list {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded { display: block; }\n\n .conversation-item {\n padding: 6px 5px 6px 16px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n align-items: center;\n transition: all 0.2s;\n position: relative;\n color: rgba(255,255,255,0.7);\n font-size: 14px;\n }\n .conversation-item:hover { background: rgba(255,255,255,0.08); color: white; }\n .conversation-item:hover .conversation-actions { opacity: 1; }\n .conversation-item.active { background: #0076B6; color: white; }\n .conversation-icon-wrapper { position: relative; flex-shrink: 0; }\n .conversation-icon { font-size: 12px; width: 16px; text-align: center; }\n .badge-overlay { position: absolute; top: -4px; right: -4px; }\n .conversation-info { flex: 1; min-width: 0; }\n .conversation-name { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-preview { font-size: 12px; color: rgba(255,255,255,0.5); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active .conversation-preview { color: rgba(255,255,255,0.8); }\n .conversation-meta { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }\n\n /* Project Badge */\n .project-badge {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n margin-left: auto;\n background-color: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.6);\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .conversation-item:hover .project-badge {\n background-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n }\n .conversation-item.active .project-badge {\n background-color: rgba(255, 255, 255, 0.2);\n color: white;\n }\n\n .conversation-actions {\n position: absolute;\n right: 5px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 10;\n }\n .conversation-item:hover .conversation-actions { opacity: 1; pointer-events: auto; }\n .conversation-item.active .conversation-actions { opacity: 1; pointer-events: auto; }\n .conversation-actions > * { pointer-events: auto; }\n .pinned-icon { color: #AAE7FD; font-size: 12px; }\n\n .menu-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n background: #092340 !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn:hover {\n background: rgba(255,255,255,0.15) !important;\n color: white;\n }\n .conversation-item.active .menu-btn {\n background: #005A8C !important;\n color: white;\n }\n .menu-btn i { font-size: 14px; }\n\n .context-menu {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 160px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n pointer-events: auto;\n }\n\n .menu-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .menu-item i {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .menu-item:hover i {\n color: white;\n }\n\n .menu-item.danger {\n color: rgba(239, 68, 68, 0.9);\n }\n\n .menu-item.danger:hover {\n background: rgba(239, 68, 68, 0.15);\n color: #ff6b6b;\n }\n\n .menu-item.danger i {\n color: rgba(239, 68, 68, 0.8);\n }\n\n .menu-item.danger:hover i {\n color: #ff6b6b;\n }\n\n .menu-divider {\n height: 1px;\n background: rgba(255,255,255,0.1);\n margin: 4px 0;\n }\n\n /* Rename Animation */\n .conversation-item.renamed {\n animation: renameHighlight 1500ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes renameHighlight {\n 0% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.4), rgba(147, 51, 234, 0.4));\n transform: scale(1.03);\n box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);\n }\n 25% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.35), rgba(147, 51, 234, 0.35));\n box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);\n }\n 50% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.3), rgba(59, 130, 246, 0.3));\n transform: scale(1.02);\n box-shadow: 0 0 10px rgba(16, 185, 129, 0.3);\n }\n 75% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.2), rgba(59, 130, 246, 0.2));\n box-shadow: 0 0 5px rgba(16, 185, 129, 0.2);\n }\n 100% {\n background: transparent;\n transform: scale(1);\n box-shadow: none;\n }\n }\n "] }]
|
|
247
431
|
}], () => [{ type: i1.ConversationStateService }, { type: i2.DialogService }, { type: i3.NotificationService }, { type: i4.ToastService }], { environmentId: [{
|
|
248
432
|
type: Input
|
|
249
433
|
}], currentUser: [{
|
|
250
434
|
type: Input
|
|
251
435
|
}], renamedConversationId: [{
|
|
252
436
|
type: Input
|
|
437
|
+
}], onDocumentClick: [{
|
|
438
|
+
type: HostListener,
|
|
439
|
+
args: ['document:click']
|
|
253
440
|
}] }); })();
|
|
254
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber:
|
|
441
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber: 401 }); })();
|
|
255
442
|
//# sourceMappingURL=conversation-list.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-list.component.js","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC
|
|
1
|
+
{"version":3,"file":"conversation-list.component.js","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-list.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,12 @@ export declare class MentionDropdownComponent implements OnInit, OnDestroy {
|
|
|
38
38
|
* Track by function for ngFor
|
|
39
39
|
*/
|
|
40
40
|
trackBySuggestion(index: number, item: MentionSuggestion): string;
|
|
41
|
+
/**
|
|
42
|
+
* Get icon classes - supports both Font Awesome and custom CSS classes
|
|
43
|
+
* Font Awesome icons start with 'fa-' (e.g., 'fa-solid fa-robot')
|
|
44
|
+
* Custom icons use their own prefix (e.g., 'mj-icon-skip', 'acme-icon-custom')
|
|
45
|
+
*/
|
|
46
|
+
getIconClasses(iconClass: string): string | string[];
|
|
41
47
|
static ɵfac: i0.ɵɵFactoryDeclaration<MentionDropdownComponent, never>;
|
|
42
48
|
static ɵcmp: i0.ɵɵComponentDeclaration<MentionDropdownComponent, "mj-mention-dropdown", never, { "suggestions": { "alias": "suggestions"; "required": false; }; "position": { "alias": "position"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "showAbove": { "alias": "showAbove"; "required": false; }; }, { "suggestionSelected": "suggestionSelected"; "closed": "closed"; }, never, never, false, never>;
|
|
43
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mention-dropdown.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/mention/mention-dropdown.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,MAAM,EACN,SAAS,EAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;;AAEhF;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"mention-dropdown.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/mention/mention-dropdown.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,MAAM,EACN,SAAS,EAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;;AAEhF;;GAEG;AACH,qBAQa,wBAAyB,YAAW,MAAM,EAAE,SAAS;IACvD,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtC,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAuB;IAC9D,OAAO,EAAE,OAAO,CAAS;IACzB,SAAS,EAAE,OAAO,CAAS;IAE1B,kBAAkB,kCAAyC;IAC3D,MAAM,qBAA4B;IAErC,aAAa,EAAE,MAAM,CAAK;;IAIjC,QAAQ,IAAI,IAAI;IAEhB,WAAW,IAAI,IAAI;IAEnB;;OAEG;IAEH,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA4BzC;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIrD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,MAAM;IAIjE;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;yCAvFzC,wBAAwB;2CAAxB,wBAAwB;CAyGpC"}
|