contrib_todo_list-1.1.1/js/contrib-todo-select.js

js/contrib-todo-select.js
(function ($, Drupal) {
  'use strict';

  Drupal.behaviors.todoSelect = {
    attach: function (context, settings) {
      once('todoSelect', '.todo-select-wrapper', context).forEach(function(element) {
        const $wrapper = $(element);
        const $trigger = $wrapper.find('.todo-select__trigger');
        const $select = $wrapper.find('.todo-select');
        
        $trigger.on('click', function(e) {
          e.stopPropagation();
          if ($select.hasClass('open')) {
            $select.removeClass('open');
          } 
          else {
            $select.addClass('open');
          }
        });

        $wrapper.find('.todo-option').on('click', function() {
          const value = $(this).data('value');
          $trigger.find('span').text($(this).text());
          
          $('.todo-item').each(function() {
            const $todo = $(this);

            if (value === 'all') {
              $todo.removeClass('todo-none');
              return;
            }
            
            if (!$todo.hasClass(`todo-state-${value}`)) {
              $todo.addClass('todo-none');
            }
            else {
              $todo.removeClass('todo-none');
            }
          });
          
          $select.removeClass('open');
        });

        $(document).on('click', function() {
          $select.removeClass('open');
        });
      });
    }
  };
})(jQuery, Drupal);

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

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