Skip to content

Commit

Permalink
Add taxonomies/index component with dedicated index action
Browse files Browse the repository at this point in the history
  • Loading branch information
rainerdema committed Nov 29, 2023
1 parent f48bc8d commit 7c5c272
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<div class="px-4">
<header class="py-6 flex items-center">
<h1 class="body-title">
<%= title %>
</h1>

<div class="ml-auto flex gap-2 items-center">
<%= render component("ui/button").new(
tag: :a,
text: t('.create_taxonomy'),
href: spree.new_admin_taxonomy_path,
icon: "add-line",
) %>
</div>
</header>

<%= render component('ui/table').new(
id: 'taxonomies-list',
data: {
class: Spree::Taxonomy,
rows: @taxonomies,
url: ->(taxonomy) { spree.edit_admin_taxonomy_path(taxonomy) },
columns: columns,
batch_actions: batch_actions,
},
sortable: {
url: ->(taxonomy) { solidus_admin.move_taxonomy_path(taxonomy) },
param: 'position',
},
) %>
</div>
37 changes: 37 additions & 0 deletions admin/app/components/solidus_admin/taxonomies/index/component.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# frozen_string_literal: true

class SolidusAdmin::Taxonomies::Index::Component < SolidusAdmin::BaseComponent
def initialize(taxonomies:)
@taxonomies = taxonomies
end

def title
Spree::Taxonomy.model_name.human.pluralize
end

def columns
[
name_column,
]
end

def name_column
{
header: :name,
data: ->(taxonomy) do
content_tag :div, taxonomy.name
end
}
end

def batch_actions
[
{
display_name: t('.batch_actions.delete'),
action: solidus_admin.taxonomies_path,
method: :delete,
icon: 'delete-bin-7-line',
},
]
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
en:
batch_actions:
delete: 'Delete'
create_taxonomy: Create Taxonomy
8 changes: 8 additions & 0 deletions admin/app/controllers/solidus_admin/taxonomies_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ module SolidusAdmin
class TaxonomiesController < SolidusAdmin::BaseController
before_action :load_taxonomy, only: [:move]

def index
@taxonomies = Spree::Taxonomy.all

respond_to do |format|
format.html { render component('taxonomies/index').new(taxonomies: @taxonomies) }
end
end

def move
@taxonomy.insert_at(params[:position].to_i)

Expand Down
2 changes: 1 addition & 1 deletion admin/config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
end
end

resources :taxonomies do
resources :taxonomies, only: [:index] do
collection do
delete :destroy
end
Expand Down
24 changes: 24 additions & 0 deletions admin/spec/features/taxonomies_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# frozen_string_literal: true

require 'spec_helper'

describe "Taxonomies", :js, type: :feature do
before { sign_in create(:admin_user, email: '[email protected]') }

it "lists taxonomies and allows deleting them" do
create(:taxonomy, name: "Categories")
create(:taxonomy, name: "Brand")

visit "/admin/taxonomies"
expect(page).to have_content("Categories")
expect(page).to have_content("Brand")

expect(page).to be_axe_clean

select_row("Categories")
click_on "Delete"
expect(page).to have_content("Taxonomies were successfully removed.")
expect(page).not_to have_content("Categories")
expect(Spree::Taxonomy.count).to eq(1)
end
end

0 comments on commit 7c5c272

Please sign in to comment.