@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.
Files changed (87) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/index-1d3ebe1a.js +0 -4
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/nano-algolia.cjs.entry.js +13 -1
  5. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  6. package/dist/cjs/nano-components.cjs.js +1 -1
  7. package/dist/cjs/nano-global-nav.cjs.entry.js +85 -48
  8. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nano-global-search-results.cjs.entry.js +6 -7
  10. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  11. package/dist/cjs/{nano-table-49b4b3a6.js → nano-table-72d5dc63.js} +2 -2
  12. package/dist/cjs/{nano-table-49b4b3a6.js.map → nano-table-72d5dc63.js.map} +1 -1
  13. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  14. package/dist/cjs/{table.worker-da980a2f.js → table.worker-3df34efe.js} +2 -2
  15. package/dist/cjs/table.worker-3df34efe.js.map +1 -0
  16. package/dist/collection/collection-manifest.json +0 -1
  17. package/dist/collection/components/algolia/algolia-interface.js.map +1 -1
  18. package/dist/collection/components/algolia/algolia.js +17 -5
  19. package/dist/collection/components/algolia/algolia.js.map +1 -1
  20. package/dist/collection/components/global-nav/global-nav.js +85 -48
  21. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  22. package/dist/collection/components/global-search-results/global-search-results.js +6 -7
  23. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  24. package/dist/components/algolia.js +13 -2
  25. package/dist/components/algolia.js.map +1 -1
  26. package/dist/components/index.d.ts +0 -1
  27. package/dist/components/index.js +0 -1
  28. package/dist/components/index.js.map +1 -1
  29. package/dist/components/nano-global-nav.js +85 -48
  30. package/dist/components/nano-global-nav.js.map +1 -1
  31. package/dist/components/nano-global-search-results.js +6 -7
  32. package/dist/components/nano-global-search-results.js.map +1 -1
  33. package/dist/esm/index-06666022.js +0 -4
  34. package/dist/esm/loader.js +1 -1
  35. package/dist/esm/nano-algolia.entry.js +13 -1
  36. package/dist/esm/nano-algolia.entry.js.map +1 -1
  37. package/dist/esm/nano-components.js +1 -1
  38. package/dist/esm/nano-global-nav.entry.js +85 -48
  39. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  40. package/dist/esm/nano-global-search-results.entry.js +6 -7
  41. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  42. package/dist/esm/{nano-table-673838b5.js → nano-table-5af42ba4.js} +2 -2
  43. package/dist/esm/{nano-table-673838b5.js.map → nano-table-5af42ba4.js.map} +1 -1
  44. package/dist/esm/nano-table.entry.js +1 -1
  45. package/dist/esm/{table.worker-608a4868.js → table.worker-3cae908c.js} +2 -2
  46. package/dist/esm/table.worker-3cae908c.js.map +1 -0
  47. package/dist/nano-components/nano-components.esm.js +1 -1
  48. package/dist/nano-components/nano-components.esm.js.map +1 -1
  49. package/dist/nano-components/{p-06c85b64.js → p-1987f7a9.js} +2 -2
  50. package/dist/nano-components/{p-24dcd788.entry.js → p-2c0218e6.entry.js} +2 -2
  51. package/dist/nano-components/p-2c0218e6.entry.js.map +1 -0
  52. package/dist/nano-components/p-abd11243.entry.js +5 -0
  53. package/dist/nano-components/p-abd11243.entry.js.map +1 -0
  54. package/dist/nano-components/{p-d18c0a7a.js → p-dc4020f8.js} +2 -2
  55. package/dist/nano-components/p-dc6cb252.entry.js +5 -0
  56. package/dist/nano-components/p-dc6cb252.entry.js.map +1 -0
  57. package/dist/nano-components/{p-0b7c676c.entry.js → p-fbde7010.entry.js} +2 -2
  58. package/dist/types/components/algolia/algolia-interface.d.ts +8 -2
  59. package/dist/types/components/algolia/algolia.d.ts +3 -4
  60. package/dist/types/components/global-nav/global-nav.d.ts +32 -0
  61. package/dist/types/components.d.ts +2 -127
  62. package/docs-json.json +5 -257
  63. package/docs-vscode.json +2 -63
  64. package/hydrate/index.js +107 -242
  65. package/package.json +2 -2
  66. package/dist/cjs/nano-algolia-input.cjs.entry.js +0 -168
  67. package/dist/cjs/nano-algolia-input.cjs.entry.js.map +0 -1
  68. package/dist/cjs/table.worker-da980a2f.js.map +0 -1
  69. package/dist/collection/components/algolia/algolia-input.js +0 -463
  70. package/dist/collection/components/algolia/algolia-input.js.map +0 -1
  71. package/dist/components/nano-algolia-input.d.ts +0 -11
  72. package/dist/components/nano-algolia-input.js +0 -195
  73. package/dist/components/nano-algolia-input.js.map +0 -1
  74. package/dist/esm/nano-algolia-input.entry.js +0 -164
  75. package/dist/esm/nano-algolia-input.entry.js.map +0 -1
  76. package/dist/esm/table.worker-608a4868.js.map +0 -1
  77. package/dist/nano-components/p-02b727d3.entry.js +0 -5
  78. package/dist/nano-components/p-02b727d3.entry.js.map +0 -1
  79. package/dist/nano-components/p-24dcd788.entry.js.map +0 -1
  80. package/dist/nano-components/p-7dd30a3f.entry.js +0 -7
  81. package/dist/nano-components/p-7dd30a3f.entry.js.map +0 -1
  82. package/dist/nano-components/p-842f826a.entry.js +0 -5
  83. package/dist/nano-components/p-842f826a.entry.js.map +0 -1
  84. package/dist/types/components/algolia/algolia-input.d.ts +0 -103
  85. /package/dist/nano-components/{p-06c85b64.js.map → p-1987f7a9.js.map} +0 -0
  86. /package/dist/nano-components/{p-d18c0a7a.js.map → p-dc4020f8.js.map} +0 -0
  87. /package/dist/nano-components/{p-0b7c676c.entry.js.map → p-fbde7010.entry.js.map} +0 -0
@@ -1,463 +0,0 @@
1
- /*!
2
- * Web Components for Nanopore digital Web Apps
3
- */
4
- import { h, Host, } from '@stencil/core';
5
- import algoliasearch from 'algoliasearch';
6
- import { ComponentStore, } from '../../utils/store/component-store';
7
- import { Wormhole } from '../algolia/algolia-data';
8
- /**
9
- * @deprecated
10
- * Component for querying Algolia Indeces.
11
- * Can be nested within an algolia element or used outside as a 'resultsEmitter' (see algolia component documentation)
12
- * Must include one 'nano-input' component
13
- */
14
- export class AlgoliaInput {
15
- constructor() {
16
- this.handleFocus = () => {
17
- if (this.inputField)
18
- this.inputField.setFocus();
19
- };
20
- this.searchStr = '';
21
- this.algoliaIndex = null;
22
- this.currentResults = undefined;
23
- this.appId = '';
24
- this.apiKey = '';
25
- this.searchIndex = null;
26
- this.searchIndexName = undefined;
27
- this.minChars = 2;
28
- this.autoEmit = true;
29
- this.browseIndex = false;
30
- this.storeId = undefined;
31
- this.storeMethod = 'session';
32
- }
33
- /**
34
- * Manually emit search results to algolia components.
35
- * Useful if you don't wish to search on input change / want to provide 'autocomplete' options
36
- * or / and want to use a submit button */
37
- async search() {
38
- this.emitResults();
39
- }
40
- searchIndexNameChange() {
41
- if (!this.searchIndexName || !this.searchIndexName.length)
42
- return;
43
- this.searchIndex = { index: this.searchIndexName };
44
- }
45
- algoliaChange() {
46
- this.internalIndex = this.algoliaIndex;
47
- }
48
- browseIndexChange() {
49
- if (this.browseIndex) {
50
- this.searchStr = '*';
51
- this.searchSubmit();
52
- }
53
- }
54
- initAlgoliaClient() {
55
- if (this.isNested || !this.appId || !this.apiKey)
56
- return;
57
- this.algoliaClient = algoliasearch(this.appId, this.apiKey);
58
- if (this.searchIndex)
59
- this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);
60
- }
61
- async searchSubmit(ev) {
62
- if (!this.internalIndex) {
63
- console.error('No algolia index set');
64
- return;
65
- }
66
- if (ev) {
67
- if (ev.target.tagName.toLowerCase() !== 'nano-input')
68
- return;
69
- this.searchStr = ev.detail.value;
70
- }
71
- else {
72
- this.inputField =
73
- this.inputField || this.host.querySelector('nano-input');
74
- if (!this.inputField)
75
- return;
76
- this.searchStr = this.inputField.value;
77
- }
78
- if (this.searchStr.length < this.minChars) {
79
- if (this.browseIndex)
80
- this.searchStr = '*';
81
- else {
82
- if (this.searchStr.length === 0) {
83
- this.nanoSearchResult.emit({
84
- results: [],
85
- client: { apiKey: this.appId, appId: this.appId },
86
- });
87
- return;
88
- }
89
- if (this.searchStr.length < this.minChars)
90
- return;
91
- }
92
- }
93
- let options = {};
94
- if (this.searchIndex.filters)
95
- options = { facets: this.searchIndex.filters };
96
- const results = this.fixDomain(await this.internalIndex.search(this.searchStr, options));
97
- results.indexName = this.searchIndex.name;
98
- results.selected = true;
99
- results.domain = this.searchIndex.domain || null;
100
- results.index = this.searchIndex.index;
101
- this.currentResults = results;
102
- this.nanoSearch.emit({
103
- results: [this.currentResults],
104
- client: { apiKey: this.appId, appId: this.appId },
105
- });
106
- if (this.autoEmit)
107
- this.emitResults();
108
- }
109
- emitResults() {
110
- this.nanoSearchResult.emit({
111
- results: [this.currentResults],
112
- client: { apiKey: this.appId, appId: this.appId },
113
- });
114
- }
115
- fixDomain(results) {
116
- if (!this.searchIndex.domain)
117
- return results;
118
- results.hits.map((hit) => {
119
- if (hit.url && !hit.url.match(/^http/))
120
- hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;
121
- });
122
- return results;
123
- }
124
- connectedCallback() {
125
- this.isNested =
126
- this.host.parentElement.tagName.toLowerCase() === 'nano-algolia' &&
127
- this.host.hasAttribute('slot') &&
128
- this.host.getAttribute('slot') === 'search-input';
129
- if (!this.isNested) {
130
- this.host.addEventListener('openWormhole', (ev) => {
131
- ev.detail.onOpen.resolve();
132
- this.searchIndexNameChange();
133
- this.initAlgoliaClient();
134
- });
135
- }
136
- }
137
- componentWillLoad() {
138
- this.inputField = this.host.querySelector('nano-input');
139
- if (this.storeId)
140
- ComponentStore.init(this, ['searchStr'], this.storeMethod, this.storeId);
141
- }
142
- render() {
143
- return (h(Host, { onFocus: this.handleFocus, tabindex: "-1" }, h("slot", null)));
144
- }
145
- static get is() { return "nano-algolia-input"; }
146
- static get encapsulation() { return "shadow"; }
147
- static get properties() {
148
- return {
149
- "appId": {
150
- "type": "string",
151
- "mutable": false,
152
- "complexType": {
153
- "original": "string",
154
- "resolved": "string",
155
- "references": {}
156
- },
157
- "required": false,
158
- "optional": false,
159
- "docs": {
160
- "tags": [],
161
- "text": "An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\nAlternatively this will be set automatically when nested within an algolia component"
162
- },
163
- "getter": false,
164
- "setter": false,
165
- "attribute": "app-id",
166
- "reflect": false,
167
- "defaultValue": "''"
168
- },
169
- "apiKey": {
170
- "type": "string",
171
- "mutable": false,
172
- "complexType": {
173
- "original": "string",
174
- "resolved": "string",
175
- "references": {}
176
- },
177
- "required": false,
178
- "optional": false,
179
- "docs": {
180
- "tags": [],
181
- "text": "An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\nAlternatively this will be set automatically when nested within an algolia component"
182
- },
183
- "getter": false,
184
- "setter": false,
185
- "attribute": "api-key",
186
- "reflect": false,
187
- "defaultValue": "''"
188
- },
189
- "searchIndex": {
190
- "type": "unknown",
191
- "mutable": true,
192
- "complexType": {
193
- "original": "SearchIndex",
194
- "resolved": "SearchIndex",
195
- "references": {
196
- "SearchIndex": {
197
- "location": "import",
198
- "path": "../../interface"
199
- }
200
- }
201
- },
202
- "required": false,
203
- "optional": false,
204
- "docs": {
205
- "tags": [],
206
- "text": "Algolia search index. Used in conjunction with 'searchIndex' & 'appId'.\nAlternatively this will be set automatically if you're using a 'resultsEmitter' element.\n```\n{ index: string, // algolia index name\n domain?: string, // used in template filers to resolve incomplete url fields\n filters?: [string], // algolia facets to retrive\n hitsPerPage?: number,\n name?: string // human readable index name\n}\n```"
207
- },
208
- "getter": false,
209
- "setter": false,
210
- "defaultValue": "null"
211
- },
212
- "searchIndexName": {
213
- "type": "string",
214
- "mutable": false,
215
- "complexType": {
216
- "original": "string",
217
- "resolved": "string",
218
- "references": {}
219
- },
220
- "required": false,
221
- "optional": false,
222
- "docs": {
223
- "tags": [],
224
- "text": "Algolia search index name. Alternative to 'searchIndex'.\nA simplified shortcut for setting an index.\nproperties such as hitsPerPage and facets will come from the algolia index"
225
- },
226
- "getter": false,
227
- "setter": false,
228
- "attribute": "search-index-name",
229
- "reflect": false
230
- },
231
- "minChars": {
232
- "type": "number",
233
- "mutable": false,
234
- "complexType": {
235
- "original": "number",
236
- "resolved": "number",
237
- "references": {}
238
- },
239
- "required": false,
240
- "optional": false,
241
- "docs": {
242
- "tags": [],
243
- "text": "Minimum number of characters before performing a search"
244
- },
245
- "getter": false,
246
- "setter": false,
247
- "attribute": "min-chars",
248
- "reflect": false,
249
- "defaultValue": "2"
250
- },
251
- "autoEmit": {
252
- "type": "boolean",
253
- "mutable": false,
254
- "complexType": {
255
- "original": "boolean",
256
- "resolved": "boolean",
257
- "references": {}
258
- },
259
- "required": false,
260
- "optional": false,
261
- "docs": {
262
- "tags": [],
263
- "text": "Automatically emit results data to algolia components.\nFor example, if you wanted to provide an 'autocomplete' style dropdown\nbefore showing the main results with a submit button"
264
- },
265
- "getter": false,
266
- "setter": false,
267
- "attribute": "auto-emit",
268
- "reflect": false,
269
- "defaultValue": "true"
270
- },
271
- "browseIndex": {
272
- "type": "boolean",
273
- "mutable": true,
274
- "complexType": {
275
- "original": "boolean",
276
- "resolved": "boolean",
277
- "references": {}
278
- },
279
- "required": false,
280
- "optional": false,
281
- "docs": {
282
- "tags": [],
283
- "text": "Will maintain a search all / '*' on init and reset allowing for a view\nthen filter experience rather than a search first experience"
284
- },
285
- "getter": false,
286
- "setter": false,
287
- "attribute": "browse-index",
288
- "reflect": false,
289
- "defaultValue": "false"
290
- },
291
- "storeId": {
292
- "type": "string",
293
- "mutable": false,
294
- "complexType": {
295
- "original": "string",
296
- "resolved": "string",
297
- "references": {}
298
- },
299
- "required": false,
300
- "optional": true,
301
- "docs": {
302
- "tags": [],
303
- "text": "Store search queries (against this ID) to the component store.\nUse in conjunction with storeMethod"
304
- },
305
- "getter": false,
306
- "setter": false,
307
- "attribute": "store-id",
308
- "reflect": false
309
- },
310
- "storeMethod": {
311
- "type": "string",
312
- "mutable": false,
313
- "complexType": {
314
- "original": "StorageMethods",
315
- "resolved": "\"local\" | \"session\" | \"url-hash\" | \"url-hash-push\" | \"url-query\" | \"url-query-push\"",
316
- "references": {
317
- "StorageMethods": {
318
- "location": "import",
319
- "path": "../../utils/store/component-store"
320
- }
321
- }
322
- },
323
- "required": false,
324
- "optional": false,
325
- "docs": {
326
- "tags": [],
327
- "text": "The method of storage.\nEither session storage, url hash (after the '#') or url query (after the '?')."
328
- },
329
- "getter": false,
330
- "setter": false,
331
- "attribute": "store-method",
332
- "reflect": false,
333
- "defaultValue": "'session'"
334
- }
335
- };
336
- }
337
- static get states() {
338
- return {
339
- "searchStr": {},
340
- "algoliaIndex": {},
341
- "currentResults": {}
342
- };
343
- }
344
- static get events() {
345
- return [{
346
- "method": "nanoSearchResult",
347
- "name": "nanoSearchResult",
348
- "bubbles": true,
349
- "cancelable": true,
350
- "composed": true,
351
- "docs": {
352
- "tags": [{
353
- "name": "internal",
354
- "text": undefined
355
- }],
356
- "text": "Emitted when search results are successfully returned from Algolia."
357
- },
358
- "complexType": {
359
- "original": "AloliaSearchResultDetail",
360
- "resolved": "AloliaSearchResultDetail",
361
- "references": {
362
- "AloliaSearchResultDetail": {
363
- "location": "import",
364
- "path": "../../interface"
365
- }
366
- }
367
- }
368
- }, {
369
- "method": "nanoSearch",
370
- "name": "nanoSearch",
371
- "bubbles": true,
372
- "cancelable": true,
373
- "composed": true,
374
- "docs": {
375
- "tags": [],
376
- "text": "Emitted when search results are successfully returned from Algolia."
377
- },
378
- "complexType": {
379
- "original": "AloliaSearchResultDetail",
380
- "resolved": "AloliaSearchResultDetail",
381
- "references": {
382
- "AloliaSearchResultDetail": {
383
- "location": "import",
384
- "path": "../../interface"
385
- }
386
- }
387
- }
388
- }, {
389
- "method": "nanoSearchReset",
390
- "name": "nanoSearchReset",
391
- "bubbles": true,
392
- "cancelable": true,
393
- "composed": true,
394
- "docs": {
395
- "tags": [],
396
- "text": "Emitted when search field is cleared."
397
- },
398
- "complexType": {
399
- "original": "AloliaSearchResultDetail",
400
- "resolved": "AloliaSearchResultDetail",
401
- "references": {
402
- "AloliaSearchResultDetail": {
403
- "location": "import",
404
- "path": "../../interface"
405
- }
406
- }
407
- }
408
- }];
409
- }
410
- static get methods() {
411
- return {
412
- "search": {
413
- "complexType": {
414
- "signature": "() => Promise<void>",
415
- "parameters": [],
416
- "references": {
417
- "Promise": {
418
- "location": "global"
419
- }
420
- },
421
- "return": "Promise<void>"
422
- },
423
- "docs": {
424
- "text": "Manually emit search results to algolia components.\nUseful if you don't wish to search on input change / want to provide 'autocomplete' options\nor / and want to use a submit button",
425
- "tags": []
426
- }
427
- }
428
- };
429
- }
430
- static get elementRef() { return "host"; }
431
- static get watchers() {
432
- return [{
433
- "propName": "searchIndexName",
434
- "methodName": "searchIndexNameChange"
435
- }, {
436
- "propName": "algoliaIndex",
437
- "methodName": "algoliaChange"
438
- }, {
439
- "propName": "browseIndex",
440
- "methodName": "browseIndexChange"
441
- }, {
442
- "propName": "apiKey",
443
- "methodName": "initAlgoliaClient"
444
- }, {
445
- "propName": "appId",
446
- "methodName": "initAlgoliaClient"
447
- }, {
448
- "propName": "searchIndex",
449
- "methodName": "initAlgoliaClient"
450
- }];
451
- }
452
- static get listeners() {
453
- return [{
454
- "name": "nanoChange",
455
- "method": "searchSubmit",
456
- "target": undefined,
457
- "capture": false,
458
- "passive": false
459
- }];
460
- }
461
- }
462
- Wormhole(AlgoliaInput, ['algoliaIndex', 'searchIndex', 'browseIndex']);
463
- //# sourceMappingURL=algolia-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"algolia-input.js","sourceRoot":"","sources":["../../../src/components/algolia/algolia-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n State,\n EventEmitter,\n Event,\n Listen,\n Method,\n Watch,\n ComponentInterface,\n} from '@stencil/core';\n\nimport algoliasearch, {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { Wormhole } from '../algolia/algolia-data';\nimport {\n InputChangeEventDetail,\n AloliaSearchResultDetail,\n SearchIndex,\n AlgoliaMultiResult,\n} from '../../interface';\n\n/**\n * @deprecated\n * Component for querying Algolia Indeces.\n * Can be nested within an algolia element or used outside as a 'resultsEmitter' (see algolia component documentation)\n * Must include one 'nano-input' component\n */\n@Component({\n tag: 'nano-algolia-input',\n shadow: true,\n})\nexport class AlgoliaInput implements ComponentInterface {\n private internalIndex: AlgoliaIndex;\n private algoliaClient: AlgoliaClient;\n private isNested: boolean;\n private inputField: HTMLNanoInputElement;\n\n @Element() host: HTMLNanoAlgoliaInputElement;\n\n @State() searchStr: string = '';\n @State() algoliaIndex: AlgoliaIndex = null;\n @State() currentResults: AlgoliaMultiResult;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n * Alternatively this will be set automatically when nested within an algolia component\n */\n @Prop() appId: string = '';\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n * Alternatively this will be set automatically when nested within an algolia component\n */\n @Prop() apiKey: string = '';\n\n /**\n * Algolia search index. Used in conjunction with 'searchIndex' & 'appId'.\n * Alternatively this will be set automatically if you're using a 'resultsEmitter' element.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filers to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop({ mutable: true }) searchIndex: SearchIndex = null;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop() searchIndexName: string;\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\n\n /**\n * Automatically emit results data to algolia components.\n * For example, if you wanted to provide an 'autocomplete' style dropdown\n * before showing the main results with a submit button\n */\n @Prop() autoEmit: boolean = true;\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n /**\n * Manually emit search results to algolia components.\n * Useful if you don't wish to search on input change / want to provide 'autocomplete' options\n * or / and want to use a submit button */\n @Method()\n async search() {\n this.emitResults();\n }\n\n /**\n * Emitted when search results are successfully returned from Algolia.\n * @internal\n */\n @Event() nanoSearchResult!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Emitted when search results are successfully returned from Algolia.\n */\n @Event() nanoSearch!: EventEmitter<AloliaSearchResultDetail>;\n\n /**\n * Emitted when search field is cleared.\n */\n @Event() nanoSearchReset!: EventEmitter<AloliaSearchResultDetail>;\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (!this.searchIndexName || !this.searchIndexName.length) return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('algoliaIndex')\n algoliaChange() {\n this.internalIndex = this.algoliaIndex;\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (this.browseIndex) {\n this.searchStr = '*';\n this.searchSubmit();\n }\n }\n\n @Watch('apiKey')\n @Watch('appId')\n @Watch('searchIndex')\n initAlgoliaClient() {\n if (this.isNested || !this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n if (this.searchIndex)\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n }\n\n @Listen('nanoChange')\n async searchSubmit(ev?: CustomEvent<InputChangeEventDetail>) {\n if (!this.internalIndex) {\n console.error('No algolia index set');\n return;\n }\n\n if (ev) {\n if ((ev.target as HTMLElement).tagName.toLowerCase() !== 'nano-input')\n return;\n this.searchStr = ev.detail.value;\n } else {\n this.inputField =\n this.inputField || this.host.querySelector('nano-input');\n if (!this.inputField) return;\n this.searchStr = this.inputField.value;\n }\n\n if (this.searchStr.length < this.minChars) {\n if (this.browseIndex) this.searchStr = '*';\n else {\n if (this.searchStr.length === 0) {\n this.nanoSearchResult.emit({\n results: [],\n client: { apiKey: this.appId, appId: this.appId },\n });\n return;\n }\n if (this.searchStr.length < this.minChars) return;\n }\n }\n\n let options = {};\n if (this.searchIndex.filters)\n options = { facets: this.searchIndex.filters };\n\n const results = this.fixDomain(\n await this.internalIndex.search(this.searchStr, options)\n );\n results.indexName = this.searchIndex.name;\n results.selected = true;\n results.domain = this.searchIndex.domain || null;\n results.index = this.searchIndex.index;\n\n this.currentResults = results;\n this.nanoSearch.emit({\n results: [this.currentResults],\n client: { apiKey: this.appId, appId: this.appId },\n });\n\n if (this.autoEmit) this.emitResults();\n }\n\n private emitResults() {\n this.nanoSearchResult.emit({\n results: [this.currentResults],\n client: { apiKey: this.appId, appId: this.appId },\n });\n }\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n private handleFocus = () => {\n if (this.inputField) this.inputField.setFocus();\n };\n\n connectedCallback() {\n this.isNested =\n this.host.parentElement.tagName.toLowerCase() === 'nano-algolia' &&\n this.host.hasAttribute('slot') &&\n this.host.getAttribute('slot') === 'search-input';\n\n if (!this.isNested) {\n this.host.addEventListener(\n 'openWormhole',\n (ev: CustomEvent<{ onOpen: any }>) => {\n ev.detail.onOpen.resolve();\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n }\n );\n }\n }\n\n componentWillLoad() {\n this.inputField = this.host.querySelector('nano-input');\n if (this.storeId)\n ComponentStore.init(this, ['searchStr'], this.storeMethod, this.storeId);\n }\n\n render() {\n return (\n <Host onFocus={this.handleFocus} tabindex=\"-1\">\n <slot />\n </Host>\n );\n }\n}\n\nWormhole(AlgoliaInput, ['algoliaIndex', 'searchIndex', 'browseIndex']);\n"]}
@@ -1,11 +0,0 @@
1
- import type { Components, JSX } from "../types/components";
2
-
3
- interface NanoAlgoliaInput extends Components.NanoAlgoliaInput, HTMLElement {}
4
- export const NanoAlgoliaInput: {
5
- prototype: NanoAlgoliaInput;
6
- new (): NanoAlgoliaInput;
7
- };
8
- /**
9
- * Used to define this component and all nested components recursively.
10
- */
11
- export const defineCustomElement: () => void;