@memberjunction/ng-conversations 2.128.0 → 2.129.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/conversation/conversation-chat-area.component.d.ts +2 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +166 -138
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +11 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +225 -119
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/message/agent-response-form.component.d.ts +18 -0
- package/dist/lib/components/message/agent-response-form.component.d.ts.map +1 -1
- package/dist/lib/components/message/agent-response-form.component.js +149 -26
- package/dist/lib/components/message/agent-response-form.component.js.map +1 -1
- package/dist/lib/components/message/form-question.component.js +3 -3
- package/dist/lib/components/message/message-input.component.d.ts +4 -1
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +78 -61
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +7 -2
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +56 -13
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +3 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +7 -3
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +7 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +28 -6
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +42 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +253 -40
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +2 -1
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +2 -1
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts +1 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts +1 -1
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/package.json +17 -17
|
@@ -10,110 +10,155 @@ import * as i5 from "@angular/forms";
|
|
|
10
10
|
import * as i6 from "@progress/kendo-angular-dialog";
|
|
11
11
|
import * as i7 from "../notification/notification-badge.component";
|
|
12
12
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
13
|
+
function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
15
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
16
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onUnpinSidebarClick($event)); });
|
|
17
|
+
i0.ɵɵelement(1, "i", 22);
|
|
18
|
+
i0.ɵɵelementStart(2, "span");
|
|
19
|
+
i0.ɵɵtext(3, "Unpin Sidebar");
|
|
20
|
+
i0.ɵɵelementEnd()();
|
|
21
|
+
} }
|
|
22
|
+
function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
24
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
25
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onPinSidebarClick($event)); });
|
|
26
|
+
i0.ɵɵelement(1, "i", 23);
|
|
27
|
+
i0.ɵɵelementStart(2, "span");
|
|
28
|
+
i0.ɵɵtext(3, "Pin Sidebar");
|
|
29
|
+
i0.ɵɵelementEnd()();
|
|
30
|
+
} }
|
|
31
|
+
function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵtemplate(0, ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_0_Template, 4, 0, "button", 21)(1, ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_1_Template, 4, 0, "button", 21);
|
|
33
|
+
} if (rf & 2) {
|
|
34
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
35
|
+
i0.ɵɵconditional(ctx_r1.isSidebarPinned ? 0 : 1);
|
|
36
|
+
} }
|
|
37
|
+
function ConversationListComponent_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
39
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "button", 19);
|
|
40
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSelectConversationsClick($event)); });
|
|
41
|
+
i0.ɵɵelement(2, "i", 20);
|
|
42
|
+
i0.ɵɵelementStart(3, "span");
|
|
43
|
+
i0.ɵɵtext(4, "Select Conversations");
|
|
44
|
+
i0.ɵɵelementEnd()();
|
|
45
|
+
i0.ɵɵtemplate(5, ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Template, 2, 1);
|
|
46
|
+
i0.ɵɵelementEnd();
|
|
47
|
+
} if (rf & 2) {
|
|
48
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
49
|
+
i0.ɵɵadvance(5);
|
|
50
|
+
i0.ɵɵconditional(!ctx_r1.isMobileView ? 5 : -1);
|
|
51
|
+
} }
|
|
13
52
|
function ConversationListComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
14
53
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
15
|
-
i0.ɵɵelementStart(0, "button", 16);
|
|
16
|
-
i0.ɵɵlistener("click", function
|
|
17
|
-
i0.ɵɵelement(
|
|
54
|
+
i0.ɵɵelementStart(0, "div", 4)(1, "button", 16);
|
|
55
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleHeaderMenu($event)); });
|
|
56
|
+
i0.ɵɵelement(2, "i", 17);
|
|
57
|
+
i0.ɵɵelementEnd();
|
|
58
|
+
i0.ɵɵtemplate(3, ConversationListComponent_Conditional_4_Conditional_3_Template, 6, 1, "div", 18);
|
|
18
59
|
i0.ɵɵelementEnd();
|
|
60
|
+
} if (rf & 2) {
|
|
61
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
62
|
+
i0.ɵɵadvance(3);
|
|
63
|
+
i0.ɵɵconditional(ctx_r1.isHeaderMenuOpen ? 3 : -1);
|
|
19
64
|
} }
|
|
20
65
|
function ConversationListComponent_Conditional_10_For_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
-
const
|
|
22
|
-
i0.ɵɵelementStart(0, "div",
|
|
23
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(
|
|
66
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
67
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "input", 35);
|
|
68
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const conversation_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.toggleConversationSelection(conversation_r8.ID)); });
|
|
24
69
|
i0.ɵɵelementEnd()();
|
|
25
70
|
} if (rf & 2) {
|
|
26
|
-
const
|
|
71
|
+
const conversation_r8 = i0.ɵɵnextContext().$implicit;
|
|
27
72
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
28
73
|
i0.ɵɵadvance();
|
|
29
|
-
i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(
|
|
74
|
+
i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(conversation_r8.ID));
|
|
30
75
|
} }
|
|
31
76
|
function ConversationListComponent_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
i0.ɵɵelementStart(0, "div",
|
|
33
|
-
i0.ɵɵelement(1, "i",
|
|
77
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
78
|
+
i0.ɵɵelement(1, "i", 36);
|
|
34
79
|
i0.ɵɵelementEnd();
|
|
35
80
|
} }
|
|
36
81
|
function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
const
|
|
38
|
-
i0.ɵɵelementStart(0, "div",
|
|
39
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
40
|
-
i0.ɵɵelementStart(1, "button",
|
|
41
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(
|
|
42
|
-
i0.ɵɵelement(2, "i",
|
|
82
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
83
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
84
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r11); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
85
|
+
i0.ɵɵelementStart(1, "button", 41);
|
|
86
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r11); const conversation_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r8, $event)); });
|
|
87
|
+
i0.ɵɵelement(2, "i", 23);
|
|
43
88
|
i0.ɵɵelementStart(3, "span");
|
|
44
89
|
i0.ɵɵtext(4, "Unpin");
|
|
45
90
|
i0.ɵɵelementEnd()();
|
|
46
|
-
i0.ɵɵelementStart(5, "button",
|
|
47
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(
|
|
48
|
-
i0.ɵɵelement(6, "i",
|
|
91
|
+
i0.ɵɵelementStart(5, "button", 41);
|
|
92
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const conversation_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.renameConversation(conversation_r8); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
93
|
+
i0.ɵɵelement(6, "i", 42);
|
|
49
94
|
i0.ɵɵelementStart(7, "span");
|
|
50
95
|
i0.ɵɵtext(8, "Rename");
|
|
51
96
|
i0.ɵɵelementEnd()();
|
|
52
|
-
i0.ɵɵelement(9, "div",
|
|
53
|
-
i0.ɵɵelementStart(10, "button",
|
|
54
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(
|
|
55
|
-
i0.ɵɵelement(11, "i",
|
|
97
|
+
i0.ɵɵelement(9, "div", 43);
|
|
98
|
+
i0.ɵɵelementStart(10, "button", 44);
|
|
99
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r11); const conversation_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.deleteConversation(conversation_r8); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
100
|
+
i0.ɵɵelement(11, "i", 45);
|
|
56
101
|
i0.ɵɵelementStart(12, "span");
|
|
57
102
|
i0.ɵɵtext(13, "Delete");
|
|
58
103
|
i0.ɵɵelementEnd()()();
|
|
59
104
|
} }
|
|
60
105
|
function ConversationListComponent_Conditional_10_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
-
const
|
|
62
|
-
i0.ɵɵelementStart(0, "div",
|
|
63
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(
|
|
64
|
-
i0.ɵɵelement(2, "i",
|
|
106
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
107
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "button", 37);
|
|
108
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r10); const conversation_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r8.ID, $event)); });
|
|
109
|
+
i0.ɵɵelement(2, "i", 38);
|
|
65
110
|
i0.ɵɵelementEnd();
|
|
66
|
-
i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template, 14, 0, "div",
|
|
111
|
+
i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template, 14, 0, "div", 39);
|
|
67
112
|
i0.ɵɵelementEnd();
|
|
68
113
|
} if (rf & 2) {
|
|
69
|
-
const
|
|
114
|
+
const conversation_r8 = i0.ɵɵnextContext().$implicit;
|
|
70
115
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
71
116
|
i0.ɵɵadvance(3);
|
|
72
|
-
i0.ɵɵconditional(ctx_r1.openMenuConversationId ===
|
|
117
|
+
i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r8.ID ? 3 : -1);
|
|
73
118
|
} }
|
|
74
119
|
function ConversationListComponent_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
-
const
|
|
76
|
-
i0.ɵɵelementStart(0, "div",
|
|
77
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Template_div_click_0_listener() { const
|
|
78
|
-
i0.ɵɵtemplate(1, ConversationListComponent_Conditional_10_For_9_Conditional_1_Template, 2, 1, "div",
|
|
79
|
-
i0.ɵɵelementStart(2, "div",
|
|
80
|
-
i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_3_Template, 2, 0, "div",
|
|
81
|
-
i0.ɵɵelementStart(4, "div",
|
|
82
|
-
i0.ɵɵelement(5, "mj-notification-badge",
|
|
120
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
121
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
122
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Template_div_click_0_listener() { const conversation_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleConversationClick(conversation_r8)); });
|
|
123
|
+
i0.ɵɵtemplate(1, ConversationListComponent_Conditional_10_For_9_Conditional_1_Template, 2, 1, "div", 26);
|
|
124
|
+
i0.ɵɵelementStart(2, "div", 27);
|
|
125
|
+
i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_3_Template, 2, 0, "div", 28);
|
|
126
|
+
i0.ɵɵelementStart(4, "div", 29);
|
|
127
|
+
i0.ɵɵelement(5, "mj-notification-badge", 30);
|
|
83
128
|
i0.ɵɵelementEnd()();
|
|
84
|
-
i0.ɵɵelementStart(6, "div",
|
|
129
|
+
i0.ɵɵelementStart(6, "div", 31)(7, "div", 32);
|
|
85
130
|
i0.ɵɵtext(8);
|
|
86
131
|
i0.ɵɵelementEnd();
|
|
87
|
-
i0.ɵɵelementStart(9, "div",
|
|
132
|
+
i0.ɵɵelementStart(9, "div", 33);
|
|
88
133
|
i0.ɵɵtext(10);
|
|
89
134
|
i0.ɵɵelementEnd()();
|
|
90
|
-
i0.ɵɵtemplate(11, ConversationListComponent_Conditional_10_For_9_Conditional_11_Template, 4, 1, "div",
|
|
135
|
+
i0.ɵɵtemplate(11, ConversationListComponent_Conditional_10_For_9_Conditional_11_Template, 4, 1, "div", 34);
|
|
91
136
|
i0.ɵɵelementEnd();
|
|
92
137
|
} if (rf & 2) {
|
|
93
|
-
const
|
|
138
|
+
const conversation_r8 = ctx.$implicit;
|
|
94
139
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
95
|
-
i0.ɵɵclassProp("active",
|
|
140
|
+
i0.ɵɵclassProp("active", conversation_r8.ID === ctx_r1.selectedConversationId)("renamed", conversation_r8.ID === ctx_r1.renamedConversationId);
|
|
96
141
|
i0.ɵɵadvance();
|
|
97
142
|
i0.ɵɵconditional(ctx_r1.isSelectionMode ? 1 : -1);
|
|
98
143
|
i0.ɵɵadvance(2);
|
|
99
|
-
i0.ɵɵconditional(ctx_r1.hasActiveTasks(
|
|
144
|
+
i0.ɵɵconditional(ctx_r1.hasActiveTasks(conversation_r8.ID) ? 3 : -1);
|
|
100
145
|
i0.ɵɵadvance(2);
|
|
101
|
-
i0.ɵɵproperty("conversationId",
|
|
146
|
+
i0.ɵɵproperty("conversationId", conversation_r8.ID);
|
|
102
147
|
i0.ɵɵadvance();
|
|
103
|
-
i0.ɵɵproperty("title",
|
|
148
|
+
i0.ɵɵproperty("title", conversation_r8.Name + (conversation_r8.Description ? "\n" + conversation_r8.Description : ""));
|
|
104
149
|
i0.ɵɵadvance(2);
|
|
105
|
-
i0.ɵɵtextInterpolate(
|
|
150
|
+
i0.ɵɵtextInterpolate(conversation_r8.Name);
|
|
106
151
|
i0.ɵɵadvance(2);
|
|
107
|
-
i0.ɵɵtextInterpolate(
|
|
152
|
+
i0.ɵɵtextInterpolate(conversation_r8.Description);
|
|
108
153
|
i0.ɵɵadvance();
|
|
109
154
|
i0.ɵɵconditional(!ctx_r1.isSelectionMode ? 11 : -1);
|
|
110
155
|
} }
|
|
111
156
|
function ConversationListComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
-
const
|
|
157
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
113
158
|
i0.ɵɵelementStart(0, "div", 8)(1, "div", 10);
|
|
114
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_Template_div_click_1_listener() { i0.ɵɵrestoreView(
|
|
159
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePinned()); });
|
|
115
160
|
i0.ɵɵelementStart(2, "div", 11);
|
|
116
|
-
i0.ɵɵelement(3, "i", 12)(4, "i",
|
|
161
|
+
i0.ɵɵelement(3, "i", 12)(4, "i", 24);
|
|
117
162
|
i0.ɵɵelementStart(5, "span");
|
|
118
163
|
i0.ɵɵtext(6, "Pinned");
|
|
119
164
|
i0.ɵɵelementEnd()()();
|
|
@@ -130,124 +175,124 @@ function ConversationListComponent_Conditional_10_Template(rf, ctx) { if (rf & 1
|
|
|
130
175
|
i0.ɵɵrepeater(ctx_r1.pinnedConversations);
|
|
131
176
|
} }
|
|
132
177
|
function ConversationListComponent_For_19_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
133
|
-
const
|
|
134
|
-
i0.ɵɵelementStart(0, "div",
|
|
135
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(
|
|
178
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
179
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "input", 35);
|
|
180
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r14); const conversation_r13 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.toggleConversationSelection(conversation_r13.ID)); });
|
|
136
181
|
i0.ɵɵelementEnd()();
|
|
137
182
|
} if (rf & 2) {
|
|
138
|
-
const
|
|
183
|
+
const conversation_r13 = i0.ɵɵnextContext().$implicit;
|
|
139
184
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
140
185
|
i0.ɵɵadvance();
|
|
141
|
-
i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(
|
|
186
|
+
i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(conversation_r13.ID));
|
|
142
187
|
} }
|
|
143
188
|
function ConversationListComponent_For_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
-
i0.ɵɵelementStart(0, "div",
|
|
145
|
-
i0.ɵɵelement(1, "i",
|
|
189
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
190
|
+
i0.ɵɵelement(1, "i", 36);
|
|
146
191
|
i0.ɵɵelementEnd();
|
|
147
192
|
} }
|
|
148
193
|
function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
-
const
|
|
150
|
-
i0.ɵɵelementStart(0, "div",
|
|
151
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
152
|
-
i0.ɵɵelementStart(1, "button",
|
|
153
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(
|
|
154
|
-
i0.ɵɵelement(2, "i",
|
|
194
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
195
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
196
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
197
|
+
i0.ɵɵelementStart(1, "button", 41);
|
|
198
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r16); const conversation_r13 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r13, $event)); });
|
|
199
|
+
i0.ɵɵelement(2, "i", 23);
|
|
155
200
|
i0.ɵɵelementStart(3, "span");
|
|
156
201
|
i0.ɵɵtext(4, "Pin");
|
|
157
202
|
i0.ɵɵelementEnd()();
|
|
158
|
-
i0.ɵɵelementStart(5, "button",
|
|
159
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(
|
|
160
|
-
i0.ɵɵelement(6, "i",
|
|
203
|
+
i0.ɵɵelementStart(5, "button", 41);
|
|
204
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r16); const conversation_r13 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.renameConversation(conversation_r13); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
205
|
+
i0.ɵɵelement(6, "i", 42);
|
|
161
206
|
i0.ɵɵelementStart(7, "span");
|
|
162
207
|
i0.ɵɵtext(8, "Rename");
|
|
163
208
|
i0.ɵɵelementEnd()();
|
|
164
|
-
i0.ɵɵelement(9, "div",
|
|
165
|
-
i0.ɵɵelementStart(10, "button",
|
|
166
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(
|
|
167
|
-
i0.ɵɵelement(11, "i",
|
|
209
|
+
i0.ɵɵelement(9, "div", 43);
|
|
210
|
+
i0.ɵɵelementStart(10, "button", 44);
|
|
211
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r16); const conversation_r13 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.deleteConversation(conversation_r13); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
212
|
+
i0.ɵɵelement(11, "i", 45);
|
|
168
213
|
i0.ɵɵelementStart(12, "span");
|
|
169
214
|
i0.ɵɵtext(13, "Delete");
|
|
170
215
|
i0.ɵɵelementEnd()()();
|
|
171
216
|
} }
|
|
172
217
|
function ConversationListComponent_For_19_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
-
const
|
|
174
|
-
i0.ɵɵelementStart(0, "div",
|
|
175
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(
|
|
176
|
-
i0.ɵɵelement(2, "i",
|
|
218
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
219
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "button", 37);
|
|
220
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r15); const conversation_r13 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r13.ID, $event)); });
|
|
221
|
+
i0.ɵɵelement(2, "i", 38);
|
|
177
222
|
i0.ɵɵelementEnd();
|
|
178
|
-
i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_11_Conditional_3_Template, 14, 0, "div",
|
|
223
|
+
i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_11_Conditional_3_Template, 14, 0, "div", 39);
|
|
179
224
|
i0.ɵɵelementEnd();
|
|
180
225
|
} if (rf & 2) {
|
|
181
|
-
const
|
|
226
|
+
const conversation_r13 = i0.ɵɵnextContext().$implicit;
|
|
182
227
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
183
228
|
i0.ɵɵadvance(3);
|
|
184
|
-
i0.ɵɵconditional(ctx_r1.openMenuConversationId ===
|
|
229
|
+
i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r13.ID ? 3 : -1);
|
|
185
230
|
} }
|
|
186
231
|
function ConversationListComponent_For_19_Template(rf, ctx) { if (rf & 1) {
|
|
187
|
-
const
|
|
188
|
-
i0.ɵɵelementStart(0, "div",
|
|
189
|
-
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Template_div_click_0_listener() { const
|
|
190
|
-
i0.ɵɵtemplate(1, ConversationListComponent_For_19_Conditional_1_Template, 2, 1, "div",
|
|
191
|
-
i0.ɵɵelementStart(2, "div",
|
|
192
|
-
i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_3_Template, 2, 0, "div",
|
|
193
|
-
i0.ɵɵelementStart(4, "div",
|
|
194
|
-
i0.ɵɵelement(5, "mj-notification-badge",
|
|
232
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
233
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
234
|
+
i0.ɵɵlistener("click", function ConversationListComponent_For_19_Template_div_click_0_listener() { const conversation_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleConversationClick(conversation_r13)); });
|
|
235
|
+
i0.ɵɵtemplate(1, ConversationListComponent_For_19_Conditional_1_Template, 2, 1, "div", 26);
|
|
236
|
+
i0.ɵɵelementStart(2, "div", 27);
|
|
237
|
+
i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_3_Template, 2, 0, "div", 28);
|
|
238
|
+
i0.ɵɵelementStart(4, "div", 29);
|
|
239
|
+
i0.ɵɵelement(5, "mj-notification-badge", 30);
|
|
195
240
|
i0.ɵɵelementEnd()();
|
|
196
|
-
i0.ɵɵelementStart(6, "div",
|
|
241
|
+
i0.ɵɵelementStart(6, "div", 31)(7, "div", 32);
|
|
197
242
|
i0.ɵɵtext(8);
|
|
198
243
|
i0.ɵɵelementEnd();
|
|
199
|
-
i0.ɵɵelementStart(9, "div",
|
|
244
|
+
i0.ɵɵelementStart(9, "div", 33);
|
|
200
245
|
i0.ɵɵtext(10);
|
|
201
246
|
i0.ɵɵelementEnd()();
|
|
202
|
-
i0.ɵɵtemplate(11, ConversationListComponent_For_19_Conditional_11_Template, 4, 1, "div",
|
|
247
|
+
i0.ɵɵtemplate(11, ConversationListComponent_For_19_Conditional_11_Template, 4, 1, "div", 34);
|
|
203
248
|
i0.ɵɵelementEnd();
|
|
204
249
|
} if (rf & 2) {
|
|
205
|
-
const
|
|
250
|
+
const conversation_r13 = ctx.$implicit;
|
|
206
251
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
207
|
-
i0.ɵɵclassProp("active",
|
|
252
|
+
i0.ɵɵclassProp("active", conversation_r13.ID === ctx_r1.selectedConversationId)("renamed", conversation_r13.ID === ctx_r1.renamedConversationId);
|
|
208
253
|
i0.ɵɵadvance();
|
|
209
254
|
i0.ɵɵconditional(ctx_r1.isSelectionMode ? 1 : -1);
|
|
210
255
|
i0.ɵɵadvance(2);
|
|
211
|
-
i0.ɵɵconditional(ctx_r1.hasActiveTasks(
|
|
256
|
+
i0.ɵɵconditional(ctx_r1.hasActiveTasks(conversation_r13.ID) ? 3 : -1);
|
|
212
257
|
i0.ɵɵadvance(2);
|
|
213
|
-
i0.ɵɵproperty("conversationId",
|
|
258
|
+
i0.ɵɵproperty("conversationId", conversation_r13.ID);
|
|
214
259
|
i0.ɵɵadvance();
|
|
215
|
-
i0.ɵɵproperty("title",
|
|
260
|
+
i0.ɵɵproperty("title", conversation_r13.Name + (conversation_r13.Description ? "\n" + conversation_r13.Description : ""));
|
|
216
261
|
i0.ɵɵadvance(2);
|
|
217
|
-
i0.ɵɵtextInterpolate(
|
|
262
|
+
i0.ɵɵtextInterpolate(conversation_r13.Name);
|
|
218
263
|
i0.ɵɵadvance(2);
|
|
219
|
-
i0.ɵɵtextInterpolate(
|
|
264
|
+
i0.ɵɵtextInterpolate(conversation_r13.Description);
|
|
220
265
|
i0.ɵɵadvance();
|
|
221
266
|
i0.ɵɵconditional(!ctx_r1.isSelectionMode ? 11 : -1);
|
|
222
267
|
} }
|
|
223
268
|
function ConversationListComponent_Conditional_20_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
224
|
-
const
|
|
225
|
-
i0.ɵɵelementStart(0, "button",
|
|
226
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
269
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
270
|
+
i0.ɵɵelementStart(0, "button", 52);
|
|
271
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectAll()); });
|
|
227
272
|
i0.ɵɵtext(1, "Select All");
|
|
228
273
|
i0.ɵɵelementEnd();
|
|
229
274
|
} }
|
|
230
275
|
function ConversationListComponent_Conditional_20_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
231
|
-
const
|
|
232
|
-
i0.ɵɵelementStart(0, "button",
|
|
233
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
276
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
277
|
+
i0.ɵɵelementStart(0, "button", 52);
|
|
278
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.deselectAll()); });
|
|
234
279
|
i0.ɵɵtext(1, "Deselect All");
|
|
235
280
|
i0.ɵɵelementEnd();
|
|
236
281
|
} }
|
|
237
282
|
function ConversationListComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
-
const
|
|
239
|
-
i0.ɵɵelementStart(0, "div", 15)(1, "div",
|
|
283
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
284
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 46)(2, "span", 47);
|
|
240
285
|
i0.ɵɵtext(3);
|
|
241
286
|
i0.ɵɵelementEnd();
|
|
242
|
-
i0.ɵɵtemplate(4, ConversationListComponent_Conditional_20_Conditional_4_Template, 2, 0, "button",
|
|
287
|
+
i0.ɵɵtemplate(4, ConversationListComponent_Conditional_20_Conditional_4_Template, 2, 0, "button", 48)(5, ConversationListComponent_Conditional_20_Conditional_5_Template, 2, 0, "button", 48);
|
|
243
288
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(6, "div",
|
|
245
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_7_listener() { i0.ɵɵrestoreView(
|
|
246
|
-
i0.ɵɵelement(8, "i",
|
|
289
|
+
i0.ɵɵelementStart(6, "div", 49)(7, "button", 50);
|
|
290
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.bulkDeleteConversations()); });
|
|
291
|
+
i0.ɵɵelement(8, "i", 45);
|
|
247
292
|
i0.ɵɵtext(9);
|
|
248
293
|
i0.ɵɵelementEnd();
|
|
249
|
-
i0.ɵɵelementStart(10, "button",
|
|
250
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_10_listener() { i0.ɵɵrestoreView(
|
|
294
|
+
i0.ɵɵelementStart(10, "button", 51);
|
|
295
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSelectionMode()); });
|
|
251
296
|
i0.ɵɵtext(11, " Cancel ");
|
|
252
297
|
i0.ɵɵelementEnd()()();
|
|
253
298
|
} if (rf & 2) {
|
|
@@ -271,8 +316,12 @@ export class ConversationListComponent {
|
|
|
271
316
|
currentUser;
|
|
272
317
|
selectedConversationId = null;
|
|
273
318
|
renamedConversationId = null;
|
|
319
|
+
isSidebarPinned = true; // Whether sidebar is pinned (stays open after selection)
|
|
320
|
+
isMobileView = false; // Whether we're on mobile (no pin options)
|
|
274
321
|
conversationSelected = new EventEmitter();
|
|
275
322
|
newConversationRequested = new EventEmitter();
|
|
323
|
+
pinSidebarRequested = new EventEmitter(); // Request to pin sidebar
|
|
324
|
+
unpinSidebarRequested = new EventEmitter(); // Request to unpin (collapse) sidebar
|
|
276
325
|
directMessagesExpanded = true;
|
|
277
326
|
pinnedExpanded = true;
|
|
278
327
|
openMenuConversationId = null;
|
|
@@ -280,6 +329,7 @@ export class ConversationListComponent {
|
|
|
280
329
|
isSelectionMode = false;
|
|
281
330
|
selectedConversationIds = new Set();
|
|
282
331
|
searchQuery = '';
|
|
332
|
+
isHeaderMenuOpen = false;
|
|
283
333
|
destroy$ = new Subject();
|
|
284
334
|
constructor(conversationData, dialogService, notificationService, activeTasksService, cdr) {
|
|
285
335
|
this.conversationData = conversationData;
|
|
@@ -316,10 +366,35 @@ export class ConversationListComponent {
|
|
|
316
366
|
this.destroy$.complete();
|
|
317
367
|
}
|
|
318
368
|
onDocumentClick() {
|
|
319
|
-
// Close
|
|
369
|
+
// Close menus when clicking outside
|
|
320
370
|
if (this.openMenuConversationId) {
|
|
321
371
|
this.closeMenu();
|
|
322
372
|
}
|
|
373
|
+
if (this.isHeaderMenuOpen) {
|
|
374
|
+
this.closeHeaderMenu();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
toggleHeaderMenu(event) {
|
|
378
|
+
event.stopPropagation();
|
|
379
|
+
this.isHeaderMenuOpen = !this.isHeaderMenuOpen;
|
|
380
|
+
}
|
|
381
|
+
closeHeaderMenu() {
|
|
382
|
+
this.isHeaderMenuOpen = false;
|
|
383
|
+
}
|
|
384
|
+
onSelectConversationsClick(event) {
|
|
385
|
+
event.stopPropagation();
|
|
386
|
+
this.toggleSelectionMode();
|
|
387
|
+
this.closeHeaderMenu();
|
|
388
|
+
}
|
|
389
|
+
onPinSidebarClick(event) {
|
|
390
|
+
event.stopPropagation();
|
|
391
|
+
this.closeHeaderMenu();
|
|
392
|
+
this.pinSidebarRequested.emit();
|
|
393
|
+
}
|
|
394
|
+
onUnpinSidebarClick(event) {
|
|
395
|
+
event.stopPropagation();
|
|
396
|
+
this.closeHeaderMenu();
|
|
397
|
+
this.unpinSidebarRequested.emit();
|
|
323
398
|
}
|
|
324
399
|
toggleDirectMessages() {
|
|
325
400
|
this.directMessagesExpanded = !this.directMessagesExpanded;
|
|
@@ -464,11 +539,11 @@ export class ConversationListComponent {
|
|
|
464
539
|
static ɵfac = function ConversationListComponent_Factory(t) { return new (t || ConversationListComponent)(i0.ɵɵdirectiveInject(i1.ConversationDataService), i0.ɵɵdirectiveInject(i2.DialogService), i0.ɵɵdirectiveInject(i3.NotificationService), i0.ɵɵdirectiveInject(i4.ActiveTasksService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
465
540
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConversationListComponent, selectors: [["mj-conversation-list"]], hostBindings: function ConversationListComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
466
541
|
i0.ɵɵlistener("click", function ConversationListComponent_click_HostBindingHandler() { return ctx.onDocumentClick(); }, false, i0.ɵɵresolveDocument);
|
|
467
|
-
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser", selectedConversationId: "selectedConversationId", renamedConversationId: "renamedConversationId" }, outputs: { conversationSelected: "conversationSelected", newConversationRequested: "newConversationRequested" }, decls: 21, vars: 8, consts: [["kendoDialogContainer", "", 1, "conversation-list"], [1, "list-header"], [1, "header-top"], ["type", "text", "placeholder", "Search conversations...", 1, "search-input", 3, "ngModelChange", "ngModel"], [
|
|
542
|
+
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser", selectedConversationId: "selectedConversationId", renamedConversationId: "renamedConversationId", isSidebarPinned: "isSidebarPinned", isMobileView: "isMobileView" }, outputs: { conversationSelected: "conversationSelected", newConversationRequested: "newConversationRequested", pinSidebarRequested: "pinSidebarRequested", unpinSidebarRequested: "unpinSidebarRequested" }, decls: 21, vars: 8, consts: [["kendoDialogContainer", "", 1, "conversation-list"], [1, "list-header"], [1, "header-top"], ["type", "text", "placeholder", "Search conversations...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "header-menu-container"], ["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, "selection-action-bar"], ["title", "Options", 1, "btn-menu", 3, "click"], [1, "fas", "fa-ellipsis-v"], [1, "header-dropdown-menu"], [1, "dropdown-item", 3, "click"], [1, "fas", "fa-check-square"], [1, "dropdown-item"], [1, "fas", "fa-thumbtack-slash"], [1, "fas", "fa-thumbtack"], [1, "fas", "fa-thumbtack", "section-icon"], [1, "conversation-item", 3, "click"], [1, "conversation-checkbox"], [1, "conversation-icon-wrapper"], [1, "conversation-icon", "has-tasks"], [1, "badge-overlay"], [3, "conversationId"], [1, "conversation-info", 3, "title"], [1, "conversation-name"], [1, "conversation-preview"], [1, "conversation-actions"], ["type", "checkbox", 3, "click", "checked"], [1, "fas", "fa-spinner", "fa-pulse"], ["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-edit"], [1, "menu-divider"], [1, "menu-item", "danger", 3, "click"], [1, "fas", "fa-trash"], [1, "selection-info"], [1, "selection-count"], [1, "link-btn"], [1, "selection-actions"], [1, "btn-delete-bulk", 3, "click", "disabled"], [1, "btn-cancel", 3, "click"], [1, "link-btn", 3, "click"]], template: function ConversationListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
468
543
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "input", 3);
|
|
469
544
|
i0.ɵɵtwoWayListener("ngModelChange", function ConversationListComponent_Template_input_ngModelChange_3_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchQuery, $event) || (ctx.searchQuery = $event); return $event; });
|
|
470
545
|
i0.ɵɵelementEnd();
|
|
471
|
-
i0.ɵɵtemplate(4, ConversationListComponent_Conditional_4_Template,
|
|
546
|
+
i0.ɵɵtemplate(4, ConversationListComponent_Conditional_4_Template, 4, 1, "div", 4);
|
|
472
547
|
i0.ɵɵelementEnd()();
|
|
473
548
|
i0.ɵɵelementStart(5, "button", 5);
|
|
474
549
|
i0.ɵɵlistener("click", function ConversationListComponent_Template_button_click_5_listener() { return ctx.createNewConversation(); });
|
|
@@ -505,7 +580,7 @@ export class ConversationListComponent {
|
|
|
505
580
|
i0.ɵɵrepeater(ctx.unpinnedConversations);
|
|
506
581
|
i0.ɵɵadvance(2);
|
|
507
582
|
i0.ɵɵconditional(ctx.isSelectionMode ? 20 : -1);
|
|
508
|
-
} }, dependencies: [i5.DefaultValueAccessor, i5.NgControlStatus, i5.NgModel, i6.DialogContainerDirective, i7.NotificationBadgeComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n .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; min-height: 0; 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 min-height: 45px;\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 .conversation-icon.has-tasks[_ngcontent-%COMP%] { color: #fb923c; }\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 \n\n .task-indicator[_ngcontent-%COMP%] {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: _ngcontent-%COMP%_pulse-glow 2s ease-in-out infinite;\n }\n @keyframes _ngcontent-%COMP%_pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active[_ngcontent-%COMP%] .task-indicator[_ngcontent-%COMP%] {\n color: #fbbf24;\n }\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 }\n\n \n\n .header-top[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n .btn-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count[_ngcontent-%COMP%] {\n color: white;\n }\n\n .link-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn[_ngcontent-%COMP%]:hover {\n color: white;\n }\n\n .selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }"] });
|
|
583
|
+
} }, dependencies: [i5.DefaultValueAccessor, i5.NgControlStatus, i5.NgModel, i6.DialogContainerDirective, i7.NotificationBadgeComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n .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; min-height: 0; 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 min-height: 45px;\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 .conversation-icon.has-tasks[_ngcontent-%COMP%] { color: #fb923c; }\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 \n\n .task-indicator[_ngcontent-%COMP%] {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: _ngcontent-%COMP%_pulse-glow 2s ease-in-out infinite;\n }\n @keyframes _ngcontent-%COMP%_pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active[_ngcontent-%COMP%] .task-indicator[_ngcontent-%COMP%] {\n color: #fbbf24;\n }\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 }\n\n \n\n .header-top[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n \n\n .header-menu-container[_ngcontent-%COMP%] {\n position: relative;\n flex-shrink: 0;\n }\n\n .btn-menu[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n min-width: 200px;\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 padding: 4px 0;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: white;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] .shortcut[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 11px;\n color: rgba(255,255,255,0.4);\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n .btn-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count[_ngcontent-%COMP%] {\n color: white;\n }\n\n .link-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn[_ngcontent-%COMP%]:hover {\n color: white;\n }\n\n .selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }"] });
|
|
509
584
|
}
|
|
510
585
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationListComponent, [{
|
|
511
586
|
type: Component,
|
|
@@ -519,9 +594,32 @@ export class ConversationListComponent {
|
|
|
519
594
|
placeholder="Search conversations..."
|
|
520
595
|
[(ngModel)]="searchQuery">
|
|
521
596
|
@if (!isSelectionMode) {
|
|
522
|
-
<
|
|
523
|
-
<
|
|
524
|
-
|
|
597
|
+
<div class="header-menu-container">
|
|
598
|
+
<button class="btn-menu" (click)="toggleHeaderMenu($event)" title="Options">
|
|
599
|
+
<i class="fas fa-ellipsis-v"></i>
|
|
600
|
+
</button>
|
|
601
|
+
@if (isHeaderMenuOpen) {
|
|
602
|
+
<div class="header-dropdown-menu">
|
|
603
|
+
<button class="dropdown-item" (click)="onSelectConversationsClick($event)">
|
|
604
|
+
<i class="fas fa-check-square"></i>
|
|
605
|
+
<span>Select Conversations</span>
|
|
606
|
+
</button>
|
|
607
|
+
@if (!isMobileView) {
|
|
608
|
+
@if (isSidebarPinned) {
|
|
609
|
+
<button class="dropdown-item" (click)="onUnpinSidebarClick($event)">
|
|
610
|
+
<i class="fas fa-thumbtack-slash"></i>
|
|
611
|
+
<span>Unpin Sidebar</span>
|
|
612
|
+
</button>
|
|
613
|
+
} @else {
|
|
614
|
+
<button class="dropdown-item" (click)="onPinSidebarClick($event)">
|
|
615
|
+
<i class="fas fa-thumbtack"></i>
|
|
616
|
+
<span>Pin Sidebar</span>
|
|
617
|
+
</button>
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
</div>
|
|
621
|
+
}
|
|
622
|
+
</div>
|
|
525
623
|
}
|
|
526
624
|
</div>
|
|
527
625
|
</div>
|
|
@@ -687,7 +785,7 @@ export class ConversationListComponent {
|
|
|
687
785
|
</div>
|
|
688
786
|
}
|
|
689
787
|
</div>
|
|
690
|
-
`, styles: ["\n :host { display: block; height: 100%; }\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; min-height: 0; 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 min-height: 45px;\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 .conversation-icon.has-tasks { color: #fb923c; }\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 /* Task Indicator */\n .task-indicator {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: pulse-glow 2s ease-in-out infinite;\n }\n @keyframes pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active .task-indicator {\n color: #fbbf24;\n }\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\n /* Selection Mode Styles */\n .header-top {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n .btn-select {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count {\n color: white;\n }\n\n .link-btn {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn:hover {\n color: white;\n }\n\n .selection-actions {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk i {\n font-size: 12px;\n }\n "] }]
|
|
788
|
+
`, styles: ["\n :host { display: block; height: 100%; }\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; min-height: 0; 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 min-height: 45px;\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 .conversation-icon.has-tasks { color: #fb923c; }\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 /* Task Indicator */\n .task-indicator {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: pulse-glow 2s ease-in-out infinite;\n }\n @keyframes pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active .task-indicator {\n color: #fbbf24;\n }\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\n /* Selection Mode Styles */\n .header-top {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n /* Header menu button and dropdown */\n .header-menu-container {\n position: relative;\n flex-shrink: 0;\n }\n\n .btn-menu {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .header-dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n min-width: 200px;\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 padding: 4px 0;\n }\n\n .header-dropdown-menu .dropdown-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .header-dropdown-menu .dropdown-item:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .header-dropdown-menu .dropdown-item i {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .header-dropdown-menu .dropdown-item:hover i {\n color: white;\n }\n\n .header-dropdown-menu .dropdown-item .shortcut {\n margin-left: auto;\n font-size: 11px;\n color: rgba(255,255,255,0.4);\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n .btn-select {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count {\n color: white;\n }\n\n .link-btn {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn:hover {\n color: white;\n }\n\n .selection-actions {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk i {\n font-size: 12px;\n }\n "] }]
|
|
691
789
|
}], () => [{ type: i1.ConversationDataService }, { type: i2.DialogService }, { type: i3.NotificationService }, { type: i4.ActiveTasksService }, { type: i0.ChangeDetectorRef }], { environmentId: [{
|
|
692
790
|
type: Input
|
|
693
791
|
}], currentUser: [{
|
|
@@ -696,13 +794,21 @@ export class ConversationListComponent {
|
|
|
696
794
|
type: Input
|
|
697
795
|
}], renamedConversationId: [{
|
|
698
796
|
type: Input
|
|
797
|
+
}], isSidebarPinned: [{
|
|
798
|
+
type: Input
|
|
799
|
+
}], isMobileView: [{
|
|
800
|
+
type: Input
|
|
699
801
|
}], conversationSelected: [{
|
|
700
802
|
type: Output
|
|
701
803
|
}], newConversationRequested: [{
|
|
702
804
|
type: Output
|
|
805
|
+
}], pinSidebarRequested: [{
|
|
806
|
+
type: Output
|
|
807
|
+
}], unpinSidebarRequested: [{
|
|
808
|
+
type: Output
|
|
703
809
|
}], onDocumentClick: [{
|
|
704
810
|
type: HostListener,
|
|
705
811
|
args: ['document:click']
|
|
706
812
|
}] }); })();
|
|
707
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber:
|
|
813
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber: 721 }); })();
|
|
708
814
|
//# sourceMappingURL=conversation-list.component.js.map
|