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);
