solidus_admin 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +60 -6
- data/Rakefile +1 -0
- data/app/assets/builds/solidus_admin/tailwind.css +198 -163
- data/app/assets/stylesheets/solidus_admin/dark.css +1 -0
- data/app/assets/stylesheets/solidus_admin/dimmed.css +1 -0
- data/app/components/solidus_admin/adjustment_reasons/edit/component.html.erb +27 -0
- data/app/components/solidus_admin/adjustment_reasons/edit/component.rb +12 -0
- data/app/components/solidus_admin/adjustment_reasons/edit/component.yml +8 -0
- data/app/components/solidus_admin/adjustment_reasons/index/component.rb +19 -2
- data/app/components/solidus_admin/adjustment_reasons/new/component.html.erb +28 -0
- data/app/components/solidus_admin/adjustment_reasons/new/component.rb +12 -0
- data/app/components/solidus_admin/adjustment_reasons/new/component.yml +8 -0
- data/app/components/solidus_admin/base_component.rb +0 -25
- data/app/components/solidus_admin/option_types/index/component.rb +1 -1
- data/app/components/solidus_admin/orders/index/component.rb +8 -8
- data/app/components/solidus_admin/orders/index/component.yml +1 -0
- data/app/components/solidus_admin/orders/show/address/component.html.erb +56 -54
- data/app/components/solidus_admin/orders/show/adjustments/index/adjustable/component.rb +27 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/adjustable/spree_line_item/component.rb +14 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/adjustable/spree_order/component.rb +11 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/adjustable/spree_shipment/component.rb +15 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/component.rb +147 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/component.yml +21 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/source/component.rb +26 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/source/spree_tax_rate/component.rb +17 -0
- data/app/components/solidus_admin/orders/show/adjustments/index/source/spree_unit_cancel/component.rb +7 -0
- data/app/components/solidus_admin/orders/show/component.html.erb +7 -3
- data/app/components/solidus_admin/orders/show/component.rb +8 -0
- data/app/components/solidus_admin/orders/show/email/component.html.erb +18 -13
- data/app/components/solidus_admin/orders/show/email/component.rb +0 -4
- data/app/components/solidus_admin/orders/show/summary/component.html.erb +1 -1
- data/app/components/solidus_admin/payment_methods/index/component.rb +1 -1
- data/app/components/solidus_admin/products/index/component.rb +8 -5
- data/app/components/solidus_admin/products/show/component.html.erb +14 -3
- data/app/components/solidus_admin/products/status/component.rb +4 -1
- data/app/components/solidus_admin/products/status/component.yml +1 -0
- data/app/components/solidus_admin/properties/index/component.rb +1 -1
- data/app/components/solidus_admin/refund_reasons/edit/component.html.erb +27 -0
- data/app/components/solidus_admin/refund_reasons/edit/component.rb +12 -0
- data/app/components/solidus_admin/refund_reasons/edit/component.yml +8 -0
- data/app/components/solidus_admin/refund_reasons/index/component.rb +11 -4
- data/app/components/solidus_admin/refund_reasons/new/component.html.erb +27 -0
- data/app/components/solidus_admin/refund_reasons/new/component.rb +12 -0
- data/app/components/solidus_admin/refund_reasons/new/component.yml +6 -0
- data/app/components/solidus_admin/return_reasons/edit/component.html.erb +26 -0
- data/app/components/solidus_admin/return_reasons/edit/component.rb +12 -0
- data/app/components/solidus_admin/return_reasons/edit/component.yml +8 -0
- data/app/components/solidus_admin/return_reasons/index/component.rb +20 -2
- data/app/components/solidus_admin/return_reasons/new/component.html.erb +27 -0
- data/app/components/solidus_admin/return_reasons/new/component.rb +12 -0
- data/app/components/solidus_admin/return_reasons/new/component.yml +8 -0
- data/app/components/solidus_admin/roles/edit/component.html.erb +33 -0
- data/app/components/solidus_admin/roles/edit/component.rb +20 -0
- data/app/components/solidus_admin/roles/edit/component.yml +19 -0
- data/app/components/solidus_admin/roles/index/component.rb +70 -0
- data/app/components/solidus_admin/roles/index/component.yml +6 -0
- data/app/components/solidus_admin/roles/new/component.html.erb +33 -0
- data/app/components/solidus_admin/roles/new/component.rb +20 -0
- data/app/components/solidus_admin/roles/new/component.yml +19 -0
- data/app/components/solidus_admin/shipping_categories/edit/component.html.erb +16 -0
- data/app/components/solidus_admin/shipping_categories/edit/component.rb +12 -0
- data/app/components/solidus_admin/shipping_categories/edit/component.yml +6 -0
- data/app/components/solidus_admin/shipping_categories/index/component.rb +20 -3
- data/app/components/solidus_admin/shipping_categories/new/component.html.erb +17 -0
- data/app/components/solidus_admin/shipping_categories/new/component.rb +12 -0
- data/app/components/solidus_admin/shipping_categories/new/component.yml +6 -0
- data/app/components/solidus_admin/shipping_methods/index/component.rb +2 -2
- data/app/components/solidus_admin/stock_items/edit/component.html.erb +66 -72
- data/app/components/solidus_admin/stock_items/edit/component.rb +0 -5
- data/app/components/solidus_admin/stock_items/index/component.rb +5 -6
- data/app/components/solidus_admin/stock_locations/index/component.rb +1 -1
- data/app/components/solidus_admin/store_credit_reasons/edit/component.html.erb +26 -0
- data/app/components/solidus_admin/store_credit_reasons/edit/component.rb +12 -0
- data/app/components/solidus_admin/store_credit_reasons/edit/component.yml +8 -0
- data/app/components/solidus_admin/store_credit_reasons/index/component.rb +11 -4
- data/app/components/solidus_admin/store_credit_reasons/new/component.html.erb +27 -0
- data/app/components/solidus_admin/store_credit_reasons/new/component.rb +12 -0
- data/app/components/solidus_admin/store_credit_reasons/new/component.yml +8 -0
- data/app/components/solidus_admin/stores/index/component.rb +1 -1
- data/app/components/solidus_admin/tax_categories/edit/component.html.erb +28 -0
- data/app/components/solidus_admin/tax_categories/edit/component.rb +12 -0
- data/app/components/solidus_admin/tax_categories/edit/component.yml +8 -0
- data/app/components/solidus_admin/tax_categories/index/component.rb +11 -4
- data/app/components/solidus_admin/tax_categories/new/component.html.erb +28 -0
- data/app/components/solidus_admin/tax_categories/new/component.rb +12 -0
- data/app/components/solidus_admin/tax_categories/new/component.yml +8 -0
- data/app/components/solidus_admin/tax_rates/index/component.rb +3 -3
- data/app/components/solidus_admin/taxonomies/index/component.rb +1 -1
- data/app/components/solidus_admin/ui/button/component.rb +1 -1
- data/app/components/solidus_admin/ui/checkbox_row/component.html.erb +29 -0
- data/app/components/solidus_admin/ui/checkbox_row/component.rb +11 -0
- data/app/components/solidus_admin/ui/forms/address/component.html.erb +27 -9
- data/app/components/solidus_admin/ui/forms/address/component.js +38 -13
- data/app/components/solidus_admin/ui/forms/search/component.html.erb +2 -3
- data/app/components/solidus_admin/ui/forms/search/component.js +3 -3
- data/app/components/solidus_admin/ui/modal/component.html.erb +7 -7
- data/app/components/solidus_admin/ui/modal/component.js +7 -0
- data/app/components/solidus_admin/ui/modal/component.rb +1 -1
- data/app/components/solidus_admin/ui/pages/index/component.html.erb +17 -3
- data/app/components/solidus_admin/ui/pages/index/component.rb +29 -43
- data/app/components/solidus_admin/ui/panel/component.html.erb +5 -16
- data/app/components/solidus_admin/ui/panel/component.rb +11 -7
- data/app/components/solidus_admin/ui/table/component.js +31 -2
- data/app/components/solidus_admin/ui/table/component.rb +23 -7
- data/app/components/solidus_admin/ui/table/component.yml +1 -0
- data/app/components/solidus_admin/ui/thumbnail/component.rb +1 -1
- data/app/components/solidus_admin/ui/thumbnail_with_caption/component.html.erb +17 -0
- data/app/components/solidus_admin/ui/thumbnail_with_caption/component.rb +15 -0
- data/app/components/solidus_admin/users/addresses/component.html.erb +46 -0
- data/app/components/solidus_admin/users/addresses/component.rb +61 -0
- data/app/components/solidus_admin/users/addresses/component.yml +14 -0
- data/app/components/solidus_admin/users/edit/api_access/component.html.erb +49 -0
- data/app/components/solidus_admin/users/edit/api_access/component.js +9 -0
- data/app/components/solidus_admin/users/edit/api_access/component.rb +7 -0
- data/app/components/solidus_admin/users/edit/api_access/component.yml +10 -0
- data/app/components/solidus_admin/users/edit/component.html.erb +52 -0
- data/app/components/solidus_admin/users/edit/component.rb +51 -0
- data/app/components/solidus_admin/users/edit/component.yml +12 -0
- data/app/components/solidus_admin/users/index/component.rb +10 -8
- data/app/components/solidus_admin/users/items/component.html.erb +41 -0
- data/app/components/solidus_admin/users/items/component.rb +170 -0
- data/app/components/solidus_admin/users/items/component.yml +16 -0
- data/app/components/solidus_admin/users/orders/component.html.erb +42 -0
- data/app/components/solidus_admin/users/orders/component.rb +131 -0
- data/app/components/solidus_admin/users/orders/component.yml +12 -0
- data/app/components/solidus_admin/users/stats/component.html.erb +11 -0
- data/app/components/solidus_admin/users/stats/component.rb +9 -0
- data/app/components/solidus_admin/users/stats/component.yml +2 -0
- data/app/components/solidus_admin/users_and_roles/component.rb +24 -0
- data/app/components/solidus_admin/users_and_roles/component.yml +2 -0
- data/app/components/solidus_admin/zones/index/component.rb +1 -1
- data/app/controllers/solidus_admin/addresses_controller.rb +6 -1
- data/app/controllers/solidus_admin/adjustment_reasons_controller.rb +85 -10
- data/app/controllers/solidus_admin/adjustments_controller.rb +57 -0
- data/app/controllers/solidus_admin/customers_controller.rb +5 -1
- data/app/controllers/solidus_admin/orders_controller.rb +5 -1
- data/app/controllers/solidus_admin/products_controller.rb +11 -0
- data/app/controllers/solidus_admin/refund_reasons_controller.rb +85 -10
- data/app/controllers/solidus_admin/reimbursement_types_controller.rb +0 -5
- data/app/controllers/solidus_admin/return_reasons_controller.rb +85 -10
- data/app/controllers/solidus_admin/roles_controller.rb +118 -0
- data/app/controllers/solidus_admin/shipping_categories_controller.rb +87 -10
- data/app/controllers/solidus_admin/shipping_methods_controller.rb +0 -5
- data/app/controllers/solidus_admin/stock_items_controller.rb +6 -6
- data/app/controllers/solidus_admin/stock_locations_controller.rb +0 -5
- data/app/controllers/solidus_admin/store_credit_reasons_controller.rb +85 -10
- data/app/controllers/solidus_admin/stores_controller.rb +0 -5
- data/app/controllers/solidus_admin/tax_categories_controller.rb +89 -10
- data/app/controllers/solidus_admin/tax_rates_controller.rb +0 -5
- data/app/controllers/solidus_admin/users_controller.rb +85 -6
- data/app/controllers/solidus_admin/zones_controller.rb +0 -5
- data/app/helpers/solidus_admin/last_login_helper.rb +16 -0
- data/app/helpers/solidus_admin/permission_sets_helper.rb +32 -0
- data/app/views/layouts/solidus_admin/application.html.erb +2 -1
- data/config/locales/adjustment_reasons.en.yml +5 -1
- data/config/locales/adjustments.en.yml +10 -0
- data/config/locales/refund_reasons.en.yml +10 -0
- data/config/locales/return_reasons.en.yml +5 -1
- data/config/locales/roles.en.yml +10 -0
- data/config/locales/shipping_categories.en.yml +4 -0
- data/config/locales/store_credit_reasons.en.yml +5 -1
- data/config/locales/tax_categories.en.yml +4 -0
- data/config/locales/users.en.yml +10 -0
- data/config/routes.rb +24 -7
- data/docs/components.md +109 -0
- data/docs/{customizing_view_components.md → customizing_components.md} +2 -7
- data/docs/index_pages.md +146 -0
- data/docs/{customizing_menu_items.md → menu_items.md} +1 -1
- data/docs/stimulusjs.md +85 -0
- data/docs/{customizing_tailwindcss.md → tailwindcss.md} +27 -8
- data/lib/solidus_admin/component_registry.rb +40 -0
- data/lib/solidus_admin/configuration.rb +2 -26
- data/lib/solidus_admin/install_tailwindcss.rb +4 -2
- data/lib/solidus_admin/testing_support/admin_assets.rb +10 -0
- data/lib/solidus_admin/testing_support/component_helpers.rb +27 -0
- data/lib/solidus_admin/testing_support/dummy_app/rake_tasks.rb +60 -0
- data/lib/solidus_admin/testing_support/feature_helpers.rb +34 -0
- data/lib/solidus_admin/version.rb +1 -1
- data/solidus_admin.gemspec +7 -3
- metadata +108 -19
- data/app/components/solidus_admin/promotion_categories/index/component.rb +0 -56
- data/app/components/solidus_admin/promotions/index/component.rb +0 -104
- data/app/components/solidus_admin/promotions/index/component.yml +0 -10
- data/app/controllers/solidus_admin/promotion_categories_controller.rb +0 -29
- data/app/controllers/solidus_admin/promotions_controller.rb +0 -46
- data/config/locales/promotion_categories.en.yml +0 -6
- data/config/locales/promotions.en.yml +0 -6
- data/config/locales/refund_reasons_.en.yml +0 -6
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::Roles::New::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
include SolidusAdmin::PermissionSetsHelper
|
|
5
|
+
|
|
6
|
+
def initialize(page:, role:)
|
|
7
|
+
@page = page
|
|
8
|
+
@role = role
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def form_id
|
|
12
|
+
dom_id(@role, "#{stimulus_id}_new_role_form")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def permission_set_options
|
|
18
|
+
@permission_set_options ||= organize_permissions(permission_sets: Spree::PermissionSet.all, view_label: t(".view"), edit_label: t(".edit"))
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Add your component translations here.
|
|
2
|
+
# Use the translation in the example in your template with `t(".hello")`.
|
|
3
|
+
en:
|
|
4
|
+
title: "New Role"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Add Role"
|
|
7
|
+
edit: "Edit"
|
|
8
|
+
view: "View"
|
|
9
|
+
name_placeholder: "Enter a clear role name"
|
|
10
|
+
description_placeholder: "Enter a brief description"
|
|
11
|
+
choose_permissions: "Choose permissions"
|
|
12
|
+
orders: "Orders"
|
|
13
|
+
products: "Products"
|
|
14
|
+
stock: "Stock"
|
|
15
|
+
restricted_stock: "Restricted Stock"
|
|
16
|
+
customers: "Customers"
|
|
17
|
+
promotions: "Promotions"
|
|
18
|
+
settings: "Settings"
|
|
19
|
+
other: "Other permissions"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<%= turbo_frame_tag :edit_shipping_category_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @shipping_category, url: solidus_admin.shipping_category_path(@shipping_category), html: { id: form_id } do |f| %>
|
|
4
|
+
<div class="flex flex-col gap-6 pb-4">
|
|
5
|
+
<%= render component("ui/forms/field").text_field(f, :name) %>
|
|
6
|
+
</div>
|
|
7
|
+
<% modal.with_actions do %>
|
|
8
|
+
<form method="dialog">
|
|
9
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
10
|
+
</form>
|
|
11
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
<% end %>
|
|
16
|
+
<%= render component("shipping_categories/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::ShippingCategories::Edit::Component < SolidusAdmin::ShippingCategories::Index::Component
|
|
4
|
+
def initialize(page:, shipping_category:)
|
|
5
|
+
@page = page
|
|
6
|
+
@shipping_category = shipping_category
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@shipping_category, "#{stimulus_id}_edit_shipping_category_form")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -15,12 +15,29 @@ class SolidusAdmin::ShippingCategories::Index::Component < SolidusAdmin::Shippin
|
|
|
15
15
|
)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def page_actions
|
|
19
|
+
render component("ui/button").new(
|
|
20
|
+
tag: :a,
|
|
21
|
+
text: t('.add'),
|
|
22
|
+
href: solidus_admin.new_shipping_category_path, data: { turbo_frame: :new_shipping_category_modal },
|
|
23
|
+
icon: "add-line",
|
|
24
|
+
class: "align-self-end w-full",
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def turbo_frames
|
|
29
|
+
%w[
|
|
30
|
+
new_shipping_category_modal
|
|
31
|
+
edit_shipping_category_modal
|
|
32
|
+
]
|
|
33
|
+
end
|
|
34
|
+
|
|
18
35
|
def row_url(shipping_category)
|
|
19
|
-
spree.edit_admin_shipping_category_path(shipping_category)
|
|
36
|
+
spree.edit_admin_shipping_category_path(shipping_category, _turbo_frame: :edit_shipping_category_modal)
|
|
20
37
|
end
|
|
21
38
|
|
|
22
39
|
def search_key
|
|
23
|
-
:
|
|
40
|
+
:name_cont
|
|
24
41
|
end
|
|
25
42
|
|
|
26
43
|
def search_url
|
|
@@ -30,7 +47,7 @@ class SolidusAdmin::ShippingCategories::Index::Component < SolidusAdmin::Shippin
|
|
|
30
47
|
def batch_actions
|
|
31
48
|
[
|
|
32
49
|
{
|
|
33
|
-
|
|
50
|
+
label: t('.batch_actions.delete'),
|
|
34
51
|
action: solidus_admin.shipping_categories_path,
|
|
35
52
|
method: :delete,
|
|
36
53
|
icon: 'delete-bin-7-line',
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<%= turbo_frame_tag :new_shipping_category_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @shipping_category, url: solidus_admin.shipping_categories_path(page: params[:page], q: params[:q]), html: { id: form_id } do |f| %>
|
|
4
|
+
<div class="flex flex-col gap-6 pb-4">
|
|
5
|
+
<%= render component("ui/forms/field").text_field(f, :name) %>
|
|
6
|
+
</div>
|
|
7
|
+
<% modal.with_actions do %>
|
|
8
|
+
<form method="dialog">
|
|
9
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
10
|
+
</form>
|
|
11
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
<% end %>
|
|
16
|
+
|
|
17
|
+
<%= render component("shipping_categories/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::ShippingCategories::New::Component < SolidusAdmin::ShippingCategories::Index::Component
|
|
4
|
+
def initialize(page:, shipping_category:)
|
|
5
|
+
@page = page
|
|
6
|
+
@shipping_category = shipping_category
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@shipping_category, "#{stimulus_id}_new_shipping_category_form")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -17,7 +17,7 @@ class SolidusAdmin::ShippingMethods::Index::Component < SolidusAdmin::Shipping::
|
|
|
17
17
|
:name_or_description_cont
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def
|
|
20
|
+
def page_actions
|
|
21
21
|
render component("ui/button").new(
|
|
22
22
|
tag: :a,
|
|
23
23
|
text: t('.add'),
|
|
@@ -30,7 +30,7 @@ class SolidusAdmin::ShippingMethods::Index::Component < SolidusAdmin::Shipping::
|
|
|
30
30
|
def batch_actions
|
|
31
31
|
[
|
|
32
32
|
{
|
|
33
|
-
|
|
33
|
+
label: t('.batch_actions.delete'),
|
|
34
34
|
action: solidus_admin.shipping_methods_path,
|
|
35
35
|
method: :delete,
|
|
36
36
|
icon: 'delete-bin-7-line',
|
|
@@ -3,85 +3,79 @@
|
|
|
3
3
|
data-<%= stimulus_id %>-initial-count-on-hand-value="<%= @stock_item.count_on_hand_was || @stock_item.count_on_hand %>"
|
|
4
4
|
data-action="input-><%= stimulus_id %>#updateCountOnHand"
|
|
5
5
|
>
|
|
6
|
-
<%=
|
|
7
|
-
<%=
|
|
8
|
-
|
|
9
|
-
<div class="flex gap-4">
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@stock_item.variant.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<%=
|
|
27
|
-
|
|
28
|
-
|
|
6
|
+
<%= turbo_frame_tag :edit_stock_item_modal do %>
|
|
7
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
8
|
+
<%= form_for @stock_item, url: solidus_admin.stock_item_path(@stock_item), html: { id: form_id } do |f| %>
|
|
9
|
+
<div class="flex flex-col gap-6 pb-4">
|
|
10
|
+
<div class="flex gap-4">
|
|
11
|
+
<%= link_to spree.edit_admin_product_variant_path(
|
|
12
|
+
@stock_item.variant.product,
|
|
13
|
+
@stock_item.variant,
|
|
14
|
+
), class: 'hover:bg-gray-25 rounded p-1 w-1/2 border border-gray-100' do %>
|
|
15
|
+
<%= render component("ui/resource_item").new(
|
|
16
|
+
thumbnail:
|
|
17
|
+
(
|
|
18
|
+
@stock_item.variant.images.first ||
|
|
19
|
+
@stock_item.variant.product.gallery.images.first
|
|
20
|
+
)&.url(:small),
|
|
21
|
+
title: @stock_item.variant.name,
|
|
22
|
+
subtitle:
|
|
23
|
+
"#{@stock_item.variant.sku}#{@stock_item.variant.options_text.presence&.prepend(" - ")}",
|
|
24
|
+
) %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<%= link_to spree.edit_admin_stock_location_path(@stock_item.stock_location), class: 'hover:bg-gray-25 rounded p-1 w-1/2 border border-gray-100' do %>
|
|
27
|
+
<%= render component("ui/resource_item").new(
|
|
28
|
+
title: @stock_item.stock_location.name,
|
|
29
|
+
subtitle: "#{Spree::StockLocation.model_name.human} #{@stock_item.stock_location.code}",
|
|
30
|
+
) %>
|
|
31
|
+
<% end %>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<%= render component("ui/forms/field").text_field(
|
|
35
|
+
f,
|
|
36
|
+
:count_on_hand,
|
|
37
|
+
disabled: true,
|
|
38
|
+
value: @stock_item.count_on_hand_was || @stock_item.count_on_hand,
|
|
39
|
+
"data-#{stimulus_id}-target": 'countOnHand',
|
|
40
|
+
) %>
|
|
41
|
+
<%= render component("ui/forms/field").new(
|
|
42
|
+
label: t(".quantity_adjustment"),
|
|
43
|
+
hint: t(".quantity_adjustment_hint_html"),
|
|
44
|
+
) do %>
|
|
45
|
+
<%= render component("ui/forms/input").new(
|
|
46
|
+
value: params[:quantity_adjustment] || 0,
|
|
47
|
+
name: :quantity_adjustment,
|
|
48
|
+
type: :number,
|
|
49
|
+
step: 1,
|
|
50
|
+
"data-#{stimulus_id}-target": 'quantityAdjustment',
|
|
29
51
|
) %>
|
|
30
52
|
<% end %>
|
|
53
|
+
|
|
54
|
+
<%= render component("ui/forms/switch_field").new(
|
|
55
|
+
name: "#{f.object_name}[backorderable]",
|
|
56
|
+
label: Spree::StockItem.human_attribute_name(:backorderable),
|
|
57
|
+
error: f.object.errors[:backorderable],
|
|
58
|
+
hint: t(".backorderable_hint_html"),
|
|
59
|
+
checked: f.object.backorderable?,
|
|
60
|
+
include_hidden: true,
|
|
61
|
+
) %>
|
|
31
62
|
</div>
|
|
63
|
+
<% end %>
|
|
32
64
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"data-#{stimulus_id}-target": 'countOnHand',
|
|
39
|
-
) %>
|
|
40
|
-
<%= render component("ui/forms/field").new(
|
|
41
|
-
label: t(".quantity_adjustment"),
|
|
42
|
-
hint: t(".quantity_adjustment_hint_html"),
|
|
43
|
-
) do %>
|
|
44
|
-
<%= render component("ui/forms/input").new(
|
|
45
|
-
value: params[:quantity_adjustment] || 0,
|
|
46
|
-
name: :quantity_adjustment,
|
|
47
|
-
type: :number,
|
|
48
|
-
step: 1,
|
|
49
|
-
"data-#{stimulus_id}-target": 'quantityAdjustment',
|
|
65
|
+
<% modal.with_actions do %>
|
|
66
|
+
<form method="dialog">
|
|
67
|
+
<%= render component("ui/button").new(
|
|
68
|
+
scheme: :secondary,
|
|
69
|
+
text: t(".cancel"),
|
|
50
70
|
) %>
|
|
51
|
-
|
|
71
|
+
</form>
|
|
52
72
|
|
|
53
|
-
<%= render component("ui/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
hint: t(".backorderable_hint_html"),
|
|
58
|
-
checked: f.object.backorderable?,
|
|
59
|
-
include_hidden: true,
|
|
73
|
+
<%= render component("ui/button").new(
|
|
74
|
+
tag: :button,
|
|
75
|
+
text: t(".submit"),
|
|
76
|
+
form: form_id,
|
|
60
77
|
) %>
|
|
61
|
-
|
|
62
|
-
<% if params[:q] %>
|
|
63
|
-
<%= f.hidden_field :q, value: params[:q].to_json, id: false %>
|
|
64
|
-
<% end %>
|
|
65
|
-
|
|
66
|
-
<% if params[:page] %>
|
|
67
|
-
<%= f.hidden_field :page, value: params[:page], id: false %>
|
|
68
|
-
<% end %>
|
|
69
|
-
</div>
|
|
70
|
-
<% end %>
|
|
71
|
-
|
|
72
|
-
<% modal.with_actions do %>
|
|
73
|
-
<%= render component("ui/button").new(
|
|
74
|
-
tag: :a,
|
|
75
|
-
scheme: :secondary,
|
|
76
|
-
text: t(".cancel"),
|
|
77
|
-
href: solidus_admin.stock_items_path(page: params[:page], q: params[:q]),
|
|
78
|
-
) %>
|
|
79
|
-
|
|
80
|
-
<%= render component("ui/button").new(
|
|
81
|
-
tag: :button,
|
|
82
|
-
text: t(".submit"),
|
|
83
|
-
form: form_id,
|
|
84
|
-
) %>
|
|
78
|
+
<% end %>
|
|
85
79
|
<% end %>
|
|
86
80
|
<% end %>
|
|
87
81
|
|
|
@@ -14,7 +14,7 @@ class SolidusAdmin::StockItems::Index::Component < SolidusAdmin::UI::Pages::Inde
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def row_url(stock_item)
|
|
17
|
-
solidus_admin.edit_stock_item_path(stock_item,
|
|
17
|
+
solidus_admin.edit_stock_item_path(stock_item, _turbo_frame: :edit_stock_item_modal)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def scopes
|
|
@@ -30,7 +30,7 @@ class SolidusAdmin::StockItems::Index::Component < SolidusAdmin::UI::Pages::Inde
|
|
|
30
30
|
def filters
|
|
31
31
|
[
|
|
32
32
|
{
|
|
33
|
-
|
|
33
|
+
label: t('.filters.stock_locations'),
|
|
34
34
|
combinator: 'or',
|
|
35
35
|
attribute: "stock_location_id",
|
|
36
36
|
predicate: "eq",
|
|
@@ -42,7 +42,7 @@ class SolidusAdmin::StockItems::Index::Component < SolidusAdmin::UI::Pages::Inde
|
|
|
42
42
|
end
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
|
|
45
|
+
label: t('.filters.variants'),
|
|
46
46
|
combinator: 'or',
|
|
47
47
|
attribute: "variant_id",
|
|
48
48
|
predicate: "eq",
|
|
@@ -167,8 +167,7 @@ class SolidusAdmin::StockItems::Index::Component < SolidusAdmin::UI::Pages::Inde
|
|
|
167
167
|
}
|
|
168
168
|
end
|
|
169
169
|
|
|
170
|
-
def
|
|
171
|
-
|
|
172
|
-
{}
|
|
170
|
+
def turbo_frames
|
|
171
|
+
%w[edit_stock_item_modal]
|
|
173
172
|
end
|
|
174
173
|
end
|
|
@@ -30,7 +30,7 @@ class SolidusAdmin::StockLocations::Index::Component < SolidusAdmin::Shipping::C
|
|
|
30
30
|
def batch_actions
|
|
31
31
|
[
|
|
32
32
|
{
|
|
33
|
-
|
|
33
|
+
label: t('.batch_actions.delete'),
|
|
34
34
|
action: solidus_admin.stock_locations_path,
|
|
35
35
|
method: :delete,
|
|
36
36
|
icon: 'delete-bin-7-line',
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<%= turbo_frame_tag :edit_store_credit_reason_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @store_credit_reason, url: solidus_admin.store_credit_reason_path(@store_credit_reason), html: { id: form_id } do |f| %>
|
|
4
|
+
<div class="flex flex-col gap-6 pb-4">
|
|
5
|
+
<%= render component("ui/forms/field").text_field(f, :name, class: "required") %>
|
|
6
|
+
<label class="flex gap-2 items-center">
|
|
7
|
+
<%= hidden_field_tag "#{f.object_name}[active]", "0" %>
|
|
8
|
+
<%= render component("ui/forms/checkbox").new(
|
|
9
|
+
name: "#{f.object_name}[active]",
|
|
10
|
+
value: "1",
|
|
11
|
+
checked: f.object.active
|
|
12
|
+
) %>
|
|
13
|
+
<span class="font-semibold text-xs ml-2"><%= Spree::StoreCreditReason.human_attribute_name :active %></span>
|
|
14
|
+
<%= render component("ui/toggletip").new(text: t(".hints.active")) %>
|
|
15
|
+
</label>
|
|
16
|
+
</div>
|
|
17
|
+
<% modal.with_actions do %>
|
|
18
|
+
<form method="dialog">
|
|
19
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
20
|
+
</form>
|
|
21
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
22
|
+
<% end %>
|
|
23
|
+
<% end %>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<%= render component("store_credit_reasons/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::StoreCreditReasons::Edit::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
def initialize(page:, store_credit_reason:)
|
|
5
|
+
@page = page
|
|
6
|
+
@store_credit_reason = store_credit_reason
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@store_credit_reason, "#{stimulus_id}_edit_store_credit_reason_form")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Add your component translations here.
|
|
2
|
+
# Use the translation in the example in your template with `t(".hello")`.
|
|
3
|
+
en:
|
|
4
|
+
title: "Edit Store Credit Reason"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Update Store Credit Reason"
|
|
7
|
+
hints:
|
|
8
|
+
active: "When checked, this store credit reason will be available for selection when adding store credit to orders."
|
|
@@ -5,18 +5,25 @@ class SolidusAdmin::StoreCreditReasons::Index::Component < SolidusAdmin::Refunds
|
|
|
5
5
|
Spree::StoreCreditReason
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
def
|
|
8
|
+
def page_actions
|
|
9
9
|
render component("ui/button").new(
|
|
10
10
|
tag: :a,
|
|
11
11
|
text: t('.add'),
|
|
12
|
-
href:
|
|
12
|
+
href: solidus_admin.new_store_credit_reason_path, data: { turbo_frame: :new_store_credit_reason_modal },
|
|
13
13
|
icon: "add-line",
|
|
14
14
|
class: "align-self-end w-full",
|
|
15
15
|
)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def turbo_frames
|
|
19
|
+
%w[
|
|
20
|
+
new_store_credit_reason_modal
|
|
21
|
+
edit_store_credit_reason_modal
|
|
22
|
+
]
|
|
23
|
+
end
|
|
24
|
+
|
|
18
25
|
def row_url(store_credit_reason)
|
|
19
|
-
spree.edit_admin_store_credit_reason_path(store_credit_reason)
|
|
26
|
+
spree.edit_admin_store_credit_reason_path(store_credit_reason, _turbo_frame: :edit_store_credit_reason_modal)
|
|
20
27
|
end
|
|
21
28
|
|
|
22
29
|
def search_url
|
|
@@ -30,7 +37,7 @@ class SolidusAdmin::StoreCreditReasons::Index::Component < SolidusAdmin::Refunds
|
|
|
30
37
|
def batch_actions
|
|
31
38
|
[
|
|
32
39
|
{
|
|
33
|
-
|
|
40
|
+
label: t('.batch_actions.delete'),
|
|
34
41
|
action: solidus_admin.store_credit_reasons_path,
|
|
35
42
|
method: :delete,
|
|
36
43
|
icon: 'delete-bin-7-line',
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<%= turbo_frame_tag :new_store_credit_reason_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @store_credit_reason, url: solidus_admin.store_credit_reasons_path, html: { id: form_id } do |f| %>
|
|
4
|
+
<div class="flex flex-col gap-6 pb-4">
|
|
5
|
+
<%= render component("ui/forms/field").text_field(f, :name, class: "required") %>
|
|
6
|
+
<label class="flex gap-2 items-center">
|
|
7
|
+
<%= hidden_field_tag "#{f.object_name}[active]", "0" %>
|
|
8
|
+
<%= render component("ui/forms/checkbox").new(
|
|
9
|
+
name: "#{f.object_name}[active]",
|
|
10
|
+
value: "1",
|
|
11
|
+
checked: f.object.active
|
|
12
|
+
) %>
|
|
13
|
+
<span class="font-semibold text-xs ml-2"><%= Spree::StoreCreditReason.human_attribute_name :active %></span>
|
|
14
|
+
<%= render component("ui/toggletip").new(text: t(".hints.active")) %>
|
|
15
|
+
</label>
|
|
16
|
+
</div>
|
|
17
|
+
<% modal.with_actions do %>
|
|
18
|
+
<form method="dialog">
|
|
19
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
20
|
+
</form>
|
|
21
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
22
|
+
<% end %>
|
|
23
|
+
<% end %>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
|
|
27
|
+
<%= render component("store_credit_reasons/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::StoreCreditReasons::New::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
def initialize(page:, store_credit_reason:)
|
|
5
|
+
@page = page
|
|
6
|
+
@store_credit_reason = store_credit_reason
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@store_credit_reason, "#{stimulus_id}_new_store_credit_reason_form")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Add your component translations here.
|
|
2
|
+
# Use the translation in the example in your template with `t(".hello")`.
|
|
3
|
+
en:
|
|
4
|
+
title: "New Store Credit Reason"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Add Store Credit Reason"
|
|
7
|
+
hints:
|
|
8
|
+
active: "When checked, this store credit reason will be available for selection when adding store credit to orders."
|
|
@@ -29,7 +29,7 @@ class SolidusAdmin::Stores::Index::Component < SolidusAdmin::UI::Pages::Index::C
|
|
|
29
29
|
def batch_actions
|
|
30
30
|
[
|
|
31
31
|
{
|
|
32
|
-
|
|
32
|
+
label: t('.batch_actions.delete'),
|
|
33
33
|
action: solidus_admin.stores_path,
|
|
34
34
|
method: :delete,
|
|
35
35
|
icon: 'delete-bin-7-line',
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<%= turbo_frame_tag :edit_tax_category_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @tax_category, url: solidus_admin.tax_category_path(@tax_category), html: { id: form_id } do |f| %>
|
|
4
|
+
<div class="flex flex-col gap-6 pb-4">
|
|
5
|
+
<%= render component("ui/forms/field").text_field(f, :name) %>
|
|
6
|
+
<%= render component("ui/forms/field").text_field(f, :tax_code) %>
|
|
7
|
+
<%= render component("ui/forms/field").text_field(f, :description) %>
|
|
8
|
+
<label class="flex gap-2 items-center">
|
|
9
|
+
<%= render component("ui/forms/checkbox").new(
|
|
10
|
+
name: "#{f.object_name}[is_default]",
|
|
11
|
+
value: "1",
|
|
12
|
+
checked: f.object.is_default
|
|
13
|
+
) %>
|
|
14
|
+
<span class="font-semibold text-xs ml-2"><%= Spree::TaxCategory.human_attribute_name :is_default %></span>
|
|
15
|
+
<%= render component("ui/toggletip").new(text: t(".hints.is_default")) %>
|
|
16
|
+
</label>
|
|
17
|
+
</div>
|
|
18
|
+
<% modal.with_actions do %>
|
|
19
|
+
<form method="dialog">
|
|
20
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
21
|
+
</form>
|
|
22
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
23
|
+
<% end %>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<% end %>
|
|
27
|
+
|
|
28
|
+
<%= render component("tax_categories/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::TaxCategories::Edit::Component < SolidusAdmin::TaxCategories::Index::Component
|
|
4
|
+
def initialize(page:, tax_category:)
|
|
5
|
+
@page = page
|
|
6
|
+
@tax_category = tax_category
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@tax_category, "#{stimulus_id}_edit_tax_category_form")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Add your component translations here.
|
|
2
|
+
# Use the translation in the example in your template with `t(".hello")`.
|
|
3
|
+
en:
|
|
4
|
+
title: "Edit Tax Category"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Update Tax Category"
|
|
7
|
+
hints:
|
|
8
|
+
is_default: "When checked, this tax category will be selected by default when creating new products or variants."
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
class SolidusAdmin::TaxCategories::Index::Component < SolidusAdmin::Taxes::Component
|
|
4
4
|
def row_url(tax_category)
|
|
5
|
-
spree.edit_admin_tax_category_path(tax_category)
|
|
5
|
+
spree.edit_admin_tax_category_path(tax_category, _turbo_frame: :edit_tax_category_modal)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def model_class
|
|
@@ -13,16 +13,23 @@ class SolidusAdmin::TaxCategories::Index::Component < SolidusAdmin::Taxes::Compo
|
|
|
13
13
|
solidus_admin.tax_categories_path
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
def
|
|
16
|
+
def page_actions
|
|
17
17
|
render component("ui/button").new(
|
|
18
18
|
tag: :a,
|
|
19
19
|
text: t('.add'),
|
|
20
|
-
href:
|
|
20
|
+
href: solidus_admin.new_tax_category_path, data: { turbo_frame: :new_tax_category_modal },
|
|
21
21
|
icon: "add-line",
|
|
22
22
|
class: "align-self-end w-full",
|
|
23
23
|
)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
def turbo_frames
|
|
27
|
+
%w[
|
|
28
|
+
new_tax_category_modal
|
|
29
|
+
edit_tax_category_modal
|
|
30
|
+
]
|
|
31
|
+
end
|
|
32
|
+
|
|
26
33
|
def search_key
|
|
27
34
|
:name_or_description_cont
|
|
28
35
|
end
|
|
@@ -30,7 +37,7 @@ class SolidusAdmin::TaxCategories::Index::Component < SolidusAdmin::Taxes::Compo
|
|
|
30
37
|
def batch_actions
|
|
31
38
|
[
|
|
32
39
|
{
|
|
33
|
-
|
|
40
|
+
label: t('.batch_actions.delete'),
|
|
34
41
|
action: solidus_admin.tax_categories_path,
|
|
35
42
|
method: :delete,
|
|
36
43
|
icon: 'delete-bin-7-line',
|