[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/com_finder/js/ -> finder-es5.js (source)

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


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer