spree_admin 5.1.8 → 5.2.0.rc2

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 (598) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/application.scss +5 -2
  3. data/app/assets/stylesheets/spree/admin/components/_alerts.scss +26 -8
  4. data/app/assets/stylesheets/spree/admin/components/_badges.scss +4 -3
  5. data/app/assets/stylesheets/spree/admin/components/_bulk_panel.scss +11 -26
  6. data/app/assets/stylesheets/spree/admin/components/_buttons.scss +9 -18
  7. data/app/assets/stylesheets/spree/admin/components/_cards.scss +45 -24
  8. data/app/assets/stylesheets/spree/admin/components/_dialogs.scss +204 -0
  9. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +37 -13
  10. data/app/assets/stylesheets/spree/admin/components/_filters.scss +30 -10
  11. data/app/assets/stylesheets/spree/admin/components/_main.scss +36 -17
  12. data/app/assets/stylesheets/spree/admin/components/_media_form.scss +11 -3
  13. data/app/assets/stylesheets/spree/admin/components/_modals.scss +1 -1
  14. data/app/assets/stylesheets/spree/admin/components/_navigation.scss +0 -1
  15. data/app/assets/stylesheets/spree/admin/components/_search_picker.scss +0 -8
  16. data/app/assets/stylesheets/spree/admin/components/_sortable_tree.scss +2 -1
  17. data/app/assets/stylesheets/spree/admin/components/_tables.scss +20 -26
  18. data/app/assets/stylesheets/spree/admin/components/_tooltips.scss +20 -0
  19. data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +3 -3
  20. data/app/assets/stylesheets/spree/admin/components/_wizard.scss +27 -0
  21. data/app/assets/stylesheets/spree/admin/global/_variables.scss +61 -43
  22. data/app/assets/stylesheets/spree/admin/plugins/_trix_custom.scss +5 -0
  23. data/app/assets/stylesheets/spree/admin/plugins/tom-select.scss +1 -1
  24. data/app/assets/stylesheets/spree/admin/plugins/uppy_fixes.scss +52 -3
  25. data/app/assets/stylesheets/spree/admin/shared/_base.scss +18 -17
  26. data/app/assets/stylesheets/spree/admin/shared/_forms.scss +7 -4
  27. data/app/assets/stylesheets/spree/admin/views/_page_builder.scss +12 -12
  28. data/app/controllers/concerns/spree/admin/page_builder_concern.rb +4 -4
  29. data/app/controllers/concerns/spree/admin/settings_concern.rb +23 -0
  30. data/app/controllers/spree/admin/admin_users_controller.rb +21 -6
  31. data/app/controllers/spree/admin/assets_controller.rb +3 -5
  32. data/app/controllers/spree/admin/base_controller.rb +3 -1
  33. data/app/controllers/spree/admin/custom_domains_controller.rb +1 -1
  34. data/app/controllers/spree/admin/errors_controller.rb +17 -3
  35. data/app/controllers/spree/admin/exports_controller.rb +7 -1
  36. data/app/controllers/spree/admin/gift_cards_controller.rb +5 -11
  37. data/app/controllers/spree/admin/import_mappings_controller.rb +15 -0
  38. data/app/controllers/spree/admin/import_rows_controller.rb +7 -0
  39. data/app/controllers/spree/admin/imports_controller.rb +66 -0
  40. data/app/controllers/spree/admin/invitations_controller.rb +3 -4
  41. data/app/controllers/spree/admin/json_previews_controller.rb +24 -0
  42. data/app/controllers/spree/admin/metafield_definitions_controller.rb +27 -0
  43. data/app/controllers/spree/admin/metafields_controller.rb +39 -0
  44. data/app/controllers/spree/admin/newsletter_subscribers_controller.rb +8 -0
  45. data/app/controllers/spree/admin/oauth_applications_controller.rb +2 -2
  46. data/app/controllers/spree/admin/orders/user_controller.rb +16 -10
  47. data/app/controllers/spree/admin/orders_controller.rb +17 -3
  48. data/app/controllers/spree/admin/page_blocks_controller.rb +2 -1
  49. data/app/controllers/spree/admin/page_links_controller.rb +9 -1
  50. data/app/controllers/spree/admin/pages_controller.rb +1 -9
  51. data/app/controllers/spree/admin/payment_methods_controller.rb +1 -1
  52. data/app/controllers/spree/admin/policies_controller.rb +28 -0
  53. data/app/controllers/spree/admin/products_controller.rb +8 -5
  54. data/app/controllers/spree/admin/profile_controller.rb +2 -0
  55. data/app/controllers/spree/admin/refund_reasons_controller.rb +1 -1
  56. data/app/controllers/spree/admin/reimbursement_types_controller.rb +1 -1
  57. data/app/controllers/spree/admin/resource_controller.rb +60 -2
  58. data/app/controllers/spree/admin/return_authorization_reasons_controller.rb +1 -1
  59. data/app/controllers/spree/admin/return_authorizations_controller.rb +3 -0
  60. data/app/controllers/spree/admin/roles_controller.rb +1 -2
  61. data/app/controllers/spree/admin/shipping_categories_controller.rb +1 -1
  62. data/app/controllers/spree/admin/shipping_methods_controller.rb +2 -2
  63. data/app/controllers/spree/admin/stock_locations_controller.rb +2 -2
  64. data/app/controllers/spree/admin/store_credits_controller.rb +6 -0
  65. data/app/controllers/spree/admin/storefront_controller.rb +1 -1
  66. data/app/controllers/spree/admin/stores_controller.rb +8 -2
  67. data/app/controllers/spree/admin/tax_categories_controller.rb +1 -1
  68. data/app/controllers/spree/admin/tax_rates_controller.rb +2 -2
  69. data/app/controllers/spree/admin/translations_controller.rb +13 -58
  70. data/app/controllers/spree/admin/users_controller.rb +4 -0
  71. data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +2 -3
  72. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  73. data/app/helpers/spree/admin/assets_helper.rb +42 -0
  74. data/app/helpers/spree/admin/base_helper.rb +58 -11
  75. data/app/helpers/spree/admin/bulk_operations_helper.rb +14 -12
  76. data/app/helpers/spree/admin/dialog_helper.rb +21 -0
  77. data/app/helpers/spree/admin/drawer_helper.rb +21 -0
  78. data/app/helpers/spree/admin/dropdown_helper.rb +44 -0
  79. data/app/helpers/spree/admin/json_preview_helper.rb +75 -0
  80. data/app/helpers/spree/admin/metafields_helper.rb +29 -0
  81. data/app/helpers/spree/admin/navigation_helper.rb +55 -23
  82. data/app/helpers/spree/admin/orders_filters_helper.rb +26 -17
  83. data/app/helpers/spree/admin/page_builder_helper.rb +3 -8
  84. data/app/helpers/spree/admin/payments_helper.rb +2 -0
  85. data/app/helpers/spree/admin/products_helper.rb +0 -12
  86. data/app/helpers/spree/admin/translations_helper.rb +11 -4
  87. data/app/helpers/spree/admin/turbo_helper.rb +17 -4
  88. data/app/javascript/spree/admin/application.js +23 -5
  89. data/app/javascript/spree/admin/controllers/active_storage_upload_controller.js +41 -7
  90. data/app/javascript/spree/admin/controllers/admin_controller.js +0 -9
  91. data/app/javascript/spree/admin/controllers/auto_scroll_controller.js +33 -0
  92. data/app/javascript/spree/admin/controllers/codemirror_controller.js +45 -0
  93. data/app/javascript/spree/admin/controllers/dropdown_controller.js +154 -0
  94. data/app/javascript/spree/admin/controllers/highlight_controller.js +17 -0
  95. data/app/javascript/spree/admin/controllers/import_form_controller.js +27 -0
  96. data/app/javascript/spree/admin/controllers/sortable_auto_submit_controller.js +10 -0
  97. data/app/javascript/spree/admin/controllers/stock_transfer_controller.js +6 -5
  98. data/app/javascript/spree/admin/controllers/tabs_controller.js +21 -0
  99. data/app/javascript/spree/admin/controllers/tooltip_controller.js +136 -0
  100. data/app/javascript/spree/admin/controllers/turbo_submit_button_controller.js +14 -0
  101. data/app/javascript/spree/admin/helpers/bootstrap.js +5 -3
  102. data/app/models/spree/admin/form_builder.rb +250 -0
  103. data/app/models/spree/admin/updater.rb +2 -2
  104. data/app/views/layouts/spree/admin.html.erb +6 -2
  105. data/app/views/layouts/spree/admin_settings.html.erb +36 -0
  106. data/app/views/layouts/spree/admin_wizard.html.erb +34 -0
  107. data/app/views/layouts/spree/minimal.html.erb +2 -1
  108. data/app/views/layouts/spree/page_builder.html.erb +3 -2
  109. data/app/views/spree/admin/admin_users/_admin_user.html.erb +2 -2
  110. data/app/views/spree/admin/admin_users/_form.html.erb +3 -12
  111. data/app/views/spree/admin/admin_users/edit.html.erb +4 -7
  112. data/app/views/spree/admin/admin_users/index.html.erb +3 -3
  113. data/app/views/spree/admin/admin_users/show.html.erb +4 -4
  114. data/app/views/spree/admin/assets/create.turbo_stream.erb +1 -1
  115. data/app/views/spree/admin/assets/destroy.turbo_stream.erb +1 -1
  116. data/app/views/spree/admin/assets/edit.html.erb +16 -21
  117. data/app/views/spree/admin/assets/update.turbo_stream.erb +2 -2
  118. data/app/views/spree/admin/classifications/_classification.html.erb +5 -4
  119. data/app/views/spree/admin/classifications/create.turbo_stream.erb +1 -1
  120. data/app/views/spree/admin/classifications/index.html.erb +2 -2
  121. data/app/views/spree/admin/coupon_codes/_filters.html.erb +41 -0
  122. data/app/views/spree/admin/coupon_codes/_table_header.html.erb +0 -0
  123. data/app/views/spree/admin/coupon_codes/_table_row.html.erb +8 -0
  124. data/app/views/spree/admin/coupon_codes/index.html.erb +1 -58
  125. data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +4 -4
  126. data/app/views/spree/admin/custom_domains/edit.html.erb +1 -14
  127. data/app/views/spree/admin/custom_domains/new.html.erb +1 -14
  128. data/app/views/spree/admin/customer_returns/_filters.html.erb +11 -0
  129. data/app/views/spree/admin/customer_returns/_table_header.html.erb +8 -0
  130. data/app/views/spree/admin/customer_returns/{_customer_return.html.erb → _table_row.html.erb} +1 -1
  131. data/app/views/spree/admin/customer_returns/index.html.erb +1 -36
  132. data/app/views/spree/admin/dashboard/_setup_progress.html.erb +1 -1
  133. data/app/views/spree/admin/dashboard/_setup_tasks.html.erb +8 -10
  134. data/app/views/spree/admin/dashboard/_store_preview.html.erb +5 -5
  135. data/app/views/spree/admin/dashboard/_top_products.html.erb +3 -3
  136. data/app/views/spree/admin/dashboard/_updater.html.erb +1 -1
  137. data/app/views/spree/admin/dashboard/analytics.html.erb +37 -39
  138. data/app/views/spree/admin/dashboard/getting_started.html.erb +1 -1
  139. data/app/views/spree/admin/dashboard/setup_tasks/_add_products.html.erb +2 -2
  140. data/app/views/spree/admin/dashboard/show.html.erb +1 -1
  141. data/app/views/spree/admin/digital_assets/_digital_asset.html.erb +9 -10
  142. data/app/views/spree/admin/digital_assets/_form.html.erb +3 -8
  143. data/app/views/spree/admin/digital_assets/_table.html.erb +12 -13
  144. data/app/views/spree/admin/digital_assets/create.turbo_stream.erb +1 -1
  145. data/app/views/spree/admin/digital_assets/edit.html.erb +8 -10
  146. data/app/views/spree/admin/digital_assets/index.html.erb +8 -9
  147. data/app/views/spree/admin/digital_assets/new.html.erb +8 -10
  148. data/app/views/spree/admin/digital_assets/update.turbo_stream.erb +1 -1
  149. data/app/views/spree/admin/errors/403.html.erb +14 -0
  150. data/app/views/spree/admin/errors/404.html.erb +14 -0
  151. data/app/views/spree/admin/errors/422.html.erb +14 -0
  152. data/app/views/spree/admin/errors/500.html.erb +14 -0
  153. data/app/views/spree/admin/errors/503.html.erb +14 -0
  154. data/app/views/spree/admin/exports/_export.html.erb +1 -1
  155. data/app/views/spree/admin/exports/create.turbo_stream.erb +4 -1
  156. data/app/views/spree/admin/exports/index.html.erb +5 -5
  157. data/app/views/spree/admin/exports/new.html.erb +33 -28
  158. data/app/views/spree/admin/gift_card_batches/_form.html.erb +5 -20
  159. data/app/views/spree/admin/gift_card_batches/new.html.erb +1 -15
  160. data/app/views/spree/admin/gift_cards/_filters.html.erb +3 -4
  161. data/app/views/spree/admin/gift_cards/_form.html.erb +16 -26
  162. data/app/views/spree/admin/gift_cards/_gift_card.html.erb +1 -1
  163. data/app/views/spree/admin/gift_cards/_list.html.erb +7 -7
  164. data/app/views/spree/admin/gift_cards/_table_filter_dropdown.html.erb +13 -13
  165. data/app/views/spree/admin/gift_cards/index.html.erb +14 -11
  166. data/app/views/spree/admin/gift_cards/new.html.erb +1 -30
  167. data/app/views/spree/admin/gift_cards/show.html.erb +5 -5
  168. data/app/views/spree/admin/import_mappings/update.turbo_stream.erb +15 -0
  169. data/app/views/spree/admin/import_rows/_variant.html.erb +1 -0
  170. data/app/views/spree/admin/import_rows/show.html.erb +32 -0
  171. data/app/views/spree/admin/imports/_footer.html.erb +15 -0
  172. data/app/views/spree/admin/imports/_loader.html.erb +14 -0
  173. data/app/views/spree/admin/imports/_mapping.html.erb +12 -0
  174. data/app/views/spree/admin/imports/_mapping_footer.html.erb +20 -0
  175. data/app/views/spree/admin/imports/_mapping_form.html.erb +11 -0
  176. data/app/views/spree/admin/imports/_mapping_icon.html.erb +6 -0
  177. data/app/views/spree/admin/imports/_row.html.erb +35 -0
  178. data/app/views/spree/admin/imports/new.html.erb +26 -0
  179. data/app/views/spree/admin/imports/show.html.erb +57 -0
  180. data/app/views/spree/admin/invitations/_invitation.html.erb +13 -13
  181. data/app/views/spree/admin/invitations/create.turbo_stream.erb +1 -1
  182. data/app/views/spree/admin/invitations/index.html.erb +15 -17
  183. data/app/views/spree/admin/invitations/new.html.erb +15 -26
  184. data/app/views/spree/admin/json_previews/show.html.erb +37 -0
  185. data/app/views/spree/admin/line_items/new.html.erb +6 -6
  186. data/app/views/spree/admin/metafield_definitions/_filters.html.erb +18 -0
  187. data/app/views/spree/admin/metafield_definitions/_form.html.erb +44 -0
  188. data/app/views/spree/admin/metafield_definitions/_table_header.html.erb +11 -0
  189. data/app/views/spree/admin/metafield_definitions/_table_row.html.erb +22 -0
  190. data/app/views/spree/admin/metafield_definitions/edit.html.erb +1 -0
  191. data/app/views/spree/admin/metafield_definitions/index.html.erb +9 -0
  192. data/app/views/spree/admin/metafield_definitions/new.html.erb +1 -0
  193. data/app/views/spree/admin/metafield_definitions/update.turbo_stream.erb +1 -0
  194. data/app/views/spree/admin/metafields/edit.html.erb +43 -0
  195. data/app/views/spree/admin/metafields/types/_boolean.html.erb +4 -0
  196. data/app/views/spree/admin/metafields/types/_json.html.erb +4 -0
  197. data/app/views/spree/admin/metafields/types/_long_text.html.erb +1 -0
  198. data/app/views/spree/admin/metafields/types/_number.html.erb +1 -0
  199. data/app/views/spree/admin/metafields/types/_rich_text.html.erb +3 -0
  200. data/app/views/spree/admin/metafields/types/_short_text.html.erb +1 -0
  201. data/app/views/spree/admin/metafields/update.turbo_stream.erb +1 -0
  202. data/app/views/spree/admin/newsletter_subscribers/_filters.html.erb +41 -0
  203. data/app/views/spree/admin/newsletter_subscribers/_table_header.html.erb +8 -0
  204. data/app/views/spree/admin/newsletter_subscribers/_table_row.html.erb +36 -0
  205. data/app/views/spree/admin/newsletter_subscribers/index.html.erb +9 -0
  206. data/app/views/spree/admin/oauth_applications/_form.html.erb +5 -10
  207. data/app/views/spree/admin/oauth_applications/_table_header.html.erb +7 -0
  208. data/app/views/spree/admin/oauth_applications/_table_row.html.erb +34 -0
  209. data/app/views/spree/admin/oauth_applications/create.turbo_stream.erb +20 -30
  210. data/app/views/spree/admin/oauth_applications/edit.html.erb +1 -18
  211. data/app/views/spree/admin/oauth_applications/index.html.erb +4 -60
  212. data/app/views/spree/admin/oauth_applications/new.html.erb +1 -24
  213. data/app/views/spree/admin/option_types/{_filter.html.erb → _filters.html.erb} +1 -1
  214. data/app/views/spree/admin/option_types/_form.html.erb +8 -30
  215. data/app/views/spree/admin/option_types/_table_header.html.erb +19 -0
  216. data/app/views/spree/admin/option_types/{_option_type.html.erb → _table_row.html.erb} +1 -1
  217. data/app/views/spree/admin/option_types/edit.html.erb +0 -3
  218. data/app/views/spree/admin/option_types/index.html.erb +3 -42
  219. data/app/views/spree/admin/orders/_customer.html.erb +17 -21
  220. data/app/views/spree/admin/orders/_customer_returns.html.erb +4 -4
  221. data/app/views/spree/admin/orders/_filters.html.erb +49 -48
  222. data/app/views/spree/admin/orders/_form.html.erb +12 -0
  223. data/app/views/spree/admin/orders/_header.html.erb +2 -7
  224. data/app/views/spree/admin/orders/_line_item.html.erb +6 -11
  225. data/app/views/spree/admin/orders/_line_items.html.erb +39 -47
  226. data/app/views/spree/admin/orders/_list.html.erb +7 -7
  227. data/app/views/spree/admin/orders/_order.html.erb +1 -1
  228. data/app/views/spree/admin/orders/_payments.html.erb +2 -2
  229. data/app/views/spree/admin/orders/_refunds.html.erb +7 -9
  230. data/app/views/spree/admin/orders/_return_authorizations.html.erb +5 -5
  231. data/app/views/spree/admin/orders/_risk_analysis.html.erb +1 -1
  232. data/app/views/spree/admin/orders/_shipment.html.erb +7 -6
  233. data/app/views/spree/admin/orders/_shipment_manifest_item.html.erb +1 -1
  234. data/app/views/spree/admin/orders/_shipments.html.erb +1 -1
  235. data/app/views/spree/admin/orders/_summary.html.erb +14 -7
  236. data/app/views/spree/admin/orders/_table_filter_dropdown.html.erb +6 -6
  237. data/app/views/spree/admin/orders/_tax_lines.html.erb +1 -1
  238. data/app/views/spree/admin/orders/billing_address/_form.html.erb +4 -2
  239. data/app/views/spree/admin/orders/billing_address/create.turbo_stream.erb +22 -24
  240. data/app/views/spree/admin/orders/billing_address/edit.html.erb +29 -31
  241. data/app/views/spree/admin/orders/billing_address/new.html.erb +22 -24
  242. data/app/views/spree/admin/orders/billing_address/update.turbo_stream.erb +22 -24
  243. data/app/views/spree/admin/orders/contact_information/edit.html.erb +10 -12
  244. data/app/views/spree/admin/orders/customer_returns/_customer_return.html.erb +7 -12
  245. data/app/views/spree/admin/orders/customer_returns/_reimbursements_table.html.erb +5 -5
  246. data/app/views/spree/admin/orders/customer_returns/_return_item_decision.html.erb +6 -6
  247. data/app/views/spree/admin/orders/customer_returns/_return_item_selection.html.erb +6 -6
  248. data/app/views/spree/admin/orders/customer_returns/new.html.erb +2 -6
  249. data/app/views/spree/admin/orders/index.html.erb +7 -3
  250. data/app/views/spree/admin/orders/new.html.erb +22 -0
  251. data/app/views/spree/admin/orders/return_authorizations/_form.html.erb +14 -28
  252. data/app/views/spree/admin/orders/return_authorizations/_return_authorization.html.erb +1 -1
  253. data/app/views/spree/admin/orders/return_authorizations/show.html.erb +14 -14
  254. data/app/views/spree/admin/orders/shipping_address/_form.html.erb +4 -2
  255. data/app/views/spree/admin/orders/shipping_address/create.turbo_stream.erb +8 -10
  256. data/app/views/spree/admin/orders/shipping_address/edit.html.erb +8 -10
  257. data/app/views/spree/admin/orders/shipping_address/new.html.erb +8 -10
  258. data/app/views/spree/admin/orders/shipping_address/update.turbo_stream.erb +8 -10
  259. data/app/views/spree/admin/orders/user/edit.html.erb +1 -1
  260. data/app/views/spree/admin/orders/user/new.html.erb +1 -1
  261. data/app/views/spree/admin/page_blocks/edit.html.erb +6 -9
  262. data/app/views/spree/admin/page_blocks/forms/_image.html.erb +4 -1
  263. data/app/views/spree/admin/page_blocks/forms/_metafields.html.erb +35 -0
  264. data/app/views/spree/admin/page_blocks/forms/products/_description.html.erb +0 -0
  265. data/app/views/spree/admin/page_builder/_add_block.html.erb +8 -6
  266. data/app/views/spree/admin/page_builder/_header.html.erb +29 -22
  267. data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +6 -6
  268. data/app/views/spree/admin/page_builder/_sidebar.html.erb +5 -5
  269. data/app/views/spree/admin/page_builder/_sidebar_colors.html.erb +71 -69
  270. data/app/views/spree/admin/page_builder/_sidebar_fonts.html.erb +62 -61
  271. data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +4 -6
  272. data/app/views/spree/admin/page_builder/_sidebar_sections.html.erb +12 -2
  273. data/app/views/spree/admin/page_builder/_sidebar_sections_toolbar.html.erb +59 -57
  274. data/app/views/spree/admin/page_links/_form.html.erb +3 -3
  275. data/app/views/spree/admin/page_links/_linkable_type_dropdown.html.erb +3 -3
  276. data/app/views/spree/admin/page_links/create.turbo_stream.erb +10 -4
  277. data/app/views/spree/admin/page_links/destroy.turbo_stream.erb +13 -9
  278. data/app/views/spree/admin/page_links/edit.html.erb +26 -13
  279. data/app/views/spree/admin/page_links/update.turbo_stream.erb +11 -5
  280. data/app/views/spree/admin/page_sections/edit.html.erb +5 -8
  281. data/app/views/spree/admin/page_sections/forms/_breadcrumbs.html.erb +0 -0
  282. data/app/views/spree/admin/page_sections/forms/_image_with_text.html.erb +2 -5
  283. data/app/views/spree/admin/pages/_form.html.erb +1 -4
  284. data/app/views/spree/admin/pages/_table_header.html.erb +6 -0
  285. data/app/views/spree/admin/pages/_table_row.html.erb +28 -0
  286. data/app/views/spree/admin/pages/edit.html.erb +9 -11
  287. data/app/views/spree/admin/pages/{_filters.html.erb → filters.html.erb} +1 -1
  288. data/app/views/spree/admin/pages/index.html.erb +1 -24
  289. data/app/views/spree/admin/pages/new.html.erb +1 -17
  290. data/app/views/spree/admin/payment_methods/_available_payment_method.html.erb +1 -1
  291. data/app/views/spree/admin/payment_methods/_form.html.erb +4 -24
  292. data/app/views/spree/admin/payment_methods/_payment_method.html.erb +5 -2
  293. data/app/views/spree/admin/payment_methods/index.html.erb +17 -19
  294. data/app/views/spree/admin/payments/_payment.html.erb +16 -16
  295. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +3 -3
  296. data/app/views/spree/admin/payments/source_views/_storecredit.html.erb +7 -7
  297. data/app/views/spree/admin/policies/_filters.html.erb +8 -0
  298. data/app/views/spree/admin/policies/_form.html.erb +7 -0
  299. data/app/views/spree/admin/policies/_table_header.html.erb +8 -0
  300. data/app/views/spree/admin/policies/_table_row.html.erb +20 -0
  301. data/app/views/spree/admin/policies/edit.html.erb +2 -0
  302. data/app/views/spree/admin/policies/index.html.erb +9 -0
  303. data/app/views/spree/admin/policies/new.html.erb +1 -0
  304. data/app/views/spree/admin/policies/update.turbo_stream.erb +1 -0
  305. data/app/views/spree/admin/post_categories/_form.html.erb +2 -11
  306. data/app/views/spree/admin/post_categories/_table_header.html.erb +5 -0
  307. data/app/views/spree/admin/post_categories/{_post_category.html.erb → _table_row.html.erb} +3 -3
  308. data/app/views/spree/admin/post_categories/edit.html.erb +1 -14
  309. data/app/views/spree/admin/post_categories/index.html.erb +1 -20
  310. data/app/views/spree/admin/post_categories/new.html.erb +1 -14
  311. data/app/views/spree/admin/posts/_form.html.erb +19 -43
  312. data/app/views/spree/admin/posts/_table_header.html.erb +7 -0
  313. data/app/views/spree/admin/posts/{_post.html.erb → _table_row.html.erb} +2 -2
  314. data/app/views/spree/admin/posts/filters.html.erb +29 -0
  315. data/app/views/spree/admin/posts/index.html.erb +1 -24
  316. data/app/views/spree/admin/products/_bulk_operations.html.erb +6 -16
  317. data/app/views/spree/admin/products/_filters.html.erb +31 -38
  318. data/app/views/spree/admin/products/_form.html.erb +3 -2
  319. data/app/views/spree/admin/products/_list.html.erb +1 -1
  320. data/app/views/spree/admin/products/_product.html.erb +1 -1
  321. data/app/views/spree/admin/products/_table_filter_dropdown.html.erb +6 -6
  322. data/app/views/spree/admin/products/bulk_modal.html.erb +13 -15
  323. data/app/views/spree/admin/products/edit.html.erb +0 -1
  324. data/app/views/spree/admin/products/form/_base.html.erb +1 -5
  325. data/app/views/spree/admin/products/form/_properties.html.erb +2 -2
  326. data/app/views/spree/admin/products/form/_shipping.html.erb +1 -5
  327. data/app/views/spree/admin/products/form/_tax.html.erb +1 -5
  328. data/app/views/spree/admin/products/form/_variants.html.erb +1 -1
  329. data/app/views/spree/admin/products/index.html.erb +7 -2
  330. data/app/views/spree/admin/promotion_actions/_promotion_action.html.erb +7 -7
  331. data/app/views/spree/admin/promotion_actions/forms/_create_line_items.html.erb +4 -4
  332. data/app/views/spree/admin/promotion_actions/new.html.erb +29 -35
  333. data/app/views/spree/admin/promotion_rules/_promotion_rule.html.erb +8 -8
  334. data/app/views/spree/admin/promotion_rules/forms/_item_total.html.erb +1 -1
  335. data/app/views/spree/admin/promotion_rules/new.html.erb +30 -36
  336. data/app/views/spree/admin/promotions/_actions.html.erb +4 -8
  337. data/app/views/spree/admin/promotions/_filters.html.erb +5 -9
  338. data/app/views/spree/admin/promotions/_form.html.erb +36 -0
  339. data/app/views/spree/admin/promotions/_rules.html.erb +4 -8
  340. data/app/views/spree/admin/promotions/_sidebar.html.erb +4 -4
  341. data/app/views/spree/admin/promotions/_table_filter_dropdown.html.erb +7 -7
  342. data/app/views/spree/admin/promotions/_table_header.html.erb +7 -0
  343. data/app/views/spree/admin/promotions/{_promotion.html.erb → _table_row.html.erb} +2 -5
  344. data/app/views/spree/admin/promotions/edit.html.erb +1 -1
  345. data/app/views/spree/admin/promotions/form/_kind.html.erb +52 -48
  346. data/app/views/spree/admin/promotions/form/_settings.html.erb +2 -8
  347. data/app/views/spree/admin/promotions/index.html.erb +1 -26
  348. data/app/views/spree/admin/promotions/new.html.erb +1 -57
  349. data/app/views/spree/admin/properties/_filters.html.erb +5 -0
  350. data/app/views/spree/admin/properties/_form.html.erb +8 -22
  351. data/app/views/spree/admin/properties/_table_header.html.erb +9 -0
  352. data/app/views/spree/admin/properties/{_property.html.erb → _table_row.html.erb} +2 -2
  353. data/app/views/spree/admin/properties/edit.html.erb +1 -21
  354. data/app/views/spree/admin/properties/index.html.erb +3 -38
  355. data/app/views/spree/admin/properties/new.html.erb +1 -18
  356. data/app/views/spree/admin/refund_reasons/_form.html.erb +1 -0
  357. data/app/views/spree/admin/refund_reasons/_table_header.html.erb +6 -0
  358. data/app/views/spree/admin/refund_reasons/_table_row.html.erb +14 -0
  359. data/app/views/spree/admin/refund_reasons/edit.html.erb +1 -3
  360. data/app/views/spree/admin/refund_reasons/index.html.erb +1 -36
  361. data/app/views/spree/admin/refund_reasons/new.html.erb +1 -4
  362. data/app/views/spree/admin/refunds/_form.html.erb +1 -5
  363. data/app/views/spree/admin/refunds/edit.html.erb +9 -11
  364. data/app/views/spree/admin/reimbursement_types/_form.html.erb +11 -31
  365. data/app/views/spree/admin/reimbursement_types/_table_header.html.erb +7 -0
  366. data/app/views/spree/admin/reimbursement_types/_table_row.html.erb +17 -0
  367. data/app/views/spree/admin/reimbursement_types/edit.html.erb +1 -14
  368. data/app/views/spree/admin/reimbursement_types/index.html.erb +1 -40
  369. data/app/views/spree/admin/reimbursement_types/new.html.erb +1 -14
  370. data/app/views/spree/admin/reimbursements/edit.html.erb +9 -9
  371. data/app/views/spree/admin/reimbursements/show.html.erb +12 -12
  372. data/app/views/spree/admin/reports/_report.html.erb +1 -1
  373. data/app/views/spree/admin/reports/index.html.erb +2 -2
  374. data/app/views/spree/admin/reports/new.html.erb +2 -1
  375. data/app/views/spree/admin/return_authorization_reasons/_form.html.erb +1 -0
  376. data/app/views/spree/admin/return_authorization_reasons/_table_header.html.erb +5 -0
  377. data/app/views/spree/admin/return_authorization_reasons/_table_row.html.erb +18 -0
  378. data/app/views/spree/admin/return_authorization_reasons/edit.html.erb +1 -3
  379. data/app/views/spree/admin/return_authorization_reasons/index.html.erb +1 -39
  380. data/app/views/spree/admin/return_authorization_reasons/new.html.erb +1 -4
  381. data/app/views/spree/admin/return_authorizations/_list.html.erb +3 -3
  382. data/app/views/spree/admin/return_authorizations/_table_header.html.erb +6 -0
  383. data/app/views/spree/admin/return_authorizations/{_return_authorization.html.erb → _table_row.html.erb} +1 -1
  384. data/app/views/spree/admin/return_authorizations/{_filters.html.erb → filters.html.erb} +7 -12
  385. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -10
  386. data/app/views/spree/admin/roles/_form.html.erb +4 -5
  387. data/app/views/spree/admin/roles/edit.html.erb +1 -15
  388. data/app/views/spree/admin/roles/index.html.erb +4 -4
  389. data/app/views/spree/admin/roles/new.html.erb +1 -18
  390. data/app/views/spree/admin/shared/_alerts.html.erb +3 -1
  391. data/app/views/spree/admin/shared/_back_to_dashboard.html.erb +1 -0
  392. data/app/views/spree/admin/shared/_breadcrumbs.html.erb +1 -1
  393. data/app/views/spree/admin/shared/_bulk_modal.html.erb +13 -19
  394. data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +6 -7
  395. data/app/views/spree/admin/shared/_close_bulk_modal.turbo_stream.erb +4 -1
  396. data/app/views/spree/admin/shared/_content_header.html.erb +20 -38
  397. data/app/views/spree/admin/shared/_dialog.html.erb +4 -0
  398. data/app/views/spree/admin/shared/_drawer.html.erb +4 -0
  399. data/app/views/spree/admin/shared/_edit_resource.html.erb +17 -0
  400. data/app/views/spree/admin/shared/_export_modal.html.erb +3 -0
  401. data/app/views/spree/admin/shared/_filters_button.html.erb +2 -2
  402. data/app/views/spree/admin/shared/_head.html.erb +1 -1
  403. data/app/views/spree/admin/shared/_header.html.erb +2 -5
  404. data/app/views/spree/admin/shared/_index_table.html.erb +34 -0
  405. data/app/views/spree/admin/shared/_index_table_options.html.erb +5 -7
  406. data/app/views/spree/admin/{variants/form → shared}/_media_asset.html.erb +3 -5
  407. data/app/views/spree/admin/{variants/form/_media.html.erb → shared/_media_form.html.erb} +2 -2
  408. data/app/views/spree/admin/shared/_multi_product_picker.html.erb +7 -7
  409. data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +8 -10
  410. data/app/views/spree/admin/shared/_new_resource.html.erb +18 -0
  411. data/app/views/spree/admin/shared/_no_resource_found.html.erb +1 -1
  412. data/app/views/spree/admin/shared/_page_alerts.html.erb +5 -0
  413. data/app/views/spree/admin/shared/_page_section_image.html.erb +6 -0
  414. data/app/views/spree/admin/shared/_page_tabs.html.erb +9 -0
  415. data/app/views/spree/admin/shared/_refunds.html.erb +6 -8
  416. data/app/views/spree/admin/shared/_seo.html.erb +3 -8
  417. data/app/views/spree/admin/shared/_team_nav.html.erb +1 -3
  418. data/app/views/spree/admin/shared/_user.html.erb +2 -1
  419. data/app/views/spree/admin/shared/_user_dropdown.html.erb +7 -9
  420. data/app/views/spree/admin/shared/named_types/_edit.html.erb +1 -14
  421. data/app/views/spree/admin/shared/named_types/_form.html.erb +2 -11
  422. data/app/views/spree/admin/shared/named_types/_new.html.erb +1 -14
  423. data/app/views/spree/admin/shared/sidebar/_customers_nav.html.erb +8 -0
  424. data/app/views/spree/admin/shared/sidebar/_enterprise_edition_notice.html.erb +1 -1
  425. data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +1 -1
  426. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +8 -9
  427. data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +16 -14
  428. data/app/views/spree/admin/shared/sidebar/_vendors_nav.html.erb +5 -2
  429. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +7 -7
  430. data/app/views/spree/admin/shipping_categories/_form.html.erb +1 -5
  431. data/app/views/spree/admin/shipping_categories/_table_header.html.erb +4 -0
  432. data/app/views/spree/admin/shipping_categories/_table_row.html.erb +8 -0
  433. data/app/views/spree/admin/shipping_categories/edit.html.erb +1 -14
  434. data/app/views/spree/admin/shipping_categories/index.html.erb +3 -30
  435. data/app/views/spree/admin/shipping_categories/new.html.erb +1 -14
  436. data/app/views/spree/admin/shipping_methods/_table_header.html.erb +8 -0
  437. data/app/views/spree/admin/shipping_methods/{_shipping_method.html.erb → _table_row.html.erb} +1 -1
  438. data/app/views/spree/admin/shipping_methods/form/_display.html.erb +2 -2
  439. data/app/views/spree/admin/shipping_methods/form/_tax_category.html.erb +1 -4
  440. data/app/views/spree/admin/shipping_methods/form/_tracking_url.html.erb +1 -1
  441. data/app/views/spree/admin/shipping_methods/index.html.erb +3 -26
  442. data/app/views/spree/admin/stock_items/_filters.html.erb +12 -21
  443. data/app/views/spree/admin/stock_items/_table_header.html.erb +9 -0
  444. data/app/views/spree/admin/stock_items/{_stock_item.html.erb → _table_row.html.erb} +1 -1
  445. data/app/views/spree/admin/stock_items/index.html.erb +1 -27
  446. data/app/views/spree/admin/stock_locations/_form.html.erb +3 -15
  447. data/app/views/spree/admin/stock_locations/_table_header.html.erb +9 -0
  448. data/app/views/spree/admin/stock_locations/{_stock_location.html.erb → _table_row.html.erb} +7 -6
  449. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -14
  450. data/app/views/spree/admin/stock_locations/index.html.erb +3 -26
  451. data/app/views/spree/admin/stock_locations/new.html.erb +1 -14
  452. data/app/views/spree/admin/stock_transfers/_filters.html.erb +25 -33
  453. data/app/views/spree/admin/stock_transfers/_new_variant_modal.html.erb +22 -26
  454. data/app/views/spree/admin/stock_transfers/_table_header.html.erb +9 -0
  455. data/app/views/spree/admin/stock_transfers/{_stock_transfer.html.erb → _table_row.html.erb} +2 -2
  456. data/app/views/spree/admin/stock_transfers/index.html.erb +1 -26
  457. data/app/views/spree/admin/stock_transfers/new.html.erb +5 -6
  458. data/app/views/spree/admin/stock_transfers/show.html.erb +3 -3
  459. data/app/views/spree/admin/store_credit_categories/_form.html.erb +1 -5
  460. data/app/views/spree/admin/store_credit_categories/index.html.erb +3 -3
  461. data/app/views/spree/admin/store_credit_events/_store_credit_event.html.erb +1 -1
  462. data/app/views/spree/admin/store_credits/_form.html.erb +3 -16
  463. data/app/views/spree/admin/store_credits/_list.html.erb +7 -7
  464. data/app/views/spree/admin/store_credits/_store_credit.html.erb +2 -2
  465. data/app/views/spree/admin/store_credits/show.html.erb +6 -6
  466. data/app/views/spree/admin/storefront/edit.html.erb +10 -53
  467. data/app/views/spree/admin/stores/edit.html.erb +10 -6
  468. data/app/views/spree/admin/stores/form/_basic.html.erb +65 -158
  469. data/app/views/spree/admin/stores/form/_checkout.html.erb +35 -51
  470. data/app/views/spree/admin/stores/form/_checkout_links.html.erb +28 -0
  471. data/app/views/spree/admin/stores/form/_emails.html.erb +33 -64
  472. data/app/views/spree/admin/stores/form/_policies.html.erb +55 -71
  473. data/app/views/spree/admin/stores/new.html.erb +119 -129
  474. data/app/views/spree/admin/tax_categories/_form.html.erb +4 -17
  475. data/app/views/spree/admin/tax_categories/_table_header.html.erb +7 -0
  476. data/app/views/spree/admin/tax_categories/{_tax_category.html.erb → _table_row.html.erb} +1 -1
  477. data/app/views/spree/admin/tax_categories/edit.html.erb +1 -14
  478. data/app/views/spree/admin/tax_categories/index.html.erb +3 -24
  479. data/app/views/spree/admin/tax_categories/new.html.erb +1 -14
  480. data/app/views/spree/admin/tax_rates/_form.html.erb +6 -26
  481. data/app/views/spree/admin/tax_rates/_table_header.html.erb +9 -0
  482. data/app/views/spree/admin/tax_rates/{_tax_rate.html.erb → _table_row.html.erb} +1 -1
  483. data/app/views/spree/admin/tax_rates/edit.html.erb +1 -14
  484. data/app/views/spree/admin/tax_rates/index.html.erb +3 -26
  485. data/app/views/spree/admin/tax_rates/new.html.erb +1 -14
  486. data/app/views/spree/admin/taxonomies/_form.html.erb +5 -0
  487. data/app/views/spree/admin/taxonomies/_table_header.html.erb +6 -0
  488. data/app/views/spree/admin/taxonomies/{_taxonomy.html.erb → _table_row.html.erb} +3 -3
  489. data/app/views/spree/admin/taxonomies/edit.html.erb +1 -25
  490. data/app/views/spree/admin/taxonomies/filters.html.erb +6 -0
  491. data/app/views/spree/admin/taxonomies/index.html.erb +3 -34
  492. data/app/views/spree/admin/taxonomies/new.html.erb +1 -23
  493. data/app/views/spree/admin/taxons/_form.html.erb +6 -30
  494. data/app/views/spree/admin/taxons/_rule_form.html.erb +2 -1
  495. data/app/views/spree/admin/taxons/_rules_form.html.erb +1 -1
  496. data/app/views/spree/admin/taxons/edit.html.erb +0 -1
  497. data/app/views/spree/admin/themes/_theme.html.erb +9 -8
  498. data/app/views/spree/admin/themes/index.html.erb +14 -16
  499. data/app/views/spree/admin/translations/edit.html.erb +34 -49
  500. data/app/views/spree/admin/translations/policies/_form.html.erb +12 -0
  501. data/app/views/spree/admin/translations/products/_form.html.erb +2 -0
  502. data/app/views/spree/admin/translations/translation_rows/_permalink_field_row.html.erb +11 -20
  503. data/app/views/spree/admin/translations/translation_rows/_rich_textarea_row.html.erb +1 -11
  504. data/app/views/spree/admin/translations/translation_rows/_text_field_row.html.erb +1 -5
  505. data/app/views/spree/admin/translations/translation_rows/_textarea_row.html.erb +2 -9
  506. data/app/views/spree/admin/translations/translation_rows/_tinymce_row.html.erb +4 -11
  507. data/app/views/spree/admin/translations/update.turbo_stream.erb +1 -0
  508. data/app/views/spree/admin/users/_filters.html.erb +57 -66
  509. data/app/views/spree/admin/users/_form.html.erb +3 -36
  510. data/app/views/spree/admin/users/_form_fields.html.erb +15 -0
  511. data/app/views/spree/admin/users/_last_order.html.erb +3 -2
  512. data/app/views/spree/admin/users/_lifetime_stats.html.erb +1 -1
  513. data/app/views/spree/admin/users/_tabs.html.erb +31 -31
  514. data/app/views/spree/admin/users/_user.html.erb +1 -1
  515. data/app/views/spree/admin/users/bulk_modal.html.erb +11 -13
  516. data/app/views/spree/admin/users/edit.html.erb +1 -1
  517. data/app/views/spree/admin/users/index.html.erb +53 -55
  518. data/app/views/spree/admin/users/new.html.erb +1 -18
  519. data/app/views/spree/admin/variants/_variant.html.erb +1 -1
  520. data/app/views/spree/admin/variants/edit.html.erb +1 -1
  521. data/app/views/spree/admin/variants/form/_basic.html.erb +4 -17
  522. data/app/views/spree/admin/variants/form/_dimensions.html.erb +4 -18
  523. data/app/views/spree/admin/variants/form/_inventory.html.erb +6 -12
  524. data/app/views/spree/admin/variants/form/_pricing.html.erb +3 -3
  525. data/app/views/spree/admin/webhook_events/_webhook_event.html.erb +1 -1
  526. data/app/views/spree/admin/webhooks_subscribers/_form.html.erb +57 -73
  527. data/app/views/spree/admin/webhooks_subscribers/_table_header.html.erb +7 -0
  528. data/app/views/spree/admin/webhooks_subscribers/{_webhooks_subscriber.html.erb → _table_row.html.erb} +3 -3
  529. data/app/views/spree/admin/webhooks_subscribers/edit.html.erb +1 -9
  530. data/app/views/spree/admin/webhooks_subscribers/index.html.erb +1 -23
  531. data/app/views/spree/admin/webhooks_subscribers/new.html.erb +1 -11
  532. data/app/views/spree/admin/webhooks_subscribers/show.html.erb +8 -8
  533. data/app/views/spree/admin/zones/_form.html.erb +8 -28
  534. data/app/views/spree/admin/zones/_table_header.html.erb +8 -0
  535. data/app/views/spree/admin/zones/_table_row.html.erb +8 -0
  536. data/app/views/spree/admin/zones/edit.html.erb +1 -14
  537. data/app/views/spree/admin/zones/index.html.erb +3 -35
  538. data/app/views/spree/admin/zones/new.html.erb +1 -14
  539. data/config/importmap.rb +30 -1
  540. data/config/initializers/assets.rb +3 -1
  541. data/config/locales/en.yml +32 -3
  542. data/config/routes.rb +27 -4
  543. data/lib/generators/spree/admin/devise/devise_generator.rb +33 -0
  544. data/lib/generators/spree/admin/scaffold/scaffold_generator.rb +51 -0
  545. data/lib/generators/spree/admin/scaffold/templates/controller.rb.tt +11 -0
  546. data/lib/generators/spree/admin/scaffold/templates/views/_filters.html.erb.tt +13 -0
  547. data/lib/generators/spree/admin/scaffold/templates/views/_form.html.erb.tt +5 -0
  548. data/lib/generators/spree/admin/scaffold/templates/views/_table_header.html.erb.tt +5 -0
  549. data/lib/generators/spree/admin/scaffold/templates/views/_table_row.html.erb.tt +9 -0
  550. data/lib/generators/spree/admin/scaffold/templates/views/edit.html.erb.tt +1 -0
  551. data/lib/generators/spree/admin/scaffold/templates/views/index.html.erb.tt +9 -0
  552. data/lib/generators/spree/admin/scaffold/templates/views/new.html.erb.tt +1 -0
  553. data/lib/spree/admin/engine.rb +13 -9
  554. data/lib/spree/admin/runtime_configuration.rb +3 -0
  555. data/lib/spree/admin/testing_support/capybara_utils.rb +19 -0
  556. data/lib/spree/admin.rb +1 -3
  557. data/vendor/javascript/@codemirror--autocomplete.js +4 -0
  558. data/vendor/javascript/@codemirror--commands.js +4 -0
  559. data/vendor/javascript/@codemirror--lang-json.js +4 -0
  560. data/vendor/javascript/@codemirror--language.js +4 -0
  561. data/vendor/javascript/@codemirror--lint.js +4 -0
  562. data/vendor/javascript/@codemirror--search.js +4 -0
  563. data/vendor/javascript/@codemirror--state.js +4 -0
  564. data/vendor/javascript/@codemirror--view.js +4 -0
  565. data/vendor/javascript/@floating-ui--core.js +4 -0
  566. data/vendor/javascript/@floating-ui--dom.js +12 -0
  567. data/vendor/javascript/@floating-ui--utils--dom.js +4 -0
  568. data/vendor/javascript/@floating-ui--utils.js +4 -0
  569. data/vendor/javascript/@highlightjs--cdn-assets--es--core.min.js.js +308 -0
  570. data/vendor/javascript/@highlightjs--cdn-assets--es--languages--json.min.js.js +10 -0
  571. data/vendor/javascript/@lezer--common.js +4 -0
  572. data/vendor/javascript/@lezer--highlight.js +4 -0
  573. data/vendor/javascript/@lezer--json.js +4 -0
  574. data/vendor/javascript/@lezer--lr.js +4 -0
  575. data/vendor/javascript/@marijn--find-cluster-break.js +4 -0
  576. data/vendor/javascript/@stimulus-components--dialog.js +4 -0
  577. data/vendor/javascript/codemirror.js +4 -0
  578. data/vendor/javascript/crelt.js +4 -0
  579. data/vendor/javascript/stimulus-use.js +2 -2
  580. data/vendor/javascript/style-mod.js +4 -0
  581. data/vendor/javascript/w3c-keyname.js +4 -0
  582. metadata +210 -69
  583. data/app/assets/stylesheets/spree/admin/plugins/flatfile.scss +0 -4
  584. data/app/helpers/spree/admin/session_assets_helper.rb +0 -24
  585. data/app/javascript/spree/admin/controllers/bootstrap_tabs_controller.js +0 -9
  586. data/app/javascript/spree/admin/controllers/enable_button_controller.js +0 -29
  587. data/app/views/spree/admin/coupon_codes/_coupon_code.html.erb +0 -8
  588. data/app/views/spree/admin/errors/forbidden.html.erb +0 -13
  589. data/app/views/spree/admin/gift_cards/index.csv.erb +0 -22
  590. data/app/views/spree/admin/orders/user/create.turbo_stream.erb +0 -12
  591. data/app/views/spree/admin/orders/user/update.turbo_stream.erb +0 -5
  592. data/app/views/spree/admin/pages/_page.html.erb +0 -26
  593. data/app/views/spree/admin/posts/_filters.html.erb +0 -36
  594. data/app/views/spree/admin/stores/create.turbo_stream.erb +0 -5
  595. data/app/views/spree/admin/translations/_translations_unavailable.html.erb +0 -8
  596. data/app/views/spree/admin/users/index.csv.erb +0 -43
  597. /data/app/views/spree/admin/page_blocks/forms/{_buy_buttons.html.erb → products/_buy_buttons.html.erb} +0 -0
  598. /data/app/views/spree/admin/page_blocks/forms/{_quantity_selector.html.erb → products/_quantity_selector.html.erb} +0 -0
@@ -45,24 +45,27 @@ module Spree
45
45
  # @return [String]
46
46
  def bulk_action_link(text, path, options = {})
47
47
  options[:data] ||= {}
48
- options[:data][:action] ||= 'click->bulk-operation#setBulkAction'
49
- options[:data][:turbo_frame] ||= :bulk_modal
48
+ options[:data][:action] ||= 'click->bulk-operation#setBulkAction click->bulk-dialog#open'
49
+ options[:data][:turbo_frame] ||= :bulk_dialog
50
50
  options[:data][:url] ||= options[:url]
51
- options[:class] ||= 'btn btn-light'
51
+ options[:class] ||= 'btn'
52
52
 
53
+ tooltip_text = nil
53
54
  if options[:icon]
54
55
  if options[:only_icon]
55
- options[:title] = text
56
+ tooltip_text = options[:title] || text
56
57
  text = icon(options[:icon], class: 'mr-0')
57
- options[:class] += ' with-tip'
58
+ options[:data][:controller] = 'tooltip'
59
+ options.delete(:title)
58
60
  else
59
61
  text = icon(options[:icon]) + ' ' + text
60
62
  end
61
63
  end
62
64
 
63
- content_tag :span, data: { toggle: 'modal', target: '#bulk-modal' } do
64
- link_to text, path, options
65
- end
65
+ link_content = text
66
+ link_content += tooltip(tooltip_text) if tooltip_text
67
+
68
+ link_to link_content, path, options
66
69
  end
67
70
 
68
71
  # render a close button for the bulk modal
@@ -70,11 +73,10 @@ module Spree
70
73
  button_tag(
71
74
  '',
72
75
  type: 'button',
73
- class: 'btn-close',
76
+ class: 'btn-close mr-1',
74
77
  data: {
75
- dismiss: 'modal',
76
- aria_label: Spree.t(:close),
77
- action: 'bulk-operation#cancel'
78
+ action: 'bulk-operation#cancel',
79
+ aria_label: Spree.t(:close)
78
80
  }
79
81
  )
80
82
  end
@@ -0,0 +1,21 @@
1
+ module Spree
2
+ module Admin
3
+ module DialogHelper
4
+ def dialog_header(title, controller_name = 'dialog')
5
+ content_tag(:div, class: 'dialog-header') do
6
+ content_tag(:h5, title, class: 'dialog-title') + dialog_close_button(controller_name)
7
+ end.html_safe
8
+ end
9
+
10
+ def dialog_close_button(controller_name = 'dialog')
11
+ button_tag('', type: 'button', class: 'btn-close', data: { action: "#{controller_name}#close", dismiss: controller_name, aria_label: Spree.t(:close) }).html_safe
12
+ end
13
+
14
+ def dialog_discard_button(controller_name = 'dialog')
15
+ button_tag(type: 'button', class: 'btn btn-light', data: { action: "#{controller_name}#close", dismiss: controller_name }) do
16
+ Spree.t('actions.discard')
17
+ end.html_safe
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Spree
2
+ module Admin
3
+ module DrawerHelper
4
+ def drawer_header(title)
5
+ content_tag(:div, class: 'drawer-header') do
6
+ content_tag(:h5, title, class: 'drawer-title') + drawer_close_button
7
+ end.html_safe
8
+ end
9
+
10
+ def drawer_close_button
11
+ button_tag('', type: 'button', class: 'btn-close', data: { action: 'drawer#close', dismiss: 'drawer', aria_label: Spree.t(:close) }).html_safe
12
+ end
13
+
14
+ def drawer_discard_button
15
+ button_tag(type: 'button', class: 'btn btn-light', data: { action: 'drawer#close', dismiss: 'drawer' }) do
16
+ Spree.t('actions.discard')
17
+ end.html_safe
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ module Spree
2
+ module Admin
3
+ module DropdownHelper
4
+ def dropdown(options = {}, &block)
5
+ options[:class] = ['dropdown'] + Array(options[:class])
6
+ options[:data] = { controller: 'dropdown' }.merge(options[:data] || {})
7
+ content_tag(:div, options, &block)
8
+ end
9
+
10
+ def dropdown_toggle(options = {}, &block)
11
+ options[:type] = 'button'
12
+ options[:class] = ['btn'] + Array(options[:class])
13
+ options[:data] = {
14
+ action: 'dropdown#toggle click@window->dropdown#hide',
15
+ dropdown_target: 'toggle'
16
+ }.merge(options[:data] || {})
17
+ button_tag(options, &block)
18
+ end
19
+
20
+ def dropdown_menu(options = {}, &block)
21
+ options[:class] = ['dropdown-container hidden'] + Array(options[:class])
22
+
23
+ # Extract direction option for backward compatibility and convert to Floating UI placement
24
+ placement = case options.delete(:direction)
25
+ when 'left'
26
+ 'bottom-end'
27
+ when 'top'
28
+ 'top-start'
29
+ when 'top-left'
30
+ 'top-end'
31
+ else
32
+ options[:placement] || 'bottom-start'
33
+ end
34
+
35
+ options[:data] = {
36
+ dropdown_target: 'menu',
37
+ dropdown_placement_value: placement
38
+ }.merge(options[:data] || {})
39
+
40
+ content_tag(:div, options, &block)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,75 @@
1
+ module Spree
2
+ module Admin
3
+ module JsonPreviewHelper
4
+ def link_to_show_json(record, options = {})
5
+ return unless json_serializers_available?(record)
6
+ return unless can?(:read, record)
7
+ return unless can?(:read, :json_preview)
8
+
9
+ options[:class] ||= 'dropdown-item'
10
+ options[:data] ||= { action: 'drawer#open', turbo_frame: :drawer }
11
+
12
+ link_to_with_icon(
13
+ 'code',
14
+ Spree.t('admin.show_json'),
15
+ spree.admin_json_preview_resource_path(record.id, resource_type: record.class.to_s),
16
+ options
17
+ )
18
+ end
19
+
20
+ def json_serializers_available?(record)
21
+ storefront_serializer_exists?(record) || platform_serializer_exists?(record)
22
+ end
23
+
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?
27
+ end
28
+
29
+ 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?
32
+ end
33
+
34
+ def serialize_to_json(record, api_type: :storefront)
35
+ return unless record
36
+
37
+ serializer = case api_type.to_sym
38
+ when :storefront
39
+ storefront_serializer_for(record)
40
+ when :platform
41
+ platform_serializer_for(record)
42
+ end
43
+
44
+ return nil unless serializer
45
+
46
+ serializable_hash = serializer.new(
47
+ record,
48
+ params: serializer_params(record)
49
+ ).serializable_hash
50
+
51
+ JSON.pretty_generate(serializable_hash)
52
+ end
53
+
54
+ private
55
+
56
+ def storefront_serializer_for(record)
57
+ serializer_class_name = "Spree::V2::Storefront::#{record.class.name.demodulize}Serializer"
58
+ serializer_class_name.safe_constantize
59
+ end
60
+
61
+ def platform_serializer_for(record)
62
+ serializer_class_name = "Spree::Api::V2::Platform::#{record.class.name.demodulize}Serializer"
63
+ serializer_class_name.safe_constantize
64
+ end
65
+
66
+ def serializer_params(record)
67
+ params = {}
68
+ params[:store] = current_store if defined?(current_store) && current_store.present?
69
+ params[:currency] = current_currency if defined?(current_currency) && current_currency.present?
70
+ params[:locale] = current_locale if defined?(current_locale) && current_locale.present?
71
+ params
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Admin
3
+ module MetafieldsHelper
4
+ def link_to_edit_metafields(record, options = {})
5
+ return unless Spree::MetafieldDefinition.available_resources.map(&:name).include?(record.class.name)
6
+ return unless record.respond_to?(:metafields)
7
+ return unless can?(:manage, record)
8
+ return unless can?(:manage, Spree::Metafield)
9
+
10
+ options[:class] ||= 'dropdown-item'
11
+ options[:data] ||= { action: 'drawer#open', turbo_frame: :drawer }
12
+
13
+ link_to_with_icon 'edit', Spree.t(:metafields), spree.edit_admin_metafield_path(record.id, resource_type: record.class.name), options
14
+ end
15
+
16
+ def metafield_definition_resource_types
17
+ @metafield_definition_resource_types ||= Spree::MetafieldDefinition.available_resources.map do |type|
18
+ [type.to_s.demodulize.titleize, type]
19
+ end
20
+ end
21
+
22
+ def metafield_definition_types
23
+ @metafield_definition_types ||= Spree::MetafieldDefinition.available_types.map do |type|
24
+ [type.to_s.demodulize.titleize, type]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -39,17 +39,18 @@ module Spree
39
39
  per_page_default * 8
40
40
  ]
41
41
 
42
- selected_option = (params[:per_page].try(:to_i) || per_page_default).to_s
43
-
44
- selected_option += icon('chevron-down', class: 'ml-1 mr-0 arrow')
45
-
46
- content_tag :div, id: 'per-page-dropdown' do
47
- button_tag(raw(selected_option), class: 'btn btn-light btn-sm', data: { toggle: 'dropdown', expanded: false }) +
48
- content_tag(:div, class: 'dropdown-menu') do
49
- per_page_options.map do |option|
50
- link_to option, per_page_dropdown_params(option), class: "dropdown-item #{'active' if option.to_i == selected_option.to_i}"
51
- end.join.html_safe
52
- end
42
+ selected_option = (params[:per_page].try(:to_i) || per_page_default).to_i
43
+ selected_option_label = selected_option.to_s + icon('chevron-down', class: 'ml-1 mr-0 arrow')
44
+
45
+ dropdown(id: 'per-page-dropdown') do
46
+ dropdown_toggle(class: 'btn-light btn-sm') do
47
+ raw(selected_option_label)
48
+ end +
49
+ dropdown_menu(direction: 'top-left') do
50
+ per_page_options.map do |option|
51
+ link_to option, per_page_dropdown_params(option), class: "dropdown-item #{'active' if option.to_i == selected_option}"
52
+ end.join.html_safe
53
+ end
53
54
  end
54
55
  end
55
56
 
@@ -107,17 +108,36 @@ module Spree
107
108
  # @param options [Hash] the options for the link
108
109
  # @return [String] the link with the icon
109
110
  def link_to_with_icon(icon_name, text, url, options = {})
110
- options[:class] ||= (options[:class].to_s + " with-tip").strip
111
- options[:title] ||= text if options[:no_text]
112
111
  no_text = options[:no_text]
113
- label = options[:no_text] ? '' : content_tag(:span, text)
112
+ tooltip_text = options[:title] || (no_text ? text : nil)
114
113
  options.delete(:no_text)
114
+ options.delete(:title) if tooltip_text
115
+
116
+ if tooltip_text
117
+ options[:data] ||= {}
118
+ options[:data][:controller] = 'tooltip'
119
+ end
120
+
121
+ label = no_text ? '' : content_tag(:span, text)
115
122
 
116
123
  if icon_name
117
124
  icon = icon(icon_name, class: "icon icon-#{icon_name} #{text.blank? || no_text ? 'mr-0' : ''}")
118
125
  text = "#{icon} #{label}"
119
126
  end
120
- link_to(text.html_safe, url, options)
127
+
128
+ link_content = text.html_safe
129
+ link_content += tooltip(tooltip_text) if tooltip_text
130
+
131
+ link_to(link_content, url, options)
132
+ end
133
+
134
+ def link_to_export_modal
135
+ return unless can?(:create, Spree::Export)
136
+
137
+ button_tag(type: 'button', class: 'btn btn-light', data: { action: 'click->export-dialog#open' }) do
138
+ icon('table-export', class: 'mr-0 mr-lg-2') +
139
+ content_tag(:span, Spree.t(:export), class: 'd-none d-lg-inline')
140
+ end
121
141
  end
122
142
 
123
143
  # renders an active link with an icon, using the active_link_to method from https://github.com/comfy/active_link_to gem
@@ -127,17 +147,27 @@ module Spree
127
147
  # @param options [Hash] the options for the link
128
148
  # @return [String] the active link with the icon
129
149
  def active_link_to_with_icon(icon_name, text, url, options = {})
130
- options[:class] = (options[:class].to_s + " with-tip").strip
131
- options[:title] = text if options[:no_text]
132
150
  no_text = options[:no_text]
133
- label = options[:no_text] ? '' : content_tag(:span, text)
151
+ tooltip_text = options[:title] || (no_text ? text : nil)
134
152
  options.delete(:no_text)
153
+ options.delete(:title) if tooltip_text
154
+
155
+ if tooltip_text
156
+ options[:data] ||= {}
157
+ options[:data][:controller] = 'tooltip'
158
+ end
159
+
160
+ label = no_text ? '' : content_tag(:span, text)
135
161
 
136
162
  if icon_name
137
163
  icon = icon(icon_name, class: "icon icon-#{icon_name}")
138
164
  text = "#{icon} #{label}"
139
165
  end
140
- active_link_to(text.html_safe, url, options)
166
+
167
+ link_content = text.html_safe
168
+ link_content += tooltip(tooltip_text) if tooltip_text
169
+
170
+ active_link_to(link_content, url, options)
141
171
  end
142
172
 
143
173
  # renders a button with an icon (optional)
@@ -268,13 +298,15 @@ module Spree
268
298
  # @param placement [String] the placement of the help bubble
269
299
  # @param css [String] the css class of the help bubble
270
300
  # @return [String] the help bubble with the icon
271
- def help_bubble(text = '', placement = 'bottom', css: nil)
272
- css ||= 'text-muted opacity-75 cursor-default'
273
- content_tag :small, icon('info-square-rounded', class: css), data: { placement: placement }, class: "with-tip #{css}", title: text
301
+ def help_bubble(text = '', placement = 'top', css: nil)
302
+ css ||= 'text-xs text-muted cursor-default opacity-75'
303
+ content_tag :span, data: { controller: 'tooltip', tooltip_placement_value: placement } do
304
+ icon('info-square-rounded', class: css) + tooltip(text)
305
+ end
274
306
  end
275
307
 
276
308
  def render_breadcrumb_icon
277
- if settings_active?
309
+ if settings_area?
278
310
  icon('settings')
279
311
  elsif @breadcrumb_icon
280
312
  icon(@breadcrumb_icon)
@@ -14,40 +14,49 @@ module Spree
14
14
 
15
15
  if search_params[:created_at_gt].present?
16
16
  search_params[:created_at_gt] = begin
17
- # Firstly we parse to date to avoid issues with timezones because frontend sends time in local timezone
18
- search_params[:created_at_gt].to_date&.in_time_zone(current_timezone)
19
- rescue StandardError
20
- ''
21
- end
17
+ # Firstly we parse to date to avoid issues with timezones because frontend sends time in local timezone
18
+ search_params[:created_at_gt].to_date&.in_time_zone(current_timezone)&.beginning_of_day
19
+ rescue StandardError
20
+ ''
21
+ end
22
22
  end
23
23
 
24
24
  if search_params[:created_at_lt].present?
25
25
  search_params[:created_at_lt] = begin
26
- search_params[:created_at_lt].to_date&.in_time_zone(current_timezone)&.end_of_day
27
- rescue StandardError
28
- ''
29
- end
26
+ search_params[:created_at_lt].to_date&.in_time_zone(current_timezone)&.end_of_day
27
+ rescue StandardError
28
+ ''
29
+ end
30
30
  end
31
31
 
32
32
  if search_params[:completed_at_gt].present?
33
33
  search_params[:completed_at_gt] = begin
34
- search_params[:completed_at_gt].to_date&.in_time_zone(current_timezone)
35
- rescue StandardError
36
- ''
37
- end
34
+ search_params[:completed_at_gt].to_date&.in_time_zone(current_timezone)&.beginning_of_day
35
+ rescue StandardError
36
+ ''
37
+ end
38
38
  end
39
39
 
40
40
  if search_params[:completed_at_lt].present?
41
41
  search_params[:completed_at_lt] = begin
42
- search_params[:completed_at_lt].to_date&.in_time_zone(current_timezone)&.end_of_day
43
- rescue StandardError
44
- ''
45
- end
42
+ search_params[:completed_at_lt].to_date&.in_time_zone(current_timezone)&.end_of_day
43
+ rescue StandardError
44
+ ''
45
+ end
46
46
  end
47
47
 
48
48
  search_params[:vendor_orders_vendor_id_eq] = vendor.id if vendor.present?
49
49
  search_params[:user_id_eq] = user.id if user.present?
50
50
 
51
+ # Handle refunded and partially_refunded payment state filters
52
+ if search_params[:payment_state_eq] == 'refunded'
53
+ search_params[:refunded] = '1'
54
+ search_params.delete(:payment_state_eq)
55
+ elsif search_params[:payment_state_eq] == 'partially_refunded'
56
+ search_params[:partially_refunded] = '1'
57
+ search_params.delete(:payment_state_eq)
58
+ end
59
+
51
60
  search_params
52
61
  end
53
62
 
@@ -81,19 +81,14 @@ module Spree
81
81
 
82
82
  def all_linkable_pages
83
83
  @all_linkable_pages ||= Spree::Page.
84
- linkable.
85
84
  without_previews.
86
85
  where(pageable: [@theme, current_store]).
87
- map { |page| [page.display_name, page.id] }
86
+ select(&:linkable?).
87
+ map { |page| [page.display_name, page.id] }.sort_by(&:first)
88
88
  end
89
89
 
90
90
  def all_linkable_policies
91
- @all_linkable_policies = [
92
- current_store.customer_privacy_policy,
93
- current_store.customer_terms_of_service,
94
- current_store.customer_returns_policy,
95
- current_store.customer_shipping_policy
96
- ].compact.map { |policy| [policy.name.humanize, policy.id] }
91
+ @all_linkable_policies ||= current_store.policies.pluck(:name, :id)
97
92
  end
98
93
 
99
94
  def refresh_theme_preview(section = nil, block = nil)
@@ -2,6 +2,8 @@ module Spree
2
2
  module Admin
3
3
  module PaymentsHelper
4
4
  def payment_method_name(payment)
5
+ return unless payment.payment_method.present?
6
+
5
7
  payment_method = payment.payment_method
6
8
 
7
9
  if can?(:update, payment_method)
@@ -27,18 +27,6 @@ module Spree
27
27
  end
28
28
  end
29
29
 
30
- # we use this method to fetch images for media gallery on product form
31
- # for new products we use session to store temporary assets not tied to any variant/product (yet)
32
- def media_form_assets(variant)
33
- if variant&.persisted?
34
- variant.images
35
- elsif session_uploaded_assets.any?
36
- Spree::Image.accessible_by(current_ability, :manage).where(id: session_uploaded_assets)
37
- else
38
- []
39
- end
40
- end
41
-
42
30
  def product_status(product)
43
31
  if product.deleted?
44
32
  content_tag(:span, 'Deleted', class: 'badge badge-danger')
@@ -1,13 +1,20 @@
1
1
  module Spree
2
2
  module Admin
3
3
  module TranslationsHelper
4
- def link_to_edit_translations(resource, classes: 'text-left dropdown-item')
4
+ def link_to_edit_translations(resource, options = {})
5
+ return unless Rails.application.config.spree.translatable_resources.map(&:name).include?(resource.class.name)
6
+ return unless can?(:update, resource)
7
+ return unless can?(:update, :translations)
8
+
9
+ options[:class] ||= 'dropdown-item'
10
+ options[:data] ||= { action: 'drawer#open', turbo_frame: :drawer }
11
+
5
12
  link_to_with_icon(
6
13
  'language',
7
14
  Spree.t(:translations),
8
- spree.edit_admin_translation_path(resource, resource_type: resource.class.to_s),
9
- class: classes
10
- ) if can?(:update, resource)
15
+ spree.edit_admin_translation_path(resource.id, resource_type: resource.class.to_s),
16
+ options
17
+ )
11
18
  end
12
19
  end
13
20
  end
@@ -2,6 +2,8 @@ module Spree
2
2
  module Admin
3
3
  module TurboHelper
4
4
  def turbo_close_modal(modal_id = nil)
5
+ Spree::Deprecation.warn('turbo_close_modal is deprecated and will be removed in Spree 6. Use turbo_close_dialog instead.')
6
+
5
7
  modal_id ||= 'modal'
6
8
 
7
9
  turbo_stream.replace :modal_scripts do
@@ -17,9 +19,15 @@ module Spree
17
19
  end
18
20
  end
19
21
 
20
- def turbo_render_alerts
21
- turbo_stream.replace :alerts do
22
- render 'spree/admin/shared/alerts'
22
+ def turbo_close_dialog
23
+ turbo_stream.replace 'main-dialog' do
24
+ render 'spree/admin/shared/dialog'
25
+ end
26
+ end
27
+
28
+ def turbo_render_alerts(frame_name = :alerts)
29
+ turbo_stream.replace frame_name do
30
+ render 'spree/admin/shared/alerts', frame_name: frame_name
23
31
  end
24
32
  end
25
33
 
@@ -27,8 +35,13 @@ module Spree
27
35
  opts[:class] ||= 'btn btn-primary text-center'
28
36
  opts[:class] << ' d-flex align-items-center justify-content-center' if opts[:class].exclude?('d-block') && opts[:class].exclude?('d-flex')
29
37
 
30
- opts['data-turbo-submits-with'] ||= "#{content_tag(:span, '', class: 'spinner-border spinner-border-sm mr-2', role: 'status')}Saving..."
38
+ opts['data-turbo-submits-with'] ||= "#{content_tag(:span, '', class: 'spinner-border spinner-border-sm', role: 'status')}"
31
39
  opts['data-enable-button-target'] = 'button'
40
+ if opts['data-controller'].present?
41
+ opts['data-controller'] += ' turbo-submit-button'
42
+ else
43
+ opts['data-controller'] = 'turbo-submit-button'
44
+ end
32
45
 
33
46
  if block_given?
34
47
  button_tag opts, &block
@@ -34,29 +34,32 @@ if (typeof Stimulus === 'undefined') {
34
34
  }
35
35
  import AutoSubmit from '@stimulus-components/auto-submit'
36
36
  import CheckboxSelectAll from 'stimulus-checkbox-select-all'
37
+ import Dialog from "@stimulus-components/dialog"
37
38
  import TextareaAutogrow from 'stimulus-textarea-autogrow'
38
39
  import Notification from 'stimulus-notification'
39
40
  import PasswordVisibility from 'stimulus-password-visibility'
40
41
  import RailsNestedForm from '@stimulus-components/rails-nested-form'
41
42
  import Reveal from 'stimulus-reveal-controller'
42
43
  import Sortable from 'stimulus-sortable'
43
- import { Tabs } from 'tailwindcss-stimulus-components'
44
-
45
44
  import ActiveStorageUpload from 'spree/admin/controllers/active_storage_upload_controller'
46
45
  import AdminController from 'spree/admin/controllers/admin_controller'
47
46
  import AssetUploaderController from 'spree/admin/controllers/asset_uploader_controller'
48
47
  import AutocompleteSelectController from 'spree/admin/controllers/autocomplete_select_controller'
48
+ import AutoScrollController from 'spree/admin/controllers/auto_scroll_controller'
49
49
  import BetterSliderController from 'spree/admin/controllers/better_slider_controller'
50
50
  import BlockFormController from 'spree/admin/controllers/block_form_controller'
51
- import BootstrapTabs from 'spree/admin/controllers/bootstrap_tabs_controller'
52
51
  import BulkOperationController from 'spree/admin/controllers/bulk_operation_controller'
53
52
  import CalculatorFieldsController from 'spree/admin/controllers/calculator_fields_controller'
54
53
  import CalendarRangeController from 'spree/admin/controllers/calendar_range_controller'
55
54
  import Clipboard from 'spree/admin/controllers/clipboard_controller'
55
+ import CodeMirrorController from 'spree/admin/controllers/codemirror_controller'
56
56
  import ColorPaletteController from 'spree/admin/controllers/color_palette_controller'
57
57
  import ColorPickerController from 'spree/admin/controllers/color_picker_controller'
58
+ import DropdownController from 'spree/admin/controllers/dropdown_controller'
58
59
  import FiltersController from 'spree/admin/controllers/filters_controller'
59
60
  import FontPickerController from 'spree/admin/controllers/font_picker_controller'
61
+ import HighlightController from 'spree/admin/controllers/highlight_controller'
62
+ import ImportFormController from 'spree/admin/controllers/import_form_controller'
60
63
  import MediaFormController from 'spree/admin/controllers/media_form_controller'
61
64
  import MultiInputController from 'spree/admin/controllers/multi_input_controller'
62
65
  import MultiTomSelectController from 'spree/admin/controllers/multi_tom_select_controller'
@@ -75,9 +78,13 @@ import SelectController from 'spree/admin/controllers/select_controller'
75
78
  import SeoFormController from 'spree/admin/controllers/seo_form_controller'
76
79
  import SlugFormController from 'spree/admin/controllers/slug_form_controller'
77
80
  import StickyController from 'spree/admin/controllers/sticky_controller'
81
+ import SortableAutoSubmit from 'spree/admin/controllers/sortable_auto_submit_controller'
78
82
  import SortableTree from 'spree/admin/controllers/sortable_tree_controller'
79
83
  import StockTransferController from 'spree/admin/controllers/stock_transfer_controller'
80
84
  import StoreFormController from 'spree/admin/controllers/store_form_controller'
85
+ import TabsController from 'spree/admin/controllers/tabs_controller'
86
+ import TooltipController from 'spree/admin/controllers/tooltip_controller'
87
+ import TurboSubmitButtonController from 'spree/admin/controllers/turbo_submit_button_controller'
81
88
  import UnitSystemController from 'spree/admin/controllers/unit_system_controller'
82
89
  import VariantsFormController from 'spree/admin/controllers/variants_form_controller'
83
90
  import AddressAutocompleteController from 'spree/core/controllers/address_autocomplete_controller'
@@ -90,22 +97,30 @@ application.register('address-autocomplete', AddressAutocompleteController)
90
97
  application.register('address-form', AddressFormController)
91
98
  application.register('admin', AdminController)
92
99
  application.register('asset-uploader', AssetUploaderController)
100
+ application.register('auto-scroll', AutoScrollController)
93
101
  application.register('auto-submit', AutoSubmit)
94
102
  application.register('autocomplete-select', AutocompleteSelectController)
95
103
  application.register('better-slider', BetterSliderController)
96
104
  application.register('block-form', BlockFormController)
97
- application.register('bootstrap-tabs', BootstrapTabs) // We should merge with tabs controller/remove this
105
+ application.register('bulk-dialog', Dialog)
98
106
  application.register('bulk-operation', BulkOperationController)
99
107
  application.register('calculator-fields', CalculatorFieldsController)
100
108
  application.register('calendar-range', CalendarRangeController)
101
109
  application.register('checkbox-select-all', CheckboxSelectAll)
102
110
  application.register('clipboard', Clipboard)
111
+ application.register('codemirror', CodeMirrorController)
103
112
  application.register('color-palette', ColorPaletteController)
104
113
  application.register('color-picker', ColorPickerController)
114
+ application.register('dialog', Dialog)
115
+ application.register('drawer', Dialog)
105
116
  application.register('disable-submit-button', DisableSubmitButtonController)
117
+ application.register('dropdown', DropdownController)
106
118
  application.register('enable-button', EnableButtonController)
119
+ application.register('export-dialog', Dialog)
107
120
  application.register('filters', FiltersController)
108
121
  application.register('font-picker', FontPickerController)
122
+ application.register('highlight', HighlightController)
123
+ application.register('import-form', ImportFormController)
109
124
  application.register('media-form', MediaFormController)
110
125
  application.register('multi-input', MultiInputController)
111
126
  application.register('multi-tom-select', MultiTomSelectController)
@@ -129,10 +144,13 @@ application.register('seo-form', SeoFormController)
129
144
  application.register('slug-form', SlugFormController)
130
145
  application.register('sticky', StickyController)
131
146
  application.register('sortable', Sortable)
147
+ application.register('sortable-auto-submit', SortableAutoSubmit)
132
148
  application.register('sortable-tree', SortableTree)
133
149
  application.register('stock-transfer', StockTransferController)
134
150
  application.register('store-form', StoreFormController)
135
- application.register('tabs', Tabs)
151
+ application.register('tabs', TabsController)
152
+ application.register('tooltip', TooltipController)
153
+ application.register('turbo-submit-button', TurboSubmitButtonController)
136
154
  application.register('textarea-autogrow', TextareaAutogrow)
137
155
  application.register('unit-system', UnitSystemController)
138
156
  application.register('variants-form', VariantsFormController)