semanticui-8.x-1.x-dev/js/autocomplete.js

js/autocomplete.js
/**
 * @file
 * Updates Drupal autocomplete to use Fomantic UI styles.
 */

(function ($) {
  /**
   * Initializes Search selection on autocomplete fields.
   */
  Drupal.behaviors.autocompleteDropdown = {
    attach: function (context, settings) {
      const $dropdowns = $('.search.selection.dropdown');
      $dropdowns.once('search-autocomplete').each(function () {
        const $dropdown = $(this);
        $dropdown.dropdown({
          showOnFocus: false,
          selectOnKeydown: false,
          allowAdditions: true,
          forceSelection: false,
          onChange: function (value, text, $choice) {
            $('> [data-autocomplete-path]', $dropdown).val(value).trigger('change');
          },
          apiSettings: {
            url: $dropdown.find('> [data-autocomplete-path]').attr('data-autocomplete-path') + '?q={query}',
            onResponse: function (drupalResponse) {
              if (!drupalResponse) {
                return;
              }

              let response = {
                results: []
              };
              for (let key in drupalResponse) {
                response.results.push({
                  'name': drupalResponse[key].label,
                  'value': drupalResponse[key].value
                });
              }

              return response;
            }
          }
        });

        // Clear value if the field is empty and backspace or del key was hit.
        $dropdown.find('.search').on('keyup', function (event) {
          const keys = {
            backspace: 8,
            del: 46
          };
          if ($(this).val() === '' && (event.which === keys.backspace || event.which === keys.del)) {
            $dropdown.dropdown('clear');
          }
        });
      });
    }
  };

  Drupal.behaviors.autocompleteDisableSearch = {
    attach: function (context, settings) {
      const $autocompleteField = $('.field.disabled.autocomplete', context);
      if ($autocompleteField.length) {
        $('input.search', $autocompleteField).addClass('disabled').attr('disabled', 'disabled');
      }
    }
  };
})(jQuery);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc