From f1ced42ae6bd1c73638d566962a3c689284ea2a3 Mon Sep 17 00:00:00 2001 From: zmagoD Date: Fri, 30 Apr 2021 15:25:08 +0200 Subject: [PATCH] add filtering logic --- app/assets/javascripts/application.js.erb | 1 + app/assets/javascripts/shared/filter_list.js | 20 +++++++++++++++++++ .../partials/_new_assignments_form.html.erb | 3 +++ .../partials/_user_assignment_field.html.erb | 2 +- config/locales/en.yml | 1 + 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/shared/filter_list.js diff --git a/app/assets/javascripts/application.js.erb b/app/assets/javascripts/application.js.erb index 474cd5e98..3ca3166e4 100644 --- a/app/assets/javascripts/application.js.erb +++ b/app/assets/javascripts/application.js.erb @@ -47,6 +47,7 @@ //= require shared/replace_form //= require shared/remote_destroy //= require shared/toggle_visibility +//= require shared/filter_list //= require activestorage //= require global_activities/side_pane //= require protocols/header diff --git a/app/assets/javascripts/shared/filter_list.js b/app/assets/javascripts/shared/filter_list.js new file mode 100644 index 000000000..c7d9d0844 --- /dev/null +++ b/app/assets/javascripts/shared/filter_list.js @@ -0,0 +1,20 @@ +(function() { + 'use strict'; + + function initFilterListListeners() { + $(document).on('input', 'input[data-action="filter-list"]', function() { + let list = document.getElementById($(this).attr('data-target')); + let searchTerm = $(this).val(); + $(list).find('div[data-filter-item]').each((_, el) => { + let itemValue = el.getAttribute('data-filter-item').toLowerCase(); + if (itemValue.search(searchTerm.toLowerCase()) === -1) { + el.classList.add('hidden'); + } else { + el.classList.remove('hidden'); + } + }); + }); + } + + $(document).one('turbolinks:load', initFilterListListeners); +})(); diff --git a/app/views/access_permissions/partials/_new_assignments_form.html.erb b/app/views/access_permissions/partials/_new_assignments_form.html.erb index f49c8eaca..67fef99c2 100644 --- a/app/views/access_permissions/partials/_new_assignments_form.html.erb +++ b/app/views/access_permissions/partials/_new_assignments_form.html.erb @@ -12,6 +12,9 @@ <%= form_with(model: form_object, url: create_path, method: :post, remote: true, html: { id: 'new-user-assignment-to-project-form', data: { action: 'replace-form', target: '#user_assignments_modal' } }) do |f| %>