spree_admin 5.2.6 → 5.3.0.rc1

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 (805) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -1
  3. data/app/assets/config/spree_admin_manifest.js +0 -1
  4. data/app/assets/tailwind/spree/admin/base/_animations.css +151 -0
  5. data/app/assets/tailwind/spree/admin/base/_base.css +69 -0
  6. data/app/assets/tailwind/spree/admin/base/_theme.css +62 -0
  7. data/app/assets/tailwind/spree/admin/base/_utilities.css +26 -0
  8. data/app/assets/tailwind/spree/admin/components/_alerts.css +53 -0
  9. data/app/assets/tailwind/spree/admin/components/_badges.css +124 -0
  10. data/app/assets/tailwind/spree/admin/components/_breadcrumbs.css +22 -0
  11. data/app/assets/tailwind/spree/admin/components/_bulk-editor.css +53 -0
  12. data/app/assets/tailwind/spree/admin/components/_bulk-panel.css +97 -0
  13. data/app/assets/tailwind/spree/admin/components/_buttons.css +114 -0
  14. data/app/assets/tailwind/spree/admin/components/_cards.css +240 -0
  15. data/app/assets/tailwind/spree/admin/components/_dialogs.css +279 -0
  16. data/app/assets/tailwind/spree/admin/components/_dropdowns.css +128 -0
  17. data/app/assets/tailwind/spree/admin/components/_filters.css +83 -0
  18. data/app/assets/tailwind/spree/admin/components/_forms.css +258 -0
  19. data/app/assets/tailwind/spree/admin/components/_layout.css +580 -0
  20. data/app/assets/tailwind/spree/admin/components/_line-items.css +28 -0
  21. data/app/assets/tailwind/spree/admin/components/_list-groups.css +57 -0
  22. data/app/assets/tailwind/spree/admin/components/_media-form.css +69 -0
  23. data/app/assets/tailwind/spree/admin/components/_misc.css +35 -0
  24. data/app/assets/tailwind/spree/admin/components/_navigation.css +41 -0
  25. data/app/assets/tailwind/spree/admin/components/_progress.css +14 -0
  26. data/app/assets/tailwind/spree/admin/components/_search-picker.css +36 -0
  27. data/app/assets/tailwind/spree/admin/components/_seo-form.css +21 -0
  28. data/app/assets/tailwind/spree/admin/components/_sortable-tree.css +61 -0
  29. data/app/assets/tailwind/spree/admin/components/_tables.css +195 -0
  30. data/app/assets/tailwind/spree/admin/components/_tooltips.css +15 -0
  31. data/app/assets/tailwind/spree/admin/components/_variants-form.css +150 -0
  32. data/app/assets/tailwind/spree/admin/index.css +73 -0
  33. data/app/assets/tailwind/spree/admin/plugins/_actiontext.css +35 -0
  34. data/app/assets/tailwind/spree/admin/plugins/_tinymce.css +79 -0
  35. data/app/assets/tailwind/spree/admin/plugins/_tom-select.css +299 -0
  36. data/app/assets/tailwind/spree/admin/plugins/_trix.css +100 -0
  37. data/app/assets/tailwind/spree/admin/plugins/_uppy.css +117 -0
  38. data/app/assets/tailwind/spree/admin/utilities/_bootstrap.css +158 -0
  39. data/app/assets/tailwind/spree/admin/views/_dashboard.css +30 -0
  40. data/app/assets/tailwind/spree/admin/views/_page-builder.css +214 -0
  41. data/app/controllers/concerns/spree/admin/bulk_operations_concern.rb +7 -0
  42. data/app/controllers/concerns/spree/admin/order_concern.rb +14 -0
  43. data/app/controllers/concerns/spree/admin/table_concern.rb +82 -0
  44. data/app/controllers/spree/admin/admin_users_controller.rb +11 -2
  45. data/app/controllers/spree/admin/bulk_operations_controller.rb +34 -0
  46. data/app/controllers/spree/admin/checkouts_controller.rb +15 -3
  47. data/app/controllers/spree/admin/classifications_controller.rb +1 -2
  48. data/app/controllers/spree/admin/countries_controller.rb +13 -0
  49. data/app/controllers/spree/admin/customer_group_users_controller.rb +77 -0
  50. data/app/controllers/spree/admin/customer_groups_controller.rb +44 -0
  51. data/app/controllers/spree/admin/gift_cards_controller.rb +1 -0
  52. data/app/controllers/spree/admin/option_values_controller.rb +1 -1
  53. data/app/controllers/spree/admin/orders/adjustments_controller.rb +120 -0
  54. data/app/controllers/spree/admin/orders/order_promotions_controller.rb +59 -0
  55. data/app/controllers/spree/admin/orders_controller.rb +29 -29
  56. data/app/controllers/spree/admin/post_categories_controller.rb +7 -1
  57. data/app/controllers/spree/admin/posts_controller.rb +3 -2
  58. data/app/controllers/spree/admin/price_list_products_controller.rb +49 -0
  59. data/app/controllers/spree/admin/price_lists_controller.rb +54 -0
  60. data/app/controllers/spree/admin/price_rules_controller.rb +52 -0
  61. data/app/controllers/spree/admin/products_controller.rb +13 -72
  62. data/app/controllers/spree/admin/promotion_rules_controller.rb +9 -1
  63. data/app/controllers/spree/admin/promotions_controller.rb +11 -23
  64. data/app/controllers/spree/admin/resource_controller.rb +46 -5
  65. data/app/controllers/spree/admin/stock_items_controller.rb +2 -1
  66. data/app/controllers/spree/admin/stock_locations_controller.rb +9 -0
  67. data/app/controllers/spree/admin/table_columns_controller.rb +38 -0
  68. data/app/controllers/spree/admin/tags_controller.rb +32 -0
  69. data/app/controllers/spree/admin/users_controller.rb +57 -13
  70. data/app/controllers/spree/admin/variants_controller.rb +1 -1
  71. data/app/controllers/spree/admin/webhook_deliveries_controller.rb +20 -0
  72. data/app/controllers/spree/admin/webhook_endpoints_controller.rb +26 -0
  73. data/app/helpers/spree/admin/avatars_helper.rb +56 -0
  74. data/app/helpers/spree/admin/base_helper.rb +68 -47
  75. data/app/helpers/spree/admin/bulk_editor_helper.rb +41 -0
  76. data/app/helpers/spree/admin/bulk_operations_helper.rb +2 -2
  77. data/app/helpers/spree/admin/code_block_helper.rb +18 -0
  78. data/app/helpers/spree/admin/dialog_helper.rb +30 -0
  79. data/app/helpers/spree/admin/drawer_helper.rb +30 -0
  80. data/app/helpers/spree/admin/json_preview_helper.rb +18 -10
  81. data/app/helpers/spree/admin/modal_helper.rb +1 -1
  82. data/app/helpers/spree/admin/navigation_helper.rb +7 -7
  83. data/app/helpers/spree/admin/onboarding_helper.rb +3 -3
  84. data/app/helpers/spree/admin/orders_filters_helper.rb +18 -55
  85. data/app/helpers/spree/admin/orders_helper.rb +4 -0
  86. data/app/helpers/spree/admin/price_lists_helper.rb +20 -0
  87. data/app/helpers/spree/admin/products_helper.rb +4 -4
  88. data/app/helpers/spree/admin/promotions_helper.rb +1 -0
  89. data/app/helpers/spree/admin/stores_helper.rb +2 -2
  90. data/app/helpers/spree/admin/table_helper.rb +437 -0
  91. data/app/helpers/spree/admin/taxons_helper.rb +1 -1
  92. data/app/helpers/spree/admin/turbo_helper.rb +9 -3
  93. data/app/helpers/spree/admin/webhook_endpoints_helper.rb +95 -0
  94. data/app/helpers/tom_select_helper.rb +2 -2
  95. data/app/javascript/spree/admin/application.js +13 -1
  96. data/app/javascript/spree/admin/controllers/bulk_editor_controller.js +867 -0
  97. data/app/javascript/spree/admin/controllers/bulk_operation_controller.js +31 -5
  98. data/app/javascript/spree/admin/controllers/column_selector_controller.js +35 -0
  99. data/app/javascript/spree/admin/controllers/dropdown_controller.js +20 -2
  100. data/app/javascript/spree/admin/controllers/font_picker_controller.js +1 -1
  101. data/app/javascript/spree/admin/controllers/media_form_controller.js +3 -3
  102. data/app/javascript/spree/admin/controllers/money_field_controller.js +150 -0
  103. data/app/javascript/spree/admin/controllers/order_billing_address_controller.js +2 -2
  104. data/app/javascript/spree/admin/controllers/product_form_controller.js +6 -6
  105. data/app/javascript/spree/admin/controllers/query_builder_controller.js +618 -0
  106. data/app/javascript/spree/admin/controllers/replace_controller.js +4 -4
  107. data/app/javascript/spree/admin/controllers/search_clear_controller.js +22 -0
  108. data/app/javascript/spree/admin/controllers/select_controller.js +9 -3
  109. data/app/javascript/spree/admin/controllers/seo_form_controller.js +5 -5
  110. data/app/javascript/spree/admin/controllers/sidebar_controller.js +2 -2
  111. data/app/javascript/spree/admin/controllers/sticky_controller.js +6 -2
  112. data/app/javascript/spree/admin/controllers/table_controller.js +20 -0
  113. data/app/javascript/spree/admin/controllers/variants_form_controller.js +142 -28
  114. data/app/javascript/spree/admin/helpers/trix/video_embed.js +5 -5
  115. data/app/javascript/spree/admin/helpers/turbo_confirm.js +38 -0
  116. data/app/models/spree/admin/form_builder.rb +134 -38
  117. data/app/models/spree/admin/table/builder.rb +55 -0
  118. data/app/models/spree/admin/table/bulk_action.rb +95 -0
  119. data/app/models/spree/admin/table/column.rb +111 -0
  120. data/app/models/spree/admin/table/filter.rb +116 -0
  121. data/app/models/spree/admin/table/filter_group.rb +144 -0
  122. data/app/models/spree/admin/table/query_builder.rb +114 -0
  123. data/app/models/spree/admin/table/visibility.rb +20 -0
  124. data/app/models/spree/admin/table.rb +313 -0
  125. data/app/presenters/spree/admin/order_summary_presenter.rb +190 -0
  126. data/app/subscribers/spree/admin/import_row_subscriber.rb +68 -0
  127. data/app/subscribers/spree/admin/import_subscriber.rb +35 -0
  128. data/app/views/active_storage/_upload_form.html.erb +9 -7
  129. data/app/views/layouts/spree/admin.html.erb +5 -5
  130. data/app/views/layouts/spree/admin_settings.html.erb +5 -6
  131. data/app/views/layouts/spree/admin_wizard.html.erb +6 -6
  132. data/app/views/layouts/spree/minimal.html.erb +10 -10
  133. data/app/views/spree/admin/admin_users/_admin_user.html.erb +6 -6
  134. data/app/views/spree/admin/admin_users/_audit_log.html.erb +1 -1
  135. data/app/views/spree/admin/admin_users/edit.html.erb +1 -1
  136. data/app/views/spree/admin/admin_users/index.html.erb +2 -2
  137. data/app/views/spree/admin/admin_users/new.html.erb +3 -3
  138. data/app/views/spree/admin/admin_users/show.html.erb +16 -16
  139. data/app/views/spree/admin/bulk_operations/forms/_confirmation.html.erb +1 -0
  140. data/app/views/spree/admin/bulk_operations/forms/_tag_picker.html.erb +8 -0
  141. data/app/views/spree/admin/bulk_operations/forms/_taxon_picker.html.erb +5 -0
  142. data/app/views/spree/admin/bulk_operations/new.html.erb +16 -0
  143. data/app/views/spree/admin/checkouts/index.html.erb +9 -0
  144. data/app/views/spree/admin/classifications/_classification.html.erb +9 -9
  145. data/app/views/spree/admin/classifications/create.turbo_stream.erb +1 -1
  146. data/app/views/spree/admin/classifications/destroy.turbo_stream.erb +1 -1
  147. data/app/views/spree/admin/classifications/index.html.erb +1 -1
  148. data/app/views/spree/admin/coupon_codes/_filters.html.erb +3 -3
  149. data/app/views/spree/admin/coupon_codes/_table_row.html.erb +3 -3
  150. data/app/views/spree/admin/coupon_codes/index.html.erb +3 -3
  151. data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +1 -1
  152. data/app/views/spree/admin/custom_domains/_form.html.erb +1 -1
  153. data/app/views/spree/admin/custom_domains/index.html.erb +20 -20
  154. data/app/views/spree/admin/customer_group_users/bulk_create.turbo_stream.erb +15 -0
  155. data/app/views/spree/admin/customer_group_users/bulk_destroy.turbo_stream.erb +17 -0
  156. data/app/views/spree/admin/customer_group_users/bulk_new.html.erb +27 -0
  157. data/app/views/spree/admin/customer_group_users/index.html.erb +1 -0
  158. data/app/views/spree/admin/customer_groups/_customers_header.html.erb +12 -0
  159. data/app/views/spree/admin/customer_groups/_details.html.erb +59 -0
  160. data/app/views/spree/admin/customer_groups/_form.html.erb +6 -0
  161. data/app/views/spree/admin/customer_groups/edit.html.erb +1 -0
  162. data/app/views/spree/admin/customer_groups/index.html.erb +9 -0
  163. data/app/views/spree/admin/customer_groups/show.html.erb +19 -0
  164. data/app/views/spree/admin/customer_groups/update.turbo_stream.erb +17 -0
  165. data/app/views/spree/admin/customer_returns/_table_row.html.erb +1 -1
  166. data/app/views/spree/admin/customer_returns/index.html.erb +1 -1
  167. data/app/views/spree/admin/dashboard/_setup_progress.html.erb +3 -3
  168. data/app/views/spree/admin/dashboard/_setup_tasks.html.erb +16 -10
  169. data/app/views/spree/admin/dashboard/_sidebar.html.erb +1 -2
  170. data/app/views/spree/admin/dashboard/_top_products.html.erb +10 -10
  171. data/app/views/spree/admin/dashboard/_updater.html.erb +1 -1
  172. data/app/views/spree/admin/dashboard/_visits.html.erb +22 -22
  173. data/app/views/spree/admin/dashboard/analytics.html.erb +28 -28
  174. data/app/views/spree/admin/dashboard/getting_started.html.erb +3 -3
  175. data/app/views/spree/admin/dashboard/setup_tasks/_add_products.html.erb +1 -1
  176. data/app/views/spree/admin/dashboard/setup_tasks/_set_customer_support_email.html.erb +4 -6
  177. data/app/views/spree/admin/dashboard/setup_tasks/_setup_payment_method.html.erb +7 -3
  178. data/app/views/spree/admin/dashboard/setup_tasks/_setup_taxes_collection.html.erb +4 -2
  179. data/app/views/spree/admin/dashboard/show.html.erb +8 -8
  180. data/app/views/spree/admin/digital_assets/_form.html.erb +2 -2
  181. data/app/views/spree/admin/digital_assets/_table.html.erb +2 -2
  182. data/app/views/spree/admin/errors/403.html.erb +2 -2
  183. data/app/views/spree/admin/errors/404.html.erb +2 -2
  184. data/app/views/spree/admin/errors/422.html.erb +2 -2
  185. data/app/views/spree/admin/errors/500.html.erb +2 -2
  186. data/app/views/spree/admin/errors/503.html.erb +2 -2
  187. data/app/views/spree/admin/exports/_export.html.erb +1 -1
  188. data/app/views/spree/admin/exports/new.html.erb +7 -9
  189. data/app/views/spree/admin/gift_card_batches/_form.html.erb +3 -3
  190. data/app/views/spree/admin/gift_cards/_filters.html.erb +6 -6
  191. data/app/views/spree/admin/gift_cards/_form.html.erb +3 -3
  192. data/app/views/spree/admin/gift_cards/_gift_card.html.erb +4 -4
  193. data/app/views/spree/admin/gift_cards/_list.html.erb +1 -1
  194. data/app/views/spree/admin/gift_cards/_table_filter_dropdown.html.erb +1 -1
  195. data/app/views/spree/admin/gift_cards/edit.html.erb +2 -2
  196. data/app/views/spree/admin/gift_cards/index.html.erb +21 -36
  197. data/app/views/spree/admin/gift_cards/show.html.erb +32 -32
  198. data/app/views/spree/admin/import_rows/show.html.erb +8 -8
  199. data/app/views/spree/admin/imports/_footer.html.erb +2 -2
  200. data/app/views/spree/admin/imports/_loader.html.erb +7 -7
  201. data/app/views/spree/admin/imports/_mapping.html.erb +3 -3
  202. data/app/views/spree/admin/imports/_mapping_footer.html.erb +4 -4
  203. data/app/views/spree/admin/imports/_mapping_icon.html.erb +1 -1
  204. data/app/views/spree/admin/imports/_row.html.erb +6 -6
  205. data/app/views/spree/admin/imports/new.html.erb +1 -1
  206. data/app/views/spree/admin/imports/show.html.erb +7 -7
  207. data/app/views/spree/admin/integrations/_integration.html.erb +6 -6
  208. data/app/views/spree/admin/integrations/edit.html.erb +6 -2
  209. data/app/views/spree/admin/integrations/index.html.erb +9 -9
  210. data/app/views/spree/admin/integrations/new.html.erb +2 -2
  211. data/app/views/spree/admin/invitations/_invitation.html.erb +3 -3
  212. data/app/views/spree/admin/invitations/index.html.erb +2 -2
  213. data/app/views/spree/admin/invitations/show.html.erb +2 -2
  214. data/app/views/spree/admin/json_previews/show.html.erb +8 -8
  215. data/app/views/spree/admin/line_items/edit.html.erb +4 -4
  216. data/app/views/spree/admin/line_items/new.html.erb +4 -4
  217. data/app/views/spree/admin/metafield_definitions/_filters.html.erb +2 -2
  218. data/app/views/spree/admin/metafield_definitions/_form.html.erb +6 -6
  219. data/app/views/spree/admin/metafield_definitions/_table_row.html.erb +2 -2
  220. data/app/views/spree/admin/metafield_definitions/index.html.erb +1 -1
  221. data/app/views/spree/admin/metafields/edit.html.erb +6 -6
  222. data/app/views/spree/admin/metafields/types/_boolean.html.erb +1 -1
  223. data/app/views/spree/admin/metafields/types/_json.html.erb +1 -1
  224. data/app/views/spree/admin/metafields/types/_long_text.html.erb +1 -1
  225. data/app/views/spree/admin/metafields/types/_number.html.erb +1 -1
  226. data/app/views/spree/admin/metafields/types/_short_text.html.erb +1 -1
  227. data/app/views/spree/admin/newsletter_subscribers/_filters.html.erb +2 -2
  228. data/app/views/spree/admin/newsletter_subscribers/_table_row.html.erb +3 -3
  229. data/app/views/spree/admin/newsletter_subscribers/index.html.erb +1 -1
  230. data/app/views/spree/admin/oauth_applications/_form.html.erb +1 -1
  231. data/app/views/spree/admin/oauth_applications/_table_row.html.erb +3 -3
  232. data/app/views/spree/admin/oauth_applications/create.turbo_stream.erb +8 -8
  233. data/app/views/spree/admin/oauth_applications/index.html.erb +2 -2
  234. data/app/views/spree/admin/option_types/_form.html.erb +10 -10
  235. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +3 -3
  236. data/app/views/spree/admin/option_types/_table_row.html.erb +2 -2
  237. data/app/views/spree/admin/option_types/edit.html.erb +1 -12
  238. data/app/views/spree/admin/option_types/index.html.erb +1 -1
  239. data/app/views/spree/admin/option_types/new.html.erb +1 -11
  240. data/app/views/spree/admin/orders/_adjustment.html.erb +72 -0
  241. data/app/views/spree/admin/orders/_adjustments.html.erb +41 -0
  242. data/app/views/spree/admin/orders/_customer.html.erb +13 -13
  243. data/app/views/spree/admin/orders/_customer_returns.html.erb +3 -3
  244. data/app/views/spree/admin/orders/_customer_summary.html.erb +4 -4
  245. data/app/views/spree/admin/orders/_filters.html.erb +9 -9
  246. data/app/views/spree/admin/orders/_form.html.erb +1 -1
  247. data/app/views/spree/admin/orders/_header.html.erb +2 -2
  248. data/app/views/spree/admin/orders/_line_item.html.erb +2 -2
  249. data/app/views/spree/admin/orders/_line_items.html.erb +43 -36
  250. data/app/views/spree/admin/orders/_order.html.erb +2 -2
  251. data/app/views/spree/admin/orders/_order_promotion.html.erb +32 -0
  252. data/app/views/spree/admin/orders/_payments.html.erb +8 -8
  253. data/app/views/spree/admin/orders/_promotions.html.erb +37 -0
  254. data/app/views/spree/admin/orders/_refunds.html.erb +5 -5
  255. data/app/views/spree/admin/orders/_return_authorizations.html.erb +3 -3
  256. data/app/views/spree/admin/orders/_risk_analysis.html.erb +3 -3
  257. data/app/views/spree/admin/orders/_shipment.html.erb +15 -15
  258. data/app/views/spree/admin/orders/_shipment_manifest_item.html.erb +5 -5
  259. data/app/views/spree/admin/orders/_shipments.html.erb +6 -6
  260. data/app/views/spree/admin/orders/_special_instructions.html.erb +1 -1
  261. data/app/views/spree/admin/orders/_summary.html.erb +21 -95
  262. data/app/views/spree/admin/orders/_table_filter_dropdown.html.erb +2 -2
  263. data/app/views/spree/admin/orders/_tax_lines.html.erb +2 -2
  264. data/app/views/spree/admin/orders/_tax_rates.html.erb +86 -0
  265. data/app/views/spree/admin/orders/_user_overview.html.erb +2 -2
  266. data/app/views/spree/admin/orders/adjustments/_form.html.erb +6 -0
  267. data/app/views/spree/admin/orders/adjustments/create.turbo_stream.erb +10 -0
  268. data/app/views/spree/admin/orders/adjustments/destroy.turbo_stream.erb +9 -0
  269. data/app/views/spree/admin/orders/adjustments/edit.html.erb +13 -0
  270. data/app/views/spree/admin/orders/adjustments/new.html.erb +15 -0
  271. data/app/views/spree/admin/orders/adjustments/toggle_state.turbo_stream.erb +9 -0
  272. data/app/views/spree/admin/orders/adjustments/update.turbo_stream.erb +10 -0
  273. data/app/views/spree/admin/orders/billing_address/_form.html.erb +3 -3
  274. data/app/views/spree/admin/orders/billing_address/create.turbo_stream.erb +7 -7
  275. data/app/views/spree/admin/orders/billing_address/edit.html.erb +9 -9
  276. data/app/views/spree/admin/orders/billing_address/new.html.erb +7 -7
  277. data/app/views/spree/admin/orders/billing_address/update.turbo_stream.erb +7 -7
  278. data/app/views/spree/admin/orders/contact_information/edit.html.erb +1 -1
  279. data/app/views/spree/admin/orders/customer_returns/_customer_return.html.erb +1 -1
  280. data/app/views/spree/admin/orders/customer_returns/_reimbursements_table.html.erb +1 -1
  281. data/app/views/spree/admin/orders/customer_returns/_return_item_decision.html.erb +1 -1
  282. data/app/views/spree/admin/orders/customer_returns/_return_item_selection.html.erb +4 -4
  283. data/app/views/spree/admin/orders/customer_returns/edit.html.erb +12 -12
  284. data/app/views/spree/admin/orders/customer_returns/new.html.erb +6 -6
  285. data/app/views/spree/admin/orders/index.html.erb +4 -21
  286. data/app/views/spree/admin/orders/new.html.erb +3 -3
  287. data/app/views/spree/admin/orders/order_promotions/create.turbo_stream.erb +16 -0
  288. data/app/views/spree/admin/orders/order_promotions/destroy.turbo_stream.erb +15 -0
  289. data/app/views/spree/admin/orders/order_promotions/new.html.erb +15 -0
  290. data/app/views/spree/admin/orders/return_authorizations/_form.html.erb +7 -7
  291. data/app/views/spree/admin/orders/return_authorizations/_return_authorization.html.erb +1 -1
  292. data/app/views/spree/admin/orders/return_authorizations/edit.html.erb +2 -2
  293. data/app/views/spree/admin/orders/return_authorizations/show.html.erb +8 -8
  294. data/app/views/spree/admin/orders/shipping_address/_form.html.erb +2 -2
  295. data/app/views/spree/admin/orders/shipping_address/create.turbo_stream.erb +1 -1
  296. data/app/views/spree/admin/orders/shipping_address/edit.html.erb +1 -1
  297. data/app/views/spree/admin/orders/shipping_address/new.html.erb +1 -1
  298. data/app/views/spree/admin/orders/shipping_address/update.turbo_stream.erb +1 -1
  299. data/app/views/spree/admin/orders/show.html.erb +24 -0
  300. data/app/views/spree/admin/orders/update.turbo_stream.erb +5 -0
  301. data/app/views/spree/admin/orders/user/new.html.erb +7 -7
  302. data/app/views/spree/admin/payment_methods/_available_payment_method.html.erb +3 -3
  303. data/app/views/spree/admin/payment_methods/_form.html.erb +3 -3
  304. data/app/views/spree/admin/payment_methods/_payment_method.html.erb +8 -8
  305. data/app/views/spree/admin/payment_methods/edit.html.erb +2 -2
  306. data/app/views/spree/admin/payment_methods/index.html.erb +3 -3
  307. data/app/views/spree/admin/payment_methods/new.html.erb +2 -2
  308. data/app/views/spree/admin/payments/_payment.html.erb +17 -17
  309. data/app/views/spree/admin/payments/new.html.erb +13 -23
  310. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +10 -10
  311. data/app/views/spree/admin/payments/source_forms/_previous_cards.html.erb +4 -4
  312. data/app/views/spree/admin/payments/source_forms/_spree_stripe.html.erb +1 -1
  313. data/app/views/spree/admin/payments/source_forms/_store_credit.html.erb +5 -5
  314. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +1 -1
  315. data/app/views/spree/admin/payments/source_views/_storecredit.html.erb +1 -1
  316. data/app/views/spree/admin/policies/_filters.html.erb +1 -1
  317. data/app/views/spree/admin/policies/_form.html.erb +1 -1
  318. data/app/views/spree/admin/policies/_table_row.html.erb +2 -2
  319. data/app/views/spree/admin/policies/index.html.erb +1 -1
  320. data/app/views/spree/admin/post_categories/_form.html.erb +1 -1
  321. data/app/views/spree/admin/post_categories/_table_row.html.erb +1 -1
  322. data/app/views/spree/admin/post_categories/index.html.erb +1 -1
  323. data/app/views/spree/admin/posts/_form.html.erb +7 -7
  324. data/app/views/spree/admin/posts/_table_row.html.erb +1 -1
  325. data/app/views/spree/admin/posts/edit.html.erb +1 -11
  326. data/app/views/spree/admin/posts/filters.html.erb +4 -4
  327. data/app/views/spree/admin/posts/index.html.erb +1 -1
  328. data/app/views/spree/admin/posts/new.html.erb +1 -11
  329. data/app/views/spree/admin/preferences/_password_field.html.erb +14 -14
  330. data/app/views/spree/admin/price_list_products/bulk_create.turbo_stream.erb +11 -0
  331. data/app/views/spree/admin/price_list_products/bulk_destroy.turbo_stream.erb +13 -0
  332. data/app/views/spree/admin/price_list_products/bulk_new.html.erb +29 -0
  333. data/app/views/spree/admin/price_list_products/index.html.erb +1 -0
  334. data/app/views/spree/admin/price_lists/_details.html.erb +75 -0
  335. data/app/views/spree/admin/price_lists/_form.html.erb +8 -0
  336. data/app/views/spree/admin/price_lists/_products_header.html.erb +18 -0
  337. data/app/views/spree/admin/price_lists/_rules.html.erb +32 -0
  338. data/app/views/spree/admin/price_lists/_table_header.html.erb +7 -0
  339. data/app/views/spree/admin/price_lists/edit.html.erb +1 -0
  340. data/app/views/spree/admin/price_lists/edit_prices.html.erb +138 -0
  341. data/app/views/spree/admin/price_lists/index.html.erb +12 -0
  342. data/app/views/spree/admin/price_lists/new.html.erb +1 -0
  343. data/app/views/spree/admin/price_lists/show.html.erb +46 -0
  344. data/app/views/spree/admin/price_lists/update.turbo_stream.erb +17 -0
  345. data/app/views/spree/admin/price_rules/_price_rule.html.erb +28 -0
  346. data/app/views/spree/admin/price_rules/edit.html.erb +20 -0
  347. data/app/views/spree/admin/price_rules/forms/_customer_group_rule.html.erb +9 -0
  348. data/app/views/spree/admin/price_rules/forms/_user_rule.html.erb +7 -0
  349. data/app/views/spree/admin/price_rules/forms/_volume_rule.html.erb +11 -0
  350. data/app/views/spree/admin/price_rules/forms/_zone_rule.html.erb +7 -0
  351. data/app/views/spree/admin/price_rules/new.html.erb +36 -0
  352. data/app/views/spree/admin/products/_filters.html.erb +5 -5
  353. data/app/views/spree/admin/products/_form.html.erb +3 -3
  354. data/app/views/spree/admin/products/_product.html.erb +5 -5
  355. data/app/views/spree/admin/products/_search_result.html.erb +2 -2
  356. data/app/views/spree/admin/products/_search_results.html.erb +1 -1
  357. data/app/views/spree/admin/products/_table_filter_dropdown.html.erb +1 -1
  358. data/app/views/spree/admin/products/form/_base.html.erb +2 -2
  359. data/app/views/spree/admin/products/form/_categorization.html.erb +3 -3
  360. data/app/views/spree/admin/products/form/_inventory.html.erb +17 -32
  361. data/app/views/spree/admin/products/form/_properties.html.erb +7 -7
  362. data/app/views/spree/admin/products/form/_shipping.html.erb +1 -1
  363. data/app/views/spree/admin/products/form/_status.html.erb +7 -7
  364. data/app/views/spree/admin/products/form/_stores.html.erb +2 -2
  365. data/app/views/spree/admin/products/form/_tax.html.erb +1 -1
  366. data/app/views/spree/admin/products/form/_variants.html.erb +31 -21
  367. data/app/views/spree/admin/products/form/variants/_option_template.html.erb +8 -8
  368. data/app/views/spree/admin/products/form/variants/_variant_template.html.erb +9 -9
  369. data/app/views/spree/admin/products/index.html.erb +1 -14
  370. data/app/views/spree/admin/profile/edit.html.erb +3 -3
  371. data/app/views/spree/admin/promotion_actions/_promotion_action.html.erb +5 -5
  372. data/app/views/spree/admin/promotion_actions/edit.html.erb +3 -3
  373. data/app/views/spree/admin/promotion_actions/forms/_create_line_items.html.erb +1 -1
  374. data/app/views/spree/admin/promotion_actions/forms/_create_line_items_row.html.erb +2 -2
  375. data/app/views/spree/admin/promotion_actions/new.html.erb +4 -5
  376. data/app/views/spree/admin/promotion_rules/_promotion_rule.html.erb +14 -14
  377. data/app/views/spree/admin/promotion_rules/edit.html.erb +6 -3
  378. data/app/views/spree/admin/promotion_rules/forms/_customer_group.html.erb +9 -0
  379. data/app/views/spree/admin/promotion_rules/forms/_item_total.html.erb +12 -12
  380. data/app/views/spree/admin/promotion_rules/forms/_option_value.html.erb +1 -1
  381. data/app/views/spree/admin/promotion_rules/new.html.erb +7 -8
  382. data/app/views/spree/admin/promotions/_actions.html.erb +6 -6
  383. data/app/views/spree/admin/promotions/_filters.html.erb +5 -5
  384. data/app/views/spree/admin/promotions/_form.html.erb +3 -3
  385. data/app/views/spree/admin/promotions/_rules.html.erb +12 -19
  386. data/app/views/spree/admin/promotions/_sidebar.html.erb +25 -25
  387. data/app/views/spree/admin/promotions/_table_filter_dropdown.html.erb +1 -1
  388. data/app/views/spree/admin/promotions/_table_row.html.erb +4 -4
  389. data/app/views/spree/admin/promotions/edit.html.erb +6 -6
  390. data/app/views/spree/admin/promotions/form/_kind.html.erb +13 -13
  391. data/app/views/spree/admin/promotions/index.html.erb +1 -1
  392. data/app/views/spree/admin/promotions/show.html.erb +3 -3
  393. data/app/views/spree/admin/properties/_form.html.erb +1 -1
  394. data/app/views/spree/admin/properties/_table_row.html.erb +3 -3
  395. data/app/views/spree/admin/refunds/_form.html.erb +1 -1
  396. data/app/views/spree/admin/refunds/new.html.erb +5 -5
  397. data/app/views/spree/admin/reimbursement_types/_form.html.erb +1 -1
  398. data/app/views/spree/admin/reimbursements/edit.html.erb +7 -7
  399. data/app/views/spree/admin/reimbursements/show.html.erb +3 -3
  400. data/app/views/spree/admin/reports/new.html.erb +5 -6
  401. data/app/views/spree/admin/return_authorizations/_table_row.html.erb +2 -2
  402. data/app/views/spree/admin/return_authorizations/filters.html.erb +2 -2
  403. data/app/views/spree/admin/roles/_form.html.erb +1 -1
  404. data/app/views/spree/admin/shared/_alerts.html.erb +5 -5
  405. data/app/views/spree/admin/shared/_analytics_loader_skeleton.html.erb +24 -28
  406. data/app/views/spree/admin/shared/_back_to_dashboard.html.erb +1 -1
  407. data/app/views/spree/admin/shared/_breadcrumbs.html.erb +2 -2
  408. data/app/views/spree/admin/shared/_bulk_modal.html.erb +8 -9
  409. data/app/views/spree/admin/shared/_calculator_fields.html.erb +2 -2
  410. data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +4 -4
  411. data/app/views/spree/admin/shared/_content_header.html.erb +6 -6
  412. data/app/views/spree/admin/shared/_dialog.html.erb +2 -2
  413. data/app/views/spree/admin/shared/_drawer.html.erb +2 -2
  414. data/app/views/spree/admin/shared/_edit_resource.html.erb +2 -2
  415. data/app/views/spree/admin/shared/_edit_resource_in_drawer.html.erb +13 -0
  416. data/app/views/spree/admin/shared/_error_messages.html.erb +1 -1
  417. data/app/views/spree/admin/shared/_export_modal.html.erb +2 -2
  418. data/app/views/spree/admin/shared/_filter_badge_template.erb +1 -1
  419. data/app/views/spree/admin/shared/_filters_button.html.erb +1 -1
  420. data/app/views/spree/admin/shared/_filters_search_bar.html.erb +3 -10
  421. data/app/views/spree/admin/shared/_footer.html.erb +1 -1
  422. data/app/views/spree/admin/shared/_growth_rate_badge.html.erb +4 -4
  423. data/app/views/spree/admin/shared/_head.html.erb +5 -13
  424. data/app/views/spree/admin/shared/_header.html.erb +10 -22
  425. data/app/views/spree/admin/shared/_index_table_options.html.erb +26 -11
  426. data/app/views/spree/admin/shared/_internal_note.html.erb +41 -0
  427. data/app/views/spree/admin/shared/_map.html.erb +1 -1
  428. data/app/views/spree/admin/shared/_media_asset.html.erb +3 -3
  429. data/app/views/spree/admin/shared/_media_form.html.erb +4 -4
  430. data/app/views/spree/admin/shared/_modal.html.erb +4 -8
  431. data/app/views/spree/admin/shared/_multi_product_picker.html.erb +3 -3
  432. data/app/views/spree/admin/shared/_navigation.html.erb +2 -4
  433. data/app/views/spree/admin/shared/_navigation_item.html.erb +6 -10
  434. data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +1 -1
  435. data/app/views/spree/admin/shared/_new_resource.html.erb +2 -2
  436. data/app/views/spree/admin/shared/_no_image.html.erb +2 -2
  437. data/app/views/spree/admin/shared/_no_resource_found.html.erb +3 -3
  438. data/app/views/spree/admin/shared/_page_alerts.html.erb +1 -1
  439. data/app/views/spree/admin/shared/_page_tabs.html.erb +1 -1
  440. data/app/views/spree/admin/shared/_preferences.html.erb +3 -3
  441. data/app/views/spree/admin/shared/_product_image.html.erb +2 -2
  442. data/app/views/spree/admin/shared/_refunds.html.erb +1 -1
  443. data/app/views/spree/admin/shared/_seo.html.erb +10 -10
  444. data/app/views/spree/admin/shared/_sidebar.html.erb +20 -3
  445. data/app/views/spree/admin/shared/_spinner.html.erb +3 -2
  446. data/app/views/spree/admin/shared/_turbo_confirm_dialog.html.erb +23 -0
  447. data/app/views/spree/admin/shared/_user.html.erb +5 -5
  448. data/app/views/spree/admin/shared/_user_dropdown.html.erb +5 -5
  449. data/app/views/spree/admin/shared/devise/_links.html.erb +3 -3
  450. data/app/views/spree/admin/shared/named_types/_form.html.erb +1 -1
  451. data/app/views/spree/admin/shared/sidebar/_customers_nav.html.erb +2 -2
  452. data/app/views/spree/admin/shared/sidebar/_enterprise_edition_notice.html.erb +2 -2
  453. data/app/views/spree/admin/shared/sidebar/_orders_nav.html.erb +1 -1
  454. data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +2 -2
  455. data/app/views/spree/admin/shared/sidebar/_promotions_nav.html.erb +2 -2
  456. data/app/views/spree/admin/shared/sidebar/_returns_nav.html.erb +1 -1
  457. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +7 -7
  458. data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +7 -7
  459. data/app/views/spree/admin/shared/sidebar/_storefront_nav.html.erb +2 -2
  460. data/app/views/spree/admin/shared/sidebar/_vendors_nav.html.erb +2 -2
  461. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +13 -13
  462. data/app/views/spree/admin/shipments/edit.html.erb +12 -12
  463. data/app/views/spree/admin/shipments/split.html.erb +6 -6
  464. data/app/views/spree/admin/shipping_categories/_form.html.erb +1 -1
  465. data/app/views/spree/admin/shipping_categories/_table_row.html.erb +1 -1
  466. data/app/views/spree/admin/shipping_methods/_form.html.erb +3 -3
  467. data/app/views/spree/admin/shipping_methods/_table_row.html.erb +2 -2
  468. data/app/views/spree/admin/shipping_methods/form/_display.html.erb +7 -44
  469. data/app/views/spree/admin/shipping_methods/form/_estimated_transit_business_days.html.erb +4 -10
  470. data/app/views/spree/admin/shipping_methods/form/_shipping_categories.html.erb +2 -2
  471. data/app/views/spree/admin/shipping_methods/form/_tax_category.html.erb +2 -2
  472. data/app/views/spree/admin/shipping_methods/form/_tracking_url.html.erb +2 -2
  473. data/app/views/spree/admin/shipping_methods/form/_zones.html.erb +7 -7
  474. data/app/views/spree/admin/stock_items/_filters.html.erb +5 -5
  475. data/app/views/spree/admin/stock_items/_table_row.html.erb +5 -5
  476. data/app/views/spree/admin/stock_items/index.html.erb +1 -1
  477. data/app/views/spree/admin/stock_locations/_form.html.erb +2 -2
  478. data/app/views/spree/admin/stock_locations/_table_row.html.erb +2 -2
  479. data/app/views/spree/admin/stock_transfers/_destination_movement_form.html.erb +7 -7
  480. data/app/views/spree/admin/stock_transfers/_filters.html.erb +5 -5
  481. data/app/views/spree/admin/stock_transfers/_new_variant_modal.html.erb +4 -4
  482. data/app/views/spree/admin/stock_transfers/_table_row.html.erb +2 -2
  483. data/app/views/spree/admin/stock_transfers/index.html.erb +1 -1
  484. data/app/views/spree/admin/stock_transfers/new.html.erb +9 -9
  485. data/app/views/spree/admin/stock_transfers/show.html.erb +12 -12
  486. data/app/views/spree/admin/store_credit_categories/edit.html.erb +1 -1
  487. data/app/views/spree/admin/store_credit_categories/new.html.erb +1 -1
  488. data/app/views/spree/admin/store_credit_events/_store_credit_event.html.erb +1 -1
  489. data/app/views/spree/admin/store_credits/_form.html.erb +1 -1
  490. data/app/views/spree/admin/store_credits/edit.html.erb +1 -1
  491. data/app/views/spree/admin/store_credits/new.html.erb +3 -3
  492. data/app/views/spree/admin/store_credits/show.html.erb +23 -23
  493. data/app/views/spree/admin/stores/edit.html.erb +3 -3
  494. data/app/views/spree/admin/stores/edit_emails.html.erb +3 -3
  495. data/app/views/spree/admin/stores/form/_basic.html.erb +23 -14
  496. data/app/views/spree/admin/stores/form/_checkout.html.erb +16 -14
  497. data/app/views/spree/admin/stores/form/_checkout_links.html.erb +8 -8
  498. data/app/views/spree/admin/stores/form/_emails.html.erb +5 -5
  499. data/app/views/spree/admin/stores/form/_policies.html.erb +10 -10
  500. data/app/views/spree/admin/stores/new.html.erb +16 -16
  501. data/app/views/spree/admin/tables/_column_selector.html.erb +52 -0
  502. data/app/views/spree/admin/tables/_filter_group.html.erb +33 -0
  503. data/app/views/spree/admin/tables/_filter_row.html.erb +29 -0
  504. data/app/views/spree/admin/tables/_query_builder.html.erb +95 -0
  505. data/app/views/spree/admin/tables/_row_actions.html.erb +15 -0
  506. data/app/views/spree/admin/tables/_table.html.erb +69 -0
  507. data/app/views/spree/admin/tables/_table_body.html.erb +97 -0
  508. data/app/views/spree/admin/tables/_table_row.html.erb +44 -0
  509. data/app/views/spree/admin/tables/columns/_gift_card_status.html.erb +2 -0
  510. data/app/views/spree/admin/tables/columns/_metafield_definition_display_on.html.erb +4 -0
  511. data/app/views/spree/admin/tables/columns/_newsletter_subscriber_customer.html.erb +6 -0
  512. data/app/views/spree/admin/tables/columns/_order_payment_state.html.erb +2 -0
  513. data/app/views/spree/admin/tables/columns/_order_shipment_state.html.erb +2 -0
  514. data/app/views/spree/admin/tables/columns/_order_stock_locations.html.erb +4 -0
  515. data/app/views/spree/admin/tables/columns/_price_list_status.html.erb +1 -0
  516. data/app/views/spree/admin/tables/columns/_product_inventory.html.erb +3 -0
  517. data/app/views/spree/admin/tables/columns/_product_name.html.erb +8 -0
  518. data/app/views/spree/admin/tables/columns/_product_status.html.erb +4 -0
  519. data/app/views/spree/admin/tables/columns/_promotion_code.html.erb +8 -0
  520. data/app/views/spree/admin/tables/columns/_promotion_kind.html.erb +9 -0
  521. data/app/views/spree/admin/tables/columns/_stock_item_backorderable.html.erb +14 -0
  522. data/app/views/spree/admin/tables/columns/_stock_item_count_on_hand.html.erb +14 -0
  523. data/app/views/spree/admin/tables/columns/_stock_item_location.html.erb +6 -0
  524. data/app/views/spree/admin/tables/columns/_user_location.html.erb +2 -0
  525. data/app/views/spree/admin/tables/columns/_webhook_deliveries_stats.html.erb +3 -0
  526. data/app/views/spree/admin/tables/columns/_webhook_delivery_actions.html.erb +5 -0
  527. data/app/views/spree/admin/tables/columns/_webhook_delivery_status.html.erb +2 -0
  528. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -1
  529. data/app/views/spree/admin/tax_rates/_form.html.erb +2 -2
  530. data/app/views/spree/admin/tax_rates/_table_row.html.erb +1 -1
  531. data/app/views/spree/admin/taxonomies/_form.html.erb +1 -1
  532. data/app/views/spree/admin/taxonomies/_table_row.html.erb +3 -3
  533. data/app/views/spree/admin/taxons/_form.html.erb +24 -23
  534. data/app/views/spree/admin/taxons/_rule_form.html.erb +9 -9
  535. data/app/views/spree/admin/taxons/_rules_form.html.erb +7 -7
  536. data/app/views/spree/admin/taxons/rule_forms/_available_on.html.erb +3 -3
  537. data/app/views/spree/admin/taxons/rule_forms/_sale.html.erb +1 -1
  538. data/app/views/spree/admin/translations/edit.html.erb +3 -3
  539. data/app/views/spree/admin/translations/option_types/_form.html.erb +2 -2
  540. data/app/views/spree/admin/translations/products/_form.html.erb +1 -1
  541. data/app/views/spree/admin/user_passwords/edit.html.erb +6 -6
  542. data/app/views/spree/admin/user_passwords/new.html.erb +4 -4
  543. data/app/views/spree/admin/user_sessions/new.html.erb +6 -6
  544. data/app/views/spree/admin/users/_billing.html.erb +4 -4
  545. data/app/views/spree/admin/users/_details.html.erb +34 -25
  546. data/app/views/spree/admin/users/_filters.html.erb +10 -10
  547. data/app/views/spree/admin/users/_form.html.erb +23 -3
  548. data/app/views/spree/admin/users/_form_fields.html.erb +1 -1
  549. data/app/views/spree/admin/users/_last_order.html.erb +6 -6
  550. data/app/views/spree/admin/users/_last_order_line_item.html.erb +7 -7
  551. data/app/views/spree/admin/users/_lifetime_stats.html.erb +31 -40
  552. data/app/views/spree/admin/users/_search_result.html.erb +13 -0
  553. data/app/views/spree/admin/users/_search_results.html.erb +9 -0
  554. data/app/views/spree/admin/users/_shipping.html.erb +4 -4
  555. data/app/views/spree/admin/users/_tabs.html.erb +15 -21
  556. data/app/views/spree/admin/users/_user.html.erb +5 -5
  557. data/app/views/spree/admin/users/edit.html.erb +1 -17
  558. data/app/views/spree/admin/users/index.html.erb +1 -59
  559. data/app/views/spree/admin/users/new.html.erb +1 -1
  560. data/app/views/spree/admin/users/show.html.erb +5 -4
  561. data/app/views/spree/admin/users/update.turbo_stream.erb +24 -0
  562. data/app/views/spree/admin/variants/_search_result.html.erb +4 -4
  563. data/app/views/spree/admin/variants/_search_results.html.erb +1 -1
  564. data/app/views/spree/admin/variants/_variant.html.erb +3 -3
  565. data/app/views/spree/admin/variants/edit.html.erb +2 -2
  566. data/app/views/spree/admin/variants/form/_basic.html.erb +1 -1
  567. data/app/views/spree/admin/variants/form/_dimensions.html.erb +8 -13
  568. data/app/views/spree/admin/variants/form/_inventory.html.erb +7 -10
  569. data/app/views/spree/admin/variants/form/_pricing.html.erb +12 -12
  570. data/app/views/spree/admin/webhook_deliveries/_table_header.html.erb +8 -0
  571. data/app/views/spree/admin/webhook_deliveries/_table_row.html.erb +22 -0
  572. data/app/views/spree/admin/webhook_deliveries/index.html.erb +1 -0
  573. data/app/views/spree/admin/webhook_deliveries/show.html.erb +61 -0
  574. data/app/views/spree/admin/webhook_endpoints/_details.html.erb +50 -0
  575. data/app/views/spree/admin/webhook_endpoints/_form.html.erb +28 -0
  576. data/app/views/spree/admin/webhook_endpoints/_secret_key.html.erb +23 -0
  577. data/app/views/spree/admin/webhook_endpoints/_summary.html.erb +26 -0
  578. data/app/views/spree/admin/webhook_endpoints/_table_header.html.erb +7 -0
  579. data/app/views/spree/admin/webhook_endpoints/_table_row.html.erb +24 -0
  580. data/app/views/spree/admin/webhook_endpoints/edit.html.erb +1 -0
  581. data/app/views/spree/admin/webhook_endpoints/index.html.erb +9 -0
  582. data/app/views/spree/admin/webhook_endpoints/new.html.erb +1 -0
  583. data/app/views/spree/admin/webhook_endpoints/show.html.erb +18 -0
  584. data/app/views/spree/admin/webhook_endpoints/update.turbo_stream.erb +5 -0
  585. data/app/views/spree/admin/zones/_country_members.html.erb +2 -2
  586. data/app/views/spree/admin/zones/_form.html.erb +2 -2
  587. data/app/views/spree/admin/zones/_state_members.html.erb +3 -3
  588. data/app/views/spree/admin/zones/_table_row.html.erb +2 -2
  589. data/config/importmap.rb +0 -2
  590. data/config/initializers/spree_admin_navigation.rb +47 -60
  591. data/config/initializers/spree_admin_tables.rb +1622 -0
  592. data/config/locales/en.yml +89 -8
  593. data/config/routes.rb +61 -45
  594. data/config/tailwind.config.js +14 -0
  595. data/lib/generators/spree/admin/install/install_generator.rb +34 -2
  596. data/lib/generators/spree/admin/install/templates/app/assets/tailwind/spree_admin.css.tt +46 -0
  597. data/lib/generators/spree/admin/scaffold/scaffold_generator.rb +4 -3
  598. data/lib/generators/spree/admin/scaffold/templates/navigation_initializer.rb.tt +9 -0
  599. data/lib/generators/spree/admin/scaffold/templates/table_initializer.rb.tt +27 -0
  600. data/lib/generators/spree/admin/scaffold/templates/views/_form.html.erb.tt +1 -1
  601. data/lib/generators/spree/admin/scaffold/templates/views/index.html.erb.tt +1 -1
  602. data/lib/spree/admin/engine.rb +101 -11
  603. data/lib/spree/admin/runtime_configuration.rb +5 -4
  604. data/lib/spree/admin/tailwind_helper.rb +33 -0
  605. data/lib/spree/admin/testing_support/capybara_utils.rb +41 -0
  606. data/lib/spree/admin.rb +7 -4
  607. data/lib/tasks/tailwind.rake +95 -0
  608. metadata +225 -241
  609. data/app/assets/stylesheets/spree/admin/actiontext.css +0 -36
  610. data/app/assets/stylesheets/spree/admin/application.scss +0 -46
  611. data/app/assets/stylesheets/spree/admin/components/_alerts.scss +0 -69
  612. data/app/assets/stylesheets/spree/admin/components/_badges.scss +0 -122
  613. data/app/assets/stylesheets/spree/admin/components/_bulk_panel.scss +0 -81
  614. data/app/assets/stylesheets/spree/admin/components/_buttons.scss +0 -178
  615. data/app/assets/stylesheets/spree/admin/components/_cards.scss +0 -146
  616. data/app/assets/stylesheets/spree/admin/components/_dialogs.scss +0 -210
  617. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +0 -151
  618. data/app/assets/stylesheets/spree/admin/components/_filters.scss +0 -97
  619. data/app/assets/stylesheets/spree/admin/components/_line_items_form.scss +0 -32
  620. data/app/assets/stylesheets/spree/admin/components/_main.scss +0 -87
  621. data/app/assets/stylesheets/spree/admin/components/_media_form.scss +0 -111
  622. data/app/assets/stylesheets/spree/admin/components/_modals.scss +0 -45
  623. data/app/assets/stylesheets/spree/admin/components/_navbar.scss +0 -6
  624. data/app/assets/stylesheets/spree/admin/components/_navigation.scss +0 -51
  625. data/app/assets/stylesheets/spree/admin/components/_search_picker.scss +0 -47
  626. data/app/assets/stylesheets/spree/admin/components/_seo_form.scss +0 -16
  627. data/app/assets/stylesheets/spree/admin/components/_sidebar.scss +0 -693
  628. data/app/assets/stylesheets/spree/admin/components/_sortable_tree.scss +0 -63
  629. data/app/assets/stylesheets/spree/admin/components/_tables.scss +0 -230
  630. data/app/assets/stylesheets/spree/admin/components/_tooltips.scss +0 -20
  631. data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +0 -206
  632. data/app/assets/stylesheets/spree/admin/components/_wizard.scss +0 -27
  633. data/app/assets/stylesheets/spree/admin/global/_variables.scss +0 -242
  634. data/app/assets/stylesheets/spree/admin/plugins/_dropdown.scss +0 -102
  635. data/app/assets/stylesheets/spree/admin/plugins/_items.scss +0 -115
  636. data/app/assets/stylesheets/spree/admin/plugins/_tinymce_custom.scss +0 -74
  637. data/app/assets/stylesheets/spree/admin/plugins/_trix_custom.scss +0 -115
  638. data/app/assets/stylesheets/spree/admin/plugins/plugins/checkbox_options.scss +0 -5
  639. data/app/assets/stylesheets/spree/admin/plugins/plugins/clear_button.scss +0 -30
  640. data/app/assets/stylesheets/spree/admin/plugins/plugins/drag_drop.scss +0 -16
  641. data/app/assets/stylesheets/spree/admin/plugins/plugins/dropdown_header.scss +0 -23
  642. data/app/assets/stylesheets/spree/admin/plugins/plugins/dropdown_input.scss +0 -47
  643. data/app/assets/stylesheets/spree/admin/plugins/plugins/input_autogrow.scss +0 -18
  644. data/app/assets/stylesheets/spree/admin/plugins/plugins/optgroup_columns.scss +0 -23
  645. data/app/assets/stylesheets/spree/admin/plugins/plugins/remove_button.scss +0 -44
  646. data/app/assets/stylesheets/spree/admin/plugins/tom-select.bootstrap4.scss +0 -220
  647. data/app/assets/stylesheets/spree/admin/plugins/tom-select.bootstrap5.scss +0 -274
  648. data/app/assets/stylesheets/spree/admin/plugins/tom-select.default.scss +0 -87
  649. data/app/assets/stylesheets/spree/admin/plugins/tom-select.scss +0 -175
  650. data/app/assets/stylesheets/spree/admin/plugins/uppy_fixes.scss +0 -74
  651. data/app/assets/stylesheets/spree/admin/shared/_base.scss +0 -737
  652. data/app/assets/stylesheets/spree/admin/shared/_forms.scss +0 -194
  653. data/app/assets/stylesheets/spree/admin/views/_dashboard.scss +0 -48
  654. data/app/assets/stylesheets/spree/admin/views/_page_builder.scss +0 -246
  655. data/app/controllers/concerns/spree/admin/page_builder_concern.rb +0 -44
  656. data/app/controllers/concerns/spree/admin/storefront_breadcrumb_concern.rb +0 -12
  657. data/app/controllers/spree/admin/page_blocks_controller.rb +0 -58
  658. data/app/controllers/spree/admin/page_links_controller.rb +0 -60
  659. data/app/controllers/spree/admin/page_sections_controller.rb +0 -82
  660. data/app/controllers/spree/admin/pages_controller.rb +0 -39
  661. data/app/controllers/spree/admin/storefront_controller.rb +0 -41
  662. data/app/controllers/spree/admin/themes_controller.rb +0 -86
  663. data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +0 -59
  664. data/app/helpers/spree/admin/page_builder_helper.rb +0 -125
  665. data/app/helpers/spree/admin/themes_helper.rb +0 -9
  666. data/app/helpers/spree/admin/webhooks_subscribers_helper.rb +0 -31
  667. data/app/javascript/spree/admin/helpers/bootstrap.js +0 -51
  668. data/app/views/kaminari/admin-twitter-bootstrap-4/_first_page.html.erb +0 -11
  669. data/app/views/kaminari/admin-twitter-bootstrap-4/_gap.html.erb +0 -12
  670. data/app/views/kaminari/admin-twitter-bootstrap-4/_last_page.html.erb +0 -11
  671. data/app/views/kaminari/admin-twitter-bootstrap-4/_next_page.html.erb +0 -12
  672. data/app/views/kaminari/admin-twitter-bootstrap-4/_page.html.erb +0 -18
  673. data/app/views/kaminari/admin-twitter-bootstrap-4/_paginator.html.erb +0 -17
  674. data/app/views/kaminari/admin-twitter-bootstrap-4/_prev_page.html.erb +0 -12
  675. data/app/views/layouts/spree/page_builder.html.erb +0 -46
  676. data/app/views/spree/admin/dashboard/_store_preview.html.erb +0 -39
  677. data/app/views/spree/admin/orders/edit.html.erb +0 -22
  678. data/app/views/spree/admin/page_blocks/_form_tab_buttons.html.erb +0 -5
  679. data/app/views/spree/admin/page_blocks/create.turbo_stream.erb +0 -4
  680. data/app/views/spree/admin/page_blocks/destroy.turbo_stream.erb +0 -9
  681. data/app/views/spree/admin/page_blocks/edit.html.erb +0 -43
  682. data/app/views/spree/admin/page_blocks/forms/_brand.html.erb +0 -15
  683. data/app/views/spree/admin/page_blocks/forms/_brand_logo.html.erb +0 -4
  684. data/app/views/spree/admin/page_blocks/forms/_buttons.html.erb +0 -13
  685. data/app/views/spree/admin/page_blocks/forms/_heading.html.erb +0 -28
  686. data/app/views/spree/admin/page_blocks/forms/_image.html.erb +0 -10
  687. data/app/views/spree/admin/page_blocks/forms/_link.html.erb +0 -19
  688. data/app/views/spree/admin/page_blocks/forms/_mega_nav.html.erb +0 -14
  689. data/app/views/spree/admin/page_blocks/forms/_mega_nav_with_subcategories.html.erb +0 -9
  690. data/app/views/spree/admin/page_blocks/forms/_metafields.html.erb +0 -35
  691. data/app/views/spree/admin/page_blocks/forms/_nav.html.erb +0 -6
  692. data/app/views/spree/admin/page_blocks/forms/_newsletter_form.html.erb +0 -20
  693. data/app/views/spree/admin/page_blocks/forms/_price.html.erb +0 -15
  694. data/app/views/spree/admin/page_blocks/forms/_share.html.erb +0 -5
  695. data/app/views/spree/admin/page_blocks/forms/_subheading.html.erb +0 -26
  696. data/app/views/spree/admin/page_blocks/forms/_text.html.erb +0 -21
  697. data/app/views/spree/admin/page_blocks/forms/_title.html.erb +0 -20
  698. data/app/views/spree/admin/page_blocks/forms/_variant_picker.html.erb +0 -10
  699. data/app/views/spree/admin/page_blocks/forms/products/_buy_buttons.html.erb +0 -10
  700. data/app/views/spree/admin/page_blocks/forms/products/_description.html.erb +0 -0
  701. data/app/views/spree/admin/page_blocks/forms/products/_quantity_selector.html.erb +0 -10
  702. data/app/views/spree/admin/page_blocks/move_higher.turbo_stream.erb +0 -4
  703. data/app/views/spree/admin/page_blocks/move_lower.turbo_stream.erb +0 -4
  704. data/app/views/spree/admin/page_blocks/show.html.erb +0 -1
  705. data/app/views/spree/admin/page_blocks/update.turbo_stream.erb +0 -6
  706. data/app/views/spree/admin/page_builder/_add_block.html.erb +0 -22
  707. data/app/views/spree/admin/page_builder/_color_palette.html.erb +0 -17
  708. data/app/views/spree/admin/page_builder/_color_picker.html.erb +0 -26
  709. data/app/views/spree/admin/page_builder/_header.html.erb +0 -113
  710. data/app/views/spree/admin/page_builder/_labeled_range_input.html.erb +0 -10
  711. data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +0 -17
  712. data/app/views/spree/admin/page_builder/_range_input.html.erb +0 -12
  713. data/app/views/spree/admin/page_builder/_sidebar.html.erb +0 -14
  714. data/app/views/spree/admin/page_builder/_sidebar_block.html.erb +0 -30
  715. data/app/views/spree/admin/page_builder/_sidebar_colors.html.erb +0 -86
  716. data/app/views/spree/admin/page_builder/_sidebar_fonts.html.erb +0 -86
  717. data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +0 -44
  718. data/app/views/spree/admin/page_builder/_sidebar_sections.html.erb +0 -43
  719. data/app/views/spree/admin/page_builder/_sidebar_sections_toolbar.html.erb +0 -180
  720. data/app/views/spree/admin/page_links/_form.html.erb +0 -10
  721. data/app/views/spree/admin/page_links/_linkable_type_dropdown.html.erb +0 -15
  722. data/app/views/spree/admin/page_links/_list.html.erb +0 -36
  723. data/app/views/spree/admin/page_links/_refresh_theme_preview.turbo_stream.erb +0 -5
  724. data/app/views/spree/admin/page_links/create.turbo_stream.erb +0 -10
  725. data/app/views/spree/admin/page_links/destroy.turbo_stream.erb +0 -15
  726. data/app/views/spree/admin/page_links/edit.html.erb +0 -29
  727. data/app/views/spree/admin/page_links/update.turbo_stream.erb +0 -12
  728. data/app/views/spree/admin/page_sections/_form_tab_buttons.html.erb +0 -8
  729. data/app/views/spree/admin/page_sections/create.turbo_stream.erb +0 -11
  730. data/app/views/spree/admin/page_sections/destroy.turbo_stream.erb +0 -16
  731. data/app/views/spree/admin/page_sections/edit.html.erb +0 -39
  732. data/app/views/spree/admin/page_sections/fields/_background_color.html.erb +0 -6
  733. data/app/views/spree/admin/page_sections/fields/_border_bottom_width.html.erb +0 -5
  734. data/app/views/spree/admin/page_sections/fields/_border_color.html.erb +0 -7
  735. data/app/views/spree/admin/page_sections/fields/_border_top_width.html.erb +0 -6
  736. data/app/views/spree/admin/page_sections/fields/_bottom_padding.html.erb +0 -5
  737. data/app/views/spree/admin/page_sections/fields/_button.html.erb +0 -15
  738. data/app/views/spree/admin/page_sections/fields/_header_layout.html.erb +0 -26
  739. data/app/views/spree/admin/page_sections/fields/_height.html.erb +0 -6
  740. data/app/views/spree/admin/page_sections/fields/_text_color.html.erb +0 -7
  741. data/app/views/spree/admin/page_sections/fields/_top_padding.html.erb +0 -6
  742. data/app/views/spree/admin/page_sections/forms/_announcement_bar.html.erb +0 -5
  743. data/app/views/spree/admin/page_sections/forms/_brand_story.html.erb +0 -0
  744. data/app/views/spree/admin/page_sections/forms/_breadcrumbs.html.erb +0 -0
  745. data/app/views/spree/admin/page_sections/forms/_collection_banner.html.erb +0 -0
  746. data/app/views/spree/admin/page_sections/forms/_custom_code.html.erb +0 -4
  747. data/app/views/spree/admin/page_sections/forms/_featured_posts.html.erb +0 -33
  748. data/app/views/spree/admin/page_sections/forms/_featured_product.html.erb +0 -4
  749. data/app/views/spree/admin/page_sections/forms/_featured_taxon.html.erb +0 -59
  750. data/app/views/spree/admin/page_sections/forms/_featured_taxons.html.erb +0 -13
  751. data/app/views/spree/admin/page_sections/forms/_footer.html.erb +0 -20
  752. data/app/views/spree/admin/page_sections/forms/_header.html.erb +0 -12
  753. data/app/views/spree/admin/page_sections/forms/_image_banner.html.erb +0 -13
  754. data/app/views/spree/admin/page_sections/forms/_image_with_text.html.erb +0 -28
  755. data/app/views/spree/admin/page_sections/forms/_main_password_footer.html.erb +0 -9
  756. data/app/views/spree/admin/page_sections/forms/_main_password_header.erb +0 -13
  757. data/app/views/spree/admin/page_sections/forms/_newsletter.html.erb +0 -15
  758. data/app/views/spree/admin/page_sections/forms/_page_title.html.erb +0 -4
  759. data/app/views/spree/admin/page_sections/forms/_post_details.html.erb +0 -0
  760. data/app/views/spree/admin/page_sections/forms/_post_grid.html.erb +0 -0
  761. data/app/views/spree/admin/page_sections/forms/_product_details.html.erb +0 -1
  762. data/app/views/spree/admin/page_sections/forms/_product_grid.html.erb +0 -1
  763. data/app/views/spree/admin/page_sections/forms/_related_products.html.erb +0 -32
  764. data/app/views/spree/admin/page_sections/forms/_rich_text.html.erb +0 -0
  765. data/app/views/spree/admin/page_sections/forms/_taxon_banner.html.erb +0 -0
  766. data/app/views/spree/admin/page_sections/forms/_taxon_grid.html.erb +0 -5
  767. data/app/views/spree/admin/page_sections/forms/_video.html.erb +0 -15
  768. data/app/views/spree/admin/page_sections/move_higher.turbo_stream.erb +0 -7
  769. data/app/views/spree/admin/page_sections/move_lower.turbo_stream.erb +0 -7
  770. data/app/views/spree/admin/page_sections/new.html.erb +0 -28
  771. data/app/views/spree/admin/page_sections/remove_attachment.turbo_stream.erb +0 -4
  772. data/app/views/spree/admin/page_sections/restore_design_settings_to_defaults.turbo_stream.erb +0 -4
  773. data/app/views/spree/admin/page_sections/show.html.erb +0 -1
  774. data/app/views/spree/admin/page_sections/update.turbo_stream.erb +0 -10
  775. data/app/views/spree/admin/pages/_form.html.erb +0 -20
  776. data/app/views/spree/admin/pages/_table_header.html.erb +0 -6
  777. data/app/views/spree/admin/pages/_table_row.html.erb +0 -28
  778. data/app/views/spree/admin/pages/edit.html.erb +0 -13
  779. data/app/views/spree/admin/pages/filters.html.erb +0 -7
  780. data/app/views/spree/admin/pages/index.html.erb +0 -11
  781. data/app/views/spree/admin/pages/new.html.erb +0 -1
  782. data/app/views/spree/admin/products/_bulk_operations.html.erb +0 -78
  783. data/app/views/spree/admin/products/bulk_modal.html.erb +0 -16
  784. data/app/views/spree/admin/storefront/edit.html.erb +0 -89
  785. data/app/views/spree/admin/themes/_theme.html.erb +0 -56
  786. data/app/views/spree/admin/themes/_theme_preview_image.html.erb +0 -17
  787. data/app/views/spree/admin/themes/edit.html.erb +0 -14
  788. data/app/views/spree/admin/themes/index.html.erb +0 -80
  789. data/app/views/spree/admin/themes/update.turbo_stream.erb +0 -1
  790. data/app/views/spree/admin/users/bulk_modal.html.erb +0 -14
  791. data/app/views/spree/admin/webhook_events/_webhook_event.html.erb +0 -17
  792. data/app/views/spree/admin/webhooks_subscribers/_form.html.erb +0 -68
  793. data/app/views/spree/admin/webhooks_subscribers/_table_header.html.erb +0 -7
  794. data/app/views/spree/admin/webhooks_subscribers/_table_row.html.erb +0 -22
  795. data/app/views/spree/admin/webhooks_subscribers/edit.html.erb +0 -1
  796. data/app/views/spree/admin/webhooks_subscribers/index.html.erb +0 -10
  797. data/app/views/spree/admin/webhooks_subscribers/show.html.erb +0 -65
  798. data/config/initializers/dartsass.rb +0 -3
  799. data/config/initializers/form_builder.rb +0 -10
  800. data/lib/generators/spree/admin/scaffold/templates/views/_filters.html.erb.tt +0 -13
  801. data/lib/generators/spree/admin/scaffold/templates/views/_table_header.html.erb.tt +0 -5
  802. data/lib/generators/spree/admin/scaffold/templates/views/_table_row.html.erb.tt +0 -11
  803. data/vendor/javascript/bootstrap--dist--js--bootstrap.bundle.min.js.js +0 -8
  804. data/vendor/javascript/jquery.min.js +0 -2
  805. /data/app/views/spree/admin/{webhooks_subscribers → customer_groups}/new.html.erb +0 -0
@@ -1,8 +1,6 @@
1
1
  module Spree
2
2
  module Admin
3
3
  module BaseHelper
4
- include Spree::ImagesHelper
5
-
6
4
  def render_admin_partials(section, options = {})
7
5
  Spree.admin.partials.send(section.to_s.gsub('_partials', '').to_sym).map do |partial|
8
6
  render partial, options
@@ -39,7 +37,7 @@ module Spree
39
37
  end
40
38
 
41
39
  def settings_active?
42
- Spree::Deprecation.warn('settings_active? is deprecated and will be removed in Spree 6.0. Please use settings_area? instead')
40
+ Spree::Deprecation.warn('settings_active? is deprecated and will be removed in Spree 5.5. Please use settings_area? instead')
43
41
  @settings_active || %w[admin_users audits custom_domains exports invitations oauth_applications
44
42
  payment_methods refund_reasons reimbursement_types return_authorization_reasons roles
45
43
  shipping_categories shipping_methods stock_locations store_credit_categories
@@ -51,34 +49,6 @@ module Spree
51
49
  @available_countries_iso ||= current_store.countries_available_for_checkout.pluck(:iso)
52
50
  end
53
51
 
54
- # render an avatar for a user
55
- # if user doesn't have an avatar, the user's initials will be displayed on a rounded background
56
- # @param user [Spree::User] the user to render the avatar for
57
- # @param options [Hash] the options for the avatar
58
- # @option options [Integer] :width the width of the avatar, default: 128
59
- # @option options [Integer] :height the height of the avatar, default: 128
60
- # @option options [String] :class the CSS class(es) of the avatar, default: 'avatar'
61
- # @return [String] the avatar
62
- def render_avatar(user, options = {})
63
- return unless user.present?
64
-
65
- options[:width] ||= 128
66
- options[:height] ||= 128
67
- options[:class] ||= 'avatar'
68
-
69
- if user.respond_to?(:avatar) && user.avatar.attached? && user.avatar.variable?
70
- spree_image_tag(
71
- user.avatar,
72
- width: options[:width],
73
- height: options[:height],
74
- class: options[:class],
75
- style: "width: #{options[:width]}px; height: #{options[:height]}px;"
76
- )
77
- else
78
- content_tag(:div, user.name&.initials, class: options[:class], style: "width: #{options[:width]}px; height: #{options[:height]}px;")
79
- end
80
- end
81
-
82
52
  # returns the available display on options, eg backend, frontend, both
83
53
  # @return [Array<Array<String, String>>] the available display on options
84
54
  def display_on_options(model = nil)
@@ -96,7 +66,15 @@ module Spree
96
66
  # @return [String] the error message
97
67
  def error_message_on(object, method, _options = {})
98
68
  object = convert_to_model(object)
99
- obj = object.respond_to?(:errors) ? object : instance_variable_get("@#{object}")
69
+
70
+ obj = if object.respond_to?(:errors)
71
+ object
72
+ else
73
+ # Handle nested attributes like "variant[prices_attributes][0]"
74
+ # by extracting the base object name
75
+ object_name = object.to_s.split('[').first
76
+ instance_variable_get("@#{object_name}") if object_name.present?
77
+ end
100
78
 
101
79
  if obj && obj.errors[method].present?
102
80
  errors = safe_join(obj.errors[method], '<br />'.html_safe)
@@ -157,14 +135,16 @@ module Spree
157
135
  render 'spree/admin/preferences/password_field', form: form, field: field, options: options
158
136
  when :text
159
137
  form.text_area(field, preference_field_options(options))
138
+ when :datetime
139
+ form.datetime_field(field, preference_field_options(options))
160
140
  else
161
141
  form.text_field(field, preference_field_options(options))
162
142
  end
163
143
  end
164
144
 
165
- # returns the options for a preference field, according to the type of the preference (number, decimal, boolean, string, password, text)
145
+ # returns the options for a preference field, according to the type of the preference (number, decimal, boolean, string, password, text, datetime)
166
146
  # @param options [Hash] the options for the field
167
- # @option options [Symbol] :type the type of the preference, eg. :integer, :decimal, :boolean, :string, :password, :text
147
+ # @option options [Symbol] :type the type of the preference, eg. :integer, :decimal, :boolean, :string, :password, :text, :datetime
168
148
  # @option options [Boolean] :disabled whether the field is disabled
169
149
  # @return [Hash] the options for the field
170
150
  def preference_field_options(options)
@@ -172,12 +152,12 @@ module Spree
172
152
  when :integer
173
153
  {
174
154
  size: 10,
175
- class: 'input_integer form-control'
155
+ class: 'input_integer form-input'
176
156
  }
177
157
  when :decimal
178
158
  {
179
159
  size: 10,
180
- class: 'input_decimal form-control',
160
+ class: 'input_decimal form-input',
181
161
  step: options[:step] || 0.01
182
162
  }
183
163
  when :boolean
@@ -187,23 +167,27 @@ module Spree
187
167
  when :string
188
168
  {
189
169
  size: 10,
190
- class: 'input_string form-control'
170
+ class: 'input_string form-input'
191
171
  }
192
172
  when :password
193
173
  {
194
174
  size: 10,
195
- class: 'password_string form-control'
175
+ class: 'password_string form-input'
196
176
  }
197
177
  when :text
198
178
  {
199
179
  rows: 15,
200
180
  cols: 85,
201
- class: 'form-control'
181
+ class: 'form-input'
182
+ }
183
+ when :datetime
184
+ {
185
+ class: 'form-input'
202
186
  }
203
187
  else
204
188
  {
205
189
  size: 10,
206
- class: 'input_string form-control'
190
+ class: 'input_string form-input'
207
191
  }
208
192
  end
209
193
 
@@ -234,7 +218,7 @@ module Spree
234
218
  class: 'form-group', id: [object.class.to_s.parameterize, 'preference', key].join('-'))
235
219
  else
236
220
  if object.preference_type(key).to_sym == :boolean
237
- content_tag(:div, class: 'form-group custom-control custom-checkbox') do
221
+ content_tag(:div, class: 'form-group custom-control form-checkbox') do
238
222
  preference_field_for(form, "preferred_#{key}", type: object.preference_type(key)) +
239
223
  form.label(
240
224
  "preferred_#{key}",
@@ -264,7 +248,8 @@ module Spree
264
248
  # @option options [String] :title the title of the button
265
249
  # @return [String] the button
266
250
  def clipboard_button(options = {})
267
- options[:class] ||= 'btn btn-clipboard'
251
+ options[:class] ||= 'btn btn-light btn-sm btn-clipboard'
252
+ options[:icon_class] ||= 'mr-0 text-sm'
268
253
  options[:type] ||= 'button'
269
254
  options[:data] ||= {}
270
255
  options[:data][:action] = 'clipboard#copy'
@@ -273,7 +258,7 @@ module Spree
273
258
  options[:aria_label] ||= Spree.t('admin.copy_to_clipboard') # screen-reader label
274
259
 
275
260
  content_tag(:button, options) do
276
- icon('copy', class: 'mr-0 font-size-sm') + tooltip(Spree.t('admin.copy_to_clipboard'))
261
+ icon('copy', class: options[:icon_class]) + tooltip(Spree.t('admin.copy_to_clipboard'))
277
262
  end
278
263
  end
279
264
 
@@ -283,15 +268,17 @@ module Spree
283
268
  # @option options [String] :class the CSS class(es) of the component
284
269
  # @option options [Hash] :data the data attributes for the component
285
270
  # @option options [String] :title the title of the component
271
+ # @option options [String] :button_class the CSS class(es) of the button
272
+ # @option options [String] :icon_class the CSS class(es) of the icon
286
273
  # @return [String] the component
287
274
  def clipboard_component(text, options = {})
288
275
  options[:data] ||= {}
289
276
  options[:data][:controller] = 'clipboard'
290
- options[:data][:clipboard_success_content_value] ||= raw(icon('check', class: 'mr-0 font-size-sm'))
277
+ options[:data][:clipboard_success_content_value] ||= raw(icon('check', class: options[:icon_class]))
291
278
 
292
- content_tag(:span, data: options[:data]) do
279
+ content_tag(:span, data: options[:data], class: options[:class]) do
293
280
  hidden_field_tag(:clipboard_source, text, data: { clipboard_target: 'source' }) +
294
- clipboard_button
281
+ clipboard_button(class: options[:button_class], icon_class: options[:icon_class])
295
282
  end
296
283
  end
297
284
 
@@ -307,7 +294,9 @@ module Spree
307
294
  percentage = (value.to_f / max * 100).round
308
295
 
309
296
  content_tag(:div, class: 'progress') do
310
- content_tag(:div, { class: 'progress-bar', role: 'progressbar', style: "width: #{percentage}%", aria: { valuenow: value, valuemin: min, valuemax: max } }) do
297
+ content_tag(:div,
298
+ { class: 'progress-bar', role: 'progressbar', style: "width: #{percentage}%",
299
+ aria: { valuenow: value, valuemin: min, valuemax: max } }) do
311
300
  end
312
301
  end
313
302
  end
@@ -337,6 +326,7 @@ module Spree
337
326
  # @return [String] the local time ago
338
327
  def spree_time_ago(time, options = {})
339
328
  return '' if time.blank?
329
+
340
330
  options[:data] ||= {}
341
331
  options[:data][:controller] = 'tooltip'
342
332
 
@@ -356,6 +346,37 @@ module Spree
356
346
  end
357
347
  end
358
348
  end
349
+
350
+ # Formats a preference value for display
351
+ # Handles special cases like zone_ids, user_ids, country_id that should show names instead of IDs
352
+ # @param key [Symbol] the preference key
353
+ # @param value [Object] the preference value
354
+ # @return [String] the formatted value
355
+ def format_preference_value(key, value)
356
+ return Spree.t(:unlimited) if value.blank?
357
+
358
+ case key
359
+ when :zone_ids
360
+ zone_ids = Array(value).reject(&:blank?).map(&:to_i)
361
+ return Spree.t(:none) if zone_ids.empty?
362
+
363
+ Spree::Zone.where(id: zone_ids).pluck(:name).join(', ')
364
+ when :user_ids
365
+ user_ids = Array(value).reject(&:blank?).map(&:to_i)
366
+ return Spree.t(:none) if user_ids.empty?
367
+
368
+ Spree.user_class.where(id: user_ids).map { |u| u.try(:email) || u.id }.join(', ')
369
+ when :customer_group_ids
370
+ customer_group_ids = Array(value).reject(&:blank?).map(&:to_i)
371
+ return Spree.t(:none) if customer_group_ids.empty?
372
+
373
+ Spree::CustomerGroup.where(id: customer_group_ids).pluck(:name).join(', ')
374
+ when :country_id
375
+ Spree::Country.find_by(id: value)&.name || value
376
+ else
377
+ value.is_a?(Array) ? value.reject(&:blank?).join(', ') : value
378
+ end
379
+ end
359
380
  end
360
381
  end
361
382
  end
@@ -0,0 +1,41 @@
1
+ module Spree
2
+ module Admin
3
+ module BulkEditorHelper
4
+ # Define the cell actions using Stimulus keyboard event filters
5
+ # Note: Enter, Escape, Delete, Backspace are handled via keydown->bulk-editor#handleKeydown
6
+ # since they need special logic for edit mode vs selection mode
7
+ # @return [String] the cell actions
8
+ def bulk_editor_cell_actions
9
+ [
10
+ 'focus->bulk-editor#onCellFocus',
11
+ 'blur->bulk-editor#onCellBlur',
12
+ 'mousedown->bulk-editor#onCellMouseDown',
13
+ 'mouseenter->bulk-editor#onCellMouseEnter',
14
+ 'dblclick->bulk-editor#onCellDoubleClick',
15
+ 'input->bulk-editor#markDirty',
16
+ 'keydown->bulk-editor#handleKeydown',
17
+ # Copy/Paste/Fill (Ctrl for Windows/Linux, Meta for Mac)
18
+ 'keydown.ctrl+c->bulk-editor#copy',
19
+ 'keydown.meta+c->bulk-editor#copy',
20
+ 'keydown.ctrl+v->bulk-editor#paste',
21
+ 'keydown.meta+v->bulk-editor#paste',
22
+ 'keydown.ctrl+d->bulk-editor#fillDown',
23
+ 'keydown.meta+d->bulk-editor#fillDown',
24
+ # Navigation (only works in selection mode)
25
+ 'keydown.up->bulk-editor#navigateUp',
26
+ 'keydown.down->bulk-editor#navigateDown',
27
+ 'keydown.left->bulk-editor#navigateLeft',
28
+ 'keydown.right->bulk-editor#navigateRight',
29
+ # Selection
30
+ 'keydown.shift+up->bulk-editor#selectUp',
31
+ 'keydown.shift+down->bulk-editor#selectDown',
32
+ 'keydown.shift+left->bulk-editor#selectLeft',
33
+ 'keydown.shift+right->bulk-editor#selectRight',
34
+ # Tab navigation (works in both modes)
35
+ 'keydown.tab->bulk-editor#navigateRight',
36
+ 'keydown.shift+tab->bulk-editor#navigateLeft'
37
+ ].join(' ')
38
+ end
39
+ end
40
+ end
41
+ end
@@ -4,7 +4,7 @@ module Spree
4
4
  # render a checkbox to select all items for bulk operations
5
5
  # @return [String]
6
6
  def bulk_operations_select_all_checkbox
7
- content_tag :div, class: "custom-control custom-checkbox ml-1" do
7
+ content_tag :div, class: "custom-control form-checkbox ml-1" do
8
8
  check_box_tag(
9
9
  nil,
10
10
  nil,
@@ -21,7 +21,7 @@ module Spree
21
21
  # @param object [Spree::Product, Spree::User, Spree::Order]
22
22
  # @return [String]
23
23
  def bulk_operations_checkbox(object)
24
- content_tag :div, class: "custom-control custom-checkbox ml-1" do
24
+ content_tag :div, class: "custom-control form-checkbox ml-1" do
25
25
  check_box_tag(
26
26
  "ids[]",
27
27
  object.id,
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Admin
3
+ module CodeBlockHelper
4
+ def code_block(code, options = {})
5
+ options[:language] ||= 'json'
6
+ options[:class] ||= 'm-0 block overflow-auto rounded-lg'
7
+
8
+ content_tag :div, data: { controller: 'highlight' } do
9
+ content_tag(:pre) do
10
+ content_tag(:code, class: "language-#{options[:language]} #{options[:class]}", style: options[:style], data: { highlight_target: 'code' }) do
11
+ code
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,6 +1,36 @@
1
1
  module Spree
2
2
  module Admin
3
3
  module DialogHelper
4
+ # Renders a dialog container element
5
+ # @param id [String, nil] the id of the dialog element
6
+ # @param controller_name [String] the Stimulus controller name (default: 'dialog')
7
+ # @param html_options [Hash] additional HTML attributes
8
+ # @yield the content to render inside the dialog
9
+ # @return [String] the dialog HTML
10
+ #
11
+ # @example Basic usage
12
+ # <%= dialog do %>
13
+ # <%= dialog_header("Confirm Delete") %>
14
+ # <div class="dialog-body">Are you sure?</div>
15
+ # <div class="dialog-footer">
16
+ # <%= dialog_discard_button %>
17
+ # <%= button_tag "Delete", class: "btn btn-danger" %>
18
+ # </div>
19
+ # <% end %>
20
+ #
21
+ # @example With custom id and controller
22
+ # <%= dialog(id: 'my-dialog', controller_name: 'custom-dialog') do %>
23
+ # ...
24
+ # <% end %>
25
+ def dialog(id: nil, controller_name: 'dialog', **html_options, &block)
26
+ html_options[:class] = "dialog #{html_options[:class]}".strip
27
+ html_options[:data] ||= {}
28
+ html_options[:data]["#{controller_name}-target".to_sym] = 'dialog'
29
+ html_options[:id] = id if id.present?
30
+
31
+ content_tag(:dialog, html_options, &block)
32
+ end
33
+
4
34
  def dialog_header(title, controller_name = 'dialog')
5
35
  content_tag(:div, class: 'dialog-header') do
6
36
  content_tag(:h5, title, class: 'dialog-title') + dialog_close_button(controller_name)
@@ -1,6 +1,36 @@
1
1
  module Spree
2
2
  module Admin
3
3
  module DrawerHelper
4
+ # Renders a drawer container element (slide-out panel)
5
+ # @param id [String, nil] the id of the drawer element
6
+ # @param controller_name [String] the Stimulus controller name (default: 'drawer')
7
+ # @param html_options [Hash] additional HTML attributes
8
+ # @yield the content to render inside the drawer
9
+ # @return [String] the drawer HTML
10
+ #
11
+ # @example Basic usage
12
+ # <%= drawer do %>
13
+ # <%= drawer_header("Edit Product") %>
14
+ # <div class="drawer-body">Form fields here...</div>
15
+ # <div class="drawer-footer">
16
+ # <%= drawer_discard_button %>
17
+ # <%= button_tag "Save", class: "btn btn-primary" %>
18
+ # </div>
19
+ # <% end %>
20
+ #
21
+ # @example With custom id and controller
22
+ # <%= drawer(id: 'filters-drawer', controller_name: 'dialog') do %>
23
+ # ...
24
+ # <% end %>
25
+ def drawer(id: nil, controller_name: 'drawer', **html_options, &block)
26
+ html_options[:class] = "drawer #{html_options[:class]}".strip
27
+ html_options[:data] ||= {}
28
+ html_options[:data]["#{controller_name}-target".to_sym] = 'dialog'
29
+ html_options[:id] = id if id.present?
30
+
31
+ content_tag(:dialog, html_options, &block)
32
+ end
33
+
4
34
  def drawer_header(title, controller_name = 'drawer')
5
35
  content_tag(:div, class: 'drawer-header') do
6
36
  content_tag(:h5, title, class: 'drawer-title') + drawer_close_button(controller_name)
@@ -22,13 +22,11 @@ module Spree
22
22
  end
23
23
 
24
24
  def storefront_serializer_exists?(record)
25
- serializer_class_name = "Spree::V2::Storefront::#{record.class.name.demodulize}Serializer"
26
- serializer_class_name.safe_constantize.present?
25
+ storefront_serializer_for(record).present?
27
26
  end
28
27
 
29
28
  def platform_serializer_exists?(record)
30
- serializer_class_name = "Spree::Api::V2::Platform::#{record.class.name.demodulize}Serializer"
31
- serializer_class_name.safe_constantize.present?
29
+ platform_serializer_for(record).present?
32
30
  end
33
31
 
34
32
  def serialize_to_json(record, api_type: :storefront)
@@ -45,7 +43,7 @@ module Spree
45
43
 
46
44
  serializable_hash = serializer.new(
47
45
  record,
48
- params: serializer_params(record)
46
+ params: serializer_params(record, api_type)
49
47
  ).serializable_hash
50
48
 
51
49
  JSON.pretty_generate(serializable_hash)
@@ -54,17 +52,27 @@ module Spree
54
52
  private
55
53
 
56
54
  def storefront_serializer_for(record)
57
- serializer_class_name = "Spree::V2::Storefront::#{record.class.name.demodulize}Serializer"
58
- serializer_class_name.safe_constantize
55
+ serializer_for(record, api_type: :storefront, namespace: 'Spree::V2::Storefront')
59
56
  end
60
57
 
61
58
  def platform_serializer_for(record)
62
- serializer_class_name = "Spree::Api::V2::Platform::#{record.class.name.demodulize}Serializer"
63
- serializer_class_name.safe_constantize
59
+ serializer_for(record, api_type: :platform, namespace: 'Spree::Api::V2::Platform')
64
60
  end
65
61
 
66
- def serializer_params(record)
62
+ def serializer_for(record, api_type:, namespace:)
63
+ class_name = record.class.name.demodulize
64
+ method_name = "#{api_type}_#{class_name.underscore}_serializer"
65
+ if Spree.api.respond_to?(method_name)
66
+ Spree.api.public_send(method_name)
67
+ else
68
+ serializer_class_name = "#{namespace}::#{class_name}Serializer"
69
+ serializer_class_name.safe_constantize
70
+ end
71
+ end
72
+
73
+ def serializer_params(record, api_type)
67
74
  params = {}
75
+ params[:api_type] = api_type
68
76
  params[:store] = current_store if defined?(current_store) && current_store.present?
69
77
  params[:currency] = current_currency if defined?(current_currency) && current_currency.present?
70
78
  params[:locale] = current_locale if defined?(current_locale) && current_locale.present?
@@ -5,7 +5,7 @@ module Spree
5
5
  # @param title [String, Proc] the title of the modal
6
6
  # @return [String]
7
7
  def modal_header(title)
8
- Spree::Deprecation.warn('Bootstrap modals are deprecated and will be removed in Spree 6. Please use native dialogs with `dialog_header` helper.')
8
+ Spree::Deprecation.warn('Bootstrap modals are deprecated and will be removed in Spree 5.5. Please use native dialogs with `dialog_header` helper.')
9
9
 
10
10
  title = capture(&title) if block_given?
11
11
  content_tag(:div, class: 'modal-header') do
@@ -42,7 +42,7 @@ module Spree
42
42
  selected_option = (params[:per_page].try(:to_i) || per_page_default).to_i
43
43
  selected_option_label = selected_option.to_s + icon('chevron-down', class: 'ml-1 mr-0 arrow')
44
44
 
45
- dropdown(id: 'per-page-dropdown') do
45
+ dropdown(id: 'per-page-dropdown', portal: false) do
46
46
  dropdown_toggle(class: 'btn-light btn-sm') do
47
47
  raw(selected_option_label)
48
48
  end +
@@ -136,7 +136,7 @@ module Spree
136
136
 
137
137
  button_tag(type: 'button', class: 'btn btn-light', data: { action: 'click->export-dialog#open' }) do
138
138
  icon('table-export', class: 'mr-0 mr-lg-2') +
139
- content_tag(:span, Spree.t(:export), class: 'd-none d-lg-inline')
139
+ content_tag(:span, Spree.t(:export), class: 'hidden lg:inline')
140
140
  end
141
141
  end
142
142
 
@@ -189,7 +189,7 @@ module Spree
189
189
  options.merge(
190
190
  type: button_type,
191
191
  class: "btn #{css_classes}",
192
- 'data-turbo-submits-with' => content_tag(:span, '', class: 'spinner-border spinner-border-sm', role: 'status')
192
+ 'data-turbo-submits-with' => content_tag(:span, '', class: 'inline-block w-4 h-4 border-2 border-current border-r-transparent rounded-full animate-spin', role: 'status')
193
193
  )
194
194
  )
195
195
  end
@@ -247,8 +247,8 @@ module Spree
247
247
  url = session[session_key] if session[session_key].present?
248
248
  end
249
249
 
250
- link_to url, class: 'd-flex align-items-center text-decoration-none' do
251
- content_tag(:span, icon('chevron-left', class: 'mr-0'), class: 'btn hover-gray shadow-none px-2 d-flex align-items-center shadow-none') +
250
+ link_to url, class: 'flex items-center no-underline' do
251
+ content_tag(:span, icon('chevron-left', class: 'mr-0'), class: 'btn hover:bg-gray-100 shadow-none px-2 flex items-center shadow-none') +
252
252
  content_tag(:span, label, class: 'font-size-base text-black')
253
253
  end
254
254
  end
@@ -261,7 +261,7 @@ module Spree
261
261
  def external_link_to(label, url, opts = {}, &block)
262
262
  opts[:target] ||= :blank
263
263
  opts[:rel] ||= :nofollow
264
- opts[:class] ||= "d-inline-flex align-items-center text-blue text-decoration-none"
264
+ opts[:class] ||= "inline-flex items-center text-blue-500 no-underline hover:text-blue-600 hover:bg-blue-50 p-1 rounded"
265
265
 
266
266
  if block_given?
267
267
  link_to url, opts, &block
@@ -299,7 +299,7 @@ module Spree
299
299
  # @param css [String] the css class of the help bubble
300
300
  # @return [String] the help bubble with the icon
301
301
  def help_bubble(text = '', placement = 'top', css: nil)
302
- css ||= 'text-xs text-muted cursor-default opacity-75'
302
+ css ||= 'text-gray-500 cursor-default opacity-75'
303
303
  content_tag :span, data: { controller: 'tooltip', tooltip_placement_value: placement } do
304
304
  icon('info-square-rounded', class: css) + tooltip(text)
305
305
  end
@@ -4,13 +4,13 @@ module Spree
4
4
  def onboarding_check_circle(condition, pending: false)
5
5
  if pending
6
6
  return icon('exclamation-circle', height: height,
7
- class: 'rounded-circle d-inline-flex align-items-center bg-warning text-primary p-1').html_safe
7
+ class: 'rounded-full inline-flex items-center bg-warning text-zinc-950 p-1').html_safe
8
8
  end
9
9
 
10
10
  if condition == true
11
- icon('check', class: 'rounded-circle d-inline-flex align-items-center bg-success text-success p-1', style: 'border: 3px solid #C6F6D5')
11
+ icon('check', class: 'rounded-full inline-flex items-center bg-green-200 text-green-600 border-green-200 p-1')
12
12
  else
13
- icon('check', class: 'rounded-circle d-inline-flex align-items-center border-dashed text-light p-1')
13
+ icon('check', class: 'rounded-full inline-flex items-center border-dashed text-gray-300 p-1')
14
14
  end.html_safe
15
15
  end
16
16
  end
@@ -1,76 +1,39 @@
1
1
  module Spree
2
2
  module Admin
3
3
  module OrdersFiltersHelper
4
- def params_to_filters(search_params:, vendor: nil, user: nil)
5
- return if search_params.blank?
4
+ def search_params
5
+ super
6
+ return params[:q] if params[:q].blank?
6
7
 
7
- if search_params.is_a?(String)
8
- search_params = JSON.parse(search_params).deep_symbolize_keys
9
- end
10
-
11
- search_params.delete(:inventory_units_shipment_id_null) if search_params[:inventory_units_shipment_id_null] == '0'
12
-
13
- if search_params[:number_cont]
14
- search_params[:number_cont] = search_params[:number_cont].split('-').first
15
- end
16
-
17
- if search_params[:created_at_gt].present?
18
- search_params[:created_at_gt] = begin
19
- # Firstly we parse to date to avoid issues with timezones because frontend sends time in local timezone
20
- search_params[:created_at_gt].to_date&.in_time_zone(current_timezone)&.beginning_of_day
21
- rescue StandardError
22
- ''
23
- end
24
- end
25
-
26
- if search_params[:created_at_lt].present?
27
- search_params[:created_at_lt] = begin
28
- search_params[:created_at_lt].to_date&.in_time_zone(current_timezone)&.end_of_day
8
+ if params[:q][:completed_at_gt].present?
9
+ params[:q][:completed_at_gt] = begin
10
+ params[:q][:completed_at_gt].to_date&.in_time_zone(current_timezone)&.beginning_of_day
29
11
  rescue StandardError
30
12
  ''
31
13
  end
32
14
  end
33
15
 
34
- if search_params[:completed_at_gt].present?
35
- search_params[:completed_at_gt] = begin
36
- search_params[:completed_at_gt].to_date&.in_time_zone(current_timezone)&.beginning_of_day
16
+ if params[:q][:completed_at_lt].present?
17
+ params[:q][:completed_at_lt] = begin
18
+ params[:q][:completed_at_lt].to_date&.in_time_zone(current_timezone)&.end_of_day
37
19
  rescue StandardError
38
20
  ''
39
21
  end
40
22
  end
41
23
 
42
- if search_params[:completed_at_lt].present?
43
- search_params[:completed_at_lt] = begin
44
- search_params[:completed_at_lt].to_date&.in_time_zone(current_timezone)&.end_of_day
45
- rescue StandardError
46
- ''
47
- end
48
- end
49
-
50
- search_params[:vendor_orders_vendor_id_eq] = vendor.id if vendor.present?
51
- search_params[:user_id_eq] = user.id if user.present?
24
+ load_user
25
+ params[:q][:user_id_eq] = @user.id if @user.present?
52
26
 
53
27
  # Handle refunded and partially_refunded payment state filters
54
- if search_params[:payment_state_eq] == 'refunded'
55
- search_params[:refunded] = '1'
56
- search_params.delete(:payment_state_eq)
57
- elsif search_params[:payment_state_eq] == 'partially_refunded'
58
- search_params[:partially_refunded] = '1'
59
- search_params.delete(:payment_state_eq)
28
+ if params[:q][:payment_state_eq] == 'refunded'
29
+ params[:q][:refunded] = '1'
30
+ params[:q].delete(:payment_state_eq)
31
+ elsif params[:q][:payment_state_eq] == 'partially_refunded'
32
+ params[:q][:partially_refunded] = '1'
33
+ params[:q].delete(:payment_state_eq)
60
34
  end
61
35
 
62
- search_params
63
- end
64
-
65
- def load_orders
66
- @search = scope.preload(:user).accessible_by(current_ability, :index).
67
- ransack(params_to_filters(search_params: params[:q].clone, vendor: @vendor, user: @user))
68
-
69
- # lazy loading other models here (via includes) may result in an invalid query
70
- # e.g. SELECT DISTINCT DISTINCT "spree_orders".id, "spree_orders"."created_at" AS alias_0 FROM "spree_orders"
71
- # see https://github.com/spree/spree/pull/3919
72
- @orders = @search.result(distinct: true).page(params[:page]).per(params[:per_page] || Spree::Admin::RuntimeConfig.admin_orders_per_page)
73
- @collection = @orders
36
+ params[:q]
74
37
  end
75
38
 
76
39
  def load_user
@@ -3,6 +3,7 @@ module Spree
3
3
  module OrdersHelper
4
4
  TaxLine = Struct.new(:label, :display_amount, :item, :for_shipment, keyword_init: true) do
5
5
  def name
6
+ Spree::Deprecation.warn("TaxLine is deprecated and will be removed in Spree 5.5")
6
7
  item_name = item.name
7
8
  item_name += " #{Spree.t(:shipment).downcase}" if for_shipment
8
9
 
@@ -11,6 +12,7 @@ module Spree
11
12
  end
12
13
 
13
14
  def order_summary_tax_lines_additional(order)
15
+ Spree::Deprecation.warn("order_summary_tax_lines_additional is deprecated and will be removed in Spree 5.5")
14
16
  line_item_taxes = order.line_item_adjustments.tax.map { |tax_adjustment| map_to_tax_line(tax_adjustment) }
15
17
  shipment_taxes = order.shipment_adjustments.tax.map { |tax_adjustment| map_to_tax_line(tax_adjustment, for_shipment: true) }
16
18
 
@@ -140,6 +142,8 @@ module Spree
140
142
  end
141
143
 
142
144
  def order_filter_dropdown_value
145
+ Spree::Deprecation.warn("order_filter_dropdown_value is deprecated and will be removed in Spree 5.5")
146
+
143
147
  if params.dig(:q, :shipment_state_not_in) == ['shipped', 'canceled']
144
148
  Spree.t('admin.orders.unfulfilled')
145
149
  elsif params.dig(:q, :shipment_state_eq) == 'shipped'