Skip to content
Snippets Groups Projects
Unverified Commit a7ad602e authored by Felix Eckhofer's avatar Felix Eckhofer :man_dancing:
Browse files

Add simple filter control for unassigned users

parent 0111cfad
No related branches found
No related tags found
No related merge requests found
...@@ -58,3 +58,6 @@ ...@@ -58,3 +58,6 @@
padding: 0 8px; padding: 0 8px;
border-right: 1px dashed gray; border-right: 1px dashed gray;
} }
.hidden {
display: none;
}
import { Controller } from "@hotwired/stimulus";
export default class extends Controller {
static targets = ["input", "list"];
connect() {
//this.options = Array.from(this.listTarget.children)
}
filter() {
const query = this.inputTarget.value.toLowerCase()
// Filter options by the `data-filteredlist-match` attribute
for (const option of this.listTarget.children) {
if (option.dataset.filteredlistMatch.includes(query)) {
option.classList.remove("hidden")
} else {
option.classList.add("hidden")
}
}
}
}
<div class="relative inline-block w-64" data-controller="filteredlist">
<div class="relative">
<input
type="text"
data-filteredlist-target="input"
data-action="input->filteredlist#filter"
autocomplete="off"
class="w-full border border-gray-300 rounded-md shadow-sm pl-3 pr-10 py-2 text-sm focus:ring-indigo-500 focus:border-indigo-500"
placeholder="Filter..."
/>
<ul data-filteredlist-target="list" class="flex flex-row flex-wrap gap-1 my-1 flex-shrink-0">
<% users.each do |user| %>
<%= render partial: 'assignments/filteredlist_option', locals: { session: session, user: user } %>
<% end %>
</ul>
</div>
</div>
<li
data-filteredlist-match="<%= user.name.downcase %>"
data-turbo-track="dynamic"
>
<%= render partial: 'assignments/user_add', locals: { user: user, session: session } %>
</li>
<% disabled = local_assigns.fetch(:disabled, false) %> <% disabled = local_assigns.fetch(:disabled, false) %>
<span class="unassigned-user">
<% if not disabled %> <% if not disabled %>
<span class="inline-flex items-center gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>"> <span class="inline-flex items-center gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>">
<span style="color: <%= user.text_color %>"><%= user.name %></span> <span style="color: <%= user.text_color %>"><%= user.name %></span>
...@@ -23,4 +24,5 @@ ...@@ -23,4 +24,5 @@
<span class="absolute -inset-1"></span> <span class="absolute -inset-1"></span>
</button> </button>
</span> </span>
<% end %> <% end %>
\ No newline at end of file </span>
<% unassigned_users = User.all - session.assignments.collect(&:user) %> <% unassigned_users = User.all - session.assignments.collect(&:user) %>
<%= turbo_frame_tag dom_id(session) do %> <%= turbo_frame_tag dom_id(session), method: "morph" do %>
<div class="session shadow hover:shadow-lg overflow-scroll text-sm w-full !h-full min-h-full hover:!min-h-max <%= session.translators_needed? ? "translators-needed" : "no-translators-needed" %> <%= session.backup_needed? ? "backup-needed" : "no-backup-needed" %> <%= session.assignees? ? "has-assignees" : "no-assignees" %> <%= (session.ends_at < Time.now ? "past" : "") %>"> <div class="session shadow hover:shadow-lg overflow-scroll text-sm w-full !h-full min-h-full hover:!min-h-max <%= session.translators_needed? ? "translators-needed" : "no-translators-needed" %> <%= session.backup_needed? ? "backup-needed" : "no-backup-needed" %> <%= session.assignees? ? "has-assignees" : "no-assignees" %> <%= (session.ends_at < Time.now ? "past" : "") %>">
<h4> <h4>
<small class="text-2xs uppercase font-light bg-black/10 rounded-sm p-1 mr-1 lang-<%= session.language %>"><%= session.language %></small> <small class="text-2xs uppercase font-light bg-black/10 rounded-sm p-1 mr-1 lang-<%= session.language %>"><%= session.language %></small>
...@@ -58,12 +58,6 @@ ...@@ -58,12 +58,6 @@
</div> </div>
<% end %> <% end %>
<small>unassigned (<%= unassigned_users.length %>)</small> <small>unassigned (<%= unassigned_users.length %>)</small>
<ul class="flex flex-row flex-wrap gap-1 my-1 flex-shrink-0"> <%= render partial: 'assignments/filteredlist', locals: { session: session, users: unassigned_users } %>
<% unassigned_users.each do |user| %>
<li>
<span class="unassigned-user"><%= render partial: 'assignments/user_add', locals: { user: user, session: session } %></span>
</li>
<% end %>
</ul>
</div> </div>
<% end %> <% end %>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment