Changes for page CLB Search Component
Last modified by bougault on 2023/01/17 11:42
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -11,10 +11,18 @@ 11 11 12 12 createTemplate(htmlString) { 13 13 const template = document.createElement('template'); 14 - template.innerHTML = htmlString; 14 + template.innerHTML = ` 15 + <style> 16 + ${this.styles} 17 + </style> 18 + ${htmlString} 19 + `; 15 15 return template; 16 16 } 17 17 23 + get styles() { 24 + return ``; 25 + } 18 18 $(selector) { 19 19 return this.shadowRoot.querySelector(selector); 20 20 } ... ... @@ -26,10 +26,11 @@ 26 26 27 27 customElements.define('clb-simplified-search', 28 28 class extends ClbComponent { 29 - searchBaseUrl = ' https://wiki-dev.ebrains.eu/bin/get/XWiki/SuggestSolrService?outputSyntax=plain&media=json&nb=10&offset=0&query=q%3D%22__INPUT__%22~100%0Afq%3Dtype%3ADOCUMENT%0Afq%3Dspace%3ACollabs.*&input=';37 + searchBaseUrl = '/bin/get/XWiki/SuggestSolrService?outputSyntax=plain&media=json&nb=10&query=q%3D%22__INPUT__%22~100%0Afq%3Dtype%3ADOCUMENT%0Afq%3Dspace%3ACollabs.*&input='; 30 30 constructor() { 31 31 super(); 32 32 this.results = []; 41 + this.offset = 0; 33 33 } 34 34 35 35 connectedCallback() { ... ... @@ -36,26 +36,35 @@ 36 36 // this.attachShadow({ mode: 'open' }); 37 37 super.connectedCallback(); 38 38 this.render(); 39 - this.searchButton.addEventListener('click', () => this.handleSearch()); 48 + this.$('#search').addEventListener('click', () => this.handleSearch()); 49 + this.$('#prev').addEventListener('click', () => { 50 + if(this.offset > 0) { 51 + this.offset--; 52 + this.handleSearch(); 53 + } 54 + }); 55 + this.$('#next').addEventListener('click', () => { 56 + this.offset++; 57 + this.handleSearch(); 58 + }); 40 40 } 41 41 61 + get styles() { 62 + return ` 63 + :host { 64 + background: red; 65 + } 66 + ` 67 + } 42 42 43 43 handleSearch = () => { 44 - fetch(`${this.searchBaseUrl}${encodeURIComponent(this.searchInput.value)}`) 70 + const value = this.$('input[type="text"]').value; 71 + fetch(`${this.searchBaseUrl}${encodeURIComponent(value)}&offset=${this.offset}`) 45 45 .then(res => res.json()) 46 46 .then(this.renderResults); 47 - 48 48 } 49 49 50 - get searchInput() { 51 - return this.$('input[type="text"]'); 52 - } 53 53 54 - get searchButton() { 55 - return this.$('#button'); 56 - } 57 - 58 - 59 59 get searchInputTemplate() { 60 60 return this.createTemplate(` 61 61 <div> ... ... @@ -67,7 +67,7 @@ 67 67 `); 68 68 } 69 69 70 - renderResults(results) { 88 + renderResults = (results) => { 71 71 const resultsContainer = this.$('#results'); 72 72 resultsContainer.replaceChildren(); 73 73 for(let i = 0, j = results.length; i < j; i++) {