lucos_search_component 0.0.13 → 0.0.15
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/index.js +43 -3
- package/index.js +43 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5683,6 +5683,22 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
5683
5683
|
--lozenge-border: #674800;
|
|
5684
5684
|
--lozenge-text: #352005;
|
|
5685
5685
|
}
|
|
5686
|
+
.lozenge[data-type="Historical Event"] {
|
|
5687
|
+
--lozenge-background: #740909;
|
|
5688
|
+
--lozenge-border: #470202;
|
|
5689
|
+
}
|
|
5690
|
+
.lozenge[data-type="Number"] {
|
|
5691
|
+
--lozenge-background: #0000ff;
|
|
5692
|
+
--lozenge-border: #000083;
|
|
5693
|
+
}
|
|
5694
|
+
/** Temporal Types **/
|
|
5695
|
+
.lozenge[data-type="Calendar"], .lozenge[data-type="Festival"], .lozenge[data-type="Month of Year"], .lozenge[data-type="Day of Week"] {
|
|
5696
|
+
--lozenge-background: #fffc33;
|
|
5697
|
+
--lozenge-border: #7f7e00;
|
|
5698
|
+
--lozenge-text: #0f0f00;
|
|
5699
|
+
}
|
|
5700
|
+
|
|
5701
|
+
|
|
5686
5702
|
.lozenge.active {
|
|
5687
5703
|
--lozenge-border: #b00;
|
|
5688
5704
|
}
|
|
@@ -5693,6 +5709,10 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
5693
5709
|
.ts-dropdown {
|
|
5694
5710
|
margin: 0;
|
|
5695
5711
|
}
|
|
5712
|
+
.lozenge a {
|
|
5713
|
+
color: inherit;
|
|
5714
|
+
text-decoration: none;
|
|
5715
|
+
}
|
|
5696
5716
|
`;
|
|
5697
5717
|
shadow.appendChild(mainStyle);
|
|
5698
5718
|
|
|
@@ -5704,6 +5724,8 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
5704
5724
|
valueField: 'id',
|
|
5705
5725
|
labelField: 'pref_label',
|
|
5706
5726
|
searchField: [],
|
|
5727
|
+
closeAfterSelect: true,
|
|
5728
|
+
highlight: false, // Will use typesense's hightlight (as it can consider other fields)
|
|
5707
5729
|
load: async function(query, callback) {
|
|
5708
5730
|
const queryParams = new URLSearchParams({
|
|
5709
5731
|
q: query,
|
|
@@ -5744,12 +5766,27 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
5744
5766
|
this.updateOption(result.id, result);
|
|
5745
5767
|
});
|
|
5746
5768
|
},
|
|
5769
|
+
onItemSelect: function (item) {
|
|
5770
|
+
// Tom-select prevents clicking on link in an item to work as normal, so force it here
|
|
5771
|
+
window.open(item.dataset.value, '_blank').focus();
|
|
5772
|
+
},
|
|
5747
5773
|
render:{
|
|
5748
5774
|
option: function(data, escape) {
|
|
5749
|
-
|
|
5775
|
+
let label = escape(data.pref_label);
|
|
5776
|
+
let alt_label = "";
|
|
5777
|
+
if (data.highlight.pref_label) {
|
|
5778
|
+
label = data.highlight.pref_label.snippet;
|
|
5779
|
+
} else if (data.highlight.labels) {
|
|
5780
|
+
const matched_label = data.highlight.labels.find(l => l.matched_tokens.length > 0);
|
|
5781
|
+
if (matched_label) {
|
|
5782
|
+
alt_label = ` <span class="alt-label">(${matched_label.snippet})</span>`;
|
|
5783
|
+
}
|
|
5784
|
+
}
|
|
5785
|
+
label = label.replace(` (${data.type})`,""); // No need to include any type disambiguation in label, as types are always shown
|
|
5786
|
+
return `<div>${label}${alt_label}<span class="type lozenge" data-type="${escape(data.type)}">${escape(data.type)}</span></div>`;
|
|
5750
5787
|
},
|
|
5751
5788
|
item: function(data, escape) {
|
|
5752
|
-
return `<div class="lozenge" data-type="${escape(data.type)}">${escape(data.pref_label)}</div>`;
|
|
5789
|
+
return `<div class="lozenge" data-type="${escape(data.type)}"><a href="${data.id}" target="_blank">${escape(data.pref_label)}</a></div>`;
|
|
5753
5790
|
},
|
|
5754
5791
|
},
|
|
5755
5792
|
});
|
|
@@ -5764,7 +5801,10 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
5764
5801
|
searchParams.set('query_by_weights', "10,8,3,1");
|
|
5765
5802
|
searchParams.set('sort_by', "_text_match:desc,pref_label:asc");
|
|
5766
5803
|
searchParams.set('prioritize_num_matching_fields', false);
|
|
5767
|
-
searchParams.set('include_fields', "id,pref_label,type");
|
|
5804
|
+
searchParams.set('include_fields', "id,pref_label,type,labels");
|
|
5805
|
+
searchParams.set('enable_highlight_v1', false);
|
|
5806
|
+
searchParams.set('highlight_start_tag', '<span class="highlight">');
|
|
5807
|
+
searchParams.set('highlight_end_tag', '</span>');
|
|
5768
5808
|
const response = await fetch("https://arachne.l42.eu/search?"+searchParams.toString(), {
|
|
5769
5809
|
headers: { 'X-TYPESENSE-API-KEY': key },
|
|
5770
5810
|
signal: AbortSignal.timeout(900),
|
package/index.js
CHANGED
|
@@ -85,6 +85,22 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
85
85
|
--lozenge-border: #674800;
|
|
86
86
|
--lozenge-text: #352005;
|
|
87
87
|
}
|
|
88
|
+
.lozenge[data-type="Historical Event"] {
|
|
89
|
+
--lozenge-background: #740909;
|
|
90
|
+
--lozenge-border: #470202;
|
|
91
|
+
}
|
|
92
|
+
.lozenge[data-type="Number"] {
|
|
93
|
+
--lozenge-background: #0000ff;
|
|
94
|
+
--lozenge-border: #000083;
|
|
95
|
+
}
|
|
96
|
+
/** Temporal Types **/
|
|
97
|
+
.lozenge[data-type="Calendar"], .lozenge[data-type="Festival"], .lozenge[data-type="Month of Year"], .lozenge[data-type="Day of Week"] {
|
|
98
|
+
--lozenge-background: #fffc33;
|
|
99
|
+
--lozenge-border: #7f7e00;
|
|
100
|
+
--lozenge-text: #0f0f00;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
|
|
88
104
|
.lozenge.active {
|
|
89
105
|
--lozenge-border: #b00;
|
|
90
106
|
}
|
|
@@ -95,6 +111,10 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
95
111
|
.ts-dropdown {
|
|
96
112
|
margin: 0;
|
|
97
113
|
}
|
|
114
|
+
.lozenge a {
|
|
115
|
+
color: inherit;
|
|
116
|
+
text-decoration: none;
|
|
117
|
+
}
|
|
98
118
|
`;
|
|
99
119
|
shadow.appendChild(mainStyle);
|
|
100
120
|
|
|
@@ -106,6 +126,8 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
106
126
|
valueField: 'id',
|
|
107
127
|
labelField: 'pref_label',
|
|
108
128
|
searchField: [],
|
|
129
|
+
closeAfterSelect: true,
|
|
130
|
+
highlight: false, // Will use typesense's hightlight (as it can consider other fields)
|
|
109
131
|
load: async function(query, callback) {
|
|
110
132
|
const queryParams = new URLSearchParams({
|
|
111
133
|
q: query,
|
|
@@ -146,12 +168,27 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
146
168
|
this.updateOption(result.id, result);
|
|
147
169
|
});
|
|
148
170
|
},
|
|
171
|
+
onItemSelect: function (item) {
|
|
172
|
+
// Tom-select prevents clicking on link in an item to work as normal, so force it here
|
|
173
|
+
window.open(item.dataset.value, '_blank').focus();
|
|
174
|
+
},
|
|
149
175
|
render:{
|
|
150
176
|
option: function(data, escape) {
|
|
151
|
-
|
|
177
|
+
let label = escape(data.pref_label);
|
|
178
|
+
let alt_label = "";
|
|
179
|
+
if (data.highlight.pref_label) {
|
|
180
|
+
label = data.highlight.pref_label.snippet;
|
|
181
|
+
} else if (data.highlight.labels) {
|
|
182
|
+
const matched_label = data.highlight.labels.find(l => l.matched_tokens.length > 0);
|
|
183
|
+
if (matched_label) {
|
|
184
|
+
alt_label = ` <span class="alt-label">(${matched_label.snippet})</span>`;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
label = label.replace(` (${data.type})`,""); // No need to include any type disambiguation in label, as types are always shown
|
|
188
|
+
return `<div>${label}${alt_label}<span class="type lozenge" data-type="${escape(data.type)}">${escape(data.type)}</span></div>`;
|
|
152
189
|
},
|
|
153
190
|
item: function(data, escape) {
|
|
154
|
-
return `<div class="lozenge" data-type="${escape(data.type)}">${escape(data.pref_label)}</div>`;
|
|
191
|
+
return `<div class="lozenge" data-type="${escape(data.type)}"><a href="${data.id}" target="_blank">${escape(data.pref_label)}</a></div>`;
|
|
155
192
|
},
|
|
156
193
|
},
|
|
157
194
|
});
|
|
@@ -166,7 +203,10 @@ class LucosSearchComponent extends HTMLSpanElement {
|
|
|
166
203
|
searchParams.set('query_by_weights', "10,8,3,1");
|
|
167
204
|
searchParams.set('sort_by', "_text_match:desc,pref_label:asc");
|
|
168
205
|
searchParams.set('prioritize_num_matching_fields', false);
|
|
169
|
-
searchParams.set('include_fields', "id,pref_label,type");
|
|
206
|
+
searchParams.set('include_fields', "id,pref_label,type,labels");
|
|
207
|
+
searchParams.set('enable_highlight_v1', false);
|
|
208
|
+
searchParams.set('highlight_start_tag', '<span class="highlight">')
|
|
209
|
+
searchParams.set('highlight_end_tag', '</span>');
|
|
170
210
|
const response = await fetch("https://arachne.l42.eu/search?"+searchParams.toString(), {
|
|
171
211
|
headers: { 'X-TYPESENSE-API-KEY': key },
|
|
172
212
|
signal: AbortSignal.timeout(900),
|