solidus_admin 0.4.0 → 0.5.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 (335) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +23 -4
  3. data/README.md +6 -1
  4. data/Rakefile +15 -15
  5. data/app/assets/builds/solidus_admin/tailwind.css +722 -45
  6. data/app/assets/images/solidus_admin/remixicon.license.txt +196 -0
  7. data/app/assets/images/solidus_admin/remixicon.symbol.svg +4 -4
  8. data/app/blueprints/solidus_admin/state_blueprint.rb +13 -0
  9. data/app/components/concerns/solidus_admin/slotable_default.rb +42 -0
  10. data/app/components/solidus_admin/adjustment_reasons/edit/component.html.erb +6 -15
  11. data/app/components/solidus_admin/adjustment_reasons/edit/component.yml +0 -1
  12. data/app/components/solidus_admin/adjustment_reasons/index/component.rb +13 -13
  13. data/app/components/solidus_admin/adjustment_reasons/new/component.html.erb +6 -15
  14. data/app/components/solidus_admin/adjustment_reasons/new/component.yml +0 -1
  15. data/app/components/solidus_admin/base_component.rb +7 -3
  16. data/app/components/solidus_admin/layout/confirm/component.html.erb +18 -0
  17. data/app/components/solidus_admin/layout/confirm/component.js +21 -0
  18. data/app/components/solidus_admin/layout/confirm/component.rb +26 -0
  19. data/app/components/solidus_admin/layout/confirm/component.yml +4 -0
  20. data/app/components/solidus_admin/layout/flashes/alerts/component.html.erb +7 -0
  21. data/app/components/solidus_admin/layout/flashes/alerts/component.rb +19 -0
  22. data/app/components/solidus_admin/layout/flashes/component.html.erb +5 -0
  23. data/app/components/solidus_admin/layout/flashes/component.rb +4 -0
  24. data/app/components/solidus_admin/layout/flashes/toasts/component.html.erb +5 -0
  25. data/app/components/solidus_admin/layout/flashes/toasts/component.rb +9 -0
  26. data/app/components/solidus_admin/layout/navigation/account/component.html.erb +12 -1
  27. data/app/components/solidus_admin/layout/navigation/account/component.rb +4 -4
  28. data/app/components/solidus_admin/layout/page_helpers.rb +3 -9
  29. data/app/components/solidus_admin/layout/skip_link/component.rb +3 -3
  30. data/app/components/solidus_admin/option_types/edit/component.html.erb +44 -0
  31. data/app/components/solidus_admin/option_types/edit/component.rb +5 -0
  32. data/app/components/solidus_admin/option_types/edit/component.yml +10 -0
  33. data/app/components/solidus_admin/option_types/index/component.rb +22 -22
  34. data/app/components/solidus_admin/option_types/new/component.html.erb +16 -0
  35. data/app/components/solidus_admin/option_types/new/component.rb +4 -0
  36. data/app/components/solidus_admin/option_types/new/component.yml +4 -0
  37. data/app/components/solidus_admin/option_values/edit/component.html.erb +16 -0
  38. data/app/components/solidus_admin/option_values/edit/component.rb +4 -0
  39. data/app/components/solidus_admin/option_values/edit/component.yml +4 -0
  40. data/app/components/solidus_admin/option_values/new/component.html.erb +16 -0
  41. data/app/components/solidus_admin/option_values/new/component.rb +7 -0
  42. data/app/components/solidus_admin/option_values/new/component.yml +4 -0
  43. data/app/components/solidus_admin/option_values/table/component.rb +53 -0
  44. data/app/components/solidus_admin/option_values/table/component.yml +3 -0
  45. data/app/components/solidus_admin/orders/cart/component.html.erb +5 -7
  46. data/app/components/solidus_admin/orders/cart/result/component.html.erb +2 -2
  47. data/app/components/solidus_admin/orders/index/component.rb +26 -26
  48. data/app/components/solidus_admin/orders/show/address/component.html.erb +8 -20
  49. data/app/components/solidus_admin/orders/show/address/component.rb +7 -7
  50. data/app/components/solidus_admin/orders/show/address/component.yml +0 -1
  51. data/app/components/solidus_admin/orders/show/adjustments/index/adjustable/spree_shipment/component.rb +1 -1
  52. data/app/components/solidus_admin/orders/show/adjustments/index/component.rb +24 -21
  53. data/app/components/solidus_admin/orders/show/component.html.erb +2 -2
  54. data/app/components/solidus_admin/orders/show/component.rb +1 -1
  55. data/app/components/solidus_admin/orders/show/component.yml +0 -3
  56. data/app/components/solidus_admin/orders/show/customer_search/result/component.html.erb +2 -2
  57. data/app/components/solidus_admin/orders/show/email/component.html.erb +2 -2
  58. data/app/components/solidus_admin/payment_methods/edit/component.html.erb +13 -0
  59. data/app/components/solidus_admin/payment_methods/edit/component.rb +7 -0
  60. data/app/components/solidus_admin/payment_methods/edit/component.yml +2 -0
  61. data/app/components/solidus_admin/payment_methods/form/component.html.erb +29 -0
  62. data/app/components/solidus_admin/payment_methods/form/component.rb +34 -0
  63. data/app/components/solidus_admin/payment_methods/form/component.yml +15 -0
  64. data/app/components/solidus_admin/payment_methods/index/component.rb +24 -23
  65. data/app/components/solidus_admin/payment_methods/new/component.html.erb +12 -0
  66. data/app/components/solidus_admin/payment_methods/new/component.rb +7 -0
  67. data/app/components/solidus_admin/payment_methods/new/component.yml +2 -0
  68. data/app/components/solidus_admin/products/index/component.rb +26 -26
  69. data/app/components/solidus_admin/products/show/categories/new/component.html.erb +17 -0
  70. data/app/components/solidus_admin/products/show/categories/new/component.rb +17 -0
  71. data/app/components/solidus_admin/products/show/categories/new/component.yml +5 -0
  72. data/app/components/solidus_admin/products/show/component.html.erb +90 -66
  73. data/app/components/solidus_admin/products/show/component.rb +2 -2
  74. data/app/components/solidus_admin/products/show/component.yml +23 -11
  75. data/app/components/solidus_admin/products/status/component.rb +1 -1
  76. data/app/components/solidus_admin/products/stock/component.rb +7 -7
  77. data/app/components/solidus_admin/properties/edit/component.html.erb +5 -5
  78. data/app/components/solidus_admin/properties/index/component.rb +13 -13
  79. data/app/components/solidus_admin/properties/new/component.html.erb +5 -5
  80. data/app/components/solidus_admin/refund_reasons/edit/component.html.erb +6 -15
  81. data/app/components/solidus_admin/refund_reasons/edit/component.yml +0 -1
  82. data/app/components/solidus_admin/refund_reasons/index/component.rb +13 -13
  83. data/app/components/solidus_admin/refund_reasons/new/component.html.erb +6 -14
  84. data/app/components/solidus_admin/refund_reasons/new/component.yml +0 -1
  85. data/app/components/solidus_admin/refunds_and_returns/component.rb +7 -7
  86. data/app/components/solidus_admin/reimbursement_types/index/component.rb +2 -2
  87. data/app/components/solidus_admin/return_reasons/edit/component.html.erb +5 -14
  88. data/app/components/solidus_admin/return_reasons/index/component.rb +11 -11
  89. data/app/components/solidus_admin/return_reasons/new/component.html.erb +5 -14
  90. data/app/components/solidus_admin/roles/edit/component.html.erb +12 -12
  91. data/app/components/solidus_admin/roles/edit/component.yml +0 -1
  92. data/app/components/solidus_admin/roles/index/component.rb +12 -12
  93. data/app/components/solidus_admin/roles/new/component.html.erb +12 -12
  94. data/app/components/solidus_admin/roles/new/component.yml +0 -1
  95. data/app/components/solidus_admin/shipping/component.rb +5 -5
  96. data/app/components/solidus_admin/shipping_categories/edit/component.html.erb +4 -4
  97. data/app/components/solidus_admin/shipping_categories/edit/component.yml +0 -1
  98. data/app/components/solidus_admin/shipping_categories/index/component.rb +9 -9
  99. data/app/components/solidus_admin/shipping_categories/new/component.html.erb +4 -4
  100. data/app/components/solidus_admin/shipping_categories/new/component.yml +0 -1
  101. data/app/components/solidus_admin/shipping_methods/index/component.rb +10 -10
  102. data/app/components/solidus_admin/stock_items/edit/component.html.erb +5 -8
  103. data/app/components/solidus_admin/stock_items/edit/component.rb +2 -2
  104. data/app/components/solidus_admin/stock_items/index/component.rb +25 -25
  105. data/app/components/solidus_admin/stock_locations/edit/component.html.erb +16 -0
  106. data/app/components/solidus_admin/stock_locations/edit/component.rb +5 -0
  107. data/app/components/solidus_admin/stock_locations/edit/component.yml +2 -0
  108. data/app/components/solidus_admin/stock_locations/form/component.html.erb +65 -0
  109. data/app/components/solidus_admin/stock_locations/form/component.rb +11 -0
  110. data/app/components/solidus_admin/stock_locations/form/component.yml +19 -0
  111. data/app/components/solidus_admin/stock_locations/index/component.rb +94 -47
  112. data/app/components/solidus_admin/stock_locations/new/component.html.erb +16 -0
  113. data/app/components/solidus_admin/stock_locations/new/component.rb +16 -0
  114. data/app/components/solidus_admin/stock_locations/new/component.yml +2 -0
  115. data/app/components/solidus_admin/store_credit_reasons/edit/component.html.erb +5 -14
  116. data/app/components/solidus_admin/store_credit_reasons/edit/component.yml +0 -1
  117. data/app/components/solidus_admin/store_credit_reasons/index/component.rb +11 -11
  118. data/app/components/solidus_admin/store_credit_reasons/new/component.html.erb +5 -14
  119. data/app/components/solidus_admin/store_credit_reasons/new/component.yml +0 -1
  120. data/app/components/solidus_admin/stores/edit/component.html.erb +27 -0
  121. data/app/components/solidus_admin/stores/edit/component.rb +5 -0
  122. data/app/components/solidus_admin/stores/form/component.html.erb +102 -0
  123. data/app/components/solidus_admin/stores/form/component.rb +27 -0
  124. data/app/components/solidus_admin/stores/form/component.yml +17 -0
  125. data/app/components/solidus_admin/stores/index/component.rb +51 -22
  126. data/app/components/solidus_admin/stores/new/component.html.erb +16 -0
  127. data/app/components/solidus_admin/stores/new/component.rb +5 -0
  128. data/app/components/solidus_admin/stores/new/component.yml +2 -0
  129. data/app/components/solidus_admin/tax_categories/edit/component.html.erb +7 -15
  130. data/app/components/solidus_admin/tax_categories/edit/component.yml +0 -1
  131. data/app/components/solidus_admin/tax_categories/index/component.rb +17 -17
  132. data/app/components/solidus_admin/tax_categories/new/component.html.erb +7 -15
  133. data/app/components/solidus_admin/tax_categories/new/component.yml +0 -1
  134. data/app/components/solidus_admin/tax_rates/edit/component.html.erb +12 -0
  135. data/app/components/solidus_admin/tax_rates/edit/component.rb +5 -0
  136. data/app/components/solidus_admin/tax_rates/edit/component.yml +4 -0
  137. data/app/components/solidus_admin/tax_rates/form/component.html.erb +25 -0
  138. data/app/components/solidus_admin/tax_rates/form/component.rb +29 -0
  139. data/app/components/solidus_admin/tax_rates/form/component.yml +9 -0
  140. data/app/components/solidus_admin/tax_rates/index/component.rb +38 -20
  141. data/app/components/solidus_admin/tax_rates/new/component.html.erb +12 -0
  142. data/app/components/solidus_admin/tax_rates/new/component.rb +5 -0
  143. data/app/components/solidus_admin/tax_rates/new/component.yml +4 -0
  144. data/app/components/solidus_admin/taxes/component.rb +4 -4
  145. data/app/components/solidus_admin/taxonomies/index/component.rb +7 -7
  146. data/app/components/solidus_admin/turbo/target_frame/component.html.erb +5 -0
  147. data/app/components/solidus_admin/turbo/target_frame/component.rb +8 -0
  148. data/app/components/solidus_admin/ui/alert/component.html.erb +35 -0
  149. data/app/components/solidus_admin/ui/alert/component.rb +51 -0
  150. data/app/components/solidus_admin/ui/alert/component.yml +8 -0
  151. data/app/components/solidus_admin/ui/badge/component.rb +11 -11
  152. data/app/components/solidus_admin/ui/button/component.rb +84 -27
  153. data/app/components/solidus_admin/ui/button/component.yml +10 -0
  154. data/app/components/solidus_admin/ui/checkbox/component.rb +42 -0
  155. data/app/components/solidus_admin/ui/dropdown/component.rb +3 -3
  156. data/app/components/solidus_admin/ui/forms/address/component.html.erb +1 -48
  157. data/app/components/solidus_admin/ui/forms/address/component.rb +29 -6
  158. data/app/components/solidus_admin/ui/forms/address/fields/city_and_zipcode/component.html.erb +4 -0
  159. data/app/components/solidus_admin/ui/forms/address/fields/city_and_zipcode/component.rb +8 -0
  160. data/app/components/solidus_admin/ui/forms/address/fields/country_and_state/component.html.erb +39 -0
  161. data/app/components/solidus_admin/ui/forms/address/{component.js → fields/country_and_state/component.js} +2 -0
  162. data/app/components/solidus_admin/ui/forms/address/fields/country_and_state/component.rb +15 -0
  163. data/app/components/solidus_admin/ui/forms/address/fields/reverse_charge_fields/component.html.erb +7 -0
  164. data/app/components/solidus_admin/ui/forms/address/fields/reverse_charge_fields/component.rb +12 -0
  165. data/app/components/solidus_admin/ui/forms/address/fieldsets/base.rb +54 -0
  166. data/app/components/solidus_admin/ui/forms/address/fieldsets/contact/component.rb +16 -0
  167. data/app/components/solidus_admin/ui/forms/address/fieldsets/contact_info/component.rb +10 -0
  168. data/app/components/solidus_admin/ui/forms/address/fieldsets/location/component.rb +14 -0
  169. data/app/components/solidus_admin/ui/forms/checkbox/component.html.erb +14 -0
  170. data/app/components/solidus_admin/ui/forms/checkbox/component.rb +24 -31
  171. data/app/components/solidus_admin/ui/forms/field/component.html.erb +4 -4
  172. data/app/components/solidus_admin/ui/forms/field/component.rb +14 -18
  173. data/app/components/solidus_admin/ui/forms/input/component.rb +9 -18
  174. data/app/components/solidus_admin/ui/forms/search/result/component.rb +2 -2
  175. data/app/components/solidus_admin/ui/forms/select/component.html.erb +21 -0
  176. data/app/components/solidus_admin/ui/forms/select/component.rb +157 -0
  177. data/app/components/solidus_admin/ui/forms/switch/component.rb +4 -4
  178. data/app/components/solidus_admin/ui/icon/component.rb +4 -4
  179. data/app/components/solidus_admin/ui/icon/names.txt +973 -238
  180. data/app/components/solidus_admin/ui/modal/component.html.erb +2 -4
  181. data/app/components/solidus_admin/ui/modal/component.js +7 -1
  182. data/app/components/solidus_admin/ui/modal/component.rb +2 -2
  183. data/app/components/solidus_admin/ui/pages/index/component.rb +50 -19
  184. data/app/components/solidus_admin/ui/panel/component.rb +5 -9
  185. data/app/components/solidus_admin/ui/radio/component.rb +29 -0
  186. data/app/components/solidus_admin/ui/tab/component.rb +4 -4
  187. data/app/components/solidus_admin/ui/table/component.html.erb +11 -10
  188. data/app/components/solidus_admin/ui/table/component.js +18 -26
  189. data/app/components/solidus_admin/ui/table/component.rb +24 -18
  190. data/app/components/solidus_admin/ui/table/component.yml +1 -0
  191. data/app/components/solidus_admin/ui/table/ransack_filter/component.html.erb +1 -1
  192. data/app/components/solidus_admin/ui/table/ransack_filter/component.rb +7 -7
  193. data/app/components/solidus_admin/ui/thumbnail/component.rb +5 -5
  194. data/app/components/solidus_admin/ui/toast/component.html.erb +6 -6
  195. data/app/components/solidus_admin/ui/toast/component.rb +1 -1
  196. data/app/components/solidus_admin/ui/toggletip/component.rb +1 -1
  197. data/app/components/solidus_admin/users/addresses/component.html.erb +3 -5
  198. data/app/components/solidus_admin/users/addresses/component.rb +0 -30
  199. data/app/components/solidus_admin/users/addresses/component.yml +0 -7
  200. data/app/components/solidus_admin/users/edit/api_access/component.html.erb +6 -4
  201. data/app/components/solidus_admin/users/edit/api_access/component.yml +8 -2
  202. data/app/components/solidus_admin/users/edit/component.html.erb +15 -12
  203. data/app/components/solidus_admin/users/edit/component.rb +1 -33
  204. data/app/components/solidus_admin/users/edit/component.yml +0 -7
  205. data/app/components/solidus_admin/users/edit/tabs/component.rb +46 -0
  206. data/app/components/solidus_admin/users/edit/tabs/component.yml +6 -0
  207. data/app/components/solidus_admin/users/index/component.rb +20 -20
  208. data/app/components/solidus_admin/users/items/component.html.erb +1 -3
  209. data/app/components/solidus_admin/users/items/component.rb +18 -51
  210. data/app/components/solidus_admin/users/items/component.yml +0 -7
  211. data/app/components/solidus_admin/users/orders/component.html.erb +1 -3
  212. data/app/components/solidus_admin/users/orders/component.rb +9 -39
  213. data/app/components/solidus_admin/users/orders/component.yml +0 -6
  214. data/app/components/solidus_admin/users/store_credits/edit_amount/component.html.erb +7 -8
  215. data/app/components/solidus_admin/users/store_credits/edit_amount/component.rb +0 -5
  216. data/app/components/solidus_admin/users/store_credits/edit_amount/component.yml +0 -1
  217. data/app/components/solidus_admin/users/store_credits/edit_memo/component.html.erb +4 -4
  218. data/app/components/solidus_admin/users/store_credits/edit_memo/component.yml +0 -1
  219. data/app/components/solidus_admin/users/store_credits/edit_validity/component.html.erb +6 -7
  220. data/app/components/solidus_admin/users/store_credits/edit_validity/component.rb +0 -5
  221. data/app/components/solidus_admin/users/store_credits/index/component.html.erb +4 -6
  222. data/app/components/solidus_admin/users/store_credits/index/component.rb +10 -40
  223. data/app/components/solidus_admin/users/store_credits/index/component.yml +0 -6
  224. data/app/components/solidus_admin/users/store_credits/new/component.html.erb +12 -13
  225. data/app/components/solidus_admin/users/store_credits/new/component.rb +0 -9
  226. data/app/components/solidus_admin/users/store_credits/new/component.yml +0 -1
  227. data/app/components/solidus_admin/users/store_credits/show/component.html.erb +5 -7
  228. data/app/components/solidus_admin/users/store_credits/show/component.rb +8 -38
  229. data/app/components/solidus_admin/users/store_credits/show/component.yml +0 -6
  230. data/app/components/solidus_admin/users_and_roles/component.rb +4 -4
  231. data/app/components/solidus_admin/zones/edit/component.html.erb +1 -0
  232. data/app/components/solidus_admin/zones/edit/component.rb +4 -0
  233. data/app/components/solidus_admin/zones/form/component.html.erb +47 -0
  234. data/app/components/solidus_admin/zones/form/component.js +32 -0
  235. data/app/components/solidus_admin/zones/form/component.rb +23 -0
  236. data/app/components/solidus_admin/zones/form/component.yml +7 -0
  237. data/app/components/solidus_admin/zones/index/component.rb +57 -18
  238. data/app/components/solidus_admin/zones/new/component.html.erb +1 -0
  239. data/app/components/solidus_admin/zones/new/component.rb +4 -0
  240. data/app/controllers/concerns/solidus_admin/moveable.rb +31 -0
  241. data/app/controllers/solidus_admin/addresses_controller.rb +9 -11
  242. data/app/controllers/solidus_admin/adjustments_controller.rb +5 -6
  243. data/app/controllers/solidus_admin/base_controller.rb +8 -7
  244. data/app/controllers/solidus_admin/controller_helpers/authorization.rb +1 -1
  245. data/app/controllers/solidus_admin/controller_helpers/locale.rb +1 -1
  246. data/app/controllers/solidus_admin/controller_helpers/pagination.rb +37 -0
  247. data/app/controllers/solidus_admin/controller_helpers/search.rb +5 -5
  248. data/app/controllers/solidus_admin/controller_helpers/theme.rb +2 -2
  249. data/app/controllers/solidus_admin/customers_controller.rb +3 -3
  250. data/app/controllers/solidus_admin/line_items_controller.rb +3 -3
  251. data/app/controllers/solidus_admin/option_types_controller.rb +11 -32
  252. data/app/controllers/solidus_admin/option_values_controller.rb +54 -0
  253. data/app/controllers/solidus_admin/orders_controller.rb +25 -19
  254. data/app/controllers/solidus_admin/payment_methods_controller.rb +23 -28
  255. data/app/controllers/solidus_admin/product_option_types_controller.rb +5 -0
  256. data/app/controllers/solidus_admin/product_taxons_controller.rb +58 -0
  257. data/app/controllers/solidus_admin/products_controller.rb +24 -28
  258. data/app/controllers/solidus_admin/reimbursement_types_controller.rb +3 -3
  259. data/app/controllers/solidus_admin/resources_controller.rb +59 -20
  260. data/app/controllers/solidus_admin/shipping_methods_controller.rb +4 -4
  261. data/app/controllers/solidus_admin/states_controller.rb +30 -0
  262. data/app/controllers/solidus_admin/stock_items_controller.rb +11 -6
  263. data/app/controllers/solidus_admin/stock_locations_controller.rb +25 -26
  264. data/app/controllers/solidus_admin/store_credits_controller.rb +9 -9
  265. data/app/controllers/solidus_admin/stores_controller.rb +43 -9
  266. data/app/controllers/solidus_admin/tax_rates_controller.rb +9 -22
  267. data/app/controllers/solidus_admin/taxonomies_controller.rb +5 -21
  268. data/app/controllers/solidus_admin/users_controller.rb +16 -16
  269. data/app/controllers/solidus_admin/zones_controller.rb +6 -26
  270. data/app/helpers/solidus_admin/flash_helper.rb +14 -0
  271. data/app/helpers/solidus_admin/last_login_helper.rb +2 -2
  272. data/app/helpers/solidus_admin/permission_sets_helper.rb +3 -3
  273. data/app/helpers/solidus_admin/solidus_form_helper.rb +9 -0
  274. data/app/helpers/solidus_admin/stimulus_helper.rb +29 -0
  275. data/app/helpers/solidus_admin/void_elements_helper.rb +1 -1
  276. data/app/javascript/solidus_admin/application.js +10 -1
  277. data/app/javascript/solidus_admin/confirm_modal.js +24 -0
  278. data/app/javascript/solidus_admin/controllers/custom_validity_controller.js +12 -0
  279. data/app/javascript/solidus_admin/controllers/sortable_controller.js +9 -2
  280. data/app/javascript/solidus_admin/tom-select/plugins/patch_scroll.js +19 -0
  281. data/app/javascript/solidus_admin/tom-select/plugins/remote_with_pagination.js +67 -0
  282. data/app/javascript/solidus_admin/tom-select/plugins/stash_on_search.js +68 -0
  283. data/app/javascript/solidus_admin/tom-select/tom-select.js +11 -0
  284. data/app/javascript/solidus_admin/utils.js +40 -0
  285. data/app/javascript/solidus_admin/web_components/solidus_select.js +90 -0
  286. data/app/javascript/vendor/custom_elements.js +3 -0
  287. data/app/lib/solidus_admin/form_builder.rb +58 -0
  288. data/app/views/layouts/solidus_admin/application.html.erb +6 -8
  289. data/app/views/layouts/solidus_admin/preview.html.erb +1 -1
  290. data/app/views/solidus_admin/option_values/create.turbo_stream.erb +3 -0
  291. data/app/views/solidus_admin/option_values/destroy.turbo_stream.erb +3 -0
  292. data/app/views/solidus_admin/option_values/update.turbo_stream.erb +3 -0
  293. data/config/importmap.rb +9 -0
  294. data/config/initializers/view_component.rb +1 -1
  295. data/config/locales/option_types.en.yml +5 -1
  296. data/config/locales/option_values.en.yml +9 -0
  297. data/config/locales/payment_methods.en.yml +5 -1
  298. data/config/locales/product_taxons.en.yml +6 -0
  299. data/config/locales/products.en.yml +2 -0
  300. data/config/locales/solidus_select.yml +6 -0
  301. data/config/locales/stock_locations.en.yml +4 -0
  302. data/config/locales/stores.en.yml +22 -0
  303. data/config/locales/tax_rates.en.yml +4 -0
  304. data/config/locales/zones.en.yml +4 -0
  305. data/config/routes.rb +21 -9
  306. data/config/tailwind.config.js +6 -2
  307. data/docs/components.md +2 -2
  308. data/docs/index_pages.md +11 -5
  309. data/docs/stimulusjs.md +1 -1
  310. data/eslint.config.mjs +25 -0
  311. data/lib/generators/solidus_admin/component/component_generator.rb +10 -6
  312. data/lib/generators/solidus_admin/install/install_generator.rb +24 -5
  313. data/lib/generators/solidus_admin/install/templates/config/initializers/solidus_admin.rb.tt +6 -0
  314. data/lib/solidus_admin/admin_resources.rb +1 -1
  315. data/lib/solidus_admin/configuration.rb +14 -14
  316. data/lib/solidus_admin/engine.rb +3 -2
  317. data/lib/solidus_admin/importmap.rb +1 -1
  318. data/lib/solidus_admin/menu_item.rb +1 -1
  319. data/lib/solidus_admin/preview.rb +1 -0
  320. data/lib/solidus_admin/testing_support/admin_assets.rb +1 -1
  321. data/lib/solidus_admin/testing_support/feature_helpers.rb +77 -3
  322. data/lib/solidus_admin/testing_support/shared_examples/crud_resource_requests.rb +43 -36
  323. data/lib/solidus_admin/testing_support/shared_examples/moveable.rb +48 -0
  324. data/lib/solidus_admin/testing_support/shared_examples/promotion_categories_features.rb +5 -11
  325. data/lib/solidus_admin/version.rb +1 -1
  326. data/lib/tasks/tailwind.rake +1 -1
  327. data/solidus_admin.gemspec +24 -21
  328. metadata +173 -29
  329. data/.eslintrc.json +0 -7
  330. data/app/components/solidus_admin/products/show/component.js +0 -9
  331. data/app/components/solidus_admin/ui/forms/input/component.js +0 -15
  332. data/app/components/solidus_admin/users/edit/api_access/component.js +0 -9
  333. data/app/javascript/solidus_admin/controllers/confirm_controller.js +0 -21
  334. data/lib/solidus_admin/testing_support/shared_examples/bulk_delete_resources.rb +0 -20
  335. /data/app/{components/solidus_admin/ui/toast/component.js → javascript/solidus_admin/controllers/alert_animation_controller.js} +0 -0
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusAdmin
4
- class PaymentMethodsController < SolidusAdmin::BaseController
5
- include SolidusAdmin::ControllerHelpers::Search
4
+ class PaymentMethodsController < SolidusAdmin::ResourcesController
5
+ include SolidusAdmin::Moveable
6
6
 
7
- before_action :load_payment_method, only: [:move]
7
+ before_action :initialize_resource, only: [:new]
8
+ before_action :validate_type, only: [:create, :update]
8
9
 
9
10
  search_scope(:all)
10
11
  search_scope(:active, default: true, &:active)
@@ -12,41 +13,35 @@ module SolidusAdmin
12
13
  search_scope(:storefront, &:available_to_users)
13
14
  search_scope(:admin, &:available_to_admin)
14
15
 
15
- def index
16
- payment_methods = apply_search_to(
17
- Spree::PaymentMethod.ordered_by_position,
18
- param: :q,
19
- )
16
+ private
20
17
 
21
- set_page_and_extract_portion_from(payment_methods)
18
+ def resource_class = Spree::PaymentMethod
22
19
 
23
- respond_to do |format|
24
- format.html { render component('payment_methods/index').new(page: @page) }
25
- end
26
- end
20
+ def resources_collection = resource_class.all
27
21
 
28
- def move
29
- @payment_method.insert_at(params[:position].to_i)
22
+ def resources_sorting_options = {position: :asc}
30
23
 
31
- respond_to do |format|
32
- format.js { head :no_content }
33
- end
24
+ def permitted_resource_params
25
+ params.require(:payment_method).permit(:name, :description, :auto_capture, :type, :preference_source,
26
+ :preferred_server, :preferred_test_mode, :active, :available_to_admin, :available_to_users, store_ids: [])
34
27
  end
35
28
 
36
- def destroy
37
- @payment_methods = Spree::PaymentMethod.where(id: params[:id])
38
-
39
- Spree::PaymentMethod.transaction { @payment_methods.destroy_all }
29
+ def initialize_resource
30
+ @resource = resource_class.new(stores: [Spree::Store.default])
31
+ end
40
32
 
41
- flash[:notice] = t('.success')
42
- redirect_back_or_to payment_methods_path, status: :see_other
33
+ def available_types
34
+ Rails.application.config.spree.payment_methods.map(&:name)
43
35
  end
44
36
 
45
- private
37
+ def validate_type
38
+ unless available_types.include?(params[:payment_method][:type])
39
+ @resource ||= resource_class.new(permitted_resource_params.except(:type))
40
+ @resource.errors.add(:type, :invalid)
46
41
 
47
- def load_payment_method
48
- @payment_method = Spree::PaymentMethod.find_by!(id: params[:id])
49
- authorize! action_name, @payment_method
42
+ page_component = @resource.persisted? ? edit_component.new(@resource) : new_component.new(@resource)
43
+ render_resource_form_with_errors(page_component)
44
+ end
50
45
  end
51
46
  end
52
47
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SolidusAdmin::ProductOptionTypesController < SolidusAdmin::BaseController
4
+ include SolidusAdmin::Moveable
5
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class ProductTaxonsController < SolidusAdmin::BaseController
5
+ before_action :load_product, only: [:new, :create]
6
+
7
+ def new
8
+ render component("products/show/categories/new").new(product: @product)
9
+ end
10
+
11
+ def create
12
+ init_taxon
13
+ root_taxon! if @taxon.root?
14
+ @product.taxons << @taxon
15
+
16
+ respond_to do |format|
17
+ format.html { redirect_to @product, status: :see_other, notice: t(".success") }
18
+ end
19
+ rescue ActiveRecord::RecordInvalid
20
+ component = component("products/show/categories/new").new(product: @product, taxon: @taxon)
21
+ respond_to do |format|
22
+ format.html { render component, status: :unprocessable_entity }
23
+ format.turbo_stream do
24
+ render turbo_stream: turbo_stream.replace(:new_product_category, component),
25
+ status: :unprocessable_entity
26
+ end
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def load_product
33
+ @product = Spree::Product.friendly.find(params[:product_id])
34
+ end
35
+
36
+ def init_taxon
37
+ @taxon = Spree::Taxon.new(category_params)
38
+ @taxon.taxonomy_id = @taxon.parent&.taxonomy_id
39
+ end
40
+
41
+ # Parent-less taxons must be associated with a taxonomy of the same name; it's guaranteed that in order to create a
42
+ # new parent-less taxon we need to create a new taxonomy.
43
+ def root_taxon!
44
+ # if Taxonomy.create! fails on the next step, we need validation errors on taxon object
45
+ # to display them on the form
46
+ @taxon.validate
47
+ Spree::Taxonomy.create!(name: @taxon.name, root: @taxon)
48
+ end
49
+
50
+ def authorization_subject
51
+ Spree::Classification
52
+ end
53
+
54
+ def category_params
55
+ params.require(:taxon).permit(:name, :parent_id, :description)
56
+ end
57
+ end
58
+ end
@@ -8,24 +8,25 @@ module SolidusAdmin
8
8
  search_scope(:deleted) { _1.with_discarded.discarded }
9
9
  search_scope(:discontinued) { _1.where(discontinue_on: ...Time.current) }
10
10
  search_scope(:available) { _1.available }
11
- search_scope(:in_stock) { _1.where(id: Spree::Variant.in_stock.distinct.select(:product_id)) }
12
- search_scope(:out_of_stock) { _1.where.not(id: Spree::Variant.in_stock.distinct.select(:product_id)) }
13
-
14
- before_action :split_params, only: [:update]
11
+ search_scope(:in_stock) { _1.where(id: Spree::Variant.in_stock.select(:product_id)) }
12
+ search_scope(:out_of_stock) { _1.where.not(id: Spree::Variant.in_stock.select(:product_id)) }
15
13
 
16
14
  def index
17
15
  products = apply_search_to(
18
- Spree::Product.includes(:master, :variants),
16
+ Spree::Product.includes(
17
+ :variant_images,
18
+ master: :prices,
19
+ variants: :prices,
20
+ variants_including_master: {stock_items: :stock_location}
21
+ ),
19
22
  param: :q,
23
+ distinct: false
20
24
  )
21
25
 
22
- set_page_and_extract_portion_from(
23
- products,
24
- ordered_by: { updated_at: :desc, id: :desc },
25
- )
26
+ @page = paginate(products, ordered_by: {name: :asc})
26
27
 
27
28
  respond_to do |format|
28
- format.html { render component('products/index').new(page: @page) }
29
+ format.html { render component("products/index").new(page: @page) }
29
30
  end
30
31
  end
31
32
 
@@ -37,25 +38,21 @@ module SolidusAdmin
37
38
  @product = Spree::Product.with_discarded.friendly.find(params[:id])
38
39
 
39
40
  respond_to do |format|
40
- format.html { render component('products/show').new(product: @product) }
41
+ format.html { render component("products/show").new(product: @product) }
41
42
  end
42
43
  end
43
44
 
44
45
  def update
45
46
  @product = Spree::Product.friendly.find(params[:id])
46
47
 
47
- if @product.update(params.require(:product).permit!)
48
- flash[:success] = t('spree.successfully_updated', resource: [
49
- Spree::Product.model_name.human,
50
- @product.name.inspect,
51
- ].join(' '))
52
-
48
+ if @product.update(product_params)
49
+ flash[:success] = t(".success")
53
50
  redirect_to action: :show, status: :see_other
54
51
  else
55
52
  flash.now[:error] = @product.errors.full_messages.join(", ")
56
53
 
57
54
  respond_to do |format|
58
- format.html { render component('products/show').new(product: @product), status: :unprocessable_entity }
55
+ format.html { render component("products/show").new(product: @product), status: :unprocessable_entity }
59
56
  end
60
57
  end
61
58
  end
@@ -67,7 +64,7 @@ module SolidusAdmin
67
64
  @products.discard_all
68
65
  end
69
66
 
70
- flash[:notice] = t('.success')
67
+ flash[:notice] = t(".success")
71
68
  redirect_to products_path, status: :see_other
72
69
  end
73
70
 
@@ -79,7 +76,7 @@ module SolidusAdmin
79
76
  .update_all(discontinue_on: Time.current)
80
77
  end
81
78
 
82
- flash[:notice] = t('.success')
79
+ flash[:notice] = t(".success")
83
80
  redirect_to products_path, status: :see_other
84
81
  end
85
82
 
@@ -97,17 +94,16 @@ module SolidusAdmin
97
94
  .update_all(discontinue_on: nil)
98
95
  end
99
96
 
100
- flash[:notice] = t('.success')
97
+ flash[:notice] = t(".success")
101
98
  redirect_to products_path, status: :see_other
102
99
  end
103
100
 
104
- def split_params
105
- if params[:product][:taxon_ids].present?
106
- params[:product][:taxon_ids] = params[:product][:taxon_ids].split(',')
107
- end
108
- if params[:product][:option_type_ids].present?
109
- params[:product][:option_type_ids] = params[:product][:option_type_ids].split(',')
110
- end
101
+ private
102
+
103
+ def product_params
104
+ params.require(:product).permit(:name, :slug, :description, :meta_title, :meta_description, :meta_keywords, :gtin,
105
+ :condition, :price, :cost_price, :cost_currency, :sku, :shipping_category_id, :tax_category_id,
106
+ :available_on, :discontinue_on, :promotionable, option_type_ids: [], taxon_ids: [])
111
107
  end
112
108
  end
113
109
  end
@@ -7,13 +7,13 @@ module SolidusAdmin
7
7
  def index
8
8
  reimbursement_types = apply_search_to(
9
9
  Spree::ReimbursementType.unscoped.order(id: :desc),
10
- param: :q,
10
+ param: :q
11
11
  )
12
12
 
13
- set_page_and_extract_portion_from(reimbursement_types)
13
+ @page = paginate(reimbursement_types)
14
14
 
15
15
  respond_to do |format|
16
- format.html { render component('reimbursement_types/index').new(page: @page) }
16
+ format.html { render component("reimbursement_types/index").new(page: @page) }
17
17
  end
18
18
  end
19
19
 
@@ -2,9 +2,11 @@
2
2
 
3
3
  module SolidusAdmin
4
4
  class ResourcesController < SolidusAdmin::BaseController
5
+ DEFAULT_PER_PAGE = 20
6
+
5
7
  include SolidusAdmin::ControllerHelpers::Search
6
8
 
7
- helper_method :search_filter_params
9
+ helper_method :search_filter_params, :resource_form_frame
8
10
 
9
11
  before_action :set_paginated_resources, only: %i[index]
10
12
  before_action :set_resource, only: %i[edit update]
@@ -14,27 +16,35 @@ module SolidusAdmin
14
16
  # Uses {set_paginated_resources} to set @resources
15
17
  # and a instance variable with the plural name of the resource.
16
18
  #
17
- # Uses the geared_pagination gem to set @page for pagination.
19
+ # Uses {paginate} to set @page for pagination.
18
20
  #
19
21
  # @see set_paginated_resources
20
22
  # @see resources_collection
21
23
  def index
22
24
  respond_to do |format|
23
25
  format.html { render index_component.new(page: @page) }
26
+ format.json do
27
+ set_pagination_headers(@page)
28
+ render json: blueprint.render(@page.records, view: blueprint_view)
29
+ end
24
30
  end
25
31
  end
26
32
 
27
33
  def new
28
- @resource = resource_class.new
34
+ @resource ||= resource_class.new
29
35
  render new_component.new(@resource)
30
36
  end
31
37
 
32
38
  def create
33
- @resource = resource_class.new(permitted_resource_params)
39
+ @resource ||= resource_class.new(permitted_resource_params)
34
40
 
35
41
  if @resource.save
36
- flash[:notice] = t('.success')
37
- redirect_to after_create_path, status: :see_other
42
+ flash[:notice] = t(".success")
43
+
44
+ respond_to do |format|
45
+ format.html { redirect_to after_create_path, status: :see_other }
46
+ format.turbo_stream if prefer_turbo_stream?
47
+ end
38
48
  else
39
49
  page_component = new_component.new(@resource)
40
50
  render_resource_form_with_errors(page_component)
@@ -42,13 +52,19 @@ module SolidusAdmin
42
52
  end
43
53
 
44
54
  def edit
45
- render edit_component.new(@resource)
55
+ respond_to do |format|
56
+ format.html { render edit_component.new(@resource) }
57
+ end
46
58
  end
47
59
 
48
60
  def update
49
61
  if @resource.update(permitted_resource_params)
50
- flash[:notice] = t('.success')
51
- redirect_to after_update_path, status: :see_other
62
+ flash[:notice] = t(".success")
63
+
64
+ respond_to do |format|
65
+ format.html { redirect_to after_update_path, status: :see_other }
66
+ format.turbo_stream if prefer_turbo_stream?
67
+ end
52
68
  else
53
69
  page_component = edit_component.new(@resource)
54
70
  render_resource_form_with_errors(page_component)
@@ -60,8 +76,12 @@ module SolidusAdmin
60
76
 
61
77
  resource_class.transaction { @resource.destroy_all }
62
78
 
63
- flash[:notice] = t('.success')
64
- redirect_back_or_to after_destroy_path, status: :see_other
79
+ flash[:notice] = t(".success")
80
+
81
+ respond_to do |format|
82
+ format.html { redirect_back_or_to after_destroy_path, status: :see_other }
83
+ format.turbo_stream if prefer_turbo_stream?
84
+ end
65
85
  end
66
86
 
67
87
  private
@@ -73,16 +93,19 @@ module SolidusAdmin
73
93
  def set_paginated_resources
74
94
  @resources ||= apply_search_to(
75
95
  resources_collection,
76
- param: :q,
77
- ).tap do |resources|
78
- instance_variable_set("@#{plural_resource_name}", resources)
79
- # sets @page instance variable in geared_pagination gem
80
- set_page_and_extract_portion_from(resources, ordered_by: resources_sorting_options)
81
- end
96
+ param: :q
97
+ ).tap do |resources|
98
+ instance_variable_set("@#{plural_resource_name}", resources)
99
+ @page = paginate(resources, ordered_by: resources_sorting_options, per_page:)
100
+ end
82
101
  end
83
102
 
84
103
  def resources_sorting_options
85
- { id: :desc }
104
+ {id: :desc}
105
+ end
106
+
107
+ def per_page
108
+ DEFAULT_PER_PAGE
86
109
  end
87
110
 
88
111
  def resources_collection
@@ -91,7 +114,7 @@ module SolidusAdmin
91
114
 
92
115
  def set_resource
93
116
  @resource ||= resource_class.find(params[:id]).tap do |resource|
94
- instance_variable_set("@#{resource_name}", resource)
117
+ instance_variable_set("@#{resource_name}", resource)
95
118
  end
96
119
  end
97
120
 
@@ -126,7 +149,7 @@ module SolidusAdmin
126
149
  render page_component, status: :unprocessable_entity
127
150
  end
128
151
  format.turbo_stream do
129
- render turbo_stream: turbo_stream.replace(:resource_modal, page_component),
152
+ render turbo_stream: turbo_stream.replace(resource_form_frame, page_component),
130
153
  status: :unprocessable_entity
131
154
  end
132
155
  end
@@ -148,5 +171,21 @@ module SolidusAdmin
148
171
  def after_destroy_path
149
172
  solidus_admin.send("#{plural_resource_name}_path", **search_filter_params)
150
173
  end
174
+
175
+ def blueprint
176
+ raise NotImplementedError,
177
+ "You must implement the blueprint method in #{self.class}"
178
+ end
179
+
180
+ def blueprint_view
181
+ raise NotImplementedError,
182
+ "You must implement the blueprint_view method in #{self.class}"
183
+ end
184
+
185
+ def resource_form_frame
186
+ :resource_form
187
+ end
188
+
189
+ def prefer_turbo_stream? = false
151
190
  end
152
191
  end
@@ -7,13 +7,13 @@ module SolidusAdmin
7
7
  def index
8
8
  shipping_methods = apply_search_to(
9
9
  Spree::ShippingMethod.order(id: :desc),
10
- param: :q,
10
+ param: :q
11
11
  )
12
12
 
13
- set_page_and_extract_portion_from(shipping_methods)
13
+ @page = paginate(shipping_methods)
14
14
 
15
15
  respond_to do |format|
16
- format.html { render component('shipping_methods/index').new(page: @page) }
16
+ format.html { render component("shipping_methods/index").new(page: @page) }
17
17
  end
18
18
  end
19
19
 
@@ -22,7 +22,7 @@ module SolidusAdmin
22
22
 
23
23
  Spree::ShippingMethod.transaction { @shipping_methods.destroy_all }
24
24
 
25
- flash[:notice] = t('.success')
25
+ flash[:notice] = t(".success")
26
26
  redirect_back_or_to shipping_methods_path, status: :see_other
27
27
  end
28
28
 
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusAdmin
4
+ class StatesController < SolidusAdmin::ResourcesController
5
+ skip_before_action :authorize_solidus_admin_user!
6
+
7
+ private
8
+
9
+ def resource_class
10
+ Spree::State
11
+ end
12
+
13
+ def resources_sorting_options
14
+ {name: :asc}
15
+ end
16
+
17
+ def blueprint
18
+ SolidusAdmin::StateBlueprint
19
+ end
20
+
21
+ def blueprint_view
22
+ view = params[:view]&.to_sym
23
+ blueprint.view?(view) ? view : :default
24
+ end
25
+
26
+ def per_page
27
+ 100
28
+ end
29
+ end
30
+ end
@@ -6,13 +6,13 @@ module SolidusAdmin
6
6
 
7
7
  search_scope(:all, default: true) { _1 }
8
8
  search_scope(:back_orderable) { _1.where(backorderable: true) }
9
- search_scope(:out_of_stock) { _1.where('count_on_hand <= 0') }
10
- search_scope(:low_stock) { _1.where('count_on_hand > 0 AND count_on_hand < ?', SolidusAdmin::Config[:low_stock_value]) }
11
- search_scope(:in_stock) { _1.where('count_on_hand > 0') }
9
+ search_scope(:out_of_stock) { _1.where("count_on_hand <= 0") }
10
+ search_scope(:low_stock) { _1.where("count_on_hand > 0 AND count_on_hand < ?", SolidusAdmin::Config.low_stock_value) }
11
+ search_scope(:in_stock) { _1.where("count_on_hand > 0") }
12
12
 
13
13
  def index
14
14
  respond_to do |format|
15
- format.html { render component('stock_items/index').new(page: @page) }
15
+ format.html { render component("stock_items/index").new(page: @page) }
16
16
  end
17
17
  end
18
18
 
@@ -33,13 +33,18 @@ module SolidusAdmin
33
33
 
34
34
  def resource_class = Spree::StockItem
35
35
 
36
- def resources_collection = Spree::StockItem.reorder(nil)
36
+ def resources_collection
37
+ Spree::StockItem.reorder(nil).includes(
38
+ :stock_location,
39
+ variant: [:product, :images, {option_values: :option_type}]
40
+ )
41
+ end
37
42
 
38
43
  def resources_sorting_options
39
44
  {
40
45
  variant_id: :desc,
41
46
  stock_location_id: :desc,
42
- id: :desc,
47
+ id: :desc
43
48
  }
44
49
  end
45
50
 
@@ -1,35 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusAdmin
4
- class StockLocationsController < SolidusAdmin::BaseController
5
- include SolidusAdmin::ControllerHelpers::Search
4
+ class StockLocationsController < SolidusAdmin::ResourcesController
5
+ private
6
6
 
7
- def index
8
- stock_locations = apply_search_to(
9
- Spree::StockLocation.order(id: :desc),
10
- param: :q,
7
+ def resource_class = Spree::StockLocation
8
+
9
+ def permitted_resource_params
10
+ params.require(:stock_location).permit(
11
+ :name,
12
+ :admin_name,
13
+ :code,
14
+ :address1,
15
+ :address2,
16
+ :city, :zipcode,
17
+ :country_id,
18
+ :state_name,
19
+ :state_id,
20
+ :phone,
21
+ :email,
22
+ :active,
23
+ :default,
24
+ :backorderable_default,
25
+ :propagate_all_variants,
26
+ :restock_inventory,
27
+ :fulfillable,
28
+ :check_stock_on_transfer
11
29
  )
12
-
13
- set_page_and_extract_portion_from(stock_locations)
14
-
15
- respond_to do |format|
16
- format.html { render component('stock_locations/index').new(page: @page) }
17
- end
18
- end
19
-
20
- def destroy
21
- @stock_locations = Spree::StockLocation.where(id: params[:id])
22
-
23
- Spree::StockLocation.transaction { @stock_locations.destroy_all }
24
-
25
- flash[:notice] = t('.success')
26
- redirect_back_or_to stock_locations_path, status: :see_other
27
30
  end
28
31
 
29
- private
30
-
31
- def stock_location_params
32
- params.require(:stock_location).permit(:stock_location_id, permitted_stock_location_attributes)
33
- end
32
+ def resources_collection = Spree::StockLocation.unscoped
34
33
  end
35
34
  end
@@ -48,7 +48,7 @@ module SolidusAdmin
48
48
  return unless ensure_store_credit_category { render_new_with_errors }
49
49
 
50
50
  if @store_credit.save
51
- flash[:notice] = t('.success')
51
+ flash[:notice] = t(".success")
52
52
  redirect_to after_create_path, status: :see_other
53
53
  else
54
54
  render_new_with_errors
@@ -72,7 +72,7 @@ module SolidusAdmin
72
72
  return unless ensure_store_credit_reason { render_edit_with_errors }
73
73
 
74
74
  if @store_credit.update_amount(permitted_resource_params[:amount], @store_credit_reason, spree_current_user)
75
- flash[:notice] = t('.success')
75
+ flash[:notice] = t(".success")
76
76
  redirect_to after_update_path, status: :see_other
77
77
  else
78
78
  render_edit_with_errors
@@ -84,7 +84,7 @@ module SolidusAdmin
84
84
  format.html {
85
85
  render component("users/store_credits/edit_memo").new(
86
86
  user: @user,
87
- store_credit: @store_credit,
87
+ store_credit: @store_credit
88
88
  )
89
89
  }
90
90
  end
@@ -92,10 +92,10 @@ module SolidusAdmin
92
92
 
93
93
  def update_memo
94
94
  if @store_credit.update(memo: permitted_resource_params[:memo])
95
- flash[:notice] = t('.success')
95
+ flash[:notice] = t(".success")
96
96
  else
97
97
  # Memo update failures are nearly impossible to trigger due to lack of validation.
98
- flash[:error] = t('.failure')
98
+ flash[:error] = t(".failure")
99
99
  end
100
100
 
101
101
  redirect_to after_update_path, status: :see_other
@@ -117,11 +117,11 @@ module SolidusAdmin
117
117
  return unless ensure_store_credit_reason { render_edit_with_errors }
118
118
 
119
119
  if @store_credit.invalidate(@store_credit_reason, spree_current_user)
120
- flash[:notice] = t('.success')
120
+ flash[:notice] = t(".success")
121
121
  else
122
122
  # Ensure store_credit_reason handles invalid param/form submissions and modal re-rendering.
123
123
  # This is just a fallback error state in case anything goes wrong with StoreCredit#invalidate.
124
- flash[:error] = t('.failure')
124
+ flash[:error] = t(".failure")
125
125
  end
126
126
 
127
127
  redirect_to after_update_path, status: :see_other
@@ -202,7 +202,7 @@ module SolidusAdmin
202
202
  @store_credit_reason = Spree::StoreCreditReason.find_by(id: permitted_resource_params[:store_credit_reason_id])
203
203
 
204
204
  if @store_credit_reason.blank?
205
- @store_credit.errors.add(:store_credit_reason_id, "Store Credit reason must be provided")
205
+ @store_credit.errors.add(:store_credit_reason_id, "Store credit reason must be provided")
206
206
  yield if block_given? # Block is for error template rendering on a per-action basis so this can be re-used.
207
207
  return false
208
208
  end
@@ -213,7 +213,7 @@ module SolidusAdmin
213
213
  @store_credit_category = Spree::StoreCreditCategory.find_by(id: permitted_resource_params[:category_id])
214
214
 
215
215
  if @store_credit_category.blank?
216
- @store_credit.errors.add(:category_id, "Store Credit category must be provided")
216
+ @store_credit.errors.add(:category_id, "Store credit category must be provided")
217
217
  yield if block_given? # Block is for error template rendering on a per-action basis so this can be re-used.
218
218
  return false
219
219
  end