@memberjunction/ng-conversations 5.48.0 → 5.50.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/README.md +99 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +10 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +74 -14
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +76 -5
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +314 -161
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +7 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.js +45 -23
- package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +16 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +439 -351
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/export/export-modal.component.d.ts +25 -3
- package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
- package/dist/lib/components/export/export-modal.component.js +172 -34
- package/dist/lib/components/export/export-modal.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +6 -1
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +21 -3
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +58 -1
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +390 -224
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +36 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +102 -4
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js +2 -2
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js.map +1 -1
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js +2 -2
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +14 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +38 -5
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.d.ts +23 -1
- package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
- package/dist/lib/directives/chat-slot.directive.d.ts +10 -2
- package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
- package/dist/lib/directives/chat-slot.directive.js.map +1 -1
- package/dist/lib/models/lazy-artifact-info.d.ts +8 -7
- package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
- package/dist/lib/models/lazy-artifact-info.js +12 -11
- package/dist/lib/models/lazy-artifact-info.js.map +1 -1
- package/dist/lib/services/export.service.d.ts +149 -0
- package/dist/lib/services/export.service.d.ts.map +1 -1
- package/dist/lib/services/export.service.js +270 -36
- package/dist/lib/services/export.service.js.map +1 -1
- package/package.json +29 -29
|
@@ -16,511 +16,555 @@ const _c0 = a0 => ({ $implicit: a0 });
|
|
|
16
16
|
const _c1 = (a0, a1) => ({ $implicit: a0, depth: a1 });
|
|
17
17
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
18
18
|
const _forTrack1 = ($index, $item) => $item.project.ID;
|
|
19
|
-
function
|
|
19
|
+
function ConversationListComponent_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
21
|
+
i0.ɵɵelementStart(0, "input", 12);
|
|
22
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ConversationListComponent_Conditional_1_Conditional_2_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.searchQuery, $event) || (ctx_r1.searchQuery = $event); return i0.ɵɵresetView($event); });
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} if (rf & 2) {
|
|
25
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
26
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.searchQuery);
|
|
27
|
+
} }
|
|
28
|
+
function ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
20
29
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
21
30
|
i0.ɵɵelementStart(0, "button", 18);
|
|
22
|
-
i0.ɵɵlistener("click", function
|
|
31
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onUnpinSidebarClick($event)); });
|
|
23
32
|
i0.ɵɵelement(1, "i", 22);
|
|
24
33
|
i0.ɵɵelementStart(2, "span");
|
|
25
34
|
i0.ɵɵtext(3, "Hide Sidebar");
|
|
26
35
|
i0.ɵɵelementEnd()();
|
|
27
36
|
} }
|
|
28
|
-
function
|
|
37
|
+
function ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
29
38
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
30
39
|
i0.ɵɵelementStart(0, "div", 15)(1, "button", 16);
|
|
31
|
-
i0.ɵɵlistener("click", function
|
|
40
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onRefreshConversationsClick($event)); });
|
|
32
41
|
i0.ɵɵelement(2, "i", 17);
|
|
33
42
|
i0.ɵɵelementStart(3, "span");
|
|
34
43
|
i0.ɵɵtext(4);
|
|
35
44
|
i0.ɵɵelementEnd()();
|
|
36
45
|
i0.ɵɵelementStart(5, "button", 18);
|
|
37
|
-
i0.ɵɵlistener("click", function
|
|
46
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Template_button_click_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onSelectConversationsClick($event)); });
|
|
38
47
|
i0.ɵɵelement(6, "i", 19);
|
|
39
48
|
i0.ɵɵelementStart(7, "span");
|
|
40
49
|
i0.ɵɵtext(8, "Select Conversations");
|
|
41
50
|
i0.ɵɵelementEnd()();
|
|
42
51
|
i0.ɵɵelementStart(9, "button", 18);
|
|
43
|
-
i0.ɵɵlistener("click", function
|
|
52
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Template_button_click_9_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onToggleGroupByClick($event)); });
|
|
44
53
|
i0.ɵɵelement(10, "i", 20);
|
|
45
54
|
i0.ɵɵelementStart(11, "span");
|
|
46
55
|
i0.ɵɵtext(12);
|
|
47
56
|
i0.ɵɵelementEnd()();
|
|
48
|
-
i0.ɵɵconditionalCreate(13,
|
|
57
|
+
i0.ɵɵconditionalCreate(13, ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Conditional_13_Template, 4, 0, "button", 21);
|
|
49
58
|
i0.ɵɵelementEnd();
|
|
50
59
|
} if (rf & 2) {
|
|
51
|
-
const
|
|
60
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
52
61
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵproperty("disabled",
|
|
62
|
+
i0.ɵɵproperty("disabled", ctx_r1.isRefreshing);
|
|
54
63
|
i0.ɵɵadvance();
|
|
55
|
-
i0.ɵɵclassProp("fa-spin",
|
|
64
|
+
i0.ɵɵclassProp("fa-spin", ctx_r1.isRefreshing);
|
|
56
65
|
i0.ɵɵadvance(2);
|
|
57
|
-
i0.ɵɵtextInterpolate(
|
|
66
|
+
i0.ɵɵtextInterpolate(ctx_r1.isRefreshing ? "Refreshing..." : "Refresh");
|
|
58
67
|
i0.ɵɵadvance(6);
|
|
59
|
-
i0.ɵɵclassProp("fa-folder-tree",
|
|
68
|
+
i0.ɵɵclassProp("fa-folder-tree", ctx_r1.groupBy !== "project")("fa-list", ctx_r1.groupBy === "project");
|
|
60
69
|
i0.ɵɵadvance(2);
|
|
61
|
-
i0.ɵɵtextInterpolate(
|
|
70
|
+
i0.ɵɵtextInterpolate(ctx_r1.groupBy === "project" ? "Show as flat list" : "Group by folder");
|
|
62
71
|
i0.ɵɵadvance();
|
|
63
|
-
i0.ɵɵconditional(!
|
|
72
|
+
i0.ɵɵconditional(!ctx_r1.isMobileView ? 13 : -1);
|
|
64
73
|
} }
|
|
65
|
-
function
|
|
66
|
-
const
|
|
67
|
-
i0.ɵɵelementStart(0, "div",
|
|
68
|
-
i0.ɵɵlistener("click", function
|
|
74
|
+
function ConversationListComponent_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
76
|
+
i0.ɵɵelementStart(0, "div", 11)(1, "button", 13);
|
|
77
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_1_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleHeaderMenu($event)); });
|
|
69
78
|
i0.ɵɵelement(2, "i", 14);
|
|
70
79
|
i0.ɵɵelementEnd();
|
|
71
|
-
i0.ɵɵconditionalCreate(3,
|
|
80
|
+
i0.ɵɵconditionalCreate(3, ConversationListComponent_Conditional_1_Conditional_3_Conditional_3_Template, 14, 10, "div", 15);
|
|
72
81
|
i0.ɵɵelementEnd();
|
|
73
82
|
} if (rf & 2) {
|
|
74
|
-
const
|
|
83
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
75
84
|
i0.ɵɵadvance(3);
|
|
76
|
-
i0.ɵɵconditional(
|
|
85
|
+
i0.ɵɵconditional(ctx_r1.isHeaderMenuOpen ? 3 : -1);
|
|
77
86
|
} }
|
|
78
|
-
function
|
|
79
|
-
i0.ɵɵ
|
|
87
|
+
function ConversationListComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 9);
|
|
89
|
+
i0.ɵɵconditionalCreate(2, ConversationListComponent_Conditional_1_Conditional_2_Template, 1, 1, "input", 10);
|
|
90
|
+
i0.ɵɵconditionalCreate(3, ConversationListComponent_Conditional_1_Conditional_3_Template, 4, 1, "div", 11);
|
|
91
|
+
i0.ɵɵelementEnd()();
|
|
80
92
|
} if (rf & 2) {
|
|
81
|
-
const
|
|
82
|
-
i0.ɵɵ
|
|
83
|
-
|
|
84
|
-
i0.ɵɵ
|
|
93
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
94
|
+
i0.ɵɵadvance(2);
|
|
95
|
+
i0.ɵɵconditional(ctx_r1.showSearch ? 2 : -1);
|
|
96
|
+
i0.ɵɵadvance();
|
|
97
|
+
i0.ɵɵconditional(ctx_r1.showHeaderMenu && !ctx_r1.isSelectionMode ? 3 : -1);
|
|
85
98
|
} }
|
|
86
|
-
function
|
|
99
|
+
function ConversationListComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
87
100
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
88
|
-
i0.ɵɵelementStart(0, "
|
|
89
|
-
i0.ɵɵlistener("click", function
|
|
90
|
-
i0.ɵɵ
|
|
91
|
-
i0.ɵɵ
|
|
92
|
-
i0.ɵɵ
|
|
93
|
-
i0.ɵɵ
|
|
101
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
102
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.createNewConversation()); });
|
|
103
|
+
i0.ɵɵelement(1, "i", 24);
|
|
104
|
+
i0.ɵɵelementStart(2, "span");
|
|
105
|
+
i0.ɵɵtext(3, "New Conversation");
|
|
106
|
+
i0.ɵɵelementEnd()();
|
|
107
|
+
} }
|
|
108
|
+
function ConversationListComponent_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
109
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
110
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
111
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.togglePinned()); });
|
|
112
|
+
i0.ɵɵelementStart(1, "div", 29);
|
|
113
|
+
i0.ɵɵelement(2, "i", 30)(3, "i", 31);
|
|
114
|
+
i0.ɵɵelementStart(4, "span");
|
|
115
|
+
i0.ɵɵtext(5, "Pinned");
|
|
94
116
|
i0.ɵɵelementEnd()()();
|
|
95
|
-
|
|
96
|
-
i0.ɵɵ
|
|
117
|
+
} if (rf & 2) {
|
|
118
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
119
|
+
i0.ɵɵclassProp("expanded", ctx_r1.pinnedExpanded);
|
|
120
|
+
} }
|
|
121
|
+
function ConversationListComponent_Conditional_4_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
122
|
+
i0.ɵɵelementContainer(0, 27);
|
|
123
|
+
} if (rf & 2) {
|
|
124
|
+
const conversation_r8 = ctx.$implicit;
|
|
125
|
+
i0.ɵɵnextContext(2);
|
|
126
|
+
const conversationItem_r9 = i0.ɵɵreference(11);
|
|
127
|
+
i0.ɵɵproperty("ngTemplateOutlet", conversationItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, conversation_r8));
|
|
128
|
+
} }
|
|
129
|
+
function ConversationListComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
130
|
+
i0.ɵɵelementStart(0, "div", 6);
|
|
131
|
+
i0.ɵɵconditionalCreate(1, ConversationListComponent_Conditional_4_Conditional_1_Template, 6, 2, "div", 25);
|
|
132
|
+
i0.ɵɵelementStart(2, "div", 26);
|
|
133
|
+
i0.ɵɵrepeaterCreate(3, ConversationListComponent_Conditional_4_For_4_Template, 1, 4, "ng-container", 27, _forTrack0);
|
|
97
134
|
i0.ɵɵelementEnd()();
|
|
98
135
|
} if (rf & 2) {
|
|
99
|
-
const
|
|
136
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
100
137
|
i0.ɵɵadvance();
|
|
101
|
-
i0.ɵɵ
|
|
102
|
-
i0.ɵɵadvance(
|
|
103
|
-
i0.ɵɵclassProp("expanded",
|
|
138
|
+
i0.ɵɵconditional(ctx_r1.showSectionHeaders ? 1 : -1);
|
|
139
|
+
i0.ɵɵadvance();
|
|
140
|
+
i0.ɵɵclassProp("expanded", !ctx_r1.showSectionHeaders || ctx_r1.pinnedExpanded);
|
|
104
141
|
i0.ɵɵadvance();
|
|
105
|
-
i0.ɵɵrepeater(
|
|
142
|
+
i0.ɵɵrepeater(ctx_r1.pinnedConversations);
|
|
106
143
|
} }
|
|
107
|
-
function
|
|
108
|
-
i0.ɵɵelementContainer(0,
|
|
144
|
+
function ConversationListComponent_Conditional_5_For_10_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
+
i0.ɵɵelementContainer(0, 27);
|
|
109
146
|
} if (rf & 2) {
|
|
110
|
-
const
|
|
147
|
+
const node_r11 = i0.ɵɵnextContext().$implicit;
|
|
111
148
|
i0.ɵɵnextContext(2);
|
|
112
|
-
const
|
|
113
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
149
|
+
const folderNode_r12 = i0.ɵɵreference(9);
|
|
150
|
+
i0.ɵɵproperty("ngTemplateOutlet", folderNode_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, node_r11));
|
|
114
151
|
} }
|
|
115
|
-
function
|
|
116
|
-
i0.ɵɵconditionalCreate(0,
|
|
152
|
+
function ConversationListComponent_Conditional_5_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
+
i0.ɵɵconditionalCreate(0, ConversationListComponent_Conditional_5_For_10_Conditional_0_Template, 1, 4, "ng-container", 27);
|
|
117
154
|
} if (rf & 2) {
|
|
118
|
-
const
|
|
119
|
-
const
|
|
120
|
-
i0.ɵɵconditional(!
|
|
155
|
+
const node_r11 = ctx.$implicit;
|
|
156
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
157
|
+
i0.ɵɵconditional(!ctx_r1.isSearching || node_r11.hasContent ? 0 : -1);
|
|
121
158
|
} }
|
|
122
|
-
function
|
|
123
|
-
i0.ɵɵelementStart(0, "div",
|
|
159
|
+
function ConversationListComponent_Conditional_5_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
160
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
124
161
|
i0.ɵɵtext(1, "No folders yet \u2014 create one to organize conversations.");
|
|
125
162
|
i0.ɵɵelementEnd();
|
|
126
163
|
} }
|
|
127
|
-
function
|
|
128
|
-
i0.ɵɵelementContainer(0,
|
|
164
|
+
function ConversationListComponent_Conditional_5_For_20_Template(rf, ctx) { if (rf & 1) {
|
|
165
|
+
i0.ɵɵelementContainer(0, 27);
|
|
129
166
|
} if (rf & 2) {
|
|
130
|
-
const
|
|
167
|
+
const conversation_r13 = ctx.$implicit;
|
|
131
168
|
i0.ɵɵnextContext(2);
|
|
132
|
-
const
|
|
133
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
169
|
+
const conversationItem_r9 = i0.ɵɵreference(11);
|
|
170
|
+
i0.ɵɵproperty("ngTemplateOutlet", conversationItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, conversation_r13));
|
|
134
171
|
} }
|
|
135
|
-
function
|
|
136
|
-
const
|
|
137
|
-
i0.ɵɵelementStart(0, "div",
|
|
138
|
-
i0.ɵɵlistener("click", function
|
|
139
|
-
i0.ɵɵelementStart(2, "div",
|
|
140
|
-
i0.ɵɵelement(3, "i",
|
|
172
|
+
function ConversationListComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
174
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "div", 33);
|
|
175
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_5_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFolders()); })("dragover", function ConversationListComponent_Conditional_5_Template_div_dragover_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFoldersRootDragOver($event)); })("dragleave", function ConversationListComponent_Conditional_5_Template_div_dragleave_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDragLeave("folders-root")); })("drop", function ConversationListComponent_Conditional_5_Template_div_drop_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFoldersRootDrop($event)); });
|
|
176
|
+
i0.ɵɵelementStart(2, "div", 29);
|
|
177
|
+
i0.ɵɵelement(3, "i", 30);
|
|
141
178
|
i0.ɵɵelementStart(4, "span");
|
|
142
179
|
i0.ɵɵtext(5, "Folders");
|
|
143
180
|
i0.ɵɵelementEnd()();
|
|
144
|
-
i0.ɵɵelementStart(6, "button",
|
|
145
|
-
i0.ɵɵlistener("click", function
|
|
146
|
-
i0.ɵɵelement(7, "i",
|
|
181
|
+
i0.ɵɵelementStart(6, "button", 34);
|
|
182
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_5_Template_button_click_6_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.createFolder(null, $event)); });
|
|
183
|
+
i0.ɵɵelement(7, "i", 35);
|
|
147
184
|
i0.ɵɵelementEnd()();
|
|
148
|
-
i0.ɵɵelementStart(8, "div",
|
|
149
|
-
i0.ɵɵrepeaterCreate(9,
|
|
150
|
-
i0.ɵɵconditionalCreate(11,
|
|
185
|
+
i0.ɵɵelementStart(8, "div", 26);
|
|
186
|
+
i0.ɵɵrepeaterCreate(9, ConversationListComponent_Conditional_5_For_10_Template, 1, 1, null, null, _forTrack1);
|
|
187
|
+
i0.ɵɵconditionalCreate(11, ConversationListComponent_Conditional_5_Conditional_11_Template, 2, 0, "div", 36);
|
|
151
188
|
i0.ɵɵelementEnd()();
|
|
152
|
-
i0.ɵɵelementStart(12, "div",
|
|
153
|
-
i0.ɵɵlistener("dragover", function
|
|
154
|
-
i0.ɵɵelementStart(13, "div",
|
|
155
|
-
i0.ɵɵlistener("click", function
|
|
156
|
-
i0.ɵɵelementStart(14, "div",
|
|
157
|
-
i0.ɵɵelement(15, "i",
|
|
189
|
+
i0.ɵɵelementStart(12, "div", 37);
|
|
190
|
+
i0.ɵɵlistener("dragover", function ConversationListComponent_Conditional_5_Template_div_dragover_12_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onUngroupedDragOver($event)); })("dragleave", function ConversationListComponent_Conditional_5_Template_div_dragleave_12_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDragLeave("ungrouped")); })("drop", function ConversationListComponent_Conditional_5_Template_div_drop_12_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onUngroupedDrop($event)); });
|
|
191
|
+
i0.ɵɵelementStart(13, "div", 28);
|
|
192
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_5_Template_div_click_13_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleUngrouped()); });
|
|
193
|
+
i0.ɵɵelementStart(14, "div", 29);
|
|
194
|
+
i0.ɵɵelement(15, "i", 30);
|
|
158
195
|
i0.ɵɵelementStart(16, "span");
|
|
159
196
|
i0.ɵɵtext(17);
|
|
160
197
|
i0.ɵɵelementEnd()()();
|
|
161
|
-
i0.ɵɵelementStart(18, "div",
|
|
162
|
-
i0.ɵɵrepeaterCreate(19,
|
|
198
|
+
i0.ɵɵelementStart(18, "div", 26);
|
|
199
|
+
i0.ɵɵrepeaterCreate(19, ConversationListComponent_Conditional_5_For_20_Template, 1, 4, "ng-container", 27, _forTrack0);
|
|
163
200
|
i0.ɵɵelementEnd()();
|
|
164
201
|
} if (rf & 2) {
|
|
165
|
-
const
|
|
202
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
166
203
|
i0.ɵɵadvance();
|
|
167
|
-
i0.ɵɵclassProp("expanded",
|
|
204
|
+
i0.ɵɵclassProp("expanded", ctx_r1.foldersExpanded)("drag-over", ctx_r1.dragOverTargetId === "folders-root");
|
|
168
205
|
i0.ɵɵadvance(7);
|
|
169
|
-
i0.ɵɵclassProp("expanded",
|
|
206
|
+
i0.ɵɵclassProp("expanded", ctx_r1.foldersExpanded);
|
|
170
207
|
i0.ɵɵadvance();
|
|
171
|
-
i0.ɵɵrepeater(
|
|
208
|
+
i0.ɵɵrepeater(ctx_r1.folderTree);
|
|
172
209
|
i0.ɵɵadvance(2);
|
|
173
|
-
i0.ɵɵconditional(
|
|
210
|
+
i0.ɵɵconditional(ctx_r1.folderTree.length === 0 ? 11 : -1);
|
|
174
211
|
i0.ɵɵadvance();
|
|
175
|
-
i0.ɵɵclassProp("drag-over",
|
|
212
|
+
i0.ɵɵclassProp("drag-over", ctx_r1.dragOverTargetId === "ungrouped");
|
|
176
213
|
i0.ɵɵadvance();
|
|
177
|
-
i0.ɵɵclassProp("expanded",
|
|
214
|
+
i0.ɵɵclassProp("expanded", ctx_r1.ungroupedExpanded);
|
|
178
215
|
i0.ɵɵadvance(4);
|
|
179
|
-
i0.ɵɵtextInterpolate(
|
|
216
|
+
i0.ɵɵtextInterpolate(ctx_r1.folderTree.length > 0 ? "Ungrouped" : "Messages");
|
|
180
217
|
i0.ɵɵadvance();
|
|
181
|
-
i0.ɵɵclassProp("expanded",
|
|
218
|
+
i0.ɵɵclassProp("expanded", ctx_r1.ungroupedExpanded);
|
|
182
219
|
i0.ɵɵadvance();
|
|
183
|
-
i0.ɵɵrepeater(
|
|
220
|
+
i0.ɵɵrepeater(ctx_r1.ungroupedConversations);
|
|
221
|
+
} }
|
|
222
|
+
function ConversationListComponent_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
224
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
225
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_6_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleDirectMessages()); });
|
|
226
|
+
i0.ɵɵelementStart(1, "div", 29);
|
|
227
|
+
i0.ɵɵelement(2, "i", 30);
|
|
228
|
+
i0.ɵɵelementStart(3, "span");
|
|
229
|
+
i0.ɵɵtext(4, "Messages");
|
|
230
|
+
i0.ɵɵelementEnd()()();
|
|
231
|
+
} if (rf & 2) {
|
|
232
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
233
|
+
i0.ɵɵclassProp("expanded", ctx_r1.directMessagesExpanded);
|
|
184
234
|
} }
|
|
185
|
-
function
|
|
186
|
-
i0.ɵɵelementContainer(0,
|
|
235
|
+
function ConversationListComponent_Conditional_6_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
+
i0.ɵɵelementContainer(0, 27);
|
|
187
237
|
} if (rf & 2) {
|
|
188
|
-
const
|
|
238
|
+
const conversation_r15 = ctx.$implicit;
|
|
189
239
|
i0.ɵɵnextContext(2);
|
|
190
|
-
const
|
|
191
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
240
|
+
const conversationItem_r9 = i0.ɵɵreference(11);
|
|
241
|
+
i0.ɵɵproperty("ngTemplateOutlet", conversationItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, conversation_r15));
|
|
192
242
|
} }
|
|
193
|
-
function
|
|
194
|
-
|
|
195
|
-
i0.ɵɵ
|
|
196
|
-
i0.ɵɵ
|
|
197
|
-
i0.ɵɵ
|
|
198
|
-
i0.ɵɵelement(3, "i", 25);
|
|
199
|
-
i0.ɵɵelementStart(4, "span");
|
|
200
|
-
i0.ɵɵtext(5, "Messages");
|
|
201
|
-
i0.ɵɵelementEnd()()();
|
|
202
|
-
i0.ɵɵelementStart(6, "div", 27);
|
|
203
|
-
i0.ɵɵrepeaterCreate(7, ConversationListComponent_Conditional_12_For_8_Template, 1, 4, "ng-container", 28, _forTrack0);
|
|
243
|
+
function ConversationListComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
244
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
245
|
+
i0.ɵɵconditionalCreate(1, ConversationListComponent_Conditional_6_Conditional_1_Template, 5, 2, "div", 25);
|
|
246
|
+
i0.ɵɵelementStart(2, "div", 26);
|
|
247
|
+
i0.ɵɵrepeaterCreate(3, ConversationListComponent_Conditional_6_For_4_Template, 1, 4, "ng-container", 27, _forTrack0);
|
|
204
248
|
i0.ɵɵelementEnd()();
|
|
205
249
|
} if (rf & 2) {
|
|
206
|
-
const
|
|
250
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
207
251
|
i0.ɵɵadvance();
|
|
208
|
-
i0.ɵɵ
|
|
209
|
-
i0.ɵɵadvance(5);
|
|
210
|
-
i0.ɵɵclassProp("expanded", ctx_r2.directMessagesExpanded);
|
|
252
|
+
i0.ɵɵconditional(ctx_r1.showSectionHeaders ? 1 : -1);
|
|
211
253
|
i0.ɵɵadvance();
|
|
212
|
-
i0.ɵɵ
|
|
254
|
+
i0.ɵɵclassProp("expanded", !ctx_r1.showSectionHeaders || ctx_r1.directMessagesExpanded);
|
|
255
|
+
i0.ɵɵadvance();
|
|
256
|
+
i0.ɵɵrepeater(ctx_r1.unpinnedConversations);
|
|
213
257
|
} }
|
|
214
|
-
function
|
|
215
|
-
const
|
|
216
|
-
i0.ɵɵelementStart(0, "button",
|
|
217
|
-
i0.ɵɵlistener("click", function
|
|
258
|
+
function ConversationListComponent_Conditional_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
259
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
260
|
+
i0.ɵɵelementStart(0, "button", 45);
|
|
261
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_7_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectAll()); });
|
|
218
262
|
i0.ɵɵtext(1, "Select All");
|
|
219
263
|
i0.ɵɵelementEnd();
|
|
220
264
|
} }
|
|
221
|
-
function
|
|
222
|
-
const
|
|
223
|
-
i0.ɵɵelementStart(0, "button",
|
|
224
|
-
i0.ɵɵlistener("click", function
|
|
265
|
+
function ConversationListComponent_Conditional_7_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
266
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
267
|
+
i0.ɵɵelementStart(0, "button", 45);
|
|
268
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_7_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.deselectAll()); });
|
|
225
269
|
i0.ɵɵtext(1, "Deselect All");
|
|
226
270
|
i0.ɵɵelementEnd();
|
|
227
271
|
} }
|
|
228
|
-
function
|
|
229
|
-
const
|
|
230
|
-
i0.ɵɵelementStart(0, "div",
|
|
272
|
+
function ConversationListComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
273
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
274
|
+
i0.ɵɵelementStart(0, "div", 8)(1, "div", 38)(2, "span", 39);
|
|
231
275
|
i0.ɵɵtext(3);
|
|
232
276
|
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵconditionalCreate(4,
|
|
277
|
+
i0.ɵɵconditionalCreate(4, ConversationListComponent_Conditional_7_Conditional_4_Template, 2, 0, "button", 40)(5, ConversationListComponent_Conditional_7_Conditional_5_Template, 2, 0, "button", 40);
|
|
234
278
|
i0.ɵɵelementEnd();
|
|
235
|
-
i0.ɵɵelementStart(6, "div",
|
|
236
|
-
i0.ɵɵlistener("click", function
|
|
237
|
-
i0.ɵɵelement(8, "i",
|
|
279
|
+
i0.ɵɵelementStart(6, "div", 41)(7, "button", 42);
|
|
280
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_7_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.bulkDeleteConversations()); });
|
|
281
|
+
i0.ɵɵelement(8, "i", 43);
|
|
238
282
|
i0.ɵɵtext(9);
|
|
239
283
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵelementStart(10, "button",
|
|
241
|
-
i0.ɵɵlistener("click", function
|
|
284
|
+
i0.ɵɵelementStart(10, "button", 44);
|
|
285
|
+
i0.ɵɵlistener("click", function ConversationListComponent_Conditional_7_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSelectionMode()); });
|
|
242
286
|
i0.ɵɵtext(11, " Cancel ");
|
|
243
287
|
i0.ɵɵelementEnd()()();
|
|
244
288
|
} if (rf & 2) {
|
|
245
|
-
const
|
|
289
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
246
290
|
i0.ɵɵadvance(3);
|
|
247
|
-
i0.ɵɵtextInterpolate1("",
|
|
291
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.selectedConversationIds.size, " selected");
|
|
248
292
|
i0.ɵɵadvance();
|
|
249
|
-
i0.ɵɵconditional(
|
|
293
|
+
i0.ɵɵconditional(ctx_r1.selectedConversationIds.size < ctx_r1.filteredConversations.length ? 4 : 5);
|
|
250
294
|
i0.ɵɵadvance(3);
|
|
251
|
-
i0.ɵɵproperty("disabled",
|
|
295
|
+
i0.ɵɵproperty("disabled", ctx_r1.selectedConversationIds.size === 0);
|
|
252
296
|
i0.ɵɵadvance(2);
|
|
253
|
-
i0.ɵɵtextInterpolate1(" Delete (",
|
|
297
|
+
i0.ɵɵtextInterpolate1(" Delete (", ctx_r1.selectedConversationIds.size, ") ");
|
|
254
298
|
} }
|
|
255
|
-
function
|
|
256
|
-
i0.ɵɵelementContainer(0,
|
|
299
|
+
function ConversationListComponent_ng_template_8_Conditional_14_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
300
|
+
i0.ɵɵelementContainer(0, 27);
|
|
257
301
|
} if (rf & 2) {
|
|
258
|
-
const
|
|
302
|
+
const child_r21 = i0.ɵɵnextContext().$implicit;
|
|
259
303
|
i0.ɵɵnextContext(3);
|
|
260
|
-
const
|
|
261
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
304
|
+
const folderNode_r12 = i0.ɵɵreference(9);
|
|
305
|
+
i0.ɵɵproperty("ngTemplateOutlet", folderNode_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, child_r21));
|
|
262
306
|
} }
|
|
263
|
-
function
|
|
264
|
-
i0.ɵɵconditionalCreate(0,
|
|
307
|
+
function ConversationListComponent_ng_template_8_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
308
|
+
i0.ɵɵconditionalCreate(0, ConversationListComponent_ng_template_8_Conditional_14_For_2_Conditional_0_Template, 1, 4, "ng-container", 27);
|
|
265
309
|
} if (rf & 2) {
|
|
266
|
-
const
|
|
267
|
-
const
|
|
268
|
-
i0.ɵɵconditional(!
|
|
310
|
+
const child_r21 = ctx.$implicit;
|
|
311
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
312
|
+
i0.ɵɵconditional(!ctx_r1.isSearching || child_r21.hasContent ? 0 : -1);
|
|
269
313
|
} }
|
|
270
|
-
function
|
|
271
|
-
i0.ɵɵelementContainer(0,
|
|
314
|
+
function ConversationListComponent_ng_template_8_Conditional_14_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
+
i0.ɵɵelementContainer(0, 27);
|
|
272
316
|
} if (rf & 2) {
|
|
273
|
-
const
|
|
274
|
-
const
|
|
317
|
+
const conversation_r22 = ctx.$implicit;
|
|
318
|
+
const node_r20 = i0.ɵɵnextContext(2).$implicit;
|
|
275
319
|
i0.ɵɵnextContext();
|
|
276
|
-
const
|
|
277
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
320
|
+
const conversationItem_r9 = i0.ɵɵreference(11);
|
|
321
|
+
i0.ɵɵproperty("ngTemplateOutlet", conversationItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1, conversation_r22, node_r20.depth + 1));
|
|
278
322
|
} }
|
|
279
|
-
function
|
|
280
|
-
i0.ɵɵelementStart(0, "div",
|
|
323
|
+
function ConversationListComponent_ng_template_8_Conditional_14_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
324
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
281
325
|
i0.ɵɵtext(1, "Empty \u2014 drop a conversation here");
|
|
282
326
|
i0.ɵɵelementEnd();
|
|
283
327
|
} if (rf & 2) {
|
|
284
|
-
const
|
|
285
|
-
i0.ɵɵstyleProp("padding-left", 26 +
|
|
328
|
+
const node_r20 = i0.ɵɵnextContext(2).$implicit;
|
|
329
|
+
i0.ɵɵstyleProp("padding-left", 26 + node_r20.depth * 14, "px");
|
|
286
330
|
} }
|
|
287
|
-
function
|
|
288
|
-
i0.ɵɵelementStart(0, "div",
|
|
289
|
-
i0.ɵɵrepeaterCreate(1,
|
|
290
|
-
i0.ɵɵrepeaterCreate(3,
|
|
291
|
-
i0.ɵɵconditionalCreate(5,
|
|
331
|
+
function ConversationListComponent_ng_template_8_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
332
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
333
|
+
i0.ɵɵrepeaterCreate(1, ConversationListComponent_ng_template_8_Conditional_14_For_2_Template, 1, 1, null, null, _forTrack1);
|
|
334
|
+
i0.ɵɵrepeaterCreate(3, ConversationListComponent_ng_template_8_Conditional_14_For_4_Template, 1, 5, "ng-container", 27, _forTrack0);
|
|
335
|
+
i0.ɵɵconditionalCreate(5, ConversationListComponent_ng_template_8_Conditional_14_Conditional_5_Template, 2, 2, "div", 56);
|
|
292
336
|
i0.ɵɵelementEnd();
|
|
293
337
|
} if (rf & 2) {
|
|
294
|
-
const
|
|
295
|
-
const
|
|
338
|
+
const node_r20 = i0.ɵɵnextContext().$implicit;
|
|
339
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
296
340
|
i0.ɵɵadvance();
|
|
297
|
-
i0.ɵɵrepeater(
|
|
341
|
+
i0.ɵɵrepeater(node_r20.children);
|
|
298
342
|
i0.ɵɵadvance(2);
|
|
299
|
-
i0.ɵɵrepeater(
|
|
343
|
+
i0.ɵɵrepeater(node_r20.conversations);
|
|
300
344
|
i0.ɵɵadvance(2);
|
|
301
|
-
i0.ɵɵconditional(
|
|
345
|
+
i0.ɵɵconditional(node_r20.totalCount === 0 && !ctx_r1.isSearching ? 5 : -1);
|
|
302
346
|
} }
|
|
303
|
-
function
|
|
304
|
-
const
|
|
305
|
-
i0.ɵɵelementStart(0, "div",
|
|
306
|
-
i0.ɵɵlistener("dragstart", function
|
|
307
|
-
i0.ɵɵelement(1, "i",
|
|
308
|
-
i0.ɵɵelementStart(3, "span",
|
|
347
|
+
function ConversationListComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
348
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
349
|
+
i0.ɵɵelementStart(0, "div", 46);
|
|
350
|
+
i0.ɵɵlistener("dragstart", function ConversationListComponent_ng_template_8_Template_div_dragstart_0_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFolderDragStart(node_r20, $event)); })("dragend", function ConversationListComponent_ng_template_8_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFolderDragEnd()); })("click", function ConversationListComponent_ng_template_8_Template_div_click_0_listener() { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFolder(node_r20.project.ID)); })("dragover", function ConversationListComponent_ng_template_8_Template_div_dragover_0_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFolderDragOver(node_r20.project.ID, $event)); })("dragleave", function ConversationListComponent_ng_template_8_Template_div_dragleave_0_listener() { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDragLeave(node_r20.project.ID)); })("drop", function ConversationListComponent_ng_template_8_Template_div_drop_0_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFolderDrop(node_r20.project, $event)); });
|
|
351
|
+
i0.ɵɵelement(1, "i", 47)(2, "i");
|
|
352
|
+
i0.ɵɵelementStart(3, "span", 48);
|
|
309
353
|
i0.ɵɵtext(4);
|
|
310
354
|
i0.ɵɵelementEnd();
|
|
311
|
-
i0.ɵɵelementStart(5, "span",
|
|
355
|
+
i0.ɵɵelementStart(5, "span", 49);
|
|
312
356
|
i0.ɵɵtext(6);
|
|
313
357
|
i0.ɵɵelementEnd();
|
|
314
|
-
i0.ɵɵelementStart(7, "div",
|
|
315
|
-
i0.ɵɵlistener("click", function
|
|
316
|
-
i0.ɵɵelementStart(8, "button",
|
|
317
|
-
i0.ɵɵlistener("click", function
|
|
318
|
-
i0.ɵɵelement(9, "i",
|
|
358
|
+
i0.ɵɵelementStart(7, "div", 50);
|
|
359
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_8_Template_div_click_7_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
360
|
+
i0.ɵɵelementStart(8, "button", 51);
|
|
361
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_8_Template_button_click_8_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.createFolder(node_r20.project.ID, $event)); });
|
|
362
|
+
i0.ɵɵelement(9, "i", 35);
|
|
319
363
|
i0.ɵɵelementEnd();
|
|
320
|
-
i0.ɵɵelementStart(10, "button",
|
|
321
|
-
i0.ɵɵlistener("click", function
|
|
322
|
-
i0.ɵɵelement(11, "i",
|
|
364
|
+
i0.ɵɵelementStart(10, "button", 52);
|
|
365
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_8_Template_button_click_10_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.editFolder(node_r20.project, $event)); });
|
|
366
|
+
i0.ɵɵelement(11, "i", 53);
|
|
323
367
|
i0.ɵɵelementEnd();
|
|
324
|
-
i0.ɵɵelementStart(12, "button",
|
|
325
|
-
i0.ɵɵlistener("click", function
|
|
326
|
-
i0.ɵɵelement(13, "i",
|
|
368
|
+
i0.ɵɵelementStart(12, "button", 54);
|
|
369
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_8_Template_button_click_12_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.deleteFolder(node_r20.project, $event)); });
|
|
370
|
+
i0.ɵɵelement(13, "i", 43);
|
|
327
371
|
i0.ɵɵelementEnd()()();
|
|
328
|
-
i0.ɵɵconditionalCreate(14,
|
|
372
|
+
i0.ɵɵconditionalCreate(14, ConversationListComponent_ng_template_8_Conditional_14_Template, 6, 1, "div", 55);
|
|
329
373
|
} if (rf & 2) {
|
|
330
|
-
const
|
|
331
|
-
const
|
|
332
|
-
i0.ɵɵstyleProp("padding-left", 12 +
|
|
333
|
-
i0.ɵɵclassProp("drag-over",
|
|
334
|
-
i0.ɵɵproperty("draggable", true)("title",
|
|
374
|
+
const node_r20 = ctx.$implicit;
|
|
375
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
376
|
+
i0.ɵɵstyleProp("padding-left", 12 + node_r20.depth * 14, "px");
|
|
377
|
+
i0.ɵɵclassProp("drag-over", ctx_r1.dragOverTargetId === node_r20.project.ID)("dragging", ctx_r1.draggedFolderId === node_r20.project.ID);
|
|
378
|
+
i0.ɵɵproperty("draggable", true)("title", node_r20.project.Name);
|
|
335
379
|
i0.ɵɵadvance();
|
|
336
|
-
i0.ɵɵclassProp("expanded",
|
|
380
|
+
i0.ɵɵclassProp("expanded", ctx_r1.isFolderExpanded(node_r20.project.ID));
|
|
337
381
|
i0.ɵɵadvance();
|
|
338
|
-
i0.ɵɵclassMap(i0.ɵɵinterpolate1("fas ",
|
|
339
|
-
i0.ɵɵstyleProp("color",
|
|
382
|
+
i0.ɵɵclassMap(i0.ɵɵinterpolate1("fas ", node_r20.project.Icon || "fa-folder", " folder-icon"));
|
|
383
|
+
i0.ɵɵstyleProp("color", node_r20.project.Color || null);
|
|
340
384
|
i0.ɵɵadvance(2);
|
|
341
|
-
i0.ɵɵtextInterpolate(
|
|
385
|
+
i0.ɵɵtextInterpolate(node_r20.project.Name);
|
|
342
386
|
i0.ɵɵadvance(2);
|
|
343
|
-
i0.ɵɵtextInterpolate(
|
|
387
|
+
i0.ɵɵtextInterpolate(node_r20.totalCount);
|
|
344
388
|
i0.ɵɵadvance(8);
|
|
345
|
-
i0.ɵɵconditional(
|
|
389
|
+
i0.ɵɵconditional(ctx_r1.isFolderExpanded(node_r20.project.ID) ? 14 : -1);
|
|
346
390
|
} }
|
|
347
|
-
function
|
|
348
|
-
const
|
|
349
|
-
i0.ɵɵelementStart(0, "div",
|
|
350
|
-
i0.ɵɵlistener("click", function
|
|
391
|
+
function ConversationListComponent_ng_template_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
392
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
393
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "input", 68);
|
|
394
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r25); const conversation_r24 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.toggleConversationSelection(conversation_r24.ID)); });
|
|
351
395
|
i0.ɵɵelementEnd()();
|
|
352
396
|
} if (rf & 2) {
|
|
353
|
-
const
|
|
354
|
-
const
|
|
397
|
+
const conversation_r24 = i0.ɵɵnextContext().$implicit;
|
|
398
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
355
399
|
i0.ɵɵadvance();
|
|
356
|
-
i0.ɵɵproperty("checked",
|
|
400
|
+
i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(conversation_r24.ID));
|
|
357
401
|
} }
|
|
358
|
-
function
|
|
359
|
-
i0.ɵɵelementStart(0, "div",
|
|
360
|
-
i0.ɵɵelement(1, "i",
|
|
402
|
+
function ConversationListComponent_ng_template_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
403
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
404
|
+
i0.ɵɵelement(1, "i", 69);
|
|
361
405
|
i0.ɵɵelementEnd();
|
|
362
406
|
} }
|
|
363
|
-
function
|
|
364
|
-
i0.ɵɵelement(0, "i",
|
|
407
|
+
function ConversationListComponent_ng_template_10_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
408
|
+
i0.ɵɵelement(0, "i", 65);
|
|
365
409
|
} if (rf & 2) {
|
|
366
|
-
const
|
|
367
|
-
const
|
|
368
|
-
i0.ɵɵproperty("title",
|
|
410
|
+
const conversation_r24 = i0.ɵɵnextContext().$implicit;
|
|
411
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
412
|
+
i0.ɵɵproperty("title", ctx_r1.sharedWithMeTooltip(conversation_r24));
|
|
369
413
|
} }
|
|
370
|
-
function
|
|
371
|
-
const
|
|
372
|
-
i0.ɵɵelementStart(0, "button",
|
|
373
|
-
i0.ɵɵlistener("click", function
|
|
414
|
+
function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
415
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
416
|
+
i0.ɵɵelementStart(0, "button", 78);
|
|
417
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_For_11_Template_button_click_0_listener() { const f_r30 = i0.ɵɵrestoreView(_r29).$implicit; const conversation_r24 = i0.ɵɵnextContext(4).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectMoveTarget(conversation_r24, f_r30.project.ID)); });
|
|
374
418
|
i0.ɵɵelement(1, "i");
|
|
375
419
|
i0.ɵɵelementStart(2, "span");
|
|
376
420
|
i0.ɵɵtext(3);
|
|
377
421
|
i0.ɵɵelementEnd()();
|
|
378
422
|
} if (rf & 2) {
|
|
379
|
-
const
|
|
380
|
-
const
|
|
381
|
-
const
|
|
382
|
-
i0.ɵɵstyleProp("padding-left", 14 +
|
|
383
|
-
i0.ɵɵclassProp("current",
|
|
423
|
+
const f_r30 = ctx.$implicit;
|
|
424
|
+
const conversation_r24 = i0.ɵɵnextContext(4).$implicit;
|
|
425
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
426
|
+
i0.ɵɵstyleProp("padding-left", 14 + f_r30.depth * 12, "px");
|
|
427
|
+
i0.ɵɵclassProp("current", ctx_r1.IsInFolder(conversation_r24, f_r30.project.ID));
|
|
384
428
|
i0.ɵɵadvance();
|
|
385
|
-
i0.ɵɵclassMap(i0.ɵɵinterpolate1("fas ",
|
|
386
|
-
i0.ɵɵstyleProp("color",
|
|
429
|
+
i0.ɵɵclassMap(i0.ɵɵinterpolate1("fas ", f_r30.project.Icon || "fa-folder"));
|
|
430
|
+
i0.ɵɵstyleProp("color", f_r30.project.Color || null);
|
|
387
431
|
i0.ɵɵadvance(2);
|
|
388
|
-
i0.ɵɵtextInterpolate(
|
|
432
|
+
i0.ɵɵtextInterpolate(f_r30.project.Name);
|
|
389
433
|
} }
|
|
390
|
-
function
|
|
391
|
-
const
|
|
392
|
-
i0.ɵɵelementStart(0, "button",
|
|
393
|
-
i0.ɵɵlistener("click", function
|
|
394
|
-
i0.ɵɵelement(1, "i",
|
|
434
|
+
function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
435
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
436
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
437
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.closeMoveSubmenu($event)); });
|
|
438
|
+
i0.ɵɵelement(1, "i", 75);
|
|
395
439
|
i0.ɵɵelementStart(2, "span");
|
|
396
440
|
i0.ɵɵtext(3, "Move to folder");
|
|
397
441
|
i0.ɵɵelementEnd()();
|
|
398
|
-
i0.ɵɵelement(4, "div",
|
|
399
|
-
i0.ɵɵelementStart(5, "div",
|
|
400
|
-
i0.ɵɵlistener("click", function
|
|
401
|
-
i0.ɵɵelement(7, "i",
|
|
442
|
+
i0.ɵɵelement(4, "div", 76);
|
|
443
|
+
i0.ɵɵelementStart(5, "div", 77)(6, "button", 78);
|
|
444
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r28); const conversation_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectMoveTarget(conversation_r24, null)); });
|
|
445
|
+
i0.ɵɵelement(7, "i", 79);
|
|
402
446
|
i0.ɵɵelementStart(8, "span");
|
|
403
447
|
i0.ɵɵtext(9, "No folder");
|
|
404
448
|
i0.ɵɵelementEnd()();
|
|
405
|
-
i0.ɵɵrepeaterCreate(10,
|
|
449
|
+
i0.ɵɵrepeaterCreate(10, ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_For_11_Template, 4, 10, "button", 80, _forTrack1);
|
|
406
450
|
i0.ɵɵelementEnd();
|
|
407
|
-
i0.ɵɵelement(12, "div",
|
|
408
|
-
i0.ɵɵelementStart(13, "button",
|
|
409
|
-
i0.ɵɵlistener("click", function
|
|
410
|
-
i0.ɵɵelement(14, "i",
|
|
451
|
+
i0.ɵɵelement(12, "div", 76);
|
|
452
|
+
i0.ɵɵelementStart(13, "button", 78);
|
|
453
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r28); const conversation_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.createFolderForConversation(conversation_r24, $event)); });
|
|
454
|
+
i0.ɵɵelement(14, "i", 35);
|
|
411
455
|
i0.ɵɵelementStart(15, "span");
|
|
412
456
|
i0.ɵɵtext(16, "New folder\u2026");
|
|
413
457
|
i0.ɵɵelementEnd()();
|
|
414
458
|
} if (rf & 2) {
|
|
415
|
-
const
|
|
416
|
-
const
|
|
459
|
+
const conversation_r24 = i0.ɵɵnextContext(3).$implicit;
|
|
460
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
417
461
|
i0.ɵɵadvance(6);
|
|
418
|
-
i0.ɵɵclassProp("current", !
|
|
462
|
+
i0.ɵɵclassProp("current", !conversation_r24.ProjectID);
|
|
419
463
|
i0.ɵɵadvance(4);
|
|
420
|
-
i0.ɵɵrepeater(
|
|
464
|
+
i0.ɵɵrepeater(ctx_r1.flatFolders);
|
|
421
465
|
} }
|
|
422
|
-
function
|
|
423
|
-
const
|
|
424
|
-
i0.ɵɵelementStart(0, "button",
|
|
425
|
-
i0.ɵɵlistener("click", function
|
|
426
|
-
i0.ɵɵelement(1, "i",
|
|
466
|
+
function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
467
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
468
|
+
i0.ɵɵelementStart(0, "button", 78);
|
|
469
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r31); const conversation_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r24, $event)); });
|
|
470
|
+
i0.ɵɵelement(1, "i", 81);
|
|
427
471
|
i0.ɵɵelementStart(2, "span");
|
|
428
472
|
i0.ɵɵtext(3);
|
|
429
473
|
i0.ɵɵelementEnd()();
|
|
430
|
-
i0.ɵɵelementStart(4, "button",
|
|
431
|
-
i0.ɵɵlistener("click", function
|
|
432
|
-
i0.ɵɵelement(5, "i",
|
|
474
|
+
i0.ɵɵelementStart(4, "button", 78);
|
|
475
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_2_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r31); const conversation_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openMoveSubmenu(conversation_r24.ID, $event)); });
|
|
476
|
+
i0.ɵɵelement(5, "i", 82);
|
|
433
477
|
i0.ɵɵelementStart(6, "span");
|
|
434
478
|
i0.ɵɵtext(7, "Move to folder");
|
|
435
479
|
i0.ɵɵelementEnd();
|
|
436
|
-
i0.ɵɵelement(8, "i",
|
|
480
|
+
i0.ɵɵelement(8, "i", 83);
|
|
437
481
|
i0.ɵɵelementEnd();
|
|
438
|
-
i0.ɵɵelementStart(9, "button",
|
|
439
|
-
i0.ɵɵlistener("click", function
|
|
440
|
-
i0.ɵɵelement(10, "i",
|
|
482
|
+
i0.ɵɵelementStart(9, "button", 78);
|
|
483
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_2_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r31); const conversation_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.renameConversation(conversation_r24); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
484
|
+
i0.ɵɵelement(10, "i", 84);
|
|
441
485
|
i0.ɵɵelementStart(11, "span");
|
|
442
486
|
i0.ɵɵtext(12, "Rename");
|
|
443
487
|
i0.ɵɵelementEnd()();
|
|
444
|
-
i0.ɵɵelement(13, "div",
|
|
445
|
-
i0.ɵɵelementStart(14, "button",
|
|
446
|
-
i0.ɵɵlistener("click", function
|
|
447
|
-
i0.ɵɵelement(15, "i",
|
|
488
|
+
i0.ɵɵelement(13, "div", 76);
|
|
489
|
+
i0.ɵɵelementStart(14, "button", 85);
|
|
490
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_2_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r31); const conversation_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.deleteConversation(conversation_r24); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
|
|
491
|
+
i0.ɵɵelement(15, "i", 43);
|
|
448
492
|
i0.ɵɵelementStart(16, "span");
|
|
449
493
|
i0.ɵɵtext(17, "Delete");
|
|
450
494
|
i0.ɵɵelementEnd()();
|
|
451
495
|
} if (rf & 2) {
|
|
452
|
-
const
|
|
496
|
+
const conversation_r24 = i0.ɵɵnextContext(3).$implicit;
|
|
453
497
|
i0.ɵɵadvance(3);
|
|
454
|
-
i0.ɵɵtextInterpolate(
|
|
498
|
+
i0.ɵɵtextInterpolate(conversation_r24.IsPinned ? "Unpin" : "Pin");
|
|
455
499
|
} }
|
|
456
|
-
function
|
|
457
|
-
const
|
|
458
|
-
i0.ɵɵelementStart(0, "div",
|
|
459
|
-
i0.ɵɵlistener("click", function
|
|
460
|
-
i0.ɵɵconditionalCreate(1,
|
|
500
|
+
function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
501
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
502
|
+
i0.ɵɵelementStart(0, "div", 73);
|
|
503
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r27); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
504
|
+
i0.ɵɵconditionalCreate(1, ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_1_Template, 17, 2)(2, ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Conditional_2_Template, 18, 1);
|
|
461
505
|
i0.ɵɵelementEnd();
|
|
462
506
|
} if (rf & 2) {
|
|
463
|
-
const
|
|
464
|
-
const
|
|
507
|
+
const conversation_r24 = i0.ɵɵnextContext(2).$implicit;
|
|
508
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
465
509
|
i0.ɵɵadvance();
|
|
466
|
-
i0.ɵɵconditional(
|
|
510
|
+
i0.ɵɵconditional(ctx_r1.IsMoveSubmenuOpen(conversation_r24) ? 1 : 2);
|
|
467
511
|
} }
|
|
468
|
-
function
|
|
469
|
-
const
|
|
470
|
-
i0.ɵɵelementStart(0, "div",
|
|
471
|
-
i0.ɵɵlistener("click", function
|
|
472
|
-
i0.ɵɵelement(2, "i",
|
|
512
|
+
function ConversationListComponent_ng_template_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
514
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "button", 70);
|
|
515
|
+
i0.ɵɵlistener("click", function ConversationListComponent_ng_template_10_Conditional_12_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r26); const conversation_r24 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r24.ID, $event)); });
|
|
516
|
+
i0.ɵɵelement(2, "i", 71);
|
|
473
517
|
i0.ɵɵelementEnd();
|
|
474
|
-
i0.ɵɵconditionalCreate(3,
|
|
518
|
+
i0.ɵɵconditionalCreate(3, ConversationListComponent_ng_template_10_Conditional_12_Conditional_3_Template, 3, 1, "div", 72);
|
|
475
519
|
i0.ɵɵelementEnd();
|
|
476
520
|
} if (rf & 2) {
|
|
477
|
-
const
|
|
478
|
-
const
|
|
521
|
+
const conversation_r24 = i0.ɵɵnextContext().$implicit;
|
|
522
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
479
523
|
i0.ɵɵadvance(3);
|
|
480
|
-
i0.ɵɵconditional(
|
|
524
|
+
i0.ɵɵconditional(ctx_r1.IsMenuOpen(conversation_r24) ? 3 : -1);
|
|
481
525
|
} }
|
|
482
|
-
function
|
|
483
|
-
const
|
|
484
|
-
i0.ɵɵelementStart(0, "div",
|
|
485
|
-
i0.ɵɵlistener("dragstart", function
|
|
486
|
-
i0.ɵɵconditionalCreate(1,
|
|
487
|
-
i0.ɵɵelementStart(2, "div",
|
|
488
|
-
i0.ɵɵconditionalCreate(3,
|
|
489
|
-
i0.ɵɵelementStart(4, "div",
|
|
490
|
-
i0.ɵɵelement(5, "mj-notification-badge",
|
|
526
|
+
function ConversationListComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
527
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
528
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
529
|
+
i0.ɵɵlistener("dragstart", function ConversationListComponent_ng_template_10_Template_div_dragstart_0_listener($event) { const conversation_r24 = i0.ɵɵrestoreView(_r23).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onConversationDragStart(conversation_r24, $event)); })("dragend", function ConversationListComponent_ng_template_10_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onConversationDragEnd()); })("click", function ConversationListComponent_ng_template_10_Template_div_click_0_listener() { const conversation_r24 = i0.ɵɵrestoreView(_r23).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleConversationClick(conversation_r24)); });
|
|
530
|
+
i0.ɵɵconditionalCreate(1, ConversationListComponent_ng_template_10_Conditional_1_Template, 2, 1, "div", 58);
|
|
531
|
+
i0.ɵɵelementStart(2, "div", 59);
|
|
532
|
+
i0.ɵɵconditionalCreate(3, ConversationListComponent_ng_template_10_Conditional_3_Template, 2, 0, "div", 60);
|
|
533
|
+
i0.ɵɵelementStart(4, "div", 61);
|
|
534
|
+
i0.ɵɵelement(5, "mj-notification-badge", 62);
|
|
491
535
|
i0.ɵɵelementEnd()();
|
|
492
|
-
i0.ɵɵelementStart(6, "div",
|
|
536
|
+
i0.ɵɵelementStart(6, "div", 63)(7, "div", 64);
|
|
493
537
|
i0.ɵɵtext(8);
|
|
494
|
-
i0.ɵɵconditionalCreate(9,
|
|
538
|
+
i0.ɵɵconditionalCreate(9, ConversationListComponent_ng_template_10_Conditional_9_Template, 1, 1, "i", 65);
|
|
495
539
|
i0.ɵɵelementEnd();
|
|
496
|
-
i0.ɵɵelementStart(10, "div",
|
|
540
|
+
i0.ɵɵelementStart(10, "div", 66);
|
|
497
541
|
i0.ɵɵtext(11);
|
|
498
542
|
i0.ɵɵelementEnd()();
|
|
499
|
-
i0.ɵɵconditionalCreate(12,
|
|
543
|
+
i0.ɵɵconditionalCreate(12, ConversationListComponent_ng_template_10_Conditional_12_Template, 4, 1, "div", 67);
|
|
500
544
|
i0.ɵɵelementEnd();
|
|
501
545
|
} if (rf & 2) {
|
|
502
|
-
const
|
|
503
|
-
const
|
|
504
|
-
const
|
|
505
|
-
i0.ɵɵstyleProp("padding-left",
|
|
506
|
-
i0.ɵɵclassProp("active",
|
|
507
|
-
i0.ɵɵproperty("draggable", !
|
|
546
|
+
const conversation_r24 = ctx.$implicit;
|
|
547
|
+
const depth_r32 = ctx.depth;
|
|
548
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
549
|
+
i0.ɵɵstyleProp("padding-left", depth_r32 ? 16 + depth_r32 * 14 : 16, "px");
|
|
550
|
+
i0.ɵɵclassProp("active", ctx_r1.IsConversationActive(conversation_r24))("renamed", ctx_r1.IsConversationRenamed(conversation_r24))("dragging", ctx_r1.IsConversationDragging(conversation_r24));
|
|
551
|
+
i0.ɵɵproperty("draggable", !ctx_r1.isSelectionMode);
|
|
508
552
|
i0.ɵɵadvance();
|
|
509
|
-
i0.ɵɵconditional(
|
|
553
|
+
i0.ɵɵconditional(ctx_r1.isSelectionMode ? 1 : -1);
|
|
510
554
|
i0.ɵɵadvance(2);
|
|
511
|
-
i0.ɵɵconditional(
|
|
555
|
+
i0.ɵɵconditional(ctx_r1.hasActiveTasks(conversation_r24.ID) ? 3 : -1);
|
|
512
556
|
i0.ɵɵadvance(2);
|
|
513
|
-
i0.ɵɵproperty("conversationId",
|
|
557
|
+
i0.ɵɵproperty("conversationId", conversation_r24.ID);
|
|
514
558
|
i0.ɵɵadvance();
|
|
515
|
-
i0.ɵɵproperty("title",
|
|
559
|
+
i0.ɵɵproperty("title", conversation_r24.Name + (conversation_r24.Description ? "\n" + conversation_r24.Description : ""));
|
|
516
560
|
i0.ɵɵadvance(2);
|
|
517
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
561
|
+
i0.ɵɵtextInterpolate1(" ", conversation_r24.Name, " ");
|
|
518
562
|
i0.ɵɵadvance();
|
|
519
|
-
i0.ɵɵconditional(
|
|
563
|
+
i0.ɵɵconditional(ctx_r1.isSharedWithMe(conversation_r24) ? 9 : -1);
|
|
520
564
|
i0.ɵɵadvance(2);
|
|
521
|
-
i0.ɵɵtextInterpolate(
|
|
565
|
+
i0.ɵɵtextInterpolate(conversation_r24.Description);
|
|
522
566
|
i0.ɵɵadvance();
|
|
523
|
-
i0.ɵɵconditional(!
|
|
567
|
+
i0.ɵɵconditional(!ctx_r1.isSelectionMode ? 12 : -1);
|
|
524
568
|
} }
|
|
525
569
|
export class ConversationListComponent {
|
|
526
570
|
dialogService;
|
|
@@ -534,6 +578,29 @@ export class ConversationListComponent {
|
|
|
534
578
|
renamedConversationId = null;
|
|
535
579
|
isSidebarPinned = true; // Whether sidebar is pinned (stays open after selection)
|
|
536
580
|
isMobileView = false; // Whether we're on mobile (no pin options)
|
|
581
|
+
// ── White-label chrome toggles (all default true = stock rendering) ──
|
|
582
|
+
/** Show the search box in the list header. Flipping to false clears any active
|
|
583
|
+
* search so a hidden filter can't keep silently narrowing the list. */
|
|
584
|
+
set showSearch(value) {
|
|
585
|
+
if (!value && this._searchQuery) {
|
|
586
|
+
this.searchQuery = ''; // setter rebuilds the groupings
|
|
587
|
+
}
|
|
588
|
+
this._showSearch = value;
|
|
589
|
+
}
|
|
590
|
+
get showSearch() {
|
|
591
|
+
return this._showSearch;
|
|
592
|
+
}
|
|
593
|
+
_showSearch = true;
|
|
594
|
+
/** Show the "New Conversation" button. */
|
|
595
|
+
showNewConversationButton = true;
|
|
596
|
+
/** Show the ⋯ header options menu (refresh / select / group-by / hide sidebar). */
|
|
597
|
+
showHeaderMenu = true;
|
|
598
|
+
/** Show the collapsible Pinned / Folders / Messages section headers. When false,
|
|
599
|
+
* the list renders FLAT and fully expanded: folder grouping is bypassed (the
|
|
600
|
+
* folder tree's root drop-zone and New Folder action live in the section
|
|
601
|
+
* header, so a headerless tree would allow one-way folder nesting) — the
|
|
602
|
+
* chrome-less rendering for embedded hosts. */
|
|
603
|
+
showSectionHeaders = true;
|
|
537
604
|
conversationSelected = new EventEmitter();
|
|
538
605
|
conversationDeleted = new EventEmitter(); // Emits the deleted conversation ID
|
|
539
606
|
newConversationRequested = new EventEmitter();
|
|
@@ -1248,51 +1315,48 @@ export class ConversationListComponent {
|
|
|
1248
1315
|
static ɵfac = function ConversationListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ConversationListComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.NotificationService), i0.ɵɵdirectiveInject(i3.ActiveTasksService), i0.ɵɵdirectiveInject(i4.MJDialogService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
1249
1316
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConversationListComponent, selectors: [["mj-conversation-list"]], hostBindings: function ConversationListComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1250
1317
|
i0.ɵɵlistener("click", function ConversationListComponent_click_HostBindingHandler() { return ctx.onDocumentClick(); }, i0.ɵɵresolveDocument);
|
|
1251
|
-
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser", selectedConversationId: "selectedConversationId", renamedConversationId: "renamedConversationId", isSidebarPinned: "isSidebarPinned", isMobileView: "isMobileView" }, outputs: { conversationSelected: "conversationSelected", conversationDeleted: "conversationDeleted", newConversationRequested: "newConversationRequested", pinSidebarRequested: "pinSidebarRequested", unpinSidebarRequested: "unpinSidebarRequested", refreshRequested: "refreshRequested" }, standalone: false, decls:
|
|
1252
|
-
|
|
1253
|
-
i0.ɵɵ
|
|
1254
|
-
i0.ɵɵ
|
|
1318
|
+
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser", selectedConversationId: "selectedConversationId", renamedConversationId: "renamedConversationId", isSidebarPinned: "isSidebarPinned", isMobileView: "isMobileView", showSearch: "showSearch", showNewConversationButton: "showNewConversationButton", showHeaderMenu: "showHeaderMenu", showSectionHeaders: "showSectionHeaders" }, outputs: { conversationSelected: "conversationSelected", conversationDeleted: "conversationDeleted", newConversationRequested: "newConversationRequested", pinSidebarRequested: "pinSidebarRequested", unpinSidebarRequested: "unpinSidebarRequested", refreshRequested: "refreshRequested" }, standalone: false, decls: 12, vars: 5, consts: [["folderNode", ""], ["conversationItem", ""], [1, "conversation-list"], [1, "list-header"], ["title", "New Conversation", 1, "btn-new-conversation"], [1, "list-content"], [1, "sidebar-section", "pinned-section"], [1, "sidebar-section"], [1, "selection-action-bar"], [1, "header-top"], ["type", "text", "placeholder", "Search conversations...", 1, "search-input", 3, "ngModel"], [1, "header-menu-container"], ["type", "text", "placeholder", "Search conversations...", 1, "search-input", 3, "ngModelChange", "ngModel"], ["title", "Options", 1, "btn-menu", 3, "click"], [1, "fas", "fa-ellipsis-v"], [1, "header-dropdown-menu"], [1, "dropdown-item", 3, "click", "disabled"], [1, "fas", "fa-sync-alt"], [1, "dropdown-item", 3, "click"], [1, "fas", "fa-check-square"], [1, "fas"], [1, "dropdown-item"], [1, "fas", "fa-table-columns"], ["title", "New Conversation", 1, "btn-new-conversation", 3, "click"], [1, "fas", "fa-plus"], [1, "section-header", 3, "expanded"], [1, "chat-list"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "section-header", 3, "click"], [1, "section-title"], [1, "fas", "fa-chevron-right"], [1, "fas", "fa-thumbtack", "section-icon"], [1, "sidebar-section", "folders-section"], [1, "section-header", 3, "click", "dragover", "dragleave", "drop"], ["title", "New Folder", 1, "section-action-btn", 3, "click"], [1, "fas", "fa-folder-plus"], [1, "folder-empty-hint"], [1, "sidebar-section", "ungrouped-section", 3, "dragover", "dragleave", "drop"], [1, "selection-info"], [1, "selection-count"], [1, "link-btn"], [1, "selection-actions"], [1, "btn-delete-bulk", 3, "click", "disabled"], [1, "fas", "fa-trash"], [1, "btn-cancel", 3, "click"], [1, "link-btn", 3, "click"], [1, "folder-row", 3, "dragstart", "dragend", "click", "dragover", "dragleave", "drop", "draggable", "title"], [1, "fas", "fa-chevron-right", "folder-chevron"], [1, "folder-name"], [1, "folder-count"], [1, "folder-actions", 3, "click"], ["title", "New Subfolder", 1, "folder-action-btn", 3, "click"], ["title", "Edit Folder", 1, "folder-action-btn", 3, "click"], [1, "fas", "fa-pen"], ["title", "Delete Folder", 1, "folder-action-btn", "danger", 3, "click"], [1, "folder-children"], [1, "folder-empty-hint", 3, "paddingLeft"], [1, "conversation-item", 3, "dragstart", "dragend", "click", "draggable"], [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, "fas", "fa-share-nodes", "shared-indicator", 3, "title"], [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", "back", 3, "click"], [1, "fas", "fa-chevron-left"], [1, "menu-divider"], [1, "move-folder-list"], [1, "menu-item", 3, "click"], [1, "fas", "fa-inbox"], [1, "menu-item", 3, "current", "paddingLeft"], [1, "fas", "fa-thumbtack"], [1, "fas", "fa-folder-tree"], [1, "fas", "fa-chevron-right", "submenu-arrow"], [1, "fas", "fa-edit"], [1, "menu-item", "danger", 3, "click"]], template: function ConversationListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1319
|
+
i0.ɵɵelementStart(0, "div", 2);
|
|
1320
|
+
i0.ɵɵconditionalCreate(1, ConversationListComponent_Conditional_1_Template, 4, 2, "div", 3);
|
|
1321
|
+
i0.ɵɵconditionalCreate(2, ConversationListComponent_Conditional_2_Template, 4, 0, "button", 4);
|
|
1322
|
+
i0.ɵɵelementStart(3, "div", 5);
|
|
1323
|
+
i0.ɵɵconditionalCreate(4, ConversationListComponent_Conditional_4_Template, 5, 3, "div", 6);
|
|
1324
|
+
i0.ɵɵconditionalCreate(5, ConversationListComponent_Conditional_5_Template, 21, 14)(6, ConversationListComponent_Conditional_6_Template, 5, 3, "div", 7);
|
|
1255
1325
|
i0.ɵɵelementEnd();
|
|
1256
|
-
i0.ɵɵconditionalCreate(
|
|
1257
|
-
i0.ɵɵelementEnd()();
|
|
1258
|
-
i0.ɵɵelementStart(5, "button", 7);
|
|
1259
|
-
i0.ɵɵlistener("click", function ConversationListComponent_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.createNewConversation()); });
|
|
1260
|
-
i0.ɵɵelement(6, "i", 8);
|
|
1261
|
-
i0.ɵɵelementStart(7, "span");
|
|
1262
|
-
i0.ɵɵtext(8, "New Conversation");
|
|
1263
|
-
i0.ɵɵelementEnd()();
|
|
1264
|
-
i0.ɵɵelementStart(9, "div", 9);
|
|
1265
|
-
i0.ɵɵconditionalCreate(10, ConversationListComponent_Conditional_10_Template, 10, 4, "div", 10);
|
|
1266
|
-
i0.ɵɵconditionalCreate(11, ConversationListComponent_Conditional_11_Template, 21, 14)(12, ConversationListComponent_Conditional_12_Template, 9, 4, "div", 11);
|
|
1326
|
+
i0.ɵɵconditionalCreate(7, ConversationListComponent_Conditional_7_Template, 12, 4, "div", 8);
|
|
1267
1327
|
i0.ɵɵelementEnd();
|
|
1268
|
-
i0.ɵɵ
|
|
1269
|
-
i0.ɵɵelementEnd();
|
|
1270
|
-
i0.ɵɵtemplate(14, ConversationListComponent_ng_template_14_Template, 15, 18, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(16, ConversationListComponent_ng_template_16_Template, 13, 17, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
1328
|
+
i0.ɵɵtemplate(8, ConversationListComponent_ng_template_8_Template, 15, 18, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(10, ConversationListComponent_ng_template_10_Template, 13, 17, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
1271
1329
|
} if (rf & 2) {
|
|
1272
|
-
i0.ɵɵadvance(3);
|
|
1273
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.searchQuery);
|
|
1274
1330
|
i0.ɵɵadvance();
|
|
1275
|
-
i0.ɵɵconditional(!ctx.isSelectionMode ?
|
|
1276
|
-
i0.ɵɵadvance(
|
|
1277
|
-
i0.ɵɵconditional(ctx.
|
|
1331
|
+
i0.ɵɵconditional(ctx.showSearch || ctx.showHeaderMenu && !ctx.isSelectionMode ? 1 : -1);
|
|
1332
|
+
i0.ɵɵadvance();
|
|
1333
|
+
i0.ɵɵconditional(ctx.showNewConversationButton ? 2 : -1);
|
|
1334
|
+
i0.ɵɵadvance(2);
|
|
1335
|
+
i0.ɵɵconditional(ctx.pinnedConversations.length > 0 ? 4 : -1);
|
|
1278
1336
|
i0.ɵɵadvance();
|
|
1279
|
-
i0.ɵɵconditional(ctx.groupBy === "project" ?
|
|
1337
|
+
i0.ɵɵconditional(ctx.showSectionHeaders && ctx.groupBy === "project" ? 5 : 6);
|
|
1280
1338
|
i0.ɵɵadvance(2);
|
|
1281
|
-
i0.ɵɵconditional(ctx.isSelectionMode ?
|
|
1282
|
-
} }, dependencies: [i5.NgTemplateOutlet, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgModel, i7.NotificationBadgeComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n .conversation-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: var(--mj-brand-secondary); }\n .list-header[_ngcontent-%COMP%] { padding: 8px; border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent); }\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: var(--mj-brand-on-secondary);\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input[_ngcontent-%COMP%]::placeholder { color: color-mix(in srgb, var(--mj-brand-on-secondary) 50%, transparent); }\n .search-input[_ngcontent-%COMP%]:focus { outline: none; background: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent); border-color: var(--mj-brand-primary); }\n .btn-new-conversation[_ngcontent-%COMP%] {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-brand-primary-hover); }\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-title[_ngcontent-%COMP%] .section-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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: var(--mj-brand-on-secondary);\n font-size: 13px;\n font-weight: 500;\n transition: background 0.2s;\n user-select: none;\n }\n .section-header[_ngcontent-%COMP%]:hover { background: color-mix(in srgb, var(--mj-brand-on-secondary) 8%, transparent); }\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 }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:not(.section-icon) {\n transition: transform 0.2s;\n }\n .section-header.expanded[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:not(.section-icon) { 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: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item[_ngcontent-%COMP%]:hover { background: color-mix(in srgb, var(--mj-brand-on-secondary) 8%, transparent); color: var(--mj-brand-on-secondary); }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; }\n .conversation-item.active[_ngcontent-%COMP%] { background: var(--mj-brand-primary); color: var(--mj-brand-on-secondary); }\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: var(--mj-status-warning); }\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; display: flex; align-items: center; gap: 6px; }\n .shared-indicator[_ngcontent-%COMP%] { font-size: 10px; color: color-mix(in srgb, var(--mj-brand-on-secondary) 55%, transparent); flex-shrink: 0; }\n .conversation-item.active[_ngcontent-%COMP%] .shared-indicator[_ngcontent-%COMP%] { color: color-mix(in srgb, var(--mj-brand-on-secondary) 85%, transparent); }\n .conversation-preview[_ngcontent-%COMP%] { font-size: 12px; color: color-mix(in srgb, var(--mj-brand-on-secondary) 50%, transparent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-preview[_ngcontent-%COMP%] { color: color-mix(in srgb, var(--mj-brand-on-secondary) 80%, transparent); }\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 80%, transparent);\n }\n .conversation-item.active[_ngcontent-%COMP%] .project-badge[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n color: var(--mj-brand-on-secondary);\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: var(--mj-brand-accent); font-size: 12px; }\n\n \n\n .task-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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 var(--mj-status-warning));\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px var(--mj-status-warning));\n }\n }\n .conversation-item.active[_ngcontent-%COMP%] .task-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\n background: var(--mj-brand-secondary) !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent) !important;\n color: var(--mj-brand-on-secondary);\n }\n .conversation-item.active[_ngcontent-%COMP%] .menu-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary-hover) !important;\n color: var(--mj-brand-on-secondary);\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: var(--mj-brand-secondary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 85%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n\n .menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n }\n\n .menu-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: var(--mj-brand-on-secondary);\n }\n\n .menu-item.danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, transparent);\n color: var(--mj-status-error);\n }\n\n .menu-item.danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\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 color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n border-color: color-mix(in srgb, var(--mj-brand-on-secondary) 30%, transparent);\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: var(--mj-brand-secondary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 85%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: var(--mj-brand-on-secondary);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 40%, transparent);\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 color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n border-color: color-mix(in srgb, var(--mj-brand-on-secondary) 30%, transparent);\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: var(--mj-brand-primary);\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: var(--mj-brand-secondary);\n border-top: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 90%, transparent);\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: var(--mj-brand-on-secondary);\n }\n\n .link-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-accent);\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: var(--mj-brand-on-secondary);\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 color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-status-error);\n border: none;\n border-radius: 6px;\n color: var(--mj-brand-on-secondary);\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: color-mix(in srgb, var(--mj-status-error) 80%, black);\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 }\n\n \n\n .section-action-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n .section-action-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n .section-action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 12px; }\n\n .folder-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n cursor: pointer;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 80%, transparent);\n font-size: 13px;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n }\n .folder-row[_ngcontent-%COMP%]:hover { background: color-mix(in srgb, var(--mj-brand-on-secondary) 8%, transparent); }\n .folder-row.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n }\n .folder-row.dragging[_ngcontent-%COMP%] { opacity: 0.4; }\n .section-header.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 18%, transparent);\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n border-radius: 6px;\n }\n .folder-chevron[_ngcontent-%COMP%] {\n font-size: 9px;\n width: 10px;\n flex-shrink: 0;\n transition: transform 0.2s;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 55%, transparent);\n }\n .folder-chevron.expanded[_ngcontent-%COMP%] { transform: rotate(90deg); }\n .folder-icon[_ngcontent-%COMP%] { font-size: 12px; width: 16px; text-align: center; flex-shrink: 0; }\n .folder-name[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 600;\n }\n .folder-count[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 50%, transparent);\n flex-shrink: 0;\n margin-left: auto;\n padding-left: 6px;\n text-align: right;\n }\n .folder-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 2px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 5;\n }\n .folder-row[_ngcontent-%COMP%]:hover .folder-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .folder-row[_ngcontent-%COMP%]:hover .folder-count[_ngcontent-%COMP%] { opacity: 0; }\n .folder-action-btn[_ngcontent-%COMP%] {\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n cursor: pointer;\n transition: all 0.15s;\n }\n .folder-action-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 18%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n .folder-action-btn.danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 18%, transparent);\n color: var(--mj-status-error);\n }\n .folder-action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 11px; }\n .folder-children[_ngcontent-%COMP%] { display: block; }\n .folder-empty-hint[_ngcontent-%COMP%] {\n padding: 6px 16px;\n font-size: 11px;\n font-style: italic;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 45%, transparent);\n }\n .ungrouped-section.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n border-radius: 6px;\n }\n\n \n\n .conversation-item[_ngcontent-%COMP%] { user-select: none; }\n .conversation-item.dragging[_ngcontent-%COMP%] { opacity: 0.4; }\n\n \n\n .menu-item.back[_ngcontent-%COMP%] { font-weight: 600; }\n .menu-item[_ngcontent-%COMP%] .submenu-arrow[_ngcontent-%COMP%] { margin-left: auto; font-size: 10px; }\n .menu-item.current[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 18%, transparent); }\n .move-folder-list[_ngcontent-%COMP%] { max-height: 240px; overflow-y: auto; }"] });
|
|
1339
|
+
i0.ɵɵconditional(ctx.isSelectionMode ? 7 : -1);
|
|
1340
|
+
} }, dependencies: [i5.NgTemplateOutlet, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgModel, i7.NotificationBadgeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n --conv-list-bg: var(--mj-chat-list-bg, var(--mj-brand-secondary));\n --conv-list-ink: var(--mj-chat-list-ink, var(--mj-brand-on-secondary));\n --conv-list-active-bg: var(--mj-chat-list-active-bg, var(--mj-brand-primary));\n --conv-list-active-ink: var(--mj-chat-list-active-ink, var(--mj-brand-on-secondary));\n --conv-list-active-hover-bg: var(--mj-chat-list-active-hover-bg, var(--mj-brand-primary-hover));\n --conv-list-accent: var(--mj-chat-list-accent, var(--mj-brand-primary));\n --conv-list-accent-ink: var(--mj-chat-list-accent-ink, var(--mj-text-inverse));\n --conv-list-accent-hover: var(--mj-chat-list-accent-hover, var(--mj-brand-primary-hover));\n --conv-list-hover-bg: var(--mj-chat-list-hover-bg, color-mix(in srgb, var(--conv-list-ink) 8%, transparent));\n }\n .conversation-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: var(--conv-list-bg); }\n .list-header[_ngcontent-%COMP%] { padding: 8px; border-bottom: 1px solid color-mix(in srgb, var(--conv-list-ink) 10%, transparent); }\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n border: 1px solid color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: var(--conv-list-ink);\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input[_ngcontent-%COMP%]::placeholder { color: color-mix(in srgb, var(--conv-list-ink) 50%, transparent); }\n .search-input[_ngcontent-%COMP%]:focus { outline: none; background: color-mix(in srgb, var(--conv-list-ink) 15%, transparent); border-color: var(--conv-list-accent); }\n .btn-new-conversation[_ngcontent-%COMP%] {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: var(--conv-list-accent);\n color: var(--conv-list-accent-ink);\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: var(--conv-list-accent-hover); }\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-title[_ngcontent-%COMP%] .section-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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: var(--conv-list-ink);\n font-size: 13px;\n font-weight: 500;\n transition: background 0.2s;\n user-select: none;\n }\n .section-header[_ngcontent-%COMP%]:hover { background: color-mix(in srgb, var(--conv-list-ink) 8%, transparent); }\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 }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:not(.section-icon) {\n transition: transform 0.2s;\n }\n .section-header.expanded[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:not(.section-icon) { 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: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item[_ngcontent-%COMP%]:hover { background: var(--conv-list-hover-bg); color: var(--conv-list-ink); }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; }\n .conversation-item.active[_ngcontent-%COMP%] { background: var(--conv-list-active-bg); color: var(--conv-list-active-ink); }\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: var(--mj-status-warning); }\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; display: flex; align-items: center; gap: 6px; }\n .shared-indicator[_ngcontent-%COMP%] { font-size: 10px; color: color-mix(in srgb, var(--conv-list-ink) 55%, transparent); flex-shrink: 0; }\n .conversation-item.active[_ngcontent-%COMP%] .shared-indicator[_ngcontent-%COMP%] { color: color-mix(in srgb, var(--conv-list-active-ink) 85%, transparent); }\n .conversation-preview[_ngcontent-%COMP%] { font-size: 12px; color: color-mix(in srgb, var(--conv-list-ink) 50%, transparent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-preview[_ngcontent-%COMP%] { color: color-mix(in srgb, var(--conv-list-active-ink) 80%, transparent); }\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n color: color-mix(in srgb, var(--conv-list-ink) 80%, transparent);\n }\n .conversation-item.active[_ngcontent-%COMP%] .project-badge[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--conv-list-active-ink) 20%, transparent);\n color: var(--conv-list-active-ink);\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: var(--mj-brand-accent); font-size: 12px; }\n\n \n\n .task-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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 var(--mj-status-warning));\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px var(--mj-status-warning));\n }\n }\n .conversation-item.active[_ngcontent-%COMP%] .task-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\n background: var(--conv-list-bg) !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 15%, transparent) !important;\n color: var(--conv-list-ink);\n }\n .conversation-item.active[_ngcontent-%COMP%] .menu-btn[_ngcontent-%COMP%] {\n background: var(--conv-list-active-hover-bg) !important;\n color: var(--conv-list-active-ink);\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: var(--conv-list-bg);\n border: 1px solid color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--conv-list-ink) 85%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n }\n\n .menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n }\n\n .menu-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: var(--conv-list-ink);\n }\n\n .menu-item.danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, transparent);\n color: var(--mj-status-error);\n }\n\n .menu-item.danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\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 \n\n\n\n @keyframes _ngcontent-%COMP%_renameHighlight {\n 0% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-brand-primary) 40%, transparent),\n color-mix(in srgb, var(--mj-brand-accent) 40%, transparent));\n transform: scale(1.03);\n box-shadow: 0 0 20px color-mix(in srgb, var(--mj-brand-primary) 50%, transparent);\n }\n 25% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-brand-primary) 35%, transparent),\n color-mix(in srgb, var(--mj-brand-accent) 35%, transparent));\n box-shadow: 0 0 15px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n }\n 50% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-status-success) 30%, transparent),\n color-mix(in srgb, var(--mj-brand-primary) 30%, transparent));\n transform: scale(1.02);\n box-shadow: 0 0 10px color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n }\n 75% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-status-success) 20%, transparent),\n color-mix(in srgb, var(--mj-brand-primary) 20%, transparent));\n box-shadow: 0 0 5px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\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 color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n border-color: color-mix(in srgb, var(--conv-list-ink) 30%, transparent);\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: var(--conv-list-bg);\n border: 1px solid color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--conv-list-ink) 85%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: var(--conv-list-ink);\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: color-mix(in srgb, var(--conv-list-ink) 40%, transparent);\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 color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n border-color: color-mix(in srgb, var(--conv-list-ink) 30%, transparent);\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: var(--conv-list-accent);\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: var(--conv-list-bg);\n border-top: 1px solid color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 90%, transparent);\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: var(--conv-list-ink);\n }\n\n .link-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-accent);\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: var(--conv-list-ink);\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 color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-status-error);\n border: none;\n border-radius: 6px;\n \n\n\n\n color: var(--mj-brand-on-secondary);\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: color-mix(in srgb, var(--mj-status-error) 80%, black);\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 }\n\n \n\n .section-action-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n .section-action-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n color: var(--conv-list-ink);\n }\n .section-action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 12px; }\n\n .folder-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n cursor: pointer;\n color: color-mix(in srgb, var(--conv-list-ink) 80%, transparent);\n font-size: 13px;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n }\n .folder-row[_ngcontent-%COMP%]:hover { background: color-mix(in srgb, var(--conv-list-ink) 8%, transparent); }\n .folder-row.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--conv-list-accent) 25%, transparent);\n box-shadow: inset 0 0 0 1px var(--conv-list-accent);\n }\n .folder-row.dragging[_ngcontent-%COMP%] { opacity: 0.4; }\n .section-header.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--conv-list-accent) 18%, transparent);\n box-shadow: inset 0 0 0 1px var(--conv-list-accent);\n border-radius: 6px;\n }\n .folder-chevron[_ngcontent-%COMP%] {\n font-size: 9px;\n width: 10px;\n flex-shrink: 0;\n transition: transform 0.2s;\n color: color-mix(in srgb, var(--conv-list-ink) 55%, transparent);\n }\n .folder-chevron.expanded[_ngcontent-%COMP%] { transform: rotate(90deg); }\n .folder-icon[_ngcontent-%COMP%] { font-size: 12px; width: 16px; text-align: center; flex-shrink: 0; }\n .folder-name[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 600;\n }\n .folder-count[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: color-mix(in srgb, var(--conv-list-ink) 50%, transparent);\n flex-shrink: 0;\n margin-left: auto;\n padding-left: 6px;\n text-align: right;\n }\n .folder-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 2px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 5;\n }\n .folder-row[_ngcontent-%COMP%]:hover .folder-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .folder-row[_ngcontent-%COMP%]:hover .folder-count[_ngcontent-%COMP%] { opacity: 0; }\n .folder-action-btn[_ngcontent-%COMP%] {\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n cursor: pointer;\n transition: all 0.15s;\n }\n .folder-action-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 18%, transparent);\n color: var(--conv-list-ink);\n }\n .folder-action-btn.danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 18%, transparent);\n color: var(--mj-status-error);\n }\n .folder-action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 11px; }\n .folder-children[_ngcontent-%COMP%] { display: block; }\n .folder-empty-hint[_ngcontent-%COMP%] {\n padding: 6px 16px;\n font-size: 11px;\n font-style: italic;\n color: color-mix(in srgb, var(--conv-list-ink) 45%, transparent);\n }\n .ungrouped-section.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--conv-list-accent) 12%, transparent);\n box-shadow: inset 0 0 0 1px var(--conv-list-accent);\n border-radius: 6px;\n }\n\n \n\n .conversation-item[_ngcontent-%COMP%] { user-select: none; }\n .conversation-item.dragging[_ngcontent-%COMP%] { opacity: 0.4; }\n\n \n\n .menu-item.back[_ngcontent-%COMP%] { font-weight: 600; }\n .menu-item[_ngcontent-%COMP%] .submenu-arrow[_ngcontent-%COMP%] { margin-left: auto; font-size: 10px; }\n .menu-item.current[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--conv-list-accent) 18%, transparent); }\n .move-folder-list[_ngcontent-%COMP%] { max-height: 240px; overflow-y: auto; }"] });
|
|
1283
1341
|
}
|
|
1284
1342
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationListComponent, [{
|
|
1285
1343
|
type: Component,
|
|
1286
1344
|
args: [{ standalone: false, selector: 'mj-conversation-list', template: `
|
|
1287
1345
|
<div class="conversation-list">
|
|
1346
|
+
<!-- Header strip gated as a whole so an empty bordered band never renders:
|
|
1347
|
+
the ⋯ menu also hides during selection mode, so it only counts toward
|
|
1348
|
+
the strip when actually visible. -->
|
|
1349
|
+
@if (showSearch || (showHeaderMenu && !isSelectionMode)) {
|
|
1288
1350
|
<div class="list-header">
|
|
1289
1351
|
<div class="header-top">
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1352
|
+
@if (showSearch) {
|
|
1353
|
+
<input
|
|
1354
|
+
type="text"
|
|
1355
|
+
class="search-input"
|
|
1356
|
+
placeholder="Search conversations..."
|
|
1357
|
+
[(ngModel)]="searchQuery">
|
|
1358
|
+
}
|
|
1359
|
+
@if (showHeaderMenu && !isSelectionMode) {
|
|
1296
1360
|
<div class="header-menu-container">
|
|
1297
1361
|
<button class="btn-menu" (click)="toggleHeaderMenu($event)" title="Options">
|
|
1298
1362
|
<i class="fas fa-ellipsis-v"></i>
|
|
@@ -1323,22 +1387,27 @@ export class ConversationListComponent {
|
|
|
1323
1387
|
}
|
|
1324
1388
|
</div>
|
|
1325
1389
|
</div>
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
<
|
|
1329
|
-
|
|
1390
|
+
}
|
|
1391
|
+
@if (showNewConversationButton) {
|
|
1392
|
+
<button class="btn-new-conversation" (click)="createNewConversation()" title="New Conversation">
|
|
1393
|
+
<i class="fas fa-plus"></i>
|
|
1394
|
+
<span>New Conversation</span>
|
|
1395
|
+
</button>
|
|
1396
|
+
}
|
|
1330
1397
|
<div class="list-content">
|
|
1331
1398
|
<!-- Pinned Section (only show if there are pinned conversations) -->
|
|
1332
1399
|
@if (pinnedConversations.length > 0) {
|
|
1333
1400
|
<div class="sidebar-section pinned-section">
|
|
1334
|
-
|
|
1335
|
-
<div class="section-
|
|
1336
|
-
<
|
|
1337
|
-
|
|
1338
|
-
|
|
1401
|
+
@if (showSectionHeaders) {
|
|
1402
|
+
<div class="section-header" [class.expanded]="pinnedExpanded" (click)="togglePinned()">
|
|
1403
|
+
<div class="section-title">
|
|
1404
|
+
<i class="fas fa-chevron-right"></i>
|
|
1405
|
+
<i class="fas fa-thumbtack section-icon"></i>
|
|
1406
|
+
<span>Pinned</span>
|
|
1407
|
+
</div>
|
|
1339
1408
|
</div>
|
|
1340
|
-
|
|
1341
|
-
<div class="chat-list" [class.expanded]="pinnedExpanded">
|
|
1409
|
+
}
|
|
1410
|
+
<div class="chat-list" [class.expanded]="!showSectionHeaders || pinnedExpanded">
|
|
1342
1411
|
@for (conversation of pinnedConversations; track conversation.ID) {
|
|
1343
1412
|
<ng-container [ngTemplateOutlet]="conversationItem" [ngTemplateOutletContext]="{ $implicit: conversation }"></ng-container>
|
|
1344
1413
|
}
|
|
@@ -1346,8 +1415,16 @@ export class ConversationListComponent {
|
|
|
1346
1415
|
</div>
|
|
1347
1416
|
}
|
|
1348
1417
|
|
|
1349
|
-
|
|
1350
|
-
|
|
1418
|
+
<!-- showSectionHeaders=false forces the FLAT branch even in project
|
|
1419
|
+
grouping: the folder tree's root drop-zone and New Folder action
|
|
1420
|
+
live in the section header, so rendering the tree without headers
|
|
1421
|
+
would let a user drag a folder INTO another folder with no way to
|
|
1422
|
+
ever drag it back out (a one-way door). Flat + headerless is the
|
|
1423
|
+
coherent chrome-less rendering. -->
|
|
1424
|
+
@if (showSectionHeaders && groupBy === 'project') {
|
|
1425
|
+
<!-- Folders Section. NOTE: this whole branch is already gated on
|
|
1426
|
+
showSectionHeaders above, so the header + collapse state here are
|
|
1427
|
+
unconditional — a headerless folder tree never renders. -->
|
|
1351
1428
|
<div class="sidebar-section folders-section">
|
|
1352
1429
|
<div class="section-header" [class.expanded]="foldersExpanded"
|
|
1353
1430
|
[class.drag-over]="dragOverTargetId === 'folders-root'"
|
|
@@ -1381,6 +1458,7 @@ export class ConversationListComponent {
|
|
|
1381
1458
|
(dragover)="onUngroupedDragOver($event)"
|
|
1382
1459
|
(dragleave)="onDragLeave('ungrouped')"
|
|
1383
1460
|
(drop)="onUngroupedDrop($event)">
|
|
1461
|
+
<!-- Same as Folders above: reached only when showSectionHeaders is true. -->
|
|
1384
1462
|
<div class="section-header" [class.expanded]="ungroupedExpanded" (click)="toggleUngrouped()">
|
|
1385
1463
|
<div class="section-title">
|
|
1386
1464
|
<i class="fas fa-chevron-right"></i>
|
|
@@ -1396,13 +1474,15 @@ export class ConversationListComponent {
|
|
|
1396
1474
|
} @else {
|
|
1397
1475
|
<!-- Flat Messages Section -->
|
|
1398
1476
|
<div class="sidebar-section">
|
|
1399
|
-
|
|
1400
|
-
<div class="section-
|
|
1401
|
-
<
|
|
1402
|
-
|
|
1477
|
+
@if (showSectionHeaders) {
|
|
1478
|
+
<div class="section-header" [class.expanded]="directMessagesExpanded" (click)="toggleDirectMessages()">
|
|
1479
|
+
<div class="section-title">
|
|
1480
|
+
<i class="fas fa-chevron-right"></i>
|
|
1481
|
+
<span>Messages</span>
|
|
1482
|
+
</div>
|
|
1403
1483
|
</div>
|
|
1404
|
-
|
|
1405
|
-
<div class="chat-list" [class.expanded]="directMessagesExpanded">
|
|
1484
|
+
}
|
|
1485
|
+
<div class="chat-list" [class.expanded]="!showSectionHeaders || directMessagesExpanded">
|
|
1406
1486
|
@for (conversation of unpinnedConversations; track conversation.ID) {
|
|
1407
1487
|
<ng-container [ngTemplateOutlet]="conversationItem" [ngTemplateOutletContext]="{ $implicit: conversation }"></ng-container>
|
|
1408
1488
|
}
|
|
@@ -1580,7 +1660,7 @@ export class ConversationListComponent {
|
|
|
1580
1660
|
}
|
|
1581
1661
|
</div>
|
|
1582
1662
|
</ng-template>
|
|
1583
|
-
`, styles: ["\n :host { display: block; height: 100%; }\n .conversation-list { display: flex; flex-direction: column; height: 100%; background: var(--mj-brand-secondary); }\n .list-header { padding: 8px; border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent); }\n .search-input {\n width: 100%;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: var(--mj-brand-on-secondary);\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input::placeholder { color: color-mix(in srgb, var(--mj-brand-on-secondary) 50%, transparent); }\n .search-input:focus { outline: none; background: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent); border-color: var(--mj-brand-primary); }\n .btn-new-conversation {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-brand-primary-hover); }\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-title .section-icon {\n color: var(--mj-status-warning);\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: var(--mj-brand-on-secondary);\n font-size: 13px;\n font-weight: 500;\n transition: background 0.2s;\n user-select: none;\n }\n .section-header:hover { background: color-mix(in srgb, var(--mj-brand-on-secondary) 8%, transparent); }\n .section-title {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title i {\n font-size: 10px;\n }\n .section-title i:not(.section-icon) {\n transition: transform 0.2s;\n }\n .section-header.expanded .section-title i:not(.section-icon) { 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: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item:hover { background: color-mix(in srgb, var(--mj-brand-on-secondary) 8%, transparent); color: var(--mj-brand-on-secondary); }\n .conversation-item:hover .conversation-actions { opacity: 1; }\n .conversation-item.active { background: var(--mj-brand-primary); color: var(--mj-brand-on-secondary); }\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: var(--mj-status-warning); }\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; display: flex; align-items: center; gap: 6px; }\n .shared-indicator { font-size: 10px; color: color-mix(in srgb, var(--mj-brand-on-secondary) 55%, transparent); flex-shrink: 0; }\n .conversation-item.active .shared-indicator { color: color-mix(in srgb, var(--mj-brand-on-secondary) 85%, transparent); }\n .conversation-preview { font-size: 12px; color: color-mix(in srgb, var(--mj-brand-on-secondary) 50%, transparent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active .conversation-preview { color: color-mix(in srgb, var(--mj-brand-on-secondary) 80%, transparent); }\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 80%, transparent);\n }\n .conversation-item.active .project-badge {\n background-color: color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n color: var(--mj-brand-on-secondary);\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: var(--mj-brand-accent); font-size: 12px; }\n\n /* Task Indicator */\n .task-indicator {\n color: var(--mj-status-warning);\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 var(--mj-status-warning));\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px var(--mj-status-warning));\n }\n }\n .conversation-item.active .task-indicator {\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\n background: var(--mj-brand-secondary) !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent) !important;\n color: var(--mj-brand-on-secondary);\n }\n .conversation-item.active .menu-btn {\n background: var(--mj-brand-primary-hover) !important;\n color: var(--mj-brand-on-secondary);\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: var(--mj-brand-secondary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 85%, transparent);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n\n .menu-item i {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n }\n\n .menu-item:hover i {\n color: var(--mj-brand-on-secondary);\n }\n\n .menu-item.danger {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, transparent);\n color: var(--mj-status-error);\n }\n\n .menu-item.danger i {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger:hover i {\n color: var(--mj-status-error);\n }\n\n .menu-divider {\n height: 1px;\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\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 color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n border-color: color-mix(in srgb, var(--mj-brand-on-secondary) 30%, transparent);\n }\n\n .header-dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n min-width: 200px;\n background: var(--mj-brand-secondary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 85%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n\n .header-dropdown-menu .dropdown-item i {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n }\n\n .header-dropdown-menu .dropdown-item:hover i {\n color: var(--mj-brand-on-secondary);\n }\n\n .header-dropdown-menu .dropdown-item .shortcut {\n margin-left: auto;\n font-size: 11px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 40%, transparent);\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 color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n border-color: color-mix(in srgb, var(--mj-brand-on-secondary) 30%, transparent);\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: var(--mj-brand-primary);\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: var(--mj-brand-secondary);\n border-top: 1px solid color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\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: color-mix(in srgb, var(--mj-brand-on-secondary) 90%, transparent);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count {\n color: var(--mj-brand-on-secondary);\n }\n\n .link-btn {\n background: none;\n border: none;\n color: var(--mj-brand-accent);\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: var(--mj-brand-on-secondary);\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 color-mix(in srgb, var(--mj-brand-on-secondary) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 70%, transparent);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 10%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n\n .btn-delete-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-status-error);\n border: none;\n border-radius: 6px;\n color: var(--mj-brand-on-secondary);\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: color-mix(in srgb, var(--mj-status-error) 80%, black);\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\n /* Folders */\n .section-action-btn {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n .section-action-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 15%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n .section-action-btn i { font-size: 12px; }\n\n .folder-row {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n cursor: pointer;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 80%, transparent);\n font-size: 13px;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n }\n .folder-row:hover { background: color-mix(in srgb, var(--mj-brand-on-secondary) 8%, transparent); }\n .folder-row.drag-over {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n }\n .folder-row.dragging { opacity: 0.4; }\n .section-header.drag-over {\n background: color-mix(in srgb, var(--mj-brand-primary) 18%, transparent);\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n border-radius: 6px;\n }\n .folder-chevron {\n font-size: 9px;\n width: 10px;\n flex-shrink: 0;\n transition: transform 0.2s;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 55%, transparent);\n }\n .folder-chevron.expanded { transform: rotate(90deg); }\n .folder-icon { font-size: 12px; width: 16px; text-align: center; flex-shrink: 0; }\n .folder-name {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 600;\n }\n .folder-count {\n font-size: 11px;\n font-weight: 600;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 50%, transparent);\n flex-shrink: 0;\n margin-left: auto;\n padding-left: 6px;\n text-align: right;\n }\n .folder-actions {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 2px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 5;\n }\n .folder-row:hover .folder-actions { opacity: 1; pointer-events: auto; }\n .folder-row:hover .folder-count { opacity: 0; }\n .folder-action-btn {\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 60%, transparent);\n cursor: pointer;\n transition: all 0.15s;\n }\n .folder-action-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-on-secondary) 18%, transparent);\n color: var(--mj-brand-on-secondary);\n }\n .folder-action-btn.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 18%, transparent);\n color: var(--mj-status-error);\n }\n .folder-action-btn i { font-size: 11px; }\n .folder-children { display: block; }\n .folder-empty-hint {\n padding: 6px 16px;\n font-size: 11px;\n font-style: italic;\n color: color-mix(in srgb, var(--mj-brand-on-secondary) 45%, transparent);\n }\n .ungrouped-section.drag-over {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n border-radius: 6px;\n }\n\n /* Dragging state */\n .conversation-item { user-select: none; }\n .conversation-item.dragging { opacity: 0.4; }\n\n /* Move-to-folder submenu */\n .menu-item.back { font-weight: 600; }\n .menu-item .submenu-arrow { margin-left: auto; font-size: 10px; }\n .menu-item.current { background: color-mix(in srgb, var(--mj-brand-primary) 18%, transparent); }\n .move-folder-list { max-height: 240px; overflow-y: auto; }\n "] }]
|
|
1663
|
+
`, styles: ["\n :host {\n display: block;\n height: 100%;\n /* White-label theming tokens for the list panel. The public\n --mj-chat-list-* custom properties are host-overridable (set\n them at :root or on any ancestor); the private --conv-list-* names\n resolve the fallback ONCE here so the 70+ usages below stay simple.\n (A self-referential var() fallback would be a custom-property cycle,\n so the two-name indirection is required, not stylistic.) Defaults\n preserve the stock look exactly: a brand-secondary panel with\n on-secondary ink. Hover/border/divider states derive from the ink via\n color-mix, so they follow automatically when the ink is remapped.\n The accent trio drives the panel's ACTION surfaces (New Conversation\n button, search-focus ring, checkbox tick, drag-over highlights) \u2014\n independent of the active-row pair so a host can tint actions on their\n own; defaults to the brand-primary action color, unchanged.\n --conv-list-hover-bg is the row-hover wash: it defaults to the same\n ink-derived tint as before (so a bg/ink remap still gives a neutral\n hover), but a host can point it at a brand tint to make hover an accent\n cue while keeping the panel itself on a neutral surface. */\n --conv-list-bg: var(--mj-chat-list-bg, var(--mj-brand-secondary));\n --conv-list-ink: var(--mj-chat-list-ink, var(--mj-brand-on-secondary));\n --conv-list-active-bg: var(--mj-chat-list-active-bg, var(--mj-brand-primary));\n --conv-list-active-ink: var(--mj-chat-list-active-ink, var(--mj-brand-on-secondary));\n --conv-list-active-hover-bg: var(--mj-chat-list-active-hover-bg, var(--mj-brand-primary-hover));\n --conv-list-accent: var(--mj-chat-list-accent, var(--mj-brand-primary));\n --conv-list-accent-ink: var(--mj-chat-list-accent-ink, var(--mj-text-inverse));\n --conv-list-accent-hover: var(--mj-chat-list-accent-hover, var(--mj-brand-primary-hover));\n --conv-list-hover-bg: var(--mj-chat-list-hover-bg, color-mix(in srgb, var(--conv-list-ink) 8%, transparent));\n }\n .conversation-list { display: flex; flex-direction: column; height: 100%; background: var(--conv-list-bg); }\n .list-header { padding: 8px; border-bottom: 1px solid color-mix(in srgb, var(--conv-list-ink) 10%, transparent); }\n .search-input {\n width: 100%;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n border: 1px solid color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: var(--conv-list-ink);\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input::placeholder { color: color-mix(in srgb, var(--conv-list-ink) 50%, transparent); }\n .search-input:focus { outline: none; background: color-mix(in srgb, var(--conv-list-ink) 15%, transparent); border-color: var(--conv-list-accent); }\n .btn-new-conversation {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: var(--conv-list-accent);\n color: var(--conv-list-accent-ink);\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: var(--conv-list-accent-hover); }\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-title .section-icon {\n color: var(--mj-status-warning);\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: var(--conv-list-ink);\n font-size: 13px;\n font-weight: 500;\n transition: background 0.2s;\n user-select: none;\n }\n .section-header:hover { background: color-mix(in srgb, var(--conv-list-ink) 8%, transparent); }\n .section-title {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title i {\n font-size: 10px;\n }\n .section-title i:not(.section-icon) {\n transition: transform 0.2s;\n }\n .section-header.expanded .section-title i:not(.section-icon) { 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: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item:hover { background: var(--conv-list-hover-bg); color: var(--conv-list-ink); }\n .conversation-item:hover .conversation-actions { opacity: 1; }\n .conversation-item.active { background: var(--conv-list-active-bg); color: var(--conv-list-active-ink); }\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: var(--mj-status-warning); }\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; display: flex; align-items: center; gap: 6px; }\n .shared-indicator { font-size: 10px; color: color-mix(in srgb, var(--conv-list-ink) 55%, transparent); flex-shrink: 0; }\n .conversation-item.active .shared-indicator { color: color-mix(in srgb, var(--conv-list-active-ink) 85%, transparent); }\n .conversation-preview { font-size: 12px; color: color-mix(in srgb, var(--conv-list-ink) 50%, transparent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active .conversation-preview { color: color-mix(in srgb, var(--conv-list-active-ink) 80%, transparent); }\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n color: color-mix(in srgb, var(--conv-list-ink) 80%, transparent);\n }\n .conversation-item.active .project-badge {\n background-color: color-mix(in srgb, var(--conv-list-active-ink) 20%, transparent);\n color: var(--conv-list-active-ink);\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: var(--mj-brand-accent); font-size: 12px; }\n\n /* Task Indicator */\n .task-indicator {\n color: var(--mj-status-warning);\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 var(--mj-status-warning));\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px var(--mj-status-warning));\n }\n }\n .conversation-item.active .task-indicator {\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\n background: var(--conv-list-bg) !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 15%, transparent) !important;\n color: var(--conv-list-ink);\n }\n .conversation-item.active .menu-btn {\n background: var(--conv-list-active-hover-bg) !important;\n color: var(--conv-list-active-ink);\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: var(--conv-list-bg);\n border: 1px solid color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--conv-list-ink) 85%, transparent);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n }\n\n .menu-item i {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n }\n\n .menu-item:hover i {\n color: var(--conv-list-ink);\n }\n\n .menu-item.danger {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, transparent);\n color: var(--mj-status-error);\n }\n\n .menu-item.danger i {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger:hover i {\n color: var(--mj-status-error);\n }\n\n .menu-divider {\n height: 1px;\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\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 /* Brand-token ramp (was hardcoded tailwind blue/purple/emerald rgba values,\n which ignored theming): primary/accent open the flash, success/primary\n carry the fade, at the original alpha ramp (40/35/30/20; glows 50-20). */\n @keyframes renameHighlight {\n 0% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-brand-primary) 40%, transparent),\n color-mix(in srgb, var(--mj-brand-accent) 40%, transparent));\n transform: scale(1.03);\n box-shadow: 0 0 20px color-mix(in srgb, var(--mj-brand-primary) 50%, transparent);\n }\n 25% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-brand-primary) 35%, transparent),\n color-mix(in srgb, var(--mj-brand-accent) 35%, transparent));\n box-shadow: 0 0 15px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n }\n 50% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-status-success) 30%, transparent),\n color-mix(in srgb, var(--mj-brand-primary) 30%, transparent));\n transform: scale(1.02);\n box-shadow: 0 0 10px color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n }\n 75% {\n background: linear-gradient(90deg,\n color-mix(in srgb, var(--mj-status-success) 20%, transparent),\n color-mix(in srgb, var(--mj-brand-primary) 20%, transparent));\n box-shadow: 0 0 5px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\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 color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n border-color: color-mix(in srgb, var(--conv-list-ink) 30%, transparent);\n }\n\n .header-dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n min-width: 200px;\n background: var(--conv-list-bg);\n border: 1px solid color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\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: color-mix(in srgb, var(--conv-list-ink) 85%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n }\n\n .header-dropdown-menu .dropdown-item i {\n width: 16px;\n font-size: 13px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n }\n\n .header-dropdown-menu .dropdown-item:hover i {\n color: var(--conv-list-ink);\n }\n\n .header-dropdown-menu .dropdown-item .shortcut {\n margin-left: auto;\n font-size: 11px;\n color: color-mix(in srgb, var(--conv-list-ink) 40%, transparent);\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 color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n border-color: color-mix(in srgb, var(--conv-list-ink) 30%, transparent);\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: var(--conv-list-accent);\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: var(--conv-list-bg);\n border-top: 1px solid color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\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: color-mix(in srgb, var(--conv-list-ink) 90%, transparent);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count {\n color: var(--conv-list-ink);\n }\n\n .link-btn {\n background: none;\n border: none;\n color: var(--mj-brand-accent);\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: var(--conv-list-ink);\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 color-mix(in srgb, var(--conv-list-ink) 20%, transparent);\n border-radius: 6px;\n color: color-mix(in srgb, var(--conv-list-ink) 70%, transparent);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 10%, transparent);\n color: var(--conv-list-ink);\n }\n\n .btn-delete-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-status-error);\n border: none;\n border-radius: 6px;\n /* Deliberately NOT --conv-list-ink: this ink sits on the error-red button,\n not the panel, so it must not follow a panel remap. (brand-on-secondary\n stays light in both modes; text-inverse flips dark in dark mode.) */\n color: var(--mj-brand-on-secondary);\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: color-mix(in srgb, var(--mj-status-error) 80%, black);\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\n /* Folders */\n .section-action-btn {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n cursor: pointer;\n transition: all 0.2s;\n }\n .section-action-btn:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 15%, transparent);\n color: var(--conv-list-ink);\n }\n .section-action-btn i { font-size: 12px; }\n\n .folder-row {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n cursor: pointer;\n color: color-mix(in srgb, var(--conv-list-ink) 80%, transparent);\n font-size: 13px;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n }\n .folder-row:hover { background: color-mix(in srgb, var(--conv-list-ink) 8%, transparent); }\n .folder-row.drag-over {\n background: color-mix(in srgb, var(--conv-list-accent) 25%, transparent);\n box-shadow: inset 0 0 0 1px var(--conv-list-accent);\n }\n .folder-row.dragging { opacity: 0.4; }\n .section-header.drag-over {\n background: color-mix(in srgb, var(--conv-list-accent) 18%, transparent);\n box-shadow: inset 0 0 0 1px var(--conv-list-accent);\n border-radius: 6px;\n }\n .folder-chevron {\n font-size: 9px;\n width: 10px;\n flex-shrink: 0;\n transition: transform 0.2s;\n color: color-mix(in srgb, var(--conv-list-ink) 55%, transparent);\n }\n .folder-chevron.expanded { transform: rotate(90deg); }\n .folder-icon { font-size: 12px; width: 16px; text-align: center; flex-shrink: 0; }\n .folder-name {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 600;\n }\n .folder-count {\n font-size: 11px;\n font-weight: 600;\n color: color-mix(in srgb, var(--conv-list-ink) 50%, transparent);\n flex-shrink: 0;\n margin-left: auto;\n padding-left: 6px;\n text-align: right;\n }\n .folder-actions {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 2px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 5;\n }\n .folder-row:hover .folder-actions { opacity: 1; pointer-events: auto; }\n .folder-row:hover .folder-count { opacity: 0; }\n .folder-action-btn {\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: color-mix(in srgb, var(--conv-list-ink) 60%, transparent);\n cursor: pointer;\n transition: all 0.15s;\n }\n .folder-action-btn:hover {\n background: color-mix(in srgb, var(--conv-list-ink) 18%, transparent);\n color: var(--conv-list-ink);\n }\n .folder-action-btn.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 18%, transparent);\n color: var(--mj-status-error);\n }\n .folder-action-btn i { font-size: 11px; }\n .folder-children { display: block; }\n .folder-empty-hint {\n padding: 6px 16px;\n font-size: 11px;\n font-style: italic;\n color: color-mix(in srgb, var(--conv-list-ink) 45%, transparent);\n }\n .ungrouped-section.drag-over {\n background: color-mix(in srgb, var(--conv-list-accent) 12%, transparent);\n box-shadow: inset 0 0 0 1px var(--conv-list-accent);\n border-radius: 6px;\n }\n\n /* Dragging state */\n .conversation-item { user-select: none; }\n .conversation-item.dragging { opacity: 0.4; }\n\n /* Move-to-folder submenu */\n .menu-item.back { font-weight: 600; }\n .menu-item .submenu-arrow { margin-left: auto; font-size: 10px; }\n .menu-item.current { background: color-mix(in srgb, var(--conv-list-accent) 18%, transparent); }\n .move-folder-list { max-height: 240px; overflow-y: auto; }\n "] }]
|
|
1584
1664
|
}], () => [{ type: i1.DialogService }, { type: i2.NotificationService }, { type: i3.ActiveTasksService }, { type: i4.MJDialogService }, { type: i0.ChangeDetectorRef }], { environmentId: [{
|
|
1585
1665
|
type: Input
|
|
1586
1666
|
}], currentUser: [{
|
|
@@ -1593,6 +1673,14 @@ export class ConversationListComponent {
|
|
|
1593
1673
|
type: Input
|
|
1594
1674
|
}], isMobileView: [{
|
|
1595
1675
|
type: Input
|
|
1676
|
+
}], showSearch: [{
|
|
1677
|
+
type: Input
|
|
1678
|
+
}], showNewConversationButton: [{
|
|
1679
|
+
type: Input
|
|
1680
|
+
}], showHeaderMenu: [{
|
|
1681
|
+
type: Input
|
|
1682
|
+
}], showSectionHeaders: [{
|
|
1683
|
+
type: Input
|
|
1596
1684
|
}], conversationSelected: [{
|
|
1597
1685
|
type: Output
|
|
1598
1686
|
}], conversationDeleted: [{
|
|
@@ -1609,5 +1697,5 @@ export class ConversationListComponent {
|
|
|
1609
1697
|
type: HostListener,
|
|
1610
1698
|
args: ['document:click']
|
|
1611
1699
|
}] }); })();
|
|
1612
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber:
|
|
1700
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber: 1029 }); })();
|
|
1613
1701
|
//# sourceMappingURL=conversation-list.component.js.map
|