@memberjunction/ng-conversations 2.107.0 → 2.108.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +67 -0
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +725 -0
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -0
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts +39 -0
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/artifact-create-modal.component.js +351 -0
- package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +3 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +60 -10
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.d.ts +43 -0
- package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-share-modal.component.js +728 -0
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts +8 -1
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.js +217 -115
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts +2 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +52 -34
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +45 -9
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +586 -220
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +42 -15
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +336 -219
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +7 -1
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +65 -10
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +39 -5
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +259 -137
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +5 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +26 -12
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/message/suggested-responses.component.d.ts +55 -0
- package/dist/lib/components/message/suggested-responses.component.d.ts.map +1 -0
- package/dist/lib/components/message/suggested-responses.component.js +207 -0
- package/dist/lib/components/message/suggested-responses.component.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +245 -113
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts +29 -0
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -0
- package/dist/lib/components/shared/user-picker.component.js +229 -0
- package/dist/lib/components/shared/user-picker.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +7 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +36 -6
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +19 -2
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +167 -58
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +52 -47
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +27 -4
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-complete-query.model.d.ts +75 -0
- package/dist/lib/models/conversation-complete-query.model.d.ts.map +1 -0
- package/dist/lib/models/conversation-complete-query.model.js +19 -0
- package/dist/lib/models/conversation-complete-query.model.js.map +1 -0
- package/dist/lib/models/conversation-state.model.d.ts +27 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +5 -0
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +14 -9
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/collection-permission.service.d.ts +96 -0
- package/dist/lib/services/collection-permission.service.d.ts.map +1 -0
- package/dist/lib/services/collection-permission.service.js +303 -0
- package/dist/lib/services/collection-permission.service.js.map +1 -0
- package/dist/lib/services/collection-state.service.d.ts +34 -0
- package/dist/lib/services/collection-state.service.d.ts.map +1 -0
- package/dist/lib/services/collection-state.service.js +50 -0
- package/dist/lib/services/collection-state.service.js.map +1 -0
- package/dist/lib/services/conversation-agent.service.d.ts +9 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +41 -12
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts.map +1 -1
- package/dist/lib/services/data-cache.service.js +5 -0
- package/dist/lib/services/data-cache.service.js.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.js +1 -1
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.js +0 -5
- package/dist/lib/services/mention-parser.service.js.map +1 -1
- package/dist/lib/services/search.service.d.ts +26 -3
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +172 -12
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -12
|
@@ -10,30 +10,30 @@ const _c0 = ["searchInput"];
|
|
|
10
10
|
const _forTrack0 = ($index, $item) => $item.id;
|
|
11
11
|
function SearchPanelComponent_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
12
12
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
13
|
-
i0.ɵɵelementStart(0, "button",
|
|
13
|
+
i0.ɵɵelementStart(0, "button", 30);
|
|
14
14
|
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
|
|
15
15
|
i0.ɵɵelement(1, "i", 10);
|
|
16
16
|
i0.ɵɵelementEnd();
|
|
17
17
|
} }
|
|
18
|
-
function
|
|
18
|
+
function SearchPanelComponent_Conditional_0_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
19
19
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
20
|
-
i0.ɵɵelementStart(0, "button",
|
|
21
|
-
i0.ɵɵlistener("click", function
|
|
22
|
-
i0.ɵɵelement(1, "i",
|
|
20
|
+
i0.ɵɵelementStart(0, "button", 31);
|
|
21
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clearDateRange()); });
|
|
22
|
+
i0.ɵɵelement(1, "i", 32);
|
|
23
23
|
i0.ɵɵelementEnd();
|
|
24
24
|
} }
|
|
25
|
-
function
|
|
26
|
-
i0.ɵɵelementStart(0, "div",
|
|
27
|
-
i0.ɵɵelement(1, "kendo-loader",
|
|
25
|
+
function SearchPanelComponent_Conditional_0_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 24);
|
|
27
|
+
i0.ɵɵelement(1, "kendo-loader", 33);
|
|
28
28
|
i0.ɵɵelementStart(2, "span");
|
|
29
29
|
i0.ɵɵtext(3, "Searching...");
|
|
30
30
|
i0.ɵɵelementEnd()();
|
|
31
31
|
} }
|
|
32
|
-
function
|
|
32
|
+
function SearchPanelComponent_Conditional_0_Conditional_36_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
33
33
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
34
|
-
i0.ɵɵelementStart(0, "button",
|
|
35
|
-
i0.ɵɵlistener("click", function
|
|
36
|
-
i0.ɵɵelement(1, "i",
|
|
34
|
+
i0.ɵɵelementStart(0, "button", 41);
|
|
35
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_36_Conditional_0_For_8_Template_button_click_0_listener() { const search_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.useRecentSearch(search_r7)); });
|
|
36
|
+
i0.ɵɵelement(1, "i", 42);
|
|
37
37
|
i0.ɵɵelementStart(2, "span");
|
|
38
38
|
i0.ɵɵtext(3);
|
|
39
39
|
i0.ɵɵelementEnd()();
|
|
@@ -42,31 +42,31 @@ function SearchPanelComponent_Conditional_0_Conditional_30_Conditional_0_For_8_T
|
|
|
42
42
|
i0.ɵɵadvance(3);
|
|
43
43
|
i0.ɵɵtextInterpolate(search_r7);
|
|
44
44
|
} }
|
|
45
|
-
function
|
|
45
|
+
function SearchPanelComponent_Conditional_0_Conditional_36_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
46
46
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
47
|
-
i0.ɵɵelementStart(0, "div",
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 37)(2, "h3");
|
|
48
48
|
i0.ɵɵtext(3, "Recent Searches");
|
|
49
49
|
i0.ɵɵelementEnd();
|
|
50
|
-
i0.ɵɵelementStart(4, "button",
|
|
51
|
-
i0.ɵɵlistener("click", function
|
|
50
|
+
i0.ɵɵelementStart(4, "button", 38);
|
|
51
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_36_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearRecentSearches()); });
|
|
52
52
|
i0.ɵɵtext(5, " Clear ");
|
|
53
53
|
i0.ɵɵelementEnd()();
|
|
54
|
-
i0.ɵɵelementStart(6, "div",
|
|
55
|
-
i0.ɵɵrepeaterCreate(7,
|
|
54
|
+
i0.ɵɵelementStart(6, "div", 39);
|
|
55
|
+
i0.ɵɵrepeaterCreate(7, SearchPanelComponent_Conditional_0_Conditional_36_Conditional_0_For_8_Template, 4, 1, "button", 40, i0.ɵɵrepeaterTrackByIdentity);
|
|
56
56
|
i0.ɵɵelementEnd()();
|
|
57
57
|
} if (rf & 2) {
|
|
58
58
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
59
59
|
i0.ɵɵadvance(7);
|
|
60
60
|
i0.ɵɵrepeater(ctx_r1.recentSearches);
|
|
61
61
|
} }
|
|
62
|
-
function
|
|
63
|
-
i0.ɵɵtemplate(0,
|
|
64
|
-
i0.ɵɵelementStart(1, "div",
|
|
65
|
-
i0.ɵɵelement(2, "i",
|
|
62
|
+
function SearchPanelComponent_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
63
|
+
i0.ɵɵtemplate(0, SearchPanelComponent_Conditional_0_Conditional_36_Conditional_0_Template, 9, 0, "div", 34);
|
|
64
|
+
i0.ɵɵelementStart(1, "div", 25);
|
|
65
|
+
i0.ɵɵelement(2, "i", 35);
|
|
66
66
|
i0.ɵɵelementStart(3, "p");
|
|
67
|
-
i0.ɵɵtext(4, "Search across all your conversations, messages, and
|
|
67
|
+
i0.ɵɵtext(4, "Search across all your conversations, messages, artifacts, collections, and tasks");
|
|
68
68
|
i0.ɵɵelementEnd();
|
|
69
|
-
i0.ɵɵelementStart(5, "div",
|
|
69
|
+
i0.ɵɵelementStart(5, "div", 36)(6, "h4");
|
|
70
70
|
i0.ɵɵtext(7, "Tips:");
|
|
71
71
|
i0.ɵɵelementEnd();
|
|
72
72
|
i0.ɵɵelementStart(8, "ul")(9, "li");
|
|
@@ -82,13 +82,13 @@ function SearchPanelComponent_Conditional_0_Conditional_30_Template(rf, ctx) { i
|
|
|
82
82
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
83
83
|
i0.ɵɵconditional(ctx_r1.recentSearches.length > 0 ? 0 : -1);
|
|
84
84
|
} }
|
|
85
|
-
function
|
|
86
|
-
i0.ɵɵelementStart(0, "div",
|
|
87
|
-
i0.ɵɵelement(1, "i",
|
|
85
|
+
function SearchPanelComponent_Conditional_0_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
87
|
+
i0.ɵɵelement(1, "i", 43);
|
|
88
88
|
i0.ɵɵelementStart(2, "p");
|
|
89
89
|
i0.ɵɵtext(3);
|
|
90
90
|
i0.ɵɵelementEnd();
|
|
91
|
-
i0.ɵɵelementStart(4, "p",
|
|
91
|
+
i0.ɵɵelementStart(4, "p", 44);
|
|
92
92
|
i0.ɵɵtext(5, "Try adjusting your filters or search terms");
|
|
93
93
|
i0.ɵɵelementEnd()();
|
|
94
94
|
} if (rf & 2) {
|
|
@@ -96,25 +96,25 @@ function SearchPanelComponent_Conditional_0_Conditional_31_Template(rf, ctx) { i
|
|
|
96
96
|
i0.ɵɵadvance(3);
|
|
97
97
|
i0.ɵɵtextInterpolate1("No results found for \"", ctx_r1.searchQuery, "\"");
|
|
98
98
|
} }
|
|
99
|
-
function
|
|
100
|
-
i0.ɵɵelement(0, "div",
|
|
99
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_2_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
+
i0.ɵɵelement(0, "div", 56);
|
|
101
101
|
} if (rf & 2) {
|
|
102
102
|
const result_r9 = i0.ɵɵnextContext().$implicit;
|
|
103
103
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
104
104
|
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r9.matchedText, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
105
105
|
} }
|
|
106
|
-
function
|
|
106
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_2_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
107
107
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
108
|
-
i0.ɵɵelementStart(0, "button",
|
|
109
|
-
i0.ɵɵlistener("click", function
|
|
110
|
-
i0.ɵɵelementStart(1, "div",
|
|
111
|
-
i0.ɵɵelement(2, "i",
|
|
108
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
109
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_2_For_6_Template_button_click_0_listener() { const result_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.selectResult(result_r9)); });
|
|
110
|
+
i0.ɵɵelementStart(1, "div", 51);
|
|
111
|
+
i0.ɵɵelement(2, "i", 52);
|
|
112
112
|
i0.ɵɵelementEnd();
|
|
113
|
-
i0.ɵɵelementStart(3, "div",
|
|
114
|
-
i0.ɵɵelement(4, "div",
|
|
115
|
-
i0.ɵɵtemplate(6,
|
|
113
|
+
i0.ɵɵelementStart(3, "div", 53);
|
|
114
|
+
i0.ɵɵelement(4, "div", 54)(5, "div", 55);
|
|
115
|
+
i0.ɵɵtemplate(6, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_2_For_6_Conditional_6_Template, 1, 1, "div", 56);
|
|
116
116
|
i0.ɵɵelementEnd();
|
|
117
|
-
i0.ɵɵelementStart(7, "div",
|
|
117
|
+
i0.ɵɵelementStart(7, "div", 57)(8, "span", 58);
|
|
118
118
|
i0.ɵɵtext(9);
|
|
119
119
|
i0.ɵɵelementEnd()()();
|
|
120
120
|
} if (rf & 2) {
|
|
@@ -132,13 +132,13 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_2_For_6_T
|
|
|
132
132
|
i0.ɵɵadvance(3);
|
|
133
133
|
i0.ɵɵtextInterpolate(ctx_r1.formatDate(result_r9.createdAt));
|
|
134
134
|
} }
|
|
135
|
-
function
|
|
136
|
-
i0.ɵɵelementStart(0, "div",
|
|
135
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "h3", 47);
|
|
137
137
|
i0.ɵɵelement(2, "i", 14);
|
|
138
138
|
i0.ɵɵtext(3);
|
|
139
139
|
i0.ɵɵelementEnd();
|
|
140
|
-
i0.ɵɵelementStart(4, "div",
|
|
141
|
-
i0.ɵɵrepeaterCreate(5,
|
|
140
|
+
i0.ɵɵelementStart(4, "div", 48);
|
|
141
|
+
i0.ɵɵrepeaterCreate(5, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_2_For_6_Template, 10, 8, "button", 49, _forTrack0);
|
|
142
142
|
i0.ɵɵelementEnd()();
|
|
143
143
|
} if (rf & 2) {
|
|
144
144
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -147,8 +147,8 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_2_Templat
|
|
|
147
147
|
i0.ɵɵadvance(2);
|
|
148
148
|
i0.ɵɵrepeater(ctx_r1.results.conversations);
|
|
149
149
|
} }
|
|
150
|
-
function
|
|
151
|
-
i0.ɵɵelementStart(0, "div",
|
|
150
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
151
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
152
152
|
i0.ɵɵelement(1, "i", 14);
|
|
153
153
|
i0.ɵɵtext(2);
|
|
154
154
|
i0.ɵɵelementEnd();
|
|
@@ -157,26 +157,26 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_3_For_6_C
|
|
|
157
157
|
i0.ɵɵadvance(2);
|
|
158
158
|
i0.ɵɵtextInterpolate1(" ", result_r11.conversationName, " ");
|
|
159
159
|
} }
|
|
160
|
-
function
|
|
161
|
-
i0.ɵɵelement(0, "div",
|
|
160
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
161
|
+
i0.ɵɵelement(0, "div", 56);
|
|
162
162
|
} if (rf & 2) {
|
|
163
163
|
const result_r11 = i0.ɵɵnextContext().$implicit;
|
|
164
164
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
165
165
|
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r11.matchedText, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
166
166
|
} }
|
|
167
|
-
function
|
|
167
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
168
168
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
169
|
-
i0.ɵɵelementStart(0, "button",
|
|
170
|
-
i0.ɵɵlistener("click", function
|
|
171
|
-
i0.ɵɵelementStart(1, "div",
|
|
172
|
-
i0.ɵɵelement(2, "i",
|
|
169
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
170
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_For_6_Template_button_click_0_listener() { const result_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.selectResult(result_r11)); });
|
|
171
|
+
i0.ɵɵelementStart(1, "div", 51);
|
|
172
|
+
i0.ɵɵelement(2, "i", 52);
|
|
173
173
|
i0.ɵɵelementEnd();
|
|
174
|
-
i0.ɵɵelementStart(3, "div",
|
|
175
|
-
i0.ɵɵtemplate(4,
|
|
176
|
-
i0.ɵɵelement(5, "div",
|
|
177
|
-
i0.ɵɵtemplate(6,
|
|
174
|
+
i0.ɵɵelementStart(3, "div", 53);
|
|
175
|
+
i0.ɵɵtemplate(4, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_For_6_Conditional_4_Template, 3, 1, "div", 59);
|
|
176
|
+
i0.ɵɵelement(5, "div", 55);
|
|
177
|
+
i0.ɵɵtemplate(6, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_For_6_Conditional_6_Template, 1, 1, "div", 56);
|
|
178
178
|
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵelementStart(7, "div",
|
|
179
|
+
i0.ɵɵelementStart(7, "div", 57)(8, "span", 58);
|
|
180
180
|
i0.ɵɵtext(9);
|
|
181
181
|
i0.ɵɵelementEnd()()();
|
|
182
182
|
} if (rf & 2) {
|
|
@@ -194,13 +194,13 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_3_For_6_T
|
|
|
194
194
|
i0.ɵɵadvance(3);
|
|
195
195
|
i0.ɵɵtextInterpolate(ctx_r1.formatDate(result_r11.createdAt));
|
|
196
196
|
} }
|
|
197
|
-
function
|
|
198
|
-
i0.ɵɵelementStart(0, "div",
|
|
197
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "h3", 47);
|
|
199
199
|
i0.ɵɵelement(2, "i", 15);
|
|
200
200
|
i0.ɵɵtext(3);
|
|
201
201
|
i0.ɵɵelementEnd();
|
|
202
|
-
i0.ɵɵelementStart(4, "div",
|
|
203
|
-
i0.ɵɵrepeaterCreate(5,
|
|
202
|
+
i0.ɵɵelementStart(4, "div", 48);
|
|
203
|
+
i0.ɵɵrepeaterCreate(5, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_For_6_Template, 10, 8, "button", 49, _forTrack0);
|
|
204
204
|
i0.ɵɵelementEnd()();
|
|
205
205
|
} if (rf & 2) {
|
|
206
206
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -209,8 +209,8 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_3_Templat
|
|
|
209
209
|
i0.ɵɵadvance(2);
|
|
210
210
|
i0.ɵɵrepeater(ctx_r1.results.messages);
|
|
211
211
|
} }
|
|
212
|
-
function
|
|
213
|
-
i0.ɵɵelementStart(0, "div",
|
|
212
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
213
|
+
i0.ɵɵelementStart(0, "div", 60)(1, "span", 61);
|
|
214
214
|
i0.ɵɵtext(2);
|
|
215
215
|
i0.ɵɵelementEnd()();
|
|
216
216
|
} if (rf & 2) {
|
|
@@ -218,8 +218,8 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_4_For_6_C
|
|
|
218
218
|
i0.ɵɵadvance(2);
|
|
219
219
|
i0.ɵɵtextInterpolate(result_r13.artifactType);
|
|
220
220
|
} }
|
|
221
|
-
function
|
|
222
|
-
i0.ɵɵelementStart(0, "div",
|
|
221
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
222
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
223
223
|
i0.ɵɵelement(1, "i", 14);
|
|
224
224
|
i0.ɵɵtext(2);
|
|
225
225
|
i0.ɵɵelementEnd();
|
|
@@ -228,27 +228,27 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_4_For_6_C
|
|
|
228
228
|
i0.ɵɵadvance(2);
|
|
229
229
|
i0.ɵɵtextInterpolate1(" ", result_r13.conversationName, " ");
|
|
230
230
|
} }
|
|
231
|
-
function
|
|
232
|
-
i0.ɵɵelement(0, "div",
|
|
231
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
232
|
+
i0.ɵɵelement(0, "div", 56);
|
|
233
233
|
} if (rf & 2) {
|
|
234
234
|
const result_r13 = i0.ɵɵnextContext().$implicit;
|
|
235
235
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
236
236
|
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r13.matchedText, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
237
237
|
} }
|
|
238
|
-
function
|
|
238
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
239
239
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
240
|
-
i0.ɵɵelementStart(0, "button",
|
|
241
|
-
i0.ɵɵlistener("click", function
|
|
242
|
-
i0.ɵɵelementStart(1, "div",
|
|
243
|
-
i0.ɵɵelement(2, "i",
|
|
244
|
-
i0.ɵɵelementEnd();
|
|
245
|
-
i0.ɵɵelementStart(3, "div",
|
|
246
|
-
i0.ɵɵelement(4, "div",
|
|
247
|
-
i0.ɵɵtemplate(5,
|
|
248
|
-
i0.ɵɵelement(7, "div",
|
|
249
|
-
i0.ɵɵtemplate(8,
|
|
250
|
-
i0.ɵɵelementEnd();
|
|
251
|
-
i0.ɵɵelementStart(9, "div",
|
|
240
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
241
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Template_button_click_0_listener() { const result_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.selectResult(result_r13)); });
|
|
242
|
+
i0.ɵɵelementStart(1, "div", 51);
|
|
243
|
+
i0.ɵɵelement(2, "i", 52);
|
|
244
|
+
i0.ɵɵelementEnd();
|
|
245
|
+
i0.ɵɵelementStart(3, "div", 53);
|
|
246
|
+
i0.ɵɵelement(4, "div", 54);
|
|
247
|
+
i0.ɵɵtemplate(5, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Conditional_5_Template, 3, 1, "div", 60)(6, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Conditional_6_Template, 3, 1, "div", 59);
|
|
248
|
+
i0.ɵɵelement(7, "div", 55);
|
|
249
|
+
i0.ɵɵtemplate(8, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Conditional_8_Template, 1, 1, "div", 56);
|
|
250
|
+
i0.ɵɵelementEnd();
|
|
251
|
+
i0.ɵɵelementStart(9, "div", 57)(10, "span", 58);
|
|
252
252
|
i0.ɵɵtext(11);
|
|
253
253
|
i0.ɵɵelementEnd()()();
|
|
254
254
|
} if (rf & 2) {
|
|
@@ -270,13 +270,13 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_4_For_6_T
|
|
|
270
270
|
i0.ɵɵadvance(3);
|
|
271
271
|
i0.ɵɵtextInterpolate(ctx_r1.formatDate(result_r13.createdAt));
|
|
272
272
|
} }
|
|
273
|
-
function
|
|
274
|
-
i0.ɵɵelementStart(0, "div",
|
|
273
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
274
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "h3", 47);
|
|
275
275
|
i0.ɵɵelement(2, "i", 16);
|
|
276
276
|
i0.ɵɵtext(3);
|
|
277
277
|
i0.ɵɵelementEnd();
|
|
278
|
-
i0.ɵɵelementStart(4, "div",
|
|
279
|
-
i0.ɵɵrepeaterCreate(5,
|
|
278
|
+
i0.ɵɵelementStart(4, "div", 48);
|
|
279
|
+
i0.ɵɵrepeaterCreate(5, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_For_6_Template, 12, 10, "button", 49, _forTrack0);
|
|
280
280
|
i0.ɵɵelementEnd()();
|
|
281
281
|
} if (rf & 2) {
|
|
282
282
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -285,11 +285,113 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Conditional_4_Templat
|
|
|
285
285
|
i0.ɵɵadvance(2);
|
|
286
286
|
i0.ɵɵrepeater(ctx_r1.results.artifacts);
|
|
287
287
|
} }
|
|
288
|
-
function
|
|
289
|
-
i0.ɵɵ
|
|
288
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_5_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
289
|
+
i0.ɵɵelement(0, "div", 56);
|
|
290
|
+
} if (rf & 2) {
|
|
291
|
+
const result_r15 = i0.ɵɵnextContext().$implicit;
|
|
292
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
293
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r15.matchedText, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
294
|
+
} }
|
|
295
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_5_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
296
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
297
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
298
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_5_For_6_Template_button_click_0_listener() { const result_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.selectResult(result_r15)); });
|
|
299
|
+
i0.ɵɵelementStart(1, "div", 51);
|
|
300
|
+
i0.ɵɵelement(2, "i", 52);
|
|
301
|
+
i0.ɵɵelementEnd();
|
|
302
|
+
i0.ɵɵelementStart(3, "div", 53);
|
|
303
|
+
i0.ɵɵelement(4, "div", 54)(5, "div", 55);
|
|
304
|
+
i0.ɵɵtemplate(6, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_5_For_6_Conditional_6_Template, 1, 1, "div", 56);
|
|
305
|
+
i0.ɵɵelementEnd();
|
|
306
|
+
i0.ɵɵelementStart(7, "div", 57)(8, "span", 58);
|
|
307
|
+
i0.ɵɵtext(9);
|
|
308
|
+
i0.ɵɵelementEnd()()();
|
|
309
|
+
} if (rf & 2) {
|
|
310
|
+
const result_r15 = ctx.$implicit;
|
|
311
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
312
|
+
i0.ɵɵclassProp("selected", ctx_r1.isResultSelected(result_r15));
|
|
313
|
+
i0.ɵɵadvance(2);
|
|
314
|
+
i0.ɵɵclassMap(ctx_r1.getResultIcon(result_r15.type));
|
|
315
|
+
i0.ɵɵadvance(2);
|
|
316
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r15.title, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
317
|
+
i0.ɵɵadvance();
|
|
318
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r15.preview, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
319
|
+
i0.ɵɵadvance();
|
|
320
|
+
i0.ɵɵconditional(result_r15.matchedText ? 6 : -1);
|
|
321
|
+
i0.ɵɵadvance(3);
|
|
322
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatDate(result_r15.createdAt));
|
|
323
|
+
} }
|
|
324
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
325
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "h3", 47);
|
|
326
|
+
i0.ɵɵelement(2, "i", 17);
|
|
327
|
+
i0.ɵɵtext(3);
|
|
328
|
+
i0.ɵɵelementEnd();
|
|
329
|
+
i0.ɵɵelementStart(4, "div", 48);
|
|
330
|
+
i0.ɵɵrepeaterCreate(5, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_5_For_6_Template, 10, 8, "button", 49, _forTrack0);
|
|
331
|
+
i0.ɵɵelementEnd()();
|
|
332
|
+
} if (rf & 2) {
|
|
333
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
334
|
+
i0.ɵɵadvance(3);
|
|
335
|
+
i0.ɵɵtextInterpolate1(" Collections (", ctx_r1.results.collections.length, ") ");
|
|
336
|
+
i0.ɵɵadvance(2);
|
|
337
|
+
i0.ɵɵrepeater(ctx_r1.results.collections);
|
|
338
|
+
} }
|
|
339
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_6_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
340
|
+
i0.ɵɵelement(0, "div", 56);
|
|
341
|
+
} if (rf & 2) {
|
|
342
|
+
const result_r17 = i0.ɵɵnextContext().$implicit;
|
|
343
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
344
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r17.matchedText, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
345
|
+
} }
|
|
346
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_6_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
347
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
348
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
349
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_6_For_6_Template_button_click_0_listener() { const result_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.selectResult(result_r17)); });
|
|
350
|
+
i0.ɵɵelementStart(1, "div", 51);
|
|
351
|
+
i0.ɵɵelement(2, "i", 52);
|
|
352
|
+
i0.ɵɵelementEnd();
|
|
353
|
+
i0.ɵɵelementStart(3, "div", 53);
|
|
354
|
+
i0.ɵɵelement(4, "div", 54)(5, "div", 55);
|
|
355
|
+
i0.ɵɵtemplate(6, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_6_For_6_Conditional_6_Template, 1, 1, "div", 56);
|
|
356
|
+
i0.ɵɵelementEnd();
|
|
357
|
+
i0.ɵɵelementStart(7, "div", 57)(8, "span", 58);
|
|
358
|
+
i0.ɵɵtext(9);
|
|
359
|
+
i0.ɵɵelementEnd()()();
|
|
360
|
+
} if (rf & 2) {
|
|
361
|
+
const result_r17 = ctx.$implicit;
|
|
362
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
363
|
+
i0.ɵɵclassProp("selected", ctx_r1.isResultSelected(result_r17));
|
|
364
|
+
i0.ɵɵadvance(2);
|
|
365
|
+
i0.ɵɵclassMap(ctx_r1.getResultIcon(result_r17.type));
|
|
366
|
+
i0.ɵɵadvance(2);
|
|
367
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r17.title, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
368
|
+
i0.ɵɵadvance();
|
|
369
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.highlightMatch(result_r17.preview, ctx_r1.searchQuery), i0.ɵɵsanitizeHtml);
|
|
370
|
+
i0.ɵɵadvance();
|
|
371
|
+
i0.ɵɵconditional(result_r17.matchedText ? 6 : -1);
|
|
372
|
+
i0.ɵɵadvance(3);
|
|
373
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatDate(result_r17.createdAt));
|
|
374
|
+
} }
|
|
375
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
376
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "h3", 47);
|
|
377
|
+
i0.ɵɵelement(2, "i", 18);
|
|
378
|
+
i0.ɵɵtext(3);
|
|
379
|
+
i0.ɵɵelementEnd();
|
|
380
|
+
i0.ɵɵelementStart(4, "div", 48);
|
|
381
|
+
i0.ɵɵrepeaterCreate(5, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_6_For_6_Template, 10, 8, "button", 49, _forTrack0);
|
|
382
|
+
i0.ɵɵelementEnd()();
|
|
383
|
+
} if (rf & 2) {
|
|
384
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
385
|
+
i0.ɵɵadvance(3);
|
|
386
|
+
i0.ɵɵtextInterpolate1(" Tasks (", ctx_r1.results.tasks.length, ") ");
|
|
387
|
+
i0.ɵɵadvance(2);
|
|
388
|
+
i0.ɵɵrepeater(ctx_r1.results.tasks);
|
|
389
|
+
} }
|
|
390
|
+
function SearchPanelComponent_Conditional_0_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
391
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
290
392
|
i0.ɵɵtext(1);
|
|
291
393
|
i0.ɵɵelementEnd();
|
|
292
|
-
i0.ɵɵtemplate(2,
|
|
394
|
+
i0.ɵɵtemplate(2, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_2_Template, 7, 1, "div", 46)(3, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_3_Template, 7, 1, "div", 46)(4, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_4_Template, 7, 1, "div", 46)(5, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_5_Template, 7, 1, "div", 46)(6, SearchPanelComponent_Conditional_0_Conditional_38_Conditional_6_Template, 7, 1, "div", 46);
|
|
293
395
|
} if (rf & 2) {
|
|
294
396
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
295
397
|
i0.ɵɵadvance();
|
|
@@ -300,6 +402,10 @@ function SearchPanelComponent_Conditional_0_Conditional_32_Template(rf, ctx) { i
|
|
|
300
402
|
i0.ɵɵconditional(ctx_r1.results.messages.length > 0 ? 3 : -1);
|
|
301
403
|
i0.ɵɵadvance();
|
|
302
404
|
i0.ɵɵconditional(ctx_r1.results.artifacts.length > 0 ? 4 : -1);
|
|
405
|
+
i0.ɵɵadvance();
|
|
406
|
+
i0.ɵɵconditional(ctx_r1.results.collections.length > 0 ? 5 : -1);
|
|
407
|
+
i0.ɵɵadvance();
|
|
408
|
+
i0.ɵɵconditional(ctx_r1.results.tasks.length > 0 ? 6 : -1);
|
|
303
409
|
} }
|
|
304
410
|
function SearchPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
305
411
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -337,37 +443,47 @@ function SearchPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
337
443
|
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setFilter("artifacts")); });
|
|
338
444
|
i0.ɵɵelement(21, "i", 16);
|
|
339
445
|
i0.ɵɵtext(22, " Artifacts ");
|
|
446
|
+
i0.ɵɵelementEnd();
|
|
447
|
+
i0.ɵɵelementStart(23, "button", 13);
|
|
448
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setFilter("collections")); });
|
|
449
|
+
i0.ɵɵelement(24, "i", 17);
|
|
450
|
+
i0.ɵɵtext(25, " Collections ");
|
|
451
|
+
i0.ɵɵelementEnd();
|
|
452
|
+
i0.ɵɵelementStart(26, "button", 13);
|
|
453
|
+
i0.ɵɵlistener("click", function SearchPanelComponent_Conditional_0_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setFilter("tasks")); });
|
|
454
|
+
i0.ɵɵelement(27, "i", 18);
|
|
455
|
+
i0.ɵɵtext(28, " Tasks ");
|
|
340
456
|
i0.ɵɵelementEnd()();
|
|
341
|
-
i0.ɵɵelementStart(
|
|
342
|
-
i0.ɵɵtwoWayListener("valueChange", function
|
|
343
|
-
i0.ɵɵlistener("valueChange", function
|
|
457
|
+
i0.ɵɵelementStart(29, "div", 19)(30, "kendo-daterange")(31, "kendo-dateinput", 20);
|
|
458
|
+
i0.ɵɵtwoWayListener("valueChange", function SearchPanelComponent_Conditional_0_Template_kendo_dateinput_valueChange_31_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.dateRange.start, $event) || (ctx_r1.dateRange.start = $event); return i0.ɵɵresetView($event); });
|
|
459
|
+
i0.ɵɵlistener("valueChange", function SearchPanelComponent_Conditional_0_Template_kendo_dateinput_valueChange_31_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDateRangeChange()); });
|
|
344
460
|
i0.ɵɵelementEnd();
|
|
345
|
-
i0.ɵɵelementStart(
|
|
346
|
-
i0.ɵɵtwoWayListener("valueChange", function
|
|
347
|
-
i0.ɵɵlistener("valueChange", function
|
|
461
|
+
i0.ɵɵelementStart(32, "kendo-dateinput", 21);
|
|
462
|
+
i0.ɵɵtwoWayListener("valueChange", function SearchPanelComponent_Conditional_0_Template_kendo_dateinput_valueChange_32_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.dateRange.end, $event) || (ctx_r1.dateRange.end = $event); return i0.ɵɵresetView($event); });
|
|
463
|
+
i0.ɵɵlistener("valueChange", function SearchPanelComponent_Conditional_0_Template_kendo_dateinput_valueChange_32_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDateRangeChange()); });
|
|
348
464
|
i0.ɵɵelementEnd()();
|
|
349
|
-
i0.ɵɵtemplate(
|
|
465
|
+
i0.ɵɵtemplate(33, SearchPanelComponent_Conditional_0_Conditional_33_Template, 2, 0, "button", 22);
|
|
350
466
|
i0.ɵɵelementEnd()();
|
|
351
|
-
i0.ɵɵelementStart(
|
|
352
|
-
i0.ɵɵtemplate(
|
|
467
|
+
i0.ɵɵelementStart(34, "div", 23);
|
|
468
|
+
i0.ɵɵtemplate(35, SearchPanelComponent_Conditional_0_Conditional_35_Template, 4, 0, "div", 24)(36, SearchPanelComponent_Conditional_0_Conditional_36_Template, 15, 1, "div", 25)(37, SearchPanelComponent_Conditional_0_Conditional_37_Template, 6, 1, "div", 26)(38, SearchPanelComponent_Conditional_0_Conditional_38_Template, 7, 7);
|
|
353
469
|
i0.ɵɵelementEnd();
|
|
354
|
-
i0.ɵɵelementStart(
|
|
355
|
-
i0.ɵɵtext(
|
|
470
|
+
i0.ɵɵelementStart(39, "div", 27)(40, "div", 28)(41, "span", 29)(42, "kbd");
|
|
471
|
+
i0.ɵɵtext(43, "\u2191");
|
|
356
472
|
i0.ɵɵelementEnd();
|
|
357
|
-
i0.ɵɵelementStart(
|
|
358
|
-
i0.ɵɵtext(
|
|
473
|
+
i0.ɵɵelementStart(44, "kbd");
|
|
474
|
+
i0.ɵɵtext(45, "\u2193");
|
|
359
475
|
i0.ɵɵelementEnd();
|
|
360
|
-
i0.ɵɵtext(
|
|
476
|
+
i0.ɵɵtext(46, " Navigate");
|
|
361
477
|
i0.ɵɵelementEnd();
|
|
362
|
-
i0.ɵɵelementStart(
|
|
363
|
-
i0.ɵɵtext(
|
|
478
|
+
i0.ɵɵelementStart(47, "span", 29)(48, "kbd");
|
|
479
|
+
i0.ɵɵtext(49, "\u21B5");
|
|
364
480
|
i0.ɵɵelementEnd();
|
|
365
|
-
i0.ɵɵtext(
|
|
481
|
+
i0.ɵɵtext(50, " Select");
|
|
366
482
|
i0.ɵɵelementEnd();
|
|
367
|
-
i0.ɵɵelementStart(
|
|
368
|
-
i0.ɵɵtext(
|
|
483
|
+
i0.ɵɵelementStart(51, "span", 29)(52, "kbd");
|
|
484
|
+
i0.ɵɵtext(53, "Esc");
|
|
369
485
|
i0.ɵɵelementEnd();
|
|
370
|
-
i0.ɵɵtext(
|
|
486
|
+
i0.ɵɵtext(54, " Close");
|
|
371
487
|
i0.ɵɵelementEnd()()()()();
|
|
372
488
|
} if (rf & 2) {
|
|
373
489
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -383,14 +499,18 @@ function SearchPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
383
499
|
i0.ɵɵclassProp("active", ctx_r1.activeFilter === "messages");
|
|
384
500
|
i0.ɵɵadvance(3);
|
|
385
501
|
i0.ɵɵclassProp("active", ctx_r1.activeFilter === "artifacts");
|
|
502
|
+
i0.ɵɵadvance(3);
|
|
503
|
+
i0.ɵɵclassProp("active", ctx_r1.activeFilter === "collections");
|
|
504
|
+
i0.ɵɵadvance(3);
|
|
505
|
+
i0.ɵɵclassProp("active", ctx_r1.activeFilter === "tasks");
|
|
386
506
|
i0.ɵɵadvance(5);
|
|
387
507
|
i0.ɵɵtwoWayProperty("value", ctx_r1.dateRange.start);
|
|
388
508
|
i0.ɵɵadvance();
|
|
389
509
|
i0.ɵɵtwoWayProperty("value", ctx_r1.dateRange.end);
|
|
390
510
|
i0.ɵɵadvance();
|
|
391
|
-
i0.ɵɵconditional(ctx_r1.dateRange.start || ctx_r1.dateRange.end ?
|
|
511
|
+
i0.ɵɵconditional(ctx_r1.dateRange.start || ctx_r1.dateRange.end ? 33 : -1);
|
|
392
512
|
i0.ɵɵadvance(2);
|
|
393
|
-
i0.ɵɵconditional(ctx_r1.isSearching ?
|
|
513
|
+
i0.ɵɵconditional(ctx_r1.isSearching ? 35 : !ctx_r1.searchQuery ? 36 : ctx_r1.results.total === 0 ? 37 : 38);
|
|
394
514
|
} }
|
|
395
515
|
/**
|
|
396
516
|
* Search panel component providing global search UI
|
|
@@ -413,6 +533,8 @@ export class SearchPanelComponent {
|
|
|
413
533
|
conversations: [],
|
|
414
534
|
messages: [],
|
|
415
535
|
artifacts: [],
|
|
536
|
+
collections: [],
|
|
537
|
+
tasks: [],
|
|
416
538
|
total: 0
|
|
417
539
|
};
|
|
418
540
|
recentSearches = [];
|
|
@@ -572,7 +694,9 @@ export class SearchPanelComponent {
|
|
|
572
694
|
return [
|
|
573
695
|
...this.results.conversations,
|
|
574
696
|
...this.results.messages,
|
|
575
|
-
...this.results.artifacts
|
|
697
|
+
...this.results.artifacts,
|
|
698
|
+
...this.results.collections,
|
|
699
|
+
...this.results.tasks
|
|
576
700
|
];
|
|
577
701
|
}
|
|
578
702
|
/**
|
|
@@ -594,6 +718,10 @@ export class SearchPanelComponent {
|
|
|
594
718
|
return 'fa-comment';
|
|
595
719
|
case 'artifact':
|
|
596
720
|
return 'fa-file-alt';
|
|
721
|
+
case 'collection':
|
|
722
|
+
return 'fa-folder';
|
|
723
|
+
case 'task':
|
|
724
|
+
return 'fa-tasks';
|
|
597
725
|
default:
|
|
598
726
|
return 'fa-circle';
|
|
599
727
|
}
|
|
@@ -611,6 +739,10 @@ export class SearchPanelComponent {
|
|
|
611
739
|
return 'Messages';
|
|
612
740
|
case 'artifacts':
|
|
613
741
|
return 'Artifacts';
|
|
742
|
+
case 'collections':
|
|
743
|
+
return 'Collections';
|
|
744
|
+
case 'tasks':
|
|
745
|
+
return 'Tasks';
|
|
614
746
|
default:
|
|
615
747
|
return 'All';
|
|
616
748
|
}
|
|
@@ -684,15 +816,15 @@ export class SearchPanelComponent {
|
|
|
684
816
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);
|
|
685
817
|
} }, hostBindings: function SearchPanelComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
686
818
|
i0.ɵɵlistener("keydown", function SearchPanelComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyboard($event); });
|
|
687
|
-
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser", isOpen: "isOpen" }, outputs: { close: "close", resultSelected: "resultSelected" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["searchInput", ""], [1, "search-panel-overlay"], [1, "search-panel-overlay", 3, "click"], [1, "search-panel", 3, "click"], [1, "search-header"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search conversations, messages, and
|
|
688
|
-
i0.ɵɵtemplate(0, SearchPanelComponent_Conditional_0_Template,
|
|
819
|
+
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser", isOpen: "isOpen" }, outputs: { close: "close", resultSelected: "resultSelected" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["searchInput", ""], [1, "search-panel-overlay"], [1, "search-panel-overlay", 3, "click"], [1, "search-panel", 3, "click"], [1, "search-header"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search conversations, messages, artifacts, collections, and tasks...", "autocomplete", "off", 1, "search-input", 3, "ngModelChange", "input", "ngModel"], ["type", "button", "title", "Clear search", 1, "clear-button"], ["type", "button", "title", "Close (Esc)", 1, "close-button", 3, "click"], [1, "fa-solid", "fa-times"], [1, "search-filters"], [1, "filter-buttons"], ["type", "button", 1, "filter-button", 3, "click"], [1, "fa-solid", "fa-comments"], [1, "fa-solid", "fa-comment"], [1, "fa-solid", "fa-file-alt"], [1, "fa-solid", "fa-folder"], [1, "fa-solid", "fa-tasks"], [1, "date-filter"], ["kendoDateRangeStartInput", "", "placeholder", "From", 3, "valueChange", "value"], ["kendoDateRangeEndInput", "", "placeholder", "To", 3, "valueChange", "value"], ["type", "button", "title", "Clear date range", 1, "clear-date-button"], [1, "search-results"], [1, "search-loading"], [1, "empty-state"], [1, "no-results"], [1, "search-footer"], [1, "keyboard-hints"], [1, "hint"], ["type", "button", "title", "Clear search", 1, "clear-button", 3, "click"], ["type", "button", "title", "Clear date range", 1, "clear-date-button", 3, "click"], [1, "fa-solid", "fa-times-circle"], ["type", "converging-spinner", "size", "medium"], [1, "recent-searches"], [1, "fa-solid", "fa-search", "empty-icon"], [1, "search-tips"], [1, "recent-searches-header"], ["type", "button", "title", "Clear recent searches", 1, "clear-recent-button", 3, "click"], [1, "recent-searches-list"], ["type", "button", 1, "recent-search-item"], ["type", "button", 1, "recent-search-item", 3, "click"], [1, "fa-solid", "fa-history"], [1, "fa-solid", "fa-search-minus", "empty-icon"], [1, "no-results-hint"], [1, "results-summary"], [1, "results-group"], [1, "results-group-title"], [1, "results-list"], ["type", "button", 1, "result-item", 3, "selected"], ["type", "button", 1, "result-item", 3, "click"], [1, "result-icon"], [1, "fa-solid"], [1, "result-content"], [1, "result-title", 3, "innerHTML"], [1, "result-preview", 3, "innerHTML"], [1, "result-match", 3, "innerHTML"], [1, "result-meta"], [1, "result-date"], [1, "result-conversation"], [1, "result-type"], [1, "type-badge"]], template: function SearchPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
820
|
+
i0.ɵɵtemplate(0, SearchPanelComponent_Conditional_0_Template, 55, 18, "div", 1);
|
|
689
821
|
} if (rf & 2) {
|
|
690
822
|
i0.ɵɵconditional(ctx.isOpen ? 0 : -1);
|
|
691
823
|
} }, dependencies: [i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoaderComponent, i4.DateInputComponent, i4.DateRangeComponent, i4.DateRangeStartInputDirective, i4.DateRangeEndInputDirective], styles: [".search-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: flex-start;\n justify-content: center;\n z-index: 10000;\n padding-top: 10vh;\n backdrop-filter: blur(2px);\n}\n\n.search-panel[_ngcontent-%COMP%] {\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 90%;\n max-width: 800px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: _ngcontent-%COMP%_slideDown 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n\n\n.search-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.search-input-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f5f5f5;\n border-radius: 6px;\n padding: 8px 12px;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n color: #666;\n font-size: 16px;\n}\n\n.search-input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 16px;\n outline: none;\n color: #333;\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: #999;\n}\n\n.clear-button[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.clear-button[_ngcontent-%COMP%]:hover {\n background: #e0e0e0;\n color: #333;\n}\n\n.close-button[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.close-button[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n color: #333;\n}\n\n\n\n.search-filters[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-button[_ngcontent-%COMP%] {\n border: 1px solid #ddd;\n background: #ffffff;\n color: #666;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n}\n\n.filter-button[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.filter-button.active[_ngcontent-%COMP%] {\n background: #007bff;\n color: #ffffff;\n border-color: #007bff;\n}\n\n.date-filter[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n.clear-date-button[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: color 0.2s;\n}\n\n.clear-date-button[_ngcontent-%COMP%]:hover {\n color: #333;\n}\n\n\n\n.search-results[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n.search-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 16px;\n color: #666;\n}\n\n.results-summary[_ngcontent-%COMP%] {\n padding: 8px 0 16px;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n}\n\n.results-group[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.results-group-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin: 0 0 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.results-group-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #007bff;\n}\n\n.results-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.result-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: #ffffff;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s;\n width: 100%;\n}\n\n.result-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #007bff;\n transform: translateX(2px);\n}\n\n.result-item.selected[_ngcontent-%COMP%] {\n background: #e7f3ff;\n border-color: #007bff;\n}\n\n.result-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f5f5f5;\n border-radius: 6px;\n color: #007bff;\n flex-shrink: 0;\n}\n\n.result-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.result-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.result-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.result-match[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #666;\n margin-top: 4px;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 4px;\n font-style: italic;\n}\n\n.result-conversation[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #007bff;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.result-type[_ngcontent-%COMP%] {\n margin-top: 4px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n background: #e7f3ff;\n color: #007bff;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.result-meta[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.result-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #999;\n}\n\n\n\n.result-item[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(mark) {\n background: #fff3cd;\n color: #333;\n padding: 2px 0;\n border-radius: 2px;\n font-weight: 600;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%], \n.no-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #666;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #ccc;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.no-results[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 8px 0;\n font-size: 14px;\n}\n\n.no-results-hint[_ngcontent-%COMP%] {\n color: #999;\n font-size: 13px;\n}\n\n.search-tips[_ngcontent-%COMP%] {\n margin-top: 24px;\n text-align: left;\n background: #f8f9fa;\n padding: 16px;\n border-radius: 6px;\n max-width: 400px;\n}\n\n.search-tips[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n font-size: 13px;\n color: #333;\n}\n\n.search-tips[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n}\n\n.search-tips[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n margin: 4px 0;\n}\n\n\n\n.recent-searches[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.recent-searches-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.recent-searches-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin: 0;\n}\n\n.clear-recent-button[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: #007bff;\n cursor: pointer;\n font-size: 13px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.clear-recent-button[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n\n.recent-searches-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.recent-search-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: #ffffff;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s;\n width: 100%;\n font-size: 14px;\n color: #666;\n}\n\n.recent-search-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #ccc;\n}\n\n.recent-search-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #999;\n}\n\n\n\n.search-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.keyboard-hints[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n justify-content: center;\n font-size: 12px;\n color: #666;\n}\n\n.hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\nkbd[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 6px;\n background: #ffffff;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-family: 'Courier New', monospace;\n font-size: 11px;\n color: #333;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n\n\n@media (max-width: 768px) {\n .search-panel[_ngcontent-%COMP%] {\n width: 95%;\n max-height: 90vh;\n }\n\n .search-filters[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .date-filter[_ngcontent-%COMP%] {\n margin-left: 0;\n }\n\n .keyboard-hints[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}"] });
|
|
692
824
|
}
|
|
693
825
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchPanelComponent, [{
|
|
694
826
|
type: Component,
|
|
695
|
-
args: [{ selector: 'mj-search-panel', template: "@if (isOpen) {\n<div class=\"search-panel-overlay\" (click)=\"closePanel()\">\n <div class=\"search-panel\" (click)=\"$event.stopPropagation()\">\n <!-- Search Header -->\n <div class=\"search-header\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input\n #searchInput\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search conversations, messages, and artifacts...\"\n [(ngModel)]=\"searchQuery\"\n (input)=\"onSearchInput()\"\n autocomplete=\"off\"\n />\n @if (searchQuery) {\n <button\n type=\"button\"\n class=\"clear-button\"\n (click)=\"clearSearch()\"\n title=\"Clear search\"\n >\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"close-button\"\n (click)=\"closePanel()\"\n title=\"Close (Esc)\"\n >\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Filters -->\n <div class=\"search-filters\">\n <div class=\"filter-buttons\">\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'all'\"\n (click)=\"setFilter('all')\"\n >\n All\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'conversations'\"\n (click)=\"setFilter('conversations')\"\n >\n <i class=\"fa-solid fa-comments\"></i>\n Conversations\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'messages'\"\n (click)=\"setFilter('messages')\"\n >\n <i class=\"fa-solid fa-comment\"></i>\n Messages\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'artifacts'\"\n (click)=\"setFilter('artifacts')\"\n >\n <i class=\"fa-solid fa-file-alt\"></i>\n Artifacts\n </button>\n </div>\n\n <!-- Date Range Filter -->\n <div class=\"date-filter\">\n <kendo-daterange>\n <kendo-dateinput\n kendoDateRangeStartInput\n [(value)]=\"dateRange.start\"\n (valueChange)=\"onDateRangeChange()\"\n placeholder=\"From\"\n ></kendo-dateinput>\n <kendo-dateinput\n kendoDateRangeEndInput\n [(value)]=\"dateRange.end\"\n (valueChange)=\"onDateRangeChange()\"\n placeholder=\"To\"\n ></kendo-dateinput>\n </kendo-daterange>\n @if (dateRange.start || dateRange.end) {\n <button\n type=\"button\"\n class=\"clear-date-button\"\n (click)=\"clearDateRange()\"\n title=\"Clear date range\"\n >\n <i class=\"fa-solid fa-times-circle\"></i>\n </button>\n }\n </div>\n </div>\n\n <!-- Search Results -->\n <div class=\"search-results\">\n @if (isSearching) {\n <div class=\"search-loading\">\n <kendo-loader type=\"converging-spinner\" size=\"medium\"></kendo-loader>\n <span>Searching...</span>\n </div>\n } @else if (!searchQuery) {\n <!-- Recent Searches -->\n @if (recentSearches.length > 0) {\n <div class=\"recent-searches\">\n <div class=\"recent-searches-header\">\n <h3>Recent Searches</h3>\n <button\n type=\"button\"\n class=\"clear-recent-button\"\n (click)=\"clearRecentSearches()\"\n title=\"Clear recent searches\"\n >\n Clear\n </button>\n </div>\n <div class=\"recent-searches-list\">\n @for (search of recentSearches; track search) {\n <button\n type=\"button\"\n class=\"recent-search-item\"\n (click)=\"useRecentSearch(search)\"\n >\n <i class=\"fa-solid fa-history\"></i>\n <span>{{ search }}</span>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Empty State -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-search empty-icon\"></i>\n <p>Search across all your conversations, messages, and artifacts</p>\n <div class=\"search-tips\">\n <h4>Tips:</h4>\n <ul>\n <li>Use filters to narrow results</li>\n <li>Set date range to find recent content</li>\n <li>Use keyboard shortcuts to navigate</li>\n </ul>\n </div>\n </div>\n } @else if (results.total === 0) {\n <!-- No Results -->\n <div class=\"no-results\">\n <i class=\"fa-solid fa-search-minus empty-icon\"></i>\n <p>No results found for \"{{ searchQuery }}\"</p>\n <p class=\"no-results-hint\">Try adjusting your filters or search terms</p>\n </div>\n } @else {\n <!-- Results Summary -->\n <div class=\"results-summary\">\n Found {{ results.total }} result{{ results.total === 1 ? '' : 's' }}\n </div>\n\n <!-- Conversations Results -->\n @if (results.conversations.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Conversations ({{ results.conversations.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.conversations; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-title\" [innerHTML]=\"highlightMatch(result.title, searchQuery)\"></div>\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Messages Results -->\n @if (results.messages.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-comment\"></i>\n Messages ({{ results.messages.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.messages; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n @if (result.conversationName) {\n <div class=\"result-conversation\">\n <i class=\"fa-solid fa-comments\"></i>\n {{ result.conversationName }}\n </div>\n }\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Artifacts Results -->\n @if (results.artifacts.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-file-alt\"></i>\n Artifacts ({{ results.artifacts.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.artifacts; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-title\" [innerHTML]=\"highlightMatch(result.title, searchQuery)\"></div>\n @if (result.artifactType) {\n <div class=\"result-type\">\n <span class=\"type-badge\">{{ result.artifactType }}</span>\n </div>\n }\n @if (result.conversationName) {\n <div class=\"result-conversation\">\n <i class=\"fa-solid fa-comments\"></i>\n {{ result.conversationName }}\n </div>\n }\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n }\n </div>\n\n <!-- Footer with keyboard hints -->\n <div class=\"search-footer\">\n <div class=\"keyboard-hints\">\n <span class=\"hint\"><kbd>\u2191</kbd><kbd>\u2193</kbd> Navigate</span>\n <span class=\"hint\"><kbd>\u21B5</kbd> Select</span>\n <span class=\"hint\"><kbd>Esc</kbd> Close</span>\n </div>\n </div>\n </div>\n</div>\n}\n", styles: [".search-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: flex-start;\n justify-content: center;\n z-index: 10000;\n padding-top: 10vh;\n backdrop-filter: blur(2px);\n}\n\n.search-panel {\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 90%;\n max-width: 800px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Header */\n.search-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.search-input-wrapper {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f5f5f5;\n border-radius: 6px;\n padding: 8px 12px;\n}\n\n.search-icon {\n color: #666;\n font-size: 16px;\n}\n\n.search-input {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 16px;\n outline: none;\n color: #333;\n}\n\n.search-input::placeholder {\n color: #999;\n}\n\n.clear-button {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.clear-button:hover {\n background: #e0e0e0;\n color: #333;\n}\n\n.close-button {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.close-button:hover {\n background: #f5f5f5;\n color: #333;\n}\n\n/* Filters */\n.search-filters {\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.filter-buttons {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-button {\n border: 1px solid #ddd;\n background: #ffffff;\n color: #666;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n}\n\n.filter-button:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.filter-button.active {\n background: #007bff;\n color: #ffffff;\n border-color: #007bff;\n}\n\n.date-filter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n.clear-date-button {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: color 0.2s;\n}\n\n.clear-date-button:hover {\n color: #333;\n}\n\n/* Results */\n.search-results {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n.search-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 16px;\n color: #666;\n}\n\n.results-summary {\n padding: 8px 0 16px;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n}\n\n.results-group {\n margin-bottom: 24px;\n}\n\n.results-group-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin: 0 0 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.results-group-title i {\n color: #007bff;\n}\n\n.results-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.result-item {\n display: flex;\n gap: 12px;\n padding: 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: #ffffff;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s;\n width: 100%;\n}\n\n.result-item:hover {\n background: #f8f9fa;\n border-color: #007bff;\n transform: translateX(2px);\n}\n\n.result-item.selected {\n background: #e7f3ff;\n border-color: #007bff;\n}\n\n.result-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f5f5f5;\n border-radius: 6px;\n color: #007bff;\n flex-shrink: 0;\n}\n\n.result-content {\n flex: 1;\n min-width: 0;\n}\n\n.result-title {\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.result-preview {\n font-size: 13px;\n color: #666;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.result-match {\n font-size: 12px;\n color: #666;\n margin-top: 4px;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 4px;\n font-style: italic;\n}\n\n.result-conversation {\n font-size: 12px;\n color: #007bff;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.result-type {\n margin-top: 4px;\n}\n\n.type-badge {\n display: inline-block;\n padding: 2px 8px;\n background: #e7f3ff;\n color: #007bff;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.result-meta {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.result-date {\n font-size: 12px;\n color: #999;\n}\n\n/* Highlight */\n.result-item :deep(mark) {\n background: #fff3cd;\n color: #333;\n padding: 2px 0;\n border-radius: 2px;\n font-weight: 600;\n}\n\n/* Empty States */\n.empty-state,\n.no-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #666;\n}\n\n.empty-icon {\n font-size: 48px;\n color: #ccc;\n margin-bottom: 16px;\n}\n\n.empty-state p,\n.no-results p {\n margin: 8px 0;\n font-size: 14px;\n}\n\n.no-results-hint {\n color: #999;\n font-size: 13px;\n}\n\n.search-tips {\n margin-top: 24px;\n text-align: left;\n background: #f8f9fa;\n padding: 16px;\n border-radius: 6px;\n max-width: 400px;\n}\n\n.search-tips h4 {\n margin: 0 0 8px;\n font-size: 13px;\n color: #333;\n}\n\n.search-tips ul {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n}\n\n.search-tips li {\n margin: 4px 0;\n}\n\n/* Recent Searches */\n.recent-searches {\n margin-bottom: 24px;\n}\n\n.recent-searches-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.recent-searches-header h3 {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin: 0;\n}\n\n.clear-recent-button {\n border: none;\n background: transparent;\n color: #007bff;\n cursor: pointer;\n font-size: 13px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.clear-recent-button:hover {\n background: #f5f5f5;\n}\n\n.recent-searches-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.recent-search-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: #ffffff;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s;\n width: 100%;\n font-size: 14px;\n color: #666;\n}\n\n.recent-search-item:hover {\n background: #f8f9fa;\n border-color: #ccc;\n}\n\n.recent-search-item i {\n color: #999;\n}\n\n/* Footer */\n.search-footer {\n padding: 12px 16px;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.keyboard-hints {\n display: flex;\n gap: 16px;\n justify-content: center;\n font-size: 12px;\n color: #666;\n}\n\n.hint {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\nkbd {\n display: inline-block;\n padding: 3px 6px;\n background: #ffffff;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-family: 'Courier New', monospace;\n font-size: 11px;\n color: #333;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .search-panel {\n width: 95%;\n max-height: 90vh;\n }\n\n .search-filters {\n flex-direction: column;\n align-items: stretch;\n }\n\n .date-filter {\n margin-left: 0;\n }\n\n .keyboard-hints {\n flex-wrap: wrap;\n }\n}\n"] }]
|
|
827
|
+
args: [{ selector: 'mj-search-panel', template: "@if (isOpen) {\n<div class=\"search-panel-overlay\" (click)=\"closePanel()\">\n <div class=\"search-panel\" (click)=\"$event.stopPropagation()\">\n <!-- Search Header -->\n <div class=\"search-header\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input\n #searchInput\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search conversations, messages, artifacts, collections, and tasks...\"\n [(ngModel)]=\"searchQuery\"\n (input)=\"onSearchInput()\"\n autocomplete=\"off\"\n />\n @if (searchQuery) {\n <button\n type=\"button\"\n class=\"clear-button\"\n (click)=\"clearSearch()\"\n title=\"Clear search\"\n >\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"close-button\"\n (click)=\"closePanel()\"\n title=\"Close (Esc)\"\n >\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Filters -->\n <div class=\"search-filters\">\n <div class=\"filter-buttons\">\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'all'\"\n (click)=\"setFilter('all')\"\n >\n All\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'conversations'\"\n (click)=\"setFilter('conversations')\"\n >\n <i class=\"fa-solid fa-comments\"></i>\n Conversations\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'messages'\"\n (click)=\"setFilter('messages')\"\n >\n <i class=\"fa-solid fa-comment\"></i>\n Messages\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'artifacts'\"\n (click)=\"setFilter('artifacts')\"\n >\n <i class=\"fa-solid fa-file-alt\"></i>\n Artifacts\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'collections'\"\n (click)=\"setFilter('collections')\"\n >\n <i class=\"fa-solid fa-folder\"></i>\n Collections\n </button>\n <button\n type=\"button\"\n class=\"filter-button\"\n [class.active]=\"activeFilter === 'tasks'\"\n (click)=\"setFilter('tasks')\"\n >\n <i class=\"fa-solid fa-tasks\"></i>\n Tasks\n </button>\n </div>\n\n <!-- Date Range Filter -->\n <div class=\"date-filter\">\n <kendo-daterange>\n <kendo-dateinput\n kendoDateRangeStartInput\n [(value)]=\"dateRange.start\"\n (valueChange)=\"onDateRangeChange()\"\n placeholder=\"From\"\n ></kendo-dateinput>\n <kendo-dateinput\n kendoDateRangeEndInput\n [(value)]=\"dateRange.end\"\n (valueChange)=\"onDateRangeChange()\"\n placeholder=\"To\"\n ></kendo-dateinput>\n </kendo-daterange>\n @if (dateRange.start || dateRange.end) {\n <button\n type=\"button\"\n class=\"clear-date-button\"\n (click)=\"clearDateRange()\"\n title=\"Clear date range\"\n >\n <i class=\"fa-solid fa-times-circle\"></i>\n </button>\n }\n </div>\n </div>\n\n <!-- Search Results -->\n <div class=\"search-results\">\n @if (isSearching) {\n <div class=\"search-loading\">\n <kendo-loader type=\"converging-spinner\" size=\"medium\"></kendo-loader>\n <span>Searching...</span>\n </div>\n } @else if (!searchQuery) {\n <!-- Recent Searches -->\n @if (recentSearches.length > 0) {\n <div class=\"recent-searches\">\n <div class=\"recent-searches-header\">\n <h3>Recent Searches</h3>\n <button\n type=\"button\"\n class=\"clear-recent-button\"\n (click)=\"clearRecentSearches()\"\n title=\"Clear recent searches\"\n >\n Clear\n </button>\n </div>\n <div class=\"recent-searches-list\">\n @for (search of recentSearches; track search) {\n <button\n type=\"button\"\n class=\"recent-search-item\"\n (click)=\"useRecentSearch(search)\"\n >\n <i class=\"fa-solid fa-history\"></i>\n <span>{{ search }}</span>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Empty State -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-search empty-icon\"></i>\n <p>Search across all your conversations, messages, artifacts, collections, and tasks</p>\n <div class=\"search-tips\">\n <h4>Tips:</h4>\n <ul>\n <li>Use filters to narrow results</li>\n <li>Set date range to find recent content</li>\n <li>Use keyboard shortcuts to navigate</li>\n </ul>\n </div>\n </div>\n } @else if (results.total === 0) {\n <!-- No Results -->\n <div class=\"no-results\">\n <i class=\"fa-solid fa-search-minus empty-icon\"></i>\n <p>No results found for \"{{ searchQuery }}\"</p>\n <p class=\"no-results-hint\">Try adjusting your filters or search terms</p>\n </div>\n } @else {\n <!-- Results Summary -->\n <div class=\"results-summary\">\n Found {{ results.total }} result{{ results.total === 1 ? '' : 's' }}\n </div>\n\n <!-- Conversations Results -->\n @if (results.conversations.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Conversations ({{ results.conversations.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.conversations; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-title\" [innerHTML]=\"highlightMatch(result.title, searchQuery)\"></div>\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Messages Results -->\n @if (results.messages.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-comment\"></i>\n Messages ({{ results.messages.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.messages; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n @if (result.conversationName) {\n <div class=\"result-conversation\">\n <i class=\"fa-solid fa-comments\"></i>\n {{ result.conversationName }}\n </div>\n }\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Artifacts Results -->\n @if (results.artifacts.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-file-alt\"></i>\n Artifacts ({{ results.artifacts.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.artifacts; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-title\" [innerHTML]=\"highlightMatch(result.title, searchQuery)\"></div>\n @if (result.artifactType) {\n <div class=\"result-type\">\n <span class=\"type-badge\">{{ result.artifactType }}</span>\n </div>\n }\n @if (result.conversationName) {\n <div class=\"result-conversation\">\n <i class=\"fa-solid fa-comments\"></i>\n {{ result.conversationName }}\n </div>\n }\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Collections Results -->\n @if (results.collections.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-folder\"></i>\n Collections ({{ results.collections.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.collections; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-title\" [innerHTML]=\"highlightMatch(result.title, searchQuery)\"></div>\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Tasks Results -->\n @if (results.tasks.length > 0) {\n <div class=\"results-group\">\n <h3 class=\"results-group-title\">\n <i class=\"fa-solid fa-tasks\"></i>\n Tasks ({{ results.tasks.length }})\n </h3>\n <div class=\"results-list\">\n @for (result of results.tasks; track result.id) {\n <button\n type=\"button\"\n class=\"result-item\"\n [class.selected]=\"isResultSelected(result)\"\n (click)=\"selectResult(result)\"\n >\n <div class=\"result-icon\">\n <i class=\"fa-solid\" [class]=\"getResultIcon(result.type)\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-title\" [innerHTML]=\"highlightMatch(result.title, searchQuery)\"></div>\n <div class=\"result-preview\" [innerHTML]=\"highlightMatch(result.preview, searchQuery)\"></div>\n @if (result.matchedText) {\n <div class=\"result-match\" [innerHTML]=\"highlightMatch(result.matchedText, searchQuery)\"></div>\n }\n </div>\n <div class=\"result-meta\">\n <span class=\"result-date\">{{ formatDate(result.createdAt) }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n }\n </div>\n\n <!-- Footer with keyboard hints -->\n <div class=\"search-footer\">\n <div class=\"keyboard-hints\">\n <span class=\"hint\"><kbd>\u2191</kbd><kbd>\u2193</kbd> Navigate</span>\n <span class=\"hint\"><kbd>\u21B5</kbd> Select</span>\n <span class=\"hint\"><kbd>Esc</kbd> Close</span>\n </div>\n </div>\n </div>\n</div>\n}\n", styles: [".search-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: flex-start;\n justify-content: center;\n z-index: 10000;\n padding-top: 10vh;\n backdrop-filter: blur(2px);\n}\n\n.search-panel {\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 90%;\n max-width: 800px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Header */\n.search-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.search-input-wrapper {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f5f5f5;\n border-radius: 6px;\n padding: 8px 12px;\n}\n\n.search-icon {\n color: #666;\n font-size: 16px;\n}\n\n.search-input {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 16px;\n outline: none;\n color: #333;\n}\n\n.search-input::placeholder {\n color: #999;\n}\n\n.clear-button {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.clear-button:hover {\n background: #e0e0e0;\n color: #333;\n}\n\n.close-button {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.close-button:hover {\n background: #f5f5f5;\n color: #333;\n}\n\n/* Filters */\n.search-filters {\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.filter-buttons {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-button {\n border: 1px solid #ddd;\n background: #ffffff;\n color: #666;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n}\n\n.filter-button:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.filter-button.active {\n background: #007bff;\n color: #ffffff;\n border-color: #007bff;\n}\n\n.date-filter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n.clear-date-button {\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: color 0.2s;\n}\n\n.clear-date-button:hover {\n color: #333;\n}\n\n/* Results */\n.search-results {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n.search-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 16px;\n color: #666;\n}\n\n.results-summary {\n padding: 8px 0 16px;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n}\n\n.results-group {\n margin-bottom: 24px;\n}\n\n.results-group-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin: 0 0 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.results-group-title i {\n color: #007bff;\n}\n\n.results-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.result-item {\n display: flex;\n gap: 12px;\n padding: 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: #ffffff;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s;\n width: 100%;\n}\n\n.result-item:hover {\n background: #f8f9fa;\n border-color: #007bff;\n transform: translateX(2px);\n}\n\n.result-item.selected {\n background: #e7f3ff;\n border-color: #007bff;\n}\n\n.result-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f5f5f5;\n border-radius: 6px;\n color: #007bff;\n flex-shrink: 0;\n}\n\n.result-content {\n flex: 1;\n min-width: 0;\n}\n\n.result-title {\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.result-preview {\n font-size: 13px;\n color: #666;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.result-match {\n font-size: 12px;\n color: #666;\n margin-top: 4px;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 4px;\n font-style: italic;\n}\n\n.result-conversation {\n font-size: 12px;\n color: #007bff;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.result-type {\n margin-top: 4px;\n}\n\n.type-badge {\n display: inline-block;\n padding: 2px 8px;\n background: #e7f3ff;\n color: #007bff;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.result-meta {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.result-date {\n font-size: 12px;\n color: #999;\n}\n\n/* Highlight */\n.result-item :deep(mark) {\n background: #fff3cd;\n color: #333;\n padding: 2px 0;\n border-radius: 2px;\n font-weight: 600;\n}\n\n/* Empty States */\n.empty-state,\n.no-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #666;\n}\n\n.empty-icon {\n font-size: 48px;\n color: #ccc;\n margin-bottom: 16px;\n}\n\n.empty-state p,\n.no-results p {\n margin: 8px 0;\n font-size: 14px;\n}\n\n.no-results-hint {\n color: #999;\n font-size: 13px;\n}\n\n.search-tips {\n margin-top: 24px;\n text-align: left;\n background: #f8f9fa;\n padding: 16px;\n border-radius: 6px;\n max-width: 400px;\n}\n\n.search-tips h4 {\n margin: 0 0 8px;\n font-size: 13px;\n color: #333;\n}\n\n.search-tips ul {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n}\n\n.search-tips li {\n margin: 4px 0;\n}\n\n/* Recent Searches */\n.recent-searches {\n margin-bottom: 24px;\n}\n\n.recent-searches-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.recent-searches-header h3 {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin: 0;\n}\n\n.clear-recent-button {\n border: none;\n background: transparent;\n color: #007bff;\n cursor: pointer;\n font-size: 13px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.clear-recent-button:hover {\n background: #f5f5f5;\n}\n\n.recent-searches-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.recent-search-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: #ffffff;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s;\n width: 100%;\n font-size: 14px;\n color: #666;\n}\n\n.recent-search-item:hover {\n background: #f8f9fa;\n border-color: #ccc;\n}\n\n.recent-search-item i {\n color: #999;\n}\n\n/* Footer */\n.search-footer {\n padding: 12px 16px;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.keyboard-hints {\n display: flex;\n gap: 16px;\n justify-content: center;\n font-size: 12px;\n color: #666;\n}\n\n.hint {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\nkbd {\n display: inline-block;\n padding: 3px 6px;\n background: #ffffff;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-family: 'Courier New', monospace;\n font-size: 11px;\n color: #333;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .search-panel {\n width: 95%;\n max-height: 90vh;\n }\n\n .search-filters {\n flex-direction: column;\n align-items: stretch;\n }\n\n .date-filter {\n margin-left: 0;\n }\n\n .keyboard-hints {\n flex-wrap: wrap;\n }\n}\n"] }]
|
|
696
828
|
}], () => [{ type: i1.SearchService }], { environmentId: [{
|
|
697
829
|
type: Input
|
|
698
830
|
}], currentUser: [{
|