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
|
@@ -29,6 +29,14 @@ class SolidusAdmin::Orders::Show::Component < SolidusAdmin::BaseComponent
|
|
|
29
29
|
], " ")
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
def turbo_frames
|
|
33
|
+
%w[
|
|
34
|
+
edit_order_email_modal
|
|
35
|
+
edit_order_bill_address_modal
|
|
36
|
+
edit_order_ship_address_modal
|
|
37
|
+
]
|
|
38
|
+
end
|
|
39
|
+
|
|
32
40
|
def customer_name(user)
|
|
33
41
|
(
|
|
34
42
|
user.default_user_bill_address ||
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
<div class="<%= stimulus_id %>">
|
|
2
|
-
<%=
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
<%= turbo_frame_tag "edit_order_email_modal" do %>
|
|
3
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
4
|
+
<%= form_for @order, url: solidus_admin.order_path(@order), html: { id: form_id } do |f| %>
|
|
5
|
+
<%= render component("ui/forms/field").text_field(f, :email) %>
|
|
6
|
+
<label class="font-normal text-sm mt-4 block">
|
|
7
|
+
<%= t('.guest_checkout') %>:
|
|
8
|
+
<output class="font-semibold text-sm"><%= @order.user ? t('.no') : t('.yes') %></output>
|
|
9
|
+
<%= render component('ui/toggletip').new(text: t('.guest_checkout_tip'), class: "align-middle") %>
|
|
10
|
+
</label>
|
|
11
|
+
<% end %>
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
<% modal.with_actions do %>
|
|
14
|
+
<form method="dialog">
|
|
15
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
16
|
+
</form>
|
|
17
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
18
|
+
<% end %>
|
|
16
19
|
<% end %>
|
|
17
20
|
<% end %>
|
|
21
|
+
|
|
22
|
+
<%= render component("orders/show").new(order: @order) %>
|
|
18
23
|
</div>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
{ label: t('.taxes'), value: number_to_currency(@order.additional_tax_total) },
|
|
7
7
|
{ label: t('.shipping'), value: number_to_currency(@order.shipment_total) },
|
|
8
8
|
{ label: link_to(t('.add_promo_code'), '#', class: "body-link"), value: number_to_currency(@order.promo_total) },
|
|
9
|
-
{ label: link_to(t('.adjustments'),
|
|
9
|
+
{ label: link_to(t('.adjustments'), solidus_admin.order_adjustments_path(@order), class: "body-link"), value: number_to_currency(@order.adjustment_total) },
|
|
10
10
|
{ label: t('.total'), value: number_to_currency(@order.total), class: 'font-semibold' }
|
|
11
11
|
]
|
|
12
12
|
) %>
|
|
@@ -36,7 +36,7 @@ class SolidusAdmin::PaymentMethods::Index::Component < SolidusAdmin::UI::Pages::
|
|
|
36
36
|
def batch_actions
|
|
37
37
|
[
|
|
38
38
|
{
|
|
39
|
-
|
|
39
|
+
label: t('.batch_actions.delete'),
|
|
40
40
|
action: solidus_admin.payment_methods_path,
|
|
41
41
|
method: :delete,
|
|
42
42
|
icon: 'delete-bin-7-line',
|
|
@@ -29,22 +29,25 @@ class SolidusAdmin::Products::Index::Component < SolidusAdmin::UI::Pages::Index:
|
|
|
29
29
|
def batch_actions
|
|
30
30
|
[
|
|
31
31
|
{
|
|
32
|
-
|
|
32
|
+
label: t('.batch_actions.delete'),
|
|
33
33
|
action: solidus_admin.products_path,
|
|
34
34
|
method: :delete,
|
|
35
35
|
icon: 'delete-bin-7-line',
|
|
36
|
+
require_confirmation: true,
|
|
36
37
|
},
|
|
37
38
|
{
|
|
38
|
-
|
|
39
|
+
label: t('.batch_actions.discontinue'),
|
|
39
40
|
action: solidus_admin.discontinue_products_path,
|
|
40
41
|
method: :put,
|
|
41
42
|
icon: 'pause-circle-line',
|
|
43
|
+
require_confirmation: true,
|
|
42
44
|
},
|
|
43
45
|
{
|
|
44
|
-
|
|
46
|
+
label: t('.batch_actions.activate'),
|
|
45
47
|
action: solidus_admin.activate_products_path,
|
|
46
48
|
method: :put,
|
|
47
49
|
icon: 'play-circle-line',
|
|
50
|
+
require_confirmation: true,
|
|
48
51
|
},
|
|
49
52
|
]
|
|
50
53
|
end
|
|
@@ -63,9 +66,9 @@ class SolidusAdmin::Products::Index::Component < SolidusAdmin::UI::Pages::Index:
|
|
|
63
66
|
def filters
|
|
64
67
|
Spree::OptionType.all.map do |option_type|
|
|
65
68
|
{
|
|
66
|
-
|
|
69
|
+
label: option_type.presentation,
|
|
67
70
|
combinator: 'or',
|
|
68
|
-
attribute: "
|
|
71
|
+
attribute: "option_values_id",
|
|
69
72
|
predicate: "in",
|
|
70
73
|
options: option_type.option_values.pluck(:name, :id),
|
|
71
74
|
}
|
|
@@ -100,9 +100,20 @@
|
|
|
100
100
|
|
|
101
101
|
<%= page_with_sidebar_aside do %>
|
|
102
102
|
<%= render component('ui/panel').new(title: "Publishing") do %>
|
|
103
|
-
<%= render component("ui/forms/field").text_field(
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
<%= render component("ui/forms/field").text_field(
|
|
104
|
+
f,
|
|
105
|
+
:available_on,
|
|
106
|
+
hint: t(".available_on_html"),
|
|
107
|
+
type: :date,
|
|
108
|
+
value: f.object.available_on&.to_date
|
|
109
|
+
) %>
|
|
110
|
+
<%= render component("ui/forms/field").text_field(
|
|
111
|
+
f,
|
|
112
|
+
:discontinue_on,
|
|
113
|
+
hint: t(".discontinue_on_html"),
|
|
114
|
+
type: :date,
|
|
115
|
+
value: f.object.discontinue_on&.to_date
|
|
116
|
+
) %>
|
|
106
117
|
<label class="flex gap-2 items-center">
|
|
107
118
|
<%= render component("ui/forms/checkbox").new(
|
|
108
119
|
name: "#{f.object_name}[promotionable]",
|
|
@@ -5,6 +5,7 @@ class SolidusAdmin::Products::Status::Component < SolidusAdmin::BaseComponent
|
|
|
5
5
|
available: :green,
|
|
6
6
|
discontinued: :yellow,
|
|
7
7
|
deleted: :red,
|
|
8
|
+
unavailable: :yellow
|
|
8
9
|
}.freeze
|
|
9
10
|
|
|
10
11
|
def self.from_product(product)
|
|
@@ -13,8 +14,10 @@ class SolidusAdmin::Products::Status::Component < SolidusAdmin::BaseComponent
|
|
|
13
14
|
:deleted
|
|
14
15
|
elsif product.discontinued?
|
|
15
16
|
:discontinued
|
|
16
|
-
|
|
17
|
+
elsif product.available?
|
|
17
18
|
:available
|
|
19
|
+
else
|
|
20
|
+
:unavailable
|
|
18
21
|
end
|
|
19
22
|
|
|
20
23
|
new(status: status)
|
|
@@ -29,7 +29,7 @@ class SolidusAdmin::Properties::Index::Component < SolidusAdmin::UI::Pages::Inde
|
|
|
29
29
|
def batch_actions
|
|
30
30
|
[
|
|
31
31
|
{
|
|
32
|
-
|
|
32
|
+
label: t('.batch_actions.delete'),
|
|
33
33
|
action: solidus_admin.properties_path,
|
|
34
34
|
method: :delete,
|
|
35
35
|
icon: 'delete-bin-7-line',
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<%= turbo_frame_tag :edit_refund_reason_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @refund_reason, url: solidus_admin.refund_reason_path(@refund_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
|
+
<%= render component("ui/forms/field").text_field(f, :code, class: "required") %>
|
|
7
|
+
<label class="flex gap-2 items-center">
|
|
8
|
+
<%= hidden_field_tag "#{f.object_name}[active]", "0" %>
|
|
9
|
+
<%= render component("ui/forms/checkbox").new(
|
|
10
|
+
name: "#{f.object_name}[active]",
|
|
11
|
+
value: "1",
|
|
12
|
+
checked: f.object.active
|
|
13
|
+
) %>
|
|
14
|
+
<span class="font-semibold text-xs ml-2"><%= Spree::RefundReason.human_attribute_name :active %></span>
|
|
15
|
+
<%= render component("ui/toggletip").new(text: t(".hints.active")) %>
|
|
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
|
+
<%= render component("refund_reasons/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::RefundReasons::Edit::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
def initialize(page:, refund_reason:)
|
|
5
|
+
@page = page
|
|
6
|
+
@refund_reason = refund_reason
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@refund_reason, "#{stimulus_id}_edit_refund_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 Refund Reason"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Update Refund Reason"
|
|
7
|
+
hints:
|
|
8
|
+
active: "When checked, this refund reason will be available for selection when adding refunds to orders."
|
|
@@ -14,14 +14,21 @@ class SolidusAdmin::RefundReasons::Index::Component < SolidusAdmin::RefundsAndRe
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def row_url(refund_reason)
|
|
17
|
-
spree.edit_admin_refund_reason_path(refund_reason)
|
|
17
|
+
spree.edit_admin_refund_reason_path(refund_reason, _turbo_frame: :edit_refund_reason_modal)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def
|
|
20
|
+
def turbo_frames
|
|
21
|
+
%w[
|
|
22
|
+
new_refund_reason_modal
|
|
23
|
+
edit_refund_reason_modal
|
|
24
|
+
]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def page_actions
|
|
21
28
|
render component("ui/button").new(
|
|
22
29
|
tag: :a,
|
|
23
30
|
text: t('.add'),
|
|
24
|
-
href:
|
|
31
|
+
href: solidus_admin.new_refund_reason_path, data: { turbo_frame: :new_refund_reason_modal },
|
|
25
32
|
icon: "add-line",
|
|
26
33
|
class: "align-self-end w-full",
|
|
27
34
|
)
|
|
@@ -30,7 +37,7 @@ class SolidusAdmin::RefundReasons::Index::Component < SolidusAdmin::RefundsAndRe
|
|
|
30
37
|
def batch_actions
|
|
31
38
|
[
|
|
32
39
|
{
|
|
33
|
-
|
|
40
|
+
label: t('.batch_actions.delete'),
|
|
34
41
|
action: solidus_admin.refund_reasons_path,
|
|
35
42
|
method: :delete,
|
|
36
43
|
icon: 'delete-bin-7-line',
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<%= turbo_frame_tag :new_refund_reason_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @refund_reason, url: solidus_admin.refund_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
|
+
<%= render component("ui/forms/field").text_field(f, :code, class: "required") %>
|
|
7
|
+
<label class="flex gap-2 items-center">
|
|
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::RefundReason.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("refund_reasons/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::RefundReasons::New::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
def initialize(page:, refund_reason:)
|
|
5
|
+
@page = page
|
|
6
|
+
@refund_reason = refund_reason
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@refund_reason, "#{stimulus_id}_new_refund_reason_form")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<%= turbo_frame_tag :edit_return_reason_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @return_reason, url: solidus_admin.return_reason_path(@return_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::ReturnReason.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("return_reasons/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::ReturnReasons::Edit::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
def initialize(page:, return_reason:)
|
|
5
|
+
@page = page
|
|
6
|
+
@return_reason = return_reason
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@return_reason, "#{stimulus_id}_edit_return_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 Return Reason"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Update Return Reason"
|
|
7
|
+
hints:
|
|
8
|
+
active: "When checked, this return reason will be available for selection when returning orders."
|
|
@@ -14,13 +14,31 @@ class SolidusAdmin::ReturnReasons::Index::Component < SolidusAdmin::RefundsAndRe
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def row_url(return_reason)
|
|
17
|
-
spree.edit_admin_return_reason_path(return_reason)
|
|
17
|
+
spree.edit_admin_return_reason_path(return_reason, _turbo_frame: :edit_return_reason_modal)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def turbo_frames
|
|
21
|
+
%w[
|
|
22
|
+
new_return_reason_modal
|
|
23
|
+
edit_return_reason_modal
|
|
24
|
+
]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def page_actions
|
|
28
|
+
render component("ui/button").new(
|
|
29
|
+
tag: :a,
|
|
30
|
+
text: t('.add'),
|
|
31
|
+
href: solidus_admin.new_return_reason_path,
|
|
32
|
+
data: { turbo_frame: :new_return_reason_modal },
|
|
33
|
+
icon: "add-line",
|
|
34
|
+
class: "align-self-end w-full",
|
|
35
|
+
)
|
|
18
36
|
end
|
|
19
37
|
|
|
20
38
|
def batch_actions
|
|
21
39
|
[
|
|
22
40
|
{
|
|
23
|
-
|
|
41
|
+
label: t('.batch_actions.delete'),
|
|
24
42
|
action: solidus_admin.return_reasons_path,
|
|
25
43
|
method: :delete,
|
|
26
44
|
icon: 'delete-bin-7-line',
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<%= turbo_frame_tag :new_return_reason_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @return_reason, url: solidus_admin.return_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::ReturnReason.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("return_reasons/index").new(page: @page) %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::ReturnReasons::New::Component < SolidusAdmin::BaseComponent
|
|
4
|
+
def initialize(page:, return_reason:)
|
|
5
|
+
@page = page
|
|
6
|
+
@return_reason = return_reason
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def form_id
|
|
10
|
+
dom_id(@return_reason, "#{stimulus_id}_new_return_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 Return Reason"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Add Return Reason"
|
|
7
|
+
hints:
|
|
8
|
+
active: "When checked, this return reason will be available for selection when returning orders."
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<%= turbo_frame_tag :edit_role_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @role, url: solidus_admin.role_path(@role), 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
|
+
<%= render component("ui/forms/field").text_field(f, :description) %>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<% if permission_set_options.present? %>
|
|
10
|
+
<h3 class="text-l py-4 font-semibold text-gray-900">
|
|
11
|
+
<%= t(".choose_permissions") %>
|
|
12
|
+
</h3>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:order], row_title: t('.orders'), form: f, method: :permission_set_ids) %>
|
|
16
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:product], row_title: t('.products'), form: f, method: :permission_set_ids) %>
|
|
17
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:stock], row_title: t('.stock'), form: f, method: :permission_set_ids) %>
|
|
18
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:user], row_title: t('.customers'), form: f, method: :permission_set_ids) %>
|
|
19
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:restricted_stock], row_title: t('.restricted_stock'), form: f, method: :permission_set_ids) %>
|
|
20
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:configuration], row_title: t('.settings'), form: f, method: :permission_set_ids) %>
|
|
21
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:other], row_title: t('.other'), form: f, method: :permission_set_ids, layout: :subsection) %>
|
|
22
|
+
|
|
23
|
+
<% modal.with_actions do %>
|
|
24
|
+
<form method="dialog">
|
|
25
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
26
|
+
</form>
|
|
27
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
28
|
+
<% end %>
|
|
29
|
+
<% end %>
|
|
30
|
+
<% end %>
|
|
31
|
+
<% end %>
|
|
32
|
+
|
|
33
|
+
<%= render component("roles/index").new(page: @page) %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::Roles::Edit::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}_edit_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: "Edit Role"
|
|
5
|
+
cancel: "Cancel"
|
|
6
|
+
submit: "Update 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,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class SolidusAdmin::Roles::Index::Component < SolidusAdmin::UsersAndRoles::Component
|
|
4
|
+
def model_class
|
|
5
|
+
Spree::Role
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def search_key
|
|
9
|
+
:name_cont
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def search_url
|
|
13
|
+
solidus_admin.roles_path
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def row_url(role)
|
|
17
|
+
solidus_admin.edit_role_path(role, _turbo_frame: :edit_role_modal)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def page_actions
|
|
21
|
+
render component("ui/button").new(
|
|
22
|
+
tag: :a,
|
|
23
|
+
text: t('.add'),
|
|
24
|
+
href: solidus_admin.new_role_path, data: { turbo_frame: :new_role_modal },
|
|
25
|
+
icon: "add-line",
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def turbo_frames
|
|
30
|
+
%w[
|
|
31
|
+
new_role_modal
|
|
32
|
+
edit_role_modal
|
|
33
|
+
]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def batch_actions
|
|
37
|
+
[
|
|
38
|
+
{
|
|
39
|
+
label: t('.batch_actions.delete'),
|
|
40
|
+
action: solidus_admin.roles_path,
|
|
41
|
+
method: :delete,
|
|
42
|
+
icon: 'delete-bin-7-line',
|
|
43
|
+
},
|
|
44
|
+
]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def scopes
|
|
48
|
+
[
|
|
49
|
+
{ name: :all, label: t('.scopes.all'), default: true },
|
|
50
|
+
{ name: :admin, label: t('.scopes.admin') },
|
|
51
|
+
]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def filters
|
|
55
|
+
[]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def columns
|
|
59
|
+
[
|
|
60
|
+
{
|
|
61
|
+
header: :role,
|
|
62
|
+
data: :name,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
header: :description,
|
|
66
|
+
data: :description,
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<%= turbo_frame_tag :new_role_modal do %>
|
|
2
|
+
<%= render component("ui/modal").new(title: t(".title")) do |modal| %>
|
|
3
|
+
<%= form_for @role, url: solidus_admin.roles_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", placeholder: t(".name_placeholder")) %>
|
|
6
|
+
<%= render component("ui/forms/field").text_field(f, :description, placeholder: t(".description_placeholder")) %>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<% if permission_set_options.present? %>
|
|
10
|
+
<h3 class="text-l py-4 font-semibold text-gray-900">
|
|
11
|
+
<%= t(".choose_permissions") %>
|
|
12
|
+
</h3>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:order], row_title: t('.orders'), form: f, method: :permission_set_ids) %>
|
|
16
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:product], row_title: t('.products'), form: f, method: :permission_set_ids) %>
|
|
17
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:stock], row_title: t('.stock'), form: f, method: :permission_set_ids) %>
|
|
18
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:user], row_title: t('.customers'), form: f, method: :permission_set_ids) %>
|
|
19
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:restricted_stock], row_title: t('.restricted_stock'), form: f, method: :permission_set_ids) %>
|
|
20
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:configuration], row_title: t('.settings'), form: f, method: :permission_set_ids) %>
|
|
21
|
+
<%= render component("ui/checkbox_row").new(options: permission_set_options[:other], row_title: t('.other'), form: f, method: :permission_set_ids, layout: :subsection) %>
|
|
22
|
+
|
|
23
|
+
<% modal.with_actions do %>
|
|
24
|
+
<form method="dialog">
|
|
25
|
+
<%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
|
|
26
|
+
</form>
|
|
27
|
+
<%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
|
|
28
|
+
<% end %>
|
|
29
|
+
<% end %>
|
|
30
|
+
<% end %>
|
|
31
|
+
<% end %>
|
|
32
|
+
|
|
33
|
+
<%= render component("roles/index").new(page: @page) %>
|