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
@@ -0,0 +1,4 @@
1
+ en:
2
+ title: "New Option Type"
3
+ cancel: "Cancel"
4
+ submit: "Add Option Type"
@@ -0,0 +1,16 @@
1
+ <%= turbo_frame_tag :option_value_modal, target: "_top" do %>
2
+ <%= render component("ui/modal").new(title: t(".title")) do |modal| %>
3
+ <%= form_for @option_value, url: form_url, 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, :presentation, class: "required") %>
7
+ </div>
8
+ <% modal.with_actions do %>
9
+ <form method="dialog">
10
+ <%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
11
+ </form>
12
+ <%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
13
+ <% end %>
14
+ <% end %>
15
+ <% end %>
16
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SolidusAdmin::OptionValues::Edit::Component < SolidusAdmin::Resources::Edit::Component
4
+ end
@@ -0,0 +1,4 @@
1
+ en:
2
+ title: "Edit Option Value"
3
+ cancel: "Cancel"
4
+ submit: "Update Option Value"
@@ -0,0 +1,16 @@
1
+ <%= turbo_frame_tag :option_value_modal, target: "_top" do %>
2
+ <%= render component("ui/modal").new(title: t(".title")) do |modal| %>
3
+ <%= form_for @option_value, url: form_url, 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, :presentation, class: "required") %>
7
+ </div>
8
+ <% modal.with_actions do %>
9
+ <form method="dialog">
10
+ <%= render component("ui/button").new(scheme: :secondary, text: t('.cancel')) %>
11
+ </form>
12
+ <%= render component("ui/button").new(form: form_id, type: :submit, text: t('.submit')) %>
13
+ <% end %>
14
+ <% end %>
15
+ <% end %>
16
+ <% end %>
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SolidusAdmin::OptionValues::New::Component < SolidusAdmin::Resources::New::Component
4
+ def form_url
5
+ solidus_admin.option_type_option_values_path(@option_value.option_type)
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ en:
2
+ title: "New Option Value"
3
+ cancel: "Cancel"
4
+ submit: "Add Option Value"
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SolidusAdmin::OptionValues::Table::Component < SolidusAdmin::BaseComponent
4
+ def initialize(option_type)
5
+ @option_type = option_type
6
+ end
7
+
8
+ def call
9
+ render component("ui/table").new(
10
+ id: stimulus_id,
11
+ data: {
12
+ class: Spree::OptionValue,
13
+ rows: @option_type.option_values,
14
+ columns: option_value_columns,
15
+ batch_actions: [
16
+ {
17
+ label: t(".batch_actions.delete"),
18
+ action: solidus_admin.option_type_option_values_path(@option_type),
19
+ method: :delete,
20
+ icon: "delete-bin-7-line",
21
+ require_confirmation: true
22
+ }
23
+ ]
24
+ },
25
+ sortable: {
26
+ url: ->(option_value) { solidus_admin.move_option_value_path(option_value) },
27
+ param: "position"
28
+ },
29
+ embedded: true
30
+ )
31
+ end
32
+
33
+ def option_value_columns
34
+ [
35
+ {
36
+ header: :name,
37
+ data: ->(option_value) do
38
+ link_to option_value.name, solidus_admin.edit_option_value_path(option_value),
39
+ class: "body-link",
40
+ data: {turbo_frame: :option_value_modal}
41
+ end
42
+ },
43
+ {
44
+ header: :presentation,
45
+ data: ->(option_value) do
46
+ link_to option_value.presentation, solidus_admin.edit_option_value_path(option_value),
47
+ class: "body-link",
48
+ data: {turbo_frame: :option_value_modal}
49
+ end
50
+ }
51
+ ]
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ en:
2
+ batch_actions:
3
+ delete: "Delete"
@@ -37,19 +37,18 @@
37
37
  ) %>
38
38
  </td>
39
39
  <td class="px-6 py-4">
40
- <%= form_for(line_item, url: solidus_admin.order_line_item_path(@order, line_item), html: {
40
+ <%= solidus_form_for(line_item, url: solidus_admin.order_line_item_path(@order, line_item), html: {
41
41
  "data-controller": "readonly-when-submitting"
42
42
  }) do |f| %>
43
- <%= render component("ui/forms/input").new(
44
- name: "#{f.object_name}[quantity]",
43
+ <%= f.input(
44
+ :quantity,
45
45
  type: :number,
46
- value: line_item.quantity,
47
46
  "aria-label": "Quantity",
48
47
  min: 0,
49
48
  class: "!w-16 inline-block",
50
49
  "data-action": "input->#{stimulus_id}#updateLineItem",
51
50
  ) %>
52
- <% render component("ui/button").new(type: :submit, text: "Update", class: "inline-block") %>
51
+ <% f.submit(class: "inline-block") %>
53
52
  <% end %>
54
53
  </td>
55
54
  <td class="px-6 py-4">
@@ -62,8 +61,7 @@
62
61
  size: :s,
63
62
  title: t("spree.delete"),
64
63
  icon: 'close-line',
65
- "data-controller": "confirm",
66
- "data-confirm-text-value": t("spree.are_you_sure"),
64
+ "data-turbo-confirm": t("spree.are_you_sure")
67
65
  ) %>
68
66
  <% end %>
69
67
  </td>
@@ -1,9 +1,9 @@
1
1
  <%= render component('ui/forms/search/result').new do %>
2
- <%= form_for(@order.line_items.build(variant: @variant), url: solidus_admin.order_line_items_path(@order), method: :post, html: {
2
+ <%= solidus_form_for(@order.line_items.build(variant: @variant), url: solidus_admin.order_line_items_path(@order), method: :post, html: {
3
3
  "data-controller": "readonly-when-submitting",
4
4
  class: "flex items-center",
5
5
  }) do |f| %>
6
- <%= hidden_field_tag("#{f.object_name}[variant_id]", @variant.id) %>
6
+ <%= f.hidden_field(:variant_id) %>
7
7
  <div class="flex gap-2 grow">
8
8
  <%= render component("ui/thumbnail").new(
9
9
  src: @image&.url(:small),
@@ -24,27 +24,27 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
24
24
  def page_actions
25
25
  render component("ui/button").new(
26
26
  tag: :a,
27
- text: t('.add'),
27
+ text: t(".add"),
28
28
  href: spree.new_admin_order_path,
29
- icon: "add-line",
29
+ icon: "add-line"
30
30
  )
31
31
  end
32
32
 
33
33
  def scopes
34
34
  [
35
- { label: t('.scopes.complete'), name: 'completed', default: true },
36
- { label: t('.scopes.in_progress'), name: 'in_progress' },
37
- { label: t('.scopes.returned'), name: 'returned' },
38
- { label: t('.scopes.canceled'), name: 'canceled' },
39
- { label: t('.scopes.all_orders'), name: 'all' },
35
+ {label: t(".scopes.complete"), name: "completed", default: true},
36
+ {label: t(".scopes.in_progress"), name: "in_progress"},
37
+ {label: t(".scopes.returned"), name: "returned"},
38
+ {label: t(".scopes.canceled"), name: "canceled"},
39
+ {label: t(".scopes.all_orders"), name: "all"}
40
40
  ]
41
41
  end
42
42
 
43
43
  def filters
44
44
  [
45
45
  {
46
- label: t('.filters.status'),
47
- combinator: 'or',
46
+ label: t(".filters.status"),
47
+ combinator: "or",
48
48
  attribute: "state",
49
49
  predicate: "eq",
50
50
  options: Spree::Order.state_machines[:state].states.map do |state|
@@ -55,8 +55,8 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
55
55
  end
56
56
  },
57
57
  {
58
- label: t('.filters.shipment_state'),
59
- combinator: 'or',
58
+ label: t(".filters.shipment_state"),
59
+ combinator: "or",
60
60
  attribute: "shipment_state",
61
61
  predicate: "eq",
62
62
  options: %i[backorder canceled partial pending ready shipped].map do |option|
@@ -67,8 +67,8 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
67
67
  end
68
68
  },
69
69
  {
70
- label: t('.filters.payment_state'),
71
- combinator: 'or',
70
+ label: t(".filters.payment_state"),
71
+ combinator: "or",
72
72
  attribute: "payment_state",
73
73
  predicate: "eq",
74
74
  options: %i[balance_due checkout completed credit_owed invalid paid pending processing void].map do |option|
@@ -79,8 +79,8 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
79
79
  end
80
80
  },
81
81
  {
82
- label: t('.filters.store'),
83
- combinator: 'or',
82
+ label: t(".filters.store"),
83
+ combinator: "or",
84
84
  attribute: "store_id",
85
85
  predicate: "eq",
86
86
  options: Spree::Store.all.pluck(:name, :id)
@@ -97,7 +97,7 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
97
97
  total_column,
98
98
  items_column,
99
99
  payment_column,
100
- shipment_column,
100
+ shipment_column
101
101
  ]
102
102
  end
103
103
 
@@ -106,7 +106,7 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
106
106
  header: :order,
107
107
  data: ->(order) do
108
108
  if !row_fade(order)
109
- content_tag :div, order.number, class: 'font-semibold'
109
+ content_tag :div, order.number, class: "font-semibold"
110
110
  else
111
111
  content_tag :div, order.number
112
112
  end
@@ -119,12 +119,12 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
119
119
  header: :state,
120
120
  data: ->(order) do
121
121
  color = {
122
- 'complete' => :green,
123
- 'returned' => :red,
124
- 'canceled' => :blue,
125
- 'cart' => :graphite_light,
122
+ "complete" => :green,
123
+ "returned" => :red,
124
+ "canceled" => :blue,
125
+ "cart" => :graphite_light
126
126
  }[order.state] || :yellow
127
- component('ui/badge').new(name: order.state.humanize, color:)
127
+ component("ui/badge").new(name: order.state.humanize, color:)
128
128
  end
129
129
  }
130
130
  end
@@ -140,7 +140,7 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
140
140
 
141
141
  def customer_column
142
142
  {
143
- col: { class: "w-[400px]" },
143
+ col: {class: "w-[400px]"},
144
144
  header: :customer,
145
145
  data: ->(order) do
146
146
  customer_email = order.email
@@ -162,7 +162,7 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
162
162
  {
163
163
  header: :items,
164
164
  data: ->(order) do
165
- content_tag :div, t('.columns.items', count: order.line_items.sum(:quantity))
165
+ content_tag :div, t(".columns.items", count: order.line_items.sum(&:quantity))
166
166
  end
167
167
  }
168
168
  end
@@ -171,7 +171,7 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
171
171
  {
172
172
  header: :payment,
173
173
  data: ->(order) do
174
- component('ui/badge').new(name: order.payment_state.humanize, color: order.paid? ? :green : :yellow) if order.payment_state?
174
+ component("ui/badge").new(name: order.payment_state.humanize, color: order.paid? ? :green : :yellow) if order.payment_state?
175
175
  end
176
176
  }
177
177
  end
@@ -180,7 +180,7 @@ class SolidusAdmin::Orders::Index::Component < SolidusAdmin::UI::Pages::Index::C
180
180
  {
181
181
  header: :shipment,
182
182
  data: ->(order) do
183
- component('ui/badge').new(name: order.shipment_state.humanize, color: order.shipped? ? :green : :yellow) if order.shipment_state?
183
+ component("ui/badge").new(name: order.shipment_state.humanize, color: order.shipped? ? :green : :yellow) if order.shipment_state?
184
184
  end
185
185
  }
186
186
  end
@@ -1,7 +1,7 @@
1
1
  <div class="<%= stimulus_id %>" data-controller="<%= stimulus_id %>">
2
2
  <%= turbo_frame_tag "edit_order_#{params[:type]}_address_modal" do %>
3
3
  <%= render component("ui/modal").new(title: t(".title.#{@type}")) do |modal| %>
4
- <%= form_for @order, url: solidus_admin.send("order_#{@type}_address_path", @order), html: { id: form_id } do |form| %>
4
+ <%= solidus_form_for @order, url: solidus_admin.send("order_#{@type}_address_path", @order), html: { id: form_id } do |form| %>
5
5
  <div class="w-full flex flex-col mb-4">
6
6
  <div class="flex justify-between items-center mb-4 relative">
7
7
  <h2 class="text-sm font-semibold">
@@ -28,23 +28,15 @@
28
28
 
29
29
  <div class="w-full flex gap-4">
30
30
  <%= turbo_frame_tag address_frame_id do %>
31
- <%= render component('ui/forms/address').new(address: @address, name: "order[#{@type}_address_attributes]") %>
31
+ <%= render component('ui/forms/address').new(addressable: @address, form_field_name: "order[#{@type}_address_attributes]") %>
32
32
  <% end %>
33
33
  </div>
34
34
 
35
- <label class="flex gap-2 items-center">
36
- <%= form.hidden_field use_attribute, value: '0', id: false %>
37
-
38
- <%= render component("ui/forms/checkbox").new(
39
- name: "#{form.object_name}[#{use_attribute}]",
40
- checked: @address == (@type == 'ship' ? @order.bill_address : @order.ship_address),
41
- value: '1'
42
- ) %>
43
-
44
- <span class="font-normal text-xs">
45
- <%= t(".use_this_address.#{@type}") %>
46
- </span>
47
- </label>
35
+ <%= form.checkbox(use_attribute,
36
+ checked: @address == (@type == 'ship' ? @order.bill_address : @order.ship_address),
37
+ label: t(".use_this_address.#{@type}"),
38
+ label_options: { size: :xs })
39
+ %>
48
40
  </div>
49
41
  <% end %>
50
42
 
@@ -56,11 +48,7 @@
56
48
  ) %>
57
49
  </form>
58
50
 
59
- <%= render component("ui/button").new(
60
- tag: :button,
61
- text: t(".save"),
62
- form: form_id
63
- ) %>
51
+ <%= render component("ui/button").save(form: form_id) %>
64
52
  <% end %>
65
53
  <% end %>
66
54
  <% end %>
@@ -3,9 +3,9 @@
3
3
  class SolidusAdmin::Orders::Show::Address::Component < SolidusAdmin::BaseComponent
4
4
  include SolidusAdmin::Layout::PageHelpers
5
5
 
6
- VALID_TYPES = ['ship', 'bill'].freeze
6
+ VALID_TYPES = ["ship", "bill"].freeze
7
7
 
8
- def initialize(order:, address:, user: nil, type: 'ship')
8
+ def initialize(order:, address:, user: nil, type: "ship")
9
9
  @order = order
10
10
  @user = user
11
11
  @address = address
@@ -23,10 +23,10 @@ class SolidusAdmin::Orders::Show::Address::Component < SolidusAdmin::BaseCompone
23
23
 
24
24
  def use_attribute
25
25
  case @type
26
- when 'ship'
27
- 'use_shipping'
28
- when 'bill'
29
- 'use_billing'
26
+ when "ship"
27
+ "use_shipping"
28
+ when "bill"
29
+ "use_billing"
30
30
  end
31
31
  end
32
32
 
@@ -43,7 +43,7 @@ class SolidusAdmin::Orders::Show::Address::Component < SolidusAdmin::BaseCompone
43
43
  tag.br,
44
44
  address.country.name,
45
45
  tag.br,
46
- address.phone,
46
+ address.phone
47
47
  ], " ")
48
48
  end
49
49
 
@@ -1,5 +1,4 @@
1
1
  en:
2
- save: Save
3
2
  cancel: Cancel
4
3
  back: Back
5
4
  select_address: Select address
@@ -2,7 +2,7 @@
2
2
 
3
3
  class SolidusAdmin::Orders::Show::Adjustments::Index::Adjustable::SpreeShipment::Component < SolidusAdmin::Orders::Show::Adjustments::Index::Adjustable::Component
4
4
  def caption
5
- "#{t('spree.shipment')} ##{adjustable.number}"
5
+ "#{t("spree.shipment")} ##{adjustable.number}"
6
6
  end
7
7
 
8
8
  def detail
@@ -18,7 +18,10 @@ class SolidusAdmin::Orders::Show::Adjustments::Index::Component < SolidusAdmin::
18
18
  def initialize(order:, adjustments:)
19
19
  @order = order
20
20
  @adjustments = adjustments
21
- @page = GearedPagination::Recordset.new(adjustments, per_page: adjustments.size).page(1)
21
+ end
22
+
23
+ def rows
24
+ @adjustments
22
25
  end
23
26
 
24
27
  def batch_actions
@@ -37,10 +40,10 @@ class SolidusAdmin::Orders::Show::Adjustments::Index::Component < SolidusAdmin::
37
40
  },
38
41
  {
39
42
  label: t(".actions.delete"),
40
- action: spree.admin_order_adjustment_path(@order, '[]'),
43
+ action: spree.admin_order_adjustment_path(@order, "[]"),
41
44
  method: :delete,
42
45
  icon: "delete-bin-7-line"
43
- },
46
+ }
44
47
  ]
45
48
  end
46
49
 
@@ -57,13 +60,13 @@ class SolidusAdmin::Orders::Show::Adjustments::Index::Component < SolidusAdmin::
57
60
  {
58
61
  header: :state,
59
62
  wrap: true,
60
- col: { class: 'w-[calc(5rem+2rem+2.5rem+1px)]' },
63
+ col: {class: "w-[calc(5rem+2rem+2.5rem+1px)]"},
61
64
  data: ->(adjustment) {
62
65
  if adjustment.finalized?
63
- icon = 'lock-fill'
66
+ icon = "lock-fill"
64
67
  title = t(".state.locked")
65
68
  else
66
- icon = 'lock-unlock-line'
69
+ icon = "lock-unlock-line"
67
70
  title = t(".state.unlocked")
68
71
  end
69
72
  icon_tag(icon, class: "w-5 h-5 align-middle") + tag.span(title)
@@ -71,26 +74,26 @@ class SolidusAdmin::Orders::Show::Adjustments::Index::Component < SolidusAdmin::
71
74
  },
72
75
  {
73
76
  header: :adjustable,
74
- col: { class: 'w-56' },
77
+ col: {class: "w-56"},
75
78
  data: ->(adjustment) {
76
79
  render_thumbnail_with_caption(adjustment, :adjustable)
77
80
  }
78
81
  },
79
82
  {
80
83
  header: :source,
81
- col: { class: "w-56" },
84
+ col: {class: "w-56"},
82
85
  data: ->(adjustment) {
83
86
  render_thumbnail_with_caption(adjustment, :source)
84
87
  }
85
88
  },
86
89
  {
87
90
  header: :amount,
88
- col: { class: 'w-24' },
91
+ col: {class: "w-24"},
89
92
  data: ->(adjustment) { tag.span adjustment.display_amount.to_html, class: "grow text-right whitespace-nowrap" }
90
93
  },
91
94
  {
92
- header: tag.span(t(".actions.title"), class: 'sr-only'),
93
- col: { class: 'w-24' },
95
+ header: tag.span(t(".actions.title"), class: "sr-only"),
96
+ col: {class: "w-24"},
94
97
  wrap: false,
95
98
  data: ->(adjustment) do
96
99
  actions = []
@@ -99,7 +102,7 @@ class SolidusAdmin::Orders::Show::Adjustments::Index::Component < SolidusAdmin::
99
102
  actions << link_to(
100
103
  t(".actions.edit"),
101
104
  spree.edit_admin_order_adjustment_path(@order, adjustment),
102
- class: 'body-link',
105
+ class: "body-link"
103
106
  )
104
107
  end
105
108
 
@@ -108,32 +111,32 @@ class SolidusAdmin::Orders::Show::Adjustments::Index::Component < SolidusAdmin::
108
111
  t(".actions.unlock"),
109
112
  solidus_admin.unlock_order_adjustments_path(@order, id: adjustment),
110
113
  "data-turbo-method": :put,
111
- "data-turbo-confirm": t('.confirm'),
112
- class: 'body-link',
114
+ "data-turbo-confirm": t(".confirm"),
115
+ class: "body-link"
113
116
  )
114
117
  else
115
118
  actions << link_to(
116
119
  t(".actions.lock"),
117
120
  solidus_admin.lock_order_adjustments_path(@order, id: adjustment),
118
121
  "data-turbo-method": :put,
119
- "data-turbo-confirm": t('.confirm'),
120
- class: 'body-link',
122
+ "data-turbo-confirm": t(".confirm"),
123
+ class: "body-link"
121
124
  )
122
125
  actions << link_to(
123
126
  t(".actions.delete"),
124
127
  spree.admin_order_adjustment_path(@order, adjustment),
125
128
  "data-turbo-method": :delete,
126
- "data-turbo-confirm": t('.confirm'),
127
- class: 'body-link !text-red-500',
129
+ "data-turbo-confirm": t(".confirm"),
130
+ class: "body-link !text-red-500"
128
131
  )
129
132
  end
130
133
 
131
- render component('ui/dropdown').new(
134
+ render component("ui/dropdown").new(
132
135
  direction: :right,
133
- class: 'relative w-fit m-auto',
136
+ class: "relative w-fit m-auto"
134
137
  ).with_content(safe_join(actions))
135
138
  end
136
- },
139
+ }
137
140
  ]
138
141
  end
139
142
 
@@ -3,8 +3,8 @@
3
3
  <%= page_header_back(solidus_admin.orders_path) %>
4
4
  <%= page_header_title(t('.title', number: @order.number)) %>
5
5
  <%= page_header_actions do %>
6
- <%= render component("ui/button").new(tag: :button, scheme: :secondary, text: t(".discard"), form: form_id) %>
7
- <%= render component("ui/button").new(tag: :button, text: t(".save"), form: form_id) %>
6
+ <%= render component("ui/button").discard(path: solidus_admin.orders_path) %>
7
+ <%= render component("ui/button").save(form: form_id) %>
8
8
  <% end %>
9
9
  <% end %>
10
10
 
@@ -25,7 +25,7 @@ class SolidusAdmin::Orders::Show::Component < SolidusAdmin::BaseComponent
25
25
  tag.br,
26
26
  address.country.name,
27
27
  tag.br,
28
- address.phone,
28
+ address.phone
29
29
  ], " ")
30
30
  end
31
31
 
@@ -1,11 +1,8 @@
1
1
  en:
2
- save: Save
3
- discard: Discard
4
2
  title: "Order %{number}"
5
3
  customer: Customer
6
4
  no_name: No name available
7
5
  order_email: Order contact email
8
- back: Back to orders
9
6
  same_as_shipping: Same as shipping address
10
7
 
11
8
  edit_email: "Edit order email"
@@ -1,10 +1,10 @@
1
1
  <%= render component('ui/forms/search/result').new do %>
2
2
  <% if @customer %>
3
- <%= form_for(@order, url: solidus_admin.order_path(@order), html: {
3
+ <%= solidus_form_for(@order, url: solidus_admin.order_path(@order), html: {
4
4
  "data-controller": "readonly-when-submitting",
5
5
  class: "flex items-center",
6
6
  }) do |f| %>
7
- <%= hidden_field_tag("#{f.object_name}[user_id]", @customer.id) %>
7
+ <%= f.hidden_field(:user_id, value: @customer.id) %>
8
8
  <button type="submit" class="flex gap-2 grow items-center">
9
9
  <%= render component("ui/icon").new(name: "user-line", class: 'w-5 h-5 m-2') %>
10
10
  <div class="flex-col text-left">
@@ -1,8 +1,8 @@
1
1
  <div class="<%= stimulus_id %>">
2
2
  <%= turbo_frame_tag "edit_order_email_modal" do %>
3
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) %>
4
+ <%= solidus_form_for @order, url: solidus_admin.order_path(@order), html: { id: form_id } do |f| %>
5
+ <%= f.text_field(:email) %>
6
6
  <label class="font-normal text-sm mt-4 block">
7
7
  <%= t('.guest_checkout') %>:
8
8
  <output class="font-semibold text-sm"><%= @order.user ? t('.no') : t('.yes') %></output>
@@ -0,0 +1,13 @@
1
+ <%= page id: :resource_form do %>
2
+ <%= page_header do %>
3
+ <%= page_header_back back_url %>
4
+ <%= page_header_title t(".title", payment_method_name: @resource.name) %>
5
+
6
+ <%= page_header_actions do %>
7
+ <%= render component("ui/button").discard(path: back_url) %>
8
+ <%= render component("ui/button").save(form: form_id) %>
9
+ <% end %>
10
+ <% end %>
11
+
12
+ <%= render component("payment_methods/form").new(payment_method: @resource, url: solidus_admin.payment_method_path(@resource), form_id:) %>
13
+ <% end %>
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SolidusAdmin::PaymentMethods::Edit::Component < SolidusAdmin::Resources::Edit::Component
4
+ include SolidusAdmin::Layout::PageHelpers
5
+
6
+ def back_url = solidus_admin.payment_methods_path
7
+ end
@@ -0,0 +1,2 @@
1
+ en:
2
+ title: "Edit %{payment_method_name}"