[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 /** 2 * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> 3 * @license GNU General Public License version 2 or later; see LICENSE.txt 4 */ 5 ((Awesomplete, Joomla, window, document) => { 6 7 if (!Joomla) { 8 throw new Error('core.js was not properly initialised'); 9 } // Handle the autocomplete 10 11 12 const onInputChange = ({ 13 target 14 }) => { 15 if (target.value.length > 1) { 16 target.awesomplete.list = []; 17 Joomla.request({ 18 url: `$Joomla.getOptions('finder-search').url}&q=$target.value}`, 19 method: 'GET', 20 data: { 21 q: target.value 22 }, 23 perform: true, 24 headers: { 25 'Content-Type': 'application/x-www-form-urlencoded' 26 }, 27 onSuccess: resp => { 28 const response = JSON.parse(resp); 29 30 if (Object.prototype.toString.call(response.suggestions) === '[object Array]') { 31 target.awesomplete.list = response.suggestions; 32 } 33 }, 34 onError: xhr => { 35 if (xhr.status > 0) { 36 Joomla.renderMessages(Joomla.ajaxErrorsMessages(xhr)); 37 } 38 } 39 }); 40 } 41 }; // Handle the submit 42 43 44 const onSubmit = event => { 45 event.stopPropagation(); 46 const advanced = event.target.querySelector('.js-finder-advanced'); // Disable select boxes with no value selected. 47 48 if (advanced) { 49 const fields = [].slice.call(advanced.querySelectorAll('select')); 50 fields.forEach(field => { 51 if (!field.value) { 52 field.setAttribute('disabled', 'disabled'); 53 } 54 }); 55 } 56 }; // Submits the form programmatically 57 58 59 const submitForm = event => { 60 const form = event.target.closest('form'); 61 62 if (form) { 63 form.submit(); 64 } 65 }; // The boot sequence 66 67 68 const onBoot = () => { 69 const searchWords = [].slice.call(document.querySelectorAll('.js-finder-search-query')); 70 searchWords.forEach(searchword => { 71 // Handle the auto suggestion 72 if (Joomla.getOptions('finder-search')) { 73 searchword.awesomplete = new Awesomplete(searchword); // If the current value is empty, set the previous value. 74 75 searchword.addEventListener('input', onInputChange); 76 const advanced = searchword.closest('form').querySelector('.js-finder-advanced'); // Do not submit the form on suggestion selection, in case of advanced form. 77 78 if (!advanced) { 79 searchword.addEventListener('awesomplete-selectcomplete', submitForm); 80 } 81 } 82 }); 83 const forms = [].slice.call(document.querySelectorAll('.js-finder-searchform')); 84 forms.forEach(form => { 85 form.addEventListener('submit', onSubmit); 86 }); // Cleanup 87 88 document.removeEventListener('DOMContentLoaded', onBoot); 89 }; 90 91 document.addEventListener('DOMContentLoaded', onBoot); 92 })(window.Awesomplete, window.Joomla, window, document);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |