solidus_admin 0.0.2 → 0.1.0

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.
Files changed (285) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.json +7 -0
  3. data/README.md +1 -1
  4. data/Rakefile +26 -0
  5. data/app/assets/builds/.keep +0 -0
  6. data/app/assets/builds/solidus_admin/tailwind.css +2799 -0
  7. data/app/assets/config/solidus_admin_manifest.js +1 -0
  8. data/app/assets/stylesheets/solidus_admin/application.tailwind.css +4 -0
  9. data/app/assets/stylesheets/solidus_admin/dark.css +12 -0
  10. data/app/assets/stylesheets/solidus_admin/dimmed.css +11 -0
  11. data/app/components/solidus_admin/adjustment_reasons/index/component.html.erb +32 -0
  12. data/app/components/solidus_admin/adjustment_reasons/index/component.rb +53 -0
  13. data/app/components/solidus_admin/adjustment_reasons/index/component.yml +4 -0
  14. data/app/components/solidus_admin/layout/feedback/component.html.erb +15 -0
  15. data/app/components/solidus_admin/layout/feedback/component.rb +4 -0
  16. data/app/components/solidus_admin/layout/feedback/component.yml +3 -0
  17. data/app/components/solidus_admin/layout/navigation/account/component.html.erb +74 -0
  18. data/app/components/solidus_admin/layout/navigation/account/component.js +16 -0
  19. data/app/components/solidus_admin/layout/navigation/account/component.rb +36 -0
  20. data/app/components/solidus_admin/{sidebar → layout/navigation}/component.html.erb +9 -9
  21. data/app/components/solidus_admin/layout/navigation/component.rb +26 -0
  22. data/app/components/solidus_admin/{sidebar → layout/navigation}/item/component.html.erb +5 -5
  23. data/app/components/solidus_admin/{sidebar → layout/navigation}/item/component.rb +2 -2
  24. data/app/components/solidus_admin/layout/page_helpers.rb +55 -0
  25. data/app/components/solidus_admin/{skip_link → layout/skip_link}/component.rb +2 -4
  26. data/app/components/solidus_admin/option_types/index/component.html.erb +30 -0
  27. data/app/components/solidus_admin/option_types/index/component.rb +57 -0
  28. data/app/components/solidus_admin/option_types/index/component.yml +4 -0
  29. data/app/components/solidus_admin/orders/cart/component.html.erb +77 -0
  30. data/app/components/solidus_admin/orders/cart/component.js +37 -0
  31. data/app/components/solidus_admin/orders/cart/component.rb +7 -0
  32. data/app/components/solidus_admin/orders/cart/component.yml +3 -0
  33. data/app/components/solidus_admin/orders/cart/result/component.html.erb +26 -0
  34. data/app/components/solidus_admin/orders/cart/result/component.rb +11 -0
  35. data/app/components/solidus_admin/orders/index/component.html.erb +26 -22
  36. data/app/components/solidus_admin/orders/index/component.rb +80 -16
  37. data/app/components/solidus_admin/orders/index/component.yml +10 -3
  38. data/app/components/solidus_admin/orders/show/address/component.html.erb +67 -0
  39. data/app/components/solidus_admin/orders/show/address/component.js +9 -0
  40. data/app/components/solidus_admin/orders/show/address/component.rb +53 -0
  41. data/app/components/solidus_admin/orders/show/address/component.yml +14 -0
  42. data/app/components/solidus_admin/orders/show/component.html.erb +76 -0
  43. data/app/components/solidus_admin/orders/show/component.js +7 -0
  44. data/app/components/solidus_admin/orders/show/component.rb +40 -0
  45. data/app/components/solidus_admin/orders/show/component.yml +21 -0
  46. data/app/components/solidus_admin/orders/show/customer_search/component.html.erb +14 -0
  47. data/app/components/solidus_admin/orders/show/customer_search/component.js +14 -0
  48. data/app/components/solidus_admin/orders/show/customer_search/component.rb +7 -0
  49. data/app/components/solidus_admin/orders/show/customer_search/component.yml +2 -0
  50. data/app/components/solidus_admin/orders/show/customer_search/result/component.html.erb +17 -0
  51. data/app/components/solidus_admin/orders/show/customer_search/result/component.rb +11 -0
  52. data/app/components/solidus_admin/orders/show/email/component.html.erb +18 -0
  53. data/app/components/solidus_admin/orders/show/email/component.rb +15 -0
  54. data/app/components/solidus_admin/orders/show/email/component.yml +8 -0
  55. data/app/components/solidus_admin/orders/show/summary/component.html.erb +14 -0
  56. data/app/components/solidus_admin/orders/show/summary/component.rb +7 -0
  57. data/app/components/solidus_admin/orders/show/summary/component.yml +8 -0
  58. data/app/components/solidus_admin/payment_methods/index/component.html.erb +38 -0
  59. data/app/components/solidus_admin/payment_methods/index/component.rb +93 -0
  60. data/app/components/solidus_admin/payment_methods/index/component.yml +15 -0
  61. data/app/components/solidus_admin/products/index/component.html.erb +26 -22
  62. data/app/components/solidus_admin/products/index/component.rb +36 -36
  63. data/app/components/solidus_admin/products/index/component.yml +9 -6
  64. data/app/components/solidus_admin/products/show/component.html.erb +32 -38
  65. data/app/components/solidus_admin/products/show/component.rb +2 -0
  66. data/app/components/solidus_admin/products/show/component.yml +5 -5
  67. data/app/components/solidus_admin/products/status/component.rb +20 -18
  68. data/app/components/solidus_admin/products/status/component.yml +1 -0
  69. data/app/components/solidus_admin/products/stock/component.rb +38 -0
  70. data/app/components/solidus_admin/products/stock/component.yml +5 -0
  71. data/app/components/solidus_admin/promotion_categories/index/component.html.erb +26 -0
  72. data/app/components/solidus_admin/promotion_categories/index/component.rb +57 -0
  73. data/app/components/solidus_admin/promotion_categories/index/component.yml +4 -0
  74. data/app/components/solidus_admin/promotions/index/component.html.erb +34 -0
  75. data/app/components/solidus_admin/promotions/index/component.rb +97 -0
  76. data/app/components/solidus_admin/promotions/index/component.yml +14 -0
  77. data/app/components/solidus_admin/properties/index/component.html.erb +34 -0
  78. data/app/components/solidus_admin/properties/index/component.rb +65 -0
  79. data/app/components/solidus_admin/properties/index/component.yml +4 -0
  80. data/app/components/solidus_admin/refund_reasons/index/component.html.erb +31 -0
  81. data/app/components/solidus_admin/refund_reasons/index/component.rb +53 -0
  82. data/app/components/solidus_admin/refund_reasons/index/component.yml +4 -0
  83. data/app/components/solidus_admin/refunds_and_returns/component.html.erb +26 -0
  84. data/app/components/solidus_admin/refunds_and_returns/component.rb +20 -0
  85. data/app/components/solidus_admin/refunds_and_returns/component.yml +3 -0
  86. data/app/components/solidus_admin/reimbursement_types/index/component.html.erb +22 -0
  87. data/app/components/solidus_admin/reimbursement_types/index/component.rb +45 -0
  88. data/app/components/solidus_admin/reimbursement_types/index/component.yml +4 -0
  89. data/app/components/solidus_admin/return_reasons/index/component.html.erb +31 -0
  90. data/app/components/solidus_admin/return_reasons/index/component.rb +52 -0
  91. data/app/components/solidus_admin/return_reasons/index/component.yml +4 -0
  92. data/app/components/solidus_admin/shipping/component.html.erb +30 -0
  93. data/app/components/solidus_admin/shipping/component.rb +18 -0
  94. data/app/components/solidus_admin/shipping/component.yml +3 -0
  95. data/app/components/solidus_admin/shipping_categories/index/component.html.erb +32 -0
  96. data/app/components/solidus_admin/shipping_categories/index/component.rb +46 -0
  97. data/app/components/solidus_admin/shipping_categories/index/component.yml +4 -0
  98. data/app/components/solidus_admin/shipping_methods/index/component.html.erb +32 -0
  99. data/app/components/solidus_admin/shipping_methods/index/component.rb +61 -0
  100. data/app/components/solidus_admin/shipping_methods/index/component.yml +4 -0
  101. data/app/components/solidus_admin/stock_items/edit/component.html.erb +89 -0
  102. data/app/components/solidus_admin/stock_items/edit/component.js +17 -0
  103. data/app/components/solidus_admin/stock_items/edit/component.rb +23 -0
  104. data/app/components/solidus_admin/stock_items/edit/component.yml +10 -0
  105. data/app/components/solidus_admin/stock_items/index/component.html.erb +26 -0
  106. data/app/components/solidus_admin/stock_items/index/component.rb +180 -0
  107. data/app/components/solidus_admin/stock_items/index/component.yml +10 -0
  108. data/app/components/solidus_admin/stock_locations/index/component.html.erb +32 -0
  109. data/app/components/solidus_admin/stock_locations/index/component.rb +81 -0
  110. data/app/components/solidus_admin/stock_locations/index/component.yml +6 -0
  111. data/app/components/solidus_admin/store_credit_reasons/index/component.html.erb +31 -0
  112. data/app/components/solidus_admin/store_credit_reasons/index/component.rb +52 -0
  113. data/app/components/solidus_admin/store_credit_reasons/index/component.yml +4 -0
  114. data/app/components/solidus_admin/stores/index/component.html.erb +34 -0
  115. data/app/components/solidus_admin/stores/index/component.rb +59 -0
  116. data/app/components/solidus_admin/stores/index/component.yml +4 -0
  117. data/app/components/solidus_admin/tax_categories/index/component.html.erb +32 -0
  118. data/app/components/solidus_admin/tax_categories/index/component.rb +58 -0
  119. data/app/components/solidus_admin/tax_categories/index/component.yml +6 -0
  120. data/app/components/solidus_admin/tax_rates/index/component.html.erb +32 -0
  121. data/app/components/solidus_admin/tax_rates/index/component.rb +84 -0
  122. data/app/components/solidus_admin/tax_rates/index/component.yml +4 -0
  123. data/app/components/solidus_admin/taxes/component.html.erb +24 -0
  124. data/app/components/solidus_admin/taxes/component.rb +25 -0
  125. data/app/components/solidus_admin/taxes/component.yml +3 -0
  126. data/app/components/solidus_admin/taxonomies/index/component.html.erb +28 -0
  127. data/app/components/solidus_admin/taxonomies/index/component.rb +47 -0
  128. data/app/components/solidus_admin/taxonomies/index/component.yml +4 -0
  129. data/app/components/solidus_admin/ui/badge/component.rb +18 -8
  130. data/app/components/solidus_admin/ui/badge/component.yml +3 -0
  131. data/app/components/solidus_admin/ui/button/component.rb +32 -32
  132. data/app/components/solidus_admin/ui/details_list/component.html.erb +10 -0
  133. data/app/components/solidus_admin/ui/details_list/component.rb +7 -0
  134. data/app/components/solidus_admin/ui/dropdown/component.html.erb +50 -0
  135. data/app/components/solidus_admin/ui/dropdown/component.js +16 -0
  136. data/app/components/solidus_admin/ui/dropdown/component.rb +28 -0
  137. data/app/components/solidus_admin/ui/dropdown/component.yml +2 -0
  138. data/app/components/solidus_admin/ui/forms/address/component.html.erb +36 -0
  139. data/app/components/solidus_admin/ui/forms/address/component.js +34 -0
  140. data/app/components/solidus_admin/ui/forms/address/component.rb +14 -0
  141. data/app/components/solidus_admin/ui/forms/field/component.html.erb +5 -4
  142. data/app/components/solidus_admin/ui/forms/field/component.rb +53 -15
  143. data/app/components/solidus_admin/ui/forms/input/component.rb +11 -5
  144. data/app/components/solidus_admin/ui/forms/search/component.html.erb +52 -0
  145. data/app/components/solidus_admin/ui/forms/search/component.js +116 -0
  146. data/app/components/solidus_admin/ui/forms/search/component.rb +8 -0
  147. data/app/components/solidus_admin/ui/forms/search/component.yml +4 -0
  148. data/app/components/solidus_admin/ui/forms/search/result/component.rb +12 -0
  149. data/app/components/solidus_admin/ui/forms/search_field/component.html.erb +20 -0
  150. data/app/{javascript/solidus_admin/controllers/hello_controller.js → components/solidus_admin/ui/forms/search_field/component.js} +4 -2
  151. data/app/components/solidus_admin/ui/forms/search_field/component.rb +10 -0
  152. data/app/components/solidus_admin/ui/forms/search_field/component.yml +2 -0
  153. data/app/components/solidus_admin/ui/forms/switch/component.rb +27 -31
  154. data/app/components/solidus_admin/ui/forms/switch_field/component.html.erb +20 -0
  155. data/app/components/solidus_admin/ui/forms/switch_field/component.rb +11 -0
  156. data/app/components/solidus_admin/ui/icon/component.rb +4 -0
  157. data/app/components/solidus_admin/ui/modal/component.html.erb +37 -0
  158. data/app/components/solidus_admin/ui/modal/component.rb +12 -0
  159. data/app/components/solidus_admin/ui/modal/component.yml +2 -0
  160. data/app/components/solidus_admin/ui/panel/component.html.erb +26 -12
  161. data/app/components/solidus_admin/ui/panel/component.rb +17 -0
  162. data/app/components/solidus_admin/ui/panel/component.yml +1 -3
  163. data/app/components/solidus_admin/ui/resource_item/component.html.erb +10 -0
  164. data/app/components/solidus_admin/ui/resource_item/component.rb +9 -0
  165. data/app/components/solidus_admin/ui/tab/component.rb +9 -8
  166. data/app/components/solidus_admin/ui/table/component.html.erb +146 -135
  167. data/app/components/solidus_admin/ui/table/component.js +56 -17
  168. data/app/components/solidus_admin/ui/table/component.rb +94 -70
  169. data/app/components/solidus_admin/ui/table/component.yml +0 -1
  170. data/app/components/solidus_admin/ui/table/ransack_filter/component.html.erb +72 -0
  171. data/app/components/solidus_admin/ui/table/ransack_filter/component.js +73 -0
  172. data/app/components/solidus_admin/ui/table/ransack_filter/component.rb +68 -0
  173. data/app/components/solidus_admin/ui/table/ransack_filter/component.yml +3 -0
  174. data/app/components/solidus_admin/ui/table/toolbar/component.rb +21 -0
  175. data/app/components/solidus_admin/ui/thumbnail/component.rb +46 -0
  176. data/app/components/solidus_admin/ui/toast/component.html.erb +9 -5
  177. data/app/components/solidus_admin/ui/toast/component.js +9 -6
  178. data/app/components/solidus_admin/ui/toast/component.rb +2 -2
  179. data/app/components/solidus_admin/ui/toggletip/component.html.erb +14 -10
  180. data/app/components/solidus_admin/ui/toggletip/component.js +22 -4
  181. data/app/components/solidus_admin/ui/toggletip/component.rb +8 -85
  182. data/app/components/solidus_admin/users/index/component.html.erb +34 -0
  183. data/app/components/solidus_admin/users/index/component.rb +89 -0
  184. data/app/components/solidus_admin/users/index/component.yml +18 -0
  185. data/app/components/solidus_admin/zones/index/component.html.erb +35 -0
  186. data/app/components/solidus_admin/zones/index/component.rb +55 -0
  187. data/app/components/solidus_admin/zones/index/component.yml +4 -0
  188. data/app/controllers/solidus_admin/addresses_controller.rb +92 -0
  189. data/app/controllers/solidus_admin/adjustment_reasons_controller.rb +40 -0
  190. data/app/controllers/solidus_admin/base_controller.rb +1 -0
  191. data/app/controllers/solidus_admin/controller_helpers/authorization.rb +5 -1
  192. data/app/controllers/solidus_admin/controller_helpers/locale.rb +2 -2
  193. data/app/controllers/solidus_admin/controller_helpers/search.rb +48 -0
  194. data/app/controllers/solidus_admin/controller_helpers/theme.rb +30 -0
  195. data/app/controllers/solidus_admin/countries_controller.rb +12 -0
  196. data/app/controllers/solidus_admin/customers_controller.rb +29 -0
  197. data/app/controllers/solidus_admin/line_items_controller.rb +45 -0
  198. data/app/controllers/solidus_admin/option_types_controller.rb +46 -0
  199. data/app/controllers/solidus_admin/orders_controller.rb +104 -7
  200. data/app/controllers/solidus_admin/payment_methods_controller.rb +52 -0
  201. data/app/controllers/solidus_admin/products_controller.rb +26 -17
  202. data/app/controllers/solidus_admin/promotion_categories_controller.rb +38 -0
  203. data/app/controllers/solidus_admin/promotions_controller.rb +46 -0
  204. data/app/controllers/solidus_admin/properties_controller.rb +33 -0
  205. data/app/controllers/solidus_admin/refund_reasons_controller.rb +40 -0
  206. data/app/controllers/solidus_admin/reimbursement_types_controller.rb +31 -0
  207. data/app/controllers/solidus_admin/return_reasons_controller.rb +40 -0
  208. data/app/controllers/solidus_admin/shipping_categories_controller.rb +40 -0
  209. data/app/controllers/solidus_admin/shipping_methods_controller.rb +40 -0
  210. data/app/controllers/solidus_admin/stock_items_controller.rb +67 -0
  211. data/app/controllers/solidus_admin/stock_locations_controller.rb +40 -0
  212. data/app/controllers/solidus_admin/store_credit_reasons_controller.rb +40 -0
  213. data/app/controllers/solidus_admin/stores_controller.rb +40 -0
  214. data/app/controllers/solidus_admin/tax_categories_controller.rb +40 -0
  215. data/app/controllers/solidus_admin/tax_rates_controller.rb +40 -0
  216. data/app/controllers/solidus_admin/taxonomies_controller.rb +46 -0
  217. data/app/controllers/solidus_admin/users_controller.rb +50 -0
  218. data/app/controllers/solidus_admin/zones_controller.rb +40 -0
  219. data/app/javascript/solidus_admin/controllers/components.js +3 -1
  220. data/app/javascript/solidus_admin/controllers/confirm_controller.js +21 -0
  221. data/app/javascript/solidus_admin/controllers/details_click_outside_controller.js +12 -0
  222. data/app/javascript/solidus_admin/controllers/readonly_when_submitting_controller.js +17 -0
  223. data/app/javascript/solidus_admin/controllers/sortable_controller.js +33 -0
  224. data/app/views/layouts/solidus_admin/application.html.erb +16 -10
  225. data/app/views/layouts/solidus_admin/preview.html.erb +0 -1
  226. data/app/views/solidus_admin/base/unauthorized.html.erb +4 -0
  227. data/config/importmap.rb +2 -0
  228. data/config/initializers/view_component.rb +20 -0
  229. data/config/locales/adjustment_reasons.en.yml +6 -0
  230. data/config/locales/customers.en.yml +7 -0
  231. data/config/locales/errors.en.yml +7 -0
  232. data/config/locales/line_items.en.yml +9 -0
  233. data/config/locales/{main_nav.en.yml → menu_item.en.yml} +8 -2
  234. data/config/locales/option_types.en.yml +6 -0
  235. data/config/locales/orders.en.yml +9 -0
  236. data/config/locales/payment_methods.en.yml +6 -0
  237. data/config/locales/promotion_categories.en.yml +6 -0
  238. data/config/locales/promotions.en.yml +6 -0
  239. data/config/locales/properties.en.yml +6 -0
  240. data/config/locales/refund_reasons_.en.yml +6 -0
  241. data/config/locales/reimbursement_types.en.yml +4 -0
  242. data/config/locales/return_reasons.en.yml +6 -0
  243. data/config/locales/shipping_categories.en.yml +6 -0
  244. data/config/locales/shipping_methods.en.yml +6 -0
  245. data/config/locales/stock_items.en.yml +4 -0
  246. data/config/locales/stock_locations.en.yml +6 -0
  247. data/config/locales/store_credit_reasons.en.yml +6 -0
  248. data/config/locales/stores.en.yml +6 -0
  249. data/config/locales/tax_categories.en.yml +6 -0
  250. data/config/locales/tax_rates.en.yml +6 -0
  251. data/config/locales/taxonomies.en.yml +6 -0
  252. data/config/locales/users.en.yml +6 -0
  253. data/config/locales/zones.en.yml +6 -0
  254. data/config/routes.rb +50 -3
  255. data/config/tailwind.config.js +119 -0
  256. data/docs/{customizing_main_navigation.md → customizing_menu_items.md} +2 -2
  257. data/docs/customizing_tailwindcss.md +57 -0
  258. data/docs/customizing_view_components.md +17 -38
  259. data/lib/generators/solidus_admin/install/install_generator.rb +13 -4
  260. data/lib/generators/solidus_admin/install/templates/config/initializers/{solidus_admin.rb → solidus_admin.rb.tt} +10 -14
  261. data/lib/solidus_admin/admin_resources.rb +23 -0
  262. data/lib/solidus_admin/configuration.rb +93 -67
  263. data/lib/solidus_admin/install_tailwindcss.rb +102 -0
  264. data/lib/solidus_admin/{main_nav_item.rb → menu_item.rb} +2 -2
  265. data/lib/solidus_admin/version.rb +1 -1
  266. data/lib/solidus_admin.rb +1 -2
  267. data/lib/tasks/tailwind.rake +10 -0
  268. data/solidus_admin.gemspec +3 -4
  269. metadata +228 -48
  270. data/app/assets/stylesheets/solidus_admin/application.tailwind.css.erb +0 -35
  271. data/app/components/solidus_admin/feedback/component.html.erb +0 -11
  272. data/app/components/solidus_admin/feedback/component.rb +0 -4
  273. data/app/components/solidus_admin/feedback/component.yml +0 -5
  274. data/app/components/solidus_admin/sidebar/account_nav/component.html.erb +0 -67
  275. data/app/components/solidus_admin/sidebar/account_nav/component.rb +0 -15
  276. data/app/components/solidus_admin/sidebar/component.rb +0 -21
  277. data/app/components/solidus_admin/ui/panel/component.js +0 -14
  278. data/config/solidus_admin/tailwind.config.js.erb +0 -95
  279. data/docs/customizing_tailwind.md +0 -78
  280. data/lib/solidus_admin/tailwindcss.rb +0 -58
  281. data/lib/tasks/tailwindcss.rake +0 -55
  282. /data/app/components/solidus_admin/{sidebar/account_nav → layout/navigation/account}/component.yml +0 -0
  283. /data/app/components/solidus_admin/{sidebar → layout/navigation}/component.js +0 -0
  284. /data/app/components/solidus_admin/{sidebar → layout/navigation}/component.yml +0 -0
  285. /data/app/components/solidus_admin/{skip_link → layout/skip_link}/component.yml +0 -0
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class StoreCreditReasonsController < SolidusAdmin::BaseController
5
+ include SolidusAdmin::ControllerHelpers::Search
6
+
7
+ def index
8
+ store_credit_reasons = apply_search_to(
9
+ Spree::StoreCreditReason.unscoped.order(id: :desc),
10
+ param: :q,
11
+ )
12
+
13
+ set_page_and_extract_portion_from(store_credit_reasons)
14
+
15
+ respond_to do |format|
16
+ format.html { render component('store_credit_reasons/index').new(page: @page) }
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ @store_credit_reason = Spree::StoreCreditReason.find_by!(id: params[:id])
22
+
23
+ Spree::StoreCreditReason.transaction { @store_credit_reason.destroy }
24
+
25
+ flash[:notice] = t('.success')
26
+ redirect_back_or_to store_credit_reasons_path, status: :see_other
27
+ end
28
+
29
+ private
30
+
31
+ def load_store_credit_reason
32
+ @store_credit_reason = Spree::StoreCreditReason.find_by!(id: params[:id])
33
+ authorize! action_name, @store_credit_reason
34
+ end
35
+
36
+ def store_credit_reason_params
37
+ params.require(:store_credit_reason).permit(:store_credit_reason_id, permitted_store_credit_reason_attributes)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class StoresController < SolidusAdmin::BaseController
5
+ include SolidusAdmin::ControllerHelpers::Search
6
+
7
+ def index
8
+ stores = apply_search_to(
9
+ Spree::Store.order(id: :desc),
10
+ param: :q
11
+ )
12
+
13
+ set_page_and_extract_portion_from(stores)
14
+
15
+ respond_to do |format|
16
+ format.html { render component('stores/index').new(page: @page) }
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ @stores = Spree::Store.where(id: params[:id])
22
+
23
+ Spree::Store.transaction { @stores.destroy_all }
24
+
25
+ flash[:notice] = t('.success')
26
+ redirect_back_or_to stores_path, status: :see_other
27
+ end
28
+
29
+ private
30
+
31
+ def load_store
32
+ @store = Spree::Store.find_by!(number: params[:id])
33
+ authorize! action_name, @store
34
+ end
35
+
36
+ def store_params
37
+ params.require(:store).permit(:store_id, permitted_store_attributes)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class TaxCategoriesController < SolidusAdmin::BaseController
5
+ include SolidusAdmin::ControllerHelpers::Search
6
+
7
+ def index
8
+ tax_categories = apply_search_to(
9
+ Spree::TaxCategory.order(created_at: :desc, id: :desc),
10
+ param: :q,
11
+ )
12
+
13
+ set_page_and_extract_portion_from(tax_categories)
14
+
15
+ respond_to do |format|
16
+ format.html { render component('tax_categories/index').new(page: @page) }
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ @tax_categories = Spree::TaxCategory.where(id: params[:id])
22
+
23
+ Spree::TaxCategory.transaction { @tax_categories.destroy_all }
24
+
25
+ flash[:notice] = t('.success')
26
+ redirect_back_or_to tax_categories_path, status: :see_other
27
+ end
28
+
29
+ private
30
+
31
+ def load_tax_category
32
+ @tax_category = Spree::TaxCategory.find_by!(number: params[:id])
33
+ authorize! action_name, @tax_category
34
+ end
35
+
36
+ def tax_category_params
37
+ params.require(:tax_category).permit(:tax_category_id, permitted_tax_category_attributes)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class TaxRatesController < SolidusAdmin::BaseController
5
+ include SolidusAdmin::ControllerHelpers::Search
6
+
7
+ def index
8
+ tax_rates = apply_search_to(
9
+ Spree::TaxRate.order(created_at: :desc, id: :desc),
10
+ param: :q,
11
+ )
12
+
13
+ set_page_and_extract_portion_from(tax_rates)
14
+
15
+ respond_to do |format|
16
+ format.html { render component('tax_rates/index').new(page: @page) }
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ @tax_rates = Spree::TaxRate.where(id: params[:id])
22
+
23
+ Spree::TaxRate.transaction { @tax_rates.destroy_all }
24
+
25
+ flash[:notice] = t('.success')
26
+ redirect_back_or_to tax_rates_path, status: :see_other
27
+ end
28
+
29
+ private
30
+
31
+ def load_tax_rate
32
+ @tax_rate = Spree::TaxRate.find_by!(number: params[:id])
33
+ authorize! action_name, @tax_rate
34
+ end
35
+
36
+ def tax_rate_params
37
+ params.require(:tax_rate).permit(:tax_rate_id, permitted_tax_rate_attributes)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class TaxonomiesController < SolidusAdmin::BaseController
5
+ include SolidusAdmin::ControllerHelpers::Search
6
+
7
+ before_action :load_taxonomy, only: [:move]
8
+
9
+ def index
10
+ taxonomies = apply_search_to(
11
+ Spree::Taxonomy.all,
12
+ param: :q,
13
+ )
14
+
15
+ set_page_and_extract_portion_from(taxonomies)
16
+
17
+ respond_to do |format|
18
+ format.html { render component('taxonomies/index').new(page: @page) }
19
+ end
20
+ end
21
+
22
+ def move
23
+ @taxonomy.insert_at(params[:position].to_i)
24
+
25
+ respond_to do |format|
26
+ format.js { head :no_content }
27
+ end
28
+ end
29
+
30
+ def destroy
31
+ @taxonomies = Spree::Taxonomy.where(id: params[:id])
32
+
33
+ Spree::Taxonomy.transaction { @taxonomies.destroy_all }
34
+
35
+ flash[:notice] = t('.success')
36
+ redirect_back_or_to taxonomies_path, status: :see_other
37
+ end
38
+
39
+ private
40
+
41
+ def load_taxonomy
42
+ @taxonomy = Spree::Taxonomy.find(params[:id])
43
+ authorize! action_name, @taxonomy
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class UsersController < SolidusAdmin::BaseController
5
+ include SolidusAdmin::ControllerHelpers::Search
6
+
7
+ search_scope(:customers, default: true) { _1.left_outer_joins(:role_users).where(role_users: { id: nil }) }
8
+ search_scope(:admin) { _1.joins(:role_users).distinct }
9
+ search_scope(:with_orders) { _1.joins(:orders).distinct }
10
+ search_scope(:without_orders) { _1.left_outer_joins(:orders).where(orders: { id: nil }) }
11
+ search_scope(:all)
12
+
13
+ def index
14
+ users = apply_search_to(
15
+ Spree.user_class.order(created_at: :desc, id: :desc),
16
+ param: :q,
17
+ )
18
+
19
+ set_page_and_extract_portion_from(users)
20
+
21
+ respond_to do |format|
22
+ format.html { render component('users/index').new(page: @page) }
23
+ end
24
+ end
25
+
26
+ def destroy
27
+ @users = Spree.user_class.where(id: params[:id])
28
+
29
+ Spree.user_class.transaction { @users.destroy_all }
30
+
31
+ flash[:notice] = t('.success')
32
+ redirect_back_or_to users_path, status: :see_other
33
+ end
34
+
35
+ private
36
+
37
+ def load_user
38
+ @user = Spree.user_class.find_by!(number: params[:id])
39
+ authorize! action_name, @user
40
+ end
41
+
42
+ def user_params
43
+ params.require(:user).permit(:user_id, permitted_user_attributes)
44
+ end
45
+
46
+ def authorization_subject
47
+ Spree.user_class
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class ZonesController < SolidusAdmin::BaseController
5
+ include SolidusAdmin::ControllerHelpers::Search
6
+
7
+ def index
8
+ zones = apply_search_to(
9
+ Spree::Zone.order(id: :desc),
10
+ param: :q
11
+ )
12
+
13
+ set_page_and_extract_portion_from(zones)
14
+
15
+ respond_to do |format|
16
+ format.html { render component('zones/index').new(page: @page) }
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ @zones = Spree::Zone.where(id: params[:id])
22
+
23
+ Spree::Zone.transaction { @zones.destroy_all }
24
+
25
+ flash[:notice] = t('.success')
26
+ redirect_back_or_to zones_path, status: :see_other
27
+ end
28
+
29
+ private
30
+
31
+ def load_zone
32
+ @zone = Spree::Zone.find_by!(number: params[:id])
33
+ authorize! action_name, @zone
34
+ end
35
+
36
+ def zone_params
37
+ params.require(:zone).permit(:zone_id, permitted_zone_attributes)
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,5 @@
1
+ /* eslint no-console: ["error", { allow: ["warn", "error"] }] */
2
+
1
3
  import "@hotwired/stimulus"
2
4
 
3
5
  const registeredControllers = {}
@@ -32,4 +34,4 @@ function registerController(name, module, application) {
32
34
  application.register(name, module.default)
33
35
  registeredControllers[name] = true
34
36
  }
35
- };
37
+ }
@@ -0,0 +1,21 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ export default class extends Controller {
4
+ static values = {"text": String}
5
+
6
+ connect() {
7
+ this.element.addEventListener("click", this)
8
+ this.element.addEventListener("submit", this)
9
+ }
10
+
11
+ disconnect() {
12
+ this.element.removeEventListener("click", this)
13
+ this.element.removeEventListener("submit", this)
14
+ }
15
+
16
+ handleEvent(event) {
17
+ if (!confirm(this.textValue)) {
18
+ event.preventDefault()
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+ import { useClickOutside } from "stimulus-use"
3
+
4
+ export default class extends Controller {
5
+ connect() {
6
+ useClickOutside(this)
7
+ }
8
+
9
+ clickOutside() {
10
+ this.element.removeAttribute("open")
11
+ }
12
+ }
@@ -0,0 +1,17 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ export default class extends Controller {
4
+ connect() {
5
+ this.element.addEventListener("submit", this)
6
+ }
7
+
8
+ disconnect() {
9
+ this.element.removeEventListener("submit", this)
10
+ }
11
+
12
+ handleEvent() {
13
+ for (const element of this.element.elements) {
14
+ element.setAttribute("readonly", true)
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,33 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+ import Sortable from "sortablejs"
3
+ import { patch } from '@rails/request.js'
4
+
5
+ export default class extends Controller {
6
+ static values = {
7
+ param: { type: String, default: 'postion' },
8
+ handle: { type: String, default: null },
9
+ animation: { type: Number, default: 150 },
10
+ }
11
+
12
+ connect() {
13
+ this.sortable = Sortable.create(this.element, {
14
+ onEnd: this.onEnd.bind(this),
15
+ animation: this.animationValue,
16
+ handle: this.handleValue,
17
+ })
18
+ }
19
+
20
+ async onEnd({ item, newIndex }) {
21
+ if (!item.dataset.sortableUrl) return
22
+
23
+ const data = new FormData()
24
+ data.append(this.paramValue, newIndex + 1)
25
+
26
+ return await patch(item.dataset.sortableUrl, { body: data, responseKind: "js" })
27
+ }
28
+
29
+ disconnect() {
30
+ this.sortable.destroy()
31
+ this.sortable = null
32
+ }
33
+ }
@@ -2,23 +2,23 @@
2
2
  <html lang="<%= current_locale %>">
3
3
  <head>
4
4
  <%= favicon_link_tag 'solidus_admin/favicon.ico' %>
5
+
5
6
  <title><%= solidus_admin_title %></title>
6
- <%= stylesheet_link_tag "solidus_admin/application.css", "inter-font", "data-turbo-track": "reload" %>
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+ <%= csrf_meta_tags %>
9
+ <%= csp_meta_tag %>
10
+
11
+ <%= stylesheet_link_tag SolidusAdmin::Config.theme_path(session[:admin_light_theme]), media: '(prefers-color-scheme: light)', "data-turbo-track": "reload" %>
12
+ <%= stylesheet_link_tag SolidusAdmin::Config.theme_path(session[:admin_dark_theme]), media: '(prefers-color-scheme: dark)', "data-turbo-track": "reload" %>
7
13
  <%= javascript_importmap_tags "solidus_admin/application", shim: false, importmap: SolidusAdmin.importmap %>
8
14
  </head>
9
15
 
10
- <body class="bg-gray-15">
11
- <%= render component("skip_link").new(href: "#main") %>
12
- <div class="fixed right-3 bottom-3 flex flex-col gap-3" role="alert">
13
- <% flash.each do |key, message| %>
14
- <%= render component("ui/toast").new(text: message, scheme: key == :error ? :error : :default) %>
15
- <% end %>
16
- </div>
17
-
16
+ <body class="bg-gray-15 font-sans">
17
+ <%= render component("layout/skip_link").new(href: "#main") %>
18
18
  <div class="flex gap-0">
19
19
  <div class="min-w-[240px] border-r border-r-gray-100 relative">
20
20
  <div class="min-h-screen top-0 sticky flex">
21
- <%= render component("sidebar").new(store: current_store) %>
21
+ <%= render component("layout/navigation").new(store: current_store) %>
22
22
  </div>
23
23
  </div>
24
24
 
@@ -26,5 +26,11 @@
26
26
  <%= yield %>
27
27
  </main>
28
28
  </div>
29
+
30
+ <div class="fixed inset-x-0 bottom-3 flex items-center justify-center flex-col gap-3 pointer-events-none" role="alert">
31
+ <% flash.each do |key, message| %>
32
+ <%= render component("ui/toast").new(text: message, scheme: key == :error ? :error : :default) %>
33
+ <% end %>
34
+ </div>
29
35
  </body>
30
36
  </html>
@@ -1,7 +1,6 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <%= stylesheet_link_tag "solidus_admin/application.css", "inter-font", "data-turbo-track": "reload" %>
5
4
  <%= javascript_importmap_tags "solidus_admin/application", shim: false, importmap: SolidusAdmin.importmap %>
6
5
  </head>
7
6
  <body class="p-3">
@@ -0,0 +1,4 @@
1
+ <div class="p-4">
2
+ <h1 class="text-3xl font-semibold text-solidus-red mb-4"><%= t('solidus_admin.errors.authorization.access_denied.title') %></h1>
3
+ <p class="text-lg text-gray-700"><%= t('solidus_admin.errors.authorization.access_denied.description') %></p>
4
+ </div>
data/config/importmap.rb CHANGED
@@ -6,6 +6,8 @@ pin "@hotwired/stimulus-loading", to: "stimulus-loading.js"
6
6
  pin "@hotwired/turbo-rails", to: "turbo.js"
7
7
 
8
8
  pin "stimulus-use", to: "https://ga.jspm.io/npm:stimulus-use@0.52.0/dist/index.js"
9
+ pin "sortablejs", to: "https://cdn.jsdelivr.net/npm/sortablejs@1.15.0/+esm"
10
+ pin "@rails/request.js", to: "https://cdn.jsdelivr.net/npm/@rails/request.js@0.0.9/+esm"
9
11
 
10
12
  pin "solidus_admin/application", preload: true
11
13
  pin "solidus_admin/utils"
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rails.application.config.view_component.capture_compatibility_patch_enabled = true
4
+
5
+ if Rails.env.development? || Rails.env.test?
6
+ Rails.application.config.view_component.instrumentation_enabled = true
7
+ Rails.application.config.view_component.use_deprecated_instrumentation_name = false
8
+
9
+ bold = "\e[1m"
10
+ clear = "\e[0m"
11
+
12
+ ActiveSupport::Notifications.subscribe("render.view_component") do |*args|
13
+ next unless args.last[:name].starts_with?("SolidusAdmin::")
14
+
15
+ event = ActiveSupport::Notifications::Event.new(*args)
16
+ SolidusAdmin::BaseComponent.logger.debug \
17
+ " Rendered #{bold}#{event.payload[:name]}#{clear}" \
18
+ " (Duration: #{event.duration.round(1)}ms)"
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ adjustment_reasons:
4
+ title: "Adjustment Reasons"
5
+ destroy:
6
+ success: "Adjustment Reasons were successfully removed."
@@ -0,0 +1,7 @@
1
+ en:
2
+ solidus_admin:
3
+ customers:
4
+ title: "Customers"
5
+ destroy:
6
+ success: "Customer was removed successfully"
7
+ error: "Customer could not be removed"
@@ -0,0 +1,7 @@
1
+ en:
2
+ solidus_admin:
3
+ errors:
4
+ authorization:
5
+ access_denied:
6
+ title: "Access Denied"
7
+ description: "You are not authorized to access this page."
@@ -0,0 +1,9 @@
1
+ en:
2
+ solidus_admin:
3
+ line_items:
4
+ update:
5
+ success: "Quantity updated successfully"
6
+ create:
7
+ success: "Variant added to cart successfully"
8
+ destroy:
9
+ success: "Line item removed successfully"
@@ -1,13 +1,19 @@
1
1
  en:
2
2
  solidus_admin:
3
- main_nav:
3
+ menu_item:
4
4
  orders: Orders
5
5
  products: Products
6
6
  option_types: Option Types
7
- property_types: Property Types
7
+ property_types: Properties
8
8
  taxonomies: Taxonomies
9
9
  taxons: Display Order
10
10
  promotions: Promotions
11
+ promotion_categories: Promotion Categories
11
12
  stock: Stock
12
13
  users: Users
13
14
  settings: Settings
15
+ stores: Stores
16
+ taxes: Taxes
17
+ checkout: Refunds and Returns
18
+ shipping: Shipping
19
+ zones: Zones
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ option_types:
4
+ title: "Option Types"
5
+ destroy:
6
+ success: "Option Types were successfully removed."
@@ -2,3 +2,12 @@ en:
2
2
  solidus_admin:
3
3
  orders:
4
4
  title: "Orders"
5
+ update:
6
+ success: "Order was updated successfully"
7
+ error: "Order could not be updated"
8
+ addresses:
9
+ title: "Addresses"
10
+ update:
11
+ success: "The address has been successfully updated."
12
+ errors:
13
+ address_type_invalid: "Invalid address type. Please select either billing or shipping address."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ payment_methods:
4
+ title: "Payment Methods"
5
+ destroy:
6
+ success: "Payment Methods were successfully removed."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ promotion_categories:
4
+ title: "Promotion Categories"
5
+ destroy:
6
+ success: "Promotion Categories were successfully removed."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ promotions:
4
+ title: "Promotions"
5
+ destroy:
6
+ success: "Promotions were successfully removed."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ properties:
4
+ title: "Properties"
5
+ destroy:
6
+ success: "Properties were successfully removed."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ refund_reasons:
4
+ title: "Refund Reasons"
5
+ destroy:
6
+ success: "Refund Reasons were successfully removed."
@@ -0,0 +1,4 @@
1
+ en:
2
+ solidus_admin:
3
+ reimbursement_types:
4
+ title: "Reimbursement Types"
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ return_reasons:
4
+ title: "Return Reasons"
5
+ destroy:
6
+ success: "Return Reasons were successfully removed."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ shipping_categories:
4
+ title: "Shipping Categories"
5
+ destroy:
6
+ success: "Shipping categories were successfully removed."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ shipping_methods:
4
+ title: "Shipping Methods"
5
+ destroy:
6
+ success: "Shipping methods were successfully removed."
@@ -0,0 +1,4 @@
1
+ en:
2
+ solidus_admin:
3
+ stock_items:
4
+ title: "Stock Items"
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ stock_locations:
4
+ title: "Stock Locations"
5
+ destroy:
6
+ success: "Stock locations were successfully removed."
@@ -0,0 +1,6 @@
1
+ en:
2
+ solidus_admin:
3
+ store_credit_reasons:
4
+ title: "Store Credit Reasons"
5
+ destroy:
6
+ success: "Store Credit Reasons were successfully removed."