@memberjunction/ng-search 5.23.0 → 5.25.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-types.test.js +6 -2
- package/dist/__tests__/search-types.test.js.map +1 -1
- package/dist/__tests__/search.service.test.js +167 -13
- package/dist/__tests__/search.service.test.js.map +1 -1
- package/dist/lib/module.d.ts +7 -4
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/module.js +19 -4
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/search-composite.component.d.ts +79 -0
- package/dist/lib/search-composite.component.d.ts.map +1 -0
- package/dist/lib/search-composite.component.js +258 -0
- package/dist/lib/search-composite.component.js.map +1 -0
- package/dist/lib/search-filter.component.d.ts +19 -1
- package/dist/lib/search-filter.component.d.ts.map +1 -1
- package/dist/lib/search-filter.component.js +195 -44
- package/dist/lib/search-filter.component.js.map +1 -1
- package/dist/lib/search-input.component.d.ts +61 -0
- package/dist/lib/search-input.component.d.ts.map +1 -0
- package/dist/lib/search-input.component.js +192 -0
- package/dist/lib/search-input.component.js.map +1 -0
- package/dist/lib/search-overlay.component.js +2 -2
- package/dist/lib/search-results.component.d.ts +59 -7
- package/dist/lib/search-results.component.d.ts.map +1 -1
- package/dist/lib/search-results.component.js +530 -176
- package/dist/lib/search-results.component.js.map +1 -1
- package/dist/lib/search-suggest.component.d.ts +95 -0
- package/dist/lib/search-suggest.component.d.ts.map +1 -0
- package/dist/lib/search-suggest.component.js +491 -0
- package/dist/lib/search-suggest.component.js.map +1 -0
- package/dist/lib/search-types.d.ts +29 -1
- 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 +27 -5
- package/dist/lib/search.service.d.ts.map +1 -1
- package/dist/lib/search.service.js +222 -91
- package/dist/lib/search.service.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +6 -4
|
@@ -6,273 +6,510 @@
|
|
|
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));
|
|
39
134
|
} }
|
|
40
|
-
function
|
|
41
|
-
|
|
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_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
196
|
+
i0.ɵɵelement(0, "span", 40);
|
|
197
|
+
} if (rf & 2) {
|
|
198
|
+
const tag_r13 = ctx.$implicit;
|
|
199
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
200
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.HighlightMatch(tag_r13), i0.ɵɵsanitizeHtml);
|
|
201
|
+
} }
|
|
202
|
+
function SearchResultsComponent_ng_template_3_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
204
|
+
i0.ɵɵtext(1);
|
|
205
|
+
i0.ɵɵelementEnd();
|
|
206
|
+
} if (rf & 2) {
|
|
207
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
208
|
+
i0.ɵɵadvance();
|
|
209
|
+
i0.ɵɵtextInterpolate1("+", result_r12.Tags.length - 5);
|
|
210
|
+
} }
|
|
211
|
+
function SearchResultsComponent_ng_template_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
212
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
213
|
+
i0.ɵɵrepeaterCreate(1, SearchResultsComponent_ng_template_3_Conditional_7_For_2_Template, 1, 1, "span", 40, i0.ɵɵrepeaterTrackByIdentity);
|
|
214
|
+
i0.ɵɵconditionalCreate(3, SearchResultsComponent_ng_template_3_Conditional_7_Conditional_3_Template, 2, 1, "span", 41);
|
|
215
|
+
i0.ɵɵelementEnd();
|
|
216
|
+
} if (rf & 2) {
|
|
217
|
+
const result_r12 = i0.ɵɵnextContext().$implicit;
|
|
218
|
+
i0.ɵɵadvance();
|
|
219
|
+
i0.ɵɵrepeater(result_r12.Tags.slice(0, 5));
|
|
220
|
+
i0.ɵɵadvance(2);
|
|
221
|
+
i0.ɵɵconditional(result_r12.Tags.length > 5 ? 3 : -1);
|
|
222
|
+
} }
|
|
223
|
+
function SearchResultsComponent_ng_template_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
224
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 42)(2, "span", 43);
|
|
42
225
|
i0.ɵɵtext(3);
|
|
43
226
|
i0.ɵɵelementEnd()()();
|
|
44
227
|
} if (rf & 2) {
|
|
45
|
-
const
|
|
46
|
-
const ctx_r0 = i0.ɵɵnextContext(
|
|
47
|
-
i0.ɵɵadvance(
|
|
48
|
-
i0.ɵɵ
|
|
228
|
+
const result_r12 = i0.ɵɵnextContext().$implicit;
|
|
229
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
230
|
+
i0.ɵɵadvance();
|
|
231
|
+
i0.ɵɵclassProp("score-high", result_r12.Score >= 0.4)("score-medium", result_r12.Score >= 0.15 && result_r12.Score < 0.4)("score-low", result_r12.Score < 0.15);
|
|
232
|
+
i0.ɵɵadvance(2);
|
|
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_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "span", 57);
|
|
52
237
|
i0.ɵɵtext(2, "Preview");
|
|
53
238
|
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵ
|
|
55
|
-
i0.ɵɵ
|
|
56
|
-
i0.ɵɵelementEnd()();
|
|
239
|
+
i0.ɵɵelement(3, "p", 58);
|
|
240
|
+
i0.ɵɵelementEnd();
|
|
57
241
|
} if (rf & 2) {
|
|
58
|
-
const
|
|
59
|
-
i0.ɵɵ
|
|
60
|
-
i0.ɵɵ
|
|
242
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
243
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
244
|
+
i0.ɵɵadvance(3);
|
|
245
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.HighlightMatch(result_r12.Snippet), i0.ɵɵsanitizeHtml);
|
|
61
246
|
} }
|
|
62
|
-
function
|
|
247
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_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_14_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_14_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
262
|
+
i0.ɵɵelementStart(0, "div", 46);
|
|
263
|
+
i0.ɵɵelement(1, "i", 59);
|
|
77
264
|
i0.ɵɵelementStart(2, "span");
|
|
78
|
-
i0.ɵɵconditionalCreate(3,
|
|
79
|
-
i0.ɵɵconditionalCreate(4,
|
|
265
|
+
i0.ɵɵconditionalCreate(3, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_15_Conditional_3_Template, 1, 1);
|
|
266
|
+
i0.ɵɵconditionalCreate(4, SearchResultsComponent_ng_template_3_Conditional_14_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.ɵɵ
|
|
90
|
-
|
|
275
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
276
|
+
i0.ɵɵelement(0, "span", 60);
|
|
277
|
+
} if (rf & 2) {
|
|
278
|
+
const tag_r15 = ctx.$implicit;
|
|
279
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
280
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.HighlightMatch(tag_r15), i0.ɵɵsanitizeHtml);
|
|
281
|
+
} }
|
|
282
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
283
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
284
|
+
i0.ɵɵrepeaterCreate(1, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_16_For_2_Template, 1, 1, "span", 60, i0.ɵɵrepeaterTrackByIdentity);
|
|
91
285
|
i0.ɵɵelementEnd();
|
|
92
286
|
} if (rf & 2) {
|
|
93
|
-
const
|
|
287
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
94
288
|
i0.ɵɵadvance();
|
|
95
|
-
i0.ɵɵ
|
|
289
|
+
i0.ɵɵrepeater(result_r12.Tags);
|
|
290
|
+
} }
|
|
291
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
293
|
+
i0.ɵɵelementStart(0, "a", 63);
|
|
294
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Conditional_0_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
295
|
+
i0.ɵɵelement(1, "i", 64);
|
|
296
|
+
i0.ɵɵtext(2);
|
|
297
|
+
i0.ɵɵelementEnd();
|
|
298
|
+
} if (rf & 2) {
|
|
299
|
+
const link_r17 = i0.ɵɵnextContext().$implicit;
|
|
300
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
301
|
+
i0.ɵɵproperty("href", link_r17.Value, i0.ɵɵsanitizeUrl);
|
|
302
|
+
i0.ɵɵadvance(2);
|
|
303
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.TruncateUrl(link_r17.Value), " ");
|
|
304
|
+
} }
|
|
305
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
306
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
307
|
+
i0.ɵɵelementStart(0, "a", 65);
|
|
308
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Conditional_1_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r18); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
309
|
+
i0.ɵɵelement(1, "i", 66);
|
|
310
|
+
i0.ɵɵtext(2);
|
|
311
|
+
i0.ɵɵelementEnd();
|
|
312
|
+
} if (rf & 2) {
|
|
313
|
+
const link_r17 = i0.ɵɵnextContext().$implicit;
|
|
314
|
+
i0.ɵɵproperty("href", "mailto:" + link_r17.Value, i0.ɵɵsanitizeUrl);
|
|
315
|
+
i0.ɵɵadvance(2);
|
|
316
|
+
i0.ɵɵtextInterpolate1(" ", link_r17.Value, " ");
|
|
317
|
+
} }
|
|
318
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
319
|
+
i0.ɵɵconditionalCreate(0, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Conditional_0_Template, 3, 2, "a", 61)(1, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Conditional_1_Template, 3, 2, "a", 62);
|
|
320
|
+
} if (rf & 2) {
|
|
321
|
+
const link_r17 = ctx.$implicit;
|
|
322
|
+
i0.ɵɵconditional(link_r17.Type === "URL" ? 0 : link_r17.Type === "Email" ? 1 : -1);
|
|
96
323
|
} }
|
|
97
|
-
function
|
|
98
|
-
i0.ɵɵelementStart(0, "div",
|
|
99
|
-
i0.ɵɵrepeaterCreate(1,
|
|
324
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
325
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
326
|
+
i0.ɵɵrepeaterCreate(1, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_For_2_Template, 2, 1, null, null, _forTrack2);
|
|
100
327
|
i0.ɵɵelementEnd();
|
|
101
328
|
} if (rf & 2) {
|
|
102
|
-
const
|
|
329
|
+
const result_r12 = i0.ɵɵnextContext(2).$implicit;
|
|
330
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
103
331
|
i0.ɵɵadvance();
|
|
104
|
-
i0.ɵɵrepeater(
|
|
105
|
-
} }
|
|
106
|
-
function
|
|
107
|
-
|
|
108
|
-
i0.ɵɵ
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
i0.ɵɵelement(
|
|
332
|
+
i0.ɵɵrepeater(ctx_r0.GetResolvedLinks(result_r12));
|
|
333
|
+
} }
|
|
334
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
335
|
+
i0.ɵɵelement(0, "i", 67);
|
|
336
|
+
i0.ɵɵtext(1, " Open File ");
|
|
337
|
+
} }
|
|
338
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
339
|
+
i0.ɵɵelement(0, "i", 64);
|
|
340
|
+
i0.ɵɵtext(1, " Open Record ");
|
|
341
|
+
} }
|
|
342
|
+
function SearchResultsComponent_ng_template_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
343
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
344
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
345
|
+
i0.ɵɵconditionalCreate(1, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_1_Template, 4, 1, "div", 44);
|
|
346
|
+
i0.ɵɵelementStart(2, "div", 45)(3, "div", 46);
|
|
347
|
+
i0.ɵɵelement(4, "i", 47);
|
|
112
348
|
i0.ɵɵelementStart(5, "span");
|
|
113
349
|
i0.ɵɵtext(6);
|
|
114
350
|
i0.ɵɵelementEnd()();
|
|
115
|
-
i0.ɵɵelementStart(7, "div",
|
|
116
|
-
i0.ɵɵelement(8, "i",
|
|
117
|
-
i0.ɵɵelementStart(9, "span",
|
|
351
|
+
i0.ɵɵelementStart(7, "div", 46);
|
|
352
|
+
i0.ɵɵelement(8, "i", 48);
|
|
353
|
+
i0.ɵɵelementStart(9, "span", 49);
|
|
118
354
|
i0.ɵɵtext(10);
|
|
119
355
|
i0.ɵɵelementEnd()();
|
|
120
|
-
i0.ɵɵelementStart(11, "div",
|
|
121
|
-
i0.ɵɵelement(12, "i",
|
|
356
|
+
i0.ɵɵelementStart(11, "div", 46);
|
|
357
|
+
i0.ɵɵelement(12, "i", 50);
|
|
122
358
|
i0.ɵɵelementStart(13, "span");
|
|
123
359
|
i0.ɵɵtext(14);
|
|
124
360
|
i0.ɵɵelementEnd()();
|
|
125
|
-
i0.ɵɵconditionalCreate(15,
|
|
361
|
+
i0.ɵɵconditionalCreate(15, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_15_Template, 5, 2, "div", 46);
|
|
362
|
+
i0.ɵɵelementEnd();
|
|
363
|
+
i0.ɵɵconditionalCreate(16, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_16_Template, 3, 0, "div", 51);
|
|
364
|
+
i0.ɵɵconditionalCreate(17, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_17_Template, 3, 0, "div", 52);
|
|
365
|
+
i0.ɵɵelementStart(18, "div", 53)(19, "button", 54);
|
|
366
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_14_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)); });
|
|
367
|
+
i0.ɵɵconditionalCreate(20, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_20_Template, 2, 0)(21, SearchResultsComponent_ng_template_3_Conditional_14_Conditional_21_Template, 2, 0);
|
|
126
368
|
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵ
|
|
128
|
-
i0.ɵɵ
|
|
129
|
-
i0.ɵɵ
|
|
130
|
-
i0.ɵɵ
|
|
131
|
-
i0.ɵɵtext(20, " Open Record ");
|
|
369
|
+
i0.ɵɵelementStart(22, "button", 55);
|
|
370
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Conditional_14_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)); });
|
|
371
|
+
i0.ɵɵelement(23, "i", 56);
|
|
372
|
+
i0.ɵɵtext(24, " See Similar Items ");
|
|
132
373
|
i0.ɵɵelementEnd()()();
|
|
133
374
|
} if (rf & 2) {
|
|
134
|
-
const
|
|
135
|
-
const ctx_r0 = i0.ɵɵnextContext(
|
|
375
|
+
const result_r12 = i0.ɵɵnextContext().$implicit;
|
|
376
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
136
377
|
i0.ɵɵadvance();
|
|
137
|
-
i0.ɵɵconditional(
|
|
378
|
+
i0.ɵɵconditional(result_r12.Snippet ? 1 : -1);
|
|
138
379
|
i0.ɵɵadvance(5);
|
|
139
|
-
i0.ɵɵtextInterpolate(
|
|
380
|
+
i0.ɵɵtextInterpolate(result_r12.EntityName);
|
|
140
381
|
i0.ɵɵadvance(4);
|
|
141
|
-
i0.ɵɵtextInterpolate(
|
|
382
|
+
i0.ɵɵtextInterpolate(result_r12.RecordID);
|
|
142
383
|
i0.ɵɵadvance(4);
|
|
143
|
-
i0.ɵɵtextInterpolate1("",
|
|
384
|
+
i0.ɵɵtextInterpolate1("Relevance: ", ctx_r0.FormatScore(result_r12.Score));
|
|
385
|
+
i0.ɵɵadvance();
|
|
386
|
+
i0.ɵɵconditional(result_r12.ScoreBreakdown ? 15 : -1);
|
|
144
387
|
i0.ɵɵadvance();
|
|
145
|
-
i0.ɵɵconditional(
|
|
388
|
+
i0.ɵɵconditional(ctx_r0.ShowTags && result_r12.Tags.length > 0 ? 16 : -1);
|
|
146
389
|
i0.ɵɵadvance();
|
|
147
|
-
i0.ɵɵconditional(ctx_r0.
|
|
390
|
+
i0.ɵɵconditional(ctx_r0.GetResolvedLinks(result_r12).length > 0 ? 17 : -1);
|
|
391
|
+
i0.ɵɵadvance(3);
|
|
392
|
+
i0.ɵɵconditional(result_r12.ResultType === "storage-file" ? 20 : 21);
|
|
148
393
|
} }
|
|
149
|
-
function
|
|
150
|
-
const
|
|
151
|
-
i0.ɵɵelementStart(0, "div",
|
|
152
|
-
i0.ɵɵlistener("click", function
|
|
153
|
-
i0.ɵɵelementStart(2, "div",
|
|
394
|
+
function SearchResultsComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
395
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
396
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "div", 28);
|
|
397
|
+
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)); });
|
|
398
|
+
i0.ɵɵelementStart(2, "div", 29);
|
|
154
399
|
i0.ɵɵelement(3, "i");
|
|
155
400
|
i0.ɵɵelementEnd();
|
|
156
|
-
i0.ɵɵelementStart(4, "div",
|
|
157
|
-
i0.ɵɵ
|
|
401
|
+
i0.ɵɵelementStart(4, "div", 30);
|
|
402
|
+
i0.ɵɵelement(5, "div", 31)(6, "div", 32);
|
|
403
|
+
i0.ɵɵconditionalCreate(7, SearchResultsComponent_ng_template_3_Conditional_7_Template, 4, 1, "div", 33);
|
|
158
404
|
i0.ɵɵelementEnd();
|
|
159
|
-
i0.ɵɵ
|
|
160
|
-
i0.ɵɵ
|
|
161
|
-
i0.ɵɵ
|
|
162
|
-
i0.ɵɵ
|
|
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);
|
|
405
|
+
i0.ɵɵconditionalCreate(8, SearchResultsComponent_ng_template_3_Conditional_8_Template, 4, 7, "div", 34);
|
|
406
|
+
i0.ɵɵelementStart(9, "div", 35)(10, "button", 36);
|
|
407
|
+
i0.ɵɵlistener("click", function SearchResultsComponent_ng_template_3_Template_button_click_10_listener($event) { const result_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnOpenRecord(result_r12, $event)); });
|
|
408
|
+
i0.ɵɵelement(11, "i");
|
|
166
409
|
i0.ɵɵelementEnd();
|
|
167
|
-
i0.ɵɵelementStart(
|
|
168
|
-
i0.ɵɵlistener("click", function
|
|
169
|
-
i0.ɵɵelement(
|
|
410
|
+
i0.ɵɵelementStart(12, "button", 37);
|
|
411
|
+
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.ToggleExpand(result_r12, $event)); });
|
|
412
|
+
i0.ɵɵelement(13, "i", 38);
|
|
170
413
|
i0.ɵɵelementEnd()()();
|
|
171
|
-
i0.ɵɵconditionalCreate(
|
|
414
|
+
i0.ɵɵconditionalCreate(14, SearchResultsComponent_ng_template_3_Conditional_14_Template, 25, 8, "div", 39);
|
|
172
415
|
i0.ɵɵelementEnd();
|
|
173
416
|
} if (rf & 2) {
|
|
174
|
-
const
|
|
175
|
-
const ctx_r0 = i0.ɵɵnextContext(
|
|
176
|
-
i0.ɵɵclassProp("result-card-expanded", ctx_r0.IsExpanded(
|
|
177
|
-
i0.ɵɵadvance(3);
|
|
178
|
-
i0.ɵɵclassMap(result_r5.EntityIcon || result_r5.SourceIcon || "fa-solid fa-database");
|
|
417
|
+
const result_r12 = ctx.$implicit;
|
|
418
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
419
|
+
i0.ɵɵclassProp("result-card-expanded", ctx_r0.IsExpanded(result_r12.ID));
|
|
179
420
|
i0.ɵɵadvance(3);
|
|
180
|
-
i0.ɵɵ
|
|
421
|
+
i0.ɵɵclassMap(result_r12.EntityIcon || result_r12.SourceIcon || "fa-solid fa-database");
|
|
181
422
|
i0.ɵɵadvance(2);
|
|
182
|
-
i0.ɵɵ
|
|
423
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.HighlightMatch(result_r12.RecordName || result_r12.Title), i0.ɵɵsanitizeHtml);
|
|
183
424
|
i0.ɵɵadvance();
|
|
184
|
-
i0.ɵɵ
|
|
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));
|
|
425
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.HighlightMatch(result_r12.EntityName), i0.ɵɵsanitizeHtml);
|
|
187
426
|
i0.ɵɵadvance();
|
|
188
|
-
i0.ɵɵconditional(
|
|
189
|
-
} }
|
|
190
|
-
function SearchResultsComponent_Conditional_2_For_5_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
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));
|
|
427
|
+
i0.ɵɵconditional(result_r12.Tags && result_r12.Tags.length > 0 ? 7 : -1);
|
|
230
428
|
i0.ɵɵadvance();
|
|
231
|
-
i0.ɵɵ
|
|
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();
|
|
429
|
+
i0.ɵɵconditional(ctx_r0.ShowScores ? 8 : -1);
|
|
244
430
|
i0.ɵɵadvance(2);
|
|
245
|
-
i0.ɵɵ
|
|
431
|
+
i0.ɵɵproperty("title", result_r12.ResultType === "storage-file" ? "Open file" : "Open record");
|
|
246
432
|
i0.ɵɵadvance();
|
|
247
|
-
i0.ɵɵ
|
|
433
|
+
i0.ɵɵclassMap(result_r12.ResultType === "storage-file" ? "fa-solid fa-external-link" : "fa-solid fa-arrow-up-right-from-square");
|
|
434
|
+
i0.ɵɵadvance(2);
|
|
435
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r0.IsExpanded(result_r12.ID))("fa-chevron-up", ctx_r0.IsExpanded(result_r12.ID));
|
|
248
436
|
i0.ɵɵadvance();
|
|
249
|
-
i0.ɵɵ
|
|
437
|
+
i0.ɵɵconditional(ctx_r0.IsExpanded(result_r12.ID) ? 14 : -1);
|
|
250
438
|
} }
|
|
251
439
|
export class SearchResultsComponent {
|
|
252
440
|
cdr = inject(ChangeDetectorRef);
|
|
253
|
-
/** Grouped search results to display */
|
|
441
|
+
/** Grouped search results to display (used when DisplayMode is 'grouped') */
|
|
254
442
|
ResultGroups = [];
|
|
443
|
+
/** Flat list of all results sorted by score (used when DisplayMode is 'flat') */
|
|
444
|
+
FlatResults = [];
|
|
445
|
+
/** Display mode: 'flat' for blended list sorted by score, 'grouped' for source-type groups */
|
|
446
|
+
DisplayMode = 'flat';
|
|
255
447
|
/** Whether results are currently loading */
|
|
256
448
|
IsLoading = false;
|
|
257
449
|
/** Total result count */
|
|
258
450
|
TotalCount = 0;
|
|
259
451
|
/** Elapsed search time in ms */
|
|
260
452
|
ElapsedMs = 0;
|
|
261
|
-
/** Maximum results per group before "Show more" */
|
|
453
|
+
/** Maximum results per group before "Show more" (grouped mode only) */
|
|
262
454
|
MaxPerGroup = 5;
|
|
455
|
+
/** Results per page in flat mode */
|
|
456
|
+
PageSize = 10;
|
|
457
|
+
/** Whether to show the results summary line (count + time). Set false when parent provides its own header. */
|
|
458
|
+
ShowSummary = true;
|
|
263
459
|
/** Whether to show score badges */
|
|
264
460
|
ShowScores = true;
|
|
265
461
|
/** Whether to show tags */
|
|
266
462
|
ShowTags = true;
|
|
267
463
|
/** Whether to show source type icons */
|
|
268
464
|
ShowSourceIcons = true;
|
|
465
|
+
/** Text to highlight within result cards (e.g. from a client-side filter) */
|
|
466
|
+
HighlightText = '';
|
|
269
467
|
ResultSelected = new EventEmitter();
|
|
270
468
|
/** Emitted when user clicks "Open Record" — parent handles navigation */
|
|
271
469
|
OpenRecordRequested = new EventEmitter();
|
|
470
|
+
/** Emitted when user clicks "See Similar Items" — parent runs a "more like this" search */
|
|
471
|
+
MoreLikeThisRequested = new EventEmitter();
|
|
472
|
+
/** Current page (1-based) for flat mode pagination */
|
|
473
|
+
CurrentPage = 1;
|
|
272
474
|
/** Tracks which groups are expanded */
|
|
273
475
|
ExpandedGroups = new Set();
|
|
274
476
|
/** Set of expanded result card IDs — multiple can be open simultaneously */
|
|
275
477
|
ExpandedResultIDs = new Set();
|
|
478
|
+
// ── Flat mode pagination ──
|
|
479
|
+
/** Get results for the current page in flat mode */
|
|
480
|
+
get PagedResults() {
|
|
481
|
+
const start = (this.CurrentPage - 1) * this.PageSize;
|
|
482
|
+
return this.FlatResults.slice(start, start + this.PageSize);
|
|
483
|
+
}
|
|
484
|
+
/** Total number of pages */
|
|
485
|
+
get TotalPages() {
|
|
486
|
+
return Math.ceil(this.FlatResults.length / this.PageSize);
|
|
487
|
+
}
|
|
488
|
+
/** Page numbers to display in the pager */
|
|
489
|
+
get PageNumbers() {
|
|
490
|
+
const total = this.TotalPages;
|
|
491
|
+
if (total <= 7)
|
|
492
|
+
return Array.from({ length: total }, (_, i) => i + 1);
|
|
493
|
+
const pages = [1];
|
|
494
|
+
const start = Math.max(2, this.CurrentPage - 2);
|
|
495
|
+
const end = Math.min(total - 1, this.CurrentPage + 2);
|
|
496
|
+
if (start > 2)
|
|
497
|
+
pages.push(-1); // ellipsis marker
|
|
498
|
+
for (let i = start; i <= end; i++)
|
|
499
|
+
pages.push(i);
|
|
500
|
+
if (end < total - 1)
|
|
501
|
+
pages.push(-1); // ellipsis marker
|
|
502
|
+
pages.push(total);
|
|
503
|
+
return pages;
|
|
504
|
+
}
|
|
505
|
+
/** Navigate to a specific page */
|
|
506
|
+
GoToPage(page) {
|
|
507
|
+
if (page < 1 || page > this.TotalPages)
|
|
508
|
+
return;
|
|
509
|
+
this.CurrentPage = page;
|
|
510
|
+
this.cdr.detectChanges();
|
|
511
|
+
}
|
|
512
|
+
// ── Grouped mode ──
|
|
276
513
|
/** Toggle group expansion */
|
|
277
514
|
ToggleGroup(sourceType) {
|
|
278
515
|
if (this.ExpandedGroups.has(sourceType)) {
|
|
@@ -328,10 +565,23 @@ export class SearchResultsComponent {
|
|
|
328
565
|
/** Handle "Open Record" button click */
|
|
329
566
|
OnOpenRecord(result, event) {
|
|
330
567
|
event.stopPropagation();
|
|
331
|
-
this.OpenRecordRequested.emit(
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
568
|
+
this.OpenRecordRequested.emit(result);
|
|
569
|
+
}
|
|
570
|
+
/** Handle "See Similar Items" button click — emits the result for a "more like this" search */
|
|
571
|
+
OnMoreLikeThis(result, event) {
|
|
572
|
+
event.stopPropagation();
|
|
573
|
+
this.MoreLikeThisRequested.emit(result);
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* Wrap substrings matching HighlightText in <mark> tags for visual emphasis.
|
|
577
|
+
* The input is regex-escaped so user text is treated as a literal string.
|
|
578
|
+
*/
|
|
579
|
+
HighlightMatch(text) {
|
|
580
|
+
if (!this.HighlightText || !text)
|
|
581
|
+
return text;
|
|
582
|
+
const escaped = this.HighlightText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
583
|
+
const regex = new RegExp(`(${escaped})`, 'gi');
|
|
584
|
+
return text.replace(regex, '<mark class="search-highlight">$1</mark>');
|
|
335
585
|
}
|
|
336
586
|
/** Format a score as a percentage */
|
|
337
587
|
FormatScore(score) {
|
|
@@ -343,18 +593,114 @@ export class SearchResultsComponent {
|
|
|
343
593
|
return `${ms}ms`;
|
|
344
594
|
return `${(ms / 1000).toFixed(1)}s`;
|
|
345
595
|
}
|
|
596
|
+
/** Resolved link cache per result ID */
|
|
597
|
+
resolvedLinksCache = new Map();
|
|
598
|
+
/**
|
|
599
|
+
* Resolve URL and Email fields from the result's RawMetadata using entity ExtendedType metadata.
|
|
600
|
+
* Returns clickable link entries with proper type classification.
|
|
601
|
+
*/
|
|
602
|
+
GetResolvedLinks(result) {
|
|
603
|
+
if (this.resolvedLinksCache.has(result.ID)) {
|
|
604
|
+
return this.resolvedLinksCache.get(result.ID);
|
|
605
|
+
}
|
|
606
|
+
const links = [];
|
|
607
|
+
if (result.RawMetadata) {
|
|
608
|
+
try {
|
|
609
|
+
const meta = JSON.parse(result.RawMetadata);
|
|
610
|
+
const linkFields = this.GetLinkFields(result.EntityName);
|
|
611
|
+
for (const field of linkFields) {
|
|
612
|
+
const value = meta[field.Name];
|
|
613
|
+
if (value && typeof value === 'string' && value.trim().length > 0) {
|
|
614
|
+
links.push({
|
|
615
|
+
Value: value,
|
|
616
|
+
Label: field.DisplayName,
|
|
617
|
+
Type: field.Type
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
catch { /* ignore parse errors */ }
|
|
623
|
+
}
|
|
624
|
+
// Fallback: extract URLs from snippet if no ExtendedType fields found
|
|
625
|
+
if (links.length === 0) {
|
|
626
|
+
const urls = this.ExtractUrls(result.Snippet);
|
|
627
|
+
for (const url of urls) {
|
|
628
|
+
links.push({ Value: url, Label: '', Type: 'URL' });
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
this.resolvedLinksCache.set(result.ID, links);
|
|
632
|
+
return links;
|
|
633
|
+
}
|
|
634
|
+
/** Extract URLs from snippet text */
|
|
635
|
+
ExtractUrls(snippet) {
|
|
636
|
+
if (!snippet)
|
|
637
|
+
return [];
|
|
638
|
+
const urlRegex = /https?:\/\/[^\s,;)>"']+/g;
|
|
639
|
+
const matches = snippet.match(urlRegex);
|
|
640
|
+
return matches ? [...new Set(matches)] : [];
|
|
641
|
+
}
|
|
642
|
+
/** Truncate a URL for display */
|
|
643
|
+
TruncateUrl(url) {
|
|
644
|
+
try {
|
|
645
|
+
const parsed = new URL(url);
|
|
646
|
+
const path = parsed.pathname.length > 30
|
|
647
|
+
? parsed.pathname.substring(0, 30) + '...'
|
|
648
|
+
: parsed.pathname;
|
|
649
|
+
return parsed.hostname + path;
|
|
650
|
+
}
|
|
651
|
+
catch {
|
|
652
|
+
return url.length > 50 ? url.substring(0, 50) + '...' : url;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
/** Cache of URL/Email field info per entity name */
|
|
656
|
+
linkFieldsCache = new Map();
|
|
657
|
+
/**
|
|
658
|
+
* Get URL and Email fields for an entity using ExtendedType from entity metadata.
|
|
659
|
+
* Returns fields with ExtendedType='URL' or ExtendedType='Email'.
|
|
660
|
+
*/
|
|
661
|
+
GetLinkFields(entityName) {
|
|
662
|
+
if (this.linkFieldsCache.has(entityName)) {
|
|
663
|
+
return this.linkFieldsCache.get(entityName);
|
|
664
|
+
}
|
|
665
|
+
try {
|
|
666
|
+
const md = new Metadata();
|
|
667
|
+
const entityInfo = md.Entities.find(e => e.Name === entityName);
|
|
668
|
+
if (!entityInfo) {
|
|
669
|
+
this.linkFieldsCache.set(entityName, []);
|
|
670
|
+
return [];
|
|
671
|
+
}
|
|
672
|
+
const linkFields = entityInfo.Fields
|
|
673
|
+
.filter(f => f.ExtendedType === 'URL' || f.ExtendedType === 'Email')
|
|
674
|
+
.map(f => ({
|
|
675
|
+
Name: f.Name,
|
|
676
|
+
DisplayName: f.DisplayNameOrName,
|
|
677
|
+
Type: f.ExtendedType
|
|
678
|
+
}));
|
|
679
|
+
this.linkFieldsCache.set(entityName, linkFields);
|
|
680
|
+
return linkFields;
|
|
681
|
+
}
|
|
682
|
+
catch {
|
|
683
|
+
this.linkFieldsCache.set(entityName, []);
|
|
684
|
+
return [];
|
|
685
|
+
}
|
|
686
|
+
}
|
|
346
687
|
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",
|
|
688
|
+
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", HighlightText: "HighlightText" }, 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", 3, "innerHTML"], [1, "result-card-entity", 3, "innerHTML"], [1, "result-card-tags"], [1, "result-card-score"], [1, "result-card-actions"], [1, "result-open-btn", 3, "click", "title"], ["title", "Expand details", 1, "result-expand-btn", 3, "click"], [1, "fa-solid"], [1, "result-card-detail"], [1, "result-tag-chip", 3, "innerHTML"], [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", 3, "innerHTML"], [1, "fa-solid", "fa-chart-bar"], [1, "result-card-tag", 3, "innerHTML"], ["target", "_blank", 1, "detail-link", 3, "href"], [1, "detail-link", "detail-link-email", 3, "href"], ["target", "_blank", 1, "detail-link", 3, "click", "href"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "detail-link", "detail-link-email", 3, "click", "href"], [1, "fa-solid", "fa-envelope"], [1, "fa-solid", "fa-external-link"]], template: function SearchResultsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
689
|
+
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);
|
|
690
|
+
i0.ɵɵtemplate(3, SearchResultsComponent_ng_template_3_Template, 15, 16, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
349
691
|
} 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}"] });
|
|
692
|
+
i0.ɵɵconditional(ctx.IsLoading ? 0 : (ctx.DisplayMode === "flat" ? ctx.FlatResults.length : ctx.ResultGroups.length) === 0 && ctx.TotalCount === 0 ? 1 : 2);
|
|
693
|
+
} }, 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 \n\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n border: 2px solid color-mix(in srgb, var(--mj-text-muted) 25%, var(--mj-bg-surface));\n}\n.score-circle.score-high[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 40%, var(--mj-bg-surface));\n}\n.score-circle.score-medium[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n}\n.score-circle.score-low[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-text-muted) 25%, var(--mj-bg-surface));\n}\n\n.score-value[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n}\n.score-high[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n.score-medium[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n.score-low[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\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}\n\n\n\n[_nghost-%COMP%] .search-highlight, \n.search-highlight[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n color: inherit;\n padding: 1px 2px;\n border-radius: 2px;\n}"] });
|
|
352
694
|
}
|
|
353
695
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsComponent, [{
|
|
354
696
|
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"] }]
|
|
697
|
+
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\" [innerHTML]=\"HighlightMatch(result.RecordName || result.Title)\"></div>\n <div class=\"result-card-entity\" [innerHTML]=\"HighlightMatch(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\" [innerHTML]=\"HighlightMatch(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\" [class.score-high]=\"result.Score >= 0.40\" [class.score-medium]=\"result.Score >= 0.15 && result.Score < 0.40\" [class.score-low]=\"result.Score < 0.15\">\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)\"\n [title]=\"result.ResultType === 'storage-file' ? 'Open file' : 'Open record'\">\n <i [class]=\"result.ResultType === 'storage-file' ? 'fa-solid fa-external-link' : '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\" [innerHTML]=\"HighlightMatch(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\" [innerHTML]=\"HighlightMatch(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 @if (result.ResultType === 'storage-file') {\n <i class=\"fa-solid fa-external-link\"></i> Open File\n } @else {\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Record\n }\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 /* Default: neutral gray */\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n border: 2px solid color-mix(in srgb, var(--mj-text-muted) 25%, var(--mj-bg-surface));\n}\n.score-circle.score-high {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 40%, var(--mj-bg-surface));\n}\n.score-circle.score-medium {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n}\n.score-circle.score-low {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-text-muted) 25%, var(--mj-bg-surface));\n}\n\n.score-value {\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n}\n.score-high .score-value {\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n.score-medium .score-value {\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n.score-low .score-value {\n color: var(--mj-text-muted);\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\n/* Search text highlighting */\n:host ::ng-deep .search-highlight,\n.search-highlight {\n background: color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n color: inherit;\n padding: 1px 2px;\n border-radius: 2px;\n}\n"] }]
|
|
356
698
|
}], null, { ResultGroups: [{
|
|
357
699
|
type: Input
|
|
700
|
+
}], FlatResults: [{
|
|
701
|
+
type: Input
|
|
702
|
+
}], DisplayMode: [{
|
|
703
|
+
type: Input
|
|
358
704
|
}], IsLoading: [{
|
|
359
705
|
type: Input
|
|
360
706
|
}], TotalCount: [{
|
|
@@ -363,16 +709,24 @@ export class SearchResultsComponent {
|
|
|
363
709
|
type: Input
|
|
364
710
|
}], MaxPerGroup: [{
|
|
365
711
|
type: Input
|
|
712
|
+
}], PageSize: [{
|
|
713
|
+
type: Input
|
|
714
|
+
}], ShowSummary: [{
|
|
715
|
+
type: Input
|
|
366
716
|
}], ShowScores: [{
|
|
367
717
|
type: Input
|
|
368
718
|
}], ShowTags: [{
|
|
369
719
|
type: Input
|
|
370
720
|
}], ShowSourceIcons: [{
|
|
371
721
|
type: Input
|
|
722
|
+
}], HighlightText: [{
|
|
723
|
+
type: Input
|
|
372
724
|
}], ResultSelected: [{
|
|
373
725
|
type: Output
|
|
374
726
|
}], OpenRecordRequested: [{
|
|
375
727
|
type: Output
|
|
728
|
+
}], MoreLikeThisRequested: [{
|
|
729
|
+
type: Output
|
|
376
730
|
}] }); })();
|
|
377
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchResultsComponent, { className: "SearchResultsComponent", filePath: "src/lib/search-results.component.ts", lineNumber:
|
|
731
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchResultsComponent, { className: "SearchResultsComponent", filePath: "src/lib/search-results.component.ts", lineNumber: 26 }); })();
|
|
378
732
|
//# sourceMappingURL=search-results.component.js.map
|