{"version":3,"file":"search-autocomplete.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,C","sources":["webpack://nv-base-template/./src/js/search-autocomplete.js"],"sourcesContent":["/**\r\n * Search Autocomplete\r\n * @description : Search Autocomplete feature\r\n */\r\n\r\n// The main Vue instance to be used in the Header\r\nvar searchApp = new Vue({\r\n el: '#search-app',\r\n\r\n data: {\r\n loading: false, // Initial loading state\r\n refSearchField: '',\r\n searchTerm: '',\r\n searchResults: [],\r\n displayResultList: false,\r\n displayClearBtn: false,\r\n formActionUrl: ''\r\n },\r\n methods: {\r\n onKeyUpSearch: _.debounce(function (ref, event) {\r\n // console.log(event.target.value);\r\n this.searchTerm = event.target.value;\r\n this.fetchSearchSuggestion();\r\n }, 500),\r\n\r\n fetchSearchSuggestion: function () {\r\n this.searchResults = [];\r\n // console.log('request data', this.searchTerm);\r\n\r\n axios({\r\n method: 'get',\r\n url: `/api/autocomplete/get?letters=${this.searchTerm}`\r\n })\r\n .then(response => {\r\n this.searchResults = response.data;\r\n this.loading = false;\r\n // console.log('results data', response.data);\r\n })\r\n .catch(error => {\r\n this.errored = true;\r\n });\r\n },\r\n updateInputValue: function (value, event) {\r\n event.stopPropagation();\r\n this.searchTerm = value;\r\n this.displayResultList = false;\r\n document.getElementById('query').value = value;\r\n document.getElementById('searchform').submit();\r\n },\r\n clearSearchField: function (event) {\r\n event.stopPropagation();\r\n this.searchTerm = '';\r\n this.fetchSearchSuggestion();\r\n }\r\n },\r\n beforeMount: function () {\r\n var _self = this;\r\n _self.formActionUrl = _self.$el.getAttribute('data-search-page-url');\r\n },\r\n mounted: function () {\r\n var _self = this;\r\n\r\n setTimeout(() => {\r\n _self.$el.classList.add('is-loaded');\r\n _self.refSearchField = _self.$refs.search_field;\r\n }, 1000);\r\n },\r\n watch: {\r\n searchResults: function (newValue) {\r\n if (newValue.length > 0) {\r\n this.displayResultList = true;\r\n } else {\r\n this.displayResultList = false;\r\n }\r\n },\r\n searchTerm: function (newValue) {\r\n if (newValue !== '') {\r\n this.displayClearBtn = true;\r\n } else {\r\n this.displayClearBtn = false;\r\n }\r\n }\r\n },\r\n template: `\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n `\r\n});\r\n\r\nif (document.querySelector('#search-page-app')) {\r\n \r\n// The secondary Vue instance to be used in the Search Page\r\nvar searchPageApp = new Vue({\r\n el: '#search-page-app',\r\n\r\n data: {\r\n loading: false, // Initial loading state\r\n refSearchField: \"\",\r\n searchTerm: '',\r\n searchResults: [],\r\n displayResultList: false,\r\n displayClearBtn: false,\r\n formActionUrl: ''\r\n },\r\n beforeMount: function () {\r\n var _self = this;\r\n _self.formActionUrl = _self.$el.getAttribute('data-search-page-url');\r\n },\r\n methods: {\r\n onKeyUpSearch: _.debounce(function (ref, event) {\r\n // console.log(event.target.value);\r\n this.searchTerm = event.target.value;\r\n this.fetchSearchSuggestion();\r\n }, 500),\r\n\r\n fetchSearchSuggestion: function () {\r\n this.searchResults = [];\r\n // console.log('request data', this.searchTerm);\r\n axios({\r\n method: 'get',\r\n url: `/api/autocomplete/get?letters=${this.searchTerm}`\r\n })\r\n .then(response => {\r\n this.searchResults = response.data;\r\n this.loading = false;\r\n // console.log('results data', response.data);\r\n })\r\n .catch(error => {\r\n this.errored = true;\r\n });\r\n },\r\n updateInputValue: function (value, event) {\r\n event.stopPropagation();\r\n this.searchTerm = value;\r\n this.displayResultList = false;\r\n },\r\n clearSearchField: function (event) {\r\n event.stopPropagation();\r\n this.searchTerm = '';\r\n this.fetchSearchSuggestion();\r\n }\r\n },\r\n mounted: function () {\r\n var _self = this;\r\n\r\n setTimeout(() => {\r\n _self.$el.classList.add('is-loaded');\r\n _self.refSearchField = _self.$refs.search_field;\r\n }, 1000);\r\n },\r\n watch: {\r\n searchResults: function (newValue) {\r\n if (newValue.length > 0) {\r\n this.displayResultList = true;\r\n } else {\r\n this.displayResultList = false;\r\n }\r\n },\r\n searchTerm: function (newValue) {\r\n if (newValue !== '') {\r\n this.displayClearBtn = true;\r\n } else {\r\n this.displayClearBtn = false;\r\n }\r\n }\r\n },\r\n template: `\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n`\r\n});\r\n\r\n}"],"names":[],"sourceRoot":""}