@nanoporetech-digital/components 5.9.6 → 5.10.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/CHANGELOG.md +23 -0
- package/dist/cjs/index-1d3ebe1a.js +0 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-algolia.cjs.entry.js +13 -1
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +85 -48
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +6 -7
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-49b4b3a6.js → nano-table-72d5dc63.js} +2 -2
- package/dist/cjs/{nano-table-49b4b3a6.js.map → nano-table-72d5dc63.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-da980a2f.js → table.worker-3df34efe.js} +2 -2
- package/dist/cjs/table.worker-3df34efe.js.map +1 -0
- package/dist/collection/collection-manifest.json +0 -1
- package/dist/collection/components/algolia/algolia-interface.js.map +1 -1
- package/dist/collection/components/algolia/algolia.js +17 -5
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +85 -48
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-search-results/global-search-results.js +6 -7
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/components/algolia.js +13 -2
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/nano-global-nav.js +85 -48
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-global-search-results.js +6 -7
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/esm/index-06666022.js +0 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-algolia.entry.js +13 -1
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-global-nav.entry.js +85 -48
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +6 -7
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/{nano-table-673838b5.js → nano-table-5af42ba4.js} +2 -2
- package/dist/esm/{nano-table-673838b5.js.map → nano-table-5af42ba4.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-608a4868.js → table.worker-3cae908c.js} +2 -2
- package/dist/esm/table.worker-3cae908c.js.map +1 -0
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/{p-06c85b64.js → p-1987f7a9.js} +2 -2
- package/dist/nano-components/{p-24dcd788.entry.js → p-2c0218e6.entry.js} +2 -2
- package/dist/nano-components/p-2c0218e6.entry.js.map +1 -0
- package/dist/nano-components/p-abd11243.entry.js +5 -0
- package/dist/nano-components/p-abd11243.entry.js.map +1 -0
- package/dist/nano-components/{p-d18c0a7a.js → p-dc4020f8.js} +2 -2
- package/dist/nano-components/p-dc6cb252.entry.js +5 -0
- package/dist/nano-components/p-dc6cb252.entry.js.map +1 -0
- package/dist/nano-components/{p-0b7c676c.entry.js → p-fbde7010.entry.js} +2 -2
- package/dist/types/components/algolia/algolia-interface.d.ts +8 -2
- package/dist/types/components/algolia/algolia.d.ts +3 -4
- package/dist/types/components/global-nav/global-nav.d.ts +32 -0
- package/dist/types/components.d.ts +2 -127
- package/docs-json.json +5 -257
- package/docs-vscode.json +2 -63
- package/hydrate/index.js +107 -242
- package/package.json +2 -2
- package/dist/cjs/nano-algolia-input.cjs.entry.js +0 -168
- package/dist/cjs/nano-algolia-input.cjs.entry.js.map +0 -1
- package/dist/cjs/table.worker-da980a2f.js.map +0 -1
- package/dist/collection/components/algolia/algolia-input.js +0 -463
- package/dist/collection/components/algolia/algolia-input.js.map +0 -1
- package/dist/components/nano-algolia-input.d.ts +0 -11
- package/dist/components/nano-algolia-input.js +0 -195
- package/dist/components/nano-algolia-input.js.map +0 -1
- package/dist/esm/nano-algolia-input.entry.js +0 -164
- package/dist/esm/nano-algolia-input.entry.js.map +0 -1
- package/dist/esm/table.worker-608a4868.js.map +0 -1
- package/dist/nano-components/p-02b727d3.entry.js +0 -5
- package/dist/nano-components/p-02b727d3.entry.js.map +0 -1
- package/dist/nano-components/p-24dcd788.entry.js.map +0 -1
- package/dist/nano-components/p-7dd30a3f.entry.js +0 -7
- package/dist/nano-components/p-7dd30a3f.entry.js.map +0 -1
- package/dist/nano-components/p-842f826a.entry.js +0 -5
- package/dist/nano-components/p-842f826a.entry.js.map +0 -1
- package/dist/types/components/algolia/algolia-input.d.ts +0 -103
- /package/dist/nano-components/{p-06c85b64.js.map → p-1987f7a9.js.map} +0 -0
- /package/dist/nano-components/{p-d18c0a7a.js.map → p-dc4020f8.js.map} +0 -0
- /package/dist/nano-components/{p-0b7c676c.entry.js.map → p-fbde7010.entry.js.map} +0 -0
@@ -222,6 +222,11 @@ const GlobalNav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
222
222
|
this.searchLoading = true;
|
223
223
|
}
|
224
224
|
};
|
225
|
+
/**
|
226
|
+
* Called whenever the search input value changes.
|
227
|
+
* Performs Algolia search and shows autocomplete results.
|
228
|
+
* @param ev optional input change event
|
229
|
+
*/
|
225
230
|
this.onSearchChange = async (ev) => {
|
226
231
|
this.searchValInternal = this.searchValue = ev
|
227
232
|
? ev.detail.value
|
@@ -237,64 +242,43 @@ const GlobalNav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
237
242
|
}
|
238
243
|
if (!this.currentIndex)
|
239
244
|
this.currentSelectedIndex();
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
hitsPerPage: 5,
|
244
|
-
filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years
|
245
|
-
})));
|
246
|
-
}
|
247
|
-
catch (e) {
|
248
|
-
console.error(e);
|
249
|
-
}
|
245
|
+
// start search
|
246
|
+
this.searchLoading = true;
|
247
|
+
const algoliaHits = await this.doAlgoliaSearch();
|
250
248
|
this.scopeSearch = null;
|
251
|
-
this.scopeSearch =
|
252
|
-
|
249
|
+
this.scopeSearch = algoliaHits;
|
250
|
+
// set / show autocomplete results
|
251
|
+
this.autocompleteResults = algoliaHits.results.find((res) => res.selected);
|
253
252
|
this.showAutocompleteResults();
|
253
|
+
this.searchLoading = false;
|
254
254
|
};
|
255
|
-
|
255
|
+
/**
|
256
|
+
* Called whenever the search form is submitted (but can also be called manually).
|
257
|
+
* Fires event which will activate / display `nano-global-search-results`
|
258
|
+
* @param ev optional form submit event
|
259
|
+
*/
|
260
|
+
this.onSearchSubmit = async (ev) => {
|
256
261
|
if (ev)
|
257
262
|
ev.preventDefault();
|
258
263
|
if (!this.isSearchValSet())
|
259
264
|
return;
|
260
|
-
this.searchLoading = true;
|
261
|
-
this.algoliaSearchResults = null;
|
262
265
|
if (!this.currentIndex)
|
263
266
|
this.currentSelectedIndex();
|
264
|
-
const queries = this.internalSearchIndeces.map((index) => {
|
265
|
-
return {
|
266
|
-
indexName: index.index,
|
267
|
-
query: this.searchValInternal,
|
268
|
-
facets: index.filters,
|
269
|
-
hitsPerPage: 10,
|
270
|
-
filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years
|
271
|
-
};
|
272
|
-
});
|
273
|
-
try {
|
274
|
-
this.algoliaSearchResults = this.processSearchResults((await this.algoliaClient.search(queries)));
|
275
|
-
}
|
276
|
-
catch (e) {
|
277
|
-
this.nanoSearchError.emit(e);
|
278
|
-
}
|
279
|
-
this.searchLoading = false;
|
280
267
|
if (!this.algoliaSearchResults)
|
281
|
-
|
282
|
-
this.algoliaSearchResults.results.
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
268
|
+
await this.doAlgoliaSearch();
|
269
|
+
const activeIndex = this.algoliaSearchResults.results.find((res) => res.selected);
|
270
|
+
const { index, domain, filters, query } = activeIndex;
|
271
|
+
this.nanoSearchResult.emit({
|
272
|
+
meta: {
|
273
|
+
indexTitle: activeIndex.indexName,
|
274
|
+
index,
|
275
|
+
domain,
|
276
|
+
filters,
|
277
|
+
query,
|
278
|
+
},
|
279
|
+
client: { apiKey: this.searchApiKey, appId: this.searchAppId },
|
290
280
|
});
|
291
|
-
|
292
|
-
this.nanoSearchResult.emit({
|
293
|
-
results: this.algoliaSearchResults.results,
|
294
|
-
client: { apiKey: this.searchApiKey, appId: this.searchAppId },
|
295
|
-
});
|
296
|
-
this.showAutocomplete = false;
|
297
|
-
}
|
281
|
+
this.showAutocomplete = false;
|
298
282
|
return this.algoliaSearchResults;
|
299
283
|
};
|
300
284
|
this.onSearchIndexChange = async (index) => {
|
@@ -787,6 +771,44 @@ const GlobalNav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
787
771
|
}
|
788
772
|
return hit.title;
|
789
773
|
}
|
774
|
+
/**
|
775
|
+
* Constructs a multi-search query for all set search indices
|
776
|
+
* (which are normally controlled via the myAccount payload) then sends to Algolia.
|
777
|
+
* Post-processes results, adding correct domains to url fields.
|
778
|
+
* @returns formatted algolia results
|
779
|
+
*/
|
780
|
+
async doAlgoliaSearch() {
|
781
|
+
this.algoliaSearchResults = null;
|
782
|
+
const queries = this.internalSearchIndeces.map((index) => {
|
783
|
+
return {
|
784
|
+
attributesToSnippet: ['body:5', 'title:8'],
|
785
|
+
indexName: index.index,
|
786
|
+
query: this.searchValInternal,
|
787
|
+
facets: index.filters,
|
788
|
+
hitsPerPage: 5,
|
789
|
+
filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years
|
790
|
+
};
|
791
|
+
});
|
792
|
+
try {
|
793
|
+
this.algoliaSearchResults = this.processSearchResults((await this.algoliaClient.search(queries)));
|
794
|
+
}
|
795
|
+
catch (e) {
|
796
|
+
this.nanoSearchError.emit(e);
|
797
|
+
}
|
798
|
+
this.searchLoading = false;
|
799
|
+
if (!this.algoliaSearchResults)
|
800
|
+
return;
|
801
|
+
this.algoliaSearchResults.results.map((result, i) => {
|
802
|
+
result.indexName = this.internalSearchIndeces[i].name;
|
803
|
+
result.selected =
|
804
|
+
this.currentIndex.name === this.internalSearchIndeces[i].name;
|
805
|
+
result.domain = this.currentIndex.domain || null;
|
806
|
+
result.domains = this.myAccData.domains || null;
|
807
|
+
result.allGroup = !!this.internalSearchIndeces[i].allGroup;
|
808
|
+
result.filters = this.internalSearchIndeces[i].filters;
|
809
|
+
});
|
810
|
+
return this.algoliaSearchResults;
|
811
|
+
}
|
790
812
|
isSearchValSet() {
|
791
813
|
if (this.searchValInternal.length < 3)
|
792
814
|
return false;
|
@@ -908,7 +930,7 @@ const GlobalNav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
908
930
|
'search-icon--show': !!this.searchValue && !this.searchLoading,
|
909
931
|
}, slot: "end", onMouseDown: (e) => {
|
910
932
|
this.searchValInternal = this.searchInput.value;
|
911
|
-
this.onSearchSubmit(e
|
933
|
+
this.onSearchSubmit(e);
|
912
934
|
} }, h("nano-icon", { name: "light/search" })), h("span", { class: {
|
913
935
|
'search-icon': true,
|
914
936
|
'search-icon--loader': true,
|
@@ -1040,12 +1062,21 @@ const GlobalNav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1040
1062
|
}, onClick: this.menuClose, onTouchEnd: this.menuClose }))), h("div", { class: "site-content" }, h("slot", null))));
|
1041
1063
|
}
|
1042
1064
|
// Data processing
|
1065
|
+
/**
|
1066
|
+
* Finds a correct domain (as defined by myAccount data) for a given origin
|
1067
|
+
* @returns a domain string for this origin
|
1068
|
+
*/
|
1043
1069
|
domainFor(origin) {
|
1044
1070
|
if (!this.myAccData)
|
1045
1071
|
return '';
|
1046
1072
|
const domain = this.myAccData.domains.find((dm) => dm.origin === origin);
|
1047
1073
|
return domain ? domain.domain : '';
|
1048
1074
|
}
|
1075
|
+
/**
|
1076
|
+
* process a set, or multiple sets of algolia results
|
1077
|
+
* and applies correct domain names / http protocol to each result's url
|
1078
|
+
* @returns results where partial paths are turned to full urls
|
1079
|
+
*/
|
1049
1080
|
processSearchResults(results) {
|
1050
1081
|
const multiResults = results;
|
1051
1082
|
const singleResult = results;
|
@@ -1064,6 +1095,9 @@ const GlobalNav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1064
1095
|
return singleResult;
|
1065
1096
|
}
|
1066
1097
|
}
|
1098
|
+
/**
|
1099
|
+
* Ingests the data blob from myAccount; turns prescient fields to internal state
|
1100
|
+
*/
|
1067
1101
|
processMyAccData() {
|
1068
1102
|
if (!this.myAccData || !this.myAccData.search.indeces.length)
|
1069
1103
|
return;
|
@@ -1086,6 +1120,9 @@ const GlobalNav = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
1086
1120
|
if (this.myAccData.urls.messages && !this.msgUrl)
|
1087
1121
|
this.msgUrl = this.myAccData.urls.messages;
|
1088
1122
|
}
|
1123
|
+
/**
|
1124
|
+
* Ingests the data blob from myAccount links; applies prescient fields to internal state
|
1125
|
+
*/
|
1089
1126
|
processMyAccLinks() {
|
1090
1127
|
if (!this.myAccData.links || !this.myAccData.links.length)
|
1091
1128
|
return;
|