@memberjunction/ng-search 5.23.0 → 5.24.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/__tests__/search-results.component.test.d.ts +2 -0
- package/dist/__tests__/search-results.component.test.d.ts.map +1 -0
- package/dist/__tests__/search-results.component.test.js +263 -0
- package/dist/__tests__/search-results.component.test.js.map +1 -0
- package/dist/__tests__/search.service.test.js +147 -0
- package/dist/__tests__/search.service.test.js.map +1 -1
- package/dist/lib/search-filter.component.d.ts +6 -1
- package/dist/lib/search-filter.component.d.ts.map +1 -1
- package/dist/lib/search-filter.component.js +100 -51
- package/dist/lib/search-filter.component.js.map +1 -1
- package/dist/lib/search-results.component.d.ts +51 -3
- package/dist/lib/search-results.component.d.ts.map +1 -1
- package/dist/lib/search-results.component.js +502 -167
- package/dist/lib/search-results.component.js.map +1 -1
- package/dist/lib/search-types.d.ts +2 -0
- package/dist/lib/search-types.d.ts.map +1 -1
- package/dist/lib/search-types.js.map +1 -1
- package/dist/lib/search.service.d.ts.map +1 -1
- package/dist/lib/search.service.js +2 -0
- package/dist/lib/search.service.js.map +1 -1
- package/package.json +4 -4
|
@@ -6,260 +6,449 @@
|
|
|
6
6
|
* in the Knowledge Hub search dashboard.
|
|
7
7
|
*/
|
|
8
8
|
import { Component, EventEmitter, Input, Output, ChangeDetectorRef, inject } from '@angular/core';
|
|
9
|
+
import { Metadata } from '@memberjunction/core';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@
|
|
11
|
-
|
|
12
|
-
const
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
import * as i2 from "@memberjunction/ng-shared-generic";
|
|
13
|
+
const _c0 = a0 => ({ $implicit: a0 });
|
|
14
|
+
const _forTrack0 = ($index, $item) => $item.ID;
|
|
15
|
+
const _forTrack1 = ($index, $item) => $item.SourceType;
|
|
16
|
+
const _forTrack2 = ($index, $item) => $item.Value;
|
|
13
17
|
function SearchResultsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
-
i0.ɵɵelementStart(0, "div",
|
|
15
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
18
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
19
|
+
i0.ɵɵelement(1, "mj-loading", 3);
|
|
16
20
|
i0.ɵɵelementEnd();
|
|
17
21
|
} }
|
|
18
22
|
function SearchResultsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
-
i0.ɵɵelementStart(0, "div",
|
|
20
|
-
i0.ɵɵelement(1, "i",
|
|
21
|
-
i0.ɵɵelementStart(2, "p",
|
|
23
|
+
i0.ɵɵelementStart(0, "div", 2);
|
|
24
|
+
i0.ɵɵelement(1, "i", 4);
|
|
25
|
+
i0.ɵɵelementStart(2, "p", 5);
|
|
22
26
|
i0.ɵɵtext(3, "No results to display");
|
|
23
27
|
i0.ɵɵelementEnd()();
|
|
24
28
|
} }
|
|
25
|
-
function
|
|
26
|
-
i0.ɵɵelementStart(0, "span",
|
|
29
|
+
function SearchResultsComponent_Conditional_2_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelementStart(0, "span", 7);
|
|
27
31
|
i0.ɵɵtext(1);
|
|
28
32
|
i0.ɵɵelementEnd();
|
|
29
33
|
} if (rf & 2) {
|
|
30
|
-
const ctx_r0 = i0.ɵɵnextContext(
|
|
34
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
31
35
|
i0.ɵɵadvance();
|
|
32
36
|
i0.ɵɵtextInterpolate1(" in ", ctx_r0.FormatTime(ctx_r0.ElapsedMs));
|
|
33
37
|
} }
|
|
34
|
-
function
|
|
38
|
+
function SearchResultsComponent_Conditional_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "span");
|
|
40
|
+
i0.ɵɵtext(2);
|
|
41
|
+
i0.ɵɵelementEnd();
|
|
42
|
+
i0.ɵɵconditionalCreate(3, SearchResultsComponent_Conditional_2_Conditional_0_Conditional_3_Template, 2, 1, "span", 7);
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
46
|
+
i0.ɵɵadvance(2);
|
|
47
|
+
i0.ɵɵtextInterpolate1("", ctx_r0.TotalCount, " results");
|
|
48
|
+
i0.ɵɵadvance();
|
|
49
|
+
i0.ɵɵconditional(ctx_r0.ElapsedMs > 0 ? 3 : -1);
|
|
50
|
+
} }
|
|
51
|
+
function SearchResultsComponent_Conditional_2_Conditional_1_For_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵelementContainer(0);
|
|
53
|
+
} }
|
|
54
|
+
function SearchResultsComponent_Conditional_2_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
i0.ɵɵtemplate(0, SearchResultsComponent_Conditional_2_Conditional_1_For_2_ng_container_0_Template, 1, 0, "ng-container", 10);
|
|
56
|
+
} if (rf & 2) {
|
|
57
|
+
const result_r2 = ctx.$implicit;
|
|
58
|
+
i0.ɵɵnextContext(3);
|
|
59
|
+
const resultCardTpl_r3 = i0.ɵɵreference(4);
|
|
60
|
+
i0.ɵɵproperty("ngTemplateOutlet", resultCardTpl_r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, result_r2));
|
|
61
|
+
} }
|
|
62
|
+
function SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_For_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
63
|
+
i0.ɵɵelementStart(0, "span", 15);
|
|
64
|
+
i0.ɵɵtext(1, "...");
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
} }
|
|
67
|
+
function SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_For_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
69
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
70
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_For_4_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const p_r6 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.GoToPage(p_r6)); });
|
|
71
|
+
i0.ɵɵtext(1);
|
|
72
|
+
i0.ɵɵelementEnd();
|
|
73
|
+
} if (rf & 2) {
|
|
74
|
+
const p_r6 = i0.ɵɵnextContext().$implicit;
|
|
75
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
76
|
+
i0.ɵɵclassProp("pager-active", p_r6 === ctx_r0.CurrentPage);
|
|
77
|
+
i0.ɵɵadvance();
|
|
78
|
+
i0.ɵɵtextInterpolate(p_r6);
|
|
79
|
+
} }
|
|
80
|
+
function SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵconditionalCreate(0, SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_For_4_Conditional_0_Template, 2, 0, "span", 15)(1, SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_For_4_Conditional_1_Template, 2, 3, "button", 16);
|
|
82
|
+
} if (rf & 2) {
|
|
83
|
+
const p_r6 = ctx.$implicit;
|
|
84
|
+
i0.ɵɵconditional(p_r6 === -1 ? 0 : 1);
|
|
85
|
+
} }
|
|
86
|
+
function SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
88
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "button", 11);
|
|
89
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.GoToPage(ctx_r0.CurrentPage - 1)); });
|
|
90
|
+
i0.ɵɵelement(2, "i", 12);
|
|
91
|
+
i0.ɵɵelementEnd();
|
|
92
|
+
i0.ɵɵrepeaterCreate(3, SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_For_4_Template, 2, 1, null, null, i0.ɵɵrepeaterTrackByIndex);
|
|
93
|
+
i0.ɵɵelementStart(5, "button", 13);
|
|
94
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.GoToPage(ctx_r0.CurrentPage + 1)); });
|
|
95
|
+
i0.ɵɵelement(6, "i", 14);
|
|
96
|
+
i0.ɵɵelementEnd()();
|
|
97
|
+
} if (rf & 2) {
|
|
98
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
99
|
+
i0.ɵɵadvance();
|
|
100
|
+
i0.ɵɵproperty("disabled", ctx_r0.CurrentPage === 1);
|
|
101
|
+
i0.ɵɵadvance(2);
|
|
102
|
+
i0.ɵɵrepeater(ctx_r0.PageNumbers);
|
|
103
|
+
i0.ɵɵadvance(2);
|
|
104
|
+
i0.ɵɵproperty("disabled", ctx_r0.CurrentPage === ctx_r0.TotalPages);
|
|
105
|
+
} }
|
|
106
|
+
function SearchResultsComponent_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
108
|
+
i0.ɵɵrepeaterCreate(1, SearchResultsComponent_Conditional_2_Conditional_1_For_2_Template, 1, 4, "ng-container", null, _forTrack0);
|
|
109
|
+
i0.ɵɵelementEnd();
|
|
110
|
+
i0.ɵɵconditionalCreate(3, SearchResultsComponent_Conditional_2_Conditional_1_Conditional_3_Template, 7, 2, "div", 9);
|
|
111
|
+
} if (rf & 2) {
|
|
112
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
113
|
+
i0.ɵɵadvance();
|
|
114
|
+
i0.ɵɵrepeater(ctx_r0.PagedResults);
|
|
115
|
+
i0.ɵɵadvance(2);
|
|
116
|
+
i0.ɵɵconditional(ctx_r0.TotalPages > 1 ? 3 : -1);
|
|
117
|
+
} }
|
|
118
|
+
function SearchResultsComponent_Conditional_2_Conditional_2_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
35
119
|
i0.ɵɵelement(0, "i");
|
|
36
120
|
} if (rf & 2) {
|
|
37
|
-
const
|
|
38
|
-
i0.ɵɵclassMap(
|
|
121
|
+
const group_r8 = i0.ɵɵnextContext().$implicit;
|
|
122
|
+
i0.ɵɵclassMap(group_r8.Icon + " results-group-icon");
|
|
123
|
+
} }
|
|
124
|
+
function SearchResultsComponent_Conditional_2_Conditional_2_For_1_For_9_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
i0.ɵɵelementContainer(0);
|
|
126
|
+
} }
|
|
127
|
+
function SearchResultsComponent_Conditional_2_Conditional_2_For_1_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
i0.ɵɵtemplate(0, SearchResultsComponent_Conditional_2_Conditional_2_For_1_For_9_ng_container_0_Template, 1, 0, "ng-container", 10);
|
|
129
|
+
} if (rf & 2) {
|
|
130
|
+
const result_r9 = ctx.$implicit;
|
|
131
|
+
i0.ɵɵnextContext(4);
|
|
132
|
+
const resultCardTpl_r3 = i0.ɵɵreference(4);
|
|
133
|
+
i0.ɵɵproperty("ngTemplateOutlet", resultCardTpl_r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, result_r9));
|
|
134
|
+
} }
|
|
135
|
+
function SearchResultsComponent_Conditional_2_Conditional_2_For_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
137
|
+
i0.ɵɵelementStart(0, "button", 25);
|
|
138
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_Conditional_2_For_1_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const group_r8 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleGroup(group_r8.SourceType)); });
|
|
139
|
+
i0.ɵɵelement(1, "i", 26);
|
|
140
|
+
i0.ɵɵtext(2);
|
|
141
|
+
i0.ɵɵelementEnd();
|
|
142
|
+
} if (rf & 2) {
|
|
143
|
+
const group_r8 = i0.ɵɵnextContext().$implicit;
|
|
144
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
145
|
+
i0.ɵɵadvance(2);
|
|
146
|
+
i0.ɵɵtextInterpolate1(" Show ", ctx_r0.GetHiddenCount(group_r8), " more results ");
|
|
147
|
+
} }
|
|
148
|
+
function SearchResultsComponent_Conditional_2_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
150
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
|
|
151
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_Conditional_2_For_1_Template_div_click_1_listener() { const group_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleGroup(group_r8.SourceType)); });
|
|
152
|
+
i0.ɵɵconditionalCreate(2, SearchResultsComponent_Conditional_2_Conditional_2_For_1_Conditional_2_Template, 1, 2, "i", 20);
|
|
153
|
+
i0.ɵɵelementStart(3, "span", 21);
|
|
154
|
+
i0.ɵɵtext(4);
|
|
155
|
+
i0.ɵɵelementEnd();
|
|
156
|
+
i0.ɵɵelementStart(5, "span", 22);
|
|
157
|
+
i0.ɵɵtext(6);
|
|
158
|
+
i0.ɵɵelementEnd();
|
|
159
|
+
i0.ɵɵelement(7, "i", 23);
|
|
160
|
+
i0.ɵɵelementEnd();
|
|
161
|
+
i0.ɵɵrepeaterCreate(8, SearchResultsComponent_Conditional_2_Conditional_2_For_1_For_9_Template, 1, 4, "ng-container", null, _forTrack0);
|
|
162
|
+
i0.ɵɵconditionalCreate(10, SearchResultsComponent_Conditional_2_Conditional_2_For_1_Conditional_10_Template, 3, 1, "button", 24);
|
|
163
|
+
i0.ɵɵelementEnd();
|
|
164
|
+
} if (rf & 2) {
|
|
165
|
+
const group_r8 = ctx.$implicit;
|
|
166
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
167
|
+
i0.ɵɵadvance(2);
|
|
168
|
+
i0.ɵɵconditional(ctx_r0.ShowSourceIcons ? 2 : -1);
|
|
169
|
+
i0.ɵɵadvance(2);
|
|
170
|
+
i0.ɵɵtextInterpolate(group_r8.Label);
|
|
171
|
+
i0.ɵɵadvance(2);
|
|
172
|
+
i0.ɵɵtextInterpolate1("(", group_r8.TotalCount, ")");
|
|
173
|
+
i0.ɵɵadvance();
|
|
174
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r0.IsGroupExpanded(group_r8.SourceType))("fa-chevron-up", ctx_r0.IsGroupExpanded(group_r8.SourceType));
|
|
175
|
+
i0.ɵɵadvance();
|
|
176
|
+
i0.ɵɵrepeater(ctx_r0.GetVisibleResults(group_r8));
|
|
177
|
+
i0.ɵɵadvance(2);
|
|
178
|
+
i0.ɵɵconditional(ctx_r0.HasMoreResults(group_r8) ? 10 : -1);
|
|
179
|
+
} }
|
|
180
|
+
function SearchResultsComponent_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
+
i0.ɵɵrepeaterCreate(0, SearchResultsComponent_Conditional_2_Conditional_2_For_1_Template, 11, 8, "div", 18, _forTrack1);
|
|
182
|
+
} if (rf & 2) {
|
|
183
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
184
|
+
i0.ɵɵrepeater(ctx_r0.ResultGroups);
|
|
185
|
+
} }
|
|
186
|
+
function SearchResultsComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
187
|
+
i0.ɵɵconditionalCreate(0, SearchResultsComponent_Conditional_2_Conditional_0_Template, 4, 2, "div", 6);
|
|
188
|
+
i0.ɵɵconditionalCreate(1, SearchResultsComponent_Conditional_2_Conditional_1_Template, 4, 1)(2, SearchResultsComponent_Conditional_2_Conditional_2_Template, 2, 0);
|
|
189
|
+
} if (rf & 2) {
|
|
190
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
191
|
+
i0.ɵɵconditional(ctx_r0.ShowSummary ? 0 : -1);
|
|
192
|
+
i0.ɵɵadvance();
|
|
193
|
+
i0.ɵɵconditional(ctx_r0.DisplayMode === "flat" ? 1 : 2);
|
|
194
|
+
} }
|
|
195
|
+
function SearchResultsComponent_ng_template_3_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
196
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
197
|
+
i0.ɵɵtext(1);
|
|
198
|
+
i0.ɵɵelementEnd();
|
|
199
|
+
} if (rf & 2) {
|
|
200
|
+
const tag_r13 = ctx.$implicit;
|
|
201
|
+
i0.ɵɵadvance();
|
|
202
|
+
i0.ɵɵtextInterpolate(tag_r13);
|
|
39
203
|
} }
|
|
40
|
-
function
|
|
41
|
-
i0.ɵɵelementStart(0, "
|
|
204
|
+
function SearchResultsComponent_ng_template_3_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
i0.ɵɵelementStart(0, "span", 42);
|
|
206
|
+
i0.ɵɵtext(1);
|
|
207
|
+
i0.ɵɵelementEnd();
|
|
208
|
+
} if (rf & 2) {
|
|
209
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
210
|
+
i0.ɵɵadvance();
|
|
211
|
+
i0.ɵɵtextInterpolate1("+", result_r12.Tags.length - 5);
|
|
212
|
+
} }
|
|
213
|
+
function SearchResultsComponent_ng_template_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
215
|
+
i0.ɵɵrepeaterCreate(1, SearchResultsComponent_ng_template_3_Conditional_9_For_2_Template, 2, 1, "span", 41, i0.ɵɵrepeaterTrackByIdentity);
|
|
216
|
+
i0.ɵɵconditionalCreate(3, SearchResultsComponent_ng_template_3_Conditional_9_Conditional_3_Template, 2, 1, "span", 42);
|
|
217
|
+
i0.ɵɵelementEnd();
|
|
218
|
+
} if (rf & 2) {
|
|
219
|
+
const result_r12 = i0.ɵɵnextContext().$implicit;
|
|
220
|
+
i0.ɵɵadvance();
|
|
221
|
+
i0.ɵɵrepeater(result_r12.Tags.slice(0, 5));
|
|
222
|
+
i0.ɵɵadvance(2);
|
|
223
|
+
i0.ɵɵconditional(result_r12.Tags.length > 5 ? 3 : -1);
|
|
224
|
+
} }
|
|
225
|
+
function SearchResultsComponent_ng_template_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
226
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 43)(2, "span", 44);
|
|
42
227
|
i0.ɵɵtext(3);
|
|
43
228
|
i0.ɵɵelementEnd()()();
|
|
44
229
|
} if (rf & 2) {
|
|
45
|
-
const
|
|
46
|
-
const ctx_r0 = i0.ɵɵnextContext(
|
|
230
|
+
const result_r12 = i0.ɵɵnextContext().$implicit;
|
|
231
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
47
232
|
i0.ɵɵadvance(3);
|
|
48
|
-
i0.ɵɵtextInterpolate(ctx_r0.FormatScore(
|
|
233
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatScore(result_r12.Score));
|
|
49
234
|
} }
|
|
50
|
-
function
|
|
51
|
-
i0.ɵɵelementStart(0, "div",
|
|
235
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
+
i0.ɵɵelementStart(0, "div", 45)(1, "span", 58);
|
|
52
237
|
i0.ɵɵtext(2, "Preview");
|
|
53
238
|
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵelementStart(3, "p",
|
|
239
|
+
i0.ɵɵelementStart(3, "p", 59);
|
|
55
240
|
i0.ɵɵtext(4);
|
|
56
241
|
i0.ɵɵelementEnd()();
|
|
57
242
|
} if (rf & 2) {
|
|
58
|
-
const
|
|
243
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
59
244
|
i0.ɵɵadvance(4);
|
|
60
|
-
i0.ɵɵtextInterpolate(
|
|
245
|
+
i0.ɵɵtextInterpolate(result_r12.Snippet);
|
|
61
246
|
} }
|
|
62
|
-
function
|
|
247
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
63
248
|
i0.ɵɵtext(0);
|
|
64
249
|
} if (rf & 2) {
|
|
65
|
-
const
|
|
66
|
-
|
|
250
|
+
const result_r12 = i0.ɵɵnextContext(3).$implicit;
|
|
251
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
252
|
+
i0.ɵɵtextInterpolate1(" Vector: ", ctx_r0.FormatScore(result_r12.ScoreBreakdown.Vector), " ");
|
|
67
253
|
} }
|
|
68
|
-
function
|
|
254
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_15_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
69
255
|
i0.ɵɵtext(0);
|
|
70
256
|
} if (rf & 2) {
|
|
71
|
-
const
|
|
72
|
-
|
|
257
|
+
const result_r12 = i0.ɵɵnextContext(3).$implicit;
|
|
258
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
259
|
+
i0.ɵɵtextInterpolate1(" FTS: ", ctx_r0.FormatScore(result_r12.ScoreBreakdown.FullText), " ");
|
|
73
260
|
} }
|
|
74
|
-
function
|
|
75
|
-
i0.ɵɵelementStart(0, "div",
|
|
76
|
-
i0.ɵɵelement(1, "i",
|
|
261
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
262
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
263
|
+
i0.ɵɵelement(1, "i", 60);
|
|
77
264
|
i0.ɵɵelementStart(2, "span");
|
|
78
|
-
i0.ɵɵconditionalCreate(3,
|
|
79
|
-
i0.ɵɵconditionalCreate(4,
|
|
265
|
+
i0.ɵɵconditionalCreate(3, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_15_Conditional_3_Template, 1, 1);
|
|
266
|
+
i0.ɵɵconditionalCreate(4, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_15_Conditional_4_Template, 1, 1);
|
|
80
267
|
i0.ɵɵelementEnd()();
|
|
81
268
|
} if (rf & 2) {
|
|
82
|
-
const
|
|
269
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
83
270
|
i0.ɵɵadvance(3);
|
|
84
|
-
i0.ɵɵconditional(
|
|
271
|
+
i0.ɵɵconditional(result_r12.ScoreBreakdown.Vector ? 3 : -1);
|
|
85
272
|
i0.ɵɵadvance();
|
|
86
|
-
i0.ɵɵconditional(
|
|
273
|
+
i0.ɵɵconditional(result_r12.ScoreBreakdown.FullText ? 4 : -1);
|
|
87
274
|
} }
|
|
88
|
-
function
|
|
89
|
-
i0.ɵɵelementStart(0, "span",
|
|
275
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
276
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
90
277
|
i0.ɵɵtext(1);
|
|
91
278
|
i0.ɵɵelementEnd();
|
|
92
279
|
} if (rf & 2) {
|
|
93
|
-
const
|
|
280
|
+
const tag_r15 = ctx.$implicit;
|
|
94
281
|
i0.ɵɵadvance();
|
|
95
|
-
i0.ɵɵtextInterpolate(
|
|
282
|
+
i0.ɵɵtextInterpolate(tag_r15);
|
|
96
283
|
} }
|
|
97
|
-
function
|
|
98
|
-
i0.ɵɵelementStart(0, "div",
|
|
99
|
-
i0.ɵɵrepeaterCreate(1,
|
|
284
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
285
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
286
|
+
i0.ɵɵrepeaterCreate(1, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_16_For_2_Template, 2, 1, "span", 61, i0.ɵɵrepeaterTrackByIdentity);
|
|
100
287
|
i0.ɵɵelementEnd();
|
|
101
288
|
} if (rf & 2) {
|
|
102
|
-
const
|
|
289
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
103
290
|
i0.ɵɵadvance();
|
|
104
|
-
i0.ɵɵrepeater(
|
|
105
|
-
} }
|
|
106
|
-
function
|
|
107
|
-
const
|
|
108
|
-
i0.ɵɵelementStart(0, "
|
|
109
|
-
i0.ɵɵ
|
|
110
|
-
i0.ɵɵ
|
|
111
|
-
i0.ɵɵ
|
|
291
|
+
i0.ɵɵrepeater(result_r12.Tags);
|
|
292
|
+
} }
|
|
293
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
294
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
295
|
+
i0.ɵɵelementStart(0, "a", 64);
|
|
296
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Conditional_0_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
297
|
+
i0.ɵɵelement(1, "i", 37);
|
|
298
|
+
i0.ɵɵtext(2);
|
|
299
|
+
i0.ɵɵelementEnd();
|
|
300
|
+
} if (rf & 2) {
|
|
301
|
+
const link_r17 = i0.ɵɵnextContext().$implicit;
|
|
302
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
303
|
+
i0.ɵɵproperty("href", link_r17.Value, i0.ɵɵsanitizeUrl);
|
|
304
|
+
i0.ɵɵadvance(2);
|
|
305
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.TruncateUrl(link_r17.Value), " ");
|
|
306
|
+
} }
|
|
307
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
308
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
309
|
+
i0.ɵɵelementStart(0, "a", 65);
|
|
310
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Conditional_1_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r18); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
311
|
+
i0.ɵɵelement(1, "i", 66);
|
|
312
|
+
i0.ɵɵtext(2);
|
|
313
|
+
i0.ɵɵelementEnd();
|
|
314
|
+
} if (rf & 2) {
|
|
315
|
+
const link_r17 = i0.ɵɵnextContext().$implicit;
|
|
316
|
+
i0.ɵɵproperty("href", "mailto:" + link_r17.Value, i0.ɵɵsanitizeUrl);
|
|
317
|
+
i0.ɵɵadvance(2);
|
|
318
|
+
i0.ɵɵtextInterpolate1(" ", link_r17.Value, " ");
|
|
319
|
+
} }
|
|
320
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
321
|
+
i0.ɵɵconditionalCreate(0, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Conditional_0_Template, 3, 2, "a", 62)(1, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Conditional_1_Template, 3, 2, "a", 63);
|
|
322
|
+
} if (rf & 2) {
|
|
323
|
+
const link_r17 = ctx.$implicit;
|
|
324
|
+
i0.ɵɵconditional(link_r17.Type === "URL" ? 0 : link_r17.Type === "Email" ? 1 : -1);
|
|
325
|
+
} }
|
|
326
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
327
|
+
i0.ɵɵelementStart(0, "div", 53);
|
|
328
|
+
i0.ɵɵrepeaterCreate(1, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_For_2_Template, 2, 1, null, null, _forTrack2);
|
|
329
|
+
i0.ɵɵelementEnd();
|
|
330
|
+
} if (rf & 2) {
|
|
331
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
332
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
333
|
+
i0.ɵɵadvance();
|
|
334
|
+
i0.ɵɵrepeater(ctx_r0.GetResolvedLinks(result_r12));
|
|
335
|
+
} }
|
|
336
|
+
function SearchResultsComponent_ng_template_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
337
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
338
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
339
|
+
i0.ɵɵconditionalCreate(1, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_1_Template, 5, 1, "div", 45);
|
|
340
|
+
i0.ɵɵelementStart(2, "div", 46)(3, "div", 47);
|
|
341
|
+
i0.ɵɵelement(4, "i", 48);
|
|
112
342
|
i0.ɵɵelementStart(5, "span");
|
|
113
343
|
i0.ɵɵtext(6);
|
|
114
344
|
i0.ɵɵelementEnd()();
|
|
115
|
-
i0.ɵɵelementStart(7, "div",
|
|
116
|
-
i0.ɵɵelement(8, "i",
|
|
117
|
-
i0.ɵɵelementStart(9, "span",
|
|
345
|
+
i0.ɵɵelementStart(7, "div", 47);
|
|
346
|
+
i0.ɵɵelement(8, "i", 49);
|
|
347
|
+
i0.ɵɵelementStart(9, "span", 50);
|
|
118
348
|
i0.ɵɵtext(10);
|
|
119
349
|
i0.ɵɵelementEnd()();
|
|
120
|
-
i0.ɵɵelementStart(11, "div",
|
|
121
|
-
i0.ɵɵelement(12, "i",
|
|
350
|
+
i0.ɵɵelementStart(11, "div", 47);
|
|
351
|
+
i0.ɵɵelement(12, "i", 51);
|
|
122
352
|
i0.ɵɵelementStart(13, "span");
|
|
123
353
|
i0.ɵɵtext(14);
|
|
124
354
|
i0.ɵɵelementEnd()();
|
|
125
|
-
i0.ɵɵconditionalCreate(15,
|
|
355
|
+
i0.ɵɵconditionalCreate(15, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_15_Template, 5, 2, "div", 47);
|
|
126
356
|
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵconditionalCreate(16,
|
|
128
|
-
i0.ɵɵ
|
|
129
|
-
i0.ɵɵ
|
|
130
|
-
i0.ɵɵ
|
|
131
|
-
i0.ɵɵ
|
|
357
|
+
i0.ɵɵconditionalCreate(16, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_16_Template, 3, 0, "div", 52);
|
|
358
|
+
i0.ɵɵconditionalCreate(17, SearchResultsComponent_ng_template_3_Conditional_16_Conditional_17_Template, 3, 0, "div", 53);
|
|
359
|
+
i0.ɵɵelementStart(18, "div", 54)(19, "button", 55);
|
|
360
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_16_Template_button_click_19_listener($event) { i0.ɵɵrestoreView(_r14); const result_r12 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnOpenRecord(result_r12, $event)); });
|
|
361
|
+
i0.ɵɵelement(20, "i", 37);
|
|
362
|
+
i0.ɵɵtext(21, " Open Record ");
|
|
363
|
+
i0.ɵɵelementEnd();
|
|
364
|
+
i0.ɵɵelementStart(22, "button", 56);
|
|
365
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_16_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r14); const result_r12 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnMoreLikeThis(result_r12, $event)); });
|
|
366
|
+
i0.ɵɵelement(23, "i", 57);
|
|
367
|
+
i0.ɵɵtext(24, " See Similar Items ");
|
|
132
368
|
i0.ɵɵelementEnd()()();
|
|
133
369
|
} if (rf & 2) {
|
|
134
|
-
const
|
|
135
|
-
const ctx_r0 = i0.ɵɵnextContext(
|
|
370
|
+
const result_r12 = i0.ɵɵnextContext().$implicit;
|
|
371
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
136
372
|
i0.ɵɵadvance();
|
|
137
|
-
i0.ɵɵconditional(
|
|
373
|
+
i0.ɵɵconditional(result_r12.Snippet ? 1 : -1);
|
|
138
374
|
i0.ɵɵadvance(5);
|
|
139
|
-
i0.ɵɵtextInterpolate(
|
|
375
|
+
i0.ɵɵtextInterpolate(result_r12.EntityName);
|
|
140
376
|
i0.ɵɵadvance(4);
|
|
141
|
-
i0.ɵɵtextInterpolate(
|
|
377
|
+
i0.ɵɵtextInterpolate(result_r12.RecordID);
|
|
142
378
|
i0.ɵɵadvance(4);
|
|
143
|
-
i0.ɵɵtextInterpolate1("",
|
|
379
|
+
i0.ɵɵtextInterpolate1("Relevance: ", ctx_r0.FormatScore(result_r12.Score));
|
|
380
|
+
i0.ɵɵadvance();
|
|
381
|
+
i0.ɵɵconditional(result_r12.ScoreBreakdown ? 15 : -1);
|
|
144
382
|
i0.ɵɵadvance();
|
|
145
|
-
i0.ɵɵconditional(
|
|
383
|
+
i0.ɵɵconditional(ctx_r0.ShowTags && result_r12.Tags.length > 0 ? 16 : -1);
|
|
146
384
|
i0.ɵɵadvance();
|
|
147
|
-
i0.ɵɵconditional(ctx_r0.
|
|
385
|
+
i0.ɵɵconditional(ctx_r0.GetResolvedLinks(result_r12).length > 0 ? 17 : -1);
|
|
148
386
|
} }
|
|
149
|
-
function
|
|
150
|
-
const
|
|
151
|
-
i0.ɵɵelementStart(0, "div",
|
|
152
|
-
i0.ɵɵlistener("click", function
|
|
153
|
-
i0.ɵɵelementStart(2, "div",
|
|
387
|
+
function SearchResultsComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
388
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
389
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "div", 28);
|
|
390
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Template_div_click_1_listener() { const result_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ToggleExpand(result_r12)); });
|
|
391
|
+
i0.ɵɵelementStart(2, "div", 29);
|
|
154
392
|
i0.ɵɵelement(3, "i");
|
|
155
393
|
i0.ɵɵelementEnd();
|
|
156
|
-
i0.ɵɵelementStart(4, "div",
|
|
394
|
+
i0.ɵɵelementStart(4, "div", 30)(5, "div", 31);
|
|
157
395
|
i0.ɵɵtext(6);
|
|
158
396
|
i0.ɵɵelementEnd();
|
|
159
|
-
i0.ɵɵelementStart(7, "div",
|
|
397
|
+
i0.ɵɵelementStart(7, "div", 32);
|
|
160
398
|
i0.ɵɵtext(8);
|
|
161
|
-
i0.ɵɵelementEnd()();
|
|
162
|
-
i0.ɵɵconditionalCreate(9, SearchResultsComponent_Conditional_2_For_5_For_9_Conditional_9_Template, 4, 1, "div", 21);
|
|
163
|
-
i0.ɵɵelementStart(10, "div", 22)(11, "button", 23);
|
|
164
|
-
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_For_5_For_9_Template_button_click_11_listener($event) { const result_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OnOpenRecord(result_r5, $event)); });
|
|
165
|
-
i0.ɵɵelement(12, "i", 24);
|
|
166
399
|
i0.ɵɵelementEnd();
|
|
167
|
-
i0.ɵɵ
|
|
168
|
-
i0.ɵɵ
|
|
169
|
-
i0.ɵɵ
|
|
400
|
+
i0.ɵɵconditionalCreate(9, SearchResultsComponent_ng_template_3_Conditional_9_Template, 4, 1, "div", 33);
|
|
401
|
+
i0.ɵɵelementEnd();
|
|
402
|
+
i0.ɵɵconditionalCreate(10, SearchResultsComponent_ng_template_3_Conditional_10_Template, 4, 1, "div", 34);
|
|
403
|
+
i0.ɵɵelementStart(11, "div", 35)(12, "button", 36);
|
|
404
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Template_button_click_12_listener($event) { const result_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnOpenRecord(result_r12, $event)); });
|
|
405
|
+
i0.ɵɵelement(13, "i", 37);
|
|
406
|
+
i0.ɵɵelementEnd();
|
|
407
|
+
i0.ɵɵelementStart(14, "button", 38);
|
|
408
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Template_button_click_14_listener($event) { const result_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ToggleExpand(result_r12, $event)); });
|
|
409
|
+
i0.ɵɵelement(15, "i", 39);
|
|
170
410
|
i0.ɵɵelementEnd()()();
|
|
171
|
-
i0.ɵɵconditionalCreate(
|
|
411
|
+
i0.ɵɵconditionalCreate(16, SearchResultsComponent_ng_template_3_Conditional_16_Template, 25, 7, "div", 40);
|
|
172
412
|
i0.ɵɵelementEnd();
|
|
173
413
|
} if (rf & 2) {
|
|
174
|
-
const
|
|
175
|
-
const ctx_r0 = i0.ɵɵnextContext(
|
|
176
|
-
i0.ɵɵclassProp("result-card-expanded", ctx_r0.IsExpanded(
|
|
414
|
+
const result_r12 = ctx.$implicit;
|
|
415
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
416
|
+
i0.ɵɵclassProp("result-card-expanded", ctx_r0.IsExpanded(result_r12.ID));
|
|
177
417
|
i0.ɵɵadvance(3);
|
|
178
|
-
i0.ɵɵclassMap(
|
|
418
|
+
i0.ɵɵclassMap(result_r12.EntityIcon || result_r12.SourceIcon || "fa-solid fa-database");
|
|
179
419
|
i0.ɵɵadvance(3);
|
|
180
|
-
i0.ɵɵtextInterpolate(
|
|
420
|
+
i0.ɵɵtextInterpolate(result_r12.RecordName || result_r12.Title);
|
|
181
421
|
i0.ɵɵadvance(2);
|
|
182
|
-
i0.ɵɵtextInterpolate(
|
|
422
|
+
i0.ɵɵtextInterpolate(result_r12.EntityName);
|
|
183
423
|
i0.ɵɵadvance();
|
|
184
|
-
i0.ɵɵconditional(
|
|
185
|
-
i0.ɵɵadvance(5);
|
|
186
|
-
i0.ɵɵclassProp("fa-chevron-down", !ctx_r0.IsExpanded(result_r5.ID))("fa-chevron-up", ctx_r0.IsExpanded(result_r5.ID));
|
|
424
|
+
i0.ɵɵconditional(result_r12.Tags && result_r12.Tags.length > 0 ? 9 : -1);
|
|
187
425
|
i0.ɵɵadvance();
|
|
188
|
-
i0.ɵɵconditional(ctx_r0.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
|
192
|
-
i0.ɵɵelementStart(0, "button", 44);
|
|
193
|
-
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_For_5_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const group_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleGroup(group_r3.SourceType)); });
|
|
194
|
-
i0.ɵɵelement(1, "i", 45);
|
|
195
|
-
i0.ɵɵtext(2);
|
|
196
|
-
i0.ɵɵelementEnd();
|
|
197
|
-
} if (rf & 2) {
|
|
198
|
-
const group_r3 = i0.ɵɵnextContext().$implicit;
|
|
199
|
-
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
200
|
-
i0.ɵɵadvance(2);
|
|
201
|
-
i0.ɵɵtextInterpolate1(" Show ", ctx_r0.GetHiddenCount(group_r3), " more results ");
|
|
202
|
-
} }
|
|
203
|
-
function SearchResultsComponent_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
204
|
-
const _r2 = i0.ɵɵgetCurrentView();
|
|
205
|
-
i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
|
|
206
|
-
i0.ɵɵlistener("click", function SearchResultsComponent_Conditional_2_For_5_Template_div_click_1_listener() { const group_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleGroup(group_r3.SourceType)); });
|
|
207
|
-
i0.ɵɵconditionalCreate(2, SearchResultsComponent_Conditional_2_For_5_Conditional_2_Template, 1, 2, "i", 9);
|
|
208
|
-
i0.ɵɵelementStart(3, "span", 10);
|
|
209
|
-
i0.ɵɵtext(4);
|
|
210
|
-
i0.ɵɵelementEnd();
|
|
211
|
-
i0.ɵɵelementStart(5, "span", 11);
|
|
212
|
-
i0.ɵɵtext(6);
|
|
213
|
-
i0.ɵɵelementEnd();
|
|
214
|
-
i0.ɵɵelement(7, "i", 12);
|
|
215
|
-
i0.ɵɵelementEnd();
|
|
216
|
-
i0.ɵɵrepeaterCreate(8, SearchResultsComponent_Conditional_2_For_5_For_9_Template, 16, 12, "div", 13, _forTrack1);
|
|
217
|
-
i0.ɵɵconditionalCreate(10, SearchResultsComponent_Conditional_2_For_5_Conditional_10_Template, 3, 1, "button", 14);
|
|
218
|
-
i0.ɵɵelementEnd();
|
|
219
|
-
} if (rf & 2) {
|
|
220
|
-
const group_r3 = ctx.$implicit;
|
|
221
|
-
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
222
|
-
i0.ɵɵadvance(2);
|
|
223
|
-
i0.ɵɵconditional(ctx_r0.ShowSourceIcons ? 2 : -1);
|
|
224
|
-
i0.ɵɵadvance(2);
|
|
225
|
-
i0.ɵɵtextInterpolate(group_r3.Label);
|
|
226
|
-
i0.ɵɵadvance(2);
|
|
227
|
-
i0.ɵɵtextInterpolate1("(", group_r3.TotalCount, ")");
|
|
228
|
-
i0.ɵɵadvance();
|
|
229
|
-
i0.ɵɵclassProp("fa-chevron-down", !ctx_r0.IsGroupExpanded(group_r3.SourceType))("fa-chevron-up", ctx_r0.IsGroupExpanded(group_r3.SourceType));
|
|
230
|
-
i0.ɵɵadvance();
|
|
231
|
-
i0.ɵɵrepeater(ctx_r0.GetVisibleResults(group_r3));
|
|
232
|
-
i0.ɵɵadvance(2);
|
|
233
|
-
i0.ɵɵconditional(ctx_r0.HasMoreResults(group_r3) ? 10 : -1);
|
|
234
|
-
} }
|
|
235
|
-
function SearchResultsComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
-
i0.ɵɵelementStart(0, "div", 5)(1, "span");
|
|
237
|
-
i0.ɵɵtext(2);
|
|
238
|
-
i0.ɵɵelementEnd();
|
|
239
|
-
i0.ɵɵconditionalCreate(3, SearchResultsComponent_Conditional_2_Conditional_3_Template, 2, 1, "span", 6);
|
|
240
|
-
i0.ɵɵelementEnd();
|
|
241
|
-
i0.ɵɵrepeaterCreate(4, SearchResultsComponent_Conditional_2_For_5_Template, 11, 8, "div", 7, _forTrack0);
|
|
242
|
-
} if (rf & 2) {
|
|
243
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
244
|
-
i0.ɵɵadvance(2);
|
|
245
|
-
i0.ɵɵtextInterpolate1("", ctx_r0.TotalCount, " results");
|
|
246
|
-
i0.ɵɵadvance();
|
|
247
|
-
i0.ɵɵconditional(ctx_r0.ElapsedMs > 0 ? 3 : -1);
|
|
426
|
+
i0.ɵɵconditional(ctx_r0.ShowScores ? 10 : -1);
|
|
427
|
+
i0.ɵɵadvance(5);
|
|
428
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r0.IsExpanded(result_r12.ID))("fa-chevron-up", ctx_r0.IsExpanded(result_r12.ID));
|
|
248
429
|
i0.ɵɵadvance();
|
|
249
|
-
i0.ɵɵ
|
|
430
|
+
i0.ɵɵconditional(ctx_r0.IsExpanded(result_r12.ID) ? 16 : -1);
|
|
250
431
|
} }
|
|
251
432
|
export class SearchResultsComponent {
|
|
252
433
|
cdr = inject(ChangeDetectorRef);
|
|
253
|
-
/** Grouped search results to display */
|
|
434
|
+
/** Grouped search results to display (used when DisplayMode is 'grouped') */
|
|
254
435
|
ResultGroups = [];
|
|
436
|
+
/** Flat list of all results sorted by score (used when DisplayMode is 'flat') */
|
|
437
|
+
FlatResults = [];
|
|
438
|
+
/** Display mode: 'flat' for blended list sorted by score, 'grouped' for source-type groups */
|
|
439
|
+
DisplayMode = 'flat';
|
|
255
440
|
/** Whether results are currently loading */
|
|
256
441
|
IsLoading = false;
|
|
257
442
|
/** Total result count */
|
|
258
443
|
TotalCount = 0;
|
|
259
444
|
/** Elapsed search time in ms */
|
|
260
445
|
ElapsedMs = 0;
|
|
261
|
-
/** Maximum results per group before "Show more" */
|
|
446
|
+
/** Maximum results per group before "Show more" (grouped mode only) */
|
|
262
447
|
MaxPerGroup = 5;
|
|
448
|
+
/** Results per page in flat mode */
|
|
449
|
+
PageSize = 10;
|
|
450
|
+
/** Whether to show the results summary line (count + time). Set false when parent provides its own header. */
|
|
451
|
+
ShowSummary = true;
|
|
263
452
|
/** Whether to show score badges */
|
|
264
453
|
ShowScores = true;
|
|
265
454
|
/** Whether to show tags */
|
|
@@ -269,10 +458,49 @@ export class SearchResultsComponent {
|
|
|
269
458
|
ResultSelected = new EventEmitter();
|
|
270
459
|
/** Emitted when user clicks "Open Record" — parent handles navigation */
|
|
271
460
|
OpenRecordRequested = new EventEmitter();
|
|
461
|
+
/** Emitted when user clicks "See Similar Items" — parent runs a "more like this" search */
|
|
462
|
+
MoreLikeThisRequested = new EventEmitter();
|
|
463
|
+
/** Current page (1-based) for flat mode pagination */
|
|
464
|
+
CurrentPage = 1;
|
|
272
465
|
/** Tracks which groups are expanded */
|
|
273
466
|
ExpandedGroups = new Set();
|
|
274
467
|
/** Set of expanded result card IDs — multiple can be open simultaneously */
|
|
275
468
|
ExpandedResultIDs = new Set();
|
|
469
|
+
// ── Flat mode pagination ──
|
|
470
|
+
/** Get results for the current page in flat mode */
|
|
471
|
+
get PagedResults() {
|
|
472
|
+
const start = (this.CurrentPage - 1) * this.PageSize;
|
|
473
|
+
return this.FlatResults.slice(start, start + this.PageSize);
|
|
474
|
+
}
|
|
475
|
+
/** Total number of pages */
|
|
476
|
+
get TotalPages() {
|
|
477
|
+
return Math.ceil(this.FlatResults.length / this.PageSize);
|
|
478
|
+
}
|
|
479
|
+
/** Page numbers to display in the pager */
|
|
480
|
+
get PageNumbers() {
|
|
481
|
+
const total = this.TotalPages;
|
|
482
|
+
if (total <= 7)
|
|
483
|
+
return Array.from({ length: total }, (_, i) => i + 1);
|
|
484
|
+
const pages = [1];
|
|
485
|
+
const start = Math.max(2, this.CurrentPage - 2);
|
|
486
|
+
const end = Math.min(total - 1, this.CurrentPage + 2);
|
|
487
|
+
if (start > 2)
|
|
488
|
+
pages.push(-1); // ellipsis marker
|
|
489
|
+
for (let i = start; i <= end; i++)
|
|
490
|
+
pages.push(i);
|
|
491
|
+
if (end < total - 1)
|
|
492
|
+
pages.push(-1); // ellipsis marker
|
|
493
|
+
pages.push(total);
|
|
494
|
+
return pages;
|
|
495
|
+
}
|
|
496
|
+
/** Navigate to a specific page */
|
|
497
|
+
GoToPage(page) {
|
|
498
|
+
if (page < 1 || page > this.TotalPages)
|
|
499
|
+
return;
|
|
500
|
+
this.CurrentPage = page;
|
|
501
|
+
this.cdr.detectChanges();
|
|
502
|
+
}
|
|
503
|
+
// ── Grouped mode ──
|
|
276
504
|
/** Toggle group expansion */
|
|
277
505
|
ToggleGroup(sourceType) {
|
|
278
506
|
if (this.ExpandedGroups.has(sourceType)) {
|
|
@@ -333,6 +561,11 @@ export class SearchResultsComponent {
|
|
|
333
561
|
RecordID: result.RecordID
|
|
334
562
|
});
|
|
335
563
|
}
|
|
564
|
+
/** Handle "See Similar Items" button click — emits the result for a "more like this" search */
|
|
565
|
+
OnMoreLikeThis(result, event) {
|
|
566
|
+
event.stopPropagation();
|
|
567
|
+
this.MoreLikeThisRequested.emit(result);
|
|
568
|
+
}
|
|
336
569
|
/** Format a score as a percentage */
|
|
337
570
|
FormatScore(score) {
|
|
338
571
|
return `${Math.round(score * 100)}%`;
|
|
@@ -343,18 +576,114 @@ export class SearchResultsComponent {
|
|
|
343
576
|
return `${ms}ms`;
|
|
344
577
|
return `${(ms / 1000).toFixed(1)}s`;
|
|
345
578
|
}
|
|
579
|
+
/** Resolved link cache per result ID */
|
|
580
|
+
resolvedLinksCache = new Map();
|
|
581
|
+
/**
|
|
582
|
+
* Resolve URL and Email fields from the result's RawMetadata using entity ExtendedType metadata.
|
|
583
|
+
* Returns clickable link entries with proper type classification.
|
|
584
|
+
*/
|
|
585
|
+
GetResolvedLinks(result) {
|
|
586
|
+
if (this.resolvedLinksCache.has(result.ID)) {
|
|
587
|
+
return this.resolvedLinksCache.get(result.ID);
|
|
588
|
+
}
|
|
589
|
+
const links = [];
|
|
590
|
+
if (result.RawMetadata) {
|
|
591
|
+
try {
|
|
592
|
+
const meta = JSON.parse(result.RawMetadata);
|
|
593
|
+
const linkFields = this.GetLinkFields(result.EntityName);
|
|
594
|
+
for (const field of linkFields) {
|
|
595
|
+
const value = meta[field.Name];
|
|
596
|
+
if (value && typeof value === 'string' && value.trim().length > 0) {
|
|
597
|
+
links.push({
|
|
598
|
+
Value: value,
|
|
599
|
+
Label: field.DisplayName,
|
|
600
|
+
Type: field.Type
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
catch { /* ignore parse errors */ }
|
|
606
|
+
}
|
|
607
|
+
// Fallback: extract URLs from snippet if no ExtendedType fields found
|
|
608
|
+
if (links.length === 0) {
|
|
609
|
+
const urls = this.ExtractUrls(result.Snippet);
|
|
610
|
+
for (const url of urls) {
|
|
611
|
+
links.push({ Value: url, Label: '', Type: 'URL' });
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
this.resolvedLinksCache.set(result.ID, links);
|
|
615
|
+
return links;
|
|
616
|
+
}
|
|
617
|
+
/** Extract URLs from snippet text */
|
|
618
|
+
ExtractUrls(snippet) {
|
|
619
|
+
if (!snippet)
|
|
620
|
+
return [];
|
|
621
|
+
const urlRegex = /https?:\/\/[^\s,;)>"']+/g;
|
|
622
|
+
const matches = snippet.match(urlRegex);
|
|
623
|
+
return matches ? [...new Set(matches)] : [];
|
|
624
|
+
}
|
|
625
|
+
/** Truncate a URL for display */
|
|
626
|
+
TruncateUrl(url) {
|
|
627
|
+
try {
|
|
628
|
+
const parsed = new URL(url);
|
|
629
|
+
const path = parsed.pathname.length > 30
|
|
630
|
+
? parsed.pathname.substring(0, 30) + '...'
|
|
631
|
+
: parsed.pathname;
|
|
632
|
+
return parsed.hostname + path;
|
|
633
|
+
}
|
|
634
|
+
catch {
|
|
635
|
+
return url.length > 50 ? url.substring(0, 50) + '...' : url;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
/** Cache of URL/Email field info per entity name */
|
|
639
|
+
linkFieldsCache = new Map();
|
|
640
|
+
/**
|
|
641
|
+
* Get URL and Email fields for an entity using ExtendedType from entity metadata.
|
|
642
|
+
* Returns fields with ExtendedType='URL' or ExtendedType='Email'.
|
|
643
|
+
*/
|
|
644
|
+
GetLinkFields(entityName) {
|
|
645
|
+
if (this.linkFieldsCache.has(entityName)) {
|
|
646
|
+
return this.linkFieldsCache.get(entityName);
|
|
647
|
+
}
|
|
648
|
+
try {
|
|
649
|
+
const md = new Metadata();
|
|
650
|
+
const entityInfo = md.Entities.find(e => e.Name === entityName);
|
|
651
|
+
if (!entityInfo) {
|
|
652
|
+
this.linkFieldsCache.set(entityName, []);
|
|
653
|
+
return [];
|
|
654
|
+
}
|
|
655
|
+
const linkFields = entityInfo.Fields
|
|
656
|
+
.filter(f => f.ExtendedType === 'URL' || f.ExtendedType === 'Email')
|
|
657
|
+
.map(f => ({
|
|
658
|
+
Name: f.Name,
|
|
659
|
+
DisplayName: f.DisplayNameOrName,
|
|
660
|
+
Type: f.ExtendedType
|
|
661
|
+
}));
|
|
662
|
+
this.linkFieldsCache.set(entityName, linkFields);
|
|
663
|
+
return linkFields;
|
|
664
|
+
}
|
|
665
|
+
catch {
|
|
666
|
+
this.linkFieldsCache.set(entityName, []);
|
|
667
|
+
return [];
|
|
668
|
+
}
|
|
669
|
+
}
|
|
346
670
|
static ɵfac = function SearchResultsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchResultsComponent)(); };
|
|
347
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultsComponent, selectors: [["mj-search-results"]], inputs: { ResultGroups: "ResultGroups", IsLoading: "IsLoading", TotalCount: "TotalCount", ElapsedMs: "ElapsedMs", MaxPerGroup: "MaxPerGroup", ShowScores: "ShowScores", ShowTags: "ShowTags", ShowSourceIcons: "ShowSourceIcons" }, outputs: { ResultSelected: "ResultSelected", OpenRecordRequested: "OpenRecordRequested" }, standalone: false, decls:
|
|
348
|
-
i0.ɵɵconditionalCreate(0, SearchResultsComponent_Conditional_0_Template, 2, 0, "div",
|
|
671
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultsComponent, selectors: [["mj-search-results"]], inputs: { ResultGroups: "ResultGroups", FlatResults: "FlatResults", DisplayMode: "DisplayMode", IsLoading: "IsLoading", TotalCount: "TotalCount", ElapsedMs: "ElapsedMs", MaxPerGroup: "MaxPerGroup", PageSize: "PageSize", ShowSummary: "ShowSummary", ShowScores: "ShowScores", ShowTags: "ShowTags", ShowSourceIcons: "ShowSourceIcons" }, outputs: { ResultSelected: "ResultSelected", OpenRecordRequested: "OpenRecordRequested", MoreLikeThisRequested: "MoreLikeThisRequested" }, standalone: false, decls: 5, vars: 1, consts: [["resultCardTpl", ""], [1, "results-loading"], [1, "results-empty"], ["text", "Searching...", "size", "medium"], [1, "fa-solid", "fa-search", "results-empty-icon"], [1, "results-empty-text"], [1, "results-summary"], [1, "results-summary-time"], [1, "results-scroll-area"], [1, "results-pager"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "pager-btn", "pager-prev", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "pager-btn", "pager-next", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-right"], [1, "pager-ellipsis"], [1, "pager-btn", "pager-num", 3, "pager-active"], [1, "pager-btn", "pager-num", 3, "click"], [1, "results-group"], [1, "results-group-header", 3, "click"], [3, "class"], [1, "results-group-label"], [1, "results-group-count"], [1, "fa-solid", "results-group-chevron"], [1, "results-show-more"], [1, "results-show-more", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "result-card"], [1, "result-card-main", 3, "click"], [1, "result-card-icon-wrap"], [1, "result-card-body"], [1, "result-card-title"], [1, "result-card-entity"], [1, "result-card-tags"], [1, "result-card-score"], [1, "result-card-actions"], ["title", "Open record", 1, "result-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], ["title", "Expand details", 1, "result-expand-btn", 3, "click"], [1, "fa-solid"], [1, "result-card-detail"], [1, "result-tag-chip"], [1, "result-tag-more"], [1, "score-circle"], [1, "score-value"], [1, "detail-section"], [1, "detail-meta"], [1, "detail-meta-item"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-fingerprint"], [1, "detail-record-id"], [1, "fa-solid", "fa-signal"], [1, "detail-tags"], [1, "detail-links"], [1, "detail-actions"], [1, "detail-open-btn", 3, "click"], [1, "detail-similar-btn", 3, "click"], [1, "fa-solid", "fa-shuffle"], [1, "detail-label"], [1, "detail-snippet"], [1, "fa-solid", "fa-chart-bar"], [1, "result-card-tag"], ["target", "_blank", 1, "detail-link", 3, "href"], [1, "detail-link", "detail-link-email", 3, "href"], ["target", "_blank", 1, "detail-link", 3, "click", "href"], [1, "detail-link", "detail-link-email", 3, "click", "href"], [1, "fa-solid", "fa-envelope"]], template: function SearchResultsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
672
|
+
i0.ɵɵconditionalCreate(0, SearchResultsComponent_Conditional_0_Template, 2, 0, "div", 1)(1, SearchResultsComponent_Conditional_1_Template, 4, 0, "div", 2)(2, SearchResultsComponent_Conditional_2_Template, 3, 2);
|
|
673
|
+
i0.ɵɵtemplate(3, SearchResultsComponent_ng_template_3_Template, 17, 13, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
349
674
|
} if (rf & 2) {
|
|
350
|
-
i0.ɵɵconditional(ctx.IsLoading ? 0 : ctx.ResultGroups.length === 0 && ctx.TotalCount === 0 ? 1 : 2);
|
|
351
|
-
} }, dependencies: [i1.LoadingComponent], styles: ["\n\n\n.results-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 3rem 1rem;\n}\n\n.results-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 1rem;\n gap: 0.5rem;\n}\n\n.results-empty-icon[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-text-muted);\n margin-bottom: 0.5rem;\n}\n\n.results-empty-text[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.results-summary[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n color: var(--mj-text-secondary);\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-summary-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.results-group[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.results-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.results-group-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 0.85rem;\n}\n\n.results-group-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.results-group-count[_ngcontent-%COMP%] {\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}\n\n.results-group-chevron[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n transition: transform 0.2s ease;\n}\n\n\n\n.result-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n margin: 0 0 0.35rem 1.5rem;\n overflow: hidden;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.result-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-default);\n}\n\n.result-card-expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.result-card-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.65rem 0.85rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.result-card-main[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.result-card-icon-wrap[_ngcontent-%COMP%] {\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 0.8rem;\n flex-shrink: 0;\n}\n\n.result-card-body[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.result-card-title[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: 0.85rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.result-card-entity[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.result-open-btn[_ngcontent-%COMP%], \n.result-expand-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.result-open-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.result-expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n\n\n.result-card-detail[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem 0.85rem 3.5rem;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 0.65rem;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin-bottom: 0.25rem;\n display: block;\n}\n\n.detail-snippet[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.detail-meta[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n margin-bottom: 0.65rem;\n}\n\n.detail-meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.detail-meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.65rem;\n}\n\n.detail-record-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 0.7rem;\n max-width: 180px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 0.65rem;\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.detail-open-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.78rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.detail-open-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.result-card-snippet[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\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-card-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n margin-top: 0.35rem;\n}\n\n.result-card-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 0.1rem 0.4rem;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-tag-more[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.result-card-score[_ngcontent-%COMP%] {\n flex-shrink: 0;\n margin-top: 0.2rem;\n}\n\n.score-circle[_ngcontent-%COMP%] {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.score-value[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n\n\n.results-show-more[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.5rem 1rem;\n border: none;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.82rem;\n cursor: pointer;\n justify-content: center;\n transition: background 0.1s ease;\n}\n\n.results-show-more[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}"] });
|
|
675
|
+
i0.ɵɵconditional(ctx.IsLoading ? 0 : (ctx.DisplayMode === "flat" ? ctx.FlatResults.length : ctx.ResultGroups.length) === 0 && ctx.TotalCount === 0 ? 1 : 2);
|
|
676
|
+
} }, dependencies: [i1.NgTemplateOutlet, i2.LoadingComponent], styles: ["\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n}\n\n.results-scroll-area[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.results-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 3rem 1rem;\n}\n\n.results-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 1rem;\n gap: 0.5rem;\n}\n\n.results-empty-icon[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-text-muted);\n margin-bottom: 0.5rem;\n}\n\n.results-empty-text[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.results-summary[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n color: var(--mj-text-secondary);\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-summary-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.results-group[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.results-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.results-group-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 0.85rem;\n}\n\n.results-group-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.results-group-count[_ngcontent-%COMP%] {\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}\n\n.results-group-chevron[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n transition: transform 0.2s ease;\n}\n\n\n\n.result-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n margin: 0 0 0.35rem 1.5rem;\n overflow: hidden;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.result-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-default);\n}\n\n.result-card-expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.result-card-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.65rem 0.85rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.result-card-main[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.result-card-icon-wrap[_ngcontent-%COMP%] {\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 0.8rem;\n flex-shrink: 0;\n}\n\n.result-card-body[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.result-card-title[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: 0.85rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.result-card-entity[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.result-tag-chip[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 0.65rem;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-border-default));\n}\n\n.result-tag-more[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 1px 6px;\n font-size: 0.6rem;\n color: var(--mj-text-muted);\n}\n\n.result-card-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.result-open-btn[_ngcontent-%COMP%], \n.result-expand-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.result-open-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.result-expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n\n\n.result-card-detail[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem 0.85rem 3.5rem;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 0.65rem;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin-bottom: 0.25rem;\n display: block;\n}\n\n.detail-snippet[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.detail-meta[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n margin-bottom: 0.65rem;\n}\n\n.detail-meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.detail-meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.65rem;\n}\n\n.detail-record-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 0.7rem;\n max-width: 180px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 0.65rem;\n}\n\n.detail-links[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: 8px;\n}\n\n.detail-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 0.72rem;\n color: var(--mj-text-link);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-border-default));\n text-decoration: none;\n transition: background 0.15s ease;\n}\n\n.detail-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n text-decoration: underline;\n}\n\n.detail-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.detail-open-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.78rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.detail-open-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.detail-similar-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 0.78rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.detail-similar-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.result-card-snippet[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\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-card-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n margin-top: 0.35rem;\n}\n\n.result-card-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 0.1rem 0.4rem;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-tag-more[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.result-card-score[_ngcontent-%COMP%] {\n flex-shrink: 0;\n margin-top: 0.2rem;\n}\n\n.score-circle[_ngcontent-%COMP%] {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.score-value[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n\n\n.results-show-more[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.5rem 1rem;\n border: none;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.82rem;\n cursor: pointer;\n justify-content: center;\n transition: background 0.1s ease;\n}\n\n.results-show-more[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.results-pager[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 0.75rem 0;\n flex-shrink: 0;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.pager-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0 6px;\n}\n\n.pager-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.pager-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.35;\n cursor: default;\n}\n\n.pager-active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.pager-active[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.pager-ellipsis[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n color: var(--mj-text-muted);\n font-size: 0.8rem;\n}\n\n.pager-prev[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.pager-next[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n}"] });
|
|
352
677
|
}
|
|
353
678
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsComponent, [{
|
|
354
679
|
type: Component,
|
|
355
|
-
args: [{ standalone: false, selector: 'mj-search-results', template: "@if (IsLoading) {\n <div class=\"results-loading\">\n <mj-loading text=\"Searching...\" size=\"medium\"></mj-loading>\n </div>\n} @else if (ResultGroups.length === 0 && TotalCount === 0) {\n <div class=\"results-empty\">\n <i class=\"fa-solid fa-search results-empty-icon\"></i>\n <p class=\"results-empty-text\">No results to display</p>\n </div>\n} @else {\n <!-- Results summary -->\n <div class=\"results-summary\">\n <span>{{ TotalCount }} results</span>\n @if (ElapsedMs > 0) {\n <span class=\"results-summary-time\"> in {{ FormatTime(ElapsedMs) }}</span>\n }\n </div>\n\n <!-- Grouped results -->\n @for (group of ResultGroups; track group.SourceType) {\n <div class=\"results-group\">\n <div class=\"results-group-header\" (click)=\"ToggleGroup(group.SourceType)\">\n @if (ShowSourceIcons) {\n <i [class]=\"group.Icon + ' results-group-icon'\"></i>\n }\n <span class=\"results-group-label\">{{ group.Label }}</span>\n <span class=\"results-group-count\">({{ group.TotalCount }})</span>\n <i class=\"fa-solid results-group-chevron\"\n [class.fa-chevron-down]=\"!IsGroupExpanded(group.SourceType)\"\n [class.fa-chevron-up]=\"IsGroupExpanded(group.SourceType)\"></i>\n </div>\n\n @for (result of GetVisibleResults(group); track result.ID) {\n <div class=\"result-card\" [class.result-card-expanded]=\"IsExpanded(result.ID)\">\n <!-- Main row -->\n <div class=\"result-card-main\" (click)=\"ToggleExpand(result)\">\n <div class=\"result-card-icon-wrap\">\n <i [class]=\"result.EntityIcon || result.SourceIcon || 'fa-solid fa-database'\"></i>\n </div>\n <div class=\"result-card-body\">\n <div class=\"result-card-title\">{{ result.RecordName || result.Title }}</div>\n <div class=\"result-card-entity\">{{ result.EntityName }}</div>\n </div>\n @if (ShowScores) {\n <div class=\"result-card-score\">\n <div class=\"score-circle\">\n <span class=\"score-value\">{{ FormatScore(result.Score) }}</span>\n </div>\n </div>\n }\n <div class=\"result-card-actions\">\n <button class=\"result-open-btn\" (click)=\"OnOpenRecord(result, $event)\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n <button class=\"result-expand-btn\" (click)=\"ToggleExpand(result, $event)\" title=\"Expand details\">\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!IsExpanded(result.ID)\"\n [class.fa-chevron-up]=\"IsExpanded(result.ID)\"></i>\n </button>\n </div>\n </div>\n\n <!-- Expanded detail -->\n @if (IsExpanded(result.ID)) {\n <div class=\"result-card-detail\">\n @if (result.Snippet) {\n <div class=\"detail-section\">\n <span class=\"detail-label\">Preview</span>\n <p class=\"detail-snippet\">{{ result.Snippet }}</p>\n </div>\n }\n <div class=\"detail-meta\">\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>{{ result.EntityName }}</span>\n </div>\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-fingerprint\"></i>\n <span class=\"detail-record-id\">{{ result.RecordID }}</span>\n </div>\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-signal\"></i>\n <span>{{ result.SourceType }} match</span>\n </div>\n @if (result.ScoreBreakdown) {\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n <span>\n @if (result.ScoreBreakdown.Vector) { Vector: {{ (result.ScoreBreakdown.Vector * 100).toFixed(0) }}% }\n @if (result.ScoreBreakdown.FullText) { FTS: {{ (result.ScoreBreakdown.FullText * 100).toFixed(0) }}% }\n </span>\n </div>\n }\n </div>\n @if (ShowTags && result.Tags.length > 0) {\n <div class=\"detail-tags\">\n @for (tag of result.Tags; track tag) {\n <span class=\"result-card-tag\">{{ tag }}</span>\n }\n </div>\n }\n <div class=\"detail-actions\">\n <button class=\"detail-open-btn\" (click)=\"OnOpenRecord(result, $event)\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Record\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n @if (HasMoreResults(group)) {\n <button class=\"results-show-more\" (click)=\"ToggleGroup(group.SourceType)\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n Show {{ GetHiddenCount(group) }} more results\n </button>\n }\n </div>\n }\n}\n", styles: ["/* Search Results Component */\n\n.results-loading {\n display: flex;\n justify-content: center;\n padding: 3rem 1rem;\n}\n\n.results-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 1rem;\n gap: 0.5rem;\n}\n\n.results-empty-icon {\n font-size: 2rem;\n color: var(--mj-text-muted);\n margin-bottom: 0.5rem;\n}\n\n.results-empty-text {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.results-summary {\n padding: 0.75rem 1rem;\n color: var(--mj-text-secondary);\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-summary-time {\n color: var(--mj-text-muted);\n}\n\n/* Group Header */\n.results-group {\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-group-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.results-group-header:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.results-group-icon {\n color: var(--mj-brand-primary);\n font-size: 0.85rem;\n}\n\n.results-group-label {\n font-weight: 600;\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.results-group-count {\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}\n\n.results-group-chevron {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n transition: transform 0.2s ease;\n}\n\n/* Result Card \u2014 expandable */\n.result-card {\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n margin: 0 0 0.35rem 1.5rem;\n overflow: hidden;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.result-card:hover {\n border-color: var(--mj-border-default);\n}\n\n.result-card-expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.result-card-main {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.65rem 0.85rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.result-card-main:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.result-card-icon-wrap {\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 0.8rem;\n flex-shrink: 0;\n}\n\n.result-card-body {\n flex: 1;\n min-width: 0;\n}\n\n.result-card-title {\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: 0.85rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.result-card-entity {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.result-open-btn,\n.result-expand-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.result-open-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.result-expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n/* Expanded detail panel */\n.result-card-detail {\n padding: 0.75rem 1rem 0.85rem 3.5rem;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n}\n\n.detail-section {\n margin-bottom: 0.65rem;\n}\n\n.detail-label {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin-bottom: 0.25rem;\n display: block;\n}\n\n.detail-snippet {\n margin: 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.detail-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n margin-bottom: 0.65rem;\n}\n\n.detail-meta-item {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.detail-meta-item i {\n font-size: 0.65rem;\n}\n\n.detail-record-id {\n font-family: monospace;\n font-size: 0.7rem;\n max-width: 180px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 0.65rem;\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n}\n\n.detail-open-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.78rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.detail-open-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.result-card-snippet {\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\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-card-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n margin-top: 0.35rem;\n}\n\n.result-card-tag {\n display: inline-block;\n padding: 0.1rem 0.4rem;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-tag-more {\n color: var(--mj-brand-primary);\n}\n\n.result-card-score {\n flex-shrink: 0;\n margin-top: 0.2rem;\n}\n\n.score-circle {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.score-value {\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n/* Show More Button */\n.results-show-more {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.5rem 1rem;\n border: none;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.82rem;\n cursor: pointer;\n justify-content: center;\n transition: background 0.1s ease;\n}\n\n.results-show-more:hover {\n background: var(--mj-bg-surface-hover);\n}\n"] }]
|
|
680
|
+
args: [{ standalone: false, selector: 'mj-search-results', template: "@if (IsLoading) {\n <div class=\"results-loading\">\n <mj-loading text=\"Searching...\" size=\"medium\"></mj-loading>\n </div>\n} @else if ((DisplayMode === 'flat' ? FlatResults.length : ResultGroups.length) === 0 && TotalCount === 0) {\n <div class=\"results-empty\">\n <i class=\"fa-solid fa-search results-empty-icon\"></i>\n <p class=\"results-empty-text\">No results to display</p>\n </div>\n} @else {\n <!-- Results summary -->\n @if (ShowSummary) {\n <div class=\"results-summary\">\n <span>{{ TotalCount }} results</span>\n @if (ElapsedMs > 0) {\n <span class=\"results-summary-time\"> in {{ FormatTime(ElapsedMs) }}</span>\n }\n </div>\n }\n\n @if (DisplayMode === 'flat') {\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550 FLAT BLENDED LIST (sorted by score) \u2550\u2550\u2550\u2550\u2550\u2550 -->\n <div class=\"results-scroll-area\">\n @for (result of PagedResults; track result.ID) {\n <ng-container *ngTemplateOutlet=\"resultCardTpl; context: { $implicit: result }\"></ng-container>\n }\n </div>\n\n <!-- Google-style pagination (sticky at bottom) -->\n @if (TotalPages > 1) {\n <div class=\"results-pager\">\n <button class=\"pager-btn pager-prev\" [disabled]=\"CurrentPage === 1\"\n (click)=\"GoToPage(CurrentPage - 1)\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n @for (p of PageNumbers; track $index) {\n @if (p === -1) {\n <span class=\"pager-ellipsis\">...</span>\n } @else {\n <button class=\"pager-btn pager-num\" [class.pager-active]=\"p === CurrentPage\"\n (click)=\"GoToPage(p)\">{{ p }}</button>\n }\n }\n <button class=\"pager-btn pager-next\" [disabled]=\"CurrentPage === TotalPages\"\n (click)=\"GoToPage(CurrentPage + 1)\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n } @else {\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550 GROUPED BY SOURCE TYPE \u2550\u2550\u2550\u2550\u2550\u2550 -->\n @for (group of ResultGroups; track group.SourceType) {\n <div class=\"results-group\">\n <div class=\"results-group-header\" (click)=\"ToggleGroup(group.SourceType)\">\n @if (ShowSourceIcons) {\n <i [class]=\"group.Icon + ' results-group-icon'\"></i>\n }\n <span class=\"results-group-label\">{{ group.Label }}</span>\n <span class=\"results-group-count\">({{ group.TotalCount }})</span>\n <i class=\"fa-solid results-group-chevron\"\n [class.fa-chevron-down]=\"!IsGroupExpanded(group.SourceType)\"\n [class.fa-chevron-up]=\"IsGroupExpanded(group.SourceType)\"></i>\n </div>\n\n @for (result of GetVisibleResults(group); track result.ID) {\n <ng-container *ngTemplateOutlet=\"resultCardTpl; context: { $implicit: result }\"></ng-container>\n }\n\n @if (HasMoreResults(group)) {\n <button class=\"results-show-more\" (click)=\"ToggleGroup(group.SourceType)\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n Show {{ GetHiddenCount(group) }} more results\n </button>\n }\n </div>\n }\n }\n}\n\n<!-- \u2550\u2550\u2550 Shared result card template \u2550\u2550\u2550 -->\n<ng-template #resultCardTpl let-result>\n <div class=\"result-card\" [class.result-card-expanded]=\"IsExpanded(result.ID)\">\n <!-- Main row -->\n <div class=\"result-card-main\" (click)=\"ToggleExpand(result)\">\n <div class=\"result-card-icon-wrap\">\n <i [class]=\"result.EntityIcon || result.SourceIcon || 'fa-solid fa-database'\"></i>\n </div>\n <div class=\"result-card-body\">\n <div class=\"result-card-title\">{{ result.RecordName || result.Title }}</div>\n <div class=\"result-card-entity\">{{ result.EntityName }}</div>\n @if (result.Tags && result.Tags.length > 0) {\n <div class=\"result-card-tags\">\n @for (tag of result.Tags.slice(0, 5); track tag) {\n <span class=\"result-tag-chip\">{{ tag }}</span>\n }\n @if (result.Tags.length > 5) {\n <span class=\"result-tag-more\">+{{ result.Tags.length - 5 }}</span>\n }\n </div>\n }\n </div>\n @if (ShowScores) {\n <div class=\"result-card-score\">\n <div class=\"score-circle\">\n <span class=\"score-value\">{{ FormatScore(result.Score) }}</span>\n </div>\n </div>\n }\n <div class=\"result-card-actions\">\n <button class=\"result-open-btn\" (click)=\"OnOpenRecord(result, $event)\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n <button class=\"result-expand-btn\" (click)=\"ToggleExpand(result, $event)\" title=\"Expand details\">\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!IsExpanded(result.ID)\"\n [class.fa-chevron-up]=\"IsExpanded(result.ID)\"></i>\n </button>\n </div>\n </div>\n\n <!-- Expanded detail -->\n @if (IsExpanded(result.ID)) {\n <div class=\"result-card-detail\">\n @if (result.Snippet) {\n <div class=\"detail-section\">\n <span class=\"detail-label\">Preview</span>\n <p class=\"detail-snippet\">{{ result.Snippet }}</p>\n </div>\n }\n <div class=\"detail-meta\">\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>{{ result.EntityName }}</span>\n </div>\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-fingerprint\"></i>\n <span class=\"detail-record-id\">{{ result.RecordID }}</span>\n </div>\n <!-- SR-1: Show overall score consistently -->\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-signal\"></i>\n <span>Relevance: {{ FormatScore(result.Score) }}</span>\n </div>\n @if (result.ScoreBreakdown) {\n <div class=\"detail-meta-item\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n <span>\n @if (result.ScoreBreakdown.Vector) { Vector: {{ FormatScore(result.ScoreBreakdown.Vector) }} }\n @if (result.ScoreBreakdown.FullText) { FTS: {{ FormatScore(result.ScoreBreakdown.FullText) }} }\n </span>\n </div>\n }\n </div>\n @if (ShowTags && result.Tags.length > 0) {\n <div class=\"detail-tags\">\n @for (tag of result.Tags; track tag) {\n <span class=\"result-card-tag\">{{ tag }}</span>\n }\n </div>\n }\n @if (GetResolvedLinks(result).length > 0) {\n <div class=\"detail-links\">\n @for (link of GetResolvedLinks(result); track link.Value) {\n @if (link.Type === 'URL') {\n <a [href]=\"link.Value\" target=\"_blank\" class=\"detail-link\" (click)=\"$event.stopPropagation()\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n {{ TruncateUrl(link.Value) }}\n </a>\n } @else if (link.Type === 'Email') {\n <a [href]=\"'mailto:' + link.Value\" class=\"detail-link detail-link-email\" (click)=\"$event.stopPropagation()\">\n <i class=\"fa-solid fa-envelope\"></i>\n {{ link.Value }}\n </a>\n }\n }\n </div>\n }\n <div class=\"detail-actions\">\n <button class=\"detail-open-btn\" (click)=\"OnOpenRecord(result, $event)\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Record\n </button>\n <button class=\"detail-similar-btn\" (click)=\"OnMoreLikeThis(result, $event)\">\n <i class=\"fa-solid fa-shuffle\"></i> See Similar Items\n </button>\n </div>\n </div>\n }\n </div>\n</ng-template>\n", styles: ["/* Search Results Component */\n\n:host {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n}\n\n.results-scroll-area {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.results-loading {\n display: flex;\n justify-content: center;\n padding: 3rem 1rem;\n}\n\n.results-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 1rem;\n gap: 0.5rem;\n}\n\n.results-empty-icon {\n font-size: 2rem;\n color: var(--mj-text-muted);\n margin-bottom: 0.5rem;\n}\n\n.results-empty-text {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.results-summary {\n padding: 0.75rem 1rem;\n color: var(--mj-text-secondary);\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-summary-time {\n color: var(--mj-text-muted);\n}\n\n/* Group Header */\n.results-group {\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.results-group-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.results-group-header:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.results-group-icon {\n color: var(--mj-brand-primary);\n font-size: 0.85rem;\n}\n\n.results-group-label {\n font-weight: 600;\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.results-group-count {\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}\n\n.results-group-chevron {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n transition: transform 0.2s ease;\n}\n\n/* Result Card \u2014 expandable */\n.result-card {\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n margin: 0 0 0.35rem 1.5rem;\n overflow: hidden;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.result-card:hover {\n border-color: var(--mj-border-default);\n}\n\n.result-card-expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.result-card-main {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.65rem 0.85rem;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.result-card-main:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.result-card-icon-wrap {\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 0.8rem;\n flex-shrink: 0;\n}\n\n.result-card-body {\n flex: 1;\n min-width: 0;\n}\n\n.result-card-title {\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: 0.85rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.result-card-entity {\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.result-tag-chip {\n display: inline-block;\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 0.65rem;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-border-default));\n}\n\n.result-tag-more {\n display: inline-block;\n padding: 1px 6px;\n font-size: 0.6rem;\n color: var(--mj-text-muted);\n}\n\n.result-card-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.result-open-btn,\n.result-expand-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.result-open-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.result-expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n/* Expanded detail panel */\n.result-card-detail {\n padding: 0.75rem 1rem 0.85rem 3.5rem;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n}\n\n.detail-section {\n margin-bottom: 0.65rem;\n}\n\n.detail-label {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin-bottom: 0.25rem;\n display: block;\n}\n\n.detail-snippet {\n margin: 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.detail-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n margin-bottom: 0.65rem;\n}\n\n.detail-meta-item {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.detail-meta-item i {\n font-size: 0.65rem;\n}\n\n.detail-record-id {\n font-family: monospace;\n font-size: 0.7rem;\n max-width: 180px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 0.65rem;\n}\n\n.detail-links {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: 8px;\n}\n\n.detail-link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 0.72rem;\n color: var(--mj-text-link);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-border-default));\n text-decoration: none;\n transition: background 0.15s ease;\n}\n\n.detail-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n text-decoration: underline;\n}\n\n.detail-link i {\n font-size: 0.6rem;\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n}\n\n.detail-open-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.78rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.detail-open-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.detail-similar-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 0.78rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.detail-similar-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.result-card-snippet {\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\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-card-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n margin-top: 0.35rem;\n}\n\n.result-card-tag {\n display: inline-block;\n padding: 0.1rem 0.4rem;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n font-size: 0.7rem;\n}\n\n.result-card-tag-more {\n color: var(--mj-brand-primary);\n}\n\n.result-card-score {\n flex-shrink: 0;\n margin-top: 0.2rem;\n}\n\n.score-circle {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.score-value {\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n/* Show More Button */\n.results-show-more {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.5rem 1rem;\n border: none;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 0.82rem;\n cursor: pointer;\n justify-content: center;\n transition: background 0.1s ease;\n}\n\n.results-show-more:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Google-style Pagination \u2014 pinned at bottom */\n.results-pager {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 0.75rem 0;\n flex-shrink: 0;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.pager-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0 6px;\n}\n\n.pager-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.pager-btn:disabled {\n opacity: 0.35;\n cursor: default;\n}\n\n.pager-active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.pager-active:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.pager-ellipsis {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n color: var(--mj-text-muted);\n font-size: 0.8rem;\n}\n\n.pager-prev i,\n.pager-next i {\n font-size: 0.7rem;\n}\n"] }]
|
|
356
681
|
}], null, { ResultGroups: [{
|
|
357
682
|
type: Input
|
|
683
|
+
}], FlatResults: [{
|
|
684
|
+
type: Input
|
|
685
|
+
}], DisplayMode: [{
|
|
686
|
+
type: Input
|
|
358
687
|
}], IsLoading: [{
|
|
359
688
|
type: Input
|
|
360
689
|
}], TotalCount: [{
|
|
@@ -363,6 +692,10 @@ export class SearchResultsComponent {
|
|
|
363
692
|
type: Input
|
|
364
693
|
}], MaxPerGroup: [{
|
|
365
694
|
type: Input
|
|
695
|
+
}], PageSize: [{
|
|
696
|
+
type: Input
|
|
697
|
+
}], ShowSummary: [{
|
|
698
|
+
type: Input
|
|
366
699
|
}], ShowScores: [{
|
|
367
700
|
type: Input
|
|
368
701
|
}], ShowTags: [{
|
|
@@ -373,6 +706,8 @@ export class SearchResultsComponent {
|
|
|
373
706
|
type: Output
|
|
374
707
|
}], OpenRecordRequested: [{
|
|
375
708
|
type: Output
|
|
709
|
+
}], MoreLikeThisRequested: [{
|
|
710
|
+
type: Output
|
|
376
711
|
}] }); })();
|
|
377
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchResultsComponent, { className: "SearchResultsComponent", filePath: "src/lib/search-results.component.ts", lineNumber:
|
|
712
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchResultsComponent, { className: "SearchResultsComponent", filePath: "src/lib/search-results.component.ts", lineNumber: 26 }); })();
|
|
378
713
|
//# sourceMappingURL=search-results.component.js.map
|