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
@@ -9,9 +9,7 @@
9
9
  <% end %>
10
10
 
11
11
  <%= page_header do %>
12
- <% tabs.each do |tab| %>
13
- <%= render(component("ui/button").new(tag: :a, scheme: :ghost, text: tab[:text], 'aria-current': tab[:current], href: tab[:href])) %>
14
- <% end %>
12
+ <%= render component("users/edit/tabs").new(user: @user, current: :addresses) %>
15
13
  <% end %>
16
14
 
17
15
  <%= page_with_sidebar do %>
@@ -19,7 +17,7 @@
19
17
  <%= render component('ui/panel').new(title: t(".billing_address")) do %>
20
18
  <%= form_for @user, url: solidus_admin.update_addresses_user_path(@user), method: :put, html: { id: "#{form_id}_billing", autocomplete: "off", class: "bill_address" } do |f| %>
21
19
 
22
- <%= render component('ui/forms/address').new(address: @bill_address, name: "user[bill_address_attributes]") %>
20
+ <%= render component('ui/forms/address').new(addressable: @bill_address, form_field_name: "user[bill_address_attributes]") %>
23
21
  <div class="py-1.5 text-center">
24
22
  <%= render component("ui/button").new(tag: :button, text: t(".update"), form: "#{form_id}_billing") %>
25
23
  <%= render component("ui/button").new(tag: :a, text: t(".cancel"), href: solidus_admin.addresses_user_path(@user), scheme: :secondary) %>
@@ -30,7 +28,7 @@
30
28
  <%= render component('ui/panel').new(title: t(".shipping_address")) do %>
31
29
  <%= form_for @user, url: solidus_admin.update_addresses_user_path(@user), method: :put, html: { id: "#{form_id}_shipping", autocomplete: "off", class: "ship_address" } do |f| %>
32
30
 
33
- <%= render component('ui/forms/address').new(address: @ship_address, name: "user[ship_address_attributes]") %>
31
+ <%= render component('ui/forms/address').new(addressable: @ship_address, form_field_name: "user[ship_address_attributes]") %>
34
32
  <div class="py-1.5 text-center">
35
33
  <%= render component("ui/button").new(tag: :button, text: t(".update"), form: "#{form_id}_shipping") %>
36
34
  <%= render component("ui/button").new(tag: :a, text: t(".cancel"), href: solidus_admin.addresses_user_path(@user), scheme: :secondary) %>
@@ -13,36 +13,6 @@ class SolidusAdmin::Users::Addresses::Component < SolidusAdmin::BaseComponent
13
13
  @form_id ||= "#{stimulus_id}--form-#{@user.id}"
14
14
  end
15
15
 
16
- def tabs
17
- [
18
- {
19
- text: t('.account'),
20
- href: solidus_admin.user_path(@user),
21
- current: false,
22
- },
23
- {
24
- text: t('.addresses'),
25
- href: solidus_admin.addresses_user_path(@user),
26
- current: true,
27
- },
28
- {
29
- text: t('.order_history'),
30
- href: solidus_admin.orders_user_path(@user),
31
- current: false,
32
- },
33
- {
34
- text: t('.items'),
35
- href: spree.items_admin_user_path(@user),
36
- current: false,
37
- },
38
- {
39
- text: t('.store_credit'),
40
- href: spree.admin_user_store_credits_path(@user),
41
- current: false,
42
- },
43
- ]
44
- end
45
-
46
16
  def bill_address(address, type)
47
17
  if address.present? && type == "bill"
48
18
  address
@@ -1,14 +1,7 @@
1
1
  en:
2
2
  title: "Users / %{email} / Addresses"
3
- account: Account
4
- addresses: Addresses
5
- order_history: Order History
6
- items: Items
7
- store_credit: Store Credit
8
- last_active: Last Active
9
3
  create_order_for_user: Create order for this user
10
4
  update: Update
11
5
  cancel: Cancel
12
- back: Back
13
6
  billing_address: Billing Address
14
7
  shipping_address: Shipping Address
@@ -16,8 +16,9 @@
16
16
  text: t('.clear_key'),
17
17
  scheme: :secondary,
18
18
  type: :submit,
19
- "data-action": "click->#{stimulus_id}#confirm",
20
- "data-#{stimulus_id}-message-param": t(".confirm_clear_key"),
19
+ "data-turbo-confirm": t(".confirm.title"),
20
+ "data-confirm-details": t(".confirm.clear.details"),
21
+ "data-confirm-button": t(".confirm.clear.button"),
21
22
  ) %>
22
23
  <% end %>
23
24
 
@@ -26,8 +27,9 @@
26
27
  text: t('.regenerate_key'),
27
28
  scheme: :secondary,
28
29
  type: :submit,
29
- "data-action": "click->#{stimulus_id}#confirm",
30
- "data-#{stimulus_id}-message-param": t(".confirm_regenerate_key"),
30
+ "data-turbo-confirm": t(".confirm.title"),
31
+ "data-confirm-details": t(".confirm.regenerate.details"),
32
+ "data-confirm-button": t(".confirm.regenerate.button")
31
33
  ) %>
32
34
  <% end %>
33
35
  </div>
@@ -6,5 +6,11 @@ en:
6
6
  clear_key: Clear key
7
7
  regenerate_key: Regenerate key
8
8
  hidden: Hidden
9
- confirm_clear_key: Are you sure you want to clear this user's API key? It will invalidate the existing key.
10
- confirm_regenerate_key: Are you sure you want to regenerate this user's API key? It will invalidate the existing key.
9
+ confirm:
10
+ title: Are you sure?
11
+ clear:
12
+ details: Are you sure you want to clear this user's API key? It will invalidate the existing key.
13
+ button: Clear
14
+ regenerate:
15
+ details: Are you sure you want to regenerate this user's API key? It will invalidate the existing key.
16
+ button: Regenerate
@@ -3,39 +3,42 @@
3
3
  <%= page_header_back(solidus_admin.users_path) %>
4
4
  <%= page_header_title(t(".title", email: @user.email)) %>
5
5
 
6
- <% # @todo: I am not sure how we want to handle Cancan stuff in the new admin. %>
7
- <% # if can?(:admin, Spree::Order) && can?(:create, Spree::Order) %>
6
+ <%# @todo: I am not sure how we want to handle Cancan stuff in the new admin. %>
7
+ <%# if can?(:admin, Spree::Order) && can?(:create, Spree::Order) %>
8
8
  <%= page_header_actions do %>
9
9
  <%= render component("ui/button").new(tag: :a, text: t(".create_order_for_user"), href: spree.new_admin_order_path(user_id: @user.id)) %>
10
10
  <% end %>
11
- <% # end %>
11
+ <%# end %>
12
12
  <% end %>
13
13
 
14
14
  <%= page_header do %>
15
- <% tabs.each do |tab| %>
16
- <%= render(component("ui/button").new(tag: :a, scheme: :ghost, text: tab[:text], 'aria-current': tab[:current], href: tab[:href])) %>
17
- <% end %>
15
+ <%= render component("users/edit/tabs").new(user: @user, current: :account) %>
18
16
  <% end %>
19
17
 
20
18
  <%= page_with_sidebar do %>
21
19
  <%= page_with_sidebar_main do %>
22
20
 
23
21
  <%= render component('ui/panel').new(title: Spree.user_class.model_name.human) do %>
24
- <%= form_for @user, url: solidus_admin.user_path(@user), html: { id: form_id, autocomplete: "off" } do |f| %>
22
+ <%= solidus_form_for @user, url: solidus_admin.user_path(@user), html: { id: form_id, autocomplete: "off" } do |f| %>
25
23
  <div class="py-1.5">
26
- <%= render component("ui/forms/field").text_field(f, :email) %>
24
+ <%= f.text_field(:email) %>
27
25
  </div>
28
26
  <div class="py-1.5">
29
- <%= render component("ui/forms/field").text_field(f, :password) %>
27
+ <%= f.text_field(:password) %>
30
28
  </div>
31
29
  <div class="py-1.5">
32
- <%= render component("ui/forms/field").text_field(f, :password_confirmation) %>
30
+ <%= f.text_field(:password_confirmation) %>
33
31
  </div>
32
+ <% if @user.respond_to?(:timezone) %>
33
+ <div class="py-1.5">
34
+ <%= f.select(:timezone, ActiveSupport::TimeZone.all.map { [_1.to_s, _1.name] }, include_blank: t("spree.none")) %>
35
+ </div>
36
+ <% end %>
34
37
  <div class="py-1.5">
35
- <%= render component("ui/checkbox_row").new(options: role_options, row_title: "Roles", form: f, method: "spree_role_ids", layout: :subsection) %>
38
+ <%= f.checkbox_row(:spree_role_ids, options: role_options, row_title: "Roles", layout: :subsection) %>
36
39
  </div>
37
40
  <div class="py-1.5 text-center">
38
- <%= render component("ui/button").new(tag: :button, text: t(".update"), form: form_id) %>
41
+ <%= f.submit(text: t(".update")) %>
39
42
  <%= render component("ui/button").new(tag: :a, text: t(".cancel"), href: solidus_admin.user_path(@user), scheme: :secondary) %>
40
43
  </div>
41
44
  <% end %>
@@ -11,41 +11,9 @@ class SolidusAdmin::Users::Edit::Component < SolidusAdmin::BaseComponent
11
11
  @form_id ||= "#{stimulus_id}--form-#{@user.id}"
12
12
  end
13
13
 
14
- def tabs
15
- [
16
- {
17
- text: t('.account'),
18
- href: solidus_admin.user_path(@user),
19
- current: action_name == "edit",
20
- },
21
- {
22
- text: t('.addresses'),
23
- href: solidus_admin.addresses_user_path(@user),
24
- current: action_name == "addresses",
25
- },
26
- {
27
- text: t('.order_history'),
28
- href: solidus_admin.orders_user_path(@user),
29
- current: action_name == "orders",
30
- },
31
- {
32
- text: t('.items'),
33
- href: spree.items_admin_user_path(@user),
34
- # @todo: update this "current" logic once folded into new admin
35
- current: action_name != "edit",
36
- },
37
- {
38
- text: t('.store_credit'),
39
- href: spree.admin_user_store_credits_path(@user),
40
- # @todo: update this "current" logic once folded into new admin
41
- current: action_name != "edit",
42
- },
43
- ]
44
- end
45
-
46
14
  def role_options
47
15
  Spree::Role.all.map do |role|
48
- { label: role.name, id: role.id }
16
+ {label: role.name, id: role.id}
49
17
  end
50
18
  end
51
19
  end
@@ -1,12 +1,5 @@
1
1
  en:
2
2
  title: "Users / %{email}"
3
- account: Account
4
- addresses: Addresses
5
- order_history: Order History
6
- items: Items
7
- store_credit: Store Credit
8
- last_active: Last Active
9
3
  create_order_for_user: Create order for this user
10
4
  update: Update
11
5
  cancel: Cancel
12
- back: Back
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SolidusAdmin::Users::Edit::Tabs::Component < SolidusAdmin::BaseComponent
4
+ def initialize(user:, current:)
5
+ @user = user
6
+ @current = current
7
+ end
8
+
9
+ def call
10
+ rendered_tabs = tabs.map do |tab|
11
+ render component("ui/button").new(tag: :a, scheme: :ghost, text: tab[:text], "aria-current": tab[:current], href: tab[:href])
12
+ end
13
+
14
+ safe_join(rendered_tabs)
15
+ end
16
+
17
+ def tabs
18
+ [
19
+ {
20
+ text: t(".account"),
21
+ href: solidus_admin.user_path(@user),
22
+ current: @current == :account
23
+ },
24
+ {
25
+ text: t(".addresses"),
26
+ href: solidus_admin.addresses_user_path(@user),
27
+ current: @current == :addresses
28
+ },
29
+ {
30
+ text: t(".order_history"),
31
+ href: solidus_admin.orders_user_path(@user),
32
+ current: @current == :orders
33
+ },
34
+ {
35
+ text: t(".items"),
36
+ href: solidus_admin.items_user_path(@user),
37
+ current: @current == :items
38
+ },
39
+ {
40
+ text: t(".store_credit"),
41
+ href: solidus_admin.user_store_credits_path(@user),
42
+ current: @current == :store_credits
43
+ }
44
+ ]
45
+ end
46
+ end
@@ -0,0 +1,6 @@
1
+ en:
2
+ account: Account
3
+ addresses: Addresses
4
+ order_history: Order History
5
+ items: Items
6
+ store_credit: Store Credit
@@ -22,30 +22,30 @@ class SolidusAdmin::Users::Index::Component < SolidusAdmin::UsersAndRoles::Compo
22
22
  def page_actions
23
23
  render component("ui/button").new(
24
24
  tag: :a,
25
- text: t('.add'),
25
+ text: t(".add"),
26
26
  href: spree.new_admin_user_path,
27
- icon: "add-line",
27
+ icon: "add-line"
28
28
  )
29
29
  end
30
30
 
31
31
  def batch_actions
32
32
  [
33
33
  {
34
- label: t('.batch_actions.delete'),
34
+ label: t(".batch_actions.delete"),
35
35
  action: solidus_admin.users_path,
36
36
  method: :delete,
37
- icon: 'delete-bin-7-line',
38
- },
37
+ icon: "delete-bin-7-line"
38
+ }
39
39
  ]
40
40
  end
41
41
 
42
42
  def scopes
43
43
  [
44
- { name: :all, label: t('.scopes.all'), default: true },
45
- { name: :customers, label: t('.scopes.customers') },
46
- { name: :admin, label: t('.scopes.admin') },
47
- { name: :with_orders, label: t('.scopes.with_orders') },
48
- { name: :without_orders, label: t('.scopes.without_orders') },
44
+ {name: :all, label: t(".scopes.all"), default: true},
45
+ {name: :customers, label: t(".scopes.customers")},
46
+ {name: :admin, label: t(".scopes.admin")},
47
+ {name: :with_orders, label: t(".scopes.with_orders")},
48
+ {name: :without_orders, label: t(".scopes.without_orders")}
49
49
  ]
50
50
  end
51
51
 
@@ -64,35 +64,35 @@ class SolidusAdmin::Users::Index::Component < SolidusAdmin::UsersAndRoles::Compo
64
64
  [
65
65
  {
66
66
  header: :email,
67
- data: :email,
67
+ data: :email
68
68
  },
69
69
  {
70
70
  header: :roles,
71
71
  data: ->(user) do
72
- roles = user.spree_roles.presence || [Spree::Role.new(name: 'customer')]
72
+ roles = user.spree_roles.presence || [Spree::Role.new(name: "customer")]
73
73
  safe_join(roles.map {
74
74
  color =
75
75
  case _1.name
76
- when 'admin' then :blue
77
- when 'customer' then :green
76
+ when "admin" then :blue
77
+ when "customer" then :green
78
78
  else :graphite_light
79
79
  end
80
- render component('ui/badge').new(name: _1.name, color:)
80
+ render component("ui/badge").new(name: _1.name, color:)
81
81
  })
82
- end,
82
+ end
83
83
  },
84
84
  {
85
85
  header: :order_count,
86
- data: ->(user) { user.order_count },
86
+ data: ->(user) { user.order_count }
87
87
  },
88
88
  {
89
89
  header: :lifetime_value,
90
- data: -> { _1.display_lifetime_value.to_html },
90
+ data: -> { _1.display_lifetime_value.to_html }
91
91
  },
92
92
  {
93
93
  header: :last_active,
94
- data: ->(user) { last_login(user) },
95
- },
94
+ data: ->(user) { last_login(user) }
95
+ }
96
96
  ]
97
97
  end
98
98
  end
@@ -9,9 +9,7 @@
9
9
  <% end %>
10
10
 
11
11
  <%= page_header do %>
12
- <% tabs.each do |tab| %>
13
- <%= render(component("ui/button").new(tag: :a, scheme: :ghost, text: tab[:text], 'aria-current': tab[:current], href: tab[:href])) %>
14
- <% end %>
12
+ <%= render component("users/edit/tabs").new(user: @user, current: :items) %>
15
13
  <% end %>
16
14
 
17
15
  <%= page_with_sidebar do %>
@@ -8,36 +8,6 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
8
8
  @items = items
9
9
  end
10
10
 
11
- def tabs
12
- [
13
- {
14
- text: t('.account'),
15
- href: solidus_admin.user_path(@user),
16
- current: false,
17
- },
18
- {
19
- text: t('.addresses'),
20
- href: solidus_admin.addresses_user_path(@user),
21
- current: false,
22
- },
23
- {
24
- text: t('.order_history'),
25
- href: solidus_admin.orders_user_path(@user),
26
- current: false,
27
- },
28
- {
29
- text: t('.items'),
30
- href: solidus_admin.items_user_path(@user),
31
- current: true,
32
- },
33
- {
34
- text: t('.store_credit'),
35
- href: spree.admin_user_store_credits_path(@user),
36
- current: false,
37
- },
38
- ]
39
- end
40
-
41
11
  def model_class
42
12
  Spree::LineItem
43
13
  end
@@ -59,13 +29,13 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
59
29
  quantity_column,
60
30
  total_column,
61
31
  state_column,
62
- number_column,
32
+ number_column
63
33
  ]
64
34
  end
65
35
 
66
36
  def date_column
67
37
  {
68
- col: { class: "w-[8%]" },
38
+ col: {class: "w-[8%]"},
69
39
  header: :date,
70
40
  data: ->(item) do
71
41
  content_tag :div, l(item.order.created_at, format: :short), class: "text-sm"
@@ -75,13 +45,13 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
75
45
 
76
46
  def image_column
77
47
  {
78
- col: { class: "w-[8%]" },
79
- header: tag.span('aria-label': Spree::Image.model_name.human, role: 'text'),
48
+ col: {class: "w-[8%]"},
49
+ header: tag.span("aria-label": Spree::Image.model_name.human, role: "text"),
80
50
  data: ->(item) do
81
51
  image = item.variant.gallery.images.first || item.variant.product.gallery.images.first or return
82
52
 
83
53
  render(
84
- component('ui/thumbnail').new(
54
+ component("ui/thumbnail").new(
85
55
  src: image.url(:small),
86
56
  alt: item.product.name
87
57
  )
@@ -92,7 +62,7 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
92
62
 
93
63
  def description_column
94
64
  {
95
- col: { class: "w-[24%]" },
65
+ col: {class: "w-[24%]"},
96
66
  header: t(".description_column_header"),
97
67
  data: ->(item) { item_name_with_variant_and_sku(item) }
98
68
  }
@@ -100,7 +70,7 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
100
70
 
101
71
  def price_column
102
72
  {
103
- col: { class: "w-[10%]" },
73
+ col: {class: "w-[10%]"},
104
74
  header: :price,
105
75
  data: ->(item) do
106
76
  content_tag :div, item.single_money.to_html
@@ -110,7 +80,7 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
110
80
 
111
81
  def quantity_column
112
82
  {
113
- col: { class: "w-[7%]" },
83
+ col: {class: "w-[7%]"},
114
84
  header: :qty,
115
85
  data: ->(item) do
116
86
  content_tag :div, item.quantity
@@ -120,7 +90,7 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
120
90
 
121
91
  def total_column
122
92
  {
123
- col: { class: "w-[10%]" },
93
+ col: {class: "w-[10%]"},
124
94
  header: t(".total_column_header"),
125
95
  data: ->(item) do
126
96
  content_tag :div, item.money.to_html
@@ -130,23 +100,23 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
130
100
 
131
101
  def state_column
132
102
  {
133
- col: { class: "w-[15%]" },
103
+ col: {class: "w-[15%]"},
134
104
  header: :state,
135
105
  data: ->(item) do
136
106
  color = {
137
- 'complete' => :green,
138
- 'returned' => :red,
139
- 'canceled' => :blue,
140
- 'cart' => :graphite_light,
107
+ "complete" => :green,
108
+ "returned" => :red,
109
+ "canceled" => :blue,
110
+ "cart" => :graphite_light
141
111
  }[item.order.state] || :yellow
142
- component('ui/badge').new(name: item.order.state.humanize, color: color)
112
+ component("ui/badge").new(name: item.order.state.humanize, color: color)
143
113
  end
144
114
  }
145
115
  end
146
116
 
147
117
  def number_column
148
118
  {
149
- col: { class: "w-[18%]" },
119
+ col: {class: "w-[18%]"},
150
120
  header: t(".number_column_header"),
151
121
  data: ->(item) do
152
122
  content_tag :div, item.order.number, class: "font-semibold text-sm"
@@ -160,11 +130,8 @@ class SolidusAdmin::Users::Items::Component < SolidusAdmin::BaseComponent
160
130
  content = []
161
131
  content << item.product.name
162
132
  content << "(#{item.variant.options_text})" if item.variant.option_values.any?
163
- content << "<strong>#{t('spree.sku')}:</strong> #{item.variant.sku}" if item.variant.sku.present?
133
+ content << safe_join([tag.strong("#{t("spree.sku")}:"), " ", item.variant.sku]) if item.variant.sku.present?
164
134
 
165
- # The `.html_safe` is required for the description to display as desired.
166
- # rubocop:disable Rails/OutputSafety
167
- safe_join([content_tag(:div, content.join("<br>").html_safe, class: "text-sm")])
168
- # rubocop:enable Rails/OutputSafety
135
+ content_tag(:div, safe_join(content, tag.br), class: "text-sm")
169
136
  end
170
137
  end
@@ -1,16 +1,9 @@
1
1
  en:
2
2
  title: "Users / %{email} / Items Purchased"
3
- account: Account
4
- addresses: Addresses
5
- order_history: Order History
6
- items: Items
7
- store_credit: Store Credit
8
- last_active: Last Active
9
3
  create_order_for_user: Create order for this user
10
4
  items_purchased: Items Purchased
11
5
  no_orders_found: No Orders found.
12
6
  create_one: Create One
13
- back: Back
14
7
  number_column_header: "Order #"
15
8
  description_column_header: "Description"
16
9
  total_column_header: "Total"
@@ -9,9 +9,7 @@
9
9
  <% end %>
10
10
 
11
11
  <%= page_header do %>
12
- <% tabs.each do |tab| %>
13
- <%= render(component("ui/button").new(tag: :a, scheme: :ghost, text: tab[:text], 'aria-current': tab[:current], href: tab[:href])) %>
14
- <% end %>
12
+ <%= render component("users/edit/tabs").new(user: @user, current: :orders) %>
15
13
  <% end %>
16
14
 
17
15
  <%= page_with_sidebar do %>
@@ -8,36 +8,6 @@ class SolidusAdmin::Users::Orders::Component < SolidusAdmin::BaseComponent
8
8
  @orders = orders
9
9
  end
10
10
 
11
- def tabs
12
- [
13
- {
14
- text: t('.account'),
15
- href: solidus_admin.user_path(@user),
16
- current: false,
17
- },
18
- {
19
- text: t('.addresses'),
20
- href: solidus_admin.addresses_user_path(@user),
21
- current: false,
22
- },
23
- {
24
- text: t('.order_history'),
25
- href: solidus_admin.orders_user_path(@user),
26
- current: true,
27
- },
28
- {
29
- text: t('.items'),
30
- href: spree.items_admin_user_path(@user),
31
- current: false,
32
- },
33
- {
34
- text: t('.store_credit'),
35
- href: spree.admin_user_store_credits_path(@user),
36
- current: false,
37
- },
38
- ]
39
- end
40
-
41
11
  def model_class
42
12
  Spree::Order
43
13
  end
@@ -61,7 +31,7 @@ class SolidusAdmin::Users::Orders::Component < SolidusAdmin::BaseComponent
61
31
  date_column,
62
32
  payment_column,
63
33
  shipment_column,
64
- total_column,
34
+ total_column
65
35
  ]
66
36
  end
67
37
 
@@ -70,7 +40,7 @@ class SolidusAdmin::Users::Orders::Component < SolidusAdmin::BaseComponent
70
40
  header: :order,
71
41
  data: ->(order) do
72
42
  if !row_fade(order)
73
- content_tag :div, order.number, class: 'font-semibold'
43
+ content_tag :div, order.number, class: "font-semibold"
74
44
  else
75
45
  content_tag :div, order.number
76
46
  end
@@ -83,12 +53,12 @@ class SolidusAdmin::Users::Orders::Component < SolidusAdmin::BaseComponent
83
53
  header: :state,
84
54
  data: ->(order) do
85
55
  color = {
86
- 'complete' => :green,
87
- 'returned' => :red,
88
- 'canceled' => :blue,
89
- 'cart' => :graphite_light,
56
+ "complete" => :green,
57
+ "returned" => :red,
58
+ "canceled" => :blue,
59
+ "cart" => :graphite_light
90
60
  }[order.state] || :yellow
91
- component('ui/badge').new(name: order.state.humanize, color: color)
61
+ component("ui/badge").new(name: order.state.humanize, color: color)
92
62
  end
93
63
  }
94
64
  end
@@ -115,7 +85,7 @@ class SolidusAdmin::Users::Orders::Component < SolidusAdmin::BaseComponent
115
85
  {
116
86
  header: :payment,
117
87
  data: ->(order) do
118
- component('ui/badge').new(name: order.payment_state.humanize, color: order.paid? ? :green : :yellow) if order.payment_state?
88
+ component("ui/badge").new(name: order.payment_state.humanize, color: order.paid? ? :green : :yellow) if order.payment_state?
119
89
  end
120
90
  }
121
91
  end
@@ -124,7 +94,7 @@ class SolidusAdmin::Users::Orders::Component < SolidusAdmin::BaseComponent
124
94
  {
125
95
  header: :shipment,
126
96
  data: ->(order) do
127
- component('ui/badge').new(name: order.shipment_state.humanize, color: order.shipped? ? :green : :yellow) if order.shipment_state?
97
+ component("ui/badge").new(name: order.shipment_state.humanize, color: order.shipped? ? :green : :yellow) if order.shipment_state?
128
98
  end
129
99
  }
130
100
  end