-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move category dropdown menu content into a turbo frame (#782)
* Move category dropdown menu content into a turbo frame * Fix lint * Review fixes * Cleanup * Review fixes * Final cleanup * Revert schema change
- Loading branch information
1 parent
32748b0
commit ac27a1c
Showing
7 changed files
with
86 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
22 changes: 22 additions & 0 deletions
22
app/controllers/transactions/categories/dropdowns_controller.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
class Transactions::Categories::DropdownsController < ApplicationController | ||
before_action :set_from_params | ||
|
||
def show | ||
@categories = categories_scope.to_a.excluding(@selected_category).prepend(@selected_category).compact | ||
end | ||
|
||
private | ||
def set_from_params | ||
if params[:category_id] | ||
@selected_category = categories_scope.find(params[:category_id]) | ||
end | ||
|
||
if params[:transaction_id] | ||
@transaction = Current.family.transactions.find(params[:transaction_id]) | ||
end | ||
end | ||
|
||
def categories_scope | ||
Current.family.transaction_categories.alphabetically | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,15 @@ | ||
<%# locals: (transaction:) %> | ||
<div class="relative" data-controller="menu"> | ||
<button data-menu-target="button cursor-pointer" class="flex"> | ||
<button data-menu-target="button" class="flex cursor-pointer"> | ||
<%= render partial: "transactions/categories/badge", locals: { category: transaction.category } %> | ||
</button> | ||
<div data-menu-target="content" class="absolute z-10 hidden w-screen mt-2 max-w-min cursor-default"> | ||
<div class="w-64 text-sm font-semibold leading-6 text-gray-900 bg-white shadow-lg shrink rounded-xl ring-1 ring-gray-900/5"> | ||
<div class="flex flex-col relative" data-controller="list-filter"> | ||
<div class="grow p-1.5"> | ||
<div class="relative flex items-center bg-white border border-gray-200 rounded-lg"> | ||
<input placeholder="Search" autocomplete="nope" type="search" class="placeholder:text-sm placeholder:text-gray-500 font-normal h-10 relative pl-10 w-full border-none rounded-lg" data-list-filter-target="input" data-action="list-filter#filter"> | ||
<%= lucide_icon("search", class: "w-5 h-5 text-gray-500 ml-2 absolute inset-0 transform top-1/2 -translate-y-1/2") %> | ||
</div> | ||
<%= turbo_frame_tag "category_dropdown", src: transaction_category_dropdown_path(category_id: transaction.category_id, transaction_id: transaction.id), loading: :lazy do %> | ||
<div class="p-6 flex items-center justify-center"> | ||
<p class="text-sm text-gray-500 animate-pulse"><%= t(".loading") %></p> | ||
</div> | ||
<div data-list-filter-target="list" class="flex flex-col gap-0.5 p-1.5 mt-0.5 mr-2 max-h-64 overflow-y-scroll scrollbar"> | ||
<div class="pb-2 pl-4 mr-2 text-gray-500 hidden" data-list-filter-target="emptyMessage"> | ||
No categories found | ||
</div> | ||
<% sorted_categories = Current.family.transaction_categories.sort_by { |category| category.id == transaction.category_id ? 0 : 1 } %> | ||
<% sorted_categories.each do |category| %> | ||
<%= render partial: "transactions/categories/dropdown/row", locals: { category:, transaction: } %> | ||
<% end %> | ||
</div> | ||
<hr> | ||
<div class="relative p-1.5 w-full"> | ||
<%= link_to new_transaction_category_path(transaction_id: transaction), | ||
class: "flex text-sm font-medium items-center gap-2 text-gray-500 w-full rounded-lg p-2 hover:bg-gray-100", | ||
data: { turbo_frame: "modal" } do %> | ||
<%= lucide_icon "plus", class: "w-5 h-5" %> | ||
<%= t(".add_new") %> | ||
<% end %> | ||
<% if transaction.category %> | ||
<%= button_to transaction_path(transaction), | ||
method: :patch, | ||
params: { transaction: { category_id: nil } }, | ||
class: "flex text-sm font-medium items-center gap-2 text-gray-500 w-full rounded-lg p-2 hover:bg-gray-100" do %> | ||
<%= lucide_icon "minus", class: "w-5 h-5" %> | ||
<%= t(".clear") %> | ||
<% end %> | ||
<% end %> | ||
</div> | ||
</div> | ||
<% end %> | ||
</div> | ||
</div> | ||
</div> |
6 changes: 3 additions & 3 deletions
6
...actions/categories/dropdown/_row.html.erb → ...ctions/categories/dropdowns/_row.html.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
<%= turbo_frame_tag "category_dropdown" do %> | ||
<div class="flex flex-col relative" data-controller="list-filter"> | ||
<div class="grow p-1.5"> | ||
<div class="relative flex items-center bg-white border border-gray-200 rounded-lg"> | ||
<input placeholder="<%= t(".search_placeholder") %>" autocomplete="nope" type="search" class="placeholder:text-sm placeholder:text-gray-500 font-normal h-10 relative pl-10 w-full border-none rounded-lg" data-list-filter-target="input" data-action="list-filter#filter"> | ||
<%= lucide_icon("search", class: "w-5 h-5 text-gray-500 ml-2 absolute inset-0 transform top-1/2 -translate-y-1/2") %> | ||
</div> | ||
</div> | ||
<div data-list-filter-target="list" class="flex flex-col gap-0.5 p-1.5 mt-0.5 mr-2 max-h-64 overflow-y-scroll scrollbar"> | ||
<div class="pb-2 pl-4 mr-2 text-gray-500 hidden" data-list-filter-target="emptyMessage"> | ||
<%= t(".no_categories") %> | ||
</div> | ||
<% @categories.each do |category| %> | ||
<%= render partial: "transactions/categories/dropdowns/row", locals: { category: } %> | ||
<% end %> | ||
</div> | ||
<hr> | ||
<div class="relative p-1.5 w-full"> | ||
<%= link_to new_transaction_category_path(transaction_id: @transaction), | ||
class: "flex text-sm font-medium items-center gap-2 text-gray-500 w-full rounded-lg p-2 hover:bg-gray-100", | ||
data: { turbo_frame: "modal" } do %> | ||
<%= lucide_icon "plus", class: "w-5 h-5" %> | ||
<%= t(".add_new") %> | ||
<% end %> | ||
<% if @transaction.category %> | ||
<%= button_to transaction_path(@transaction), | ||
method: :patch, | ||
params: { transaction: { category_id: nil } }, | ||
class: "flex text-sm font-medium items-center gap-2 text-gray-500 w-full rounded-lg p-2 hover:bg-gray-100" do %> | ||
<%= lucide_icon "minus", class: "w-5 h-5" %> | ||
<%= t(".clear") %> | ||
<% end %> | ||
<% end %> | ||
</div> | ||
</div> | ||
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters