@nanoporetech-digital/components 5.9.5 → 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 +36 -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-details.cjs.entry.js +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +10 -6
- package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +2 -2
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +92 -53
- 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-icon-button_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
- package/dist/cjs/{nano-table-be63f3e1.js → nano-table-72d5dc63.js} +2 -2
- package/dist/cjs/{nano-table-be63f3e1.js.map → nano-table-72d5dc63.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{popover-088646b2.js → popover-b506f6ae.js} +10 -17
- package/dist/cjs/popover-b506f6ae.js.map +1 -0
- package/dist/cjs/{table.worker-b05ffc52.js → table.worker-3df34efe.js} +2 -2
- package/dist/cjs/table.worker-3df34efe.js.map +1 -0
- package/dist/cjs/{transitions-8c57ddb1.js → transitions-cc18619c.js} +3 -2
- package/dist/cjs/transitions-cc18619c.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/dropdown/dropdown.js +9 -5
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +90 -51
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +18 -18
- 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/collection/components/nav-item/nav-item.css +4 -4
- package/dist/collection/utils/transitions.js +2 -1
- package/dist/collection/utils/transitions.js.map +1 -1
- package/dist/components/algolia.js +13 -2
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/dropdown.js +9 -5
- package/dist/components/dropdown.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 +91 -52
- 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/components/nav-item.js +1 -1
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/popover.js +9 -16
- package/dist/components/popover.js.map +1 -1
- package/dist/components/transitions.js +2 -1
- package/dist/components/transitions.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-details.entry.js +1 -1
- package/dist/esm/nano-dropdown.entry.js +10 -6
- package/dist/esm/nano-dropdown.entry.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +2 -2
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +92 -53
- 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-icon-button_2.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +1 -1
- package/dist/esm/{nano-table-8ac79667.js → nano-table-5af42ba4.js} +2 -2
- package/dist/esm/{nano-table-8ac79667.js.map → nano-table-5af42ba4.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{popover-02e6714d.js → popover-e5e7a641.js} +10 -17
- package/dist/esm/popover-e5e7a641.js.map +1 -0
- package/dist/esm/{table.worker-822b1223.js → table.worker-3cae908c.js} +2 -2
- package/dist/esm/table.worker-3cae908c.js.map +1 -0
- package/dist/esm/{transitions-b4657201.js → transitions-fb09eb32.js} +3 -2
- package/dist/esm/transitions-fb09eb32.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-f57cea20.entry.js → p-0e4da739.entry.js} +2 -2
- package/dist/nano-components/{p-f49f57ed.js → p-1987f7a9.js} +2 -2
- package/dist/nano-components/{p-f8dd8c20.entry.js → p-2a105609.entry.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-36c3ded8.entry.js +5 -0
- package/dist/nano-components/p-36c3ded8.entry.js.map +1 -0
- package/dist/nano-components/{p-2a7d0c13.entry.js → p-5fc3035d.entry.js} +2 -2
- package/dist/nano-components/p-688f1a55.entry.js +5 -0
- package/dist/nano-components/p-688f1a55.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-c3e8e3f9.js +5 -0
- package/dist/nano-components/p-c3e8e3f9.js.map +1 -0
- package/dist/nano-components/p-cd1fd454.js +5 -0
- package/dist/nano-components/p-cd1fd454.js.map +1 -0
- package/dist/nano-components/{p-78323d6e.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-7da12234.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 +134 -269
- package/package.json +3 -3
- 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/popover-088646b2.js.map +0 -1
- package/dist/cjs/table.worker-b05ffc52.js.map +0 -1
- package/dist/cjs/transitions-8c57ddb1.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/popover-02e6714d.js.map +0 -1
- package/dist/esm/table.worker-822b1223.js.map +0 -1
- package/dist/esm/transitions-b4657201.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-2db8bb0b.js +0 -5
- package/dist/nano-components/p-2db8bb0b.js.map +0 -1
- package/dist/nano-components/p-51bc8b59.js +0 -5
- package/dist/nano-components/p-51bc8b59.js.map +0 -1
- package/dist/nano-components/p-5e3f928c.entry.js +0 -5
- package/dist/nano-components/p-5e3f928c.entry.js.map +0 -1
- package/dist/nano-components/p-783de955.entry.js +0 -5
- package/dist/nano-components/p-783de955.entry.js.map +0 -1
- package/dist/nano-components/p-79c96564.entry.js +0 -5
- package/dist/nano-components/p-79c96564.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/types/components/algolia/algolia-input.d.ts +0 -103
- /package/dist/nano-components/{p-f57cea20.entry.js.map → p-0e4da739.entry.js.map} +0 -0
- /package/dist/nano-components/{p-7da12234.entry.js.map → p-1987f7a9.js.map} +0 -0
- /package/dist/nano-components/{p-f8dd8c20.entry.js.map → p-2a105609.entry.js.map} +0 -0
- /package/dist/nano-components/{p-2a7d0c13.entry.js.map → p-5fc3035d.entry.js.map} +0 -0
- /package/dist/nano-components/{p-78323d6e.js.map → p-dc4020f8.js.map} +0 -0
- /package/dist/nano-components/{p-f49f57ed.js.map → p-fbde7010.entry.js.map} +0 -0
@@ -189,6 +189,11 @@ export class GlobalNav {
|
|
189
189
|
this.searchLoading = true;
|
190
190
|
}
|
191
191
|
};
|
192
|
+
/**
|
193
|
+
* Called whenever the search input value changes.
|
194
|
+
* Performs Algolia search and shows autocomplete results.
|
195
|
+
* @param ev optional input change event
|
196
|
+
*/
|
192
197
|
this.onSearchChange = async (ev) => {
|
193
198
|
this.searchValInternal = this.searchValue = ev
|
194
199
|
? ev.detail.value
|
@@ -204,64 +209,43 @@ export class GlobalNav {
|
|
204
209
|
}
|
205
210
|
if (!this.currentIndex)
|
206
211
|
this.currentSelectedIndex();
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
hitsPerPage: 5,
|
211
|
-
filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years
|
212
|
-
})));
|
213
|
-
}
|
214
|
-
catch (e) {
|
215
|
-
console.error(e);
|
216
|
-
}
|
212
|
+
// start search
|
213
|
+
this.searchLoading = true;
|
214
|
+
const algoliaHits = await this.doAlgoliaSearch();
|
217
215
|
this.scopeSearch = null;
|
218
|
-
this.scopeSearch =
|
219
|
-
|
216
|
+
this.scopeSearch = algoliaHits;
|
217
|
+
// set / show autocomplete results
|
218
|
+
this.autocompleteResults = algoliaHits.results.find((res) => res.selected);
|
220
219
|
this.showAutocompleteResults();
|
220
|
+
this.searchLoading = false;
|
221
221
|
};
|
222
|
-
|
222
|
+
/**
|
223
|
+
* Called whenever the search form is submitted (but can also be called manually).
|
224
|
+
* Fires event which will activate / display `nano-global-search-results`
|
225
|
+
* @param ev optional form submit event
|
226
|
+
*/
|
227
|
+
this.onSearchSubmit = async (ev) => {
|
223
228
|
if (ev)
|
224
229
|
ev.preventDefault();
|
225
230
|
if (!this.isSearchValSet())
|
226
231
|
return;
|
227
|
-
this.searchLoading = true;
|
228
|
-
this.algoliaSearchResults = null;
|
229
232
|
if (!this.currentIndex)
|
230
233
|
this.currentSelectedIndex();
|
231
|
-
const queries = this.internalSearchIndeces.map((index) => {
|
232
|
-
return {
|
233
|
-
indexName: index.index,
|
234
|
-
query: this.searchValInternal,
|
235
|
-
facets: index.filters,
|
236
|
-
hitsPerPage: 10,
|
237
|
-
filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years
|
238
|
-
};
|
239
|
-
});
|
240
|
-
try {
|
241
|
-
this.algoliaSearchResults = this.processSearchResults((await this.algoliaClient.search(queries)));
|
242
|
-
}
|
243
|
-
catch (e) {
|
244
|
-
this.nanoSearchError.emit(e);
|
245
|
-
}
|
246
|
-
this.searchLoading = false;
|
247
234
|
if (!this.algoliaSearchResults)
|
248
|
-
|
249
|
-
this.algoliaSearchResults.results.
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
235
|
+
await this.doAlgoliaSearch();
|
236
|
+
const activeIndex = this.algoliaSearchResults.results.find((res) => res.selected);
|
237
|
+
const { index, domain, filters, query } = activeIndex;
|
238
|
+
this.nanoSearchResult.emit({
|
239
|
+
meta: {
|
240
|
+
indexTitle: activeIndex.indexName,
|
241
|
+
index,
|
242
|
+
domain,
|
243
|
+
filters,
|
244
|
+
query,
|
245
|
+
},
|
246
|
+
client: { apiKey: this.searchApiKey, appId: this.searchAppId },
|
257
247
|
});
|
258
|
-
|
259
|
-
this.nanoSearchResult.emit({
|
260
|
-
results: this.algoliaSearchResults.results,
|
261
|
-
client: { apiKey: this.searchApiKey, appId: this.searchAppId },
|
262
|
-
});
|
263
|
-
this.showAutocomplete = false;
|
264
|
-
}
|
248
|
+
this.showAutocomplete = false;
|
265
249
|
return this.algoliaSearchResults;
|
266
250
|
};
|
267
251
|
this.onSearchIndexChange = async (index) => {
|
@@ -689,7 +673,7 @@ export class GlobalNav {
|
|
689
673
|
this.menuSelectedItems.forEach((i) => (i.selected = true));
|
690
674
|
this.menuSelectedItems = null;
|
691
675
|
}
|
692
|
-
},
|
676
|
+
}, 300);
|
693
677
|
}
|
694
678
|
menuClose(ev, force = false) {
|
695
679
|
if (!this.modalIsOpen)
|
@@ -756,6 +740,44 @@ export class GlobalNav {
|
|
756
740
|
}
|
757
741
|
return hit.title;
|
758
742
|
}
|
743
|
+
/**
|
744
|
+
* Constructs a multi-search query for all set search indices
|
745
|
+
* (which are normally controlled via the myAccount payload) then sends to Algolia.
|
746
|
+
* Post-processes results, adding correct domains to url fields.
|
747
|
+
* @returns formatted algolia results
|
748
|
+
*/
|
749
|
+
async doAlgoliaSearch() {
|
750
|
+
this.algoliaSearchResults = null;
|
751
|
+
const queries = this.internalSearchIndeces.map((index) => {
|
752
|
+
return {
|
753
|
+
attributesToSnippet: ['body:5', 'title:8'],
|
754
|
+
indexName: index.index,
|
755
|
+
query: this.searchValInternal,
|
756
|
+
facets: index.filters,
|
757
|
+
hitsPerPage: 5,
|
758
|
+
filters: 'created > ' + Math.floor((Date.now() - 63115200000) / 1000), // only get last 2 years
|
759
|
+
};
|
760
|
+
});
|
761
|
+
try {
|
762
|
+
this.algoliaSearchResults = this.processSearchResults((await this.algoliaClient.search(queries)));
|
763
|
+
}
|
764
|
+
catch (e) {
|
765
|
+
this.nanoSearchError.emit(e);
|
766
|
+
}
|
767
|
+
this.searchLoading = false;
|
768
|
+
if (!this.algoliaSearchResults)
|
769
|
+
return;
|
770
|
+
this.algoliaSearchResults.results.map((result, i) => {
|
771
|
+
result.indexName = this.internalSearchIndeces[i].name;
|
772
|
+
result.selected =
|
773
|
+
this.currentIndex.name === this.internalSearchIndeces[i].name;
|
774
|
+
result.domain = this.currentIndex.domain || null;
|
775
|
+
result.domains = this.myAccData.domains || null;
|
776
|
+
result.allGroup = !!this.internalSearchIndeces[i].allGroup;
|
777
|
+
result.filters = this.internalSearchIndeces[i].filters;
|
778
|
+
});
|
779
|
+
return this.algoliaSearchResults;
|
780
|
+
}
|
759
781
|
isSearchValSet() {
|
760
782
|
if (this.searchValInternal.length < 3)
|
761
783
|
return false;
|
@@ -877,7 +899,7 @@ export class GlobalNav {
|
|
877
899
|
'search-icon--show': !!this.searchValue && !this.searchLoading,
|
878
900
|
}, slot: "end", onMouseDown: (e) => {
|
879
901
|
this.searchValInternal = this.searchInput.value;
|
880
|
-
this.onSearchSubmit(e
|
902
|
+
this.onSearchSubmit(e);
|
881
903
|
} }, h("nano-icon", { name: "light/search" })), h("span", { class: {
|
882
904
|
'search-icon': true,
|
883
905
|
'search-icon--loader': true,
|
@@ -907,7 +929,9 @@ export class GlobalNav {
|
|
907
929
|
'has-promotion': this.hasPromotionSlot,
|
908
930
|
'menu-full-screen': this.menuFullScreen,
|
909
931
|
'secondary-open': !!this.secondaryMenuOpen,
|
910
|
-
}, "aria-expanded": this.modalOpen ? 'true' : 'false', ref: (div) => (this.menuDiv = div), part: "burger" }, h("div", { class: "gn-menu_wrap", ref: (div) => (this.menuWrapDiv = div), tabindex: "-1", part: "burger-menu" }, h("div", { class: "gn-menu_actions", part: "burger-actions-bar" }, h("button", { class: "menu-btn icon-btn icon-btn", onMouseDown: this.onMenuBtnClick, onKeyDown: this.onMenuBtnKeyDown }, this.threshold <
|
932
|
+
}, "aria-expanded": this.modalOpen ? 'true' : 'false', ref: (div) => (this.menuDiv = div), part: "burger" }, h("div", { class: "gn-menu_wrap", ref: (div) => (this.menuWrapDiv = div), tabindex: "-1", part: "burger-menu" }, h("div", { class: "gn-menu_actions", part: "burger-actions-bar" }, h("button", { class: "menu-btn icon-btn icon-btn", onMouseDown: this.onMenuBtnClick, onKeyDown: this.onMenuBtnKeyDown }, this.threshold <
|
933
|
+
this.THRESHOLDLIMIT - THRESHOLDBREAKS.login && (h("nano-icon", { name: "light/times", "aria-label": "close menu" })), this.threshold >=
|
934
|
+
this.THRESHOLDLIMIT - THRESHOLDBREAKS.login && (h("nano-icon", { name: "light/bars", "aria-label": "close menu" }))), this.threshold <
|
911
935
|
this.THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [
|
912
936
|
!!this.iconSlotLen && h("slot", { name: "icon" }),
|
913
937
|
this.myAccData &&
|
@@ -1000,19 +1024,28 @@ export class GlobalNav {
|
|
1000
1024
|
'search-bar': true,
|
1001
1025
|
show: this.searchBarShown,
|
1002
1026
|
}, "aria-expanded": this.searchBarShown ? 'true' : 'false', role: "region", tabindex: "-1", ref: (div) => (this.searchBarEl = div), part: "search-bar" }, h("div", { class: "search-widget" }, this.showSearch && !!this.internalSearchIndeces.length && (h("div", null, searchWidget)), (!this.showSearch || !this.myAccData) &&
|
1003
|
-
!!this.searchSlotLen && (h("slot", { name: "search", onSlotchange: this.assessSlottedContent }))))))), (this.threshold < this.THRESHOLDLIMIT -
|
1027
|
+
!!this.searchSlotLen && (h("slot", { name: "search", onSlotchange: this.assessSlottedContent }))))))), (this.threshold < this.THRESHOLDLIMIT - THRESHOLDBREAKS.login ||
|
1004
1028
|
this.menuFullScreen) && (h("div", { class: {
|
1005
1029
|
mask: true,
|
1006
1030
|
open: this.modalOpen,
|
1007
1031
|
}, onClick: this.menuClose, onTouchEnd: this.menuClose }))), h("div", { class: "site-content" }, h("slot", null))));
|
1008
1032
|
}
|
1009
1033
|
// Data processing
|
1034
|
+
/**
|
1035
|
+
* Finds a correct domain (as defined by myAccount data) for a given origin
|
1036
|
+
* @returns a domain string for this origin
|
1037
|
+
*/
|
1010
1038
|
domainFor(origin) {
|
1011
1039
|
if (!this.myAccData)
|
1012
1040
|
return '';
|
1013
1041
|
const domain = this.myAccData.domains.find((dm) => dm.origin === origin);
|
1014
1042
|
return domain ? domain.domain : '';
|
1015
1043
|
}
|
1044
|
+
/**
|
1045
|
+
* process a set, or multiple sets of algolia results
|
1046
|
+
* and applies correct domain names / http protocol to each result's url
|
1047
|
+
* @returns results where partial paths are turned to full urls
|
1048
|
+
*/
|
1016
1049
|
processSearchResults(results) {
|
1017
1050
|
const multiResults = results;
|
1018
1051
|
const singleResult = results;
|
@@ -1031,6 +1064,9 @@ export class GlobalNav {
|
|
1031
1064
|
return singleResult;
|
1032
1065
|
}
|
1033
1066
|
}
|
1067
|
+
/**
|
1068
|
+
* Ingests the data blob from myAccount; turns prescient fields to internal state
|
1069
|
+
*/
|
1034
1070
|
processMyAccData() {
|
1035
1071
|
if (!this.myAccData || !this.myAccData.search.indeces.length)
|
1036
1072
|
return;
|
@@ -1053,6 +1089,9 @@ export class GlobalNav {
|
|
1053
1089
|
if (this.myAccData.urls.messages && !this.msgUrl)
|
1054
1090
|
this.msgUrl = this.myAccData.urls.messages;
|
1055
1091
|
}
|
1092
|
+
/**
|
1093
|
+
* Ingests the data blob from myAccount links; applies prescient fields to internal state
|
1094
|
+
*/
|
1056
1095
|
processMyAccLinks() {
|
1057
1096
|
if (!this.myAccData.links || !this.myAccData.links.length)
|
1058
1097
|
return;
|